update sha256 support for endian

pull/2737/head
JacobBarthelmeh 2020-02-04 16:03:45 -08:00
parent 6ec136208c
commit b7d772700a
1 changed files with 16 additions and 1 deletions

View File

@ -551,14 +551,29 @@ static int InitSha256(wc_Sha256* sha256)
#define WOLFSSL_SCE_SHA256_HANDLE g_sce_hash_0
#endif
#define WC_SHA256_DIGEST_WORD_SIZE 16
#define XTRANSFORM(S, D) wc_Sha256SCE_XTRANSFORM((S), (D))
static int wc_Sha256SCE_XTRANSFORM(wc_Sha256* sha256, const byte* data)
{
if (g_sce.p_cfg->endian_flag == CRYPTO_WORD_ENDIAN_LITTLE)
{
ByteReverseWords((word32*)data, (word32*)data, WC_SHA256_BLOCK_SIZE);
ByteReverseWords(sha256->digest, sha256->digest, WC_SHA256_DIGEST_SIZE);
}
if (WOLFSSL_SCE_SHA256_HANDLE.p_api->hashUpdate(WOLFSSL_SCE_SHA256_HANDLE.p_ctrl,
(word32*)data, 8, sha256->digest) != SSP_SUCCESS) {
(word32*)data, WC_SHA256_DIGEST_WORD_SIZE,
sha256->digest) != SSP_SUCCESS) {
WOLFSSL_MSG("Unexpected hardware return value");
return WC_HW_E;
}
if (g_sce.p_cfg->endian_flag == CRYPTO_WORD_ENDIAN_LITTLE)
{
ByteReverseWords((word32*)data, (word32*)data, WC_SHA256_BLOCK_SIZE);
ByteReverseWords(sha256->digest, sha256->digest, WC_SHA256_DIGEST_SIZE);
}
return 0;
}