/* Filter out message digests that we cannot use */
md = EVP_MD_fetch(app_get0_libctx(), name->name, app_get0_propq());
- if (md == NULL) {
- if (EVP_get_digestbyname(name->name) == NULL)
- return;
- }
+ if (md == NULL)
+ return;
BIO_printf(dec->bio, "-%-25s", name->name);
if (++dec->n == 3) {
char *data, EVP_PKEY *pkey)
{
EVP_MD_CTX *ctx = EVP_MD_CTX_new();
- const EVP_MD *type;
+ EVP_MD *type = NULL;
unsigned char *p, *buf_in = NULL;
int ret = -1, i, inl;
goto err;
}
i = OBJ_obj2nid(a->algorithm);
- type = EVP_get_digestbyname(OBJ_nid2sn(i));
+ type = EVP_MD_fetch(NULL, OBJ_nid2sn(i), NULL);
if (type == NULL) {
ERR_raise(ERR_LIB_ASN1, ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM);
goto err;
}
ret = 1;
err:
+ EVP_MD_free(type);
EVP_MD_CTX_free(ctx);
return ret;
}
ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de,
OSSL_LIB_CTX *libctx, const char *propq)
{
- const EVP_CIPHER *cipher = NULL;
- EVP_CIPHER *cipher_fetch = NULL;
- const EVP_MD *md = NULL;
- EVP_MD *md_fetch = NULL;
+ EVP_CIPHER *cipher = NULL;
+ EVP_MD *md = NULL;
int ret = 0, cipher_nid, md_nid;
EVP_PBE_KEYGEN_EX *keygen_ex;
EVP_PBE_KEYGEN *keygen;
passlen = (int)strlen(pass);
if (cipher_nid != -1) {
- (void)ERR_set_mark();
- cipher = cipher_fetch = EVP_CIPHER_fetch(libctx, OBJ_nid2sn(cipher_nid), propq);
- /* Fallback to legacy method */
- if (cipher == NULL)
- cipher = EVP_get_cipherbynid(cipher_nid);
+ cipher = EVP_CIPHER_fetch(libctx, OBJ_nid2sn(cipher_nid), propq);
if (cipher == NULL) {
- (void)ERR_clear_last_mark();
ERR_raise_data(ERR_LIB_EVP, EVP_R_UNKNOWN_CIPHER,
OBJ_nid2sn(cipher_nid));
goto err;
}
- (void)ERR_pop_to_mark();
}
if (md_nid != -1) {
- (void)ERR_set_mark();
- md = md_fetch = EVP_MD_fetch(libctx, OBJ_nid2sn(md_nid), propq);
- /* Fallback to legacy method */
- if (md == NULL)
- md = EVP_get_digestbynid(md_nid);
+ md = EVP_MD_fetch(libctx, OBJ_nid2sn(md_nid), propq);
if (md == NULL) {
- (void)ERR_clear_last_mark();
ERR_raise(ERR_LIB_EVP, EVP_R_UNKNOWN_DIGEST);
goto err;
}
- (void)ERR_pop_to_mark();
}
/* Try extended keygen with libctx/propq first, fall back to legacy keygen */
ret = keygen(ctx, pass, passlen, param, cipher, md, en_de);
err:
- EVP_CIPHER_free(cipher_fetch);
- EVP_MD_free(md_fetch);
+ EVP_CIPHER_free(cipher);
+ EVP_MD_free(md);
return ret;
}
*/
evp_md_ctx_clear_digest(ctx, 1, 0);
- /* legacy code support for engines */
- ERR_set_mark();
/*
* This might be requested by a later call to EVP_MD_CTX_get0_md().
* In that case the "explicit fetch" rules apply for that
ctx->fetched_digest = EVP_MD_fetch(locpctx->libctx, mdname, props);
if (ctx->fetched_digest != NULL) {
ctx->digest = ctx->reqdigest = ctx->fetched_digest;
- } else {
- /* legacy engine support : remove the mark when this is deleted */
- ctx->reqdigest = ctx->digest = EVP_get_digestbyname(mdname);
if (ctx->digest == NULL) {
- (void)ERR_clear_last_mark();
ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR);
goto err;
}
}
- (void)ERR_pop_to_mark();
}
}
{
PBE2PARAM *pbe2 = NULL;
char ciph_name[80];
- const EVP_CIPHER *cipher = NULL;
- EVP_CIPHER *cipher_fetch = NULL;
+ EVP_CIPHER *cipher = NULL;
EVP_PBE_KEYGEN_EX *kdf;
int rv = 0;
goto err;
}
- (void)ERR_set_mark();
- cipher = cipher_fetch = EVP_CIPHER_fetch(libctx, ciph_name, propq);
- /* Fallback to legacy method */
- if (cipher == NULL)
- cipher = EVP_get_cipherbyname(ciph_name);
+ cipher = EVP_CIPHER_fetch(libctx, ciph_name, propq);
if (cipher == NULL) {
(void)ERR_clear_last_mark();
}
rv = kdf(ctx, pass, passlen, pbe2->keyfunc->parameter, NULL, NULL, en_de, libctx, propq);
err:
- EVP_CIPHER_free(cipher_fetch);
+ EVP_CIPHER_free(cipher);
PBE2PARAM_free(pbe2);
return rv;
}
unsigned int keylen = 0;
int prf_nid, hmac_md_nid;
PBKDF2PARAM *kdf = NULL;
- const EVP_MD *prfmd = NULL;
- EVP_MD *prfmd_fetch = NULL;
+ EVP_MD *prfmd = NULL;
if (EVP_CIPHER_CTX_get0_cipher(ctx) == NULL) {
ERR_raise(ERR_LIB_EVP, EVP_R_NO_CIPHER_SET);
goto err;
}
- (void)ERR_set_mark();
- prfmd = prfmd_fetch = EVP_MD_fetch(libctx, OBJ_nid2sn(hmac_md_nid), propq);
- if (prfmd == NULL)
- prfmd = EVP_get_digestbynid(hmac_md_nid);
+ prfmd = EVP_MD_fetch(libctx, OBJ_nid2sn(hmac_md_nid), propq);
if (prfmd == NULL) {
- (void)ERR_clear_last_mark();
ERR_raise(ERR_LIB_EVP, EVP_R_UNSUPPORTED_PRF);
goto err;
}
- (void)ERR_pop_to_mark();
if (kdf->salt->type != V_ASN1_OCTET_STRING) {
ERR_raise(ERR_LIB_EVP, EVP_R_UNSUPPORTED_SALT_TYPE);
err:
OPENSSL_cleanse(key, keylen);
PBKDF2PARAM_free(kdf);
- EVP_MD_free(prfmd_fetch);
+ EVP_MD_free(prfmd);
return rv;
}
OBJ_obj2txt(name, sizeof(name), cid->hashAlgorithm.algorithm, 0);
- (void)ERR_set_mark();
dgst = EVP_MD_fetch(NULL, name, NULL);
- if (dgst == NULL)
- dgst = (EVP_MD *)EVP_get_digestbyname(name);
-
if (dgst == NULL) {
- (void)ERR_clear_last_mark();
ERR_raise(ERR_LIB_OCSP, OCSP_R_UNKNOWN_MESSAGE_DIGEST);
goto end;
}
- (void)ERR_pop_to_mark();
mdlen = EVP_MD_get_size(dgst);
if (mdlen <= 0) {
{
PKCS7 *p7;
X509_ALGOR *pbe;
- const EVP_CIPHER *pbe_ciph = NULL;
- EVP_CIPHER *pbe_ciph_fetch = NULL;
+ EVP_CIPHER *pbe_ciph = NULL;
if ((p7 = PKCS7_new_ex(ctx, propq)) == NULL) {
ERR_raise(ERR_LIB_PKCS12, ERR_R_ASN1_LIB);
goto err;
}
- ERR_set_mark();
- pbe_ciph = pbe_ciph_fetch = EVP_CIPHER_fetch(ctx, OBJ_nid2sn(pbe_nid), propq);
- if (pbe_ciph == NULL)
- pbe_ciph = EVP_get_cipherbynid(pbe_nid);
- ERR_pop_to_mark();
+ pbe_ciph = EVP_CIPHER_fetch(ctx, OBJ_nid2sn(pbe_nid), propq);
if (pbe_ciph != NULL) {
pbe = PKCS5_pbe2_set_iv_ex(pbe_ciph, iter, salt, saltlen, NULL, -1, ctx);
goto err;
}
- EVP_CIPHER_free(pbe_ciph_fetch);
+ EVP_CIPHER_free(pbe_ciph);
return p7;
err:
PKCS7_free(p7);
- EVP_CIPHER_free(pbe_ciph_fetch);
+ EVP_CIPHER_free(pbe_ciph);
return NULL;
}
const char *propq))
{
int ret = 0;
- const EVP_MD *md;
- EVP_MD *md_fetch;
+ EVP_MD *md;
HMAC_CTX *hmac = NULL;
unsigned char key[EVP_MAX_MD_SIZE], *salt;
int saltlen, iter;
if (OBJ_obj2txt(md_name, sizeof(md_name), macoid, 0) < 0)
return 0;
}
- (void)ERR_set_mark();
- md = md_fetch = EVP_MD_fetch(libctx, md_name, propq);
- if (md == NULL)
- md = EVP_get_digestbynid(OBJ_obj2nid(macoid));
+ md = EVP_MD_fetch(libctx, md_name, propq);
if (md == NULL) {
- (void)ERR_clear_last_mark();
ERR_raise(ERR_LIB_PKCS12, PKCS12_R_UNKNOWN_DIGEST_ALGORITHM);
return 0;
}
- (void)ERR_pop_to_mark();
keylen = EVP_MD_get_size(md);
md_nid = EVP_MD_get_type(md);
goto err;
}
} else {
- EVP_MD *hmac_md = (EVP_MD *)md;
+ EVP_MD *hmac_md = md;
int fetched = 0;
if (pbmac1_kdf_nid != NID_undef) {
err:
OPENSSL_cleanse(key, sizeof(key));
HMAC_CTX_free(hmac);
- EVP_MD_free(md_fetch);
+ EVP_MD_free(md);
return ret;
}
const char *propq)
{
PKCS12_SAFEBAG *bag = NULL;
- const EVP_CIPHER *pbe_ciph = NULL;
- EVP_CIPHER *pbe_ciph_fetch = NULL;
+ EVP_CIPHER *pbe_ciph = NULL;
X509_SIG *p8;
ERR_set_mark();
- pbe_ciph = pbe_ciph_fetch = EVP_CIPHER_fetch(ctx, OBJ_nid2sn(pbe_nid), propq);
- if (pbe_ciph == NULL)
- pbe_ciph = EVP_get_cipherbynid(pbe_nid);
+ pbe_ciph = EVP_CIPHER_fetch(ctx, OBJ_nid2sn(pbe_nid), propq);
ERR_pop_to_mark();
if (pbe_ciph != NULL)
X509_SIG_free(p8);
err:
- EVP_CIPHER_free(pbe_ciph_fetch);
+ EVP_CIPHER_free(pbe_ciph);
return bag;
}
{
BIO *btmp;
char name[OSSL_MAX_NAME_SIZE];
- EVP_MD *fetched = NULL;
- const EVP_MD *md;
+ EVP_MD *md = NULL;
if ((btmp = BIO_new(BIO_f_md())) == NULL) {
ERR_raise(ERR_LIB_PKCS7, ERR_R_BIO_LIB);
OBJ_obj2txt(name, sizeof(name), alg->algorithm, 0);
- (void)ERR_set_mark();
- fetched = EVP_MD_fetch(ossl_pkcs7_ctx_get0_libctx(ctx), name,
+ md = EVP_MD_fetch(ossl_pkcs7_ctx_get0_libctx(ctx), name,
ossl_pkcs7_ctx_get0_propq(ctx));
- if (fetched != NULL)
- md = fetched;
- else
- md = EVP_get_digestbyname(name);
if (md == NULL) {
- (void)ERR_clear_last_mark();
ERR_raise(ERR_LIB_PKCS7, PKCS7_R_UNKNOWN_DIGEST_TYPE);
goto err;
}
- (void)ERR_pop_to_mark();
if (BIO_set_md(btmp, md) <= 0) {
ERR_raise(ERR_LIB_PKCS7, ERR_R_BIO_LIB);
- EVP_MD_free(fetched);
+ EVP_MD_free(md);
goto err;
}
- EVP_MD_free(fetched);
+ EVP_MD_free(md);
if (*pbio == NULL)
*pbio = btmp;
else if (!BIO_push(*pbio, btmp)) {
BIO *out = NULL, *btmp = NULL, *etmp = NULL, *bio = NULL;
X509_ALGOR *xa;
ASN1_OCTET_STRING *data_body = NULL;
- EVP_MD *evp_md = NULL;
- const EVP_MD *md;
- EVP_CIPHER *evp_cipher = NULL;
- const EVP_CIPHER *cipher = NULL;
+ EVP_MD *md = NULL;
+ EVP_CIPHER *cipher = NULL;
EVP_CIPHER_CTX *evp_ctx = NULL;
X509_ALGOR *enc_alg = NULL;
STACK_OF(X509_ALGOR) *md_sk = NULL;
OBJ_obj2txt(name, sizeof(name), enc_alg->algorithm, 0);
- (void)ERR_set_mark();
- evp_cipher = EVP_CIPHER_fetch(libctx, name, propq);
- if (evp_cipher != NULL)
- cipher = evp_cipher;
- else
- cipher = EVP_get_cipherbyname(name);
+ cipher = EVP_CIPHER_fetch(libctx, name, propq);
if (cipher == NULL) {
- (void)ERR_clear_last_mark();
ERR_raise(ERR_LIB_PKCS7, PKCS7_R_UNSUPPORTED_CIPHER_TYPE);
goto err;
}
- (void)ERR_pop_to_mark();
break;
case NID_pkcs7_enveloped:
rsk = p7->d.enveloped->recipientinfo;
data_body = p7->d.enveloped->enc_data->enc_data;
OBJ_obj2txt(name, sizeof(name), enc_alg->algorithm, 0);
- (void)ERR_set_mark();
- evp_cipher = EVP_CIPHER_fetch(libctx, name, propq);
- if (evp_cipher != NULL)
- cipher = evp_cipher;
- else
- cipher = EVP_get_cipherbyname(name);
+ cipher = EVP_CIPHER_fetch(libctx, name, propq);
if (cipher == NULL) {
- (void)ERR_clear_last_mark();
ERR_raise(ERR_LIB_PKCS7, PKCS7_R_UNSUPPORTED_CIPHER_TYPE);
goto err;
}
- (void)ERR_pop_to_mark();
break;
default:
ERR_raise(ERR_LIB_PKCS7, PKCS7_R_UNSUPPORTED_CONTENT_TYPE);
OBJ_obj2txt(name, sizeof(name), xa->algorithm, 0);
- (void)ERR_set_mark();
- evp_md = EVP_MD_fetch(libctx, name, propq);
- if (evp_md != NULL)
- md = evp_md;
- else
- md = EVP_get_digestbyname(name);
+ md = EVP_MD_fetch(libctx, name, propq);
if (md == NULL) {
- (void)ERR_clear_last_mark();
ERR_raise(ERR_LIB_PKCS7, PKCS7_R_UNKNOWN_DIGEST_TYPE);
goto err;
}
- (void)ERR_pop_to_mark();
if (BIO_set_md(btmp, md) <= 0) {
- EVP_MD_free(evp_md);
+ EVP_MD_free(md);
ERR_raise(ERR_LIB_PKCS7, ERR_R_BIO_LIB);
goto err;
}
- EVP_MD_free(evp_md);
+ EVP_MD_free(md);
if (out == NULL)
out = btmp;
else
}
BIO_push(out, bio);
bio = NULL;
- EVP_CIPHER_free(evp_cipher);
+ EVP_CIPHER_free(cipher);
return out;
err:
- EVP_CIPHER_free(evp_cipher);
+ EVP_CIPHER_free(cipher);
OPENSSL_clear_free(ek, eklen);
OPENSSL_clear_free(tkey, tkeylen);
BIO_free_all(out);
{
ASN1_OCTET_STRING *os;
EVP_MD_CTX *mdc_tmp, *mdc;
- const EVP_MD *md;
- EVP_MD *fetched_md = NULL;
+ EVP_MD *md = NULL;
int ret = 0, i;
int md_type;
STACK_OF(X509_ATTRIBUTE) *sk;
goto err;
}
- (void)ERR_set_mark();
- fetched_md = EVP_MD_fetch(libctx, OBJ_nid2sn(md_type), propq);
-
- if (fetched_md != NULL)
- md = fetched_md;
- else
- md = EVP_get_digestbynid(md_type);
+ md = EVP_MD_fetch(libctx, OBJ_nid2sn(md_type), propq);
if (md == NULL || !EVP_VerifyInit_ex(mdc_tmp, md, NULL)) {
- (void)ERR_clear_last_mark();
goto err;
}
- (void)ERR_pop_to_mark();
alen = ASN1_item_i2d((ASN1_VALUE *)sk, &abuf,
ASN1_ITEM_rptr(PKCS7_ATTR_VERIFY));
err:
OPENSSL_free(abuf);
EVP_MD_CTX_free(mdc_tmp);
- EVP_MD_free(fetched_md);
+ EVP_MD_free(md);
return ret;
}
OBJ_obj2txt(name, sizeof(name), md_alg_resp->algorithm, 0);
- (void)ERR_set_mark();
md = EVP_MD_fetch(NULL, name, NULL);
-
- if (md == NULL)
- md = (EVP_MD *)EVP_get_digestbyname(name);
-
if (md == NULL) {
- (void)ERR_clear_last_mark();
goto err;
}
- (void)ERR_pop_to_mark();
length = EVP_MD_get_size(md);
if (length <= 0)
}
} else if ((md = EVP_MD_fetch(cert->libctx, OBJ_nid2sn(mdnid),
cert->propq))
- == NULL
- && (md = (EVP_MD *)EVP_get_digestbynid(mdnid)) == NULL) {
+ == NULL) {
ERR_raise(ERR_LIB_X509, X509_R_UNSUPPORTED_ALGORITHM);
return NULL;
}