evp: add params arguments to init functions

Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/14383)
This commit is contained in:
Pauli 2021-03-02 20:20:25 +10:00
parent 480c8ef8b5
commit 4b58d9b41b
8 changed files with 162 additions and 54 deletions

View File

@ -16,7 +16,8 @@
#include "internal/provider.h" #include "internal/provider.h"
#include "evp_local.h" #include "evp_local.h"
static int evp_pkey_asym_cipher_init(EVP_PKEY_CTX *ctx, int operation) static int evp_pkey_asym_cipher_init(EVP_PKEY_CTX *ctx, int operation,
const OSSL_PARAM params[])
{ {
int ret = 0; int ret = 0;
void *provkey = NULL; void *provkey = NULL;
@ -111,7 +112,7 @@ static int evp_pkey_asym_cipher_init(EVP_PKEY_CTX *ctx, int operation)
ret = -2; ret = -2;
goto err; goto err;
} }
ret = cipher->encrypt_init(ctx->op.ciph.ciphprovctx, provkey); ret = cipher->encrypt_init(ctx->op.ciph.ciphprovctx, provkey, params);
break; break;
case EVP_PKEY_OP_DECRYPT: case EVP_PKEY_OP_DECRYPT:
if (cipher->decrypt_init == NULL) { if (cipher->decrypt_init == NULL) {
@ -119,7 +120,7 @@ static int evp_pkey_asym_cipher_init(EVP_PKEY_CTX *ctx, int operation)
ret = -2; ret = -2;
goto err; goto err;
} }
ret = cipher->decrypt_init(ctx->op.ciph.ciphprovctx, provkey); ret = cipher->decrypt_init(ctx->op.ciph.ciphprovctx, provkey, params);
break; break;
default: default:
ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR); ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR);
@ -168,7 +169,12 @@ static int evp_pkey_asym_cipher_init(EVP_PKEY_CTX *ctx, int operation)
int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx) int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx)
{ {
return evp_pkey_asym_cipher_init(ctx, EVP_PKEY_OP_ENCRYPT); return evp_pkey_asym_cipher_init(ctx, EVP_PKEY_OP_ENCRYPT, NULL);
}
int EVP_PKEY_encrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[])
{
return evp_pkey_asym_cipher_init(ctx, EVP_PKEY_OP_ENCRYPT, params);
} }
int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx,
@ -205,7 +211,12 @@ int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx,
int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx) int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx)
{ {
return evp_pkey_asym_cipher_init(ctx, EVP_PKEY_OP_DECRYPT); return evp_pkey_asym_cipher_init(ctx, EVP_PKEY_OP_DECRYPT, NULL);
}
int EVP_PKEY_decrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[])
{
return evp_pkey_asym_cipher_init(ctx, EVP_PKEY_OP_DECRYPT, params);
} }
int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx,

View File

@ -124,13 +124,8 @@ void EVP_MD_CTX_free(EVP_MD_CTX *ctx)
return; return;
} }
int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type) static int evp_md_init_internal(EVP_MD_CTX *ctx, const EVP_MD *type,
{ const OSSL_PARAM params[], ENGINE *impl)
EVP_MD_CTX_reset(ctx);
return EVP_DigestInit_ex(ctx, type, NULL);
}
int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl)
{ {
#if !defined(OPENSSL_NO_ENGINE) && !defined(FIPS_MODULE) #if !defined(OPENSSL_NO_ENGINE) && !defined(FIPS_MODULE)
ENGINE *tmpimpl = NULL; ENGINE *tmpimpl = NULL;
@ -272,7 +267,7 @@ int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl)
return 0; return 0;
} }
return ctx->digest->dinit(ctx->provctx); return ctx->digest->dinit(ctx->provctx, params);
/* Code below to be removed when legacy support is dropped. */ /* Code below to be removed when legacy support is dropped. */
legacy: legacy:
@ -346,6 +341,23 @@ int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl)
return ctx->digest->init(ctx); return ctx->digest->init(ctx);
} }
int EVP_DigestInit_ex2(EVP_MD_CTX *ctx, const EVP_MD *type,
const OSSL_PARAM params[])
{
return evp_md_init_internal(ctx, type, params, NULL);
}
int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type)
{
EVP_MD_CTX_reset(ctx);
return evp_md_init_internal(ctx, type, NULL, NULL);
}
int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl)
{
return evp_md_init_internal(ctx, type, NULL, impl);
}
int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *data, size_t count) int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *data, size_t count)
{ {
if (count == 0) if (count == 0)

View File

@ -72,17 +72,11 @@ void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *ctx)
OPENSSL_free(ctx); OPENSSL_free(ctx);
} }
int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, static int evp_cipher_init_internal(EVP_CIPHER_CTX *ctx,
const unsigned char *key, const unsigned char *iv, int enc) const EVP_CIPHER *cipher,
{ ENGINE *impl, const unsigned char *key,
if (cipher != NULL) const unsigned char *iv, int enc,
EVP_CIPHER_CTX_reset(ctx); const OSSL_PARAM params[])
return EVP_CipherInit_ex(ctx, cipher, NULL, key, iv, enc);
}
int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
ENGINE *impl, const unsigned char *key,
const unsigned char *iv, int enc)
{ {
#if !defined(OPENSSL_NO_ENGINE) && !defined(FIPS_MODULE) #if !defined(OPENSSL_NO_ENGINE) && !defined(FIPS_MODULE)
ENGINE *tmpimpl = NULL; ENGINE *tmpimpl = NULL;
@ -221,7 +215,8 @@ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
: EVP_CIPHER_CTX_key_length(ctx), : EVP_CIPHER_CTX_key_length(ctx),
iv, iv,
iv == NULL ? 0 iv == NULL ? 0
: EVP_CIPHER_CTX_iv_length(ctx)); : EVP_CIPHER_CTX_iv_length(ctx),
params);
} }
if (ctx->cipher->dinit == NULL) { if (ctx->cipher->dinit == NULL) {
@ -235,7 +230,8 @@ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
: EVP_CIPHER_CTX_key_length(ctx), : EVP_CIPHER_CTX_key_length(ctx),
iv, iv,
iv == NULL ? 0 iv == NULL ? 0
: EVP_CIPHER_CTX_iv_length(ctx)); : EVP_CIPHER_CTX_iv_length(ctx),
params);
/* Code below to be removed when legacy support is dropped. */ /* Code below to be removed when legacy support is dropped. */
legacy: legacy:
@ -370,6 +366,28 @@ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
return 1; return 1;
} }
int EVP_CipherInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
const unsigned char *key, const unsigned char *iv,
int enc, const OSSL_PARAM params[])
{
return evp_cipher_init_internal(ctx, cipher, NULL, key, iv, enc, params);
}
int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
const unsigned char *key, const unsigned char *iv, int enc)
{
if (cipher != NULL)
EVP_CIPHER_CTX_reset(ctx);
return evp_cipher_init_internal(ctx, cipher, NULL, key, iv, enc, NULL);
}
int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
ENGINE *impl, const unsigned char *key,
const unsigned char *iv, int enc)
{
return evp_cipher_init_internal(ctx, cipher, impl, key, iv, enc, NULL);
}
int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
const unsigned char *in, int inl) const unsigned char *in, int inl)
{ {
@ -408,6 +426,13 @@ int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
return EVP_CipherInit_ex(ctx, cipher, impl, key, iv, 1); return EVP_CipherInit_ex(ctx, cipher, impl, key, iv, 1);
} }
int EVP_EncryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
const unsigned char *key, const unsigned char *iv,
const OSSL_PARAM params[])
{
return EVP_CipherInit_ex2(ctx, cipher, key, iv, 1, params);
}
int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
const unsigned char *key, const unsigned char *iv) const unsigned char *key, const unsigned char *iv)
{ {
@ -421,6 +446,13 @@ int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
return EVP_CipherInit_ex(ctx, cipher, impl, key, iv, 0); return EVP_CipherInit_ex(ctx, cipher, impl, key, iv, 0);
} }
int EVP_DecryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
const unsigned char *key, const unsigned char *iv,
const OSSL_PARAM params[])
{
return EVP_CipherInit_ex2(ctx, cipher, key, iv, 0, params);
}
/* /*
* According to the letter of standard difference between pointers * According to the letter of standard difference between pointers
* is specified to be valid only within same object. This makes * is specified to be valid only within same object. This makes

View File

@ -175,6 +175,11 @@ EVP_KEYEXCH *EVP_KEYEXCH_fetch(OSSL_LIB_CTX *ctx, const char *algorithm,
} }
int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx) int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx)
{
return EVP_PKEY_derive_init_ex(ctx, NULL);
}
int EVP_PKEY_derive_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[])
{ {
int ret; int ret;
void *provkey = NULL; void *provkey = NULL;
@ -279,7 +284,7 @@ int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx)
ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR); ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR);
goto err; goto err;
} }
ret = exchange->init(ctx->op.kex.exchprovctx, provkey); ret = exchange->init(ctx->op.kex.exchprovctx, provkey, params);
return ret ? 1 : 0; return ret ? 1 : 0;
err: err:

View File

@ -16,7 +16,8 @@
#include "internal/provider.h" #include "internal/provider.h"
#include "evp_local.h" #include "evp_local.h"
static int evp_kem_init(EVP_PKEY_CTX *ctx, int operation) static int evp_kem_init(EVP_PKEY_CTX *ctx, int operation,
const OSSL_PARAM params[])
{ {
int ret = 0; int ret = 0;
EVP_KEM *kem = NULL; EVP_KEM *kem = NULL;
@ -79,7 +80,7 @@ static int evp_kem_init(EVP_PKEY_CTX *ctx, int operation)
ret = -2; ret = -2;
goto err; goto err;
} }
ret = kem->encapsulate_init(ctx->op.encap.kemprovctx, provkey); ret = kem->encapsulate_init(ctx->op.encap.kemprovctx, provkey, params);
break; break;
case EVP_PKEY_OP_DECAPSULATE: case EVP_PKEY_OP_DECAPSULATE:
if (kem->decapsulate_init == NULL) { if (kem->decapsulate_init == NULL) {
@ -87,7 +88,7 @@ static int evp_kem_init(EVP_PKEY_CTX *ctx, int operation)
ret = -2; ret = -2;
goto err; goto err;
} }
ret = kem->decapsulate_init(ctx->op.encap.kemprovctx, provkey); ret = kem->decapsulate_init(ctx->op.encap.kemprovctx, provkey, params);
break; break;
default: default:
ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR); ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR);
@ -104,9 +105,9 @@ static int evp_kem_init(EVP_PKEY_CTX *ctx, int operation)
return ret; return ret;
} }
int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX *ctx) int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[])
{ {
return evp_kem_init(ctx, EVP_PKEY_OP_ENCAPSULATE); return evp_kem_init(ctx, EVP_PKEY_OP_ENCAPSULATE, params);
} }
int EVP_PKEY_encapsulate(EVP_PKEY_CTX *ctx, int EVP_PKEY_encapsulate(EVP_PKEY_CTX *ctx,
@ -133,9 +134,9 @@ int EVP_PKEY_encapsulate(EVP_PKEY_CTX *ctx,
out, outlen, secret, secretlen); out, outlen, secret, secretlen);
} }
int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX *ctx) int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[])
{ {
return evp_kem_init(ctx, EVP_PKEY_OP_DECAPSULATE); return evp_kem_init(ctx, EVP_PKEY_OP_DECAPSULATE, params);
} }
int EVP_PKEY_decapsulate(EVP_PKEY_CTX *ctx, int EVP_PKEY_decapsulate(EVP_PKEY_CTX *ctx,

View File

@ -39,7 +39,8 @@ static const char *canon_mdname(const char *mdname)
static int do_sigver_init(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, static int do_sigver_init(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
const EVP_MD *type, const char *mdname, const EVP_MD *type, const char *mdname,
OSSL_LIB_CTX *libctx, const char *props, OSSL_LIB_CTX *libctx, const char *props,
ENGINE *e, EVP_PKEY *pkey, int ver) ENGINE *e, EVP_PKEY *pkey, int ver,
OSSL_PARAM params[])
{ {
EVP_PKEY_CTX *locpctx = NULL; EVP_PKEY_CTX *locpctx = NULL;
EVP_SIGNATURE *signature = NULL; EVP_SIGNATURE *signature = NULL;
@ -202,14 +203,14 @@ static int do_sigver_init(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
goto err; goto err;
} }
ret = signature->digest_verify_init(locpctx->op.sig.sigprovctx, ret = signature->digest_verify_init(locpctx->op.sig.sigprovctx,
mdname, provkey); mdname, provkey, params);
} else { } else {
if (signature->digest_sign_init == NULL) { if (signature->digest_sign_init == NULL) {
ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR); ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR);
goto err; goto err;
} }
ret = signature->digest_sign_init(locpctx->op.sig.sigprovctx, ret = signature->digest_sign_init(locpctx->op.sig.sigprovctx,
mdname, provkey); mdname, provkey, params);
} }
goto end; goto end;
@ -301,28 +302,34 @@ static int do_sigver_init(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
const char *mdname, OSSL_LIB_CTX *libctx, const char *mdname, OSSL_LIB_CTX *libctx,
const char *props, EVP_PKEY *pkey) const char *props, EVP_PKEY *pkey,
OSSL_PARAM params[])
{ {
return do_sigver_init(ctx, pctx, NULL, mdname, libctx, props, NULL, pkey, 0); return do_sigver_init(ctx, pctx, NULL, mdname, libctx, props, NULL, pkey, 0,
params);
} }
int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey) const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey)
{ {
return do_sigver_init(ctx, pctx, type, NULL, NULL, NULL, e, pkey, 0); return do_sigver_init(ctx, pctx, type, NULL, NULL, NULL, e, pkey, 0,
NULL);
} }
int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
const char *mdname, OSSL_LIB_CTX *libctx, const char *mdname, OSSL_LIB_CTX *libctx,
const char *props, EVP_PKEY *pkey) const char *props, EVP_PKEY *pkey,
OSSL_PARAM params[])
{ {
return do_sigver_init(ctx, pctx, NULL, mdname, libctx, props, NULL, pkey, 1); return do_sigver_init(ctx, pctx, NULL, mdname, libctx, props, NULL, pkey, 1,
params);
} }
int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey) const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey)
{ {
return do_sigver_init(ctx, pctx, type, NULL, NULL, NULL, e, pkey, 1); return do_sigver_init(ctx, pctx, type, NULL, NULL, NULL, e, pkey, 1,
NULL);
} }
#endif /* FIPS_MDOE */ #endif /* FIPS_MDOE */

View File

@ -361,7 +361,8 @@ const OSSL_PARAM *EVP_SIGNATURE_settable_ctx_params(const EVP_SIGNATURE *sig)
return sig->settable_ctx_params(NULL, provctx); return sig->settable_ctx_params(NULL, provctx);
} }
static int evp_pkey_signature_init(EVP_PKEY_CTX *ctx, int operation) static int evp_pkey_signature_init(EVP_PKEY_CTX *ctx, int operation,
const OSSL_PARAM params[])
{ {
int ret = 0; int ret = 0;
void *provkey = NULL; void *provkey = NULL;
@ -456,7 +457,7 @@ static int evp_pkey_signature_init(EVP_PKEY_CTX *ctx, int operation)
ret = -2; ret = -2;
goto err; goto err;
} }
ret = signature->sign_init(ctx->op.sig.sigprovctx, provkey); ret = signature->sign_init(ctx->op.sig.sigprovctx, provkey, params);
break; break;
case EVP_PKEY_OP_VERIFY: case EVP_PKEY_OP_VERIFY:
if (signature->verify_init == NULL) { if (signature->verify_init == NULL) {
@ -464,7 +465,7 @@ static int evp_pkey_signature_init(EVP_PKEY_CTX *ctx, int operation)
ret = -2; ret = -2;
goto err; goto err;
} }
ret = signature->verify_init(ctx->op.sig.sigprovctx, provkey); ret = signature->verify_init(ctx->op.sig.sigprovctx, provkey, params);
break; break;
case EVP_PKEY_OP_VERIFYRECOVER: case EVP_PKEY_OP_VERIFYRECOVER:
if (signature->verify_recover_init == NULL) { if (signature->verify_recover_init == NULL) {
@ -472,7 +473,8 @@ static int evp_pkey_signature_init(EVP_PKEY_CTX *ctx, int operation)
ret = -2; ret = -2;
goto err; goto err;
} }
ret = signature->verify_recover_init(ctx->op.sig.sigprovctx, provkey); ret = signature->verify_recover_init(ctx->op.sig.sigprovctx, provkey,
params);
break; break;
default: default:
ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR); ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR);
@ -540,7 +542,12 @@ static int evp_pkey_signature_init(EVP_PKEY_CTX *ctx, int operation)
int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx) int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx)
{ {
return evp_pkey_signature_init(ctx, EVP_PKEY_OP_SIGN); return evp_pkey_signature_init(ctx, EVP_PKEY_OP_SIGN, NULL);
}
int EVP_PKEY_sign_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[])
{
return evp_pkey_signature_init(ctx, EVP_PKEY_OP_SIGN, params);
} }
int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, int EVP_PKEY_sign(EVP_PKEY_CTX *ctx,
@ -579,7 +586,12 @@ int EVP_PKEY_sign(EVP_PKEY_CTX *ctx,
int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx) int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx)
{ {
return evp_pkey_signature_init(ctx, EVP_PKEY_OP_VERIFY); return evp_pkey_signature_init(ctx, EVP_PKEY_OP_VERIFY, NULL);
}
int EVP_PKEY_verify_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[])
{
return evp_pkey_signature_init(ctx, EVP_PKEY_OP_VERIFY, params);
} }
int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, int EVP_PKEY_verify(EVP_PKEY_CTX *ctx,
@ -616,7 +628,13 @@ int EVP_PKEY_verify(EVP_PKEY_CTX *ctx,
int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx) int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx)
{ {
return evp_pkey_signature_init(ctx, EVP_PKEY_OP_VERIFYRECOVER); return evp_pkey_signature_init(ctx, EVP_PKEY_OP_VERIFYRECOVER, NULL);
}
int EVP_PKEY_verify_recover_init_ex(EVP_PKEY_CTX *ctx,
const OSSL_PARAM params[])
{
return evp_pkey_signature_init(ctx, EVP_PKEY_OP_VERIFYRECOVER, params);
} }
int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx,

View File

@ -654,6 +654,8 @@ __owur int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in);
void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags);
void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags);
int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags);
__owur int EVP_DigestInit_ex2(EVP_MD_CTX *ctx, const EVP_MD *type,
const OSSL_PARAM params[]);
__owur int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, __owur int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type,
ENGINE *impl); ENGINE *impl);
__owur int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, __owur int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d,
@ -698,6 +700,10 @@ __owur int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
const EVP_CIPHER *cipher, ENGINE *impl, const EVP_CIPHER *cipher, ENGINE *impl,
const unsigned char *key, const unsigned char *key,
const unsigned char *iv); const unsigned char *iv);
__owur int EVP_EncryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
const unsigned char *key,
const unsigned char *iv,
const OSSL_PARAM params[]);
/*__owur*/ int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, /*__owur*/ int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
int *outl, const unsigned char *in, int inl); int *outl, const unsigned char *in, int inl);
/*__owur*/ int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, /*__owur*/ int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out,
@ -711,6 +717,10 @@ __owur int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
const EVP_CIPHER *cipher, ENGINE *impl, const EVP_CIPHER *cipher, ENGINE *impl,
const unsigned char *key, const unsigned char *key,
const unsigned char *iv); const unsigned char *iv);
__owur int EVP_DecryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
const unsigned char *key,
const unsigned char *iv,
const OSSL_PARAM params[]);
/*__owur*/ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, /*__owur*/ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
int *outl, const unsigned char *in, int inl); int *outl, const unsigned char *in, int inl);
__owur int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, __owur int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm,
@ -725,6 +735,9 @@ __owur int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
const EVP_CIPHER *cipher, ENGINE *impl, const EVP_CIPHER *cipher, ENGINE *impl,
const unsigned char *key, const unsigned char *key,
const unsigned char *iv, int enc); const unsigned char *iv, int enc);
__owur int EVP_CipherInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
const unsigned char *key, const unsigned char *iv,
int enc, const OSSL_PARAM params[]);
__owur int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, __owur int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
int *outl, const unsigned char *in, int inl); int *outl, const unsigned char *in, int inl);
__owur int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, __owur int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm,
@ -754,7 +767,8 @@ __owur int EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret,
int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
const char *mdname, OSSL_LIB_CTX *libctx, const char *mdname, OSSL_LIB_CTX *libctx,
const char *props, EVP_PKEY *pkey); const char *props, EVP_PKEY *pkey,
OSSL_PARAM params[]);
/*__owur*/ int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, /*__owur*/ int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
const EVP_MD *type, ENGINE *e, const EVP_MD *type, ENGINE *e,
EVP_PKEY *pkey); EVP_PKEY *pkey);
@ -764,7 +778,8 @@ __owur int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret,
int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
const char *mdname, OSSL_LIB_CTX *libctx, const char *mdname, OSSL_LIB_CTX *libctx,
const char *props, EVP_PKEY *pkey); const char *props, EVP_PKEY *pkey,
OSSL_PARAM params[]);
__owur int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, __owur int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
const EVP_MD *type, ENGINE *e, const EVP_MD *type, ENGINE *e,
EVP_PKEY *pkey); EVP_PKEY *pkey);
@ -1769,35 +1784,42 @@ const OSSL_PARAM *EVP_KEM_gettable_ctx_params(const EVP_KEM *kem);
const OSSL_PARAM *EVP_KEM_settable_ctx_params(const EVP_KEM *kem); const OSSL_PARAM *EVP_KEM_settable_ctx_params(const EVP_KEM *kem);
int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx);
int EVP_PKEY_sign_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, int EVP_PKEY_sign(EVP_PKEY_CTX *ctx,
unsigned char *sig, size_t *siglen, unsigned char *sig, size_t *siglen,
const unsigned char *tbs, size_t tbslen); const unsigned char *tbs, size_t tbslen);
int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx);
int EVP_PKEY_verify_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, int EVP_PKEY_verify(EVP_PKEY_CTX *ctx,
const unsigned char *sig, size_t siglen, const unsigned char *sig, size_t siglen,
const unsigned char *tbs, size_t tbslen); const unsigned char *tbs, size_t tbslen);
int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx);
int EVP_PKEY_verify_recover_init_ex(EVP_PKEY_CTX *ctx,
const OSSL_PARAM params[]);
int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx,
unsigned char *rout, size_t *routlen, unsigned char *rout, size_t *routlen,
const unsigned char *sig, size_t siglen); const unsigned char *sig, size_t siglen);
int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx);
int EVP_PKEY_encrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx,
unsigned char *out, size_t *outlen, unsigned char *out, size_t *outlen,
const unsigned char *in, size_t inlen); const unsigned char *in, size_t inlen);
int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx);
int EVP_PKEY_decrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx,
unsigned char *out, size_t *outlen, unsigned char *out, size_t *outlen,
const unsigned char *in, size_t inlen); const unsigned char *in, size_t inlen);
int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx);
int EVP_PKEY_derive_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer);
int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen);
int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX *ctx); int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
int EVP_PKEY_encapsulate(EVP_PKEY_CTX *ctx, int EVP_PKEY_encapsulate(EVP_PKEY_CTX *ctx,
unsigned char *wrappedkey, size_t *wrappedkeylen, unsigned char *wrappedkey, size_t *wrappedkeylen,
unsigned char *genkey, size_t *genkeylen); unsigned char *genkey, size_t *genkeylen);
int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX *ctx); int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
int EVP_PKEY_decapsulate(EVP_PKEY_CTX *ctx, int EVP_PKEY_decapsulate(EVP_PKEY_CTX *ctx,
unsigned char *unwrapped, size_t *unwrappedlen, unsigned char *unwrapped, size_t *unwrappedlen,
const unsigned char *wrapped, size_t wrappedlen); const unsigned char *wrapped, size_t wrappedlen);