xref: /illumos-gate/usr/src/test/crypto-tests/tests/modes/aes/cbc_pad/aes_cbc_pad.h (revision 0d1087e85d1cd423a6cbe5358a51a160350e956e)
1 /*
2  * This file and its contents are supplied under the terms of the
3  * Common Development and Distribution License ("CDDL"), 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 2015 Nexenta Systems, Inc.  All rights reserved.
14  * Copyright 2019 Joyent, Inc.
15  */
16 
17 #ifndef _AES_CBC_PAD_H
18 #define	_AES_CBC_PAD_H
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 /*
25  * A search for test vectors that included PKCS7 padding has proven
26  * unsuccessful.  Instead, a few of the test aes_cbc test vectors
27  * were used as a starting point, adding extra data to the xx_DATA[]
28  * arrays to test padding.
29  *
30  * To compute the xx_RES[] (encrypted) values, openssl on an machine
31  * running macOS Mojave was used.
32  */
33 
34 static uint8_t CBC_PAD1_KEY[16] = {
35 	0x06, 0xa9, 0x21, 0x40, 0x36, 0xb8, 0xa1, 0x5b,
36 	0x51, 0x2e, 0x03, 0xd5, 0x34, 0x12, 0x00, 0x06,
37 };
38 static uint8_t CBC_PAD1_IV[16] = {
39 	0x3d, 0xaf, 0xba, 0x42, 0x9d, 0x9e, 0xb4, 0x30,
40 	0xb4, 0x22, 0xda, 0x80, 0x2c, 0x9f, 0xac, 0x41,
41 };
42 static uint8_t CBC_PAD1_DATA[] = {
43 	'S', 'i', 'n', 'g', 'l', 'e', ' ', 'b',
44 	'l', 'o', 'c', 'k', ' ', 'm', 's', 'g',
45 };
46 
47 static uint8_t CBC_PAD1_RES[] = {
48 	0xe3, 0x53, 0x77, 0x9c, 0x10, 0x79, 0xae, 0xb8,
49 	0x27, 0x08, 0x94, 0x2d, 0xbe, 0x77, 0x18, 0x1a,
50 
51 	0xb9, 0x7c, 0x82, 0x5e, 0x1c, 0x78, 0x51, 0x46,
52 	0x54, 0x2d, 0x39, 0x69, 0x41, 0xbc, 0xe5, 0x5d
53 };
54 
55 
56 static uint8_t CBC_PAD2_KEY[] = {
57 	0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0,
58 	0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a,
59 };
60 static uint8_t CBC_PAD2_IV[] = {
61 	0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28,
62 	0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58,
63 };
64 static uint8_t CBC_PAD2_DATA[] = {
65 	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
66 	0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
67 
68 	0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
69 	0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
70 };
71 
72 static uint8_t CBC_PAD2_RES[] = {
73 	0xd2, 0x96, 0xcd, 0x94, 0xc2, 0xcc, 0xcf, 0x8a,
74 	0x3a, 0x86, 0x30, 0x28, 0xb5, 0xe1, 0xdc, 0x0a,
75 
76 	0x75, 0x86, 0x60, 0x2d, 0x25, 0x3c, 0xff, 0xf9,
77 	0x1b, 0x82, 0x66, 0xbe, 0xa6, 0xd6, 0x1a, 0xb1,
78 
79 	0xbc, 0xfd, 0x81, 0x02, 0x22, 0x02, 0x36, 0x6b,
80 	0xde, 0x6d, 0xd2, 0x60, 0xa1, 0x58, 0x41, 0xa1
81 };
82 
83 
84 static uint8_t CBC_PAD3_KEY[] = {
85 	0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0,
86 	0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a,
87 };
88 static uint8_t CBC_PAD3_IV[] = {
89 	0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28,
90 	0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58,
91 };
92 
93 static uint8_t CBC_PAD3_DATA[] = {
94 	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
95 	0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
96 
97 	0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
98 	0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
99 
100 	0x00,
101 };
102 
103 static uint8_t CBC_PAD3_RES[] = {
104 	0xd2, 0x96, 0xcd, 0x94, 0xc2, 0xcc, 0xcf, 0x8a,
105 	0x3a, 0x86, 0x30, 0x28, 0xb5, 0xe1, 0xdc, 0x0a,
106 
107 	0x75, 0x86, 0x60, 0x2d, 0x25, 0x3c, 0xff, 0xf9,
108 	0x1b, 0x82, 0x66, 0xbe, 0xa6, 0xd6, 0x1a, 0xb1,
109 
110 	0xde, 0xf6, 0x23, 0xa9, 0xc6, 0xf5, 0xc6, 0xb9,
111 	0x56, 0x14, 0x49, 0x60, 0xb2, 0x3d, 0x2f, 0x7f
112 };
113 
114 
115 static uint8_t CBC_PAD4_KEY[] = {
116 	0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0,
117 	0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a,
118 };
119 
120 static uint8_t CBC_PAD4_IV[] = {
121 	0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28,
122 	0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58,
123 };
124 
125 static uint8_t CBC_PAD4_DATA[] = {
126 	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
127 	0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
128 
129 	0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
130 	0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
131 
132 	0x00, 0x01,
133 };
134 
135 static uint8_t CBC_PAD4_RES[] = {
136 	0xd2, 0x96, 0xcd, 0x94, 0xc2, 0xcc, 0xcf, 0x8a,
137 	0x3a, 0x86, 0x30, 0x28, 0xb5, 0xe1, 0xdc, 0x0a,
138 
139 	0x75, 0x86, 0x60, 0x2d, 0x25, 0x3c, 0xff, 0xf9,
140 	0x1b, 0x82, 0x66, 0xbe, 0xa6, 0xd6, 0x1a, 0xb1,
141 
142 	0x30, 0xce, 0x1d, 0xd5, 0xd1, 0xb3, 0x0e, 0xde,
143 	0x59, 0x9c, 0x3b, 0x31, 0x1b, 0x62, 0xf0, 0x23
144 };
145 
146 
147 static uint8_t CBC_PAD5_KEY[] = {
148 	0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0,
149 	0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a,
150 };
151 
152 static uint8_t CBC_PAD5_IV[] = {
153 	0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28,
154 	0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58,
155 };
156 
157 static uint8_t CBC_PAD5_DATA[] = {
158 	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
159 	0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
160 
161 	0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
162 	0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
163 
164 	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
165 	0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
166 };
167 
168 static uint8_t CBC_PAD5_RES[] = {
169 	0xd2, 0x96, 0xcd, 0x94, 0xc2, 0xcc, 0xcf, 0x8a,
170 	0x3a, 0x86, 0x30, 0x28, 0xb5, 0xe1, 0xdc, 0x0a,
171 
172 	0x75, 0x86, 0x60, 0x2d, 0x25, 0x3c, 0xff, 0xf9,
173 	0x1b, 0x82, 0x66, 0xbe, 0xa6, 0xd6, 0x1a, 0xb1,
174 
175 	0xd3, 0x1c, 0x5a, 0x9d, 0xc4, 0x37, 0xa7, 0x7a,
176 	0x74, 0xca, 0xb3, 0x69, 0x2b, 0x7b, 0x1f, 0xad
177 };
178 
179 
180 static uint8_t CBC_PAD6_KEY[] = {
181 	0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0,
182 	0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a,
183 };
184 
185 static uint8_t CBC_PAD6_IV[] = {
186 	0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28,
187 	0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58,
188 };
189 
190 static uint8_t CBC_PAD6_DATA[] = {
191 	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
192 	0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
193 
194 	0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
195 	0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
196 
197 	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
198 	0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
199 };
200 
201 static uint8_t CBC_PAD6_RES[] = {
202 	0xd2, 0x96, 0xcd, 0x94, 0xc2, 0xcc, 0xcf, 0x8a,
203 	0x3a, 0x86, 0x30, 0x28, 0xb5, 0xe1, 0xdc, 0x0a,
204 
205 	0x75, 0x86, 0x60, 0x2d, 0x25, 0x3c, 0xff, 0xf9,
206 	0x1b, 0x82, 0x66, 0xbe, 0xa6, 0xd6, 0x1a, 0xb1,
207 
208 	0x79, 0x33, 0x83, 0xff, 0x4a, 0x64, 0x9d, 0xe3,
209 	0x4d, 0x6f, 0x19, 0x94, 0x28, 0x7d, 0x65, 0x67
210 };
211 
212 uint8_t *DATA[] = {
213 	CBC_PAD1_DATA, CBC_PAD2_DATA, CBC_PAD3_DATA,
214 	CBC_PAD4_DATA, CBC_PAD5_DATA, CBC_PAD6_DATA,
215 };
216 
217 size_t DATALEN[] = {
218 	sizeof (CBC_PAD1_DATA), sizeof (CBC_PAD2_DATA),
219 	sizeof (CBC_PAD3_DATA), sizeof (CBC_PAD4_DATA),
220 	sizeof (CBC_PAD5_DATA), sizeof (CBC_PAD6_DATA),
221 };
222 
223 uint8_t *KEY[] = {
224 	CBC_PAD1_KEY, CBC_PAD2_KEY, CBC_PAD3_KEY,
225 	CBC_PAD4_KEY, CBC_PAD5_KEY, CBC_PAD6_KEY,
226 };
227 
228 size_t KEYLEN[] = {
229 	sizeof (CBC_PAD1_KEY), sizeof (CBC_PAD2_KEY),
230 	sizeof (CBC_PAD3_KEY), sizeof (CBC_PAD4_KEY),
231 	sizeof (CBC_PAD5_KEY), sizeof (CBC_PAD6_KEY),
232 };
233 
234 uint8_t *IV[] = {
235 	CBC_PAD1_IV, CBC_PAD2_IV, CBC_PAD3_IV,
236 	CBC_PAD4_IV, CBC_PAD5_IV, CBC_PAD6_IV,
237 };
238 
239 size_t IVLEN[] = {
240 	sizeof (CBC_PAD1_IV), sizeof (CBC_PAD2_IV),
241 	sizeof (CBC_PAD3_IV), sizeof (CBC_PAD4_IV),
242 	sizeof (CBC_PAD5_IV), sizeof (CBC_PAD6_IV),
243 };
244 
245 uint8_t *RES[] = {
246 	CBC_PAD1_RES, CBC_PAD2_RES, CBC_PAD3_RES,
247 	CBC_PAD4_RES, CBC_PAD5_RES, CBC_PAD6_RES,
248 };
249 
250 size_t RESLEN[] = {
251 	sizeof (CBC_PAD1_RES), sizeof (CBC_PAD2_RES),
252 	sizeof (CBC_PAD3_RES), sizeof (CBC_PAD4_RES),
253 	sizeof (CBC_PAD5_RES), sizeof (CBC_PAD6_RES),
254 };
255 
256 #ifdef __cplusplus
257 }
258 #endif
259 
260 #endif /* _AES_CBC_PAD_H */
261