@@ -22,8 +22,10 @@ typedef struct
2222} SCOSSL_DIGEST_CTX ;
2323
2424SCOSSL_DIGEST_CTX * p_scossl_digest_dupctx (_In_ SCOSSL_DIGEST_CTX * ctx );
25- void p_scossl_digest_copy_ctx (_Inout_ SCOSSL_DIGEST_CTX * dstCtx , _In_ SCOSSL_DIGEST_CTX * srcCtx );
2625void p_scossl_digest_freectx (_Inout_ SCOSSL_DIGEST_CTX * ctx );
26+ #ifdef OSSL_FUNC_DIGEST_COPYCTX
27+ void p_scossl_digest_copy_ctx (_Inout_ SCOSSL_DIGEST_CTX * dstCtx , _In_ SCOSSL_DIGEST_CTX * srcCtx );
28+ #endif
2729
2830SCOSSL_STATUS p_scossl_digest_update (_Inout_ SCOSSL_DIGEST_CTX * ctx ,
2931 _In_reads_bytes_ (inl ) const unsigned char * in , size_t inl );
@@ -34,7 +36,7 @@ SCOSSL_STATUS p_scossl_digest_digest(_In_ PCSYMCRYPT_HASH pHash,
3436SCOSSL_STATUS p_scossl_digest_get_params (_Inout_ OSSL_PARAM params [], size_t size , size_t blocksize , UINT32 flags );
3537const OSSL_PARAM * p_scossl_digest_gettable_params (ossl_unused void * ctx , ossl_unused void * provctx );
3638
37- #define SCOSSL_DIGEST_FUNCTIONS_COMMON (alg , dispatch_name , flags ) \
39+ #define IMPLEMENT_SCOSSL_DIGEST_FUNCTIONS_COMMON (alg , dispatch_name , flags ) \
3840 static SCOSSL_DIGEST_CTX *p_scossl_##dispatch_name##_newctx(ossl_unused void *prov_ctx) \
3941 { \
4042 SCOSSL_DIGEST_CTX *ctx = OPENSSL_malloc(sizeof(SCOSSL_DIGEST_CTX)); \
@@ -75,17 +77,34 @@ const OSSL_PARAM *p_scossl_digest_gettable_params(ossl_unused void *ctx, ossl_un
7577 SymCryptHashResultSize(SymCrypt##alg##Algorithm), \
7678 SymCryptHashInputBlockSize(SymCrypt##alg##Algorithm), \
7779 flags); \
78- } \
79- \
80- const OSSL_DISPATCH p_scossl_##dispatch_name##_functions[] = { \
81- {OSSL_FUNC_DIGEST_NEWCTX, (void (*)(void))p_scossl_##dispatch_name##_newctx}, \
82- {OSSL_FUNC_DIGEST_FREECTX, (void (*)(void))p_scossl_digest_freectx}, \
83- {OSSL_FUNC_DIGEST_DUPCTX, (void (*)(void))p_scossl_digest_dupctx}, \
84- {OSSL_FUNC_DIGEST_COPYCTX, (void (*)(void))p_scossl_digest_copy_ctx}, \
85- {OSSL_FUNC_DIGEST_GET_PARAMS, (void (*)(void))p_scossl_##dispatch_name##_get_params}, \
86- {OSSL_FUNC_DIGEST_GETTABLE_PARAMS, (void (*)(void))p_scossl_digest_gettable_params}, \
87- {OSSL_FUNC_DIGEST_UPDATE, (void (*)(void))p_scossl_digest_update}, \
88- {OSSL_FUNC_DIGEST_DIGEST, (void (*)(void))p_scossl_##dispatch_name##_digest},
80+ }
81+
82+ #ifdef OSSL_FUNC_DIGEST_COPYCTX
83+ #define SCOSSL_DIGEST_FUNCTIONS_COMMON (alg , dispatch_name , flags ) \
84+ IMPLEMENT_SCOSSL_DIGEST_FUNCTIONS_COMMON(alg, dispatch_name, flags) \
85+ \
86+ const OSSL_DISPATCH p_scossl_##dispatch_name##_functions[] = { \
87+ {OSSL_FUNC_DIGEST_NEWCTX, (void (*)(void))p_scossl_##dispatch_name##_newctx}, \
88+ {OSSL_FUNC_DIGEST_FREECTX, (void (*)(void))p_scossl_digest_freectx}, \
89+ {OSSL_FUNC_DIGEST_DUPCTX, (void (*)(void))p_scossl_digest_dupctx}, \
90+ {OSSL_FUNC_DIGEST_COPYCTX, (void (*)(void))p_scossl_digest_copy_ctx}, \
91+ {OSSL_FUNC_DIGEST_GET_PARAMS, (void (*)(void))p_scossl_##dispatch_name##_get_params}, \
92+ {OSSL_FUNC_DIGEST_GETTABLE_PARAMS, (void (*)(void))p_scossl_digest_gettable_params}, \
93+ {OSSL_FUNC_DIGEST_UPDATE, (void (*)(void))p_scossl_digest_update}, \
94+ {OSSL_FUNC_DIGEST_DIGEST, (void (*)(void))p_scossl_##dispatch_name##_digest},
95+ #else
96+ #define SCOSSL_DIGEST_FUNCTIONS_COMMON (alg , dispatch_name , flags ) \
97+ IMPLEMENT_SCOSSL_DIGEST_FUNCTIONS_COMMON(alg, dispatch_name, flags) \
98+ \
99+ const OSSL_DISPATCH p_scossl_##dispatch_name##_functions[] = { \
100+ {OSSL_FUNC_DIGEST_NEWCTX, (void (*)(void))p_scossl_##dispatch_name##_newctx}, \
101+ {OSSL_FUNC_DIGEST_FREECTX, (void (*)(void))p_scossl_digest_freectx}, \
102+ {OSSL_FUNC_DIGEST_DUPCTX, (void (*)(void))p_scossl_digest_dupctx}, \
103+ {OSSL_FUNC_DIGEST_GET_PARAMS, (void (*)(void))p_scossl_##dispatch_name##_get_params}, \
104+ {OSSL_FUNC_DIGEST_GETTABLE_PARAMS, (void (*)(void))p_scossl_digest_gettable_params}, \
105+ {OSSL_FUNC_DIGEST_UPDATE, (void (*)(void))p_scossl_digest_update}, \
106+ {OSSL_FUNC_DIGEST_DIGEST, (void (*)(void))p_scossl_##dispatch_name##_digest},
107+ #endif
89108
90109#define SCOSSL_DIGEST_FUNCTIONS_END \
91110 {0, NULL}};
0 commit comments