mirror of https://github.com/openssl/openssl.git
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:
parent
480c8ef8b5
commit
4b58d9b41b
|
@ -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,
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue