Coverage Report

Created: 2026-10-28 07:07

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
#ifdef FIPS_MODULE
41
#define PROV_DISPATCH_FUNC_DIGEST_GET_CTX_PARAMS                   \
42
    { OSSL_FUNC_DIGEST_GETTABLE_CTX_PARAMS,                        \
43
        (void (*)(void))ossl_digest_default_gettable_ctx_params }, \
44
    {                                                              \
45
        OSSL_FUNC_DIGEST_GET_CTX_PARAMS,                           \
46
            (void (*)(void))ossl_digest_default_get_ctx_params     \
47
    }
48
#define PROV_DISPATCH_FUNC_DIGEST_GET_CTX_PARAMS_APPEND \
49
    , PROV_DISPATCH_FUNC_DIGEST_GET_CTX_PARAMS
50
#else
51
#define PROV_DISPATCH_FUNC_DIGEST_GET_CTX_PARAMS
52
#define PROV_DISPATCH_FUNC_DIGEST_GET_CTX_PARAMS_APPEND
53
#endif
54
55
#define PROV_FUNC_DIGEST_FINAL(name, dgstsize, fin)                               \
56
    static OSSL_FUNC_digest_final_fn name##_internal_final;                       \
57
    static int name##_internal_final(void *ctx, unsigned char *out, size_t *outl, \
58
        size_t outsz)                                                             \
59
9.88k
    {                                                                             \
60
9.88k
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
61
9.88k
            *outl = dgstsize;                                                     \
62
9.88k
            return 1;                                                             \
63
9.88k
        }                                                                         \
64
9.88k
        return 0;                                                                 \
65
9.88k
    }
md5_prov.c:md5_internal_final
Line
Count
Source
59
91
    {                                                                             \
60
91
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
61
91
            *outl = dgstsize;                                                     \
62
91
            return 1;                                                             \
63
91
        }                                                                         \
64
91
        return 0;                                                                 \
65
91
    }
md5_sha1_prov.c:md5_sha1_internal_final
Line
Count
Source
59
17
    {                                                                             \
60
17
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
61
17
            *outl = dgstsize;                                                     \
62
17
            return 1;                                                             \
63
17
        }                                                                         \
64
17
        return 0;                                                                 \
65
17
    }
ripemd_prov.c:ripemd160_internal_final
Line
Count
Source
59
66
    {                                                                             \
60
66
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
61
66
            *outl = dgstsize;                                                     \
62
66
            return 1;                                                             \
63
66
        }                                                                         \
64
66
        return 0;                                                                 \
65
66
    }
sha2_prov.c:sha1_internal_final
Line
Count
Source
59
83
    {                                                                             \
60
83
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
61
83
            *outl = dgstsize;                                                     \
62
83
            return 1;                                                             \
63
83
        }                                                                         \
64
83
        return 0;                                                                 \
65
83
    }
sha2_prov.c:sha224_internal_final
Line
Count
Source
59
241
    {                                                                             \
60
241
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
61
241
            *outl = dgstsize;                                                     \
62
241
            return 1;                                                             \
63
241
        }                                                                         \
64
241
        return 0;                                                                 \
65
241
    }
sha2_prov.c:sha256_internal_final
Line
Count
Source
59
4.89k
    {                                                                             \
60
4.89k
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
61
4.89k
            *outl = dgstsize;                                                     \
62
4.89k
            return 1;                                                             \
63
4.89k
        }                                                                         \
64
4.89k
        return 0;                                                                 \
65
4.89k
    }
sha2_prov.c:sha256_192_internal_internal_final
Line
Count
Source
59
1
    {                                                                             \
60
1
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
61
1
            *outl = dgstsize;                                                     \
62
1
            return 1;                                                             \
63
1
        }                                                                         \
64
1
        return 0;                                                                 \
65
1
    }
sha2_prov.c:sha384_internal_final
Line
Count
Source
59
17
    {                                                                             \
60
17
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
61
17
            *outl = dgstsize;                                                     \
62
17
            return 1;                                                             \
63
17
        }                                                                         \
64
17
        return 0;                                                                 \
65
17
    }
sha2_prov.c:sha512_internal_final
Line
Count
Source
59
4.28k
    {                                                                             \
60
4.28k
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
61
4.28k
            *outl = dgstsize;                                                     \
62
4.28k
            return 1;                                                             \
63
4.28k
        }                                                                         \
64
4.28k
        return 0;                                                                 \
65
4.28k
    }
sha2_prov.c:sha512_224_internal_final
Line
Count
Source
59
1
    {                                                                             \
60
1
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
61
1
            *outl = dgstsize;                                                     \
62
1
            return 1;                                                             \
63
1
        }                                                                         \
64
1
        return 0;                                                                 \
65
1
    }
sha2_prov.c:sha512_256_internal_final
Line
Count
Source
59
1
    {                                                                             \
60
1
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
61
1
            *outl = dgstsize;                                                     \
62
1
            return 1;                                                             \
63
1
        }                                                                         \
64
1
        return 0;                                                                 \
65
1
    }
sm3_prov.c:sm3_internal_final
Line
Count
Source
59
78
    {                                                                             \
60
78
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
61
78
            *outl = dgstsize;                                                     \
62
78
            return 1;                                                             \
63
78
        }                                                                         \
64
78
        return 0;                                                                 \
65
78
    }
md4_prov.c:md4_internal_final
Line
Count
Source
59
72
    {                                                                             \
60
72
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
61
72
            *outl = dgstsize;                                                     \
62
72
            return 1;                                                             \
63
72
        }                                                                         \
64
72
        return 0;                                                                 \
65
72
    }
mdc2_prov.c:mdc2_internal_final
Line
Count
Source
59
33
    {                                                                             \
60
33
        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
61
33
            *outl = dgstsize;                                                     \
62
33
            return 1;                                                             \
63
33
        }                                                                         \
64
33
        return 0;                                                                 \
65
33
    }
Unexecuted instantiation: wp_prov.c:wp_internal_final
66
67
#if defined(FIPS_MODULE)
68
#include "internal/fips.h"
69
#include "prov/provider_ctx.h"
70
#define DIGEST_PROV_CHECK(provctx, name)                  \
71
    if (!ossl_prov_is_running())                          \
72
        return NULL;                                      \
73
    if (!ossl_deferred_self_test(PROV_LIBCTX_OF(provctx), \
74
            ST_ID_DIGEST_##name))                         \
75
    return NULL
76
#else
77
#define DIGEST_PROV_CHECK(_provctx, _name) \
78
9.94k
    if (!ossl_prov_is_running())           \
79
9.94k
    return NULL
80
#endif /* FIPS_MODULE && DIGEST_IS_FIPS */
81
82
#define PROV_DISPATCH_FUNC_DIGEST_CONSTRUCT_START(                               \
83
    name, CTX, blksize, dgstsize, flags, upd, fin)                               \
84
    static OSSL_FUNC_digest_newctx_fn name##_newctx;                             \
85
    static OSSL_FUNC_digest_freectx_fn name##_freectx;                           \
86
    static OSSL_FUNC_digest_dupctx_fn name##_dupctx;                             \
87
    static void *name##_newctx(void *prov_ctx)                                   \
88
9.88k
    {                                                                            \
89
9.88k
        DIGEST_PROV_CHECK(prov_ctx, name);                                       \
90
9.88k
        return OPENSSL_zalloc(sizeof(CTX));                                      \
91
9.88k
    }                                                                            \
92
    static void name##_freectx(void *vctx)                                       \
93
9.88k
    {                                                                            \
94
9.88k
        CTX *ctx = (CTX *)vctx;                                                  \
95
9.88k
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
96
9.88k
    }                                                                            \
md5_prov.c:md5_freectx
Line
Count
Source
93
91
    {                                                                            \
94
91
        CTX *ctx = (CTX *)vctx;                                                  \
95
91
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
96
91
    }                                                                            \
md5_sha1_prov.c:md5_sha1_freectx
Line
Count
Source
93
17
    {                                                                            \
94
17
        CTX *ctx = (CTX *)vctx;                                                  \
95
17
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
96
17
    }                                                                            \
Unexecuted instantiation: null_prov.c:nullmd_freectx
ripemd_prov.c:ripemd160_freectx
Line
Count
Source
93
66
    {                                                                            \
94
66
        CTX *ctx = (CTX *)vctx;                                                  \
95
66
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
96
66
    }                                                                            \
sha2_prov.c:sha1_freectx
Line
Count
Source
93
83
    {                                                                            \
94
83
        CTX *ctx = (CTX *)vctx;                                                  \
95
83
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
96
83
    }                                                                            \
sha2_prov.c:sha224_freectx
Line
Count
Source
93
241
    {                                                                            \
94
241
        CTX *ctx = (CTX *)vctx;                                                  \
95
241
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
96
241
    }                                                                            \
sha2_prov.c:sha256_freectx
Line
Count
Source
93
4.89k
    {                                                                            \
94
4.89k
        CTX *ctx = (CTX *)vctx;                                                  \
95
4.89k
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
96
4.89k
    }                                                                            \
sha2_prov.c:sha256_192_internal_freectx
Line
Count
Source
93
1
    {                                                                            \
94
1
        CTX *ctx = (CTX *)vctx;                                                  \
95
1
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
96
1
    }                                                                            \
sha2_prov.c:sha384_freectx
Line
Count
Source
93
17
    {                                                                            \
94
17
        CTX *ctx = (CTX *)vctx;                                                  \
95
17
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
96
17
    }                                                                            \
sha2_prov.c:sha512_freectx
Line
Count
Source
93
4.28k
    {                                                                            \
94
4.28k
        CTX *ctx = (CTX *)vctx;                                                  \
95
4.28k
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
96
4.28k
    }                                                                            \
sha2_prov.c:sha512_224_freectx
Line
Count
Source
93
1
    {                                                                            \
94
1
        CTX *ctx = (CTX *)vctx;                                                  \
95
1
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
96
1
    }                                                                            \
sha2_prov.c:sha512_256_freectx
Line
Count
Source
93
1
    {                                                                            \
94
1
        CTX *ctx = (CTX *)vctx;                                                  \
95
1
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
96
1
    }                                                                            \
sm3_prov.c:sm3_freectx
Line
Count
Source
93
78
    {                                                                            \
94
78
        CTX *ctx = (CTX *)vctx;                                                  \
95
78
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
96
78
    }                                                                            \
md4_prov.c:md4_freectx
Line
Count
Source
93
72
    {                                                                            \
94
72
        CTX *ctx = (CTX *)vctx;                                                  \
95
72
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
96
72
    }                                                                            \
mdc2_prov.c:mdc2_freectx
Line
Count
Source
93
33
    {                                                                            \
94
33
        CTX *ctx = (CTX *)vctx;                                                  \
95
33
        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
96
33
    }                                                                            \
Unexecuted instantiation: wp_prov.c:wp_freectx
97
    static void *name##_dupctx(void *ctx)                                        \
98
0
    {                                                                            \
99
0
        CTX *in = (CTX *)ctx;                                                    \
100
0
        CTX *ret = ossl_prov_is_running() ? OPENSSL_malloc(sizeof(*ret)) : NULL; \
101
0
        if (ret != NULL)                                                         \
102
0
            *ret = *in;                                                          \
103
0
        return ret;                                                              \
104
0
    }                                                                            \
105
    static void name##_copyctx(void *voutctx, void *vinctx)                      \
106
0
    {                                                                            \
107
0
        CTX *outctx = (CTX *)voutctx;                                            \
108
0
        CTX *inctx = (CTX *)vinctx;                                              \
109
0
        *outctx = *inctx;                                                        \
110
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
111
    PROV_FUNC_DIGEST_FINAL(name, dgstsize, fin)                                  \
112
    PROV_FUNC_DIGEST_GET_PARAM(name, blksize, dgstsize, flags)                   \
113
    const OSSL_DISPATCH ossl_##name##_functions[] = {                            \
114
        { OSSL_FUNC_DIGEST_NEWCTX, (void (*)(void))name##_newctx },              \
115
        { OSSL_FUNC_DIGEST_UPDATE, (void (*)(void))upd },                        \
116
        { OSSL_FUNC_DIGEST_FINAL, (void (*)(void))name##_internal_final },       \
117
        { OSSL_FUNC_DIGEST_FREECTX, (void (*)(void))name##_freectx },            \
118
        { OSSL_FUNC_DIGEST_DUPCTX, (void (*)(void))name##_dupctx },              \
119
        { OSSL_FUNC_DIGEST_COPYCTX, (void (*)(void))name##_copyctx },            \
120
        PROV_DISPATCH_FUNC_DIGEST_GET_PARAMS(name)                               \
121
            PROV_DISPATCH_FUNC_DIGEST_GET_CTX_PARAMS_APPEND
122
123
#define PROV_DISPATCH_FUNC_DIGEST_CONSTRUCT_END \
124
    {                                           \
125
        0, NULL                                 \
126
    }                                           \
127
    }                                           \
128
    ;
129
130
#define IMPLEMENT_digest_functions(                                                \
131
    name, CTX, blksize, dgstsize, flags, init, upd, fin)                           \
132
    static OSSL_FUNC_digest_init_fn name##_internal_init;                          \
133
    static int name##_internal_init(void *ctx,                                     \
134
        ossl_unused const OSSL_PARAM params[])                                     \
135
614
    {                                                                              \
136
614
        return ossl_prov_is_running() && init(ctx);                                \
137
614
    }                                                                              \
md5_prov.c:md5_internal_init
Line
Count
Source
135
182
    {                                                                              \
136
182
        return ossl_prov_is_running() && init(ctx);                                \
137
182
    }                                                                              \
Unexecuted instantiation: null_prov.c:nullmd_internal_init
ripemd_prov.c:ripemd160_internal_init
Line
Count
Source
135
132
    {                                                                              \
136
132
        return ossl_prov_is_running() && init(ctx);                                \
137
132
    }                                                                              \
sm3_prov.c:sm3_internal_init
Line
Count
Source
135
156
    {                                                                              \
136
156
        return ossl_prov_is_running() && init(ctx);                                \
137
156
    }                                                                              \
md4_prov.c:md4_internal_init
Line
Count
Source
135
144
    {                                                                              \
136
144
        return ossl_prov_is_running() && init(ctx);                                \
137
144
    }                                                                              \
Unexecuted instantiation: wp_prov.c:wp_internal_init
138
    PROV_DISPATCH_FUNC_DIGEST_CONSTRUCT_START(name, CTX, blksize, dgstsize, flags, \
139
        upd, fin),                                                                 \
140
        { OSSL_FUNC_DIGEST_INIT, (void (*)(void))name##_internal_init },           \
141
        PROV_DISPATCH_FUNC_DIGEST_CONSTRUCT_END
142
143
#define IMPLEMENT_digest_functions_with_settable_ctx(                                  \
144
    name, CTX, blksize, dgstsize, flags, init, upd, fin,                               \
145
    settable_ctx_params, set_ctx_params)                                               \
146
    static OSSL_FUNC_digest_init_fn name##_internal_init;                              \
147
    static int name##_internal_init(void *ctx, const OSSL_PARAM params[])              \
148
266
    {                                                                                  \
149
266
        return ossl_prov_is_running()                                                  \
150
266
            && init(ctx)                                                               \
151
266
            && set_ctx_params(ctx, params);                                            \
152
266
    }                                                                                  \
md5_sha1_prov.c:md5_sha1_internal_init
Line
Count
Source
148
34
    {                                                                                  \
149
34
        return ossl_prov_is_running()                                                  \
150
34
            && init(ctx)                                                               \
151
34
            && set_ctx_params(ctx, params);                                            \
152
34
    }                                                                                  \
sha2_prov.c:sha1_internal_init
Line
Count
Source
148
166
    {                                                                                  \
149
166
        return ossl_prov_is_running()                                                  \
150
166
            && init(ctx)                                                               \
151
166
            && set_ctx_params(ctx, params);                                            \
152
166
    }                                                                                  \
mdc2_prov.c:mdc2_internal_init
Line
Count
Source
148
66
    {                                                                                  \
149
66
        return ossl_prov_is_running()                                                  \
150
66
            && init(ctx)                                                               \
151
66
            && set_ctx_params(ctx, params);                                            \
152
66
    }                                                                                  \
153
    PROV_DISPATCH_FUNC_DIGEST_CONSTRUCT_START(name, CTX, blksize, dgstsize, flags,     \
154
        upd, fin),                                                                     \
155
        { OSSL_FUNC_DIGEST_INIT, (void (*)(void))name##_internal_init },               \
156
        { OSSL_FUNC_DIGEST_SETTABLE_CTX_PARAMS, (void (*)(void))settable_ctx_params }, \
157
        { OSSL_FUNC_DIGEST_SET_CTX_PARAMS, (void (*)(void))set_ctx_params },           \
158
        PROV_DISPATCH_FUNC_DIGEST_CONSTRUCT_END
159
160
#define IMPLEMENT_digest_functions_with_serialize(                                 \
161
    name, CTX, blksize, dgstsize, flags, init, upd, fin,                           \
162
    serialize, deserialize)                                                        \
163
    static OSSL_FUNC_digest_init_fn name##_internal_init;                          \
164
    static int name##_internal_init(void *ctx, const OSSL_PARAM params[])          \
165
18.8k
    {                                                                              \
166
18.8k
        return ossl_prov_is_running() && init(ctx);                                \
167
18.8k
    }                                                                              \
sha2_prov.c:sha224_internal_init
Line
Count
Source
165
482
    {                                                                              \
166
482
        return ossl_prov_is_running() && init(ctx);                                \
167
482
    }                                                                              \
sha2_prov.c:sha256_internal_init
Line
Count
Source
165
9.79k
    {                                                                              \
166
9.79k
        return ossl_prov_is_running() && init(ctx);                                \
167
9.79k
    }                                                                              \
sha2_prov.c:sha256_192_internal_internal_init
Line
Count
Source
165
2
    {                                                                              \
166
2
        return ossl_prov_is_running() && init(ctx);                                \
167
2
    }                                                                              \
sha2_prov.c:sha384_internal_init
Line
Count
Source
165
34
    {                                                                              \
166
34
        return ossl_prov_is_running() && init(ctx);                                \
167
34
    }                                                                              \
sha2_prov.c:sha512_internal_init
Line
Count
Source
165
8.57k
    {                                                                              \
166
8.57k
        return ossl_prov_is_running() && init(ctx);                                \
167
8.57k
    }                                                                              \
sha2_prov.c:sha512_224_internal_init
Line
Count
Source
165
2
    {                                                                              \
166
2
        return ossl_prov_is_running() && init(ctx);                                \
167
2
    }                                                                              \
sha2_prov.c:sha512_256_internal_init
Line
Count
Source
165
2
    {                                                                              \
166
2
        return ossl_prov_is_running() && init(ctx);                                \
167
2
    }                                                                              \
168
    PROV_DISPATCH_FUNC_DIGEST_CONSTRUCT_START(name, CTX, blksize, dgstsize, flags, \
169
        upd, fin),                                                                 \
170
        { OSSL_FUNC_DIGEST_INIT, (void (*)(void))name##_internal_init },           \
171
        { OSSL_FUNC_DIGEST_SERIALIZE, (void (*)(void))serialize },                 \
172
        { OSSL_FUNC_DIGEST_DESERIALIZE, (void (*)(void))deserialize },             \
173
        PROV_DISPATCH_FUNC_DIGEST_CONSTRUCT_END
174
175
const OSSL_PARAM *ossl_digest_default_gettable_params(void *provctx);
176
int ossl_digest_default_get_params(OSSL_PARAM params[], size_t blksz,
177
    size_t paramsz, unsigned long flags);
178
const OSSL_PARAM *ossl_digest_default_gettable_ctx_params(void *ctx,
179
    void *provctx);
180
int ossl_digest_default_get_ctx_params(void *ctx, OSSL_PARAM params[]);
181
182
#ifdef __cplusplus
183
}
184
#endif
185
186
#endif /* OSSL_PROVIDERS_DIGESTCOMMON_H */