// tauset(58, 19); // taurand(2040); int32 authTest_hmacTest(void) { uint32 i, dataLen, keyLen; dataLen = 2048; keyLen = 8; for(i=0; i<2048; i++) asicTestData[i] = 0xFF;//(uint8)taurand(256); for(i=0; i<keyLen; i++) asicTestKey[i] = 0x01;//(uint8)taurand(256); for(dataLen = 8; dataLen<2048; dataLen++) { rtlglue_printf("\r HMAC MD5 0xFF pattern data length %4u", dataLen); rtl8651b_authEngine_hmacMd5(asicTestData, dataLen, asicTestKey, keyLen, asicDigest); authSim_hmacMd5(asicTestData, dataLen, asicTestKey, keyLen, simDigest); if(memcmp(asicDigest, simDigest, RTL8651B_MD5_DIGEST_LENGTH)) { displayDigestMismatch("HMAC MD5 Digest mismatch", asicTestData, dataLen, asicTestKey, keyLen, "ASIC", asicDigest, "SIM", simDigest, RTL8651B_MD5_DIGEST_LENGTH); if(memcmp(asicDigest, nullPattern, RTL8651B_MD5_DIGEST_LENGTH) != 0) triggerGpio(); break; } } for(dataLen = 8; dataLen<2048; dataLen++) { rtlglue_printf("\r HMAC SHA-1 0xFF pattern data length %4u", dataLen); rtl8651b_authEngine_hmacSha1(asicTestData, dataLen, asicTestKey, keyLen, asicDigest); authSim_hmacSha1(asicTestData, dataLen, asicTestKey, keyLen, simDigest); if(memcmp(asicDigest, simDigest, RTL8651B_SHA1_DIGEST_LENGTH)) { displayDigestMismatch("HMAC SHA1 Digest mismatch", asicTestData, dataLen, asicTestKey, keyLen, "ASIC", asicDigest, "SIM", simDigest, RTL8651B_SHA1_DIGEST_LENGTH); if(memcmp(asicDigest, nullPattern, RTL8651B_SHA1_DIGEST_LENGTH) != 0) triggerGpio(); break; } } return SUCCESS; }
err_status_t hmac_compute(hmac_ctx_t *state, const void *message, int msg_octets, int tag_len, uint8_t *result) { rtl8651b_authEngine_hmacSha1(message, msg_octets, state->key, state->key_len, result); return err_status_ok; }