#define U64(C) C##ULL
#endif
+int SHA512_Update_thunk(void *cp, const unsigned char *data, size_t len);
+
int sha512_224_init(SHA512_CTX *c)
{
c->h[0] = U64(0x8c3d37c819544da2);
return SHA512_Final(md, c);
}
-int SHA512_Update(SHA512_CTX *c, const void *_data, size_t len)
+int SHA512_Update_thunk(void *cp, const unsigned char *data, size_t len)
{
+ SHA512_CTX *c = (SHA512_CTX *)cp;
SHA_LONG64 l;
unsigned char *p = c->u.p;
- const unsigned char *data = (const unsigned char *)_data;
if (len == 0)
return 1;
return 1;
}
+int SHA512_Update(SHA512_CTX *c, const void *_data, size_t len)
+{
+ return SHA512_Update_thunk((void *)c, (const unsigned char *)_data, len);
+}
+
int SHA384_Update(SHA512_CTX *c, const void *data, size_t len)
{
return SHA512_Update(c, data, len);
#define SHA2_FLAGS PROV_DIGEST_FLAG_ALGID_ABSENT
-extern int SHA256_Update_thunk(void *ctx, const unsigned char *data, size_t sz);
extern int SHA1_Update_thunk(void *ctx, const unsigned char *data, size_t sz);
+extern int SHA256_Update_thunk(void *ctx, const unsigned char *data, size_t sz);
+extern int SHA512_Update_thunk(void *ctx, const unsigned char *data, size_t sz);
/* Special set_params method for SSL3 */
static int sha1_set_ctx_params(void *vctx, const OSSL_PARAM params[])
IMPLEMENT_digest_functions_with_serialize(sha512, SHA512_CTX,
SHA512_CBLOCK, SHA512_DIGEST_LENGTH,
SHA2_FLAGS, SHA512_Init,
- SHA512_Update, SHA512_Final,
+ SHA512_Update_thunk, SHA512_Final,
SHA512_Serialize, SHA512_Deserialize)
/* ossl_sha512_224_functions */
IMPLEMENT_digest_functions_with_serialize(sha512_224, SHA512_CTX,
SHA512_CBLOCK, SHA224_DIGEST_LENGTH,
SHA2_FLAGS, sha512_224_init,
- SHA512_Update, SHA512_Final,
+ SHA512_Update_thunk, SHA512_Final,
SHA512_Serialize, SHA512_Deserialize)
/* ossl_sha512_256_functions */
IMPLEMENT_digest_functions_with_serialize(sha512_256, SHA512_CTX,
SHA512_CBLOCK, SHA256_DIGEST_LENGTH,
SHA2_FLAGS, sha512_256_init,
- SHA512_Update, SHA512_Final,
+ SHA512_Update_thunk, SHA512_Final,
SHA512_Serialize, SHA512_Deserialize)