From 63d157d1562a051879d21e74c6788e99e3e9b0f2 Mon Sep 17 00:00:00 2001 From: Ge Shanfeng Date: Sun, 6 Feb 2022 15:40:26 +0800 Subject: [PATCH] fix cmac implement error and illegal memory stampede Test: 1. build ok 2. test cmac ok --- CMAC SPEC rfc4493.txt.pdf | Bin 0 -> 24974 bytes aes_client.c | 37 ++++++++++++++++++++++++++++++++++--- aes_cmac.c | 18 +++++++++--------- 3 files changed, 43 insertions(+), 12 deletions(-) create mode 100644 CMAC SPEC rfc4493.txt.pdf diff --git a/CMAC SPEC rfc4493.txt.pdf b/CMAC SPEC rfc4493.txt.pdf new file mode 100644 index 0000000000000000000000000000000000000000..56e3797ec35901c7894c2be341f7a710aca61519 GIT binary patch literal 24974 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 literal 0 HcmV?d00001 diff --git a/aes_client.c b/aes_client.c index df3d0cf..42e117b 100644 --- a/aes_client.c +++ b/aes_client.c @@ -103,10 +103,41 @@ void aes_cmac_test() print_hex(mac, 16); } +void aes_cmac_can_test() +{ + unsigned char key_auth[16] = {0x30, 0xC1, 0x37, 0xAA, 0x33, 0x85, 0xDE, 0x39, 0x07, 0xB3, 0x09, 0x4B, 0x03, 0x0C, 0xFD, 0x30}; + + unsigned char out_mac[16]; + unsigned char pdu_in[18] = {0x03, 0x51, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x00, 0x00, 0x16, 0x00, 0x01, 0x00, 0x00, 0x35}; + aes_cmac(pdu_in, sizeof(pdu_in), key_auth, out_mac); + print_hex(out_mac, 16); +} + +void aes_cbc_test() +{ + unsigned char aes_key[16] = {0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01}; + unsigned char aes_iv[16] = {0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02}; + char in[128] = "123456789agdugyasdgfyagsdvsdayfadfakdfggyu"; + unsigned char out[128]; + char tmp[128]; + int out_len; + int tmp_len; + + memset(out, 0, sizeof(out)); + memset(tmp, 0, sizeof(tmp)); + + out_len = AES_CBC_encrypt(in, out, strlen(in), aes_key, 16, aes_iv); + print_hex(out, out_len); + AES_CBC_decrypt(out, tmp, out_len, aes_key, 16, aes_iv); + printf("%s\n", tmp); +} + int main() { - aes_128_test(); + //aes_128_test(); // aes_256_test(); - aes_128_cbc_test(); - aes_cmac_test(); + //aes_128_cbc_test(); + //aes_cmac_test(); + aes_cbc_test(); + aes_cmac_can_test(); } diff --git a/aes_cmac.c b/aes_cmac.c index a7ff12c..3bf5561 100644 --- a/aes_cmac.c +++ b/aes_cmac.c @@ -16,7 +16,7 @@ void aes_cmac(uint8_t *input, unsigned long length, uint8_t *key, uint8_t *mac_v { uint8_t subkey_1[AES_BLOCKSIZE]; uint8_t subkey_2[AES_BLOCKSIZE]; - uint8_t previous_block_ciphertext[AES_BLOCKSIZE] = {}; + uint8_t previous_block_ciphertext[AES_BLOCKSIZE] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; uint8_t temp[AES_BLOCKSIZE]; unsigned long i; aes_ctx_t *aes_ctx; @@ -30,29 +30,29 @@ void aes_cmac(uint8_t *input, unsigned long length, uint8_t *key, uint8_t *mac_v #ifdef DEBUG printf("Position %lx\n", i); - printf("M:\n"); - print_block(input); printf("IV:\n"); print_block(previous_block_ciphertext); #endif - block_xor_triple(input, previous_block_ciphertext, temp); - -#ifdef DEBUG - printf("xored with IV:\n"); - print_block(temp); -#endif if(i + AES_BLOCKSIZE == length) { //the last block if full, xor with subkey_1 + memcpy(temp, input, AES_BLOCKSIZE); block_xor_triple(temp, subkey_1, temp); } else if(i + AES_BLOCKSIZE > length) { //last block is not full, add padding + memcpy(temp, input, length-i); add_padding(temp, length - i); + //print_block(temp); block_xor_triple(temp, subkey_2, temp); } + else + { + memcpy(temp, input, AES_BLOCKSIZE); + } + block_xor_triple(temp, previous_block_ciphertext, temp); #ifdef DEBUG printf("xored with key:\n");