diff options
Diffstat (limited to 'security/nettle/files/patch-examples-nettle-openssl.c')
-rw-r--r-- | security/nettle/files/patch-examples-nettle-openssl.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/security/nettle/files/patch-examples-nettle-openssl.c b/security/nettle/files/patch-examples-nettle-openssl.c new file mode 100644 index 000000000000..d7cf037c61c3 --- /dev/null +++ b/security/nettle/files/patch-examples-nettle-openssl.c @@ -0,0 +1,49 @@ +--- examples/nettle-openssl.c.orig 2021-03-21 08:32:25 UTC ++++ examples/nettle-openssl.c +@@ -374,6 +374,7 @@ openssl_hash_update(void *p, + EVP_DigestUpdate(ctx->evp, src, length); + } + ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L + #define OPENSSL_HASH(NAME, name) \ + static void \ + openssl_##name##_init(void *p) \ +@@ -404,6 +405,38 @@ nettle_openssl_##name = { \ + openssl_hash_update, \ + openssl_##name##_digest \ + }; ++#else ++#define OPENSSL_HASH(NAME, name) \ ++static void \ ++openssl_##name##_init(void *p) \ ++{ \ ++ struct openssl_hash_ctx *ctx = p; \ ++ if ((ctx->evp = EVP_MD_CTX_create()) == NULL) \ ++ return; \ ++ \ ++ EVP_DigestInit(ctx->evp, EVP_##name()); \ ++} \ ++ \ ++static void \ ++openssl_##name##_digest(void *p, \ ++ size_t length, uint8_t *dst) \ ++{ \ ++ struct openssl_hash_ctx *ctx = p; \ ++ assert(length == NAME##_DIGEST_LENGTH); \ ++ \ ++ EVP_DigestFinal(ctx->evp, dst, NULL); \ ++ EVP_DigestInit(ctx->evp, EVP_##name()); \ ++} \ ++ \ ++const struct nettle_hash \ ++nettle_openssl_##name = { \ ++ "openssl " #name, sizeof(struct openssl_hash_ctx), \ ++ NAME##_DIGEST_LENGTH, NAME##_CBLOCK, \ ++ openssl_##name##_init, \ ++ openssl_hash_update, \ ++ openssl_##name##_digest \ ++}; ++#endif + + OPENSSL_HASH(MD5, md5) + OPENSSL_HASH(SHA, sha1) |