• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef AES_CMAC_RFC4493_H
2 #define AES_CMAC_RFC4493_H
3 
4 /*
5  * AES CMAC test vectors from:
6  *     https://tools.ietf.org/html/rfc4493
7  *
8  * NOTE: test vectors only present for AES-256.
9  */
10 
11 typedef struct {
12   uint8_t K[16];
13   uint8_t M[64];
14   size_t M_len;
15   uint8_t CMAC[16];
16 } cmac_data;
17 
18 const cmac_data RFC4493_AES_CMAC_DATA[] = {
19   {
20     .K = {
21       0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6,
22       0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c
23     },
24     .M = { },
25     .M_len = 0,
26     .CMAC = {
27       0xbb, 0x1d, 0x69, 0x29, 0xe9, 0x59, 0x37, 0x28,
28       0x7f, 0xa3, 0x7d, 0x12, 0x9b, 0x75, 0x67, 0x46
29     },
30   },
31   {
32     .K = {
33       0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6,
34       0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c
35     },
36     .M = {
37       0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96,
38       0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a
39     },
40     .M_len = 16,
41     .CMAC = {
42       0x07, 0x0a, 0x16, 0xb4, 0x6b, 0x4d, 0x41, 0x44,
43       0xf7, 0x9b, 0xdd, 0x9d, 0xd0, 0x4a, 0x28, 0x7c
44     },
45   },
46   {
47     .K = {
48       0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6,
49       0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c
50     },
51     .M = {
52       0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96,
53       0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a,
54       0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c,
55       0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51,
56       0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11
57     },
58     .M_len = 40,
59     .CMAC = {
60       0xdf, 0xa6, 0x67, 0x47, 0xde, 0x9a, 0xe6, 0x30,
61       0x30, 0xca, 0x32, 0x61, 0x14, 0x97, 0xc8, 0x27
62     },
63   },
64   {
65     .K = {
66       0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6,
67       0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c
68     },
69     .M = {
70       0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96,
71       0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a,
72       0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c,
73       0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51,
74       0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11,
75       0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef,
76       0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17,
77       0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10,
78     },
79     .M_len = 64,
80     .CMAC = {
81       0x51, 0xf0, 0xbe, 0xbf, 0x7e, 0x3b, 0x9d, 0x92,
82       0xfc, 0x49, 0x74, 0x17, 0x79, 0x36, 0x3c, 0xfe
83     },
84   },
85 };
86 
87 #endif  // AES_CMAC_RFC4493_H
88