Make the curve compat APIs into real functions The standard macro-based pattern does not work in bindgen because of https://github.com/rust-lang/rust-bindgen/issues/2544 Change-Id: Ic2b92e779ade2ed55a627bba9c76f7df5c0f6136 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/61185 Reviewed-by: Bob Beck <bbe@google.com> Commit-Queue: Bob Beck <bbe@google.com> Auto-Submit: David Benjamin <davidben@google.com>
diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h index f8f696b..9f758ca 100644 --- a/include/openssl/ssl.h +++ b/include/openssl/ssl.h
@@ -5256,16 +5256,7 @@ SSL_R_TLSV1_ALERT_BAD_CERTIFICATE_HASH_VALUE #define SSL_R_TLSV1_CERTIFICATE_REQUIRED SSL_R_TLSV1_ALERT_CERTIFICATE_REQUIRED -// The following symbols are compatibility aliases for equivalent functions that -// use the newer "group" terminology. New code should use the new functions for -// consistency, but we do not plan to remove these aliases. -#define SSL_CTX_set1_curves SSL_CTX_set1_groups -#define SSL_set1_curves SSL_set1_groups -#define SSL_CTX_set1_curves_list SSL_CTX_set1_groups_list -#define SSL_set1_curves_list SSL_set1_groups_list -#define SSL_get_curve_id SSL_get_group_id -#define SSL_get_curve_name SSL_get_group_name -#define SSL_get_all_curve_names SSL_get_all_group_names +// The following symbols are compatibility aliases for |SSL_GROUP_*|. #define SSL_CURVE_SECP224R1 SSL_GROUP_SECP224R1 #define SSL_CURVE_SECP256R1 SSL_GROUP_SECP256R1 #define SSL_CURVE_SECP384R1 SSL_GROUP_SECP384R1 @@ -5273,6 +5264,29 @@ #define SSL_CURVE_X25519 SSL_GROUP_X25519 #define SSL_CURVE_X25519_KYBER768_DRAFT00 SSL_GROUP_X25519_KYBER768_DRAFT00 +// SSL_get_curve_id calls |SSL_get_group_id|. +OPENSSL_EXPORT uint16_t SSL_get_curve_id(const SSL *ssl); + +// SSL_get_curve_name calls |SSL_get_group_name|. +OPENSSL_EXPORT const char *SSL_get_curve_name(uint16_t curve_id); + +// SSL_get_all_curve_names calls |SSL_get_all_group_names|. +OPENSSL_EXPORT size_t SSL_get_all_curve_names(const char **out, size_t max_out); + +// SSL_CTX_set1_curves calls |SSL_CTX_set1_groups|. +OPENSSL_EXPORT int SSL_CTX_set1_curves(SSL_CTX *ctx, const int *curves, + size_t num_curves); + +// SSL_set1_curves calls |SSL_set1_groups|. +OPENSSL_EXPORT int SSL_set1_curves(SSL *ssl, const int *curves, + size_t num_curves); + +// SSL_CTX_set1_curves_list calls |SSL_CTX_set1_groups_list|. +OPENSSL_EXPORT int SSL_CTX_set1_curves_list(SSL_CTX *ctx, const char *curves); + +// SSL_set1_curves_list calls |SSL_set1_groups_list|. +OPENSSL_EXPORT int SSL_set1_curves_list(SSL *ssl, const char *curves); + // TLSEXT_nid_unknown is a constant used in OpenSSL for // |SSL_get_negotiated_group| to return an unrecognized group. BoringSSL never // returns this value, but we define this constant for compatibility. @@ -5444,6 +5458,7 @@ #define SSL_CTX_sess_set_cache_size SSL_CTX_sess_set_cache_size #define SSL_CTX_set0_chain SSL_CTX_set0_chain #define SSL_CTX_set1_chain SSL_CTX_set1_chain +#define SSL_CTX_set1_curves SSL_CTX_set1_curves #define SSL_CTX_set1_groups SSL_CTX_set1_groups #define SSL_CTX_set_max_cert_list SSL_CTX_set_max_cert_list #define SSL_CTX_set_max_send_fragment SSL_CTX_set_max_send_fragment @@ -5478,6 +5493,7 @@ #define SSL_session_reused SSL_session_reused #define SSL_set0_chain SSL_set0_chain #define SSL_set1_chain SSL_set1_chain +#define SSL_set1_curves SSL_set1_curves #define SSL_set1_groups SSL_set1_groups #define SSL_set_max_cert_list SSL_set_max_cert_list #define SSL_set_max_send_fragment SSL_set_max_send_fragment
diff --git a/ssl/ssl_lib.cc b/ssl/ssl_lib.cc index d7b5be3..26ffd50 100644 --- a/ssl/ssl_lib.cc +++ b/ssl/ssl_lib.cc
@@ -3213,6 +3213,32 @@ return 1; } +uint16_t SSL_get_curve_id(const SSL *ssl) { return SSL_get_group_id(ssl); } + +const char *SSL_get_curve_name(uint16_t curve_id) { + return SSL_get_group_name(curve_id); +} + +size_t SSL_get_all_curve_names(const char **out, size_t max_out) { + return SSL_get_all_group_names(out, max_out); +} + +int SSL_CTX_set1_curves(SSL_CTX *ctx, const int *curves, size_t num_curves) { + return SSL_CTX_set1_groups(ctx, curves, num_curves); +} + +int SSL_set1_curves(SSL *ssl, const int *curves, size_t num_curves) { + return SSL_set1_groups(ssl, curves, num_curves); +} + +int SSL_CTX_set1_curves_list(SSL_CTX *ctx, const char *curves) { + return SSL_CTX_set1_groups_list(ctx, curves); +} + +int SSL_set1_curves_list(SSL *ssl, const char *curves) { + return SSL_set1_groups_list(ssl, curves); +} + namespace fips202205 { // (References are to SP 800-52r2):