From 525d28f38f6131ed01de36f09c99aeecc9f82231 Mon Sep 17 00:00:00 2001 From: Hideki Miyazaki Date: Wed, 3 Feb 2021 14:00:03 +0900 Subject: [PATCH] Implemented MD5_Transform --- src/ssl.c | 20 ++++++++++++++++++++ wolfcrypt/src/md5.c | 7 ++++++- wolfssl/openssl/md5.h | 3 ++- wolfssl/wolfcrypt/md5.h | 8 +++++++- 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/ssl.c b/src/ssl.c index bf58cfd90..08a1ab682 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -16832,6 +16832,26 @@ size_t wolfSSL_get_client_random(const WOLFSSL* ssl, unsigned char* out, return 0; } + + int wolfSSL_MD5_Transform(WOLFSSL_MD5_CTX* md5, const unsigned char* data) + { + int ret; + + WOLFSSL_ENTER("MD5_Transform"); + #if defined(LITTLE_ENDIAN_ORDER) + { + ByteReverseWords((word32*)data, (word32*)data, WC_MD5_BLOCK_SIZE); + } + #endif + + ret = wc_Md5Transform((wc_Md5*)md5, data); + + /* return 1 on success, 0 otherwise */ + if (ret == 0) + return 1; + + return ret; + } #endif /* !NO_MD5 */ diff --git a/wolfcrypt/src/md5.c b/wolfcrypt/src/md5.c index 7bc2489e8..d4c92ad0b 100644 --- a/wolfcrypt/src/md5.c +++ b/wolfcrypt/src/md5.c @@ -550,7 +550,12 @@ int wc_Md5Copy(wc_Md5* src, wc_Md5* dst) return ret; } - +#ifdef OPENSSL_EXTRA +int wc_Md5Transform(wc_Md5* md5, const byte* data) +{ + return Transform(md5, data); +} +#endif #if defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB) int wc_Md5SetFlags(wc_Md5* md5, word32 flags) { diff --git a/wolfssl/openssl/md5.h b/wolfssl/openssl/md5.h index 49ac1e32f..08cbd527e 100644 --- a/wolfssl/openssl/md5.h +++ b/wolfssl/openssl/md5.h @@ -52,13 +52,14 @@ typedef struct WOLFSSL_MD5_CTX { WOLFSSL_API int wolfSSL_MD5_Init(WOLFSSL_MD5_CTX*); WOLFSSL_API int wolfSSL_MD5_Update(WOLFSSL_MD5_CTX*, const void*, unsigned long); WOLFSSL_API int wolfSSL_MD5_Final(unsigned char*, WOLFSSL_MD5_CTX*); - +WOLFSSL_API int wolfSSL_MD5_Transform(WOLFSSL_MD5_CTX*, const unsigned char*); typedef WOLFSSL_MD5_CTX MD5_CTX; #define MD5_Init wolfSSL_MD5_Init #define MD5_Update wolfSSL_MD5_Update #define MD5_Final wolfSSL_MD5_Final +#define MD5_Transform wolfSSL_MD5_Transform #ifdef OPENSSL_EXTRA_BSD #define MD5Init wolfSSL_MD5_Init diff --git a/wolfssl/wolfcrypt/md5.h b/wolfssl/wolfcrypt/md5.h index e2ee13c32..30f46078d 100644 --- a/wolfssl/wolfcrypt/md5.h +++ b/wolfssl/wolfcrypt/md5.h @@ -42,9 +42,12 @@ extern "C" { #endif +#if !defined(NO_OLD_MD5_NAMES) + #define MD5 WC_MD5 +#endif + #ifndef NO_OLD_WC_NAMES #define Md5 wc_Md5 - #define MD5 WC_MD5 #define MD5_BLOCK_SIZE WC_MD5_BLOCK_SIZE #define MD5_DIGEST_SIZE WC_MD5_DIGEST_SIZE #define WC_MD5_PAD_SIZE WC_MD5_PAD_SIZE @@ -109,6 +112,9 @@ WOLFSSL_API int wc_InitMd5_ex(wc_Md5*, void*, int); WOLFSSL_API int wc_Md5Update(wc_Md5*, const byte*, word32); WOLFSSL_API int wc_Md5Final(wc_Md5*, byte*); WOLFSSL_API void wc_Md5Free(wc_Md5*); +#ifdef OPENSSL_EXTRA +WOLFSSL_API int wc_Md5Transform(wc_Md5*, const byte*); +#endif WOLFSSL_API int wc_Md5GetHash(wc_Md5*, byte*); WOLFSSL_API int wc_Md5Copy(wc_Md5*, wc_Md5*);