Add |SSL_CIPHER_get_value| to get the IANA number of a cipher suite. Change-Id: I1d642e0bf319421d49b48f25803280046a85a176 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/37585 Commit-Queue: Adam Langley <agl@google.com> Commit-Queue: David Benjamin <davidben@google.com> Reviewed-by: David Benjamin <davidben@google.com>
diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h index d3ca63c..dbf9293 100644 --- a/include/openssl/ssl.h +++ b/include/openssl/ssl.h
@@ -1247,10 +1247,14 @@ // https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4. OPENSSL_EXPORT const SSL_CIPHER *SSL_get_cipher_by_value(uint16_t value); -// SSL_CIPHER_get_id returns |cipher|'s id. It may be cast to a |uint16_t| to -// get the cipher suite value. +// SSL_CIPHER_get_id returns |cipher|'s non-IANA id. This is not its +// IANA-assigned number, which is called the "value" here, although it may be +// cast to a |uint16_t| to get it. OPENSSL_EXPORT uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *cipher); +// SSL_CIPHER_get_value returns |cipher|'s IANA-assigned number. +OPENSSL_EXPORT uint16_t SSL_CIPHER_get_value(const SSL_CIPHER *cipher); + // SSL_CIPHER_is_aead returns one if |cipher| uses an AEAD cipher. OPENSSL_EXPORT int SSL_CIPHER_is_aead(const SSL_CIPHER *cipher);
diff --git a/ssl/ssl_cipher.cc b/ssl/ssl_cipher.cc index a420f4d..30037f6 100644 --- a/ssl/ssl_cipher.cc +++ b/ssl/ssl_cipher.cc
@@ -1377,6 +1377,10 @@ uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *cipher) { return cipher->id; } +uint16_t SSL_CIPHER_get_value(const SSL_CIPHER *cipher) { + return static_cast<uint16_t>(cipher->id); +} + int SSL_CIPHER_is_aead(const SSL_CIPHER *cipher) { return (cipher->algorithm_mac & SSL_AEAD) != 0; }