mirror of https://github.com/openssl/openssl.git
EVP_MD_size() updates
For SHAKE algorithms we now return 0 from EVP_MD_size(). So all the places that check for < 0 needed to change to <= 0 (Otherwise the behaviour will be to digest nothing in most cases). Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/25285)
This commit is contained in:
parent
976dd3581a
commit
14c45338e9
|
@ -513,7 +513,7 @@ static int create_digest(BIO *input, const char *digest, const EVP_MD *md,
|
||||||
EVP_MD_CTX *md_ctx = NULL;
|
EVP_MD_CTX *md_ctx = NULL;
|
||||||
|
|
||||||
md_value_len = EVP_MD_get_size(md);
|
md_value_len = EVP_MD_get_size(md);
|
||||||
if (md_value_len < 0)
|
if (md_value_len <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (input != NULL) {
|
if (input != NULL) {
|
||||||
|
|
|
@ -443,6 +443,8 @@ static int sig_out(BIO *b)
|
||||||
md_size = EVP_MD_get_size(digest);
|
md_size = EVP_MD_get_size(digest);
|
||||||
md_data = EVP_MD_CTX_get0_md_data(md);
|
md_data = EVP_MD_CTX_get0_md_data(md);
|
||||||
|
|
||||||
|
if (md_size <= 0)
|
||||||
|
goto berr;
|
||||||
if (ctx->buf_len + 2 * md_size > OK_BLOCK_SIZE)
|
if (ctx->buf_len + 2 * md_size > OK_BLOCK_SIZE)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
@ -485,7 +487,7 @@ static int sig_in(BIO *b)
|
||||||
if ((md = ctx->md) == NULL)
|
if ((md = ctx->md) == NULL)
|
||||||
goto berr;
|
goto berr;
|
||||||
digest = EVP_MD_CTX_get0_md(md);
|
digest = EVP_MD_CTX_get0_md(md);
|
||||||
if ((md_size = EVP_MD_get_size(digest)) < 0)
|
if ((md_size = EVP_MD_get_size(digest)) <= 0)
|
||||||
goto berr;
|
goto berr;
|
||||||
md_data = EVP_MD_CTX_get0_md_data(md);
|
md_data = EVP_MD_CTX_get0_md_data(md);
|
||||||
|
|
||||||
|
@ -533,6 +535,8 @@ static int block_out(BIO *b)
|
||||||
md = ctx->md;
|
md = ctx->md;
|
||||||
digest = EVP_MD_CTX_get0_md(md);
|
digest = EVP_MD_CTX_get0_md(md);
|
||||||
md_size = EVP_MD_get_size(digest);
|
md_size = EVP_MD_get_size(digest);
|
||||||
|
if (md_size <= 0)
|
||||||
|
goto berr;
|
||||||
|
|
||||||
tl = ctx->buf_len - OK_BLOCK_BLOCK;
|
tl = ctx->buf_len - OK_BLOCK_BLOCK;
|
||||||
ctx->buf[0] = (unsigned char)(tl >> 24);
|
ctx->buf[0] = (unsigned char)(tl >> 24);
|
||||||
|
@ -563,7 +567,7 @@ static int block_in(BIO *b)
|
||||||
ctx = BIO_get_data(b);
|
ctx = BIO_get_data(b);
|
||||||
md = ctx->md;
|
md = ctx->md;
|
||||||
md_size = EVP_MD_get_size(EVP_MD_CTX_get0_md(md));
|
md_size = EVP_MD_get_size(EVP_MD_CTX_get0_md(md));
|
||||||
if (md_size < 0)
|
if (md_size <= 0)
|
||||||
goto berr;
|
goto berr;
|
||||||
|
|
||||||
assert(sizeof(tl) >= OK_BLOCK_BLOCK); /* always true */
|
assert(sizeof(tl) >= OK_BLOCK_BLOCK); /* always true */
|
||||||
|
|
|
@ -601,7 +601,7 @@ int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret,
|
||||||
} else {
|
} else {
|
||||||
int s = EVP_MD_get_size(ctx->digest);
|
int s = EVP_MD_get_size(ctx->digest);
|
||||||
|
|
||||||
if (s < 0 || EVP_PKEY_sign(pctx, sigret, siglen, NULL, s) <= 0)
|
if (s <= 0 || EVP_PKEY_sign(pctx, sigret, siglen, NULL, s) <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,7 @@ int PKCS5_PBE_keyivgen_ex(EVP_CIPHER_CTX *cctx, const char *pass, int passlen,
|
||||||
passlen = strlen(pass);
|
passlen = strlen(pass);
|
||||||
|
|
||||||
mdsize = EVP_MD_get_size(md);
|
mdsize = EVP_MD_get_size(md);
|
||||||
if (mdsize < 0)
|
if (mdsize <= 0)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
kdf = EVP_KDF_fetch(libctx, OSSL_KDF_NAME_PBKDF1, propq);
|
kdf = EVP_KDF_fetch(libctx, OSSL_KDF_NAME_PBKDF1, propq);
|
||||||
|
|
|
@ -322,6 +322,9 @@ static int generate_q_fips186_4(BN_CTX *ctx, BIGNUM *q, const EVP_MD *evpmd,
|
||||||
unsigned char *pmd;
|
unsigned char *pmd;
|
||||||
OSSL_LIB_CTX *libctx = ossl_bn_get_libctx(ctx);
|
OSSL_LIB_CTX *libctx = ossl_bn_get_libctx(ctx);
|
||||||
|
|
||||||
|
if (mdsize <= 0)
|
||||||
|
goto err;
|
||||||
|
|
||||||
/* find q */
|
/* find q */
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (!BN_GENCB_call(cb, 0, m++))
|
if (!BN_GENCB_call(cb, 0, m++))
|
||||||
|
|
|
@ -46,7 +46,7 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
|
||||||
* The HMAC construction is not allowed to be used with the
|
* The HMAC construction is not allowed to be used with the
|
||||||
* extendable-output functions (XOF) shake128 and shake256.
|
* extendable-output functions (XOF) shake128 and shake256.
|
||||||
*/
|
*/
|
||||||
if ((EVP_MD_get_flags(md) & EVP_MD_FLAG_XOF) != 0)
|
if (EVP_MD_xof(md))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
#ifdef OPENSSL_HMAC_S390X
|
#ifdef OPENSSL_HMAC_S390X
|
||||||
|
@ -254,7 +254,7 @@ unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len,
|
||||||
size_t temp_md_len = 0;
|
size_t temp_md_len = 0;
|
||||||
unsigned char *ret = NULL;
|
unsigned char *ret = NULL;
|
||||||
|
|
||||||
if (size >= 0) {
|
if (size > 0) {
|
||||||
ret = EVP_Q_mac(NULL, "HMAC", NULL, EVP_MD_get0_name(evp_md), NULL,
|
ret = EVP_Q_mac(NULL, "HMAC", NULL, EVP_MD_get0_name(evp_md), NULL,
|
||||||
key, key_len, data, data_len,
|
key, key_len, data, data_len,
|
||||||
md == NULL ? static_md : md, size, &temp_md_len);
|
md == NULL ? static_md : md, size, &temp_md_len);
|
||||||
|
|
|
@ -328,7 +328,7 @@ static int ocsp_match_issuerid(X509 *cert, OCSP_CERTID *cid,
|
||||||
(void)ERR_pop_to_mark();
|
(void)ERR_pop_to_mark();
|
||||||
|
|
||||||
mdlen = EVP_MD_get_size(dgst);
|
mdlen = EVP_MD_get_size(dgst);
|
||||||
if (mdlen < 0) {
|
if (mdlen <= 0) {
|
||||||
ERR_raise(ERR_LIB_OCSP, OCSP_R_DIGEST_SIZE_ERR);
|
ERR_raise(ERR_LIB_OCSP, OCSP_R_DIGEST_SIZE_ERR);
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
|
@ -207,7 +207,7 @@ static int pkcs12_gen_mac(PKCS12 *p12, const char *pass, int passlen,
|
||||||
|
|
||||||
keylen = EVP_MD_get_size(md);
|
keylen = EVP_MD_get_size(md);
|
||||||
md_nid = EVP_MD_get_type(md);
|
md_nid = EVP_MD_get_type(md);
|
||||||
if (keylen < 0)
|
if (keylen <= 0)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
/* For PBMAC1 we use a special keygen callback if not provided (e.g. on verification) */
|
/* For PBMAC1 we use a special keygen callback if not provided (e.g. on verification) */
|
||||||
|
|
|
@ -62,7 +62,7 @@ int ossl_rsa_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash,
|
||||||
mgf1Hash = Hash;
|
mgf1Hash = Hash;
|
||||||
|
|
||||||
hLen = EVP_MD_get_size(Hash);
|
hLen = EVP_MD_get_size(Hash);
|
||||||
if (hLen < 0)
|
if (hLen <= 0)
|
||||||
goto err;
|
goto err;
|
||||||
/*-
|
/*-
|
||||||
* Negative sLen has special meanings:
|
* Negative sLen has special meanings:
|
||||||
|
@ -187,7 +187,7 @@ int ossl_rsa_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM,
|
||||||
mgf1Hash = Hash;
|
mgf1Hash = Hash;
|
||||||
|
|
||||||
hLen = EVP_MD_get_size(Hash);
|
hLen = EVP_MD_get_size(Hash);
|
||||||
if (hLen < 0)
|
if (hLen <= 0)
|
||||||
goto err;
|
goto err;
|
||||||
/*-
|
/*-
|
||||||
* Negative sLen has special meanings:
|
* Negative sLen has special meanings:
|
||||||
|
|
|
@ -91,7 +91,7 @@ int ossl_sm2_ciphertext_size(const EC_KEY *key, const EVP_MD *digest,
|
||||||
const int md_size = EVP_MD_get_size(digest);
|
const int md_size = EVP_MD_get_size(digest);
|
||||||
size_t sz;
|
size_t sz;
|
||||||
|
|
||||||
if (field_size == 0 || md_size < 0)
|
if (field_size == 0 || md_size <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Integer and string are simple type; set constructed = 0, means primitive and definite length encoding. */
|
/* Integer and string are simple type; set constructed = 0, means primitive and definite length encoding. */
|
||||||
|
|
|
@ -160,7 +160,7 @@ static BIGNUM *sm2_compute_msg_hash(const EVP_MD *digest,
|
||||||
OSSL_LIB_CTX *libctx = ossl_ec_key_get_libctx(key);
|
OSSL_LIB_CTX *libctx = ossl_ec_key_get_libctx(key);
|
||||||
const char *propq = ossl_ec_key_get0_propq(key);
|
const char *propq = ossl_ec_key_get0_propq(key);
|
||||||
|
|
||||||
if (md_size < 0) {
|
if (md_size <= 0) {
|
||||||
ERR_raise(ERR_LIB_SM2, SM2_R_INVALID_DIGEST);
|
ERR_raise(ERR_LIB_SM2, SM2_R_INVALID_DIGEST);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
|
@ -448,7 +448,7 @@ static int ts_compute_imprint(BIO *data, TS_TST_INFO *tst_info,
|
||||||
(void)ERR_pop_to_mark();
|
(void)ERR_pop_to_mark();
|
||||||
|
|
||||||
length = EVP_MD_get_size(md);
|
length = EVP_MD_get_size(md);
|
||||||
if (length < 0)
|
if (length <= 0)
|
||||||
goto err;
|
goto err;
|
||||||
*imprint_len = length;
|
*imprint_len = length;
|
||||||
if ((*imprint = OPENSSL_malloc(*imprint_len)) == NULL)
|
if ((*imprint = OPENSSL_malloc(*imprint_len)) == NULL)
|
||||||
|
|
|
@ -186,7 +186,7 @@ static size_t kdf_hkdf_size(KDF_HKDF *ctx)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
sz = EVP_MD_get_size(md);
|
sz = EVP_MD_get_size(md);
|
||||||
if (sz < 0)
|
if (sz <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return sz;
|
return sz;
|
||||||
|
@ -266,7 +266,7 @@ static int hkdf_common_set_ctx_params(KDF_HKDF *ctx, const OSSL_PARAM params[])
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
md = ossl_prov_digest_md(&ctx->digest);
|
md = ossl_prov_digest_md(&ctx->digest);
|
||||||
if ((EVP_MD_get_flags(md) & EVP_MD_FLAG_XOF) != 0) {
|
if (EVP_MD_xof(md)) {
|
||||||
ERR_raise(ERR_LIB_PROV, PROV_R_XOF_DIGESTS_NOT_ALLOWED);
|
ERR_raise(ERR_LIB_PROV, PROV_R_XOF_DIGESTS_NOT_ALLOWED);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -463,7 +463,7 @@ static int HKDF(OSSL_LIB_CTX *libctx, const EVP_MD *evp_md,
|
||||||
size_t prk_len;
|
size_t prk_len;
|
||||||
|
|
||||||
sz = EVP_MD_get_size(evp_md);
|
sz = EVP_MD_get_size(evp_md);
|
||||||
if (sz < 0)
|
if (sz <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
prk_len = (size_t)sz;
|
prk_len = (size_t)sz;
|
||||||
|
|
||||||
|
@ -510,7 +510,7 @@ static int HKDF_Extract(OSSL_LIB_CTX *libctx, const EVP_MD *evp_md,
|
||||||
{
|
{
|
||||||
int sz = EVP_MD_get_size(evp_md);
|
int sz = EVP_MD_get_size(evp_md);
|
||||||
|
|
||||||
if (sz < 0)
|
if (sz <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
if (prk_len != (size_t)sz) {
|
if (prk_len != (size_t)sz) {
|
||||||
ERR_raise(ERR_LIB_PROV, PROV_R_WRONG_OUTPUT_BUFFER_SIZE);
|
ERR_raise(ERR_LIB_PROV, PROV_R_WRONG_OUTPUT_BUFFER_SIZE);
|
||||||
|
|
|
@ -70,7 +70,7 @@ static int kdf_pbkdf1_do_derive(const unsigned char *pass, size_t passlen,
|
||||||
|| !EVP_DigestFinal_ex(ctx, md_tmp, NULL))
|
|| !EVP_DigestFinal_ex(ctx, md_tmp, NULL))
|
||||||
goto err;
|
goto err;
|
||||||
mdsize = EVP_MD_size(md_type);
|
mdsize = EVP_MD_size(md_type);
|
||||||
if (mdsize < 0)
|
if (mdsize <= 0)
|
||||||
goto err;
|
goto err;
|
||||||
if (n > (size_t)mdsize) {
|
if (n > (size_t)mdsize) {
|
||||||
ERR_raise(ERR_LIB_PROV, PROV_R_LENGTH_TOO_LARGE);
|
ERR_raise(ERR_LIB_PROV, PROV_R_LENGTH_TOO_LARGE);
|
||||||
|
|
|
@ -151,7 +151,7 @@ static int dtls_process_record(OSSL_RECORD_LAYER *rl, DTLS_BITMAP *bitmap)
|
||||||
|
|
||||||
if (tmpmd != NULL) {
|
if (tmpmd != NULL) {
|
||||||
imac_size = EVP_MD_get_size(tmpmd);
|
imac_size = EVP_MD_get_size(tmpmd);
|
||||||
if (!ossl_assert(imac_size >= 0 && imac_size <= EVP_MAX_MD_SIZE)) {
|
if (!ossl_assert(imac_size > 0 && imac_size <= EVP_MAX_MD_SIZE)) {
|
||||||
RLAYERfatal(rl, SSL_AD_INTERNAL_ERROR, ERR_R_EVP_LIB);
|
RLAYERfatal(rl, SSL_AD_INTERNAL_ERROR, ERR_R_EVP_LIB);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,7 +73,7 @@ int ossl_set_tls_provider_parameters(OSSL_RECORD_LAYER *rl,
|
||||||
if ((EVP_CIPHER_get_flags(ciph) & EVP_CIPH_FLAG_AEAD_CIPHER) == 0
|
if ((EVP_CIPHER_get_flags(ciph) & EVP_CIPH_FLAG_AEAD_CIPHER) == 0
|
||||||
&& !rl->use_etm)
|
&& !rl->use_etm)
|
||||||
imacsize = EVP_MD_get_size(md);
|
imacsize = EVP_MD_get_size(md);
|
||||||
if (imacsize >= 0)
|
if (imacsize > 0)
|
||||||
macsize = (size_t)imacsize;
|
macsize = (size_t)imacsize;
|
||||||
|
|
||||||
*pprm++ = OSSL_PARAM_construct_int(OSSL_CIPHER_PARAM_TLS_VERSION,
|
*pprm++ = OSSL_PARAM_construct_int(OSSL_CIPHER_PARAM_TLS_VERSION,
|
||||||
|
@ -773,7 +773,7 @@ int tls_get_more_records(OSSL_RECORD_LAYER *rl)
|
||||||
|
|
||||||
if (tmpmd != NULL) {
|
if (tmpmd != NULL) {
|
||||||
imac_size = EVP_MD_get_size(tmpmd);
|
imac_size = EVP_MD_get_size(tmpmd);
|
||||||
if (!ossl_assert(imac_size >= 0 && imac_size <= EVP_MAX_MD_SIZE)) {
|
if (!ossl_assert(imac_size > 0 && imac_size <= EVP_MAX_MD_SIZE)) {
|
||||||
RLAYERfatal(rl, SSL_AD_INTERNAL_ERROR, ERR_R_EVP_LIB);
|
RLAYERfatal(rl, SSL_AD_INTERNAL_ERROR, ERR_R_EVP_LIB);
|
||||||
return OSSL_RECORD_RETURN_FATAL;
|
return OSSL_RECORD_RETURN_FATAL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,7 +113,7 @@ int ssl3_change_cipher_state(SSL_CONNECTION *s, int which)
|
||||||
|
|
||||||
p = s->s3.tmp.key_block;
|
p = s->s3.tmp.key_block;
|
||||||
mdi = EVP_MD_get_size(md);
|
mdi = EVP_MD_get_size(md);
|
||||||
if (mdi < 0) {
|
if (mdi <= 0) {
|
||||||
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
|
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
@ -188,7 +188,7 @@ int ssl3_setup_key_block(SSL_CONNECTION *s)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
num = EVP_MD_get_size(hash);
|
num = EVP_MD_get_size(hash);
|
||||||
if (num < 0)
|
if (num <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
num = EVP_CIPHER_get_key_length(c) + num + EVP_CIPHER_get_iv_length(c);
|
num = EVP_CIPHER_get_key_length(c) + num + EVP_CIPHER_get_iv_length(c);
|
||||||
|
|
|
@ -338,7 +338,8 @@ int ssl_load_ciphers(SSL_CTX *ctx)
|
||||||
ctx->disabled_mac_mask |= t->mask;
|
ctx->disabled_mac_mask |= t->mask;
|
||||||
} else {
|
} else {
|
||||||
int tmpsize = EVP_MD_get_size(md);
|
int tmpsize = EVP_MD_get_size(md);
|
||||||
if (!ossl_assert(tmpsize >= 0))
|
|
||||||
|
if (!ossl_assert(tmpsize > 0))
|
||||||
return 0;
|
return 0;
|
||||||
ctx->ssl_mac_secret_size[i] = tmpsize;
|
ctx->ssl_mac_secret_size[i] = tmpsize;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1556,7 +1556,7 @@ int tls_psk_do_binder(SSL_CONNECTION *s, const EVP_MD *md,
|
||||||
SSL_CTX *sctx = SSL_CONNECTION_GET_CTX(s);
|
SSL_CTX *sctx = SSL_CONNECTION_GET_CTX(s);
|
||||||
|
|
||||||
/* Ensure cast to size_t is safe */
|
/* Ensure cast to size_t is safe */
|
||||||
if (!ossl_assert(hashsizei >= 0)) {
|
if (!ossl_assert(hashsizei > 0)) {
|
||||||
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
|
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2829,7 +2829,7 @@ MSG_PROCESS_RETURN tls_process_new_session_ticket(SSL_CONNECTION *s,
|
||||||
static const unsigned char nonce_label[] = "resumption";
|
static const unsigned char nonce_label[] = "resumption";
|
||||||
|
|
||||||
/* Ensure cast to size_t is safe */
|
/* Ensure cast to size_t is safe */
|
||||||
if (!ossl_assert(hashleni >= 0)) {
|
if (!ossl_assert(hashleni > 0)) {
|
||||||
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
|
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4175,7 +4175,7 @@ CON_FUNC_RETURN tls_construct_new_session_ticket(SSL_CONNECTION *s, WPACKET *pkt
|
||||||
int hashleni = EVP_MD_get_size(md);
|
int hashleni = EVP_MD_get_size(md);
|
||||||
|
|
||||||
/* Ensure cast to size_t is safe */
|
/* Ensure cast to size_t is safe */
|
||||||
if (!ossl_assert(hashleni >= 0)) {
|
if (!ossl_assert(hashleni > 0)) {
|
||||||
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
|
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
|
@ -188,7 +188,7 @@ int tls13_generate_secret(SSL_CONNECTION *s, const EVP_MD *md,
|
||||||
|
|
||||||
mdleni = EVP_MD_get_size(md);
|
mdleni = EVP_MD_get_size(md);
|
||||||
/* Ensure cast to size_t is safe */
|
/* Ensure cast to size_t is safe */
|
||||||
if (!ossl_assert(mdleni >= 0)) {
|
if (!ossl_assert(mdleni > 0)) {
|
||||||
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
|
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
|
||||||
EVP_KDF_CTX_free(kctx);
|
EVP_KDF_CTX_free(kctx);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -361,7 +361,7 @@ static int derive_secret_key_and_iv(SSL_CONNECTION *s, const EVP_MD *md,
|
||||||
int mode, mac_mdleni;
|
int mode, mac_mdleni;
|
||||||
|
|
||||||
/* Ensure cast to size_t is safe */
|
/* Ensure cast to size_t is safe */
|
||||||
if (!ossl_assert(hashleni >= 0)) {
|
if (!ossl_assert(hashleni > 0)) {
|
||||||
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_EVP_LIB);
|
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_EVP_LIB);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -379,7 +379,7 @@ static int derive_secret_key_and_iv(SSL_CONNECTION *s, const EVP_MD *md,
|
||||||
&& mac_type == NID_hmac) {
|
&& mac_type == NID_hmac) {
|
||||||
mac_mdleni = EVP_MD_get_size(mac_md);
|
mac_mdleni = EVP_MD_get_size(mac_md);
|
||||||
|
|
||||||
if (mac_mdleni < 0) {
|
if (mac_mdleni <= 0) {
|
||||||
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
|
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5726,6 +5726,8 @@ EVP_PKEY_verify_message_init ? 3_4_0 EXIST::FUNCTION:
|
||||||
EVP_PKEY_verify_message_update ? 3_4_0 EXIST::FUNCTION:
|
EVP_PKEY_verify_message_update ? 3_4_0 EXIST::FUNCTION:
|
||||||
EVP_PKEY_verify_message_final ? 3_4_0 EXIST::FUNCTION:
|
EVP_PKEY_verify_message_final ? 3_4_0 EXIST::FUNCTION:
|
||||||
EVP_PKEY_verify_recover_init_ex2 ? 3_4_0 EXIST::FUNCTION:
|
EVP_PKEY_verify_recover_init_ex2 ? 3_4_0 EXIST::FUNCTION:
|
||||||
|
EVP_MD_xof ? 3_4_0 EXIST::FUNCTION:
|
||||||
|
EVP_MD_CTX_get_size_ex ? 3_4_0 EXIST::FUNCTION:
|
||||||
EVP_CIPHER_CTX_set_algor_params ? 3_4_0 EXIST::FUNCTION:
|
EVP_CIPHER_CTX_set_algor_params ? 3_4_0 EXIST::FUNCTION:
|
||||||
EVP_CIPHER_CTX_get_algor_params ? 3_4_0 EXIST::FUNCTION:
|
EVP_CIPHER_CTX_get_algor_params ? 3_4_0 EXIST::FUNCTION:
|
||||||
EVP_CIPHER_CTX_get_algor ? 3_4_0 EXIST::FUNCTION:
|
EVP_CIPHER_CTX_get_algor ? 3_4_0 EXIST::FUNCTION:
|
||||||
|
|
Loading…
Reference in New Issue