Loading ssl/s3_clnt.c +3 −3 Original line number Diff line number Diff line Loading @@ -2163,7 +2163,7 @@ int ssl3_get_certificate_request(SSL *s) } /* Clear certificate digests and validity flags */ for (i = 0; i < SSL_PKEY_NUM; i++) { s->cert->pkeys[i].digest = NULL; s->s3->tmp.md[i] = NULL; s->cert->pkeys[i].valid_flags = 0; } if ((llen & 1) || !tls1_save_sigalgs(s, p, llen)) { Loading Loading @@ -3081,7 +3081,7 @@ int ssl3_send_client_verify(SSL *s) if (SSL_USE_SIGALGS(s)) { long hdatalen = 0; void *hdata; const EVP_MD *md = s->cert->key->digest; const EVP_MD *md = s->s3->tmp.md[s->cert->key - s->cert->pkeys]; hdatalen = BIO_get_mem_data(s->s3->handshake_buffer, &hdata); if (hdatalen <= 0 || !tls12_get_sigandhash(p, pkey, md)) { SSLerr(SSL_F_SSL3_SEND_CLIENT_VERIFY, ERR_R_INTERNAL_ERROR); Loading Loading @@ -3197,7 +3197,7 @@ static int ssl3_check_client_certificate(SSL *s) if (!s->cert || !s->cert->key->x509 || !s->cert->key->privatekey) return 0; /* If no suitable signature algorithm can't use certificate */ if (SSL_USE_SIGALGS(s) && !s->cert->key->digest) if (SSL_USE_SIGALGS(s) && !s->s3->tmp.md[s->cert->key - s->cert->pkeys]) return 0; /* * If strict mode check suitability of chain before using it. This also Loading ssl/s3_lib.c +1 −1 Original line number Diff line number Diff line Loading @@ -3326,7 +3326,7 @@ long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) if (SSL_USE_SIGALGS(s)) { if (s->session && s->session->sess_cert) { const EVP_MD *sig; sig = s->session->sess_cert->peer_key->digest; sig = s->s3->tmp.peer_md; if (sig) { *(int *)parg = EVP_MD_type(sig); return 1; Loading ssl/ssl_cert.c +0 −21 Original line number Diff line number Diff line Loading @@ -165,21 +165,6 @@ int SSL_get_ex_data_X509_STORE_CTX_idx(void) return ssl_x509_store_ctx_idx; } void ssl_cert_set_default_md(CERT *cert) { /* Set digest values to defaults */ #ifndef OPENSSL_NO_DSA cert->pkeys[SSL_PKEY_DSA_SIGN].digest = EVP_sha1(); #endif #ifndef OPENSSL_NO_RSA cert->pkeys[SSL_PKEY_RSA_SIGN].digest = EVP_sha1(); cert->pkeys[SSL_PKEY_RSA_ENC].digest = EVP_sha1(); #endif #ifndef OPENSSL_NO_EC cert->pkeys[SSL_PKEY_ECC].digest = EVP_sha1(); #endif } CERT *ssl_cert_new(void) { CERT *ret = OPENSSL_malloc(sizeof(*ret)); Loading @@ -192,7 +177,6 @@ CERT *ssl_cert_new(void) ret->key = &(ret->pkeys[SSL_PKEY_RSA_ENC]); ret->references = 1; ssl_cert_set_default_md(ret); ret->sec_cb = ssl_security_default_callback; ret->sec_level = OPENSSL_TLS_SECURITY_LEVEL; ret->sec_ex = NULL; Loading Loading @@ -306,11 +290,6 @@ CERT *ssl_cert_dup(CERT *cert) } ret->references = 1; /* * Set digests to defaults. NB: we don't copy existing values as they * will be set during handshake. */ ssl_cert_set_default_md(ret); /* Configured sigalgs copied across */ if (cert->conf_sigalgs) { ret->conf_sigalgs = OPENSSL_malloc(cert->conf_sigalgslen); Loading ssl/ssl_lib.c +1 −1 Original line number Diff line number Diff line Loading @@ -2269,7 +2269,7 @@ EVP_PKEY *ssl_get_sign_pkey(SSL *s, const SSL_CIPHER *cipher, return (NULL); } if (pmd) *pmd = c->pkeys[idx].digest; *pmd = s->s3->tmp.md[idx]; return c->pkeys[idx].privatekey; } Loading ssl/ssl_locl.h +4 −3 Original line number Diff line number Diff line Loading @@ -1291,6 +1291,10 @@ typedef struct ssl3_state_st { unsigned char *peer_sigalgs; /* Size of above array */ size_t peer_sigalgslen; /* Digest peer uses for signing */ const EVP_MD *peer_md; /* Array of digests used for signing */ const EVP_MD *md[SSL_PKEY_NUM]; } tmp; /* Connection binding to prevent renegotiation attacks */ Loading Loading @@ -1439,8 +1443,6 @@ typedef struct dtls1_state_st { typedef struct cert_pkey_st { X509 *x509; EVP_PKEY *privatekey; /* Digest to use when signing */ const EVP_MD *digest; /* Chain for this certificate */ STACK_OF(X509) *chain; # ifndef OPENSSL_NO_TLSEXT Loading Loading @@ -1870,7 +1872,6 @@ void ssl_clear_cipher_ctx(SSL *s); int ssl_clear_bad_session(SSL *s); __owur CERT *ssl_cert_new(void); __owur CERT *ssl_cert_dup(CERT *cert); void ssl_cert_set_default_md(CERT *cert); void ssl_cert_clear_certs(CERT *c); void ssl_cert_free(CERT *c); __owur SESS_CERT *ssl_sess_cert_new(void); Loading Loading
ssl/s3_clnt.c +3 −3 Original line number Diff line number Diff line Loading @@ -2163,7 +2163,7 @@ int ssl3_get_certificate_request(SSL *s) } /* Clear certificate digests and validity flags */ for (i = 0; i < SSL_PKEY_NUM; i++) { s->cert->pkeys[i].digest = NULL; s->s3->tmp.md[i] = NULL; s->cert->pkeys[i].valid_flags = 0; } if ((llen & 1) || !tls1_save_sigalgs(s, p, llen)) { Loading Loading @@ -3081,7 +3081,7 @@ int ssl3_send_client_verify(SSL *s) if (SSL_USE_SIGALGS(s)) { long hdatalen = 0; void *hdata; const EVP_MD *md = s->cert->key->digest; const EVP_MD *md = s->s3->tmp.md[s->cert->key - s->cert->pkeys]; hdatalen = BIO_get_mem_data(s->s3->handshake_buffer, &hdata); if (hdatalen <= 0 || !tls12_get_sigandhash(p, pkey, md)) { SSLerr(SSL_F_SSL3_SEND_CLIENT_VERIFY, ERR_R_INTERNAL_ERROR); Loading Loading @@ -3197,7 +3197,7 @@ static int ssl3_check_client_certificate(SSL *s) if (!s->cert || !s->cert->key->x509 || !s->cert->key->privatekey) return 0; /* If no suitable signature algorithm can't use certificate */ if (SSL_USE_SIGALGS(s) && !s->cert->key->digest) if (SSL_USE_SIGALGS(s) && !s->s3->tmp.md[s->cert->key - s->cert->pkeys]) return 0; /* * If strict mode check suitability of chain before using it. This also Loading
ssl/s3_lib.c +1 −1 Original line number Diff line number Diff line Loading @@ -3326,7 +3326,7 @@ long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) if (SSL_USE_SIGALGS(s)) { if (s->session && s->session->sess_cert) { const EVP_MD *sig; sig = s->session->sess_cert->peer_key->digest; sig = s->s3->tmp.peer_md; if (sig) { *(int *)parg = EVP_MD_type(sig); return 1; Loading
ssl/ssl_cert.c +0 −21 Original line number Diff line number Diff line Loading @@ -165,21 +165,6 @@ int SSL_get_ex_data_X509_STORE_CTX_idx(void) return ssl_x509_store_ctx_idx; } void ssl_cert_set_default_md(CERT *cert) { /* Set digest values to defaults */ #ifndef OPENSSL_NO_DSA cert->pkeys[SSL_PKEY_DSA_SIGN].digest = EVP_sha1(); #endif #ifndef OPENSSL_NO_RSA cert->pkeys[SSL_PKEY_RSA_SIGN].digest = EVP_sha1(); cert->pkeys[SSL_PKEY_RSA_ENC].digest = EVP_sha1(); #endif #ifndef OPENSSL_NO_EC cert->pkeys[SSL_PKEY_ECC].digest = EVP_sha1(); #endif } CERT *ssl_cert_new(void) { CERT *ret = OPENSSL_malloc(sizeof(*ret)); Loading @@ -192,7 +177,6 @@ CERT *ssl_cert_new(void) ret->key = &(ret->pkeys[SSL_PKEY_RSA_ENC]); ret->references = 1; ssl_cert_set_default_md(ret); ret->sec_cb = ssl_security_default_callback; ret->sec_level = OPENSSL_TLS_SECURITY_LEVEL; ret->sec_ex = NULL; Loading Loading @@ -306,11 +290,6 @@ CERT *ssl_cert_dup(CERT *cert) } ret->references = 1; /* * Set digests to defaults. NB: we don't copy existing values as they * will be set during handshake. */ ssl_cert_set_default_md(ret); /* Configured sigalgs copied across */ if (cert->conf_sigalgs) { ret->conf_sigalgs = OPENSSL_malloc(cert->conf_sigalgslen); Loading
ssl/ssl_lib.c +1 −1 Original line number Diff line number Diff line Loading @@ -2269,7 +2269,7 @@ EVP_PKEY *ssl_get_sign_pkey(SSL *s, const SSL_CIPHER *cipher, return (NULL); } if (pmd) *pmd = c->pkeys[idx].digest; *pmd = s->s3->tmp.md[idx]; return c->pkeys[idx].privatekey; } Loading
ssl/ssl_locl.h +4 −3 Original line number Diff line number Diff line Loading @@ -1291,6 +1291,10 @@ typedef struct ssl3_state_st { unsigned char *peer_sigalgs; /* Size of above array */ size_t peer_sigalgslen; /* Digest peer uses for signing */ const EVP_MD *peer_md; /* Array of digests used for signing */ const EVP_MD *md[SSL_PKEY_NUM]; } tmp; /* Connection binding to prevent renegotiation attacks */ Loading Loading @@ -1439,8 +1443,6 @@ typedef struct dtls1_state_st { typedef struct cert_pkey_st { X509 *x509; EVP_PKEY *privatekey; /* Digest to use when signing */ const EVP_MD *digest; /* Chain for this certificate */ STACK_OF(X509) *chain; # ifndef OPENSSL_NO_TLSEXT Loading Loading @@ -1870,7 +1872,6 @@ void ssl_clear_cipher_ctx(SSL *s); int ssl_clear_bad_session(SSL *s); __owur CERT *ssl_cert_new(void); __owur CERT *ssl_cert_dup(CERT *cert); void ssl_cert_set_default_md(CERT *cert); void ssl_cert_clear_certs(CERT *c); void ssl_cert_free(CERT *c); __owur SESS_CERT *ssl_sess_cert_new(void); Loading