diff options
-rw-r--r-- | crypto/evp/build.info | 13 | ||||
-rw-r--r-- | crypto/evp/legacy_blake2.c | 30 | ||||
-rw-r--r-- | crypto/evp/legacy_md2.c | 18 | ||||
-rw-r--r-- | crypto/evp/legacy_md4.c | 18 | ||||
-rw-r--r-- | crypto/evp/legacy_md5.c | 18 | ||||
-rw-r--r-- | crypto/evp/legacy_md5_sha1.c | 24 | ||||
-rw-r--r-- | crypto/evp/legacy_mdc2.c | 19 | ||||
-rw-r--r-- | crypto/evp/legacy_meth.h | 40 | ||||
-rw-r--r-- | crypto/evp/legacy_ripemd.c | 28 | ||||
-rw-r--r-- | crypto/evp/legacy_sha.c | 186 | ||||
-rw-r--r-- | crypto/evp/legacy_wp.c | 28 | ||||
-rw-r--r-- | crypto/evp/m_ripemd.c | 55 | ||||
-rw-r--r-- | crypto/evp/m_wp.c | 54 | ||||
-rw-r--r-- | crypto/sm3/build.info | 5 | ||||
-rw-r--r-- | crypto/sm3/legacy_sm3.c | 30 | ||||
-rw-r--r-- | crypto/sm3/m_sm3.c | 52 |
16 files changed, 288 insertions, 330 deletions
diff --git a/crypto/evp/build.info b/crypto/evp/build.info index 681201d521..156b26050b 100644 --- a/crypto/evp/build.info +++ b/crypto/evp/build.info @@ -7,7 +7,7 @@ SOURCE[../../libcrypto]=$COMMON\ e_des.c e_bf.c e_idea.c e_des3.c e_camellia.c\ e_rc4.c e_aes.c names.c e_seed.c e_aria.c e_sm4.c \ e_xcbc_d.c e_rc2.c e_cast.c e_rc5.c \ - m_null.c m_wp.c m_ripemd.c \ + m_null.c \ p_open.c p_seal.c p_sign.c p_verify.c p_lib.c p_enc.c p_dec.c \ bio_md.c bio_b64.c bio_enc.c evp_err.c e_null.c \ c_allc.c c_alld.c bio_ok.c \ @@ -17,7 +17,7 @@ SOURCE[../../libcrypto]=$COMMON\ e_aes_cbc_hmac_sha1.c e_aes_cbc_hmac_sha256.c e_rc4_hmac_md5.c \ e_chacha20_poly1305.c \ pkey_mac.c exchange.c \ - legacy_sha.c legacy_md5_sha1.c + legacy_sha.c IF[{- !$disabled{md2} -}] SOURCE[../../libcrypto]=legacy_md2.c @@ -26,7 +26,7 @@ IF[{- !$disabled{md4} -}] SOURCE[../../libcrypto]=legacy_md4.c ENDIF IF[{- !$disabled{md5} -}] - SOURCE[../../libcrypto]=legacy_md5.c + SOURCE[../../libcrypto]=legacy_md5.c legacy_md5_sha1.c ENDIF IF[{- !$disabled{mdc2} -}] SOURCE[../../libcrypto]=legacy_mdc2.c @@ -34,7 +34,12 @@ ENDIF IF[{- !$disabled{blake2} -}] SOURCE[../../libcrypto]=legacy_blake2.c ENDIF - +IF[{- !$disabled{whirlpool} -}] + SOURCE[../../libcrypto]=legacy_wp.c +ENDIF +IF[{- !$disabled{rmd160} -}] + SOURCE[../../libcrypto]=legacy_ripemd.c +ENDIF SOURCE[../../providers/libfips.a]=$COMMON diff --git a/crypto/evp/legacy_blake2.c b/crypto/evp/legacy_blake2.c index 04b1e84865..e03403406f 100644 --- a/crypto/evp/legacy_blake2.c +++ b/crypto/evp/legacy_blake2.c @@ -7,25 +7,23 @@ * https://www.openssl.org/source/license.html */ -#include <openssl/opensslconf.h> +#include "crypto/evp.h" +#include "prov/blake2.h" /* diverse BLAKE2 macros */ +#include "legacy_meth.h" -#ifndef OPENSSL_NO_BLAKE2 +#define blake2b_init blake2b512_init +#define blake2s_init blake2s256_init -# include <openssl/obj_mac.h> -# include "crypto/evp.h" -# include "prov/blake2.h" /* diverse BLAKE2 macros */ +IMPLEMENT_LEGACY_EVP_MD_METH_LC(blake2s_int, blake2s) +IMPLEMENT_LEGACY_EVP_MD_METH_LC(blake2b_int, blake2b) static const EVP_MD blake2b_md = { NID_blake2b512, 0, BLAKE2B_DIGEST_LENGTH, 0, - NULL, - NULL, - NULL, - NULL, - NULL, - BLAKE2B_BLOCKBYTES, + LEGACY_EVP_MD_METH_TABLE(blake2b_int_init, blake2b_int_update, + blake2b_int_final, NULL, BLAKE2B_BLOCKBYTES), }; const EVP_MD *EVP_blake2b512(void) @@ -38,17 +36,11 @@ static const EVP_MD blake2s_md = { 0, BLAKE2S_DIGEST_LENGTH, 0, - NULL, - NULL, - NULL, - NULL, - NULL, - BLAKE2S_BLOCKBYTES, + LEGACY_EVP_MD_METH_TABLE(blake2s_int_init, blake2s_int_update, + blake2s_int_final, NULL, BLAKE2S_BLOCKBYTES), }; const EVP_MD *EVP_blake2s256(void) { return &blake2s_md; } - -#endif /* OPENSSL_NO_BLAKE2 */ diff --git a/crypto/evp/legacy_md2.c b/crypto/evp/legacy_md2.c index d399095f47..6d2e60539c 100644 --- a/crypto/evp/legacy_md2.c +++ b/crypto/evp/legacy_md2.c @@ -7,29 +7,21 @@ * https://www.openssl.org/source/license.html */ -#include <openssl/opensslconf.h> +#include <openssl/md2.h> +#include "crypto/evp.h" +#include "legacy_meth.h" -#ifndef OPENSSL_NO_MD2 - -# include <openssl/md2.h> -# include "crypto/evp.h" +IMPLEMENT_LEGACY_EVP_MD_METH(md2, MD2) static const EVP_MD md2_md = { NID_md2, NID_md2WithRSAEncryption, MD2_DIGEST_LENGTH, 0, - NULL, - NULL, - NULL, - NULL, - NULL, - MD2_BLOCK, + LEGACY_EVP_MD_METH_TABLE(md2_init, md2_update, md2_final, NULL, MD2_BLOCK) }; const EVP_MD *EVP_md2(void) { return &md2_md; } - -#endif /* OPENSSL_NO_MD2 */ diff --git a/crypto/evp/legacy_md4.c b/crypto/evp/legacy_md4.c index fa57e98b78..b68a59fb85 100644 --- a/crypto/evp/legacy_md4.c +++ b/crypto/evp/legacy_md4.c @@ -7,29 +7,21 @@ * https://www.openssl.org/source/license.html */ -#include <openssl/opensslconf.h> +#include <openssl/md4.h> +#include "crypto/evp.h" +#include "legacy_meth.h" -#ifndef OPENSSL_NO_MD4 - -# include <openssl/md4.h> -# include "crypto/evp.h" +IMPLEMENT_LEGACY_EVP_MD_METH(md4, MD4) static const EVP_MD md4_md = { NID_md4, NID_md4WithRSAEncryption, MD4_DIGEST_LENGTH, 0, - NULL, - NULL, - NULL, - NULL, - NULL, - MD4_CBLOCK, + LEGACY_EVP_MD_METH_TABLE(md4_init, md4_update, md4_final, NULL, MD4_CBLOCK), }; const EVP_MD *EVP_md4(void) { return &md4_md; } - -#endif /* OPENSSL_NO_MD4 */ diff --git a/crypto/evp/legacy_md5.c b/crypto/evp/legacy_md5.c index f125b33f91..9bb1258e47 100644 --- a/crypto/evp/legacy_md5.c +++ b/crypto/evp/legacy_md5.c @@ -7,29 +7,21 @@ * https://www.openssl.org/source/license.html */ -#include <openssl/opensslconf.h> +#include <openssl/md5.h> +#include "crypto/evp.h" +#include "legacy_meth.h" -#ifndef OPENSSL_NO_MD5 - -# include <openssl/md5.h> -# include "crypto/evp.h" +IMPLEMENT_LEGACY_EVP_MD_METH(md5, MD5) static const EVP_MD md5_md = { NID_md5, NID_md5WithRSAEncryption, MD5_DIGEST_LENGTH, 0, - NULL, - NULL, - NULL, - NULL, - NULL, - MD5_CBLOCK, + LEGACY_EVP_MD_METH_TABLE(md5_init, md5_update, md5_final, NULL, MD5_CBLOCK) }; const EVP_MD *EVP_md5(void) { return &md5_md; } - -#endif /* OPENSSL_NO_MD5 */ diff --git a/crypto/evp/legacy_md5_sha1.c b/crypto/evp/legacy_md5_sha1.c index a23febfd53..6da6b4fd95 100644 --- a/crypto/evp/legacy_md5_sha1.c +++ b/crypto/evp/legacy_md5_sha1.c @@ -7,31 +7,27 @@ * https://www.openssl.org/source/license.html */ -#include <openssl/opensslconf.h> - +#include "crypto/evp.h" #include "prov/md5_sha1.h" /* diverse MD5_SHA1 macros */ +#include "legacy_meth.h" -#ifndef OPENSSL_NO_MD5 - -# include <openssl/obj_mac.h> -# include "crypto/evp.h" +IMPLEMENT_LEGACY_EVP_MD_METH_LC(md5_sha1_int, md5_sha1) +static int md5_sha1_int_ctrl(EVP_MD_CTX *ctx, int cmd, int mslen, void *ms) +{ + return md5_sha1_ctrl(EVP_MD_CTX_md_data(ctx), cmd, mslen, ms); +} static const EVP_MD md5_sha1_md = { NID_md5_sha1, NID_md5_sha1, MD5_SHA1_DIGEST_LENGTH, 0, - NULL, - NULL, - NULL, - NULL, - NULL, - MD5_SHA1_CBLOCK, + LEGACY_EVP_MD_METH_TABLE(md5_sha1_int_init, md5_sha1_int_update, + md5_sha1_int_final, md5_sha1_int_ctrl, + MD5_SHA1_CBLOCK), }; const EVP_MD *EVP_md5_sha1(void) { return &md5_sha1_md; } - -#endif /* OPENSSL_NO_MD5 */ diff --git a/crypto/evp/legacy_mdc2.c b/crypto/evp/legacy_mdc2.c index 5b51b015ea..9144a5715c 100644 --- a/crypto/evp/legacy_mdc2.c +++ b/crypto/evp/legacy_mdc2.c @@ -7,29 +7,22 @@ * https://www.openssl.org/source/license.html */ -#include <openssl/opensslconf.h> +#include <openssl/mdc2.h> +#include "crypto/evp.h" +#include "legacy_meth.h" -#ifndef OPENSSL_NO_MDC2 - -# include <openssl/mdc2.h> -# include "crypto/evp.h" +IMPLEMENT_LEGACY_EVP_MD_METH(mdc2, MDC2) static const EVP_MD mdc2_md = { NID_mdc2, NID_mdc2WithRSA, MDC2_DIGEST_LENGTH, 0, - NULL, - NULL, - NULL, - NULL, - NULL, - MDC2_BLOCK, + LEGACY_EVP_MD_METH_TABLE(mdc2_init, mdc2_update, mdc2_final, NULL, + MDC2_BLOCK), }; const EVP_MD *EVP_mdc2(void) { return &mdc2_md; } - -#endif /* OPENSSL_NO_MDC2 */ diff --git a/crypto/evp/legacy_meth.h b/crypto/evp/legacy_meth.h new file mode 100644 index 0000000000..0a23efd05a --- /dev/null +++ b/crypto/evp/legacy_meth.h @@ -0,0 +1,40 @@ +/* + * Copyright 2019 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 + */ + +#define IMPLEMENT_LEGACY_EVP_MD_METH(nm, fn) \ +static int nm##_init(EVP_MD_CTX *ctx) \ +{ \ + return fn##_Init(EVP_MD_CTX_md_data(ctx)); \ +} \ +static int nm##_update(EVP_MD_CTX *ctx, const void *data, size_t count) \ +{ \ + return fn##_Update(EVP_MD_CTX_md_data(ctx), data, count); \ +} \ +static int nm##_final(EVP_MD_CTX *ctx, unsigned char *md) \ +{ \ + return fn##_Final(md, EVP_MD_CTX_md_data(ctx)); \ +} + +#define IMPLEMENT_LEGACY_EVP_MD_METH_LC(nm, fn) \ +static int nm##_init(EVP_MD_CTX *ctx) \ +{ \ + return fn##_init(EVP_MD_CTX_md_data(ctx)); \ +} \ +static int nm##_update(EVP_MD_CTX *ctx, const void *data, size_t count) \ +{ \ + return fn##_update(EVP_MD_CTX_md_data(ctx), data, count); \ +} \ +static int nm##_final(EVP_MD_CTX *ctx, unsigned char *md) \ +{ \ + return fn##_final(md, EVP_MD_CTX_md_data(ctx)); \ +} + + +#define LEGACY_EVP_MD_METH_TABLE(init, update, final, ctrl, blksz) \ + init, update, final, NULL, NULL, blksz, 0, ctrl diff --git a/crypto/evp/legacy_ripemd.c b/crypto/evp/legacy_ripemd.c new file mode 100644 index 0000000000..8edcbba371 --- /dev/null +++ b/crypto/evp/legacy_ripemd.c @@ -0,0 +1,28 @@ +/* + * Copyright 1995-2016 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/ripemd.h> +#include "crypto/evp.h" +#include "legacy_meth.h" + +IMPLEMENT_LEGACY_EVP_MD_METH(ripe, RIPEMD160) + +static const EVP_MD ripemd160_md = { + NID_ripemd160, + NID_ripemd160WithRSA, + RIPEMD160_DIGEST_LENGTH, + 0, + LEGACY_EVP_MD_METH_TABLE(ripe_init, ripe_update, ripe_final, NULL, + RIPEMD160_CBLOCK), +}; + +const EVP_MD *EVP_ripemd160(void) +{ + return &ripemd160_md; +} diff --git a/crypto/evp/legacy_sha.c b/crypto/evp/legacy_sha.c index 859c129a26..db289bf2b9 100644 --- a/crypto/evp/legacy_sha.c +++ b/crypto/evp/legacy_sha.c @@ -7,24 +7,83 @@ * https://www.openssl.org/source/license.html */ -#include <openssl/opensslconf.h> - -#include <openssl/obj_mac.h> #include <openssl/sha.h> /* diverse SHA macros */ #include "internal/sha3.h" /* KECCAK1600_WIDTH */ #include "crypto/evp.h" +/* Used by legacy methods */ +#include "crypto/sha.h" +#include "legacy_meth.h" +#include "evp_local.h" + +/*- + * LEGACY methods for SHA. + * These only remain to support engines that can get these methods. + * Hardware support for SHA3 has been removed from these legacy cases. + */ +#define IMPLEMENT_LEGACY_EVP_MD_METH_SHA3(nm, fn, tag) \ +static int nm##_init(EVP_MD_CTX *ctx) \ +{ \ + return fn##_init(EVP_MD_CTX_md_data(ctx), tag, ctx->digest->md_size * 8); \ +} \ +static int nm##_update(EVP_MD_CTX *ctx, const void *data, size_t count) \ +{ \ + return fn##_update(EVP_MD_CTX_md_data(ctx), data, count); \ +} \ +static int nm##_final(EVP_MD_CTX *ctx, unsigned char *md) \ +{ \ + return fn##_final(md, EVP_MD_CTX_md_data(ctx)); \ +} +#define IMPLEMENT_LEGACY_EVP_MD_METH_SHAKE(nm, fn, tag) \ +static int nm##_init(EVP_MD_CTX *ctx) \ +{ \ + return fn##_init(EVP_MD_CTX_md_data(ctx), tag, ctx->digest->md_size * 8); \ +} \ + +#define sha512_224_Init sha512_224_init +#define sha512_256_Init sha512_256_init + +#define sha512_224_Update SHA512_Update +#define sha512_224_Final SHA512_Final +#define sha512_256_Update SHA512_Update +#define sha512_256_Final SHA512_Final + +IMPLEMENT_LEGACY_EVP_MD_METH(sha1, SHA1) +IMPLEMENT_LEGACY_EVP_MD_METH(sha224, SHA224) +IMPLEMENT_LEGACY_EVP_MD_METH(sha256, SHA256) +IMPLEMENT_LEGACY_EVP_MD_METH(sha384, SHA384) +IMPLEMENT_LEGACY_EVP_MD_METH(sha512, SHA512) +IMPLEMENT_LEGACY_EVP_MD_METH(sha512_224_int, sha512_224) +IMPLEMENT_LEGACY_EVP_MD_METH(sha512_256_int, sha512_256) +IMPLEMENT_LEGACY_EVP_MD_METH_SHA3(sha3_int, sha3, '\x06') +IMPLEMENT_LEGACY_EVP_MD_METH_SHAKE(shake, sha3, '\x1f') + +static int sha1_int_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2) +{ + return sha1_ctrl(ctx != NULL ? EVP_MD_CTX_md_data(ctx) : NULL, cmd, p1, p2); +} + +static int shake_ctrl(EVP_MD_CTX *evp_ctx, int cmd, int p1, void *p2) +{ + KECCAK1600_CTX *ctx = evp_ctx->md_data; + + switch (cmd) { + case EVP_MD_CTRL_XOF_LEN: + ctx->md_size = p1; + return 1; + default: + return 0; + } +} + + static const EVP_MD sha1_md = { NID_sha1, NID_sha1WithRSAEncryption, SHA_DIGEST_LENGTH, EVP_MD_FLAG_DIGALGID_ABSENT, - NULL, - NULL, - NULL, - NULL, - NULL, - SHA_CBLOCK, + LEGACY_EVP_MD_METH_TABLE(sha1_init, sha1_update, sha1_final, sha1_int_ctrl, + SHA_CBLOCK), }; const EVP_MD *EVP_sha1(void) @@ -37,12 +96,8 @@ static const EVP_MD sha224_md = { NID_sha224WithRSAEncryption, SHA224_DIGEST_LENGTH, EVP_MD_FLAG_DIGALGID_ABSENT, - NULL, - NULL, - NULL, - NULL, - NULL, - SHA256_CBLOCK, + LEGACY_EVP_MD_METH_TABLE(sha224_init, sha224_update, sha224_final, NULL, + SHA256_CBLOCK), }; const EVP_MD *EVP_sha224(void) @@ -55,12 +110,8 @@ static const EVP_MD sha256_md = { NID_sha256WithRSAEncryption, SHA256_DIGEST_LENGTH, EVP_MD_FLAG_DIGALGID_ABSENT, - NULL, - NULL, - NULL, - NULL, - NULL, - SHA256_CBLOCK, + LEGACY_EVP_MD_METH_TABLE(sha256_init, sha256_update, sha256_final, NULL, + SHA256_CBLOCK), }; const EVP_MD *EVP_sha256(void) @@ -73,12 +124,8 @@ static const EVP_MD sha512_224_md = { NID_sha512_224WithRSAEncryption, SHA224_DIGEST_LENGTH, EVP_MD_FLAG_DIGALGID_ABSENT, - NULL, - NULL, - NULL, - NULL, - NULL, - SHA512_CBLOCK, + LEGACY_EVP_MD_METH_TABLE(sha512_224_int_init, sha512_224_int_update, + sha512_224_int_final, NULL, SHA512_CBLOCK), }; const EVP_MD *EVP_sha512_224(void) @@ -91,12 +138,8 @@ static const EVP_MD sha512_256_md = { NID_sha512_256WithRSAEncryption, SHA256_DIGEST_LENGTH, EVP_MD_FLAG_DIGALGID_ABSENT, - NULL, - NULL, - NULL, - NULL, - NULL, - SHA512_CBLOCK, + LEGACY_EVP_MD_METH_TABLE(sha512_256_int_init, sha512_256_int_update, + sha512_256_int_final, NULL, SHA512_CBLOCK), }; const EVP_MD *EVP_sha512_256(void) @@ -109,12 +152,8 @@ static const EVP_MD sha384_md = { NID_sha384WithRSAEncryption, SHA384_DIGEST_LENGTH, EVP_MD_FLAG_DIGALGID_ABSENT, - NULL, - NULL, - NULL, - NULL, - NULL, - SHA512_CBLOCK, + LEGACY_EVP_MD_METH_TABLE(sha384_init, sha384_update, sha384_final, NULL, + SHA512_CBLOCK), }; const EVP_MD *EVP_sha384(void) @@ -127,12 +166,8 @@ static const EVP_MD sha512_md = { NID_sha512WithRSAEncryption, SHA512_DIGEST_LENGTH, EVP_MD_FLAG_DIGALGID_ABSENT, - NULL, - NULL, - NULL, - NULL, - NULL, - SHA512_CBLOCK, + LEGACY_EVP_MD_METH_TABLE(sha512_init, sha512_update, sha512_final, NULL, + SHA512_CBLOCK), }; const EVP_MD *EVP_sha512(void) @@ -140,40 +175,33 @@ 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, \ - NULL, \ - NULL, \ - NULL, \ - NULL, \ - NULL, \ - (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, \ - NULL, \ - NULL, \ - NULL, \ - NULL, \ - NULL, \ - (KECCAK1600_WIDTH - bitlen * 2) / 8, \ - }; \ - return &shake##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, \ + LEGACY_EVP_MD_METH_TABLE(sha3_int_init, sha3_int_update, \ + sha3_int_final, NULL, \ + (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, \ + LEGACY_EVP_MD_METH_TABLE(shake_init, sha3_int_update, sha3_int_final, \ + shake_ctrl, (KECCAK1600_WIDTH - bitlen * 2) / 8), \ + }; \ + return &shake##bitlen##_md; \ +} EVP_MD_SHA3(224) EVP_MD_SHA3(256) diff --git a/crypto/evp/legacy_wp.c b/crypto/evp/legacy_wp.c new file mode 100644 index 0000000000..a9af8c34de --- /dev/null +++ b/crypto/evp/legacy_wp.c @@ -0,0 +1,28 @@ +/* + * Copyright 2005-2016 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/whrlpool.h> +#include "crypto/evp.h" +#include "legacy_meth.h" + +IMPLEMENT_LEGACY_EVP_MD_METH(wp, WHIRLPOOL) + +static const EVP_MD whirlpool_md = { + NID_whirlpool, + 0, + WHIRLPOOL_DIGEST_LENGTH, + 0, + LEGACY_EVP_MD_METH_TABLE(wp_init, wp_update, wp_final, NULL, + WHIRLPOOL_BBLOCK / 8), +}; + +const EVP_MD *EVP_whirlpool(void) +{ + return &whirlpool_md; +} diff --git a/crypto/evp/m_ripemd.c b/crypto/evp/m_ripemd.c deleted file mode 100644 index 4e05d18ba6..0000000000 --- a/crypto/evp/m_ripemd.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 1995-2016 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 <stdio.h> -#include "internal/cryptlib.h" - -#ifndef OPENSSL_NO_RMD160 - -# include <openssl/ripemd.h> -# include <openssl/evp.h> -# include <openssl/objects.h> -# include <openssl/x509.h> -# include <openssl/rsa.h> -# include "crypto/evp.h" - -static int init(EVP_MD_CTX *ctx) -{ - return RIPEMD160_Init(EVP_MD_CTX_md_data(ctx)); -} - -static int update(EVP_MD_CTX *ctx, const void *data, size_t count) -{ - return RIPEMD160_Update(EVP_MD_CTX_md_data(ctx), data, count); -} - -static int final(EVP_MD_CTX *ctx, unsigned char *md) -{ - return RIPEMD160_Final(md, EVP_MD_CTX_md_data(ctx)); -} - -static const EVP_MD ripemd160_md = { - NID_ripemd160, - NID_ripemd160WithRSA, - RIPEMD160_DIGEST_LENGTH, - 0, - init, - update, - final, - NULL, - NULL, - RIPEMD160_CBLOCK, - sizeof(EVP_MD *) + sizeof(RIPEMD160_CTX), -}; - -const EVP_MD *EVP_ripemd160(void) -{ - return &ripemd160_md; -} -#endif diff --git a/crypto/evp/m_wp.c b/crypto/evp/m_wp.c deleted file mode 100644 index ee69df5658..0000000000 --- a/crypto/evp/m_wp.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2005-2016 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 <stdio.h> -#include "internal/cryptlib.h" - -#ifndef OPENSSL_NO_WHIRLPOOL - -# include <openssl/evp.h> -# include <openssl/objects.h> -# include <openssl/x509.h> -# include <openssl/whrlpool.h> -# include "crypto/evp.h" - -static int init(EVP_MD_CTX *ctx) -{ - return WHIRLPOOL_Init(EVP_MD_CTX_md_data(ctx)); -} - -static int update(EVP_MD_CTX *ctx, const void *data, size_t count) -{ - return WHIRLPOOL_Update(EVP_MD_CTX_md_data(ctx), data, count); -} - -static int final(EVP_MD_CTX *ctx, unsigned char *md) -{ - return WHIRLPOOL_Final(md, EVP_MD_CTX_md_data(ctx)); -} - -static const EVP_MD whirlpool_md = { - NID_whirlpool, - 0, - WHIRLPOOL_DIGEST_LENGTH, - 0, - init, - update, - final, - NULL, - NULL, - WHIRLPOOL_BBLOCK / 8, - sizeof(EVP_MD *) + sizeof(WHIRLPOOL_CTX), -}; - -const EVP_MD *EVP_whirlpool(void) -{ - return &whirlpool_md; -} -#endif diff --git a/crypto/sm3/build.info b/crypto/sm3/build.info index 6009b1949e..eca68216f2 100644 --- a/crypto/sm3/build.info +++ b/crypto/sm3/build.info @@ -1,2 +1,5 @@ LIBS=../../libcrypto -SOURCE[../../libcrypto]=sm3.c m_sm3.c + +IF[{- !$disabled{sm3} -}] + SOURCE[../../libcrypto]=sm3.c legacy_sm3.c +ENDIF
\ No newline at end of file diff --git a/crypto/sm3/legacy_sm3.c b/crypto/sm3/legacy_sm3.c new file mode 100644 index 0000000000..da07aed12a --- /dev/null +++ b/crypto/sm3/legacy_sm3.c @@ -0,0 +1,30 @@ +/* + * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2017 Ribose Inc. 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 "crypto/evp.h" +#include "../evp/legacy_meth.h" +#include "internal/sm3.h" + +IMPLEMENT_LEGACY_EVP_MD_METH_LC(sm3_int, sm3) + +static const EVP_MD sm3_md = { + NID_sm3, + NID_sm3WithRSAEncryption, + SM3_DIGEST_LENGTH, + 0, + LEGACY_EVP_MD_METH_TABLE(sm3_int_init, sm3_int_update, sm3_int_final, NULL, + SM3_CBLOCK), +}; + +const EVP_MD *EVP_sm3(void) +{ + return &sm3_md; +} diff --git a/crypto/sm3/m_sm3.c b/crypto/sm3/m_sm3.c deleted file mode 100644 index 4bccaaf1dc..0000000000 --- a/crypto/sm3/m_sm3.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. - * Copyright 2017 Ribose Inc. 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 "internal/cryptlib.h" - -#ifndef OPENSSL_NO_SM3 -# include <openssl/evp.h> -# include "internal/sm3.h" -# include "crypto/evp.h" - -static int init(EVP_MD_CTX *ctx) -{ - return sm3_init(EVP_MD_CTX_md_data(ctx)); -} - -static int update(EVP_MD_CTX *ctx, const void *data, size_t count) -{ - return sm3_update(EVP_MD_CTX_md_data(ctx), data, count); -} - -static int final(EVP_MD_CTX *ctx, unsigned char *md) -{ - return sm3_final(md, EVP_MD_CTX_md_data(ctx)); -} - -static const EVP_MD sm3_md = { - NID_sm3, - NID_sm3WithRSAEncryption, - SM3_DIGEST_LENGTH, - 0, - init, - update, - final, - NULL, - NULL, - SM3_CBLOCK, - sizeof(EVP_MD *) + sizeof(SM3_CTX), -}; - -const EVP_MD *EVP_sm3(void) -{ - return &sm3_md; -} - -#endif |