1 /* 2 * This file and its contents are supplied under the terms of the 3 * Common Development and Distribution License (), version 1.0. 4 * You may only use this file in accordance with the terms of version 5 * 1.0 of the CDDL. 6 * 7 * A full copy of the text of the CDDL should have accompanied this 8 * source. A copy of the CDDL is also available via the Internet at 9 * http://www.illumos.org/license/CDDL. 10 */ 11 12 /* 13 * Copyright 2019 Joyent, Inc. 14 */ 15 16 #include <sys/types.h> 17 18 /* 19 * Test data from RFC2202 20 */ 21 22 static uint8_t KEY0[] = { 23 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 24 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 25 0x0b, 0x0b, 0x0b, 0x0b 26 }; 27 28 /* "Hi There" */ 29 static uint8_t DATA0[] = { 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65 }; 30 31 static uint8_t HMAC0[] = { 32 0xb6, 0x17, 0x31, 0x86, 0x55, 0x05, 0x72, 0x64, 33 0xe2, 0x8b, 0xc0, 0xb6, 0xfb, 0x37, 0x8c, 0x8e, 34 0xf1, 0x46, 0xbe, 0x00 35 }; 36 37 38 /* "Jefe" */ 39 static uint8_t KEY1[] = { 0x4a, 0x65, 0x66, 0x65 }; 40 41 /* "what do ya want for nothing?" */ 42 static uint8_t DATA1[] = { 43 0x77, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6f, 0x20, 44 0x79, 0x61, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20, 45 0x66, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x68, 46 0x69, 0x6e, 0x67, 0x3f 47 }; 48 49 static uint8_t HMAC1[] = { 50 0xef, 0xfc, 0xdf, 0x6a, 0xe5, 0xeb, 0x2f, 0xa2, 51 0xd2, 0x74, 0x16, 0xd5, 0xf1, 0x84, 0xdf, 0x9c, 52 0x25, 0x9a, 0x7c, 0x79 53 }; 54 55 56 static uint8_t KEY2[] = { 57 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 58 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 59 0xaa, 0xaa, 0xaa, 0xaa 60 }; 61 62 static uint8_t DATA2[] = { 63 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 64 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 65 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 66 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 67 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 68 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 69 0xdd, 0xdd 70 }; 71 72 static uint8_t HMAC2[] = { 73 0x12, 0x5d, 0x73, 0x42, 0xb9, 0xac, 0x11, 0xcd, 74 0x91, 0xa3, 0x9a, 0xf4, 0x8a, 0xa1, 0x7b, 0x4f, 75 0x63, 0xf1, 0x75, 0xd3 76 }; 77 78 79 static uint8_t KEY3[] = { 80 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 81 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 82 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 83 0x19 84 }; 85 86 static uint8_t DATA3[] = { 87 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 88 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 89 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 90 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 91 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 92 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 93 0xcd, 0xcd 94 }; 95 96 static uint8_t HMAC3[] = { 97 0x4c, 0x90, 0x07, 0xf4, 0x02, 0x62, 0x50, 0xc6, 98 0xbc, 0x84, 0x14, 0xf9, 0xbf, 0x50, 0xc8, 0x6c, 99 0x2d, 0x72, 0x35, 0xda 100 }; 101 102 103 static uint8_t KEY4[] = { 104 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 105 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 106 0x0c, 0x0c, 0x0c, 0x0c 107 }; 108 109 /* "Test With Truncation" */ 110 static uint8_t DATA4[] = { 111 0x54, 0x65, 0x73, 0x74, 0x20, 0x57, 0x69, 0x74, 112 0x68, 0x20, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 113 0x74, 0x69, 0x6f, 0x6e 114 }; 115 116 static uint8_t HMAC4[] = { 117 0x4c, 0x1a, 0x03, 0x42, 0x4b, 0x55, 0xe0, 0x7f, 118 0xe7, 0xf2, 0x7b, 0xe1, 0xd5, 0x8b, 0xb9, 0x32, 119 0x4a, 0x9a, 0x5a, 0x04 120 }; 121 122 123 static uint8_t KEY5[] = { 124 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 125 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 126 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 127 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 128 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 129 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 130 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 131 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 132 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 133 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa 134 }; 135 136 /* "Test Using Larger Than Block-Size Key - Hash Key First" */ 137 static uint8_t DATA5[] = { 138 0x54, 0x65, 0x73, 0x74, 0x20, 0x55, 0x73, 0x69, 139 0x6e, 0x67, 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65, 140 0x72, 0x20, 0x54, 0x68, 0x61, 0x6e, 0x20, 0x42, 141 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x53, 0x69, 0x7a, 142 0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x2d, 0x20, 143 0x48, 0x61, 0x73, 0x68, 0x20, 0x4b, 0x65, 0x79, 144 0x20, 0x46, 0x69, 0x72, 0x73, 0x74 145 }; 146 147 static uint8_t HMAC5[] = { 148 0xaa, 0x4a, 0xe5, 0xe1, 0x52, 0x72, 0xd0, 0x0e, 149 0x95, 0x70, 0x56, 0x37, 0xce, 0x8a, 0x3b, 0x55, 150 0xed, 0x40, 0x21, 0x12 151 }; 152 153 154 static uint8_t KEY6[] = { 155 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 156 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 157 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 158 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 159 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 160 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 161 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 162 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 163 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 164 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa 165 }; 166 167 /* 168 * "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data" 169 */ 170 static uint8_t DATA6[] = { 171 0x54, 0x65, 0x73, 0x74, 0x20, 0x55, 0x73, 0x69, 172 0x6e, 0x67, 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65, 173 0x72, 0x20, 0x54, 0x68, 0x61, 0x6e, 0x20, 0x42, 174 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x53, 0x69, 0x7a, 175 0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x61, 0x6e, 176 0x64, 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x72, 177 0x20, 0x54, 0x68, 0x61, 0x6e, 0x20, 0x4f, 0x6e, 178 0x65, 0x20, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 179 0x53, 0x69, 0x7a, 0x65, 0x20, 0x44, 0x61, 0x74, 180 0x61 181 }; 182 static uint8_t HMAC6[] = { 183 0xe8, 0xe9, 0x9d, 0x0f, 0x45, 0x23, 0x7d, 0x78, 184 0x6d, 0x6b, 0xba, 0xa7, 0x96, 0x5c, 0x78, 0x08, 185 0xbb, 0xff, 0x1a, 0x91 186 }; 187