1*cd964fceSMatt Barden /* 2*cd964fceSMatt Barden * This file and its contents are supplied under the terms of the 3*cd964fceSMatt Barden * Common Development and Distribution License ("CDDL"), version 1.0. 4*cd964fceSMatt Barden * You may only use this file in accordance with the terms of version 5*cd964fceSMatt Barden * 1.0 of the CDDL. 6*cd964fceSMatt Barden * 7*cd964fceSMatt Barden * A full copy of the text of the CDDL should have accompanied this 8*cd964fceSMatt Barden * source. A copy of the CDDL is also available via the Internet at 9*cd964fceSMatt Barden * http://www.illumos.org/license/CDDL. 10*cd964fceSMatt Barden */ 11*cd964fceSMatt Barden 12*cd964fceSMatt Barden /* 13*cd964fceSMatt Barden * Copyright 2015 Nexenta Systems, Inc. All rights reserved. 14*cd964fceSMatt Barden */ 15*cd964fceSMatt Barden 16*cd964fceSMatt Barden #ifndef _AES_CCM_H 17*cd964fceSMatt Barden #define _AES_CCM_H 18*cd964fceSMatt Barden 19*cd964fceSMatt Barden #ifdef __cplusplus 20*cd964fceSMatt Barden extern "C" { 21*cd964fceSMatt Barden #endif 22*cd964fceSMatt Barden 23*cd964fceSMatt Barden /* 24*cd964fceSMatt Barden * Test vectors 25*cd964fceSMatt Barden * RFC3610 section 4 26*cd964fceSMatt Barden */ 27*cd964fceSMatt Barden 28*cd964fceSMatt Barden /* 29*cd964fceSMatt Barden * 1st half 30*cd964fceSMatt Barden */ 31*cd964fceSMatt Barden static uint8_t CCM_KEY1[16] = { 32*cd964fceSMatt Barden 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 33*cd964fceSMatt Barden 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 34*cd964fceSMatt Barden }; 35*cd964fceSMatt Barden 36*cd964fceSMatt Barden /* nonces */ 37*cd964fceSMatt Barden static uint8_t CCM1_N[] = { 38*cd964fceSMatt Barden 0x00, 0x00, 0x00, 0x03, 0x02, 0x01, 0x00, 0xA0, 39*cd964fceSMatt Barden 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 40*cd964fceSMatt Barden }; 41*cd964fceSMatt Barden static uint8_t CCM2_N[] = { 42*cd964fceSMatt Barden 0x00, 0x00, 0x00, 0x04, 0x03, 0x02, 0x01, 0xA0, 43*cd964fceSMatt Barden 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 44*cd964fceSMatt Barden }; 45*cd964fceSMatt Barden static uint8_t CCM3_N[] = { 46*cd964fceSMatt Barden 0x00, 0x00, 0x00, 0x05, 0x04, 0x03, 0x02, 0xA0, 47*cd964fceSMatt Barden 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 48*cd964fceSMatt Barden }; 49*cd964fceSMatt Barden static uint8_t CCM4_N[] = { 50*cd964fceSMatt Barden 0x00, 0x00, 0x00, 0x06, 0x05, 0x04, 0x03, 0xA0, 51*cd964fceSMatt Barden 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 52*cd964fceSMatt Barden }; 53*cd964fceSMatt Barden static uint8_t CCM5_N[] = { 54*cd964fceSMatt Barden 0x00, 0x00, 0x00, 0x07, 0x06, 0x05, 0x04, 0xA0, 55*cd964fceSMatt Barden 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 56*cd964fceSMatt Barden }; 57*cd964fceSMatt Barden static uint8_t CCM6_N[] = { 58*cd964fceSMatt Barden 0x00, 0x00, 0x00, 0x08, 0x07, 0x06, 0x05, 0xA0, 59*cd964fceSMatt Barden 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 60*cd964fceSMatt Barden }; 61*cd964fceSMatt Barden static uint8_t CCM7_N[] = { 62*cd964fceSMatt Barden 0x00, 0x00, 0x00, 0x09, 0x08, 0x07, 0x06, 0xA0, 63*cd964fceSMatt Barden 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 64*cd964fceSMatt Barden }; 65*cd964fceSMatt Barden static uint8_t CCM8_N[] = { 66*cd964fceSMatt Barden 0x00, 0x00, 0x00, 0x0A, 0x09, 0x08, 0x07, 0xA0, 67*cd964fceSMatt Barden 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 68*cd964fceSMatt Barden }; 69*cd964fceSMatt Barden static uint8_t CCM9_N[] = { 70*cd964fceSMatt Barden 0x00, 0x00, 0x00, 0x0B, 0x0A, 0x09, 0x08, 0xA0, 71*cd964fceSMatt Barden 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 72*cd964fceSMatt Barden }; 73*cd964fceSMatt Barden static uint8_t CCM10_N[] = { 74*cd964fceSMatt Barden 0x00, 0x00, 0x00, 0x0C, 0x0B, 0x0A, 0x09, 0xA0, 75*cd964fceSMatt Barden 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 76*cd964fceSMatt Barden }; 77*cd964fceSMatt Barden static uint8_t CCM11_N[] = { 78*cd964fceSMatt Barden 0x00, 0x00, 0x00, 0x0D, 0x0C, 0x0B, 0x0A, 0xA0, 79*cd964fceSMatt Barden 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 80*cd964fceSMatt Barden }; 81*cd964fceSMatt Barden static uint8_t CCM12_N[] = { 82*cd964fceSMatt Barden 0x00, 0x00, 0x00, 0x0E, 0x0D, 0x0C, 0x0B, 0xA0, 83*cd964fceSMatt Barden 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 84*cd964fceSMatt Barden }; 85*cd964fceSMatt Barden 86*cd964fceSMatt Barden /* vector data is a subset of this */ 87*cd964fceSMatt Barden static uint8_t CCM_DATA1[] = { 88*cd964fceSMatt Barden 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 89*cd964fceSMatt Barden 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 90*cd964fceSMatt Barden 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 91*cd964fceSMatt Barden 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 92*cd964fceSMatt Barden 0x20, 93*cd964fceSMatt Barden }; 94*cd964fceSMatt Barden 95*cd964fceSMatt Barden /* results */ 96*cd964fceSMatt Barden static uint8_t CCM1_RES[] = { 97*cd964fceSMatt Barden 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 98*cd964fceSMatt Barden 0x58, 0x8C, 0x97, 0x9A, 0x61, 0xC6, 0x63, 0xD2, 99*cd964fceSMatt Barden 0xF0, 0x66, 0xD0, 0xC2, 0xC0, 0xF9, 0x89, 0x80, 100*cd964fceSMatt Barden 0x6D, 0x5F, 0x6B, 0x61, 0xDA, 0xC3, 0x84, 0x17, 101*cd964fceSMatt Barden 0xE8, 0xD1, 0x2C, 0xFD, 0xF9, 0x26, 0xE0, 102*cd964fceSMatt Barden }; 103*cd964fceSMatt Barden static uint8_t CCM2_RES[] = { 104*cd964fceSMatt Barden 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 105*cd964fceSMatt Barden 0x72, 0xC9, 0x1A, 0x36, 0xE1, 0x35, 0xF8, 0xCF, 106*cd964fceSMatt Barden 0x29, 0x1C, 0xA8, 0x94, 0x08, 0x5C, 0x87, 0xE3, 107*cd964fceSMatt Barden 0xCC, 0x15, 0xC4, 0x39, 0xC9, 0xE4, 0x3A, 0x3B, 108*cd964fceSMatt Barden 0xA0, 0x91, 0xD5, 0x6E, 0x10, 0x40, 0x09, 0x16, 109*cd964fceSMatt Barden }; 110*cd964fceSMatt Barden static uint8_t CCM3_RES[] = { 111*cd964fceSMatt Barden 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 112*cd964fceSMatt Barden 0x51, 0xB1, 0xE5, 0xF4, 0x4A, 0x19, 0x7D, 0x1D, 113*cd964fceSMatt Barden 0xA4, 0x6B, 0x0F, 0x8E, 0x2D, 0x28, 0x2A, 0xE8, 114*cd964fceSMatt Barden 0x71, 0xE8, 0x38, 0xBB, 0x64, 0xDA, 0x85, 0x96, 115*cd964fceSMatt Barden 0x57, 0x4A, 0xDA, 0xA7, 0x6F, 0xBD, 0x9F, 0xB0, 116*cd964fceSMatt Barden 0xC5, 117*cd964fceSMatt Barden }; 118*cd964fceSMatt Barden static uint8_t CCM4_RES[] = { 119*cd964fceSMatt Barden 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 120*cd964fceSMatt Barden 0x08, 0x09, 0x0A, 0x0B, 0xA2, 0x8C, 0x68, 0x65, 121*cd964fceSMatt Barden 0x93, 0x9A, 0x9A, 0x79, 0xFA, 0xAA, 0x5C, 0x4C, 122*cd964fceSMatt Barden 0x2A, 0x9D, 0x4A, 0x91, 0xCD, 0xAC, 0x8C, 0x96, 123*cd964fceSMatt Barden 0xC8, 0x61, 0xB9, 0xC9, 0xE6, 0x1E, 0xF1, 124*cd964fceSMatt Barden }; 125*cd964fceSMatt Barden static uint8_t CCM5_RES[] = { 126*cd964fceSMatt Barden 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 127*cd964fceSMatt Barden 0x08, 0x09, 0x0A, 0x0B, 0xDC, 0xF1, 0xFB, 0x7B, 128*cd964fceSMatt Barden 0x5D, 0x9E, 0x23, 0xFB, 0x9D, 0x4E, 0x13, 0x12, 129*cd964fceSMatt Barden 0x53, 0x65, 0x8A, 0xD8, 0x6E, 0xBD, 0xCA, 0x3E, 130*cd964fceSMatt Barden 0x51, 0xE8, 0x3F, 0x07, 0x7D, 0x9C, 0x2D, 0x93, 131*cd964fceSMatt Barden }; 132*cd964fceSMatt Barden static uint8_t CCM6_RES[] = { 133*cd964fceSMatt Barden 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 134*cd964fceSMatt Barden 0x08, 0x09, 0x0A, 0x0B, 0x6F, 0xC1, 0xB0, 0x11, 135*cd964fceSMatt Barden 0xF0, 0x06, 0x56, 0x8B, 0x51, 0x71, 0xA4, 0x2D, 136*cd964fceSMatt Barden 0x95, 0x3D, 0x46, 0x9B, 0x25, 0x70, 0xA4, 0xBD, 137*cd964fceSMatt Barden 0x87, 0x40, 0x5A, 0x04, 0x43, 0xAC, 0x91, 0xCB, 138*cd964fceSMatt Barden 0x94, 139*cd964fceSMatt Barden }; 140*cd964fceSMatt Barden static uint8_t CCM7_RES[] = { 141*cd964fceSMatt Barden 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 142*cd964fceSMatt Barden 0x01, 0x35, 0xD1, 0xB2, 0xC9, 0x5F, 0x41, 0xD5, 143*cd964fceSMatt Barden 0xD1, 0xD4, 0xFE, 0xC1, 0x85, 0xD1, 0x66, 0xB8, 144*cd964fceSMatt Barden 0x09, 0x4E, 0x99, 0x9D, 0xFE, 0xD9, 0x6C, 0x04, 145*cd964fceSMatt Barden 0x8C, 0x56, 0x60, 0x2C, 0x97, 0xAC, 0xBB, 0x74, 146*cd964fceSMatt Barden 0x90, 147*cd964fceSMatt Barden }; 148*cd964fceSMatt Barden static uint8_t CCM8_RES[] = { 149*cd964fceSMatt Barden 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 150*cd964fceSMatt Barden 0x7B, 0x75, 0x39, 0x9A, 0xC0, 0x83, 0x1D, 0xD2, 151*cd964fceSMatt Barden 0xF0, 0xBB, 0xD7, 0x58, 0x79, 0xA2, 0xFD, 0x8F, 152*cd964fceSMatt Barden 0x6C, 0xAE, 0x6B, 0x6C, 0xD9, 0xB7, 0xDB, 0x24, 153*cd964fceSMatt Barden 0xC1, 0x7B, 0x44, 0x33, 0xF4, 0x34, 0x96, 0x3F, 154*cd964fceSMatt Barden 0x34, 0xB4, 155*cd964fceSMatt Barden }; 156*cd964fceSMatt Barden static uint8_t CCM9_RES[] = { 157*cd964fceSMatt Barden 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 158*cd964fceSMatt Barden 0x82, 0x53, 0x1A, 0x60, 0xCC, 0x24, 0x94, 0x5A, 159*cd964fceSMatt Barden 0x4B, 0x82, 0x79, 0x18, 0x1A, 0xB5, 0xC8, 0x4D, 160*cd964fceSMatt Barden 0xF2, 0x1C, 0xE7, 0xF9, 0xB7, 0x3F, 0x42, 0xE1, 161*cd964fceSMatt Barden 0x97, 0xEA, 0x9C, 0x07, 0xE5, 0x6B, 0x5E, 0xB1, 162*cd964fceSMatt Barden 0x7E, 0x5F, 0x4E, 163*cd964fceSMatt Barden }; 164*cd964fceSMatt Barden static uint8_t CCM10_RES[] = { 165*cd964fceSMatt Barden 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 166*cd964fceSMatt Barden 0x08, 0x09, 0x0A, 0x0B, 0x07, 0x34, 0x25, 0x94, 167*cd964fceSMatt Barden 0x15, 0x77, 0x85, 0x15, 0x2B, 0x07, 0x40, 0x98, 168*cd964fceSMatt Barden 0x33, 0x0A, 0xBB, 0x14, 0x1B, 0x94, 0x7B, 0x56, 169*cd964fceSMatt Barden 0x6A, 0xA9, 0x40, 0x6B, 0x4D, 0x99, 0x99, 0x88, 170*cd964fceSMatt Barden 0xDD, 171*cd964fceSMatt Barden }; 172*cd964fceSMatt Barden static uint8_t CCM11_RES[] = { 173*cd964fceSMatt Barden 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 174*cd964fceSMatt Barden 0x08, 0x09, 0x0A, 0x0B, 0x67, 0x6B, 0xB2, 0x03, 175*cd964fceSMatt Barden 0x80, 0xB0, 0xE3, 0x01, 0xE8, 0xAB, 0x79, 0x59, 176*cd964fceSMatt Barden 0x0A, 0x39, 0x6D, 0xA7, 0x8B, 0x83, 0x49, 0x34, 177*cd964fceSMatt Barden 0xF5, 0x3A, 0xA2, 0xE9, 0x10, 0x7A, 0x8B, 0x6C, 178*cd964fceSMatt Barden 0x02, 0x2C, 179*cd964fceSMatt Barden }; 180*cd964fceSMatt Barden static uint8_t CCM12_RES[] = { 181*cd964fceSMatt Barden 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 182*cd964fceSMatt Barden 0x08, 0x09, 0x0A, 0x0B, 0xC0, 0xFF, 0xA0, 0xD6, 183*cd964fceSMatt Barden 0xF0, 0x5B, 0xDB, 0x67, 0xF2, 0x4D, 0x43, 0xA4, 184*cd964fceSMatt Barden 0x33, 0x8D, 0x2A, 0xA4, 0xBE, 0xD7, 0xB2, 0x0E, 185*cd964fceSMatt Barden 0x43, 0xCD, 0x1A, 0xA3, 0x16, 0x62, 0xE7, 0xAD, 186*cd964fceSMatt Barden 0x65, 0xD6, 0xDB, 187*cd964fceSMatt Barden }; 188*cd964fceSMatt Barden 189*cd964fceSMatt Barden 190*cd964fceSMatt Barden /* 191*cd964fceSMatt Barden * 2nd half 192*cd964fceSMatt Barden */ 193*cd964fceSMatt Barden static uint8_t CCM_KEY2[16] = { 194*cd964fceSMatt Barden 0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 195*cd964fceSMatt Barden 0x25, 0xA7, 0x62, 0x36, 0xDF, 0x93, 0xCC, 0x6B, 196*cd964fceSMatt Barden }; 197*cd964fceSMatt Barden 198*cd964fceSMatt Barden /* nonces */ 199*cd964fceSMatt Barden static uint8_t CCM13_N[] = { 200*cd964fceSMatt Barden 0x00, 0x41, 0x2B, 0x4E, 0xA9, 0xCD, 0xBE, 0x3C, 201*cd964fceSMatt Barden 0x96, 0x96, 0x76, 0x6C, 0xFA, 202*cd964fceSMatt Barden }; 203*cd964fceSMatt Barden static uint8_t CCM14_N[] = { 204*cd964fceSMatt Barden 0x00, 0x33, 0x56, 0x8E, 0xF7, 0xB2, 0x63, 0x3C, 205*cd964fceSMatt Barden 0x96, 0x96, 0x76, 0x6C, 0xFA, 206*cd964fceSMatt Barden }; 207*cd964fceSMatt Barden static uint8_t CCM15_N[] = { 208*cd964fceSMatt Barden 0x00, 0x10, 0x3F, 0xE4, 0x13, 0x36, 0x71, 0x3C, 209*cd964fceSMatt Barden 0x96, 0x96, 0x76, 0x6C, 0xFA, 210*cd964fceSMatt Barden }; 211*cd964fceSMatt Barden static uint8_t CCM16_N[] = { 212*cd964fceSMatt Barden 0x00, 0x76, 0x4C, 0x63, 0xB8, 0x05, 0x8E, 0x3C, 213*cd964fceSMatt Barden 0x96, 0x96, 0x76, 0x6C, 0xFA, 214*cd964fceSMatt Barden }; 215*cd964fceSMatt Barden static uint8_t CCM17_N[] = { 216*cd964fceSMatt Barden 0x00, 0xF8, 0xB6, 0x78, 0x09, 0x4E, 0x3B, 0x3C, 217*cd964fceSMatt Barden 0x96, 0x96, 0x76, 0x6C, 0xFA, 218*cd964fceSMatt Barden }; 219*cd964fceSMatt Barden static uint8_t CCM18_N[] = { 220*cd964fceSMatt Barden 0x00, 0xD5, 0x60, 0x91, 0x2D, 0x3F, 0x70, 0x3C, 221*cd964fceSMatt Barden 0x96, 0x96, 0x76, 0x6C, 0xFA, 222*cd964fceSMatt Barden }; 223*cd964fceSMatt Barden static uint8_t CCM19_N[] = { 224*cd964fceSMatt Barden 0x00, 0x42, 0xFF, 0xF8, 0xF1, 0x95, 0x1C, 0x3C, 225*cd964fceSMatt Barden 0x96, 0x96, 0x76, 0x6C, 0xFA, 226*cd964fceSMatt Barden }; 227*cd964fceSMatt Barden static uint8_t CCM20_N[] = { 228*cd964fceSMatt Barden 0x00, 0x92, 0x0F, 0x40, 0xE5, 0x6C, 0xDC, 0x3C, 229*cd964fceSMatt Barden 0x96, 0x96, 0x76, 0x6C, 0xFA, 230*cd964fceSMatt Barden }; 231*cd964fceSMatt Barden static uint8_t CCM21_N[] = { 232*cd964fceSMatt Barden 0x00, 0x27, 0xCA, 0x0C, 0x71, 0x20, 0xBC, 0x3C, 233*cd964fceSMatt Barden 0x96, 0x96, 0x76, 0x6C, 0xFA, 234*cd964fceSMatt Barden }; 235*cd964fceSMatt Barden static uint8_t CCM22_N[] = { 236*cd964fceSMatt Barden 0x00, 0x5B, 0x8C, 0xCB, 0xCD, 0x9A, 0xF8, 0x3C, 237*cd964fceSMatt Barden 0x96, 0x96, 0x76, 0x6C, 0xFA, 238*cd964fceSMatt Barden }; 239*cd964fceSMatt Barden static uint8_t CCM23_N[] = { 240*cd964fceSMatt Barden 0x00, 0x3E, 0xBE, 0x94, 0x04, 0x4B, 0x9A, 0x3C, 241*cd964fceSMatt Barden 0x96, 0x96, 0x76, 0x6C, 0xFA, 242*cd964fceSMatt Barden }; 243*cd964fceSMatt Barden static uint8_t CCM24_N[] = { 244*cd964fceSMatt Barden 0x00, 0x8D, 0x49, 0x3B, 0x30, 0xAE, 0x8B, 0x3C, 245*cd964fceSMatt Barden 0x96, 0x96, 0x76, 0x6C, 0xFA, 246*cd964fceSMatt Barden }; 247*cd964fceSMatt Barden 248*cd964fceSMatt Barden /* data */ 249*cd964fceSMatt Barden static uint8_t CCM13_DATA[] = { 250*cd964fceSMatt Barden 0x0B, 0xE1, 0xA8, 0x8B, 0xAC, 0xE0, 0x18, 0xB1, 251*cd964fceSMatt Barden 0x08, 0xE8, 0xCF, 0x97, 0xD8, 0x20, 0xEA, 0x25, 252*cd964fceSMatt Barden 0x84, 0x60, 0xE9, 0x6A, 0xD9, 0xCF, 0x52, 0x89, 253*cd964fceSMatt Barden 0x05, 0x4D, 0x89, 0x5C, 0xEA, 0xC4, 0x7C, 254*cd964fceSMatt Barden }; 255*cd964fceSMatt Barden static uint8_t CCM14_DATA[] = { 256*cd964fceSMatt Barden 0x63, 0x01, 0x8F, 0x76, 0xDC, 0x8A, 0x1B, 0xCB, 257*cd964fceSMatt Barden 0x90, 0x20, 0xEA, 0x6F, 0x91, 0xBD, 0xD8, 0x5A, 258*cd964fceSMatt Barden 0xFA, 0x00, 0x39, 0xBA, 0x4B, 0xAF, 0xF9, 0xBF, 259*cd964fceSMatt Barden 0xB7, 0x9C, 0x70, 0x28, 0x94, 0x9C, 0xD0, 0xEC, 260*cd964fceSMatt Barden }; 261*cd964fceSMatt Barden static uint8_t CCM15_DATA[] = { 262*cd964fceSMatt Barden 0xAA, 0x6C, 0xFA, 0x36, 0xCA, 0xE8, 0x6B, 0x40, 263*cd964fceSMatt Barden 0xB9, 0x16, 0xE0, 0xEA, 0xCC, 0x1C, 0x00, 0xD7, 264*cd964fceSMatt Barden 0xDC, 0xEC, 0x68, 0xEC, 0x0B, 0x3B, 0xBB, 0x1A, 265*cd964fceSMatt Barden 0x02, 0xDE, 0x8A, 0x2D, 0x1A, 0xA3, 0x46, 0x13, 266*cd964fceSMatt Barden 0x2E, 267*cd964fceSMatt Barden }; 268*cd964fceSMatt Barden static uint8_t CCM16_DATA[] = { 269*cd964fceSMatt Barden 0xD0, 0xD0, 0x73, 0x5C, 0x53, 0x1E, 0x1B, 0xEC, 270*cd964fceSMatt Barden 0xF0, 0x49, 0xC2, 0x44, 0x12, 0xDA, 0xAC, 0x56, 271*cd964fceSMatt Barden 0x30, 0xEF, 0xA5, 0x39, 0x6F, 0x77, 0x0C, 0xE1, 272*cd964fceSMatt Barden 0xA6, 0x6B, 0x21, 0xF7, 0xB2, 0x10, 0x1C, 273*cd964fceSMatt Barden }; 274*cd964fceSMatt Barden static uint8_t CCM17_DATA[] = { 275*cd964fceSMatt Barden 0x77, 0xB6, 0x0F, 0x01, 0x1C, 0x03, 0xE1, 0x52, 276*cd964fceSMatt Barden 0x58, 0x99, 0xBC, 0xAE, 0xE8, 0x8B, 0x6A, 0x46, 277*cd964fceSMatt Barden 0xC7, 0x8D, 0x63, 0xE5, 0x2E, 0xB8, 0xC5, 0x46, 278*cd964fceSMatt Barden 0xEF, 0xB5, 0xDE, 0x6F, 0x75, 0xE9, 0xCC, 0x0D, 279*cd964fceSMatt Barden }; 280*cd964fceSMatt Barden static uint8_t CCM18_DATA[] = { 281*cd964fceSMatt Barden 0xCD, 0x90, 0x44, 0xD2, 0xB7, 0x1F, 0xDB, 0x81, 282*cd964fceSMatt Barden 0x20, 0xEA, 0x60, 0xC0, 0x64, 0x35, 0xAC, 0xBA, 283*cd964fceSMatt Barden 0xFB, 0x11, 0xA8, 0x2E, 0x2F, 0x07, 0x1D, 0x7C, 284*cd964fceSMatt Barden 0xA4, 0xA5, 0xEB, 0xD9, 0x3A, 0x80, 0x3B, 0xA8, 285*cd964fceSMatt Barden 0x7F, 286*cd964fceSMatt Barden }; 287*cd964fceSMatt Barden static uint8_t CCM19_DATA[] = { 288*cd964fceSMatt Barden 0xD8, 0x5B, 0xC7, 0xE6, 0x9F, 0x94, 0x4F, 0xB8, 289*cd964fceSMatt Barden 0x8A, 0x19, 0xB9, 0x50, 0xBC, 0xF7, 0x1A, 0x01, 290*cd964fceSMatt Barden 0x8E, 0x5E, 0x67, 0x01, 0xC9, 0x17, 0x87, 0x65, 291*cd964fceSMatt Barden 0x98, 0x09, 0xD6, 0x7D, 0xBE, 0xDD, 0x18, 292*cd964fceSMatt Barden }; 293*cd964fceSMatt Barden static uint8_t CCM20_DATA[] = { 294*cd964fceSMatt Barden 0x74, 0xA0, 0xEB, 0xC9, 0x06, 0x9F, 0x5B, 0x37, 295*cd964fceSMatt Barden 0x17, 0x61, 0x43, 0x3C, 0x37, 0xC5, 0xA3, 0x5F, 296*cd964fceSMatt Barden 0xC1, 0xF3, 0x9F, 0x40, 0x63, 0x02, 0xEB, 0x90, 297*cd964fceSMatt Barden 0x7C, 0x61, 0x63, 0xBE, 0x38, 0xC9, 0x84, 0x37, 298*cd964fceSMatt Barden }; 299*cd964fceSMatt Barden static uint8_t CCM21_DATA[] = { 300*cd964fceSMatt Barden 0x44, 0xA3, 0xAA, 0x3A, 0xAE, 0x64, 0x75, 0xCA, 301*cd964fceSMatt Barden 0xA4, 0x34, 0xA8, 0xE5, 0x85, 0x00, 0xC6, 0xE4, 302*cd964fceSMatt Barden 0x15, 0x30, 0x53, 0x88, 0x62, 0xD6, 0x86, 0xEA, 303*cd964fceSMatt Barden 0x9E, 0x81, 0x30, 0x1B, 0x5A, 0xE4, 0x22, 0x6B, 304*cd964fceSMatt Barden 0xFA, 305*cd964fceSMatt Barden }; 306*cd964fceSMatt Barden static uint8_t CCM22_DATA[] = { 307*cd964fceSMatt Barden 0xEC, 0x46, 0xBB, 0x63, 0xB0, 0x25, 0x20, 0xC3, 308*cd964fceSMatt Barden 0x3C, 0x49, 0xFD, 0x70, 0xB9, 0x6B, 0x49, 0xE2, 309*cd964fceSMatt Barden 0x1D, 0x62, 0x17, 0x41, 0x63, 0x28, 0x75, 0xDB, 310*cd964fceSMatt Barden 0x7F, 0x6C, 0x92, 0x43, 0xD2, 0xD7, 0xC2, 311*cd964fceSMatt Barden }; 312*cd964fceSMatt Barden static uint8_t CCM23_DATA[] = { 313*cd964fceSMatt Barden 0x47, 0xA6, 0x5A, 0xC7, 0x8B, 0x3D, 0x59, 0x42, 314*cd964fceSMatt Barden 0x27, 0xE8, 0x5E, 0x71, 0xE2, 0xFC, 0xFB, 0xB8, 315*cd964fceSMatt Barden 0x80, 0x44, 0x2C, 0x73, 0x1B, 0xF9, 0x51, 0x67, 316*cd964fceSMatt Barden 0xC8, 0xFF, 0xD7, 0x89, 0x5E, 0x33, 0x70, 0x76, 317*cd964fceSMatt Barden }; 318*cd964fceSMatt Barden static uint8_t CCM24_DATA[] = { 319*cd964fceSMatt Barden 0x6E, 0x37, 0xA6, 0xEF, 0x54, 0x6D, 0x95, 0x5D, 320*cd964fceSMatt Barden 0x34, 0xAB, 0x60, 0x59, 0xAB, 0xF2, 0x1C, 0x0B, 321*cd964fceSMatt Barden 0x02, 0xFE, 0xB8, 0x8F, 0x85, 0x6D, 0xF4, 0xA3, 322*cd964fceSMatt Barden 0x73, 0x81, 0xBC, 0xE3, 0xCC, 0x12, 0x85, 0x17, 323*cd964fceSMatt Barden 0xD4, 324*cd964fceSMatt Barden }; 325*cd964fceSMatt Barden 326*cd964fceSMatt Barden /* results */ 327*cd964fceSMatt Barden 328*cd964fceSMatt Barden static uint8_t CCM13_RES[] = { 329*cd964fceSMatt Barden 0x0B, 0xE1, 0xA8, 0x8B, 0xAC, 0xE0, 0x18, 0xB1, 330*cd964fceSMatt Barden 0x4C, 0xB9, 0x7F, 0x86, 0xA2, 0xA4, 0x68, 0x9A, 331*cd964fceSMatt Barden 0x87, 0x79, 0x47, 0xAB, 0x80, 0x91, 0xEF, 0x53, 332*cd964fceSMatt Barden 0x86, 0xA6, 0xFF, 0xBD, 0xD0, 0x80, 0xF8, 0xE7, 333*cd964fceSMatt Barden 0x8C, 0xF7, 0xCB, 0x0C, 0xDD, 0xD7, 0xB3, 334*cd964fceSMatt Barden }; 335*cd964fceSMatt Barden static uint8_t CCM14_RES[] = { 336*cd964fceSMatt Barden 0x63, 0x01, 0x8F, 0x76, 0xDC, 0x8A, 0x1B, 0xCB, 337*cd964fceSMatt Barden 0x4C, 0xCB, 0x1E, 0x7C, 0xA9, 0x81, 0xBE, 0xFA, 338*cd964fceSMatt Barden 0xA0, 0x72, 0x6C, 0x55, 0xD3, 0x78, 0x06, 0x12, 339*cd964fceSMatt Barden 0x98, 0xC8, 0x5C, 0x92, 0x81, 0x4A, 0xBC, 0x33, 340*cd964fceSMatt Barden 0xC5, 0x2E, 0xE8, 0x1D, 0x7D, 0x77, 0xC0, 0x8A, 341*cd964fceSMatt Barden }; 342*cd964fceSMatt Barden static uint8_t CCM15_RES[] = { 343*cd964fceSMatt Barden 0xAA, 0x6C, 0xFA, 0x36, 0xCA, 0xE8, 0x6B, 0x40, 344*cd964fceSMatt Barden 0xB1, 0xD2, 0x3A, 0x22, 0x20, 0xDD, 0xC0, 0xAC, 345*cd964fceSMatt Barden 0x90, 0x0D, 0x9A, 0xA0, 0x3C, 0x61, 0xFC, 0xF4, 346*cd964fceSMatt Barden 0xA5, 0x59, 0xA4, 0x41, 0x77, 0x67, 0x08, 0x97, 347*cd964fceSMatt Barden 0x08, 0xA7, 0x76, 0x79, 0x6E, 0xDB, 0x72, 0x35, 348*cd964fceSMatt Barden 0x06, 349*cd964fceSMatt Barden }; 350*cd964fceSMatt Barden static uint8_t CCM16_RES[] = { 351*cd964fceSMatt Barden 0xD0, 0xD0, 0x73, 0x5C, 0x53, 0x1E, 0x1B, 0xEC, 352*cd964fceSMatt Barden 0xF0, 0x49, 0xC2, 0x44, 0x14, 0xD2, 0x53, 0xC3, 353*cd964fceSMatt Barden 0x96, 0x7B, 0x70, 0x60, 0x9B, 0x7C, 0xBB, 0x7C, 354*cd964fceSMatt Barden 0x49, 0x91, 0x60, 0x28, 0x32, 0x45, 0x26, 0x9A, 355*cd964fceSMatt Barden 0x6F, 0x49, 0x97, 0x5B, 0xCA, 0xDE, 0xAF, 356*cd964fceSMatt Barden }; 357*cd964fceSMatt Barden static uint8_t CCM17_RES[] = { 358*cd964fceSMatt Barden 0x77, 0xB6, 0x0F, 0x01, 0x1C, 0x03, 0xE1, 0x52, 359*cd964fceSMatt Barden 0x58, 0x99, 0xBC, 0xAE, 0x55, 0x45, 0xFF, 0x1A, 360*cd964fceSMatt Barden 0x08, 0x5E, 0xE2, 0xEF, 0xBF, 0x52, 0xB2, 0xE0, 361*cd964fceSMatt Barden 0x4B, 0xEE, 0x1E, 0x23, 0x36, 0xC7, 0x3E, 0x3F, 362*cd964fceSMatt Barden 0x76, 0x2C, 0x0C, 0x77, 0x44, 0xFE, 0x7E, 0x3C, 363*cd964fceSMatt Barden }; 364*cd964fceSMatt Barden static uint8_t CCM18_RES[] = { 365*cd964fceSMatt Barden 0xCD, 0x90, 0x44, 0xD2, 0xB7, 0x1F, 0xDB, 0x81, 366*cd964fceSMatt Barden 0x20, 0xEA, 0x60, 0xC0, 0x00, 0x97, 0x69, 0xEC, 367*cd964fceSMatt Barden 0xAB, 0xDF, 0x48, 0x62, 0x55, 0x94, 0xC5, 0x92, 368*cd964fceSMatt Barden 0x51, 0xE6, 0x03, 0x57, 0x22, 0x67, 0x5E, 0x04, 369*cd964fceSMatt Barden 0xC8, 0x47, 0x09, 0x9E, 0x5A, 0xE0, 0x70, 0x45, 370*cd964fceSMatt Barden 0x51, 371*cd964fceSMatt Barden }; 372*cd964fceSMatt Barden static uint8_t CCM19_RES[] = { 373*cd964fceSMatt Barden 0xD8, 0x5B, 0xC7, 0xE6, 0x9F, 0x94, 0x4F, 0xB8, 374*cd964fceSMatt Barden 0xBC, 0x21, 0x8D, 0xAA, 0x94, 0x74, 0x27, 0xB6, 375*cd964fceSMatt Barden 0xDB, 0x38, 0x6A, 0x99, 0xAC, 0x1A, 0xEF, 0x23, 376*cd964fceSMatt Barden 0xAD, 0xE0, 0xB5, 0x29, 0x39, 0xCB, 0x6A, 0x63, 377*cd964fceSMatt Barden 0x7C, 0xF9, 0xBE, 0xC2, 0x40, 0x88, 0x97, 0xC6, 378*cd964fceSMatt Barden 0xBA, 379*cd964fceSMatt Barden }; 380*cd964fceSMatt Barden static uint8_t CCM20_RES[] = { 381*cd964fceSMatt Barden 0x74, 0xA0, 0xEB, 0xC9, 0x06, 0x9F, 0x5B, 0x37, 382*cd964fceSMatt Barden 0x58, 0x10, 0xE6, 0xFD, 0x25, 0x87, 0x40, 0x22, 383*cd964fceSMatt Barden 0xE8, 0x03, 0x61, 0xA4, 0x78, 0xE3, 0xE9, 0xCF, 384*cd964fceSMatt Barden 0x48, 0x4A, 0xB0, 0x4F, 0x44, 0x7E, 0xFF, 0xF6, 385*cd964fceSMatt Barden 0xF0, 0xA4, 0x77, 0xCC, 0x2F, 0xC9, 0xBF, 0x54, 386*cd964fceSMatt Barden 0x89, 0x44, 387*cd964fceSMatt Barden }; 388*cd964fceSMatt Barden static uint8_t CCM21_RES[] = { 389*cd964fceSMatt Barden 0x44, 0xA3, 0xAA, 0x3A, 0xAE, 0x64, 0x75, 0xCA, 390*cd964fceSMatt Barden 0xF2, 0xBE, 0xED, 0x7B, 0xC5, 0x09, 0x8E, 0x83, 391*cd964fceSMatt Barden 0xFE, 0xB5, 0xB3, 0x16, 0x08, 0xF8, 0xE2, 0x9C, 392*cd964fceSMatt Barden 0x38, 0x81, 0x9A, 0x89, 0xC8, 0xE7, 0x76, 0xF1, 393*cd964fceSMatt Barden 0x54, 0x4D, 0x41, 0x51, 0xA4, 0xED, 0x3A, 0x8B, 394*cd964fceSMatt Barden 0x87, 0xB9, 0xCE, 395*cd964fceSMatt Barden }; 396*cd964fceSMatt Barden static uint8_t CCM22_RES[] = { 397*cd964fceSMatt Barden 0xEC, 0x46, 0xBB, 0x63, 0xB0, 0x25, 0x20, 0xC3, 398*cd964fceSMatt Barden 0x3C, 0x49, 0xFD, 0x70, 0x31, 0xD7, 0x50, 0xA0, 399*cd964fceSMatt Barden 0x9D, 0xA3, 0xED, 0x7F, 0xDD, 0xD4, 0x9A, 0x20, 400*cd964fceSMatt Barden 0x32, 0xAA, 0xBF, 0x17, 0xEC, 0x8E, 0xBF, 0x7D, 401*cd964fceSMatt Barden 0x22, 0xC8, 0x08, 0x8C, 0x66, 0x6B, 0xE5, 0xC1, 402*cd964fceSMatt Barden 0x97, 403*cd964fceSMatt Barden }; 404*cd964fceSMatt Barden static uint8_t CCM23_RES[] = { 405*cd964fceSMatt Barden 0x47, 0xA6, 0x5A, 0xC7, 0x8B, 0x3D, 0x59, 0x42, 406*cd964fceSMatt Barden 0x27, 0xE8, 0x5E, 0x71, 0xE8, 0x82, 0xF1, 0xDB, 407*cd964fceSMatt Barden 0xD3, 0x8C, 0xE3, 0xED, 0xA7, 0xC2, 0x3F, 0x04, 408*cd964fceSMatt Barden 0xDD, 0x65, 0x07, 0x1E, 0xB4, 0x13, 0x42, 0xAC, 409*cd964fceSMatt Barden 0xDF, 0x7E, 0x00, 0xDC, 0xCE, 0xC7, 0xAE, 0x52, 410*cd964fceSMatt Barden 0x98, 0x7D, 411*cd964fceSMatt Barden }; 412*cd964fceSMatt Barden static uint8_t CCM24_RES[] = { 413*cd964fceSMatt Barden 0x6E, 0x37, 0xA6, 0xEF, 0x54, 0x6D, 0x95, 0x5D, 414*cd964fceSMatt Barden 0x34, 0xAB, 0x60, 0x59, 0xF3, 0x29, 0x05, 0xB8, 415*cd964fceSMatt Barden 0x8A, 0x64, 0x1B, 0x04, 0xB9, 0xC9, 0xFF, 0xB5, 416*cd964fceSMatt Barden 0x8C, 0xC3, 0x90, 0x90, 0x0F, 0x3D, 0xA1, 0x2A, 417*cd964fceSMatt Barden 0xB1, 0x6D, 0xCE, 0x9E, 0x82, 0xEF, 0xA1, 0x6D, 418*cd964fceSMatt Barden 0xA6, 0x20, 0x59, 419*cd964fceSMatt Barden }; 420*cd964fceSMatt Barden 421*cd964fceSMatt Barden uint8_t *DATA_2[] = { 422*cd964fceSMatt Barden CCM13_DATA, CCM14_DATA, CCM15_DATA, CCM16_DATA, CCM17_DATA, CCM18_DATA, 423*cd964fceSMatt Barden CCM19_DATA, CCM20_DATA, CCM21_DATA, CCM22_DATA, CCM23_DATA, CCM24_DATA, 424*cd964fceSMatt Barden }; 425*cd964fceSMatt Barden 426*cd964fceSMatt Barden size_t DATALEN[] = { 427*cd964fceSMatt Barden 31, 32, 33, 31, 32, 33, 31, 32, 33, 31, 32, 33, 428*cd964fceSMatt Barden sizeof (CCM13_DATA), sizeof (CCM14_DATA), sizeof (CCM15_DATA), 429*cd964fceSMatt Barden sizeof (CCM16_DATA), sizeof (CCM17_DATA), sizeof (CCM18_DATA), 430*cd964fceSMatt Barden sizeof (CCM19_DATA), sizeof (CCM20_DATA), sizeof (CCM21_DATA), 431*cd964fceSMatt Barden sizeof (CCM22_DATA), sizeof (CCM23_DATA), sizeof (CCM24_DATA), 432*cd964fceSMatt Barden }; 433*cd964fceSMatt Barden 434*cd964fceSMatt Barden uint8_t *RES[] = { 435*cd964fceSMatt Barden CCM1_RES, CCM2_RES, CCM3_RES, CCM4_RES, CCM5_RES, CCM6_RES, 436*cd964fceSMatt Barden CCM7_RES, CCM8_RES, CCM9_RES, CCM10_RES, CCM11_RES, CCM12_RES, 437*cd964fceSMatt Barden CCM13_RES, CCM14_RES, CCM15_RES, CCM16_RES, CCM17_RES, CCM18_RES, 438*cd964fceSMatt Barden CCM19_RES, CCM20_RES, CCM21_RES, CCM22_RES, CCM23_RES, CCM24_RES, 439*cd964fceSMatt Barden }; 440*cd964fceSMatt Barden 441*cd964fceSMatt Barden size_t RESLEN[] = { 442*cd964fceSMatt Barden sizeof (CCM1_RES), sizeof (CCM2_RES), sizeof (CCM3_RES), 443*cd964fceSMatt Barden sizeof (CCM4_RES), sizeof (CCM5_RES), sizeof (CCM6_RES), 444*cd964fceSMatt Barden sizeof (CCM7_RES), sizeof (CCM8_RES), sizeof (CCM9_RES), 445*cd964fceSMatt Barden sizeof (CCM10_RES), sizeof (CCM11_RES), sizeof (CCM12_RES), 446*cd964fceSMatt Barden sizeof (CCM13_RES), sizeof (CCM14_RES), sizeof (CCM15_RES), 447*cd964fceSMatt Barden sizeof (CCM16_RES), sizeof (CCM17_RES), sizeof (CCM18_RES), 448*cd964fceSMatt Barden sizeof (CCM19_RES), sizeof (CCM20_RES), sizeof (CCM21_RES), 449*cd964fceSMatt Barden sizeof (CCM22_RES), sizeof (CCM23_RES), sizeof (CCM24_RES), 450*cd964fceSMatt Barden }; 451*cd964fceSMatt Barden 452*cd964fceSMatt Barden uint8_t *NONCE[] = { 453*cd964fceSMatt Barden CCM1_N, CCM2_N, CCM3_N, CCM4_N, CCM5_N, CCM6_N, CCM7_N, CCM8_N, 454*cd964fceSMatt Barden CCM9_N, CCM10_N, CCM11_N, CCM12_N, CCM13_N, CCM14_N, CCM15_N, CCM16_N, 455*cd964fceSMatt Barden CCM17_N, CCM18_N, CCM19_N, CCM20_N, CCM21_N, CCM22_N, CCM23_N, CCM24_N, 456*cd964fceSMatt Barden }; 457*cd964fceSMatt Barden 458*cd964fceSMatt Barden size_t NONCELEN[] = { 459*cd964fceSMatt Barden sizeof (CCM1_N), sizeof (CCM2_N), sizeof (CCM3_N), sizeof (CCM4_N), 460*cd964fceSMatt Barden sizeof (CCM5_N), sizeof (CCM6_N), sizeof (CCM7_N), sizeof (CCM8_N), 461*cd964fceSMatt Barden sizeof (CCM9_N), sizeof (CCM10_N), sizeof (CCM11_N), sizeof (CCM12_N), 462*cd964fceSMatt Barden sizeof (CCM13_N), sizeof (CCM14_N), sizeof (CCM15_N), sizeof (CCM16_N), 463*cd964fceSMatt Barden sizeof (CCM17_N), sizeof (CCM18_N), sizeof (CCM19_N), sizeof (CCM20_N), 464*cd964fceSMatt Barden sizeof (CCM21_N), sizeof (CCM22_N), sizeof (CCM23_N), sizeof (CCM24_N), 465*cd964fceSMatt Barden }; 466*cd964fceSMatt Barden 467*cd964fceSMatt Barden size_t AUTHLEN[] = { 468*cd964fceSMatt Barden 8, 8, 8, 12, 12, 12, 8, 8, 8, 12, 12, 12, 469*cd964fceSMatt Barden 8, 8, 8, 12, 12, 12, 8, 8, 8, 12, 12, 12, 470*cd964fceSMatt Barden }; 471*cd964fceSMatt Barden 472*cd964fceSMatt Barden size_t MACLEN[] = { 473*cd964fceSMatt Barden 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 474*cd964fceSMatt Barden 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 475*cd964fceSMatt Barden }; 476*cd964fceSMatt Barden 477*cd964fceSMatt Barden #ifdef __cplusplus 478*cd964fceSMatt Barden } 479*cd964fceSMatt Barden #endif 480*cd964fceSMatt Barden 481*cd964fceSMatt Barden #endif /* _AES_CCM_H */ 482