Remove fields that are no longer needed.
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/29460)
static int asn1_write_micalg(BIO *out, STACK_OF(X509_ALGOR) *mdalgs)
{
- const EVP_MD *md;
int i, have_unknown = 0, write_comma, ret = 0, md_nid;
have_unknown = 0;
write_comma = 0;
continue;
}
- md = EVP_get_digestbynid(md_nid);
- if (md && md->md_ctrl) {
- int rv;
- char *micstr;
- rv = md->md_ctrl(NULL, EVP_MD_CTRL_MICALG, 0, &micstr);
- if (rv > 0) {
- rv = BIO_puts(out, micstr);
- OPENSSL_free(micstr);
- if (rv < 0)
- goto err;
- continue;
- }
- if (rv != -2)
- goto err;
- }
switch (md_nid) {
case NID_sha1:
if (BIO_puts(out, "sha1") < 0)
#include "crypto/evp.h"
#include "evp_local.h"
-static void cleanup_old_md_data(EVP_MD_CTX *ctx, int force)
-{
- if (ctx->digest != NULL) {
- if (ctx->digest->cleanup != NULL
- && !EVP_MD_CTX_test_flags(ctx, EVP_MD_CTX_FLAG_CLEANED))
- ctx->digest->cleanup(ctx);
- if (ctx->md_data != NULL && ctx->digest->ctx_size > 0
- && (!EVP_MD_CTX_test_flags(ctx, EVP_MD_CTX_FLAG_REUSE)
- || force)) {
- OPENSSL_clear_free(ctx->md_data, ctx->digest->ctx_size);
- ctx->md_data = NULL;
- }
- }
-}
-
void evp_md_ctx_clear_digest(EVP_MD_CTX *ctx, int force, int keep_fetched)
{
if (ctx->algctx != NULL) {
* Don't assume ctx->md_data was cleaned in EVP_Digest_Final, because
* sometimes only copies of the context are ever finalised.
*/
- cleanup_old_md_data(ctx, force);
if (force)
ctx->digest = NULL;
type = ctx->digest;
}
- cleanup_old_md_data(ctx, 1);
-
if (ossl_likely(ctx->digest == type)) {
if (ossl_unlikely(!ossl_assert(type->prov != NULL))) {
ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR);
if (ossl_unlikely(sz < 0))
return 0;
mdsize = sz;
- if (ossl_unlikely(ctx->digest->prov == NULL))
- goto legacy;
+ if (ossl_unlikely(ctx->digest->prov == NULL)) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_FINAL_ERROR);
+ return 0;
+ }
if (ossl_unlikely(ctx->digest->dfinal == NULL)) {
ERR_raise(ERR_LIB_EVP, EVP_R_FINAL_ERROR);
}
return ret;
-
- /* Code below to be removed when legacy support is dropped. */
-legacy:
- OPENSSL_assert(mdsize <= EVP_MAX_MD_SIZE);
- ret = ctx->digest->final(ctx, md);
- if (isize != NULL)
- *isize = (unsigned int)mdsize;
- if (ctx->digest->cleanup) {
- ctx->digest->cleanup(ctx);
- EVP_MD_CTX_set_flags(ctx, EVP_MD_CTX_FLAG_CLEANED);
- }
- OPENSSL_cleanse(ctx->md_data, ctx->digest->ctx_size);
- return ret;
}
/* This is a one shot operation */
return 0;
}
- if (ossl_unlikely(ctx->digest->prov == NULL))
- goto legacy;
+ if (ossl_unlikely(ctx->digest->prov == NULL)) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_FINAL_ERROR);
+ return 0;
+ }
if (ossl_unlikely(ctx->digest->dfinal == NULL)) {
ERR_raise(ERR_LIB_EVP, EVP_R_FINAL_ERROR);
ctx->flags |= EVP_MD_CTX_FLAG_FINALISED;
- return ret;
-
-legacy:
- if (EVP_MD_xof(ctx->digest)
- && size <= INT_MAX
- && ctx->digest->md_ctrl(ctx, EVP_MD_CTRL_XOF_LEN, (int)size, NULL)) {
- ret = ctx->digest->final(ctx, md);
- if (ctx->digest->cleanup != NULL) {
- ctx->digest->cleanup(ctx);
- EVP_MD_CTX_set_flags(ctx, EVP_MD_CTX_FLAG_CLEANED);
- }
- OPENSSL_cleanse(ctx->md_data, ctx->digest->ctx_size);
- } else {
- ERR_raise(ERR_LIB_EVP, EVP_R_NOT_XOF_OR_INVALID_LENGTH);
- }
-
return ret;
}
EVP_PKEY_CTX_free(out->pctx);
out->pctx = NULL;
- cleanup_old_md_data(out, 0);
out->flags = in->flags;
out->update = in->update;
return 0;
}
- if (ctx->digest != NULL && ctx->digest->prov == NULL)
- goto legacy;
+ if (ctx->digest != NULL && ctx->digest->prov == NULL) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_CTRL_NOT_IMPLEMENTED);
+ return 0;
+ }
switch (cmd) {
case EVP_MD_CTRL_XOF_LEN:
ret = EVP_MD_CTX_set_params(ctx, params);
else
ret = EVP_MD_CTX_get_params(ctx, params);
- goto conclude;
-
- /* Code below to be removed when legacy support is dropped. */
-legacy:
- if (ctx->digest->md_ctrl == NULL) {
- ERR_raise(ERR_LIB_EVP, EVP_R_CTRL_NOT_IMPLEMENTED);
- return 0;
- }
- ret = ctx->digest->md_ctrl(ctx, cmd, p1, p2);
conclude:
if (ret <= 0)
return 0;
BLAKE2B_DIGEST_LENGTH,
0,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(BLAKE2B_BLOCKBYTES),
+ BLAKE2B_BLOCKBYTES,
};
const EVP_MD *EVP_blake2b512(void)
BLAKE2S_DIGEST_LENGTH,
0,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(BLAKE2S_BLOCKBYTES),
+ BLAKE2S_BLOCKBYTES,
};
const EVP_MD *EVP_blake2s256(void)
MD2_DIGEST_LENGTH,
0,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(MD2_BLOCK)
+ MD2_BLOCK
};
const EVP_MD *EVP_md2(void)
MD4_DIGEST_LENGTH,
0,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(MD4_CBLOCK),
+ MD4_CBLOCK
};
const EVP_MD *EVP_md4(void)
MD5_DIGEST_LENGTH,
0,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(MD5_CBLOCK)
+ MD5_CBLOCK
};
const EVP_MD *EVP_md5(void)
MD5_SHA1_DIGEST_LENGTH,
0,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(MD5_SHA1_CBLOCK),
+ MD5_SHA1_CBLOCK
};
const EVP_MD *EVP_md5_sha1(void)
MDC2_DIGEST_LENGTH,
0,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(MDC2_BLOCK),
+ MDC2_BLOCK
};
const EVP_MD *EVP_mdc2(void)
{ \
return fn##_final(md, EVP_MD_CTX_get0_md_data(ctx)); \
}
-
-#define LEGACY_EVP_MD_METH_TABLE(blksz) \
- NULL, NULL, NULL, NULL, NULL, blksz, 0, NULL
RIPEMD160_DIGEST_LENGTH,
0,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(RIPEMD160_CBLOCK)
+ RIPEMD160_CBLOCK
};
const EVP_MD *EVP_ripemd160(void)
SHA_DIGEST_LENGTH,
EVP_MD_FLAG_DIGALGID_ABSENT,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(SHA_CBLOCK)
+ SHA_CBLOCK
};
const EVP_MD *EVP_sha1(void)
SHA224_DIGEST_LENGTH,
EVP_MD_FLAG_DIGALGID_ABSENT,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(SHA256_CBLOCK)
+ SHA256_CBLOCK
};
const EVP_MD *EVP_sha224(void)
SHA256_DIGEST_LENGTH,
EVP_MD_FLAG_DIGALGID_ABSENT,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(SHA256_CBLOCK)
+ SHA256_CBLOCK
};
const EVP_MD *EVP_sha256(void)
SHA224_DIGEST_LENGTH,
EVP_MD_FLAG_DIGALGID_ABSENT,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(SHA512_CBLOCK)
+ SHA512_CBLOCK
};
const EVP_MD *EVP_sha512_224(void)
SHA256_DIGEST_LENGTH,
EVP_MD_FLAG_DIGALGID_ABSENT,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(SHA512_CBLOCK)
+ SHA512_CBLOCK
};
const EVP_MD *EVP_sha512_256(void)
SHA384_DIGEST_LENGTH,
EVP_MD_FLAG_DIGALGID_ABSENT,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(SHA512_CBLOCK)
+ SHA512_CBLOCK
};
const EVP_MD *EVP_sha384(void)
SHA512_DIGEST_LENGTH,
EVP_MD_FLAG_DIGALGID_ABSENT,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(SHA512_CBLOCK),
+ SHA512_CBLOCK
};
const EVP_MD *EVP_sha512(void)
return &sha512_md;
}
-#define EVP_MD_SHA3(bitlen) \
- const EVP_MD *EVP_sha3_##bitlen(void) \
- { \
- static const EVP_MD sha3_##bitlen##_md = { \
- NID_sha3_##bitlen, \
- NID_RSA_SHA3_##bitlen, \
- bitlen / 8, \
- EVP_MD_FLAG_DIGALGID_ABSENT, \
- EVP_ORIG_GLOBAL, \
- LEGACY_EVP_MD_METH_TABLE((KECCAK1600_WIDTH - bitlen * 2) / 8) \
- }; \
- return &sha3_##bitlen##_md; \
+#define EVP_MD_SHA3(bitlen) \
+ const EVP_MD *EVP_sha3_##bitlen(void) \
+ { \
+ static const EVP_MD sha3_##bitlen##_md = { \
+ NID_sha3_##bitlen, \
+ NID_RSA_SHA3_##bitlen, \
+ bitlen / 8, \
+ EVP_MD_FLAG_DIGALGID_ABSENT, \
+ EVP_ORIG_GLOBAL, \
+ (KECCAK1600_WIDTH - bitlen * 2) / 8 \
+ }; \
+ return &sha3_##bitlen##_md; \
}
-#define EVP_MD_SHAKE(bitlen) \
- const EVP_MD *EVP_shake##bitlen(void) \
- { \
- static const EVP_MD shake##bitlen##_md = { \
- NID_shake##bitlen, \
- 0, \
- bitlen / 8, \
- EVP_MD_FLAG_XOF | EVP_MD_FLAG_DIGALGID_ABSENT, \
- EVP_ORIG_GLOBAL, \
- LEGACY_EVP_MD_METH_TABLE((KECCAK1600_WIDTH - bitlen * 2) / 8) \
- }; \
- return &shake##bitlen##_md; \
+#define EVP_MD_SHAKE(bitlen) \
+ const EVP_MD *EVP_shake##bitlen(void) \
+ { \
+ static const EVP_MD shake##bitlen##_md = { \
+ NID_shake##bitlen, \
+ 0, \
+ bitlen / 8, \
+ EVP_MD_FLAG_XOF | EVP_MD_FLAG_DIGALGID_ABSENT, \
+ EVP_ORIG_GLOBAL, \
+ (KECCAK1600_WIDTH - bitlen * 2) / 8 \
+ }; \
+ return &shake##bitlen##_md; \
}
EVP_MD_SHA3(224)
WHIRLPOOL_DIGEST_LENGTH,
0,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(WHIRLPOOL_BBLOCK / 8)
+ WHIRLPOOL_BBLOCK / 8
};
const EVP_MD *EVP_whirlpool(void)
SM3_DIGEST_LENGTH,
0,
EVP_ORIG_GLOBAL,
- LEGACY_EVP_MD_METH_TABLE(SM3_CBLOCK)
+ SM3_CBLOCK
};
const EVP_MD *EVP_sm3(void)
/* nid */
int type;
- /* Legacy structure members */
int pkey_type;
int md_size;
unsigned long flags;
int origin;
- int (*init)(EVP_MD_CTX *ctx);
- int (*update)(EVP_MD_CTX *ctx, const void *data, size_t count);
- int (*final)(EVP_MD_CTX *ctx, unsigned char *md);
- int (*copy)(EVP_MD_CTX *to, const EVP_MD_CTX *from);
- int (*cleanup)(EVP_MD_CTX *ctx);
int block_size;
- int ctx_size; /* how big does the ctx->md_data need to be */
- /* control function */
- int (*md_ctrl)(EVP_MD_CTX *ctx, int cmd, int p1, void *p2);
- /* New structure members */
- /* Above comment to be removed when legacy has gone */
int name_id;
char *type_name;
const char *description;
OSSL_FUNC_digest_gettable_ctx_params_fn *gettable_ctx_params;
OSSL_FUNC_digest_serialize_fn *serialize;
OSSL_FUNC_digest_deserialize_fn *deserialize;
-
} /* EVP_MD */;
struct evp_cipher_st {