mirror of https://github.com/wolfSSL/wolfssl.git
FinalRaw parameter hash may not be aligned.
parent
e684156a1e
commit
fb7d74c197
|
@ -433,13 +433,19 @@ int wc_ShaUpdate(wc_Sha* sha, const byte* data, word32 len)
|
|||
|
||||
int wc_ShaFinalRaw(wc_Sha* sha, byte* hash)
|
||||
{
|
||||
#ifdef LITTLE_ENDIAN_ORDER
|
||||
word32 digest[WC_SHA_DIGEST_SIZE / sizeof(word32)];
|
||||
#endif
|
||||
|
||||
if (sha == NULL || hash == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
XMEMCPY(hash, sha->digest, WC_SHA_DIGEST_SIZE);
|
||||
#ifdef LITTLE_ENDIAN_ORDER
|
||||
ByteReverseWords((word32*)hash, (word32*)hash, WC_SHA_DIGEST_SIZE);
|
||||
ByteReverseWords((word32*)digest, (word32*)sha->digest, WC_SHA_DIGEST_SIZE);
|
||||
XMEMCPY(hash, digest, WC_SHA_DIGEST_SIZE);
|
||||
#else
|
||||
XMEMCPY(hash, sha->digest, WC_SHA_DIGEST_SIZE);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -767,13 +767,20 @@ static int InitSha256(wc_Sha256* sha256)
|
|||
|
||||
int wc_Sha256FinalRaw(wc_Sha256* sha256, byte* hash)
|
||||
{
|
||||
#ifdef LITTLE_ENDIAN_ORDER
|
||||
word32 digest[WC_SHA256_DIGEST_SIZE / sizeof(word32)];
|
||||
#endif
|
||||
|
||||
if (sha256 == NULL || hash == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
#ifdef LITTLE_ENDIAN_ORDER
|
||||
ByteReverseWords((word32*)digest, (word32*)sha256->digest,
|
||||
WC_SHA256_DIGEST_SIZE);
|
||||
XMEMCPY(hash, digest, WC_SHA256_DIGEST_SIZE);
|
||||
#else
|
||||
XMEMCPY(hash, sha256->digest, WC_SHA256_DIGEST_SIZE);
|
||||
#if defined(LITTLE_ENDIAN_ORDER)
|
||||
ByteReverseWords((word32*)hash, (word32*)hash, WC_SHA256_DIGEST_SIZE);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -697,13 +697,20 @@ static INLINE int Sha512Final(wc_Sha512* sha512)
|
|||
|
||||
int wc_Sha512FinalRaw(wc_Sha512* sha512, byte* hash)
|
||||
{
|
||||
#ifdef LITTLE_ENDIAN_ORDER
|
||||
word64 digest[WC_SHA512_DIGEST_SIZE / sizeof(word64)];
|
||||
#endif
|
||||
|
||||
if (sha512 == NULL || hash == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
#ifdef LITTLE_ENDIAN_ORDER
|
||||
ByteReverseWords64((word64*)digest, (word64*)sha512->digest,
|
||||
WC_SHA512_DIGEST_SIZE);
|
||||
XMEMCPY(hash, digest, WC_SHA512_DIGEST_SIZE);
|
||||
#else
|
||||
XMEMCPY(hash, sha512->digest, WC_SHA512_DIGEST_SIZE);
|
||||
#if defined(LITTLE_ENDIAN_ORDER)
|
||||
ByteReverseWords64((word64*)hash, (word64*)hash, WC_SHA512_DIGEST_SIZE);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
@ -2604,13 +2611,20 @@ int wc_Sha384Update(wc_Sha384* sha384, const byte* data, word32 len)
|
|||
|
||||
int wc_Sha384FinalRaw(wc_Sha384* sha384, byte* hash)
|
||||
{
|
||||
#ifdef LITTLE_ENDIAN_ORDER
|
||||
word64 digest[WC_SHA384_DIGEST_SIZE / sizeof(word64)];
|
||||
#endif
|
||||
|
||||
if (sha384 == NULL || hash == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
#ifdef LITTLE_ENDIAN_ORDER
|
||||
ByteReverseWords64((word64*)digest, (word64*)sha384->digest,
|
||||
WC_SHA384_DIGEST_SIZE);
|
||||
XMEMCPY(hash, digest, WC_SHA384_DIGEST_SIZE);
|
||||
#else
|
||||
XMEMCPY(hash, sha384->digest, WC_SHA384_DIGEST_SIZE);
|
||||
#if defined(LITTLE_ENDIAN_ORDER)
|
||||
ByteReverseWords64((word64*)hash, (word64*)hash, WC_SHA384_DIGEST_SIZE);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue