update MD4 return from void to int

This commit is contained in:
JacobBarthelmeh
2026-05-11 16:19:14 -06:00
parent b34cec2205
commit 7683edc448
6 changed files with 59 additions and 25 deletions
+3 -3
View File
@@ -23,7 +23,7 @@
\sa wc_Md4Update
\sa wc_Md4Final
*/
void wc_InitMd4(wc_Md4* md4);
int wc_InitMd4(wc_Md4* md4);
/*!
\ingroup MD4
@@ -55,7 +55,7 @@ void wc_InitMd4(wc_Md4* md4);
\sa wc_Md4Final
\sa wc_InitMd4
*/
void wc_Md4Update(wc_Md4* md4, const byte* data, word32 len);
int wc_Md4Update(wc_Md4* md4, const byte* data, word32 len);
/*!
\ingroup MD4
@@ -83,4 +83,4 @@ void wc_Md4Update(wc_Md4* md4, const byte* data, word32 len);
\sa wc_Md4Final
\sa wc_InitMd4
*/
void wc_Md4Final(wc_Md4* md4, byte* hash);
int wc_Md4Final(wc_Md4* md4, byte* hash);
+3 -3
View File
@@ -24,7 +24,7 @@
\sa wc_Md4Update
\sa wc_Md4Final
*/
void wc_InitMd4(wc_Md4* md4);
int wc_InitMd4(wc_Md4* md4);
/*!
\ingroup MD4
@@ -57,7 +57,7 @@ void wc_InitMd4(wc_Md4* md4);
\sa wc_Md4Final
\sa wc_InitMd4
*/
void wc_Md4Update(wc_Md4* md4, const byte* data, word32 len);
int wc_Md4Update(wc_Md4* md4, const byte* data, word32 len);
/*!
\ingroup MD4
@@ -85,4 +85,4 @@ void wc_Md4Update(wc_Md4* md4, const byte* data, word32 len);
\sa wc_Md4Final
\sa wc_InitMd4
*/
void wc_Md4Final(wc_Md4* md4, byte* hash);
int wc_Md4Final(wc_Md4* md4, byte* hash);
+28 -6
View File
@@ -37,9 +37,12 @@
/* Unit test for wc_InitMd4() and wc_InitMd4_ex() */
int test_wc_InitMd4(void)
{
EXPECT_SUCCESS_DECLS;
EXPECT_DECLS;
#ifndef NO_MD4
DIGEST_INIT_ONLY_TEST(wc_Md4, Md4);
wc_Md4 md4;
ExpectIntEQ(wc_InitMd4(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
ExpectIntEQ(wc_InitMd4(&md4), 0);
#endif
return EXPECT_RESULT();
}
@@ -47,9 +50,19 @@ int test_wc_InitMd4(void)
/* Unit test for wc_UpdateMd4() */
int test_wc_Md4Update(void)
{
EXPECT_SUCCESS_DECLS;
EXPECT_DECLS;
#ifndef NO_MD4
DIGEST_UPDATE_ONLY_TEST(wc_Md4, Md4);
wc_Md4 md4;
ExpectIntEQ(wc_InitMd4(&md4), 0);
ExpectIntEQ(wc_Md4Update(NULL, NULL, 1), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
ExpectIntEQ(wc_Md4Update(&md4, NULL, 1), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
ExpectIntEQ(wc_Md4Update(NULL, (byte*)"a", 1),
WC_NO_ERR_TRACE(BAD_FUNC_ARG));
ExpectIntEQ(wc_Md4Update(&md4, NULL, 0), 0);
ExpectIntEQ(wc_Md4Update(&md4, (byte*)"a", 1), 0);
#endif
return EXPECT_RESULT();
}
@@ -57,9 +70,18 @@ int test_wc_Md4Update(void)
/* Unit test for wc_Md4Final() */
int test_wc_Md4Final(void)
{
EXPECT_SUCCESS_DECLS;
EXPECT_DECLS;
#ifndef NO_MD4
DIGEST_FINAL_ONLY_TEST(wc_Md4, Md4, MD4);
wc_Md4 md4;
byte hash[WC_MD4_DIGEST_SIZE];
ExpectIntEQ(wc_InitMd4(&md4), 0);
ExpectIntEQ(wc_Md4Final(NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
ExpectIntEQ(wc_Md4Final(&md4, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
ExpectIntEQ(wc_Md4Final(NULL, hash), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
ExpectIntEQ(wc_Md4Final(&md4, hash), 0);
#endif
return EXPECT_RESULT();
}
+11 -7
View File
@@ -32,10 +32,10 @@
#endif
void wc_InitMd4(wc_Md4* md4)
int wc_InitMd4(wc_Md4* md4)
{
if (md4 == NULL)
return;
return BAD_FUNC_ARG;
md4->digest[0] = 0x67452301L;
md4->digest[1] = 0xefcdab89L;
@@ -45,6 +45,8 @@ void wc_InitMd4(wc_Md4* md4)
md4->buffLen = 0;
md4->loLen = 0;
md4->hiLen = 0;
return 0;
}
@@ -136,13 +138,13 @@ static WC_INLINE void AddLength(wc_Md4* md4, word32 len)
}
void wc_Md4Update(wc_Md4* md4, const byte* data, word32 len)
int wc_Md4Update(wc_Md4* md4, const byte* data, word32 len)
{
/* do block size increments */
byte* local;
if (md4 == NULL || (data == NULL && len != 0))
return;
return BAD_FUNC_ARG;
local = (byte*)md4->buffer;
while (len) {
@@ -162,15 +164,17 @@ void wc_Md4Update(wc_Md4* md4, const byte* data, word32 len)
md4->buffLen = 0;
}
}
return 0;
}
void wc_Md4Final(wc_Md4* md4, byte* hash)
int wc_Md4Final(wc_Md4* md4, byte* hash)
{
byte* local;
if (md4 == NULL || hash == NULL)
return;
return BAD_FUNC_ARG;
local = (byte*)md4->buffer;
AddLength(md4, md4->buffLen); /* before adding pads */
@@ -209,7 +213,7 @@ void wc_Md4Final(wc_Md4* md4, byte* hash)
#endif
XMEMCPY(hash, md4->digest, WC_MD4_DIGEST_SIZE);
wc_InitMd4(md4); /* reset state */
return wc_InitMd4(md4); /* reset state */
}
+11 -3
View File
@@ -4861,6 +4861,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t md5_test(void)
WOLFSSL_TEST_SUBROUTINE wc_test_ret_t md4_test(void)
{
wc_test_ret_t ret = 0;
wc_Md4 md4;
byte hash[WC_MD4_DIGEST_SIZE];
@@ -4921,11 +4922,18 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t md4_test(void)
test_md4[5] = f;
test_md4[6] = g;
wc_InitMd4(&md4);
ret = wc_InitMd4(&md4);
if (ret != 0)
return WC_TEST_RET_ENC_EC(ret);
for (i = 0; i < times; ++i) {
wc_Md4Update(&md4, (byte*)test_md4[i].input, (word32)test_md4[i].inLen);
wc_Md4Final(&md4, hash);
ret = wc_Md4Update(&md4, (byte*)test_md4[i].input,
(word32)test_md4[i].inLen);
if (ret != 0)
return WC_TEST_RET_ENC_I(i);
ret = wc_Md4Final(&md4, hash);
if (ret != 0)
return WC_TEST_RET_ENC_I(i);
if (XMEMCMP(hash, test_md4[i].output, WC_MD4_DIGEST_SIZE) != 0)
return WC_TEST_RET_ENC_I(i);
+3 -3
View File
@@ -48,9 +48,9 @@ typedef struct wc_Md4 {
word32 buffer[WC_MD4_BLOCK_SIZE / sizeof(word32)];
} wc_Md4;
WOLFSSL_API void wc_InitMd4(wc_Md4* md4);
WOLFSSL_API void wc_Md4Update(wc_Md4* md4, const byte* data, word32 len);
WOLFSSL_API void wc_Md4Final(wc_Md4* md4, byte* hash);
WOLFSSL_API int wc_InitMd4(wc_Md4* md4);
WOLFSSL_API int wc_Md4Update(wc_Md4* md4, const byte* data, word32 len);
WOLFSSL_API int wc_Md4Final(wc_Md4* md4, byte* hash);
#ifndef OPENSSL_COEXIST