Add |SSL_set_retain_only_sha256_of_client_certs|. Previously the option to retain only the SHA-256 hash of client certificates could only be set at the |SSL_CTX| level. This change makes |SSL| objects inherit the setting from the |SSL_CTX|, but allows it to be overridden on a per-|SSL| basis. Change-Id: Id435934af3d425d5f008d2f3b9751d1d0884ee55 Reviewed-on: https://boringssl-review.googlesource.com/12182 Reviewed-by: David Benjamin <davidben@google.com> Commit-Queue: David Benjamin <davidben@google.com> CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index 982cb1a..001928f 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c
@@ -412,6 +412,8 @@ assert(ssl->sid_ctx_length <= sizeof ssl->sid_ctx); memcpy(&ssl->sid_ctx, &ctx->sid_ctx, sizeof(ssl->sid_ctx)); ssl->verify_callback = ctx->default_verify_callback; + ssl->retain_only_sha256_of_client_certs = + ctx->retain_only_sha256_of_client_certs; ssl->param = X509_VERIFY_PARAM_new(); if (!ssl->param) { @@ -2908,6 +2910,10 @@ return ssl->s3->tmp.new_cipher; } +void SSL_set_retain_only_sha256_of_client_certs(SSL *ssl, int enabled) { + ssl->retain_only_sha256_of_client_certs = !!enabled; +} + void SSL_CTX_set_retain_only_sha256_of_client_certs(SSL_CTX *ctx, int enabled) { ctx->retain_only_sha256_of_client_certs = !!enabled; }