/src/openssl/providers/implementations/include/prov/digestcommon.h
Line | Count | Source |
1 | | /* |
2 | | * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. |
3 | | * |
4 | | * Licensed under the Apache License 2.0 (the "License"). You may not use |
5 | | * this file except in compliance with the License. You can obtain a copy |
6 | | * in the file LICENSE in the source distribution or at |
7 | | * https://www.openssl.org/source/license.html |
8 | | */ |
9 | | |
10 | | #ifndef OSSL_PROVIDERS_DIGESTCOMMON_H |
11 | | #define OSSL_PROVIDERS_DIGESTCOMMON_H |
12 | | |
13 | | #include <openssl/core_dispatch.h> |
14 | | #include <openssl/core_names.h> |
15 | | #include <openssl/params.h> |
16 | | #include "prov/providercommon.h" |
17 | | |
18 | | /* Internal flags that can be queried */ |
19 | 1.05k | #define PROV_DIGEST_FLAG_XOF 0x0001 |
20 | 1.07k | #define PROV_DIGEST_FLAG_ALGID_ABSENT 0x0002 |
21 | | |
22 | | #ifdef __cplusplus |
23 | | extern "C" { |
24 | | #endif |
25 | | |
26 | | #define PROV_FUNC_DIGEST_GET_PARAM(name, blksize, dgstsize, flags) \ |
27 | | static OSSL_FUNC_digest_get_params_fn name##_get_params; \ |
28 | | static int name##_get_params(OSSL_PARAM params[]) \ |
29 | 2.06k | { \ |
30 | 2.06k | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ |
31 | 2.06k | } cshake_prov.c:cshake_128_get_params Line | Count | Source | 29 | 18 | { \ | 30 | 18 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 18 | } |
cshake_prov.c:cshake_256_get_params Line | Count | Source | 29 | 18 | { \ | 30 | 18 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 18 | } |
md5_prov.c:md5_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
md5_sha1_prov.c:md5_sha1_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
null_prov.c:nullmd_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
ripemd_prov.c:ripemd160_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
sha2_prov.c:sha1_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
sha2_prov.c:sha224_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
sha2_prov.c:sha256_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
sha2_prov.c:sha256_192_internal_get_params Line | Count | Source | 29 | 37 | { \ | 30 | 37 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 37 | } |
sha2_prov.c:sha384_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
sha2_prov.c:sha512_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
sha2_prov.c:sha512_224_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
sha2_prov.c:sha512_256_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
sha3_prov.c:sha3_224_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
sha3_prov.c:sha3_256_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
sha3_prov.c:sha3_384_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
sha3_prov.c:sha3_512_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
sha3_prov.c:keccak_224_get_params Line | Count | Source | 29 | 83 | { \ | 30 | 83 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 83 | } |
sha3_prov.c:keccak_256_get_params Line | Count | Source | 29 | 83 | { \ | 30 | 83 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 83 | } |
sha3_prov.c:keccak_384_get_params Line | Count | Source | 29 | 83 | { \ | 30 | 83 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 83 | } |
sha3_prov.c:keccak_512_get_params Line | Count | Source | 29 | 83 | { \ | 30 | 83 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 83 | } |
sha3_prov.c:shake_128_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
sha3_prov.c:shake_256_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
sha3_prov.c:cshake_keccak_128_get_params Line | Count | Source | 29 | 18 | { \ | 30 | 18 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 18 | } |
sha3_prov.c:cshake_keccak_256_get_params Line | Count | Source | 29 | 18 | { \ | 30 | 18 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 18 | } |
sm3_prov.c:sm3_get_params Line | Count | Source | 29 | 90 | { \ | 30 | 90 | return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \ | 31 | 90 | } |
|
32 | | |
33 | | #define PROV_DISPATCH_FUNC_DIGEST_GET_PARAMS(name) \ |
34 | | { OSSL_FUNC_DIGEST_GET_PARAMS, (void (*)(void))name##_get_params }, \ |
35 | | { \ |
36 | | OSSL_FUNC_DIGEST_GETTABLE_PARAMS, \ |
37 | | (void (*)(void))ossl_digest_default_gettable_params \ |
38 | | } |
39 | | |
40 | | #define PROV_FUNC_DIGEST_FINAL(name, dgstsize, fin) \ |
41 | | static OSSL_FUNC_digest_final_fn name##_internal_final; \ |
42 | | static int name##_internal_final(void *ctx, unsigned char *out, size_t *outl, \ |
43 | | size_t outsz) \ |
44 | 473M | { \ |
45 | 473M | if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) { \ |
46 | 473M | *outl = dgstsize; \ |
47 | 473M | return 1; \ |
48 | 473M | } \ |
49 | 473M | return 0; \ |
50 | 473M | } md5_prov.c:md5_internal_final Line | Count | Source | 44 | 1.14M | { \ | 45 | 1.14M | if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) { \ | 46 | 1.14M | *outl = dgstsize; \ | 47 | 1.14M | return 1; \ | 48 | 1.14M | } \ | 49 | 1.14M | return 0; \ | 50 | 1.14M | } |
md5_sha1_prov.c:md5_sha1_internal_final Line | Count | Source | 44 | 23.5k | { \ | 45 | 23.5k | if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) { \ | 46 | 23.5k | *outl = dgstsize; \ | 47 | 23.5k | return 1; \ | 48 | 23.5k | } \ | 49 | 23.5k | return 0; \ | 50 | 23.5k | } |
ripemd_prov.c:ripemd160_internal_final Line | Count | Source | 44 | 2.35M | { \ | 45 | 2.35M | if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) { \ | 46 | 2.35M | *outl = dgstsize; \ | 47 | 2.35M | return 1; \ | 48 | 2.35M | } \ | 49 | 2.35M | return 0; \ | 50 | 2.35M | } |
sha2_prov.c:sha1_internal_final Line | Count | Source | 44 | 2.03M | { \ | 45 | 2.03M | if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) { \ | 46 | 2.03M | *outl = dgstsize; \ | 47 | 2.03M | return 1; \ | 48 | 2.03M | } \ | 49 | 2.03M | return 0; \ | 50 | 2.03M | } |
sha2_prov.c:sha224_internal_final Line | Count | Source | 44 | 562k | { \ | 45 | 562k | if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) { \ | 46 | 562k | *outl = dgstsize; \ | 47 | 562k | return 1; \ | 48 | 562k | } \ | 49 | 562k | return 0; \ | 50 | 562k | } |
sha2_prov.c:sha256_internal_final Line | Count | Source | 44 | 443M | { \ | 45 | 443M | if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) { \ | 46 | 443M | *outl = dgstsize; \ | 47 | 443M | return 1; \ | 48 | 443M | } \ | 49 | 443M | return 0; \ | 50 | 443M | } |
Unexecuted instantiation: sha2_prov.c:sha256_192_internal_internal_final sha2_prov.c:sha384_internal_final Line | Count | Source | 44 | 2.37M | { \ | 45 | 2.37M | if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) { \ | 46 | 2.37M | *outl = dgstsize; \ | 47 | 2.37M | return 1; \ | 48 | 2.37M | } \ | 49 | 2.37M | return 0; \ | 50 | 2.37M | } |
sha2_prov.c:sha512_internal_final Line | Count | Source | 44 | 20.9M | { \ | 45 | 20.9M | if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) { \ | 46 | 20.9M | *outl = dgstsize; \ | 47 | 20.9M | return 1; \ | 48 | 20.9M | } \ | 49 | 20.9M | return 0; \ | 50 | 20.9M | } |
sha2_prov.c:sha512_224_internal_final Line | Count | Source | 44 | 392k | { \ | 45 | 392k | if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) { \ | 46 | 392k | *outl = dgstsize; \ | 47 | 392k | return 1; \ | 48 | 392k | } \ | 49 | 392k | return 0; \ | 50 | 392k | } |
sha2_prov.c:sha512_256_internal_final Line | Count | Source | 44 | 216k | { \ | 45 | 216k | if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) { \ | 46 | 216k | *outl = dgstsize; \ | 47 | 216k | return 1; \ | 48 | 216k | } \ | 49 | 216k | return 0; \ | 50 | 216k | } |
sm3_prov.c:sm3_internal_final Line | Count | Source | 44 | 6.99k | { \ | 45 | 6.99k | if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) { \ | 46 | 6.99k | *outl = dgstsize; \ | 47 | 6.99k | return 1; \ | 48 | 6.99k | } \ | 49 | 6.99k | return 0; \ | 50 | 6.99k | } |
|
51 | | |
52 | | #if defined(FIPS_MODULE) |
53 | | #include "internal/fips.h" |
54 | | #include "prov/provider_ctx.h" |
55 | | #define DIGEST_PROV_CHECK(provctx, name) \ |
56 | | if (!ossl_prov_is_running()) \ |
57 | | return NULL; \ |
58 | | if (!ossl_deferred_self_test(PROV_LIBCTX_OF(provctx), \ |
59 | | ST_ID_DIGEST_##name)) \ |
60 | | return NULL |
61 | | #else |
62 | | #define DIGEST_PROV_CHECK(_provctx, _name) \ |
63 | 683k | if (!ossl_prov_is_running()) \ |
64 | 683k | return NULL |
65 | | #endif /* FIPS_MODULE && DIGEST_IS_FIPS */ |
66 | | |
67 | | #define PROV_DISPATCH_FUNC_DIGEST_CONSTRUCT_START( \ |
68 | | name, CTX, blksize, dgstsize, flags, upd, fin) \ |
69 | | static OSSL_FUNC_digest_newctx_fn name##_newctx; \ |
70 | | static OSSL_FUNC_digest_freectx_fn name##_freectx; \ |
71 | | static OSSL_FUNC_digest_dupctx_fn name##_dupctx; \ |
72 | | static void *name##_newctx(void *prov_ctx) \ |
73 | 620k | { \ |
74 | 620k | DIGEST_PROV_CHECK(prov_ctx, name); \ |
75 | 620k | return OPENSSL_zalloc(sizeof(CTX)); \ |
76 | 620k | } \ |
77 | | static void name##_freectx(void *vctx) \ |
78 | 13.1M | { \ |
79 | 13.1M | CTX *ctx = (CTX *)vctx; \ |
80 | 13.1M | OPENSSL_clear_free(ctx, sizeof(*ctx)); \ |
81 | 13.1M | } \ Line | Count | Source | 78 | 2.25M | { \ | 79 | 2.25M | CTX *ctx = (CTX *)vctx; \ | 80 | 2.25M | OPENSSL_clear_free(ctx, sizeof(*ctx)); \ | 81 | 2.25M | } \ |
md5_sha1_prov.c:md5_sha1_freectx Line | Count | Source | 78 | 25.3k | { \ | 79 | 25.3k | CTX *ctx = (CTX *)vctx; \ | 80 | 25.3k | OPENSSL_clear_free(ctx, sizeof(*ctx)); \ | 81 | 25.3k | } \ |
null_prov.c:nullmd_freectx Line | Count | Source | 78 | 108 | { \ | 79 | 108 | CTX *ctx = (CTX *)vctx; \ | 80 | 108 | OPENSSL_clear_free(ctx, sizeof(*ctx)); \ | 81 | 108 | } \ |
ripemd_prov.c:ripemd160_freectx Line | Count | Source | 78 | 171k | { \ | 79 | 171k | CTX *ctx = (CTX *)vctx; \ | 80 | 171k | OPENSSL_clear_free(ctx, sizeof(*ctx)); \ | 81 | 171k | } \ |
Line | Count | Source | 78 | 3.42M | { \ | 79 | 3.42M | CTX *ctx = (CTX *)vctx; \ | 80 | 3.42M | OPENSSL_clear_free(ctx, sizeof(*ctx)); \ | 81 | 3.42M | } \ |
sha2_prov.c:sha224_freectx Line | Count | Source | 78 | 58.5k | { \ | 79 | 58.5k | CTX *ctx = (CTX *)vctx; \ | 80 | 58.5k | OPENSSL_clear_free(ctx, sizeof(*ctx)); \ | 81 | 58.5k | } \ |
sha2_prov.c:sha256_freectx Line | Count | Source | 78 | 3.75M | { \ | 79 | 3.75M | CTX *ctx = (CTX *)vctx; \ | 80 | 3.75M | OPENSSL_clear_free(ctx, sizeof(*ctx)); \ | 81 | 3.75M | } \ |
sha2_prov.c:sha256_192_internal_freectx Line | Count | Source | 78 | 1 | { \ | 79 | 1 | CTX *ctx = (CTX *)vctx; \ | 80 | 1 | OPENSSL_clear_free(ctx, sizeof(*ctx)); \ | 81 | 1 | } \ |
sha2_prov.c:sha384_freectx Line | Count | Source | 78 | 3.25M | { \ | 79 | 3.25M | CTX *ctx = (CTX *)vctx; \ | 80 | 3.25M | OPENSSL_clear_free(ctx, sizeof(*ctx)); \ | 81 | 3.25M | } \ |
sha2_prov.c:sha512_freectx Line | Count | Source | 78 | 96.5k | { \ | 79 | 96.5k | CTX *ctx = (CTX *)vctx; \ | 80 | 96.5k | OPENSSL_clear_free(ctx, sizeof(*ctx)); \ | 81 | 96.5k | } \ |
sha2_prov.c:sha512_224_freectx Line | Count | Source | 78 | 40.4k | { \ | 79 | 40.4k | CTX *ctx = (CTX *)vctx; \ | 80 | 40.4k | OPENSSL_clear_free(ctx, sizeof(*ctx)); \ | 81 | 40.4k | } \ |
sha2_prov.c:sha512_256_freectx Line | Count | Source | 78 | 10.3k | { \ | 79 | 10.3k | CTX *ctx = (CTX *)vctx; \ | 80 | 10.3k | OPENSSL_clear_free(ctx, sizeof(*ctx)); \ | 81 | 10.3k | } \ |
Line | Count | Source | 78 | 5.04k | { \ | 79 | 5.04k | CTX *ctx = (CTX *)vctx; \ | 80 | 5.04k | OPENSSL_clear_free(ctx, sizeof(*ctx)); \ | 81 | 5.04k | } \ |
|
82 | | static void *name##_dupctx(void *ctx) \ |
83 | 8.75M | { \ |
84 | 8.75M | CTX *in = (CTX *)ctx; \ |
85 | 8.75M | CTX *ret = ossl_prov_is_running() ? OPENSSL_malloc(sizeof(*ret)) : NULL; \ |
86 | 8.75M | if (ret != NULL) \ |
87 | 8.75M | *ret = *in; \ |
88 | 8.75M | return ret; \ |
89 | 8.75M | } \ |
90 | | static void name##_copyctx(void *voutctx, void *vinctx) \ |
91 | 5.52M | { \ |
92 | 5.52M | CTX *outctx = (CTX *)voutctx; \ |
93 | 5.52M | CTX *inctx = (CTX *)vinctx; \ |
94 | 5.52M | *outctx = *inctx; \ |
95 | 5.52M | } \ Line | Count | Source | 91 | 783k | { \ | 92 | 783k | CTX *outctx = (CTX *)voutctx; \ | 93 | 783k | CTX *inctx = (CTX *)vinctx; \ | 94 | 783k | *outctx = *inctx; \ | 95 | 783k | } \ |
md5_sha1_prov.c:md5_sha1_copyctx Line | Count | Source | 91 | 10.9k | { \ | 92 | 10.9k | CTX *outctx = (CTX *)voutctx; \ | 93 | 10.9k | CTX *inctx = (CTX *)vinctx; \ | 94 | 10.9k | *outctx = *inctx; \ | 95 | 10.9k | } \ |
null_prov.c:nullmd_copyctx Line | Count | Source | 91 | 43 | { \ | 92 | 43 | CTX *outctx = (CTX *)voutctx; \ | 93 | 43 | CTX *inctx = (CTX *)vinctx; \ | 94 | 43 | *outctx = *inctx; \ | 95 | 43 | } \ |
ripemd_prov.c:ripemd160_copyctx Line | Count | Source | 91 | 2.36k | { \ | 92 | 2.36k | CTX *outctx = (CTX *)voutctx; \ | 93 | 2.36k | CTX *inctx = (CTX *)vinctx; \ | 94 | 2.36k | *outctx = *inctx; \ | 95 | 2.36k | } \ |
Line | Count | Source | 91 | 669k | { \ | 92 | 669k | CTX *outctx = (CTX *)voutctx; \ | 93 | 669k | CTX *inctx = (CTX *)vinctx; \ | 94 | 669k | *outctx = *inctx; \ | 95 | 669k | } \ |
sha2_prov.c:sha224_copyctx Line | Count | Source | 91 | 550k | { \ | 92 | 550k | CTX *outctx = (CTX *)voutctx; \ | 93 | 550k | CTX *inctx = (CTX *)vinctx; \ | 94 | 550k | *outctx = *inctx; \ | 95 | 550k | } \ |
sha2_prov.c:sha256_copyctx Line | Count | Source | 91 | 1.96M | { \ | 92 | 1.96M | CTX *outctx = (CTX *)voutctx; \ | 93 | 1.96M | CTX *inctx = (CTX *)vinctx; \ | 94 | 1.96M | *outctx = *inctx; \ | 95 | 1.96M | } \ |
Unexecuted instantiation: sha2_prov.c:sha256_192_internal_copyctx sha2_prov.c:sha384_copyctx Line | Count | Source | 91 | 796k | { \ | 92 | 796k | CTX *outctx = (CTX *)voutctx; \ | 93 | 796k | CTX *inctx = (CTX *)vinctx; \ | 94 | 796k | *outctx = *inctx; \ | 95 | 796k | } \ |
sha2_prov.c:sha512_copyctx Line | Count | Source | 91 | 362k | { \ | 92 | 362k | CTX *outctx = (CTX *)voutctx; \ | 93 | 362k | CTX *inctx = (CTX *)vinctx; \ | 94 | 362k | *outctx = *inctx; \ | 95 | 362k | } \ |
sha2_prov.c:sha512_224_copyctx Line | Count | Source | 91 | 277k | { \ | 92 | 277k | CTX *outctx = (CTX *)voutctx; \ | 93 | 277k | CTX *inctx = (CTX *)vinctx; \ | 94 | 277k | *outctx = *inctx; \ | 95 | 277k | } \ |
sha2_prov.c:sha512_256_copyctx Line | Count | Source | 91 | 101k | { \ | 92 | 101k | CTX *outctx = (CTX *)voutctx; \ | 93 | 101k | CTX *inctx = (CTX *)vinctx; \ | 94 | 101k | *outctx = *inctx; \ | 95 | 101k | } \ |
Line | Count | Source | 91 | 3.01k | { \ | 92 | 3.01k | CTX *outctx = (CTX *)voutctx; \ | 93 | 3.01k | CTX *inctx = (CTX *)vinctx; \ | 94 | 3.01k | *outctx = *inctx; \ | 95 | 3.01k | } \ |
|
96 | | PROV_FUNC_DIGEST_FINAL(name, dgstsize, fin) \ |
97 | | PROV_FUNC_DIGEST_GET_PARAM(name, blksize, dgstsize, flags) \ |
98 | | const OSSL_DISPATCH ossl_##name##_functions[] = { \ |
99 | | { OSSL_FUNC_DIGEST_NEWCTX, (void (*)(void))name##_newctx }, \ |
100 | | { OSSL_FUNC_DIGEST_UPDATE, (void (*)(void))upd }, \ |
101 | | { OSSL_FUNC_DIGEST_FINAL, (void (*)(void))name##_internal_final }, \ |
102 | | { OSSL_FUNC_DIGEST_FREECTX, (void (*)(void))name##_freectx }, \ |
103 | | { OSSL_FUNC_DIGEST_DUPCTX, (void (*)(void))name##_dupctx }, \ |
104 | | { OSSL_FUNC_DIGEST_COPYCTX, (void (*)(void))name##_copyctx }, \ |
105 | | PROV_DISPATCH_FUNC_DIGEST_GET_PARAMS(name) |
106 | | |
107 | | #define PROV_DISPATCH_FUNC_DIGEST_CONSTRUCT_END \ |
108 | | { \ |
109 | | 0, NULL \ |
110 | | } \ |
111 | | } \ |
112 | | ; |
113 | | |
114 | | #define IMPLEMENT_digest_functions( \ |
115 | | name, CTX, blksize, dgstsize, flags, init, upd, fin) \ |
116 | | static OSSL_FUNC_digest_init_fn name##_internal_init; \ |
117 | | static int name##_internal_init(void *ctx, \ |
118 | | ossl_unused const OSSL_PARAM params[]) \ |
119 | 2.49M | { \ |
120 | 2.49M | return ossl_prov_is_running() && init(ctx); \ |
121 | 2.49M | } \ md5_prov.c:md5_internal_init Line | Count | Source | 119 | 130k | { \ | 120 | 130k | return ossl_prov_is_running() && init(ctx); \ | 121 | 130k | } \ |
null_prov.c:nullmd_internal_init Line | Count | Source | 119 | 168 | { \ | 120 | 168 | return ossl_prov_is_running() && init(ctx); \ | 121 | 168 | } \ |
ripemd_prov.c:ripemd160_internal_init Line | Count | Source | 119 | 2.35M | { \ | 120 | 2.35M | return ossl_prov_is_running() && init(ctx); \ | 121 | 2.35M | } \ |
sm3_prov.c:sm3_internal_init Line | Count | Source | 119 | 7.16k | { \ | 120 | 7.16k | return ossl_prov_is_running() && init(ctx); \ | 121 | 7.16k | } \ |
|
122 | | PROV_DISPATCH_FUNC_DIGEST_CONSTRUCT_START(name, CTX, blksize, dgstsize, flags, \ |
123 | | upd, fin), \ |
124 | | { OSSL_FUNC_DIGEST_INIT, (void (*)(void))name##_internal_init }, \ |
125 | | PROV_DISPATCH_FUNC_DIGEST_CONSTRUCT_END |
126 | | |
127 | | #define IMPLEMENT_digest_functions_with_settable_ctx( \ |
128 | | name, CTX, blksize, dgstsize, flags, init, upd, fin, \ |
129 | | settable_ctx_params, set_ctx_params) \ |
130 | | static OSSL_FUNC_digest_init_fn name##_internal_init; \ |
131 | | static int name##_internal_init(void *ctx, const OSSL_PARAM params[]) \ |
132 | 1.26M | { \ |
133 | 1.26M | return ossl_prov_is_running() \ |
134 | 1.26M | && init(ctx) \ |
135 | 1.26M | && set_ctx_params(ctx, params); \ |
136 | 1.26M | } \ md5_sha1_prov.c:md5_sha1_internal_init Line | Count | Source | 132 | 26.8k | { \ | 133 | 26.8k | return ossl_prov_is_running() \ | 134 | 26.8k | && init(ctx) \ | 135 | 26.8k | && set_ctx_params(ctx, params); \ | 136 | 26.8k | } \ |
sha2_prov.c:sha1_internal_init Line | Count | Source | 132 | 1.24M | { \ | 133 | 1.24M | return ossl_prov_is_running() \ | 134 | 1.24M | && init(ctx) \ | 135 | 1.24M | && set_ctx_params(ctx, params); \ | 136 | 1.24M | } \ |
|
137 | | PROV_DISPATCH_FUNC_DIGEST_CONSTRUCT_START(name, CTX, blksize, dgstsize, flags, \ |
138 | | upd, fin), \ |
139 | | { OSSL_FUNC_DIGEST_INIT, (void (*)(void))name##_internal_init }, \ |
140 | | { OSSL_FUNC_DIGEST_SETTABLE_CTX_PARAMS, (void (*)(void))settable_ctx_params }, \ |
141 | | { OSSL_FUNC_DIGEST_SET_CTX_PARAMS, (void (*)(void))set_ctx_params }, \ |
142 | | PROV_DISPATCH_FUNC_DIGEST_CONSTRUCT_END |
143 | | |
144 | | #define IMPLEMENT_digest_functions_with_serialize( \ |
145 | | name, CTX, blksize, dgstsize, flags, init, upd, fin, \ |
146 | | serialize, deserialize) \ |
147 | | static OSSL_FUNC_digest_init_fn name##_internal_init; \ |
148 | | static int name##_internal_init(void *ctx, const OSSL_PARAM params[]) \ |
149 | 465M | { \ |
150 | 465M | return ossl_prov_is_running() && init(ctx); \ |
151 | 465M | } \ sha2_prov.c:sha224_internal_init Line | Count | Source | 149 | 291k | { \ | 150 | 291k | return ossl_prov_is_running() && init(ctx); \ | 151 | 291k | } \ |
sha2_prov.c:sha256_internal_init Line | Count | Source | 149 | 442M | { \ | 150 | 442M | return ossl_prov_is_running() && init(ctx); \ | 151 | 442M | } \ |
sha2_prov.c:sha256_192_internal_internal_init Line | Count | Source | 149 | 1 | { \ | 150 | 1 | return ossl_prov_is_running() && init(ctx); \ | 151 | 1 | } \ |
sha2_prov.c:sha384_internal_init Line | Count | Source | 149 | 2.08M | { \ | 150 | 2.08M | return ossl_prov_is_running() && init(ctx); \ | 151 | 2.08M | } \ |
sha2_prov.c:sha512_internal_init Line | Count | Source | 149 | 20.7M | { \ | 150 | 20.7M | return ossl_prov_is_running() && init(ctx); \ | 151 | 20.7M | } \ |
sha2_prov.c:sha512_224_internal_init Line | Count | Source | 149 | 254k | { \ | 150 | 254k | return ossl_prov_is_running() && init(ctx); \ | 151 | 254k | } \ |
sha2_prov.c:sha512_256_internal_init Line | Count | Source | 149 | 166k | { \ | 150 | 166k | return ossl_prov_is_running() && init(ctx); \ | 151 | 166k | } \ |
|
152 | | PROV_DISPATCH_FUNC_DIGEST_CONSTRUCT_START(name, CTX, blksize, dgstsize, flags, \ |
153 | | upd, fin), \ |
154 | | { OSSL_FUNC_DIGEST_INIT, (void (*)(void))name##_internal_init }, \ |
155 | | { OSSL_FUNC_DIGEST_SERIALIZE, (void (*)(void))serialize }, \ |
156 | | { OSSL_FUNC_DIGEST_DESERIALIZE, (void (*)(void))deserialize }, \ |
157 | | PROV_DISPATCH_FUNC_DIGEST_CONSTRUCT_END |
158 | | |
159 | | const OSSL_PARAM *ossl_digest_default_gettable_params(void *provctx); |
160 | | int ossl_digest_default_get_params(OSSL_PARAM params[], size_t blksz, |
161 | | size_t paramsz, unsigned long flags); |
162 | | |
163 | | #ifdef __cplusplus |
164 | | } |
165 | | #endif |
166 | | |
167 | | #endif /* OSSL_PROVIDERS_DIGESTCOMMON_H */ |