Coverage Report

Created: 2026-09-13 06:13

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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
102
#define PROV_DIGEST_FLAG_XOF 0x0001
20
105
#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
93
    {                                                                            \
30
93
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
93
    }
cshake_prov.c:cshake_128_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
cshake_prov.c:cshake_256_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
md5_prov.c:md5_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
md5_sha1_prov.c:md5_sha1_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
null_prov.c:nullmd_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
ripemd_prov.c:ripemd160_get_params
Line
Count
Source
29
6
    {                                                                            \
30
6
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
6
    }
sha2_prov.c:sha1_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha2_prov.c:sha224_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha2_prov.c:sha256_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha2_prov.c:sha256_192_internal_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha2_prov.c:sha384_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha2_prov.c:sha512_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha2_prov.c:sha512_224_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha2_prov.c:sha512_256_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha3_prov.c:sha3_224_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha3_prov.c:sha3_256_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha3_prov.c:sha3_384_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha3_prov.c:sha3_512_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha3_prov.c:keccak_224_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha3_prov.c:keccak_256_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha3_prov.c:keccak_384_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha3_prov.c:keccak_512_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha3_prov.c:shake_128_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha3_prov.c:shake_256_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha3_prov.c:cshake_keccak_128_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sha3_prov.c:cshake_keccak_256_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
sm3_prov.c:sm3_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
md4_prov.c:md4_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
mdc2_prov.c:mdc2_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
wp_prov.c:wp_get_params
Line
Count
Source
29
3
    {                                                                            \
30
3
        return ossl_digest_default_get_params(params, blksize, dgstsize, flags); \
31
3
    }
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
8.12k
    {                                                                             \
45
8.12k
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
46
8.12k
            *outl = dgstsize;                                                     \
47
8.12k
            return 1;                                                             \
48
8.12k
        }                                                                         \
49
8.12k
        return 0;                                                                 \
50
8.12k
    }
md5_prov.c:md5_internal_final
Line
Count
Source
44
65
    {                                                                             \
45
65
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
46
65
            *outl = dgstsize;                                                     \
47
65
            return 1;                                                             \
48
65
        }                                                                         \
49
65
        return 0;                                                                 \
50
65
    }
md5_sha1_prov.c:md5_sha1_internal_final
Line
Count
Source
44
18
    {                                                                             \
45
18
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
46
18
            *outl = dgstsize;                                                     \
47
18
            return 1;                                                             \
48
18
        }                                                                         \
49
18
        return 0;                                                                 \
50
18
    }
ripemd_prov.c:ripemd160_internal_final
Line
Count
Source
44
75
    {                                                                             \
45
75
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
46
75
            *outl = dgstsize;                                                     \
47
75
            return 1;                                                             \
48
75
        }                                                                         \
49
75
        return 0;                                                                 \
50
75
    }
sha2_prov.c:sha1_internal_final
Line
Count
Source
44
94
    {                                                                             \
45
94
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
46
94
            *outl = dgstsize;                                                     \
47
94
            return 1;                                                             \
48
94
        }                                                                         \
49
94
        return 0;                                                                 \
50
94
    }
sha2_prov.c:sha224_internal_final
Line
Count
Source
44
223
    {                                                                             \
45
223
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
46
223
            *outl = dgstsize;                                                     \
47
223
            return 1;                                                             \
48
223
        }                                                                         \
49
223
        return 0;                                                                 \
50
223
    }
sha2_prov.c:sha256_internal_final
Line
Count
Source
44
4.27k
    {                                                                             \
45
4.27k
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
46
4.27k
            *outl = dgstsize;                                                     \
47
4.27k
            return 1;                                                             \
48
4.27k
        }                                                                         \
49
4.27k
        return 0;                                                                 \
50
4.27k
    }
sha2_prov.c:sha256_192_internal_internal_final
Line
Count
Source
44
1
    {                                                                             \
45
1
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
46
1
            *outl = dgstsize;                                                     \
47
1
            return 1;                                                             \
48
1
        }                                                                         \
49
1
        return 0;                                                                 \
50
1
    }
sha2_prov.c:sha384_internal_final
Line
Count
Source
44
11
    {                                                                             \
45
11
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
46
11
            *outl = dgstsize;                                                     \
47
11
            return 1;                                                             \
48
11
        }                                                                         \
49
11
        return 0;                                                                 \
50
11
    }
sha2_prov.c:sha512_internal_final
Line
Count
Source
44
3.17k
    {                                                                             \
45
3.17k
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
46
3.17k
            *outl = dgstsize;                                                     \
47
3.17k
            return 1;                                                             \
48
3.17k
        }                                                                         \
49
3.17k
        return 0;                                                                 \
50
3.17k
    }
sha2_prov.c:sha512_224_internal_final
Line
Count
Source
44
1
    {                                                                             \
45
1
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
46
1
            *outl = dgstsize;                                                     \
47
1
            return 1;                                                             \
48
1
        }                                                                         \
49
1
        return 0;                                                                 \
50
1
    }
sha2_prov.c:sha512_256_internal_final
Line
Count
Source
44
1
    {                                                                             \
45
1
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
46
1
            *outl = dgstsize;                                                     \
47
1
            return 1;                                                             \
48
1
        }                                                                         \
49
1
        return 0;                                                                 \
50
1
    }
sm3_prov.c:sm3_internal_final
Line
Count
Source
44
79
    {                                                                             \
45
79
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
46
79
            *outl = dgstsize;                                                     \
47
79
            return 1;                                                             \
48
79
        }                                                                         \
49
79
        return 0;                                                                 \
50
79
    }
md4_prov.c:md4_internal_final
Line
Count
Source
44
70
    {                                                                             \
45
70
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
46
70
            *outl = dgstsize;                                                     \
47
70
            return 1;                                                             \
48
70
        }                                                                         \
49
70
        return 0;                                                                 \
50
70
    }
mdc2_prov.c:mdc2_internal_final
Line
Count
Source
44
36
    {                                                                             \
45
36
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
46
36
            *outl = dgstsize;                                                     \
47
36
            return 1;                                                             \
48
36
        }                                                                         \
49
36
        return 0;                                                                 \
50
36
    }
Unexecuted instantiation: wp_prov.c:wp_internal_final
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
8.18k
    if (!ossl_prov_is_running())           \
64
8.18k
    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
8.12k
    {                                                                            \
74
8.12k
        DIGEST_PROV_CHECK(prov_ctx, name);                                       \
75
8.12k
        return OPENSSL_zalloc(sizeof(CTX));                                      \
76
8.12k
    }                                                                            \
77
    static void name##_freectx(void *vctx)                                       \
78
8.12k
    {                                                                            \
79
8.12k
        CTX *ctx = (CTX *)vctx;                                                  \
80
8.12k
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
81
8.12k
    }                                                                            \
md5_prov.c:md5_freectx
Line
Count
Source
78
65
    {                                                                            \
79
65
        CTX *ctx = (CTX *)vctx;                                                  \
80
65
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
81
65
    }                                                                            \
md5_sha1_prov.c:md5_sha1_freectx
Line
Count
Source
78
18
    {                                                                            \
79
18
        CTX *ctx = (CTX *)vctx;                                                  \
80
18
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
81
18
    }                                                                            \
Unexecuted instantiation: null_prov.c:nullmd_freectx
ripemd_prov.c:ripemd160_freectx
Line
Count
Source
78
75
    {                                                                            \
79
75
        CTX *ctx = (CTX *)vctx;                                                  \
80
75
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
81
75
    }                                                                            \
sha2_prov.c:sha1_freectx
Line
Count
Source
78
94
    {                                                                            \
79
94
        CTX *ctx = (CTX *)vctx;                                                  \
80
94
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
81
94
    }                                                                            \
sha2_prov.c:sha224_freectx
Line
Count
Source
78
223
    {                                                                            \
79
223
        CTX *ctx = (CTX *)vctx;                                                  \
80
223
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
81
223
    }                                                                            \
sha2_prov.c:sha256_freectx
Line
Count
Source
78
4.27k
    {                                                                            \
79
4.27k
        CTX *ctx = (CTX *)vctx;                                                  \
80
4.27k
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
81
4.27k
    }                                                                            \
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
11
    {                                                                            \
79
11
        CTX *ctx = (CTX *)vctx;                                                  \
80
11
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
81
11
    }                                                                            \
sha2_prov.c:sha512_freectx
Line
Count
Source
78
3.17k
    {                                                                            \
79
3.17k
        CTX *ctx = (CTX *)vctx;                                                  \
80
3.17k
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
81
3.17k
    }                                                                            \
sha2_prov.c:sha512_224_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:sha512_256_freectx
Line
Count
Source
78
1
    {                                                                            \
79
1
        CTX *ctx = (CTX *)vctx;                                                  \
80
1
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
81
1
    }                                                                            \
sm3_prov.c:sm3_freectx
Line
Count
Source
78
79
    {                                                                            \
79
79
        CTX *ctx = (CTX *)vctx;                                                  \
80
79
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
81
79
    }                                                                            \
md4_prov.c:md4_freectx
Line
Count
Source
78
70
    {                                                                            \
79
70
        CTX *ctx = (CTX *)vctx;                                                  \
80
70
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
81
70
    }                                                                            \
mdc2_prov.c:mdc2_freectx
Line
Count
Source
78
36
    {                                                                            \
79
36
        CTX *ctx = (CTX *)vctx;                                                  \
80
36
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
81
36
    }                                                                            \
Unexecuted instantiation: wp_prov.c:wp_freectx
82
    static void *name##_dupctx(void *ctx)                                        \
83
0
    {                                                                            \
84
0
        CTX *in = (CTX *)ctx;                                                    \
85
0
        CTX *ret = ossl_prov_is_running() ? OPENSSL_malloc(sizeof(*ret)) : NULL; \
86
0
        if (ret != NULL)                                                         \
87
0
            *ret = *in;                                                          \
88
0
        return ret;                                                              \
89
0
    }                                                                            \
90
    static void name##_copyctx(void *voutctx, void *vinctx)                      \
91
0
    {                                                                            \
92
0
        CTX *outctx = (CTX *)voutctx;                                            \
93
0
        CTX *inctx = (CTX *)vinctx;                                              \
94
0
        *outctx = *inctx;                                                        \
95
0
    }                                                                            \
Unexecuted instantiation: md5_prov.c:md5_copyctx
Unexecuted instantiation: md5_sha1_prov.c:md5_sha1_copyctx
Unexecuted instantiation: null_prov.c:nullmd_copyctx
Unexecuted instantiation: ripemd_prov.c:ripemd160_copyctx
Unexecuted instantiation: sha2_prov.c:sha1_copyctx
Unexecuted instantiation: sha2_prov.c:sha224_copyctx
Unexecuted instantiation: sha2_prov.c:sha256_copyctx
Unexecuted instantiation: sha2_prov.c:sha256_192_internal_copyctx
Unexecuted instantiation: sha2_prov.c:sha384_copyctx
Unexecuted instantiation: sha2_prov.c:sha512_copyctx
Unexecuted instantiation: sha2_prov.c:sha512_224_copyctx
Unexecuted instantiation: sha2_prov.c:sha512_256_copyctx
Unexecuted instantiation: sm3_prov.c:sm3_copyctx
Unexecuted instantiation: md4_prov.c:md4_copyctx
Unexecuted instantiation: mdc2_prov.c:mdc2_copyctx
Unexecuted instantiation: wp_prov.c:wp_copyctx
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
578
    {                                                                              \
120
578
        return ossl_prov_is_running() && init(ctx);                                \
121
578
    }                                                                              \
md5_prov.c:md5_internal_init
Line
Count
Source
119
130
    {                                                                              \
120
130
        return ossl_prov_is_running() && init(ctx);                                \
121
130
    }                                                                              \
Unexecuted instantiation: null_prov.c:nullmd_internal_init
ripemd_prov.c:ripemd160_internal_init
Line
Count
Source
119
150
    {                                                                              \
120
150
        return ossl_prov_is_running() && init(ctx);                                \
121
150
    }                                                                              \
sm3_prov.c:sm3_internal_init
Line
Count
Source
119
158
    {                                                                              \
120
158
        return ossl_prov_is_running() && init(ctx);                                \
121
158
    }                                                                              \
md4_prov.c:md4_internal_init
Line
Count
Source
119
140
    {                                                                              \
120
140
        return ossl_prov_is_running() && init(ctx);                                \
121
140
    }                                                                              \
Unexecuted instantiation: wp_prov.c:wp_internal_init
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
296
    {                                                                                  \
133
296
        return ossl_prov_is_running()                                                  \
134
296
            && init(ctx)                                                               \
135
296
            && set_ctx_params(ctx, params);                                            \
136
296
    }                                                                                  \
md5_sha1_prov.c:md5_sha1_internal_init
Line
Count
Source
132
36
    {                                                                                  \
133
36
        return ossl_prov_is_running()                                                  \
134
36
            && init(ctx)                                                               \
135
36
            && set_ctx_params(ctx, params);                                            \
136
36
    }                                                                                  \
sha2_prov.c:sha1_internal_init
Line
Count
Source
132
188
    {                                                                                  \
133
188
        return ossl_prov_is_running()                                                  \
134
188
            && init(ctx)                                                               \
135
188
            && set_ctx_params(ctx, params);                                            \
136
188
    }                                                                                  \
mdc2_prov.c:mdc2_internal_init
Line
Count
Source
132
72
    {                                                                                  \
133
72
        return ossl_prov_is_running()                                                  \
134
72
            && init(ctx)                                                               \
135
72
            && set_ctx_params(ctx, params);                                            \
136
72
    }                                                                                  \
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
15.3k
    {                                                                              \
150
15.3k
        return ossl_prov_is_running() && init(ctx);                                \
151
15.3k
    }                                                                              \
sha2_prov.c:sha224_internal_init
Line
Count
Source
149
446
    {                                                                              \
150
446
        return ossl_prov_is_running() && init(ctx);                                \
151
446
    }                                                                              \
sha2_prov.c:sha256_internal_init
Line
Count
Source
149
8.55k
    {                                                                              \
150
8.55k
        return ossl_prov_is_running() && init(ctx);                                \
151
8.55k
    }                                                                              \
sha2_prov.c:sha256_192_internal_internal_init
Line
Count
Source
149
2
    {                                                                              \
150
2
        return ossl_prov_is_running() && init(ctx);                                \
151
2
    }                                                                              \
sha2_prov.c:sha384_internal_init
Line
Count
Source
149
22
    {                                                                              \
150
22
        return ossl_prov_is_running() && init(ctx);                                \
151
22
    }                                                                              \
sha2_prov.c:sha512_internal_init
Line
Count
Source
149
6.34k
    {                                                                              \
150
6.34k
        return ossl_prov_is_running() && init(ctx);                                \
151
6.34k
    }                                                                              \
sha2_prov.c:sha512_224_internal_init
Line
Count
Source
149
2
    {                                                                              \
150
2
        return ossl_prov_is_running() && init(ctx);                                \
151
2
    }                                                                              \
sha2_prov.c:sha512_256_internal_init
Line
Count
Source
149
2
    {                                                                              \
150
2
        return ossl_prov_is_running() && init(ctx);                                \
151
2
    }                                                                              \
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 */