diff --git a/lib/aarch64/snow3g_common_aarch64.h b/lib/aarch64/snow3g_common_aarch64.h index f404924250285037b962e2d606de3cee31eb9939..63a10bcf3a709f61189b5dbfcbf315b3665bf9c6 100644 --- a/lib/aarch64/snow3g_common_aarch64.h +++ b/lib/aarch64/snow3g_common_aarch64.h @@ -1755,7 +1755,6 @@ size_t SNOW3G_KEY_SCHED_SIZE(void) int SNOW3G_INIT_KEY_SCHED(const void *pKey, snow3g_key_schedule_t *pCtx) { #ifdef SAFE_PARAM - if ((pKey == NULL) || (pCtx == NULL)) /* reset error status */ imb_set_errno(NULL, 0); @@ -2827,6 +2826,24 @@ SNOW3G_F8_4_BUFFER_INITIALIZE(void *pCtx, const void *pIV1, const void *pIV2, const void *pIV3, const void *pIV4) { +#ifdef SAFE_PARAM + /* reset error status */ + imb_set_errno(NULL, 0); + + if (pCtx == NULL) { + imb_set_errno(NULL, IMB_ERR_NULL_CTX); + } + if (pKeySched1 == NULL || pKeySched2 == NULL || + pKeySched3 == NULL || pKeySched4 == NULL) { + imb_set_errno(NULL, IMB_ERR_NULL_EXP_KEY); + return; + } + if ((pIV1 == NULL) || pIV2 == NULL || + (pIV3 == NULL) || (pIV4 == NULL)) { + imb_set_errno(NULL, IMB_ERR_NULL_IV); + return; + } +#endif /* Initialize the schedule from the IV */ snow3gStateInitialize_4_multikey((snow3gKeyState4_t *)pCtx, pKeySched1, pKeySched2, @@ -2877,9 +2894,6 @@ void SNOW3G_F8_4_BUFFER_STREAM(void *pCtx, #ifdef SAFE_PARAM /* reset error status */ imb_set_errno(NULL, 0); - if (!cptr_check((const void * const *)pCtx, num_lanes, - IMB_ERR_NULL_EXP_KEY)) - return; if (!cptr_check((const void * const *)pBufferIn, num_lanes, IMB_ERR_NULL_SRC)) @@ -2939,6 +2953,26 @@ void SNOW3G_F8_1_BUFFER_STREAM(void *pCtx, void *pBufferOut, const uint32_t lengthInBytes) { +#ifdef SAFE_PARAM + /* reset error status */ + imb_set_errno(NULL, 0); + if (pBufferIn == NULL) { + imb_set_errno(NULL, IMB_ERR_NULL_SRC); + return; + } + if (pBufferOut == NULL) { + imb_set_errno(NULL, IMB_ERR_NULL_DST); + return; + } + if ((lengthInBytes == 0) || (lengthInBytes > SNOW3G_MAX_BYTELEN)) { + imb_set_errno(NULL, IMB_ERR_CIPH_LEN); + return; + } + if (pCtx == NULL) { + imb_set_errno(NULL, IMB_ERR_NULL_CTX); + return; + } +#endif f8_snow3g((snow3gKeyState1_t *)pCtx, pBufferIn, pBufferOut, lengthInBytes); #ifdef SAFE_DATA CLEAR_SCRATCH_GPS(); @@ -3026,10 +3060,26 @@ void SNOW3G_F9_1_BUFFER_DIGEST(const uint32_t z[5], void *pDigest) { #ifdef SAFE_PARAM - if ((z == NULL) || (pBufferIn == NULL) || (pDigest == NULL) || - (lengthInBits == 0) || (lengthInBits > SNOW3G_MAX_BITLEN)) + /* reset error status */ + imb_set_errno(NULL, 0); + if (z == NULL) { + imb_set_errno(NULL, IMB_ERR_NULL_AUTH_KEY); + return; + } + if (pBufferIn == NULL) { + imb_set_errno(NULL, IMB_ERR_NULL_SRC); + return; + } + if (pDigest == NULL) { + imb_set_errno(NULL, IMB_ERR_NULL_AUTH); + return; + } + if ((lengthInBits == 0) || (lengthInBits > SNOW3G_MAX_BITLEN)) { + imb_set_errno(NULL, IMB_ERR_AUTH_LEN); return; + } #endif + #ifdef SAFE_DATA CLEAR_SCRATCH_SIMD_REGS(); #endif /* SAFE_DATA */ @@ -3188,10 +3238,17 @@ void SNOW3G_F9_4_BUFFER_KEYSTREAM(void *pCtx, snow3gKeyState4_t *ctx = (snow3gKeyState4_t *)pCtx; #ifdef SAFE_PARAM - if (pCtx == NULL) + /* reset error status */ + imb_set_errno(NULL, 0); + + if (pCtx == NULL) { + imb_set_errno(NULL, IMB_ERR_NULL_CTX); return; - if (ks1 == NULL || ks2 == NULL || ks3 == NULL || ks4 == NULL) + } + if (ks1 == NULL || ks2 == NULL || ks3 == NULL || ks4 == NULL) { + imb_set_errno(NULL, IMB_ERR_NULL_AUTH_KEY); return; + } #endif #ifdef SAFE_DATA