} \
} while (0)
-#define HASH_UPDATE SHA256_Update
+#define HASH_UPDATE_THUNK
+#define HASH_UPDATE SHA256_Update_thunk
#define HASH_TRANSFORM SHA256_Transform
#define HASH_FINAL SHA256_Final
#define HASH_BLOCK_DATA_ORDER sha256_block_data_order
void sha256_block_data_order(SHA256_CTX *ctx, const void *in, size_t num);
#include "crypto/md32_common.h"
+#undef HASH_UPDATE_THUNK
+
+int SHA256_Update(SHA256_CTX *ctx, const void *data, size_t sz)
+{
+ return SHA256_Update_thunk((void *)ctx, (const unsigned char *)data, sz);
+}
#if !defined(SHA256_ASM) || defined(INCLUDE_C_SHA256)
static const SHA_LONG K256[64] = {
* Time for some action :-)
*/
+#ifdef HASH_UPDATE_THUNK
+int HASH_UPDATE(void *cp, const unsigned char *data_, size_t len);
+int HASH_UPDATE(void *cp, const unsigned char *data_, size_t len)
+#else
int HASH_UPDATE(HASH_CTX *c, const void *data_, size_t len)
+#endif
{
+#ifdef HASH_UPDATE_THUNK
+ HASH_CTX *c = (HASH_CTX *)cp;
+#endif
const unsigned char *data = data_;
unsigned char *p;
HASH_LONG l;
#define SHA2_FLAGS PROV_DIGEST_FLAG_ALGID_ABSENT
+extern int SHA256_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(sha256, SHA256_CTX,
SHA256_CBLOCK, SHA256_DIGEST_LENGTH,
SHA2_FLAGS, SHA256_Init,
- SHA256_Update, SHA256_Final,
+ SHA256_Update_thunk, SHA256_Final,
SHA256_Serialize, SHA256_Deserialize)
/* ossl_sha256_192_internal_functions */
IMPLEMENT_digest_functions_with_serialize(sha256_192_internal, SHA256_CTX,
SHA256_CBLOCK, SHA256_192_DIGEST_LENGTH,
SHA2_FLAGS, ossl_sha256_192_init,
- SHA256_Update, SHA256_Final,
+ SHA256_Update_thunk, SHA256_Final,
SHA256_Serialize, SHA256_Deserialize)
/* ossl_sha384_functions */
IMPLEMENT_digest_functions_with_serialize(sha384, SHA512_CTX,