X-Git-Url: https://git.openssl.org/?a=blobdiff_plain;ds=sidebyside;f=crypto%2Fkdf%2Fhkdf.c;h=63c3523c271ffc7dc959f06a51cfac7714f356bd;hb=3f4af53c22ba02cb197a79cd791637ef1b9c3520;hp=8ffc8a38990ccb6b8f655ff57dfb9e2d873d91b5;hpb=a24a5b8cc4103ddd69f21c91c7d7372abc270157;p=openssl.git diff --git a/crypto/kdf/hkdf.c b/crypto/kdf/hkdf.c index 8ffc8a3899..63c3523c27 100644 --- a/crypto/kdf/hkdf.c +++ b/crypto/kdf/hkdf.c @@ -148,14 +148,9 @@ static int pkey_hkdf_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, return EVP_PKEY_CTX_hkdf_mode(ctx, mode); } - if (strcmp(type, "md") == 0) { - const EVP_MD *md = EVP_get_digestbyname(value); - if (!md) { - KDFerr(KDF_F_PKEY_HKDF_CTRL_STR, KDF_R_INVALID_DIGEST); - return 0; - } - return EVP_PKEY_CTX_set_hkdf_md(ctx, md); - } + if (strcmp(type, "md") == 0) + return EVP_PKEY_CTX_md(ctx, EVP_PKEY_OP_DERIVE, + EVP_PKEY_CTRL_HKDF_MD, value); if (strcmp(type, "salt") == 0) return EVP_PKEY_CTX_str2ctrl(ctx, EVP_PKEY_CTRL_HKDF_SALT, value); @@ -184,8 +179,12 @@ static int pkey_hkdf_derive(EVP_PKEY_CTX *ctx, unsigned char *key, { HKDF_PKEY_CTX *kctx = ctx->data; - if (kctx->md == NULL || kctx->key == NULL) { - KDFerr(KDF_F_PKEY_HKDF_DERIVE, KDF_R_MISSING_PARAMETER); + if (kctx->md == NULL) { + KDFerr(KDF_F_PKEY_HKDF_DERIVE, KDF_R_MISSING_MESSAGE_DIGEST); + return 0; + } + if (kctx->key == NULL) { + KDFerr(KDF_F_PKEY_HKDF_DERIVE, KDF_R_MISSING_KEY); return 0; }