mirror of
https://github.com/openssl/openssl.git
synced 2025-03-19 19:50:42 +08:00
rand: core APIs for provider friendly random.
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> (Merged from https://github.com/openssl/openssl/pull/11682)
This commit is contained in:
parent
922f156545
commit
15dfa092d0
@ -375,10 +375,10 @@ CRMF_F_OSSL_CRMF_MSG_PUSH0_REGCTRL:110:OSSL_CRMF_MSG_push0_regCtrl
|
||||
CRMF_F_OSSL_CRMF_MSG_PUSH0_REGINFO:111:OSSL_CRMF_MSG_push0_regInfo
|
||||
CRMF_F_OSSL_CRMF_MSG_SET0_EXTENSIONS:112:OSSL_CRMF_MSG_set0_extensions
|
||||
CRMF_F_OSSL_CRMF_MSG_SET0_SINGLEPUBINFO:113:OSSL_CRMF_MSG_set0_SinglePubInfo
|
||||
CRMF_F_OSSL_CRMF_MSG_SET0_VALIDITY:116:OSSL_CRMF_MSG_set0_validity
|
||||
CRMF_F_OSSL_CRMF_MSG_SET_CERTREQID:114:OSSL_CRMF_MSG_set_certReqId
|
||||
CRMF_F_OSSL_CRMF_MSG_SET_PKIPUBLICATIONINFO_ACTION:115:\
|
||||
OSSL_CRMF_MSG_set_PKIPublicationInfo_action
|
||||
CRMF_F_OSSL_CRMF_MSG_SET0_VALIDITY:116:OSSL_CRMF_MSG_set0_validity
|
||||
CRMF_F_OSSL_CRMF_PBMP_NEW:117:OSSL_CRMF_pbmp_new
|
||||
CRMF_F_OSSL_CRMF_PBM_NEW:118:OSSL_CRMF_pbm_new
|
||||
CRYPTO_F_CMAC_CTX_NEW:120:CMAC_CTX_new
|
||||
@ -2537,6 +2537,7 @@ EVP_R_EXPECTING_A_SIPHASH_KEY:175:expecting a siphash key
|
||||
EVP_R_FETCH_FAILED:202:fetch failed
|
||||
EVP_R_FINAL_ERROR:188:final error
|
||||
EVP_R_FIPS_MODE_NOT_SUPPORTED:167:fips mode not supported
|
||||
EVP_R_GENERATE_ERROR:214:generate error
|
||||
EVP_R_GET_RAW_KEY_FAILED:182:get raw key failed
|
||||
EVP_R_ILLEGAL_SCRYPT_PARAMETERS:171:illegal scrypt parameters
|
||||
EVP_R_INACCESSIBLE_DOMAIN_PARAMETERS:204:inaccessible domain parameters
|
||||
@ -2549,12 +2550,14 @@ EVP_R_INVALID_FIPS_MODE:168:invalid fips mode
|
||||
EVP_R_INVALID_IV_LENGTH:194:invalid iv length
|
||||
EVP_R_INVALID_KEY:163:invalid key
|
||||
EVP_R_INVALID_KEY_LENGTH:130:invalid key length
|
||||
EVP_R_INVALID_NULL_ALGORITHM:218:invalid null algorithm
|
||||
EVP_R_INVALID_OPERATION:148:invalid operation
|
||||
EVP_R_INVALID_PROVIDER_FUNCTIONS:193:invalid provider functions
|
||||
EVP_R_INVALID_SALT_LENGTH:186:invalid salt length
|
||||
EVP_R_KEYGEN_FAILURE:120:keygen failure
|
||||
EVP_R_KEYMGMT_EXPORT_FAILURE:205:keymgmt export failure
|
||||
EVP_R_KEY_SETUP_FAILED:180:key setup failed
|
||||
EVP_R_LOCKING_NOT_SUPPORTED:213:locking not supported
|
||||
EVP_R_MEMORY_LIMIT_EXCEEDED:172:memory limit exceeded
|
||||
EVP_R_MESSAGE_DIGEST_IS_NULL:159:message digest is null
|
||||
EVP_R_METHOD_NOT_SUPPORTED:144:method not supported
|
||||
@ -2584,6 +2587,11 @@ EVP_R_PRIVATE_KEY_ENCODE_ERROR:146:private key encode error
|
||||
EVP_R_PUBLIC_KEY_NOT_RSA:106:public key not rsa
|
||||
EVP_R_SET_DEFAULT_PROPERTY_FAILURE:209:set default property failure
|
||||
EVP_R_TOO_MANY_RECORDS:183:too many records
|
||||
EVP_R_UNABLE_TO_ENABLE_PARENT_LOCKING:212:unable to enable parent locking
|
||||
EVP_R_UNABLE_TO_GET_MAXIMUM_REQUEST_SIZE:215:unable to get maximum request size
|
||||
EVP_R_UNABLE_TO_GET_RANDOM_STRENGTH:216:unable to get random strength
|
||||
EVP_R_UNABLE_TO_LOCK_CONTEXT:211:unable to lock context
|
||||
EVP_R_UNABLE_TO_SET_CALLBACKS:217:unable to set callbacks
|
||||
EVP_R_UNKNOWN_CIPHER:160:unknown cipher
|
||||
EVP_R_UNKNOWN_DIGEST:161:unknown digest
|
||||
EVP_R_UNKNOWN_KEY_TYPE:207:unknown key type
|
||||
@ -2813,8 +2821,10 @@ PROP_R_NO_VALUE:107:no value
|
||||
PROP_R_PARSE_FAILED:108:parse failed
|
||||
PROP_R_STRING_TOO_LONG:109:string too long
|
||||
PROP_R_TRAILING_CHARACTERS:110:trailing characters
|
||||
PROV_R_ADDITIONAL_INPUT_TOO_LONG:184:additional input too long
|
||||
PROV_R_AES_KEY_SETUP_FAILED:101:aes key setup failed
|
||||
PROV_R_ALGORITHM_MISMATCH:173:algorithm mismatch
|
||||
PROV_R_ALREADY_INSTANTIATED:185:already instantiated
|
||||
PROV_R_BAD_DECRYPT:100:bad decrypt
|
||||
PROV_R_BAD_ENCODING:141:bad encoding
|
||||
PROV_R_BAD_LENGTH:142:bad length
|
||||
@ -2822,16 +2832,26 @@ PROV_R_BAD_TLS_CLIENT_VERSION:161:bad tls client version
|
||||
PROV_R_BN_ERROR:160:bn error
|
||||
PROV_R_BOTH_MODE_AND_MODE_INT:127:both mode and mode int
|
||||
PROV_R_CIPHER_OPERATION_FAILED:102:cipher operation failed
|
||||
PROV_R_DERIVATION_FUNCTION_INIT_FAILED:205:derivation function init failed
|
||||
PROV_R_DERIVATION_FUNCTION_MANDATORY_FOR_FIPS:186:\
|
||||
derivation function mandatory for fips
|
||||
PROV_R_DIGEST_NOT_ALLOWED:174:digest not allowed
|
||||
PROV_R_DRBG_ALREADY_INITIALIZED:187:drbg already initialized
|
||||
PROV_R_ERROR_INSTANTIATING_DRBG:188:error instantiating drbg
|
||||
PROV_R_ERROR_RETRIEVING_ENTROPY:189:error retrieving entropy
|
||||
PROV_R_ERROR_RETRIEVING_NONCE:190:error retrieving nonce
|
||||
PROV_R_FAILED_DURING_DERIVATION:164:failed during derivation
|
||||
PROV_R_FAILED_TO_CREATE_LOCK:180:failed to create lock
|
||||
PROV_R_FAILED_TO_DECRYPT:162:failed to decrypt
|
||||
PROV_R_FAILED_TO_GENERATE_KEY:121:failed to generate key
|
||||
PROV_R_FAILED_TO_GET_PARAMETER:103:failed to get parameter
|
||||
PROV_R_FAILED_TO_SET_PARAMETER:104:failed to set parameter
|
||||
PROV_R_FAILED_TO_SIGN:175:failed to sign
|
||||
PROV_R_GENERATE_ERROR:191:generate error
|
||||
PROV_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE:165:\
|
||||
illegal or unsupported padding mode
|
||||
PROV_R_INAVLID_UKM_LENGTH:146:inavlid ukm length
|
||||
PROV_R_INSUFFICIENT_DRBG_STRENGTH:181:insufficient drbg strength
|
||||
PROV_R_INVALID_AAD:108:invalid aad
|
||||
PROV_R_INVALID_CONSTANT_LENGTH:157:invalid constant length
|
||||
PROV_R_INVALID_CURVE:176:invalid curve
|
||||
@ -2858,6 +2878,7 @@ PROV_R_INVALID_SIGNATURE_SIZE:179:invalid signature size
|
||||
PROV_R_INVALID_TAG:110:invalid tag
|
||||
PROV_R_INVALID_TAGLEN:118:invalid taglen
|
||||
PROV_R_INVALID_X931_DIGEST:170:invalid x931 digest
|
||||
PROV_R_IN_ERROR_STATE:192:in error state
|
||||
PROV_R_KEY_SIZE_TOO_SMALL:171:key size too small
|
||||
PROV_R_MISSING_CEK_ALG:144:missing cek alg
|
||||
PROV_R_MISSING_CIPHER:155:missing cipher
|
||||
@ -2872,6 +2893,7 @@ PROV_R_MISSING_SEED:140:missing seed
|
||||
PROV_R_MISSING_SESSION_ID:133:missing session id
|
||||
PROV_R_MISSING_TYPE:134:missing type
|
||||
PROV_R_MISSING_XCGHASH:135:missing xcghash
|
||||
PROV_R_NOT_INSTANTIATED:193:not instantiated
|
||||
PROV_R_NOT_SUPPORTED:136:not supported
|
||||
PROV_R_NOT_XOF_OR_INVALID_LENGTH:113:not xof or invalid length
|
||||
PROV_R_NO_KEY_SET:114:no key set
|
||||
@ -2879,12 +2901,28 @@ PROV_R_NO_PARAMETERS_SET:177:no parameters set
|
||||
PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE:178:\
|
||||
operation not supported for this keytype
|
||||
PROV_R_OUTPUT_BUFFER_TOO_SMALL:106:output buffer too small
|
||||
PROV_R_PARENT_LOCKING_NOT_ENABLED:182:parent locking not enabled
|
||||
PROV_R_PARENT_STRENGTH_TOO_WEAK:194:parent strength too weak
|
||||
PROV_R_PERSONALISATION_STRING_TOO_LONG:195:personalisation string too long
|
||||
PROV_R_PSS_SALTLEN_TOO_SMALL:172:pss saltlen too small
|
||||
PROV_R_READ_KEY:159:read key
|
||||
PROV_R_REQUEST_TOO_LARGE_FOR_DRBG:196:request too large for drbg
|
||||
PROV_R_REQUIRE_CTR_MODE_CIPHER:206:require ctr mode cipher
|
||||
PROV_R_RESEED_ERROR:197:reseed error
|
||||
PROV_R_TAG_NOTSET:119:tag notset
|
||||
PROV_R_TAG_NOT_NEEDED:120:tag not needed
|
||||
PROV_R_UNABLE_TO_FIND_CIPHERS:207:unable to find ciphers
|
||||
PROV_R_UNABLE_TO_GET_ENTROPY:202:unable to get entropy
|
||||
PROV_R_UNABLE_TO_GET_NONCE:203:unable to get nonce
|
||||
PROV_R_UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER:198:\
|
||||
unable to get parent reseed prop counter
|
||||
PROV_R_UNABLE_TO_GET_PARENT_STRENGTH:199:unable to get parent strength
|
||||
PROV_R_UNABLE_TO_GET_RESEED_PROP_CTR:200:unable to get reseed prop ctr
|
||||
PROV_R_UNABLE_TO_INITIALISE_CIPHERS:208:unable to initialise ciphers
|
||||
PROV_R_UNABLE_TO_LOAD_SHA1:143:unable to load sha1
|
||||
PROV_R_UNABLE_TO_LOAD_SHA256:147:unable to load sha256
|
||||
PROV_R_UNABLE_TO_LOCK_PARENT:201:unable to lock parent
|
||||
PROV_R_UNABLE_TO_RESEED:204:unable to reseed
|
||||
PROV_R_UNKNOWN_PADDING_TYPE:163:unknown padding type
|
||||
PROV_R_UNSUPPORTED_CEK_ALG:145:unsupported cek alg
|
||||
PROV_R_UNSUPPORTED_KEY_SIZE:153:unsupported key size
|
||||
@ -2893,6 +2931,7 @@ PROV_R_UNSUPPORTED_NUMBER_OF_ROUNDS:152:unsupported number of rounds
|
||||
PROV_R_VALUE_ERROR:138:value error
|
||||
PROV_R_WRONG_FINAL_BLOCK_LENGTH:107:wrong final block length
|
||||
PROV_R_WRONG_OUTPUT_BUFFER_SIZE:139:wrong output buffer size
|
||||
PROV_R_XOF_DIGESTS_NOT_ALLOWED:183:xof digests not allowed
|
||||
PROV_R_XTS_DATA_UNIT_IS_TOO_LARGE:148:xts data unit is too large
|
||||
PROV_R_XTS_DUPLICATED_KEYS:149:xts duplicated keys
|
||||
RAND_R_ADDITIONAL_INPUT_TOO_LONG:102:additional input too long
|
||||
@ -2915,6 +2954,7 @@ RAND_R_FAILED_TO_CREATE_LOCK:126:failed to create lock
|
||||
RAND_R_FUNC_NOT_IMPLEMENTED:101:Function not implemented
|
||||
RAND_R_FWRITE_ERROR:123:Error writing file
|
||||
RAND_R_GENERATE_ERROR:112:generate error
|
||||
RAND_R_INSUFFICIENT_DRBG_STRENGTH:139:insufficient drbg strength
|
||||
RAND_R_INTERNAL_ERROR:113:internal error
|
||||
RAND_R_IN_ERROR_STATE:114:in error state
|
||||
RAND_R_NOT_A_REGULAR_FILE:122:Not a regular file
|
||||
@ -2933,6 +2973,11 @@ RAND_R_RESEED_ERROR:118:reseed error
|
||||
RAND_R_SELFTEST_FAILURE:119:selftest failure
|
||||
RAND_R_TOO_LITTLE_NONCE_REQUESTED:135:too little nonce requested
|
||||
RAND_R_TOO_MUCH_NONCE_REQUESTED:136:too much nonce requested
|
||||
RAND_R_UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER:141:\
|
||||
unable to get parent reseed prop counter
|
||||
RAND_R_UNABLE_TO_GET_PARENT_STRENGTH:138:unable to get parent strength
|
||||
RAND_R_UNABLE_TO_GET_RESEED_PROP_CTR:142:unable to get reseed prop ctr
|
||||
RAND_R_UNABLE_TO_LOCK_PARENT:140:unable to lock parent
|
||||
RAND_R_UNSUPPORTED_DRBG_FLAGS:132:unsupported drbg flags
|
||||
RAND_R_UNSUPPORTED_DRBG_TYPE:120:unsupported drbg type
|
||||
RSA_R_ALGORITHM_MISMATCH:100:algorithm mismatch
|
||||
|
@ -2,7 +2,7 @@ LIBS=../../libcrypto
|
||||
$COMMON=digest.c evp_enc.c evp_lib.c evp_fetch.c cmeth_lib.c evp_utils.c \
|
||||
mac_lib.c mac_meth.c keymgmt_meth.c keymgmt_lib.c kdf_lib.c kdf_meth.c \
|
||||
m_sigver.c pmeth_lib.c signature.c p_lib.c pmeth_gn.c exchange.c \
|
||||
pmeth_check.c
|
||||
pmeth_check.c rand_meth.c
|
||||
|
||||
SOURCE[../../libcrypto]=$COMMON\
|
||||
encode.c evp_key.c evp_cnf.c \
|
||||
|
@ -70,6 +70,7 @@ static const ERR_STRING_DATA EVP_str_reasons[] = {
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_FINAL_ERROR), "final error"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_FIPS_MODE_NOT_SUPPORTED),
|
||||
"fips mode not supported"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_GENERATE_ERROR), "generate error"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_GET_RAW_KEY_FAILED), "get raw key failed"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_ILLEGAL_SCRYPT_PARAMETERS),
|
||||
"illegal scrypt parameters"},
|
||||
@ -87,6 +88,8 @@ static const ERR_STRING_DATA EVP_str_reasons[] = {
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_IV_LENGTH), "invalid iv length"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_KEY), "invalid key"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_KEY_LENGTH), "invalid key length"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_NULL_ALGORITHM),
|
||||
"invalid null algorithm"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_OPERATION), "invalid operation"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_PROVIDER_FUNCTIONS),
|
||||
"invalid provider functions"},
|
||||
@ -96,6 +99,8 @@ static const ERR_STRING_DATA EVP_str_reasons[] = {
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_KEYMGMT_EXPORT_FAILURE),
|
||||
"keymgmt export failure"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_KEY_SETUP_FAILED), "key setup failed"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_LOCKING_NOT_SUPPORTED),
|
||||
"locking not supported"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_MEMORY_LIMIT_EXCEEDED),
|
||||
"memory limit exceeded"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_MESSAGE_DIGEST_IS_NULL),
|
||||
@ -138,6 +143,16 @@ static const ERR_STRING_DATA EVP_str_reasons[] = {
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_SET_DEFAULT_PROPERTY_FAILURE),
|
||||
"set default property failure"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_TOO_MANY_RECORDS), "too many records"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_UNABLE_TO_ENABLE_PARENT_LOCKING),
|
||||
"unable to enable parent locking"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_UNABLE_TO_GET_MAXIMUM_REQUEST_SIZE),
|
||||
"unable to get maximum request size"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_UNABLE_TO_GET_RANDOM_STRENGTH),
|
||||
"unable to get random strength"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_UNABLE_TO_LOCK_CONTEXT),
|
||||
"unable to lock context"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_UNABLE_TO_SET_CALLBACKS),
|
||||
"unable to set callbacks"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_UNKNOWN_CIPHER), "unknown cipher"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_UNKNOWN_DIGEST), "unknown digest"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_UNKNOWN_KEY_TYPE), "unknown key type"},
|
||||
|
@ -10,6 +10,7 @@
|
||||
/* EVP_MD_CTX related stuff */
|
||||
|
||||
#include <openssl/core_numbers.h>
|
||||
#include "internal/refcount.h"
|
||||
|
||||
#define EVP_CTRL_RET_UNSUPPORTED -1
|
||||
|
||||
@ -65,6 +66,41 @@ struct evp_kdf_ctx_st {
|
||||
void *data; /* Algorithm-specific data */
|
||||
} /* EVP_KDF_CTX */ ;
|
||||
|
||||
struct evp_rand_ctx_st {
|
||||
EVP_RAND *meth; /* Method structure */
|
||||
void *data; /* Algorithm-specific data */
|
||||
EVP_RAND_CTX *parent; /* Parent seed source */
|
||||
size_t max_request; /* Cached: maximum number of bytes generated */
|
||||
unsigned int strength; /* Cache: bit strenght of generator */
|
||||
} /* EVP_RAND_CTX */ ;
|
||||
|
||||
struct evp_rand_st {
|
||||
OSSL_PROVIDER *prov;
|
||||
int name_id;
|
||||
CRYPTO_REF_COUNT refcnt;
|
||||
CRYPTO_RWLOCK *lock;
|
||||
|
||||
const OSSL_DISPATCH *dispatch;
|
||||
OSSL_OP_rand_newctx_fn *newctx;
|
||||
OSSL_OP_rand_freectx_fn *freectx;
|
||||
OSSL_OP_rand_instantiate_fn *instantiate;
|
||||
OSSL_OP_rand_uninstantiate_fn *uninstantiate;
|
||||
OSSL_OP_rand_generate_fn *generate;
|
||||
OSSL_OP_rand_reseed_fn *reseed;
|
||||
OSSL_OP_rand_nonce_fn *nonce;
|
||||
OSSL_OP_rand_set_callbacks_fn *set_callbacks;
|
||||
OSSL_OP_rand_enable_locking_fn *enable_prov_locking;
|
||||
OSSL_OP_rand_lock_fn *prov_lock;
|
||||
OSSL_OP_rand_unlock_fn *prov_unlock;
|
||||
OSSL_OP_rand_gettable_params_fn *gettable_params;
|
||||
OSSL_OP_rand_gettable_ctx_params_fn *gettable_ctx_params;
|
||||
OSSL_OP_rand_settable_ctx_params_fn *settable_ctx_params;
|
||||
OSSL_OP_rand_get_params_fn *get_params;
|
||||
OSSL_OP_rand_get_ctx_params_fn *get_ctx_params;
|
||||
OSSL_OP_rand_set_ctx_params_fn *set_ctx_params;
|
||||
OSSL_OP_rand_verify_zeroization_fn *verify_zeroization;
|
||||
} /* EVP_RAND */ ;
|
||||
|
||||
struct evp_keymgmt_st {
|
||||
int id; /* libcrypto internal */
|
||||
|
||||
|
384
crypto/evp/rand_meth.c
Normal file
384
crypto/evp/rand_meth.c
Normal file
@ -0,0 +1,384 @@
|
||||
/*
|
||||
* Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include <openssl/evp.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "internal/cryptlib.h"
|
||||
#include <openssl/engine.h>
|
||||
#include <openssl/evp.h>
|
||||
#include <openssl/x509v3.h>
|
||||
#include <openssl/rand.h>
|
||||
#include <openssl/core.h>
|
||||
#include <openssl/core_names.h>
|
||||
#include <openssl/crypto.h>
|
||||
#include "crypto/asn1.h"
|
||||
#include "crypto/evp.h"
|
||||
#include "internal/numbers.h"
|
||||
#include "internal/provider.h"
|
||||
#include "evp_local.h"
|
||||
|
||||
static int evp_rand_up_ref(void *vrand)
|
||||
{
|
||||
EVP_RAND *rand = (EVP_RAND *)vrand;
|
||||
int ref = 0;
|
||||
|
||||
if (rand != NULL)
|
||||
return CRYPTO_UP_REF(&rand->refcnt, &ref, rand->lock);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void evp_rand_free(void *vrand){
|
||||
EVP_RAND *rand = (EVP_RAND *)vrand;
|
||||
int ref = 0;
|
||||
|
||||
if (rand != NULL) {
|
||||
CRYPTO_DOWN_REF(&rand->refcnt, &ref, rand->lock);
|
||||
if (ref <= 0) {
|
||||
ossl_provider_free(rand->prov);
|
||||
CRYPTO_THREAD_lock_free(rand->lock);
|
||||
OPENSSL_free(rand);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void *evp_rand_new(void)
|
||||
{
|
||||
EVP_RAND *rand = NULL;
|
||||
|
||||
if ((rand = OPENSSL_zalloc(sizeof(*rand))) == NULL
|
||||
|| (rand->lock = CRYPTO_THREAD_lock_new()) == NULL) {
|
||||
evp_rand_free(rand);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
rand->refcnt = 1;
|
||||
|
||||
return rand;
|
||||
}
|
||||
|
||||
static void *evp_rand_from_dispatch(int name_id,
|
||||
const OSSL_DISPATCH *fns,
|
||||
OSSL_PROVIDER *prov)
|
||||
{
|
||||
EVP_RAND *rand = NULL;
|
||||
int fnrandcnt = 0, fnctxcnt = 0;
|
||||
|
||||
if ((rand = evp_rand_new()) == NULL) {
|
||||
EVPerr(0, ERR_R_MALLOC_FAILURE);
|
||||
return NULL;
|
||||
}
|
||||
rand->name_id = name_id;
|
||||
rand->dispatch = fns;
|
||||
for (; fns->function_id != 0; fns++) {
|
||||
switch (fns->function_id) {
|
||||
case OSSL_FUNC_RAND_NEWCTX:
|
||||
if (rand->newctx != NULL)
|
||||
break;
|
||||
rand->newctx = OSSL_get_OP_rand_newctx(fns);
|
||||
fnctxcnt++;
|
||||
break;
|
||||
case OSSL_FUNC_RAND_FREECTX:
|
||||
if (rand->freectx != NULL)
|
||||
break;
|
||||
rand->freectx = OSSL_get_OP_rand_freectx(fns);
|
||||
fnctxcnt++;
|
||||
break;
|
||||
case OSSL_FUNC_RAND_INSTANTIATE:
|
||||
if (rand->instantiate != NULL)
|
||||
break;
|
||||
rand->instantiate = OSSL_get_OP_rand_instantiate(fns);
|
||||
fnrandcnt++;
|
||||
break;
|
||||
case OSSL_FUNC_RAND_UNINSTANTIATE:
|
||||
if (rand->uninstantiate != NULL)
|
||||
break;
|
||||
rand->uninstantiate = OSSL_get_OP_rand_uninstantiate(fns);
|
||||
fnrandcnt++;
|
||||
break;
|
||||
case OSSL_FUNC_RAND_GENERATE:
|
||||
if (rand->generate != NULL)
|
||||
break;
|
||||
rand->generate = OSSL_get_OP_rand_generate(fns);
|
||||
fnrandcnt++;
|
||||
break;
|
||||
case OSSL_FUNC_RAND_RESEED:
|
||||
if (rand->reseed != NULL)
|
||||
break;
|
||||
rand->reseed = OSSL_get_OP_rand_reseed(fns);
|
||||
break;
|
||||
case OSSL_FUNC_RAND_NONCE:
|
||||
if (rand->nonce != NULL)
|
||||
break;
|
||||
rand->nonce = OSSL_get_OP_rand_nonce(fns);
|
||||
break;
|
||||
case OSSL_FUNC_RAND_SET_CALLBACKS:
|
||||
if (rand->set_callbacks != NULL)
|
||||
break;
|
||||
rand->set_callbacks = OSSL_get_OP_rand_set_callbacks(fns);
|
||||
break;
|
||||
case OSSL_FUNC_RAND_ENABLE_LOCKING:
|
||||
if (rand->enable_prov_locking != NULL)
|
||||
break;
|
||||
rand->enable_prov_locking = OSSL_get_OP_rand_enable_locking(fns);
|
||||
break;
|
||||
case OSSL_FUNC_RAND_LOCK:
|
||||
if (rand->prov_lock != NULL)
|
||||
break;
|
||||
rand->prov_lock = OSSL_get_OP_rand_lock(fns);
|
||||
break;
|
||||
case OSSL_FUNC_RAND_UNLOCK:
|
||||
if (rand->prov_unlock != NULL)
|
||||
break;
|
||||
rand->prov_unlock = OSSL_get_OP_rand_unlock(fns);
|
||||
break;
|
||||
case OSSL_FUNC_RAND_GETTABLE_PARAMS:
|
||||
if (rand->gettable_params != NULL)
|
||||
break;
|
||||
rand->gettable_params =
|
||||
OSSL_get_OP_rand_gettable_params(fns);
|
||||
break;
|
||||
case OSSL_FUNC_RAND_GETTABLE_CTX_PARAMS:
|
||||
if (rand->gettable_ctx_params != NULL)
|
||||
break;
|
||||
rand->gettable_ctx_params =
|
||||
OSSL_get_OP_rand_gettable_ctx_params(fns);
|
||||
break;
|
||||
case OSSL_FUNC_RAND_SETTABLE_CTX_PARAMS:
|
||||
if (rand->settable_ctx_params != NULL)
|
||||
break;
|
||||
rand->settable_ctx_params =
|
||||
OSSL_get_OP_rand_settable_ctx_params(fns);
|
||||
break;
|
||||
case OSSL_FUNC_RAND_GET_PARAMS:
|
||||
if (rand->get_params != NULL)
|
||||
break;
|
||||
rand->get_params = OSSL_get_OP_rand_get_params(fns);
|
||||
break;
|
||||
case OSSL_FUNC_RAND_GET_CTX_PARAMS:
|
||||
if (rand->get_ctx_params != NULL)
|
||||
break;
|
||||
rand->get_ctx_params = OSSL_get_OP_rand_get_ctx_params(fns);
|
||||
break;
|
||||
case OSSL_FUNC_RAND_SET_CTX_PARAMS:
|
||||
if (rand->set_ctx_params != NULL)
|
||||
break;
|
||||
rand->set_ctx_params = OSSL_get_OP_rand_set_ctx_params(fns);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (fnrandcnt != 3 || fnctxcnt != 2) {
|
||||
/*
|
||||
* In order to be a consistent set of functions we must have at least
|
||||
* a complete set of "rand" functions and a complete set of context
|
||||
* management functions.
|
||||
*/
|
||||
evp_rand_free(rand);
|
||||
ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_PROVIDER_FUNCTIONS);
|
||||
return NULL;
|
||||
}
|
||||
rand->prov = prov;
|
||||
if (prov != NULL)
|
||||
ossl_provider_up_ref(prov);
|
||||
|
||||
return rand;
|
||||
}
|
||||
|
||||
EVP_RAND *EVP_RAND_fetch(OPENSSL_CTX *libctx, const char *algorithm,
|
||||
const char *properties)
|
||||
{
|
||||
return evp_generic_fetch(libctx, OSSL_OP_RAND, algorithm, properties,
|
||||
evp_rand_from_dispatch, evp_rand_up_ref,
|
||||
evp_rand_free);
|
||||
}
|
||||
|
||||
int EVP_RAND_up_ref(EVP_RAND *rand)
|
||||
{
|
||||
return evp_rand_up_ref(rand);
|
||||
}
|
||||
|
||||
void EVP_RAND_free(EVP_RAND *rand)
|
||||
{
|
||||
evp_rand_free(rand);
|
||||
}
|
||||
|
||||
int EVP_RAND_number(const EVP_RAND *rand)
|
||||
{
|
||||
return rand->name_id;
|
||||
}
|
||||
|
||||
const char *EVP_RAND_name(const EVP_RAND *rand)
|
||||
{
|
||||
return evp_first_name(rand->prov, rand->name_id);
|
||||
}
|
||||
|
||||
int EVP_RAND_is_a(const EVP_RAND *rand, const char *name)
|
||||
{
|
||||
return evp_is_a(rand->prov, rand->name_id, NULL, name);
|
||||
}
|
||||
|
||||
const OSSL_PROVIDER *EVP_RAND_provider(const EVP_RAND *rand)
|
||||
{
|
||||
return rand->prov;
|
||||
}
|
||||
|
||||
int EVP_RAND_get_params(EVP_RAND *rand, OSSL_PARAM params[])
|
||||
{
|
||||
if (rand->get_params != NULL)
|
||||
return rand->get_params(params);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EVP_RAND_CTX *EVP_RAND_CTX_new(EVP_RAND *rand, int secure, unsigned int df,
|
||||
EVP_RAND_CTX *parent)
|
||||
{
|
||||
EVP_RAND_CTX *ctx;
|
||||
void *parent_ctx = NULL;
|
||||
const OSSL_DISPATCH *parent_dispatch = NULL;
|
||||
|
||||
if (rand == NULL)
|
||||
return NULL;
|
||||
|
||||
ctx = OPENSSL_zalloc(sizeof(EVP_RAND_CTX));
|
||||
if (ctx == NULL)
|
||||
return NULL;
|
||||
if (parent != NULL) {
|
||||
parent_ctx = parent->data;
|
||||
parent_dispatch = parent->meth->dispatch;
|
||||
}
|
||||
if ((ctx->data = rand->newctx(ossl_provider_ctx(rand->prov), secure, df,
|
||||
parent_ctx, parent_dispatch)) == NULL
|
||||
|| !EVP_RAND_up_ref(rand)) {
|
||||
EVPerr(0, ERR_R_MALLOC_FAILURE);
|
||||
rand->freectx(ctx->data);
|
||||
OPENSSL_free(ctx);
|
||||
return NULL;
|
||||
}
|
||||
ctx->meth = rand;
|
||||
return ctx;
|
||||
}
|
||||
|
||||
void EVP_RAND_CTX_free(EVP_RAND_CTX *ctx)
|
||||
{
|
||||
if (ctx != NULL) {
|
||||
ctx->meth->freectx(ctx->data);
|
||||
ctx->data = NULL;
|
||||
EVP_RAND_CTX_free(ctx->parent);
|
||||
EVP_RAND_free(ctx->meth);
|
||||
OPENSSL_free(ctx);
|
||||
}
|
||||
}
|
||||
|
||||
EVP_RAND *EVP_RAND_CTX_rand(EVP_RAND_CTX *ctx)
|
||||
{
|
||||
return ctx->meth;
|
||||
}
|
||||
|
||||
int EVP_RAND_CTX_get_params(EVP_RAND_CTX *ctx, OSSL_PARAM params[])
|
||||
{
|
||||
if (ctx->meth->get_ctx_params != NULL)
|
||||
return ctx->meth->get_ctx_params(ctx->data, params);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int EVP_RAND_CTX_set_params(EVP_RAND_CTX *ctx, const OSSL_PARAM params[])
|
||||
{
|
||||
if (ctx->meth->set_ctx_params != NULL)
|
||||
return ctx->meth->set_ctx_params(ctx->data, params);
|
||||
return 1;
|
||||
}
|
||||
|
||||
const OSSL_PARAM *EVP_RAND_gettable_params(const EVP_RAND *rand)
|
||||
{
|
||||
if (rand->gettable_params == NULL)
|
||||
return NULL;
|
||||
return rand->gettable_params();
|
||||
}
|
||||
|
||||
const OSSL_PARAM *EVP_RAND_gettable_ctx_params(const EVP_RAND *rand)
|
||||
{
|
||||
if (rand->gettable_ctx_params == NULL)
|
||||
return NULL;
|
||||
return rand->gettable_ctx_params();
|
||||
}
|
||||
|
||||
const OSSL_PARAM *EVP_RAND_settable_ctx_params(const EVP_RAND *rand)
|
||||
{
|
||||
if (rand->settable_ctx_params == NULL)
|
||||
return NULL;
|
||||
return rand->settable_ctx_params();
|
||||
}
|
||||
|
||||
void EVP_RAND_do_all_provided(OPENSSL_CTX *libctx,
|
||||
void (*fn)(EVP_RAND *rand, void *arg),
|
||||
void *arg)
|
||||
{
|
||||
evp_generic_do_all(libctx, OSSL_OP_RAND,
|
||||
(void (*)(void *, void *))fn, arg,
|
||||
evp_rand_from_dispatch, evp_rand_free);
|
||||
}
|
||||
|
||||
void EVP_RAND_names_do_all(const EVP_RAND *rand,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data)
|
||||
{
|
||||
if (rand->prov != NULL)
|
||||
evp_names_do_all(rand->prov, rand->name_id, fn, data);
|
||||
}
|
||||
|
||||
int EVP_RAND_CTX_instantiate(EVP_RAND_CTX *ctx, int strength,
|
||||
int prediction_resistance,
|
||||
const unsigned char *pstr, size_t pstr_len)
|
||||
{
|
||||
return ctx->meth->instantiate(ctx->data, strength, prediction_resistance,
|
||||
pstr, pstr_len);
|
||||
}
|
||||
|
||||
int EVP_RAND_CTX_uninstantiate(EVP_RAND_CTX *ctx)
|
||||
{
|
||||
return ctx->meth->uninstantiate(ctx->data);
|
||||
}
|
||||
|
||||
int EVP_RAND_CTX_generate(EVP_RAND_CTX *ctx, unsigned char *out, size_t outlen,
|
||||
int strength, int prediction_resistance,
|
||||
const unsigned char *addin, size_t addin_len)
|
||||
{
|
||||
return ctx->meth->generate(ctx->data, out, outlen, strength,
|
||||
prediction_resistance, addin, addin_len);
|
||||
}
|
||||
|
||||
int EVP_RAND_CTX_reseed(EVP_RAND_CTX *ctx, int prediction_resistance,
|
||||
const unsigned char *addin, size_t addin_len)
|
||||
{
|
||||
if (ctx->meth->reseed == NULL)
|
||||
return 1;
|
||||
return ctx->meth->reseed(ctx->data, prediction_resistance,
|
||||
addin, addin_len);
|
||||
}
|
||||
|
||||
int EVP_RAND_CTX_nonce(EVP_RAND_CTX *ctx, unsigned char *out, size_t outlen)
|
||||
{
|
||||
if (ctx->meth->nonce != NULL)
|
||||
return ctx->meth->nonce(ctx->data, out, outlen);
|
||||
return ctx->meth->generate(ctx->data, out, outlen, 0, 0, NULL, 0);
|
||||
}
|
||||
|
||||
int EVP_RAND_CTX_set_callbacks(const EVP_RAND_CTX *ctx,
|
||||
OSSL_CALLBACK *get_entropy,
|
||||
OSSL_CALLBACK *cleanup_entropy,
|
||||
OSSL_CALLBACK *get_nonce,
|
||||
OSSL_CALLBACK *cleanup_nonce)
|
||||
{
|
||||
if (ctx->meth->set_callbacks == NULL)
|
||||
return 0;
|
||||
return ctx->meth->set_callbacks(ctx->data, get_entropy, cleanup_entropy,
|
||||
get_nonce, cleanup_nonce);
|
||||
}
|
||||
|
@ -49,6 +49,8 @@ static const ERR_STRING_DATA RAND_str_reasons[] = {
|
||||
"Function not implemented"},
|
||||
{ERR_PACK(ERR_LIB_RAND, 0, RAND_R_FWRITE_ERROR), "Error writing file"},
|
||||
{ERR_PACK(ERR_LIB_RAND, 0, RAND_R_GENERATE_ERROR), "generate error"},
|
||||
{ERR_PACK(ERR_LIB_RAND, 0, RAND_R_INSUFFICIENT_DRBG_STRENGTH),
|
||||
"insufficient drbg strength"},
|
||||
{ERR_PACK(ERR_LIB_RAND, 0, RAND_R_INTERNAL_ERROR), "internal error"},
|
||||
{ERR_PACK(ERR_LIB_RAND, 0, RAND_R_IN_ERROR_STATE), "in error state"},
|
||||
{ERR_PACK(ERR_LIB_RAND, 0, RAND_R_NOT_A_REGULAR_FILE),
|
||||
@ -77,6 +79,14 @@ static const ERR_STRING_DATA RAND_str_reasons[] = {
|
||||
"too little nonce requested"},
|
||||
{ERR_PACK(ERR_LIB_RAND, 0, RAND_R_TOO_MUCH_NONCE_REQUESTED),
|
||||
"too much nonce requested"},
|
||||
{ERR_PACK(ERR_LIB_RAND, 0, RAND_R_UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER),
|
||||
"unable to get parent reseed prop counter"},
|
||||
{ERR_PACK(ERR_LIB_RAND, 0, RAND_R_UNABLE_TO_GET_PARENT_STRENGTH),
|
||||
"unable to get parent strength"},
|
||||
{ERR_PACK(ERR_LIB_RAND, 0, RAND_R_UNABLE_TO_GET_RESEED_PROP_CTR),
|
||||
"unable to get reseed prop ctr"},
|
||||
{ERR_PACK(ERR_LIB_RAND, 0, RAND_R_UNABLE_TO_LOCK_PARENT),
|
||||
"unable to lock parent"},
|
||||
{ERR_PACK(ERR_LIB_RAND, 0, RAND_R_UNSUPPORTED_DRBG_FLAGS),
|
||||
"unsupported drbg flags"},
|
||||
{ERR_PACK(ERR_LIB_RAND, 0, RAND_R_UNSUPPORTED_DRBG_TYPE),
|
||||
|
@ -178,6 +178,7 @@ OSSL_CORE_MAKE_FUNC(int, provider_get_capabilities, (void *provctx,
|
||||
# define OSSL_OP_CIPHER 2 /* Symmetric Ciphers */
|
||||
# define OSSL_OP_MAC 3
|
||||
# define OSSL_OP_KDF 4
|
||||
# define OSSL_OP_RAND 5
|
||||
# define OSSL_OP_KEYMGMT 10
|
||||
# define OSSL_OP_KEYEXCH 11
|
||||
# define OSSL_OP_SIGNATURE 12
|
||||
@ -339,6 +340,59 @@ OSSL_CORE_MAKE_FUNC(int, OP_kdf_get_ctx_params,
|
||||
OSSL_CORE_MAKE_FUNC(int, OP_kdf_set_ctx_params,
|
||||
(void *kctx, const OSSL_PARAM params[]))
|
||||
|
||||
/* RAND */
|
||||
|
||||
# define OSSL_FUNC_RAND_NEWCTX 1
|
||||
# define OSSL_FUNC_RAND_FREECTX 2
|
||||
# define OSSL_FUNC_RAND_INSTANTIATE 3
|
||||
# define OSSL_FUNC_RAND_UNINSTANTIATE 4
|
||||
# define OSSL_FUNC_RAND_GENERATE 5
|
||||
# define OSSL_FUNC_RAND_RESEED 6
|
||||
# define OSSL_FUNC_RAND_NONCE 7
|
||||
# define OSSL_FUNC_RAND_ENABLE_LOCKING 8
|
||||
# define OSSL_FUNC_RAND_LOCK 9
|
||||
# define OSSL_FUNC_RAND_UNLOCK 10
|
||||
# define OSSL_FUNC_RAND_GETTABLE_PARAMS 11
|
||||
# define OSSL_FUNC_RAND_GETTABLE_CTX_PARAMS 12
|
||||
# define OSSL_FUNC_RAND_SETTABLE_CTX_PARAMS 13
|
||||
# define OSSL_FUNC_RAND_GET_PARAMS 14
|
||||
# define OSSL_FUNC_RAND_GET_CTX_PARAMS 15
|
||||
# define OSSL_FUNC_RAND_SET_CTX_PARAMS 16
|
||||
# define OSSL_FUNC_RAND_SET_CALLBACKS 17
|
||||
|
||||
OSSL_CORE_MAKE_FUNC(void *, OP_rand_newctx,
|
||||
(void *provctx, int secure, unsigned int df, void *parent,
|
||||
const OSSL_DISPATCH *parent_calls))
|
||||
OSSL_CORE_MAKE_FUNC(void, OP_rand_freectx, (void *vctx))
|
||||
OSSL_CORE_MAKE_FUNC(int, OP_rand_instantiate,
|
||||
(void *vdrbg, int strength, int prediction_resistance,
|
||||
const unsigned char *pstr, size_t pstr_len))
|
||||
OSSL_CORE_MAKE_FUNC(int, OP_rand_uninstantiate, (void *vdrbg))
|
||||
OSSL_CORE_MAKE_FUNC(int, OP_rand_generate,
|
||||
(void *vctx, unsigned char *out, size_t outlen,
|
||||
int strength, int prediction_resistance,
|
||||
const unsigned char *addin, size_t addin_len))
|
||||
OSSL_CORE_MAKE_FUNC(int, OP_rand_reseed,
|
||||
(void *vctx, int prediction_resistance,
|
||||
const unsigned char *addin, size_t addin_len))
|
||||
OSSL_CORE_MAKE_FUNC(int, OP_rand_nonce,
|
||||
(void *vctx, unsigned char *out, size_t outlen))
|
||||
OSSL_CORE_MAKE_FUNC(int, OP_rand_set_callbacks,
|
||||
(void *vctx,
|
||||
OSSL_CALLBACK *get_entropy, OSSL_CALLBACK *cleanup_entropy,
|
||||
OSSL_CALLBACK *get_nonce, OSSL_CALLBACK *cleanup_nonce))
|
||||
OSSL_CORE_MAKE_FUNC(int, OP_rand_enable_locking, (void *vctx))
|
||||
OSSL_CORE_MAKE_FUNC(int, OP_rand_lock, (void *vctx))
|
||||
OSSL_CORE_MAKE_FUNC(void, OP_rand_unlock, (void *vctx))
|
||||
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, OP_rand_gettable_params, (void))
|
||||
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, OP_rand_gettable_ctx_params, (void))
|
||||
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, OP_rand_settable_ctx_params, (void))
|
||||
OSSL_CORE_MAKE_FUNC(int, OP_rand_get_params, (OSSL_PARAM params[]))
|
||||
OSSL_CORE_MAKE_FUNC(int, OP_rand_get_ctx_params,
|
||||
(void *vctx, OSSL_PARAM params[]))
|
||||
OSSL_CORE_MAKE_FUNC(int, OP_rand_set_ctx_params,
|
||||
(void *vctx, const OSSL_PARAM params[]))
|
||||
|
||||
/*-
|
||||
* Key management
|
||||
*
|
||||
|
@ -1071,6 +1071,50 @@ void EVP_MD_do_all_provided(OPENSSL_CTX *libctx,
|
||||
void (*fn)(EVP_MD *md, void *arg),
|
||||
void *arg);
|
||||
|
||||
/* RAND stuff */
|
||||
EVP_RAND *EVP_RAND_fetch(OPENSSL_CTX *libctx, const char *algorithm,
|
||||
const char *properties);
|
||||
int EVP_RAND_up_ref(EVP_RAND *rand);
|
||||
void EVP_RAND_free(EVP_RAND *rand);
|
||||
int EVP_RAND_number(const EVP_RAND *rand);
|
||||
const char *EVP_RAND_name(const EVP_RAND *rand);
|
||||
int EVP_RAND_is_a(const EVP_RAND *rand, const char *name);
|
||||
const OSSL_PROVIDER *EVP_RAND_provider(const EVP_RAND *rand);
|
||||
int EVP_RAND_get_params(EVP_RAND *rand, OSSL_PARAM params[]);
|
||||
|
||||
EVP_RAND_CTX *EVP_RAND_CTX_new(EVP_RAND *rand, int secure, unsigned int df,
|
||||
EVP_RAND_CTX *parent);
|
||||
void EVP_RAND_CTX_free(EVP_RAND_CTX *ctx);
|
||||
EVP_RAND *EVP_RAND_CTX_rand(EVP_RAND_CTX *ctx);
|
||||
int EVP_RAND_CTX_get_params(EVP_RAND_CTX *ctx, OSSL_PARAM params[]);
|
||||
int EVP_RAND_CTX_set_params(EVP_RAND_CTX *ctx, const OSSL_PARAM params[]);
|
||||
const OSSL_PARAM *EVP_RAND_gettable_params(const EVP_RAND *rand);
|
||||
const OSSL_PARAM *EVP_RAND_gettable_ctx_params(const EVP_RAND *rand);
|
||||
const OSSL_PARAM *EVP_RAND_settable_ctx_params(const EVP_RAND *rand);
|
||||
|
||||
void EVP_RAND_do_all_provided(OPENSSL_CTX *libctx,
|
||||
void (*fn)(EVP_RAND *rand, void *arg),
|
||||
void *arg);
|
||||
void EVP_RAND_names_do_all(const EVP_RAND *rand,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
|
||||
int EVP_RAND_CTX_instantiate(EVP_RAND_CTX *ctx, int strength,
|
||||
int prediction_resistance,
|
||||
const unsigned char *pstr, size_t pstr_len);
|
||||
int EVP_RAND_CTX_uninstantiate(EVP_RAND_CTX *ctx);
|
||||
int EVP_RAND_CTX_generate(EVP_RAND_CTX *ctx, unsigned char *out, size_t outlen,
|
||||
int strength, int prediction_resistance,
|
||||
const unsigned char *addin, size_t addin_len);
|
||||
int EVP_RAND_CTX_reseed(EVP_RAND_CTX *ctx, int prediction_resistance,
|
||||
const unsigned char *addin, size_t addin_len);
|
||||
int EVP_RAND_CTX_nonce(EVP_RAND_CTX *ctx, unsigned char *out, size_t outlen);
|
||||
int EVP_RAND_CTX_set_callbacks(const EVP_RAND_CTX *rand,
|
||||
OSSL_CALLBACK *get_entropy,
|
||||
OSSL_CALLBACK *cleanup_entropy,
|
||||
OSSL_CALLBACK *get_nonce,
|
||||
OSSL_CALLBACK *cleanup_nonce);
|
||||
|
||||
/* PKEY stuff */
|
||||
DEPRECATEDIN_3_0(int EVP_PKEY_decrypt_old(unsigned char *dec_key,
|
||||
const unsigned char *enc_key,
|
||||
|
@ -191,6 +191,7 @@ int ERR_load_EVP_strings(void);
|
||||
# define EVP_R_FETCH_FAILED 202
|
||||
# define EVP_R_FINAL_ERROR 188
|
||||
# define EVP_R_FIPS_MODE_NOT_SUPPORTED 167
|
||||
# define EVP_R_GENERATE_ERROR 214
|
||||
# define EVP_R_GET_RAW_KEY_FAILED 182
|
||||
# define EVP_R_ILLEGAL_SCRYPT_PARAMETERS 171
|
||||
# define EVP_R_INACCESSIBLE_DOMAIN_PARAMETERS 204
|
||||
@ -203,12 +204,14 @@ int ERR_load_EVP_strings(void);
|
||||
# define EVP_R_INVALID_IV_LENGTH 194
|
||||
# define EVP_R_INVALID_KEY 163
|
||||
# define EVP_R_INVALID_KEY_LENGTH 130
|
||||
# define EVP_R_INVALID_NULL_ALGORITHM 218
|
||||
# define EVP_R_INVALID_OPERATION 148
|
||||
# define EVP_R_INVALID_PROVIDER_FUNCTIONS 193
|
||||
# define EVP_R_INVALID_SALT_LENGTH 186
|
||||
# define EVP_R_KEYGEN_FAILURE 120
|
||||
# define EVP_R_KEYMGMT_EXPORT_FAILURE 205
|
||||
# define EVP_R_KEY_SETUP_FAILED 180
|
||||
# define EVP_R_LOCKING_NOT_SUPPORTED 213
|
||||
# define EVP_R_MEMORY_LIMIT_EXCEEDED 172
|
||||
# define EVP_R_MESSAGE_DIGEST_IS_NULL 159
|
||||
# define EVP_R_METHOD_NOT_SUPPORTED 144
|
||||
@ -236,6 +239,11 @@ int ERR_load_EVP_strings(void);
|
||||
# define EVP_R_PUBLIC_KEY_NOT_RSA 106
|
||||
# define EVP_R_SET_DEFAULT_PROPERTY_FAILURE 209
|
||||
# define EVP_R_TOO_MANY_RECORDS 183
|
||||
# define EVP_R_UNABLE_TO_ENABLE_PARENT_LOCKING 212
|
||||
# define EVP_R_UNABLE_TO_GET_MAXIMUM_REQUEST_SIZE 215
|
||||
# define EVP_R_UNABLE_TO_GET_RANDOM_STRENGTH 216
|
||||
# define EVP_R_UNABLE_TO_LOCK_CONTEXT 211
|
||||
# define EVP_R_UNABLE_TO_SET_CALLBACKS 217
|
||||
# define EVP_R_UNKNOWN_CIPHER 160
|
||||
# define EVP_R_UNKNOWN_DIGEST 161
|
||||
# define EVP_R_UNKNOWN_KEY_TYPE 207
|
||||
|
@ -36,6 +36,7 @@ int ERR_load_RAND_strings(void);
|
||||
# define RAND_F_RAND_DRBG_GENERATE 0
|
||||
# define RAND_F_RAND_DRBG_GET_ENTROPY 0
|
||||
# define RAND_F_RAND_DRBG_GET_NONCE 0
|
||||
# define RAND_F_RAND_DRBG_INIT_METHOD 0
|
||||
# define RAND_F_RAND_DRBG_INSTANTIATE 0
|
||||
# define RAND_F_RAND_DRBG_NEW 0
|
||||
# define RAND_F_RAND_DRBG_RESEED 0
|
||||
@ -79,6 +80,7 @@ int ERR_load_RAND_strings(void);
|
||||
# define RAND_R_FUNC_NOT_IMPLEMENTED 101
|
||||
# define RAND_R_FWRITE_ERROR 123
|
||||
# define RAND_R_GENERATE_ERROR 112
|
||||
# define RAND_R_INSUFFICIENT_DRBG_STRENGTH 139
|
||||
# define RAND_R_INTERNAL_ERROR 113
|
||||
# define RAND_R_IN_ERROR_STATE 114
|
||||
# define RAND_R_NOT_A_REGULAR_FILE 122
|
||||
@ -96,6 +98,10 @@ int ERR_load_RAND_strings(void);
|
||||
# define RAND_R_SELFTEST_FAILURE 119
|
||||
# define RAND_R_TOO_LITTLE_NONCE_REQUESTED 135
|
||||
# define RAND_R_TOO_MUCH_NONCE_REQUESTED 136
|
||||
# define RAND_R_UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER 141
|
||||
# define RAND_R_UNABLE_TO_GET_PARENT_STRENGTH 138
|
||||
# define RAND_R_UNABLE_TO_GET_RESEED_PROP_CTR 142
|
||||
# define RAND_R_UNABLE_TO_LOCK_PARENT 140
|
||||
# define RAND_R_UNSUPPORTED_DRBG_FLAGS 132
|
||||
# define RAND_R_UNSUPPORTED_DRBG_TYPE 120
|
||||
|
||||
|
@ -114,6 +114,9 @@ typedef struct evp_keymgmt_st EVP_KEYMGMT;
|
||||
typedef struct evp_kdf_st EVP_KDF;
|
||||
typedef struct evp_kdf_ctx_st EVP_KDF_CTX;
|
||||
|
||||
typedef struct evp_rand_st EVP_RAND;
|
||||
typedef struct evp_rand_ctx_st EVP_RAND_CTX;
|
||||
|
||||
typedef struct evp_keyexch_st EVP_KEYEXCH;
|
||||
|
||||
typedef struct evp_signature_st EVP_SIGNATURE;
|
||||
|
@ -50,8 +50,10 @@ int ERR_load_PROV_strings(void);
|
||||
/*
|
||||
* PROV reason codes.
|
||||
*/
|
||||
# define PROV_R_ADDITIONAL_INPUT_TOO_LONG 184
|
||||
# define PROV_R_AES_KEY_SETUP_FAILED 101
|
||||
# define PROV_R_ALGORITHM_MISMATCH 173
|
||||
# define PROV_R_ALREADY_INSTANTIATED 185
|
||||
# define PROV_R_BAD_DECRYPT 100
|
||||
# define PROV_R_BAD_ENCODING 141
|
||||
# define PROV_R_BAD_LENGTH 142
|
||||
@ -59,15 +61,24 @@ int ERR_load_PROV_strings(void);
|
||||
# define PROV_R_BN_ERROR 160
|
||||
# define PROV_R_BOTH_MODE_AND_MODE_INT 127
|
||||
# define PROV_R_CIPHER_OPERATION_FAILED 102
|
||||
# define PROV_R_DERIVATION_FUNCTION_INIT_FAILED 205
|
||||
# define PROV_R_DERIVATION_FUNCTION_MANDATORY_FOR_FIPS 186
|
||||
# define PROV_R_DIGEST_NOT_ALLOWED 174
|
||||
# define PROV_R_DRBG_ALREADY_INITIALIZED 187
|
||||
# define PROV_R_ERROR_INSTANTIATING_DRBG 188
|
||||
# define PROV_R_ERROR_RETRIEVING_ENTROPY 189
|
||||
# define PROV_R_ERROR_RETRIEVING_NONCE 190
|
||||
# define PROV_R_FAILED_DURING_DERIVATION 164
|
||||
# define PROV_R_FAILED_TO_CREATE_LOCK 180
|
||||
# define PROV_R_FAILED_TO_DECRYPT 162
|
||||
# define PROV_R_FAILED_TO_GENERATE_KEY 121
|
||||
# define PROV_R_FAILED_TO_GET_PARAMETER 103
|
||||
# define PROV_R_FAILED_TO_SET_PARAMETER 104
|
||||
# define PROV_R_FAILED_TO_SIGN 175
|
||||
# define PROV_R_GENERATE_ERROR 191
|
||||
# define PROV_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 165
|
||||
# define PROV_R_INAVLID_UKM_LENGTH 146
|
||||
# define PROV_R_INSUFFICIENT_DRBG_STRENGTH 181
|
||||
# define PROV_R_INVALID_AAD 108
|
||||
# define PROV_R_INVALID_CONSTANT_LENGTH 157
|
||||
# define PROV_R_INVALID_CURVE 176
|
||||
@ -94,6 +105,7 @@ int ERR_load_PROV_strings(void);
|
||||
# define PROV_R_INVALID_TAG 110
|
||||
# define PROV_R_INVALID_TAGLEN 118
|
||||
# define PROV_R_INVALID_X931_DIGEST 170
|
||||
# define PROV_R_IN_ERROR_STATE 192
|
||||
# define PROV_R_KEY_SIZE_TOO_SMALL 171
|
||||
# define PROV_R_MISSING_CEK_ALG 144
|
||||
# define PROV_R_MISSING_CIPHER 155
|
||||
@ -108,18 +120,34 @@ int ERR_load_PROV_strings(void);
|
||||
# define PROV_R_MISSING_SESSION_ID 133
|
||||
# define PROV_R_MISSING_TYPE 134
|
||||
# define PROV_R_MISSING_XCGHASH 135
|
||||
# define PROV_R_NOT_INSTANTIATED 193
|
||||
# define PROV_R_NOT_SUPPORTED 136
|
||||
# define PROV_R_NOT_XOF_OR_INVALID_LENGTH 113
|
||||
# define PROV_R_NO_KEY_SET 114
|
||||
# define PROV_R_NO_PARAMETERS_SET 177
|
||||
# define PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 178
|
||||
# define PROV_R_OUTPUT_BUFFER_TOO_SMALL 106
|
||||
# define PROV_R_PARENT_LOCKING_NOT_ENABLED 182
|
||||
# define PROV_R_PARENT_STRENGTH_TOO_WEAK 194
|
||||
# define PROV_R_PERSONALISATION_STRING_TOO_LONG 195
|
||||
# define PROV_R_PSS_SALTLEN_TOO_SMALL 172
|
||||
# define PROV_R_READ_KEY 159
|
||||
# define PROV_R_REQUEST_TOO_LARGE_FOR_DRBG 196
|
||||
# define PROV_R_REQUIRE_CTR_MODE_CIPHER 206
|
||||
# define PROV_R_RESEED_ERROR 197
|
||||
# define PROV_R_TAG_NOTSET 119
|
||||
# define PROV_R_TAG_NOT_NEEDED 120
|
||||
# define PROV_R_UNABLE_TO_FIND_CIPHERS 207
|
||||
# define PROV_R_UNABLE_TO_GET_ENTROPY 202
|
||||
# define PROV_R_UNABLE_TO_GET_NONCE 203
|
||||
# define PROV_R_UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER 198
|
||||
# define PROV_R_UNABLE_TO_GET_PARENT_STRENGTH 199
|
||||
# define PROV_R_UNABLE_TO_GET_RESEED_PROP_CTR 200
|
||||
# define PROV_R_UNABLE_TO_INITIALISE_CIPHERS 208
|
||||
# define PROV_R_UNABLE_TO_LOAD_SHA1 143
|
||||
# define PROV_R_UNABLE_TO_LOAD_SHA256 147
|
||||
# define PROV_R_UNABLE_TO_LOCK_PARENT 201
|
||||
# define PROV_R_UNABLE_TO_RESEED 204
|
||||
# define PROV_R_UNKNOWN_PADDING_TYPE 163
|
||||
# define PROV_R_UNSUPPORTED_CEK_ALG 145
|
||||
# define PROV_R_UNSUPPORTED_KEY_SIZE 153
|
||||
@ -128,6 +156,7 @@ int ERR_load_PROV_strings(void);
|
||||
# define PROV_R_VALUE_ERROR 138
|
||||
# define PROV_R_WRONG_FINAL_BLOCK_LENGTH 107
|
||||
# define PROV_R_WRONG_OUTPUT_BUFFER_SIZE 139
|
||||
# define PROV_R_XOF_DIGESTS_NOT_ALLOWED 183
|
||||
# define PROV_R_XTS_DATA_UNIT_IS_TOO_LARGE 148
|
||||
# define PROV_R_XTS_DUPLICATED_KEYS 149
|
||||
|
||||
|
@ -14,10 +14,14 @@
|
||||
#ifndef OPENSSL_NO_ERR
|
||||
|
||||
static const ERR_STRING_DATA PROV_str_reasons[] = {
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_ADDITIONAL_INPUT_TOO_LONG),
|
||||
"additional input too long"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_AES_KEY_SETUP_FAILED),
|
||||
"aes key setup failed"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_ALGORITHM_MISMATCH),
|
||||
"algorithm mismatch"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_ALREADY_INSTANTIATED),
|
||||
"already instantiated"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_BAD_DECRYPT), "bad decrypt"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_BAD_ENCODING), "bad encoding"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_BAD_LENGTH), "bad length"},
|
||||
@ -28,10 +32,24 @@ static const ERR_STRING_DATA PROV_str_reasons[] = {
|
||||
"both mode and mode int"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_CIPHER_OPERATION_FAILED),
|
||||
"cipher operation failed"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_DERIVATION_FUNCTION_INIT_FAILED),
|
||||
"derivation function init failed"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_DERIVATION_FUNCTION_MANDATORY_FOR_FIPS),
|
||||
"derivation function mandatory for fips"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_DIGEST_NOT_ALLOWED),
|
||||
"digest not allowed"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_DRBG_ALREADY_INITIALIZED),
|
||||
"drbg already initialized"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_ERROR_INSTANTIATING_DRBG),
|
||||
"error instantiating drbg"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_ERROR_RETRIEVING_ENTROPY),
|
||||
"error retrieving entropy"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_ERROR_RETRIEVING_NONCE),
|
||||
"error retrieving nonce"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_FAILED_DURING_DERIVATION),
|
||||
"failed during derivation"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_FAILED_TO_CREATE_LOCK),
|
||||
"failed to create lock"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_FAILED_TO_DECRYPT), "failed to decrypt"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_FAILED_TO_GENERATE_KEY),
|
||||
"failed to generate key"},
|
||||
@ -40,10 +58,13 @@ static const ERR_STRING_DATA PROV_str_reasons[] = {
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_FAILED_TO_SET_PARAMETER),
|
||||
"failed to set parameter"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_FAILED_TO_SIGN), "failed to sign"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_GENERATE_ERROR), "generate error"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE),
|
||||
"illegal or unsupported padding mode"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_INAVLID_UKM_LENGTH),
|
||||
"inavlid ukm length"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_INSUFFICIENT_DRBG_STRENGTH),
|
||||
"insufficient drbg strength"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_INVALID_AAD), "invalid aad"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_INVALID_CONSTANT_LENGTH),
|
||||
"invalid constant length"},
|
||||
@ -81,6 +102,7 @@ static const ERR_STRING_DATA PROV_str_reasons[] = {
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_INVALID_TAGLEN), "invalid taglen"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_INVALID_X931_DIGEST),
|
||||
"invalid x931 digest"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_IN_ERROR_STATE), "in error state"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_KEY_SIZE_TOO_SMALL),
|
||||
"key size too small"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_MISSING_CEK_ALG), "missing cek alg"},
|
||||
@ -98,6 +120,7 @@ static const ERR_STRING_DATA PROV_str_reasons[] = {
|
||||
"missing session id"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_MISSING_TYPE), "missing type"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_MISSING_XCGHASH), "missing xcghash"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_NOT_INSTANTIATED), "not instantiated"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_NOT_SUPPORTED), "not supported"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_NOT_XOF_OR_INVALID_LENGTH),
|
||||
"not xof or invalid length"},
|
||||
@ -107,15 +130,43 @@ static const ERR_STRING_DATA PROV_str_reasons[] = {
|
||||
"operation not supported for this keytype"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_OUTPUT_BUFFER_TOO_SMALL),
|
||||
"output buffer too small"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_PARENT_LOCKING_NOT_ENABLED),
|
||||
"parent locking not enabled"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_PARENT_STRENGTH_TOO_WEAK),
|
||||
"parent strength too weak"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_PERSONALISATION_STRING_TOO_LONG),
|
||||
"personalisation string too long"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_PSS_SALTLEN_TOO_SMALL),
|
||||
"pss saltlen too small"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_READ_KEY), "read key"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_REQUEST_TOO_LARGE_FOR_DRBG),
|
||||
"request too large for drbg"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_REQUIRE_CTR_MODE_CIPHER),
|
||||
"require ctr mode cipher"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_RESEED_ERROR), "reseed error"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_TAG_NOTSET), "tag notset"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_TAG_NOT_NEEDED), "tag not needed"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_UNABLE_TO_FIND_CIPHERS),
|
||||
"unable to find ciphers"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_UNABLE_TO_GET_ENTROPY),
|
||||
"unable to get entropy"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_UNABLE_TO_GET_NONCE),
|
||||
"unable to get nonce"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER),
|
||||
"unable to get parent reseed prop counter"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_UNABLE_TO_GET_PARENT_STRENGTH),
|
||||
"unable to get parent strength"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_UNABLE_TO_GET_RESEED_PROP_CTR),
|
||||
"unable to get reseed prop ctr"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_UNABLE_TO_INITIALISE_CIPHERS),
|
||||
"unable to initialise ciphers"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_UNABLE_TO_LOAD_SHA1),
|
||||
"unable to load sha1"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_UNABLE_TO_LOAD_SHA256),
|
||||
"unable to load sha256"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_UNABLE_TO_LOCK_PARENT),
|
||||
"unable to lock parent"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_UNABLE_TO_RESEED), "unable to reseed"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_UNKNOWN_PADDING_TYPE),
|
||||
"unknown padding type"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_UNSUPPORTED_CEK_ALG),
|
||||
@ -131,6 +182,8 @@ static const ERR_STRING_DATA PROV_str_reasons[] = {
|
||||
"wrong final block length"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_WRONG_OUTPUT_BUFFER_SIZE),
|
||||
"wrong output buffer size"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_XOF_DIGESTS_NOT_ALLOWED),
|
||||
"xof digests not allowed"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_XTS_DATA_UNIT_IS_TOO_LARGE),
|
||||
"xts data unit is too large"},
|
||||
{ERR_PACK(ERR_LIB_PROV, 0, PROV_R_XTS_DUPLICATED_KEYS),
|
||||
|
@ -4200,7 +4200,7 @@ OPENSSL_fork_parent 4289 3_0_0 EXIST:UNIX:FUNCTION:
|
||||
OPENSSL_fork_child 4290 3_0_0 EXIST:UNIX:FUNCTION:
|
||||
RAND_DRBG_instantiate 4292 3_0_0 EXIST::FUNCTION:
|
||||
RAND_DRBG_uninstantiate 4293 3_0_0 EXIST::FUNCTION:
|
||||
RAND_DRBG_set 4295 3_0_0 EXIST::FUNCTION:
|
||||
RAND_DRBG_set 4295 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0
|
||||
RAND_DRBG_set_callbacks 4296 3_0_0 EXIST::FUNCTION:
|
||||
RAND_DRBG_new 4297 3_0_0 EXIST::FUNCTION:
|
||||
RAND_DRBG_set_reseed_interval 4298 3_0_0 EXIST::FUNCTION:
|
||||
@ -4333,7 +4333,6 @@ EVP_sha512_256 4428 3_0_0 EXIST::FUNCTION:
|
||||
EVP_sha512_224 4429 3_0_0 EXIST::FUNCTION:
|
||||
OCSP_basic_sign_ctx 4430 3_0_0 EXIST::FUNCTION:OCSP
|
||||
RAND_DRBG_bytes 4431 3_0_0 EXIST::FUNCTION:
|
||||
RAND_DRBG_secure_new 4432 3_0_0 EXIST::FUNCTION:
|
||||
OSSL_STORE_vctrl 4433 3_0_0 EXIST::FUNCTION:
|
||||
OSSL_STORE_SEARCH_by_alias 4434 3_0_0 EXIST::FUNCTION:
|
||||
BIO_bind 4435 3_0_0 EXIST::FUNCTION:SOCK
|
||||
@ -4643,7 +4642,6 @@ ERR_load_CMP_strings ? 3_0_0 EXIST::FUNCTION:CMP
|
||||
EVP_MD_CTX_set_params ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_MD_CTX_get_params ? 3_0_0 EXIST::FUNCTION:
|
||||
RAND_DRBG_new_ex ? 3_0_0 EXIST::FUNCTION:
|
||||
RAND_DRBG_secure_new_ex ? 3_0_0 EXIST::FUNCTION:
|
||||
OPENSSL_CTX_get0_master_drbg ? 3_0_0 EXIST::FUNCTION:
|
||||
OPENSSL_CTX_get0_public_drbg ? 3_0_0 EXIST::FUNCTION:
|
||||
OPENSSL_CTX_get0_private_drbg ? 3_0_0 EXIST::FUNCTION:
|
||||
@ -5083,6 +5081,35 @@ X509_REQ_set0_signature ? 3_0_0 EXIST::FUNCTION:
|
||||
X509_REQ_set1_signature_algo ? 3_0_0 EXIST::FUNCTION:
|
||||
OSSL_PARAM_modified ? 3_0_0 EXIST::FUNCTION:
|
||||
OSSL_PARAM_set_all_unmodified ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_fetch ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_up_ref ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_free ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_number ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_name ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_is_a ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_provider ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_get_params ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_CTX_new ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_CTX_free ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_CTX_rand ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_get_ctx_params ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_set_ctx_params ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_gettable_params ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_gettable_ctx_params ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_settable_ctx_params ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_do_all_provided ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_names_do_all ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_instantiate ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_uninstantiate ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_generate ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_reseed ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_nonce ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_set_callbacks ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_enable_locking ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_verify_zeroization ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_strength ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_RAND_state ? 3_0_0 EXIST::FUNCTION:
|
||||
RAND_DRBG_verify_zeroization ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_default_properties_is_fips_enabled ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_default_properties_enable_fips ? 3_0_0 EXIST::FUNCTION:
|
||||
EVP_PKEY_new_raw_private_key_with_libctx ? 3_0_0 EXIST::FUNCTION:
|
||||
|
Loading…
x
Reference in New Issue
Block a user