Skip to content

Commit af928fa

Browse files
authored
Merge pull request #7489 from anhu/zero_len_hash
Allow for zero length hash. Its not an error.
2 parents d53abc2 + 529b6a1 commit af928fa

2 files changed

Lines changed: 58 additions & 3 deletions

File tree

wolfcrypt/src/sha256.c

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -825,7 +825,14 @@ static int InitSha256(wc_Sha256* sha256)
825825
{
826826
int ret = 0;
827827

828-
if (sha256 == NULL || (data == NULL && len > 0)) {
828+
if (sha256 == NULL) {
829+
return BAD_FUNC_ARG;
830+
}
831+
if (data == NULL && len == 0) {
832+
/* valid, but do nothing */
833+
return 0;
834+
}
835+
if (data == NULL) {
829836
return BAD_FUNC_ARG;
830837
}
831838

@@ -876,6 +883,17 @@ static int InitSha256(wc_Sha256* sha256)
876883

877884
int wc_Sha256Update(wc_Sha256* sha256, const byte* data, word32 len)
878885
{
886+
if (sha256 == NULL) {
887+
return BAD_FUNC_ARG;
888+
}
889+
if (data == NULL && len == 0) {
890+
/* valid, but do nothing */
891+
return 0;
892+
}
893+
if (data == NULL) {
894+
return BAD_FUNC_ARG;
895+
}
896+
879897
return se050_hash_update(&sha256->se050Ctx, data, len);
880898
}
881899

wolfcrypt/src/sha512.c

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,17 @@
166166
}
167167
int wc_Sha512Update(wc_Sha512* sha512, const byte* data, word32 len)
168168
{
169+
if (sha512 == NULL) {
170+
return BAD_FUNC_ARG;
171+
}
172+
if (data == NULL && len == 0) {
173+
/* valid, but do nothing */
174+
return 0;
175+
}
176+
if (data == NULL) {
177+
return BAD_FUNC_ARG;
178+
}
179+
169180
return se050_hash_update(&sha512->se050Ctx, data, len);
170181
}
171182
int wc_Sha512Final(wc_Sha512* sha512, byte* hash)
@@ -1096,7 +1107,14 @@ static WC_INLINE int Sha512Update(wc_Sha512* sha512, const byte* data, word32 le
10961107

10971108
int wc_Sha512Update(wc_Sha512* sha512, const byte* data, word32 len)
10981109
{
1099-
if (sha512 == NULL || (data == NULL && len > 0)) {
1110+
if (sha512 == NULL) {
1111+
return BAD_FUNC_ARG;
1112+
}
1113+
if (data == NULL && len == 0) {
1114+
/* valid, but do nothing */
1115+
return 0;
1116+
}
1117+
if (data == NULL) {
11001118
return BAD_FUNC_ARG;
11011119
}
11021120

@@ -1497,6 +1515,17 @@ int wc_Sha512Transform(wc_Sha512* sha, const unsigned char* data)
14971515
}
14981516
int wc_Sha384Update(wc_Sha384* sha384, const byte* data, word32 len)
14991517
{
1518+
if (sha384 == NULL) {
1519+
return BAD_FUNC_ARG;
1520+
}
1521+
if (data == NULL && len == 0) {
1522+
/* valid, but do nothing */
1523+
return 0;
1524+
}
1525+
if (data == NULL) {
1526+
return BAD_FUNC_ARG;
1527+
}
1528+
15001529
return se050_hash_update(&sha384->se050Ctx, data, len);
15011530

15021531
}
@@ -1582,7 +1611,15 @@ static int InitSha384(wc_Sha384* sha384)
15821611

15831612
int wc_Sha384Update(wc_Sha384* sha384, const byte* data, word32 len)
15841613
{
1585-
if (sha384 == NULL || (data == NULL && len > 0)) {
1614+
1615+
if (sha384 == NULL) {
1616+
return BAD_FUNC_ARG;
1617+
}
1618+
if (data == NULL && len == 0) {
1619+
/* valid, but do nothing */
1620+
return 0;
1621+
}
1622+
if (data == NULL) {
15861623
return BAD_FUNC_ARG;
15871624
}
15881625

0 commit comments

Comments
 (0)