const EVP_MD *type = NULL;
UNUSED(key);
+ REQUIRE(dctx != NULL && dctx->key != NULL);
REQUIRE(opensslrsa_valid_key_alg(dctx->key->key_alg));
/*
static void
opensslrsa_destroyctx(dst_context_t *dctx) {
- EVP_MD_CTX *evp_md_ctx = dctx->ctxdata.evp_md_ctx;
+ EVP_MD_CTX *evp_md_ctx = NULL;
+ REQUIRE(dctx != NULL && dctx->key != NULL);
REQUIRE(opensslrsa_valid_key_alg(dctx->key->key_alg));
+ evp_md_ctx = dctx->ctxdata.evp_md_ctx;
+
if (evp_md_ctx != NULL) {
EVP_MD_CTX_destroy(evp_md_ctx);
dctx->ctxdata.evp_md_ctx = NULL;
static isc_result_t
opensslrsa_adddata(dst_context_t *dctx, const isc_region_t *data) {
- EVP_MD_CTX *evp_md_ctx = dctx->ctxdata.evp_md_ctx;
+ EVP_MD_CTX *evp_md_ctx = NULL;
+ REQUIRE(dctx != NULL && dctx->key != NULL);
REQUIRE(opensslrsa_valid_key_alg(dctx->key->key_alg));
+ evp_md_ctx = dctx->ctxdata.evp_md_ctx;
+
if (!EVP_DigestUpdate(evp_md_ctx, data->base, data->length)) {
return (dst__openssl_toresult3(
dctx->category, "EVP_DigestUpdate", ISC_R_FAILURE));
static isc_result_t
opensslrsa_sign(dst_context_t *dctx, isc_buffer_t *sig) {
- dst_key_t *key = dctx->key;
+ dst_key_t *key = NULL;
isc_region_t r;
unsigned int siglen = 0;
- EVP_MD_CTX *evp_md_ctx = dctx->ctxdata.evp_md_ctx;
- EVP_PKEY *pkey = key->keydata.pkeypair.priv;
+ EVP_MD_CTX *evp_md_ctx = NULL;
+ EVP_PKEY *pkey = NULL;
+ REQUIRE(dctx != NULL && dctx->key != NULL);
REQUIRE(opensslrsa_valid_key_alg(dctx->key->key_alg));
+ key = dctx->key;
+ evp_md_ctx = dctx->ctxdata.evp_md_ctx;
+ pkey = key->keydata.pkeypair.priv;
+
isc_buffer_availableregion(sig, &r);
if (r.length < (unsigned int)EVP_PKEY_size(pkey)) {
static isc_result_t
opensslrsa_verify2(dst_context_t *dctx, int maxbits, const isc_region_t *sig) {
- dst_key_t *key = dctx->key;
+ dst_key_t *key = NULL;
int status = 0;
- EVP_MD_CTX *evp_md_ctx = dctx->ctxdata.evp_md_ctx;
- EVP_PKEY *pkey = key->keydata.pkeypair.pub;
+ EVP_MD_CTX *evp_md_ctx = NULL;
+ EVP_PKEY *pkey = NULL;
+ REQUIRE(dctx != NULL && dctx->key != NULL);
REQUIRE(opensslrsa_valid_key_alg(dctx->key->key_alg));
+ key = dctx->key;
+ evp_md_ctx = dctx->ctxdata.evp_md_ctx;
+ pkey = key->keydata.pkeypair.pub;
+
if (maxbits != 0 && !opensslrsa_check_exponent_bits(pkey, maxbits)) {
return (DST_R_VERIFYFAILURE);
}
dst_private_t priv;
isc_result_t ret;
int i;
- isc_mem_t *mctx = key->mctx;
+ isc_mem_t *mctx = NULL;
const char *engine = NULL, *label = NULL;
EVP_PKEY *pkey = NULL;
rsa_components_t c = { .bnfree = true };
+ REQUIRE(key != NULL);
REQUIRE(opensslrsa_valid_key_alg(key->key_alg));
+ mctx = key->mctx;
+
/* read private key file */
ret = dst__privstruct_parse(key, DST_ALG_RSA, lexer, mctx, &priv);
if (ret != ISC_R_SUCCESS) {