void bcal_eax_free(bcal_eax_ctx_t *ctx){ bcal_ctr_free(&(ctx->cipher)); bcal_cmac_free(&(ctx->ctag)); bcal_cmac_free(&(ctx->htag)); bcal_cmac_free(&(ctx->ntag)); free(ctx->nonce); }
/* Klen = 16 Mlen = 18 Tlen = 2 Key = 3250974e306b4b678f914b514d1e90f6 Msg = cf132fd4ebc25fd3866f1a95a6193a1a9cdf */ void testrun_aes128_cmac72(void){ uint8_t key[16]= { 0x32, 0x50, 0x97, 0x4e, 0x30, 0x6b, 0x4b, 0x67, 0x8f, 0x91, 0x4b, 0x51, 0x4d, 0x1e, 0x90, 0xf6 }; uint8_t tag[2]; uint8_t plain[18] = { 0xcf, 0x13, 0x2f, 0xd4, 0xeb, 0xc2, 0x5f, 0xd3, 0x86, 0x6f, 0x1a, 0x95, 0xa6, 0x19, 0x3a, 0x1a, 0x9c, 0xdf, }; bcal_cmac_ctx_t ctx; uint8_t r; cli_putstr("\r\n** AES128-CMAC-72-TEST **"); cli_putstr("\r\n key: "); cli_hexdump(key, 128/8); r = bcal_cmac_init(&aes128_desc, key, 128, &ctx); cli_putstr("\r\n init = 0x"); cli_hexdump(&r, 1); cli_putstr("\r\n message: "); cli_hexdump_block(plain, 18, 4, 16); if(r) return; bcal_cmac(tag, 16, plain, 18*8, &ctx); cli_putstr("\r\n tag: "); cli_hexdump_block(tag, 2, 4, 16); bcal_cmac_free(&ctx); }
/* Count = 0 Klen = 24 Mlen = 0 Tlen = 2 Key = 2b2aaa666be161ed16648e862ac9bd1e317f71bc69e268b5 Msg = 00 */ void testrun_aes192_cmac0(void){ uint8_t key[24]= { 0x2b, 0x2a, 0xaa, 0x66, 0x6b, 0xe1, 0x61, 0xed, 0x16, 0x64, 0x8e, 0x86, 0x2a, 0xc9, 0xbd, 0x1e, 0x31, 0x7f, 0x71, 0xbc, 0x69, 0xe2, 0x68, 0xb5 }; uint8_t tag[2]; uint8_t plain[1] = { 0x00 }; bcal_cmac_ctx_t ctx; uint8_t r; cli_putstr("\r\n** AES192-CMAC-0-TEST **"); cli_putstr("\r\n key: "); cli_hexdump(key, 192/8); r = bcal_cmac_init(&aes192_desc, key, 192, &ctx); cli_putstr("\r\n init = 0x"); cli_hexdump(&r, 1); if(r) return; bcal_cmac(tag, 16, plain, 0*8, &ctx); cli_putstr("\r\n tag: "); cli_hexdump_block(tag, 2, 4, 16); bcal_cmac_free(&ctx); }
void testrun_aes128_cmac(void){ uint8_t key[16]; uint8_t tag[16]; uint8_t plain[64]; uint16_t length[] = { 0, 128, 320, 512 }; bcal_cmac_ctx_t ctx; uint8_t r,i; memcpy(key, modes_key, 16); memcpy(plain, modes_plain, 64); cli_putstr("\r\n** AES128-CMAC-TEST **"); cli_putstr("\r\n key: "); cli_hexdump(key, 128/8); for(i=0; i<4; ++i){ r = bcal_cmac_init(&aes128_desc, key, 128, &ctx); cli_putstr("\r\n init = 0x"); cli_hexdump(&r, 1); cli_putstr("\r\n message: "); cli_hexdump_block(plain, length[i]/8, 4, 16); if(r) return; bcal_cmac(tag, 128, plain, length[i], &ctx); cli_putstr("\r\n tag: "); cli_hexdump_block(tag, 128/8, 4, 16); bcal_cmac_free(&ctx); } }