/* Return true if the module is in a usable condition */
int ossl_prov_is_running(void);
+
+static ossl_inline int ossl_param_is_empty(const OSSL_PARAM params[])
+{
+ return params == NULL || params->key == NULL;
+}
# include <openssl/engine.h>
# include "crypto/evp.h"
#endif
+#include "prov/providercommon.h"
#include "prov/provider_util.h"
void ossl_prov_cipher_reset(PROV_CIPHER *pc)
const OSSL_PARAM *p;
const char *propquery;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!load_common(params, &propquery, &pc->engine))
const OSSL_PARAM *p;
const char *propquery;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!load_common(params, &propquery, &pd->engine))
if (prsactx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(prsactx, OSSL_FIPS_IND_SETTABLE0, params,
#include "crypto/sm2.h"
#include "prov/provider_ctx.h"
#include "prov/implementations.h"
+#include "prov/providercommon.h"
#include "prov/provider_util.h"
static OSSL_FUNC_asym_cipher_newctx_fn sm2_newctx;
if (psm2ctx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!ossl_prov_digest_load_from_params(&psm2ctx->md, params,
EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM mb_param;
# endif
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_CIPHER_PARAM_AEAD_MAC_KEY);
const OSSL_PARAM *p;
unsigned int speed = 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_CIPHER_PARAM_AEAD_TAG);
const OSSL_PARAM *p;
size_t sz;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_CIPHER_PARAM_AEAD_TAG);
const OSSL_PARAM *p;
unsigned int speed = 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_CIPHER_PARAM_AEAD_TAG);
const OSSL_PARAM *p;
size_t keylen = 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_CIPHER_PARAM_KEYLEN);
PROV_CIPHER_CTX *ctx = (PROV_CIPHER_CTX *)vctx;
const OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_CIPHER_PARAM_KEYLEN);
const OSSL_PARAM *p;
size_t len;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_CIPHER_PARAM_KEYLEN);
PROV_CIPHER_HW_CHACHA20_POLY1305 *hw =
(PROV_CIPHER_HW_CHACHA20_POLY1305 *)ctx->base.hw;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_CIPHER_PARAM_KEYLEN);
PROV_RC2_CTX *ctx = (PROV_RC2_CTX *)vctx;
const OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!ossl_cipher_var_keylen_set_ctx_params(vctx, params))
const OSSL_PARAM *p;
size_t sz;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_CIPHER_PARAM_KEYLEN);
PROV_RC5_CTX *ctx = (PROV_RC5_CTX *)vctx;
const OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!ossl_cipher_var_keylen_set_ctx_params(vctx, params))
PROV_SM4_XTS_CTX *xctx = (PROV_SM4_XTS_CTX *)vxctx;
const OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
/*-
PROV_CIPHER_CTX *ctx = (PROV_CIPHER_CTX *)vctx;
const OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!ossl_cipher_generic_set_ctx_params(vctx, params))
PROV_CIPHER_CTX *ctx = (PROV_CIPHER_CTX *)vctx;
const OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_CIPHER_PARAM_PADDING);
const OSSL_PARAM *p;
size_t sz;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_CIPHER_PARAM_AEAD_TAG);
void *vp;
int type;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
for (p = params; p->key != NULL; p++) {
\
if (ctx == NULL) \
return 0; \
- if (params == NULL) \
+ if (ossl_param_is_empty(params)) \
return 1; \
\
p = OSSL_PARAM_locate(params, OSSL_DIGEST_PARAM_SIZE); \
\
if (ctx == NULL) \
return 0; \
- if (params == NULL) \
+ if (ossl_param_is_empty(params)) \
return 1; \
\
p = OSSL_PARAM_locate_const(params, OSSL_DIGEST_PARAM_SIZE); \
if (ctx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_DIGEST_PARAM_SSL3_MS);
if (ctx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_DIGEST_PARAM_PAD_TYPE);
if (ctx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_DIGEST_PARAM_SSL3_MS);
if (ctx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate(params, OSSL_DIGEST_PARAM_XOFLEN);
if (ctx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_DIGEST_PARAM_XOFLEN);
if (pdhctx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(pdhctx, OSSL_FIPS_IND_SETTABLE0, params,
if (pectx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(pectx, OSSL_FIPS_IND_SETTABLE0, params,
KDF_ARGON2 *ctx;
uint32_t u32_value;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
ctx = (KDF_ARGON2 *) vctx;
const OSSL_PARAM *p;
int n;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (OSSL_PARAM_locate_const(params, OSSL_ALG_PARAM_DIGEST) != NULL) {
{
KDF_HKDF *ctx = vctx;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(ctx, OSSL_FIPS_IND_SETTABLE0, params,
{
OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if ((p = OSSL_PARAM_locate(params, OSSL_KDF_PARAM_SIZE)) != NULL) {
{
KDF_HKDF *ctx = (KDF_HKDF *)vctx;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!hkdf_common_get_ctx_params(ctx, params))
const OSSL_PARAM *p;
KDF_HKDF *ctx = vctx;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(ctx, OSSL_FIPS_IND_SETTABLE0, params,
{
KDF_HKDF *ctx = (KDF_HKDF *)vctx;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!hkdf_common_get_ctx_params(ctx, params))
size_t size = 0;
int md_size;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_KDF_PARAM_HMACDRBG_ENTROPY);
OSSL_LIB_CTX *libctx = PROV_LIBCTX_OF(ctx->provctx);
const OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(ctx, OSSL_FIPS_IND_SETTABLE0, params,
KRB5KDF_CTX *ctx = vctx;
OSSL_LIB_CTX *provctx = PROV_LIBCTX_OF(ctx->provctx);
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!ossl_prov_cipher_load_from_params(&ctx->cipher, params, provctx))
uint64_t iter, min_iter;
const EVP_MD *md;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (OSSL_PARAM_locate_const(params, OSSL_ALG_PARAM_DIGEST) != NULL) {
KDF_PKCS12 *ctx = vctx;
OSSL_LIB_CTX *provctx = PROV_LIBCTX_OF(ctx->provctx);
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!ossl_prov_digest_load_from_params(&ctx->digest, params, provctx))
KDF_PVK *ctx = vctx;
OSSL_LIB_CTX *provctx = PROV_LIBCTX_OF(ctx->provctx);
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!ossl_prov_digest_load_from_params(&ctx->digest, params, provctx))
KDF_SCRYPT *ctx = vctx;
uint64_t u64_value;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if ((p = OSSL_PARAM_locate_const(params, OSSL_KDF_PARAM_PASSWORD)) != NULL)
KDF_SSHKDF *ctx = vctx;
OSSL_LIB_CTX *provctx = PROV_LIBCTX_OF(ctx->provctx);
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(ctx, OSSL_FIPS_IND_SETTABLE0, params,
size_t sz;
int r;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!ossl_prov_macctx_load_from_params(&ctx->macctx, params,
{
KDF_SSKDF *ctx = (KDF_SSKDF *)vctx;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(ctx, OSSL_FIPS_IND_SETTABLE0, params,
{
OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if ((p = OSSL_PARAM_locate(params, OSSL_KDF_PARAM_SIZE)) != NULL) {
{
KDF_SSKDF *ctx = (KDF_SSKDF *)vctx;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!sskdf_common_get_ctx_params(ctx, params))
{
KDF_SSKDF *ctx = (KDF_SSKDF *)vctx;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(ctx, OSSL_FIPS_IND_SETTABLE0, params,
TLS1_PRF *ctx = vctx;
OSSL_LIB_CTX *libctx = PROV_LIBCTX_OF(ctx->provctx);
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(ctx, OSSL_FIPS_IND_SETTABLE0, params,
const EVP_MD *md;
size_t id;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(ctx, OSSL_FIPS_IND_SETTABLE0, params,
const OSSL_PARAM *p;
int mode;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_KEM_PARAM_IKME);
if (ctx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_KEM_PARAM_IKME);
if (prsactx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(prsactx, OSSL_FIPS_IND_SETTABLE0, params,
if (gctx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_FFC_TYPE);
if (gctx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(gctx, OSSL_FIPS_IND_SETTABLE0, params,
if (gctx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_GET_CTX_PARAM(gctx, params))
return 0;
if (key == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
-
if (!ossl_ec_group_set_params((EC_GROUP *)EC_KEY_get0_group(key), params))
return 0;
ECX_KEY *ecxkey = key;
const OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY);
struct rsa_gen_ctx *gctx = genctx;
const OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if ((p = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_RSA_BITS)) != NULL) {
struct blake2_mac_data_st *macctx = vmacctx;
const OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if ((p = OSSL_PARAM_locate_const(params, OSSL_MAC_PARAM_SIZE)) != NULL) {
OSSL_LIB_CTX *ctx = PROV_LIBCTX_OF(macctx->provctx);
const OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(macctx,
OSSL_LIB_CTX *provctx = PROV_LIBCTX_OF(macctx->provctx);
const OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (ctx == NULL)
return 0;
OSSL_LIB_CTX *ctx = PROV_LIBCTX_OF(macctx->provctx);
const OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(macctx, OSSL_FIPS_IND_SETTABLE0, params,
struct kmac_data_st *kctx = vmacctx;
const OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(kctx, OSSL_FIPS_IND_SETTABLE0, params,
const OSSL_PARAM *p = NULL;
size_t size;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if ((p = OSSL_PARAM_locate_const(params, OSSL_MAC_PARAM_SIZE)) != NULL) {
{
const OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_DRBG_PARAM_RESEED_REQUESTS);
void *ptr = NULL;
size_t size = 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_RAND_PARAM_STRENGTH);
return known_gettable_ctx_params;
}
-/* The common params for dsa_set_ctx_params and dsa_sigalg_set_ctx_params */
+/**
+ * @brief Setup common params for dsa_set_ctx_params and dsa_sigalg_set_ctx_params
+ * The caller is responsible for checking |vpdsactx| is not NULL and |params|
+ * is not empty.
+ */
static int dsa_common_set_ctx_params(void *vpdsactx, const OSSL_PARAM params[])
{
PROV_DSA_CTX *pdsactx = (PROV_DSA_CTX *)vpdsactx;
const OSSL_PARAM *p;
- if (pdsactx == NULL)
- return 0;
- if (params == NULL)
- return 1;
-
if (!OSSL_FIPS_IND_SET_CTX_PARAM(pdsactx, OSSL_FIPS_IND_SETTABLE0, params,
OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK))
return 0;
const OSSL_PARAM *p;
int ret;
+ if (pdsactx == NULL)
+ return 0;
+ if (ossl_param_is_empty(params))
+ return 1;
+
if ((ret = dsa_common_set_ctx_params(pdsactx, params)) <= 0)
return ret;
- if (params == NULL)
- return 1;
-
p = OSSL_PARAM_locate_const(params, OSSL_SIGNATURE_PARAM_DIGEST);
if (p != NULL) {
char mdname[OSSL_MAX_NAME_SIZE] = "", *pmdname = mdname;
const OSSL_PARAM *p;
int ret;
+ if (pdsactx == NULL)
+ return 0;
+ if (ossl_param_is_empty(params))
+ return 1;
+
if ((ret = dsa_common_set_ctx_params(pdsactx, params)) <= 0)
return ret;
- if (params == NULL)
- return 1;
-
if (pdsactx->operation == EVP_PKEY_OP_VERIFYMSG) {
p = OSSL_PARAM_locate_const(params, OSSL_SIGNATURE_PARAM_SIGNATURE);
if (p != NULL) {
return known_gettable_ctx_params;
}
-/* The common params for ecdsa_set_ctx_params and ecdsa_sigalg_set_ctx_params */
+/**
+ * @brief Set up common params for ecdsa_set_ctx_params and
+ * ecdsa_sigalg_set_ctx_params. The caller is responsible for checking |vctx| is
+ * not NULL and |params| is not empty.
+ */
static int ecdsa_common_set_ctx_params(void *vctx, const OSSL_PARAM params[])
{
PROV_ECDSA_CTX *ctx = (PROV_ECDSA_CTX *)vctx;
const OSSL_PARAM *p;
- if (ctx == NULL)
- return 0;
- if (params == NULL)
- return 1;
-
if (!OSSL_FIPS_IND_SET_CTX_PARAM(ctx, OSSL_FIPS_IND_SETTABLE0, params,
OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK))
return 0;
size_t mdsize = 0;
int ret;
+ if (ctx == NULL)
+ return 0;
+ if (ossl_param_is_empty(params))
+ return 1;
+
if ((ret = ecdsa_common_set_ctx_params(ctx, params)) <= 0)
return ret;
- if (params == NULL)
- return 1;
-
p = OSSL_PARAM_locate_const(params, OSSL_SIGNATURE_PARAM_DIGEST);
if (p != NULL) {
char mdname[OSSL_MAX_NAME_SIZE] = "", *pmdname = mdname;
const OSSL_PARAM *p;
int ret;
+ if (ctx == NULL)
+ return 0;
+ if (ossl_param_is_empty(params))
+ return 1;
+
if ((ret = ecdsa_common_set_ctx_params(ctx, params)) <= 0)
return ret;
- if (params == NULL)
- return 1;
-
if (ctx->operation == EVP_PKEY_OP_VERIFYMSG) {
p = OSSL_PARAM_locate_const(params, OSSL_SIGNATURE_PARAM_SIGNATURE);
if (p != NULL) {
if (peddsactx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_SIGNATURE_PARAM_INSTANCE);
if (prsactx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (!OSSL_FIPS_IND_SET_CTX_PARAM(prsactx, OSSL_FIPS_IND_SETTABLE0, params,
if (prsactx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (prsactx->operation == EVP_PKEY_OP_VERIFYMSG) {
if (psm2ctx == NULL)
return 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_DIST_ID);
#include "crypto/ctype.h" /* ossl_isdigit() */
#include "prov/implementations.h"
#include "prov/bio.h"
+#include "prov/providercommon.h"
#include "file_store_local.h"
DEFINE_STACK_OF(OSSL_STORE_INFO)
struct file_ctx_st *ctx = loaderctx;
const OSSL_PARAM *p;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
if (ctx->type != IS_DIR) {
#include "crypto/decoder.h"
#include "crypto/ctype.h" /* ossl_isdigit() */
#include "prov/implementations.h"
+#include "prov/providercommon.h"
#include "prov/bio.h"
#include "file_store_local.h"
#ifdef __CYGWIN__
const OSSL_PARAM *p;
int do_reset = 0;
- if (params == NULL)
+ if (ossl_param_is_empty(params))
return 1;
p = OSSL_PARAM_locate_const(params, OSSL_STORE_PARAM_PROPERTIES);