summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2014-07-09 11:43:01 +0000
committerjsing <>2014-07-09 11:43:01 +0000
commitd6369b5ff3bc2592bde32a5758bd2c65f2d185cb (patch)
tree2a85fa1c3f2f5d46506a3cefd46a987fe7e6020c
parentc90a1a4bb021e5a2622323df8464bf574d0c4364 (diff)
downloadopenbsd-d6369b5ff3bc2592bde32a5758bd2c65f2d185cb.tar.gz
openbsd-d6369b5ff3bc2592bde32a5758bd2c65f2d185cb.tar.bz2
openbsd-d6369b5ff3bc2592bde32a5758bd2c65f2d185cb.zip
Rewrite gcm128test as a table-driven regress instead of using defines.
This avoids compiler warnings for always true/false conditionals and makes the code readable. Also avoid pulling in modes_lcl.h, which should not be used outside the library.
-rw-r--r--src/regress/lib/libcrypto/gcm128/Makefile9
-rw-r--r--src/regress/lib/libcrypto/gcm128/gcm128test.c1136
2 files changed, 852 insertions, 293 deletions
diff --git a/src/regress/lib/libcrypto/gcm128/Makefile b/src/regress/lib/libcrypto/gcm128/Makefile
index 4069d1db31..c981203e3e 100644
--- a/src/regress/lib/libcrypto/gcm128/Makefile
+++ b/src/regress/lib/libcrypto/gcm128/Makefile
@@ -1,12 +1,9 @@
1# $OpenBSD: Makefile,v 1.4 2014/07/08 15:53:52 jsing Exp $ 1# $OpenBSD: Makefile,v 1.5 2014/07/09 11:43:01 jsing Exp $
2 2
3PROG= gcm128test 3PROG= gcm128test
4SRC= ${.CURDIR}/../../../../lib/libssl/src/crypto/modes
5CFLAGS+=-I${SRC}
6
7LDADD= -lcrypto 4LDADD= -lcrypto
8DPADD= ${LIBCRYPTO} 5DPADD= ${LIBCRYPTO}
9#WARNINGS= Yes 6WARNINGS= Yes
10#CFLAGS+= -DLIBRESSL_INTERNAL -Werror 7CFLAGS+= -DLIBRESSL_INTERNAL -Werror
11 8
12.include <bsd.regress.mk> 9.include <bsd.regress.mk>
diff --git a/src/regress/lib/libcrypto/gcm128/gcm128test.c b/src/regress/lib/libcrypto/gcm128/gcm128test.c
index 57267b8dbf..85d81f91b5 100644
--- a/src/regress/lib/libcrypto/gcm128/gcm128test.c
+++ b/src/regress/lib/libcrypto/gcm128/gcm128test.c
@@ -6,7 +6,7 @@
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 10 *
11 * 2. Redistributions in binary form must reproduce the above copyright 11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in 12 * notice, this list of conditions and the following disclaimer in
@@ -47,313 +47,875 @@
47 * ==================================================================== 47 * ====================================================================
48 */ 48 */
49 49
50#include <err.h>
50#include <stdio.h> 51#include <stdio.h>
52#include <stdint.h>
53#include <stdlib.h>
51#include <string.h> 54#include <string.h>
52 55
53#include <openssl/aes.h> 56#include <openssl/aes.h>
54#include <openssl/modes.h> 57#include <openssl/modes.h>
55 58
56#include "modes_lcl.h" 59/* XXX - something like this should be in the public headers. */
60struct gcm128_context {
61 uint64_t opaque[64];
62};
57 63
58/* Test Case 1 */ 64struct gcm128_test {
59static const u8 K1[16], 65 const uint8_t K[128];
60 *P1=NULL, 66 size_t K_len;
61 *A1=NULL, 67 const uint8_t IV[128];
62 IV1[12], 68 size_t IV_len;
63 *C1=NULL, 69 const uint8_t P[512];
64 T1[]= {0x58,0xe2,0xfc,0xce,0xfa,0x7e,0x30,0x61,0x36,0x7f,0x1d,0x57,0xa4,0xe7,0x45,0x5a}; 70 size_t P_len;
71 const uint8_t A[128];
72 size_t A_len;
73 const uint8_t C[512];
74 size_t C_len;
75 const uint8_t T[16];
76};
65 77
66/* Test Case 2 */ 78struct gcm128_test gcm128_tests[] = {
67#define K2 K1 79 {
68#define A2 A1 80 /* Test Case 1. */
69#define IV2 IV1 81 .K = {},
70static const u8 P2[16], 82 .K_len = 16,
71 C2[]= {0x03,0x88,0xda,0xce,0x60,0xb6,0xa3,0x92,0xf3,0x28,0xc2,0xb9,0x71,0xb2,0xfe,0x78}, 83 .IV = {},
72 T2[]= {0xab,0x6e,0x47,0xd4,0x2c,0xec,0x13,0xbd,0xf5,0x3a,0x67,0xb2,0x12,0x57,0xbd,0xdf}; 84 .IV_len = 12,
85 .P = {},
86 .P_len = 0,
87 .A = {},
88 .A_len = 0,
89 .C = {},
90 .C_len = 0,
91 .T = {
92 0x58, 0xe2, 0xfc, 0xce, 0xfa, 0x7e, 0x30, 0x61,
93 0x36, 0x7f, 0x1d, 0x57, 0xa4, 0xe7, 0x45, 0x5a,
94 },
95 },
96 {
97 /* Test Case 2. */
98 .K = {},
99 .K_len = 16,
100 .IV = {},
101 .IV_len = 12,
102 .P = {},
103 .P_len = 16,
104 .A = {},
105 .A_len = 0,
106 .C = {
107 0x03, 0x88, 0xda, 0xce, 0x60, 0xb6, 0xa3, 0x92,
108 0xf3, 0x28, 0xc2, 0xb9, 0x71, 0xb2, 0xfe, 0x78,
109 },
110 .C_len = 16,
111 .T = {
112 0xab, 0x6e, 0x47, 0xd4, 0x2c, 0xec, 0x13, 0xbd,
113 0xf5, 0x3a, 0x67, 0xb2, 0x12, 0x57, 0xbd, 0xdf,
114 },
115 },
116 {
117 /* Test Case 3. */
118 .K = {
119 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
120 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
121 },
122 .K_len = 16,
123 .IV = {
124 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
125 0xde, 0xca, 0xf8, 0x88,
126 },
127 .IV_len = 12,
128 .P = {
129 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
130 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
131 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
132 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
133 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
134 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
135 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
136 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55,
137 },
138 .P_len = 64,
139 .A = {},
140 .A_len = 0,
141 .C = {
142 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24,
143 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c,
144 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0,
145 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e,
146 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c,
147 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05,
148 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97,
149 0x3d, 0x58, 0xe0, 0x91, 0x47, 0x3f, 0x59, 0x85,
150 },
151 .C_len = 64,
152 .T = {
153 0x4d, 0x5c, 0x2a, 0xf3, 0x27, 0xcd, 0x64, 0xa6,
154 0x2c, 0xf3, 0x5a, 0xbd, 0x2b, 0xa6, 0xfa, 0xb4,
155 }
156 },
157 {
158 /* Test Case 4. */
159 .K = {
160 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
161 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
162 },
163 .K_len = 16,
164 .IV = {
165 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
166 0xde, 0xca, 0xf8, 0x88,
167 },
168 .IV_len = 12,
169 .P = {
170 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
171 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
172 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
173 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
174 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
175 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
176 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
177 0xba, 0x63, 0x7b, 0x39,
178 },
179 .P_len = 60,
180 .A = {
181 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
182 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
183 0xab, 0xad, 0xda, 0xd2,
184 },
185 .A_len = 20,
186 .C = {
187 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24,
188 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c,
189 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0,
190 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e,
191 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c,
192 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05,
193 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97,
194 0x3d, 0x58, 0xe0, 0x91,
195 },
196 .C_len = 60,
197 .T = {
198 0x5b, 0xc9, 0x4f, 0xbc, 0x32, 0x21, 0xa5, 0xdb,
199 0x94, 0xfa, 0xe9, 0x5a, 0xe7, 0x12, 0x1a, 0x47,
200 },
201 },
202 {
203 /* Test Case 5. */
204 /* K, P, A are the same as TC4. */
205 .K = {
206 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
207 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
208 },
209 .K_len = 16,
210 .IV = {
211 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
212 },
213 .IV_len = 8,
214 .P = {
215 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
216 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
217 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
218 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
219 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
220 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
221 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
222 0xba, 0x63, 0x7b, 0x39,
223 },
224 .P_len = 60,
225 .A = {
226 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
227 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
228 0xab, 0xad, 0xda, 0xd2,
229 },
230 .A_len = 20,
231 .C = {
232 0x61, 0x35, 0x3b, 0x4c, 0x28, 0x06, 0x93, 0x4a,
233 0x77, 0x7f, 0xf5, 0x1f, 0xa2, 0x2a, 0x47, 0x55,
234 0x69, 0x9b, 0x2a, 0x71, 0x4f, 0xcd, 0xc6, 0xf8,
235 0x37, 0x66, 0xe5, 0xf9, 0x7b, 0x6c, 0x74, 0x23,
236 0x73, 0x80, 0x69, 0x00, 0xe4, 0x9f, 0x24, 0xb2,
237 0x2b, 0x09, 0x75, 0x44, 0xd4, 0x89, 0x6b, 0x42,
238 0x49, 0x89, 0xb5, 0xe1, 0xeb, 0xac, 0x0f, 0x07,
239 0xc2, 0x3f, 0x45, 0x98,
240 },
241 .C_len = 60,
242 .T = {
243 0x36, 0x12, 0xd2, 0xe7, 0x9e, 0x3b, 0x07, 0x85,
244 0x56, 0x1b, 0xe1, 0x4a, 0xac, 0xa2, 0xfc, 0xcb,
245 },
246 },
247 {
248 /* Test Case 6. */
249 /* K, P, A are the same as TC4. */
250 .K = {
251 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
252 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
253 },
254 .K_len = 16,
255 .IV = {
256 0x93, 0x13, 0x22, 0x5d, 0xf8, 0x84, 0x06, 0xe5,
257 0x55, 0x90, 0x9c, 0x5a, 0xff, 0x52, 0x69, 0xaa,
258 0x6a, 0x7a, 0x95, 0x38, 0x53, 0x4f, 0x7d, 0xa1,
259 0xe4, 0xc3, 0x03, 0xd2, 0xa3, 0x18, 0xa7, 0x28,
260 0xc3, 0xc0, 0xc9, 0x51, 0x56, 0x80, 0x95, 0x39,
261 0xfc, 0xf0, 0xe2, 0x42, 0x9a, 0x6b, 0x52, 0x54,
262 0x16, 0xae, 0xdb, 0xf5, 0xa0, 0xde, 0x6a, 0x57,
263 0xa6, 0x37, 0xb3, 0x9b,
264 },
265 .IV_len = 60,
266 .P = {
267 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
268 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
269 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
270 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
271 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
272 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
273 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
274 0xba, 0x63, 0x7b, 0x39,
275 },
276 .P_len = 60,
277 .A = {
278 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
279 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
280 0xab, 0xad, 0xda, 0xd2,
281 },
282 .A_len = 20,
283 .C = {
284 0x8c, 0xe2, 0x49, 0x98, 0x62, 0x56, 0x15, 0xb6,
285 0x03, 0xa0, 0x33, 0xac, 0xa1, 0x3f, 0xb8, 0x94,
286 0xbe, 0x91, 0x12, 0xa5, 0xc3, 0xa2, 0x11, 0xa8,
287 0xba, 0x26, 0x2a, 0x3c, 0xca, 0x7e, 0x2c, 0xa7,
288 0x01, 0xe4, 0xa9, 0xa4, 0xfb, 0xa4, 0x3c, 0x90,
289 0xcc, 0xdc, 0xb2, 0x81, 0xd4, 0x8c, 0x7c, 0x6f,
290 0xd6, 0x28, 0x75, 0xd2, 0xac, 0xa4, 0x17, 0x03,
291 0x4c, 0x34, 0xae, 0xe5,
292 },
293 .C_len = 60,
294 .T = {
295 0x61, 0x9c, 0xc5, 0xae, 0xff, 0xfe, 0x0b, 0xfa,
296 0x46, 0x2a, 0xf4, 0x3c, 0x16, 0x99, 0xd0, 0x50,
297 },
298 },
299 {
300 /* Test Case 7. */
301 .K = {},
302 .K_len = 24,
303 .IV = {},
304 .IV_len = 12,
305 .P = {},
306 .P_len = 0,
307 .A = {},
308 .A_len = 0,
309 .C = {},
310 .C_len = 0,
311 .T = {
312 0xcd, 0x33, 0xb2, 0x8a, 0xc7, 0x73, 0xf7, 0x4b,
313 0xa0, 0x0e, 0xd1, 0xf3, 0x12, 0x57, 0x24, 0x35,
314 },
315 },
316 {
317 /* Test Case 8. */
318 .K = {},
319 .K_len = 24,
320 .IV = {},
321 .IV_len = 12,
322 .P = {},
323 .P_len = 16,
324 .A = {},
325 .A_len = 0,
326 .C = {
327 0x98, 0xe7, 0x24, 0x7c, 0x07, 0xf0, 0xfe, 0x41,
328 0x1c, 0x26, 0x7e, 0x43, 0x84, 0xb0, 0xf6, 0x00,
329 },
330 .C_len = 16,
331 .T = {
332 0x2f, 0xf5, 0x8d, 0x80, 0x03, 0x39, 0x27, 0xab,
333 0x8e, 0xf4, 0xd4, 0x58, 0x75, 0x14, 0xf0, 0xfb,
334 },
335 },
336 {
337 /* Test Case 9. */
338 .K = {
339 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
340 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
341 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
342 },
343 .K_len = 24,
344 .IV = {
345 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
346 0xde, 0xca, 0xf8, 0x88,
347 },
348 .IV_len = 12,
349 .P = {
350 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
351 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
352 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
353 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
354 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
355 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
356 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
357 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55,
358 },
359 .P_len = 64,
360 .A = {},
361 .A_len = 0,
362 .C = {
363 0x39, 0x80, 0xca, 0x0b, 0x3c, 0x00, 0xe8, 0x41,
364 0xeb, 0x06, 0xfa, 0xc4, 0x87, 0x2a, 0x27, 0x57,
365 0x85, 0x9e, 0x1c, 0xea, 0xa6, 0xef, 0xd9, 0x84,
366 0x62, 0x85, 0x93, 0xb4, 0x0c, 0xa1, 0xe1, 0x9c,
367 0x7d, 0x77, 0x3d, 0x00, 0xc1, 0x44, 0xc5, 0x25,
368 0xac, 0x61, 0x9d, 0x18, 0xc8, 0x4a, 0x3f, 0x47,
369 0x18, 0xe2, 0x44, 0x8b, 0x2f, 0xe3, 0x24, 0xd9,
370 0xcc, 0xda, 0x27, 0x10, 0xac, 0xad, 0xe2, 0x56,
371 },
372 .C_len = 64,
373 .T = {
374 0x99, 0x24, 0xa7, 0xc8, 0x58, 0x73, 0x36, 0xbf,
375 0xb1, 0x18, 0x02, 0x4d, 0xb8, 0x67, 0x4a, 0x14,
376 },
377 },
378 {
379 /* Test Case 10. */
380 /* K and IV are the same as TC9. */
381 .K = {
382 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
383 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
384 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
385 },
386 .K_len = 24,
387 .IV = {
388 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
389 0xde, 0xca, 0xf8, 0x88,
390 },
391 .IV_len = 12,
392 .P = {
393 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
394 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
395 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
396 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
397 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
398 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
399 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
400 0xba, 0x63, 0x7b, 0x39,
401 },
402 .P_len = 60,
403 .A = {
404 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
405 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
406 0xab, 0xad, 0xda, 0xd2,
407 },
408 .A_len = 20,
409 .C = {
410 0x39, 0x80, 0xca, 0x0b, 0x3c, 0x00, 0xe8, 0x41,
411 0xeb, 0x06, 0xfa, 0xc4, 0x87, 0x2a, 0x27, 0x57,
412 0x85, 0x9e, 0x1c, 0xea, 0xa6, 0xef, 0xd9, 0x84,
413 0x62, 0x85, 0x93, 0xb4, 0x0c, 0xa1, 0xe1, 0x9c,
414 0x7d, 0x77, 0x3d, 0x00, 0xc1, 0x44, 0xc5, 0x25,
415 0xac, 0x61, 0x9d, 0x18, 0xc8, 0x4a, 0x3f, 0x47,
416 0x18, 0xe2, 0x44, 0x8b, 0x2f, 0xe3, 0x24, 0xd9,
417 0xcc, 0xda, 0x27, 0x10,
418 },
419 .C_len = 60,
420 .T = {
421 0x25, 0x19, 0x49, 0x8e, 0x80, 0xf1, 0x47, 0x8f,
422 0x37, 0xba, 0x55, 0xbd, 0x6d, 0x27, 0x61, 0x8c,
423 },
424 },
425 {
426 /* Test Case 11. */
427 /* K is the same as TC9, P and A are the same as TC10. */
428 .K = {
429 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
430 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
431 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
432 },
433 .K_len = 24,
434 .IV = {
435 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
436 },
437 .IV_len = 8,
438 .P = {
439 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
440 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
441 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
442 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
443 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
444 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
445 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
446 0xba, 0x63, 0x7b, 0x39,
447 },
448 .P_len = 60,
449 .A = {
450 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
451 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
452 0xab, 0xad, 0xda, 0xd2,
453 },
454 .A_len = 20,
455 .C = {
456 0x0f, 0x10, 0xf5, 0x99, 0xae, 0x14, 0xa1, 0x54,
457 0xed, 0x24, 0xb3, 0x6e, 0x25, 0x32, 0x4d, 0xb8,
458 0xc5, 0x66, 0x63, 0x2e, 0xf2, 0xbb, 0xb3, 0x4f,
459 0x83, 0x47, 0x28, 0x0f, 0xc4, 0x50, 0x70, 0x57,
460 0xfd, 0xdc, 0x29, 0xdf, 0x9a, 0x47, 0x1f, 0x75,
461 0xc6, 0x65, 0x41, 0xd4, 0xd4, 0xda, 0xd1, 0xc9,
462 0xe9, 0x3a, 0x19, 0xa5, 0x8e, 0x8b, 0x47, 0x3f,
463 0xa0, 0xf0, 0x62, 0xf7
464 },
465 .C_len = 60,
466 .T = {
467 0x65, 0xdc, 0xc5, 0x7f, 0xcf, 0x62, 0x3a, 0x24,
468 0x09, 0x4f, 0xcc, 0xa4, 0x0d, 0x35, 0x33, 0xf8,
469 },
470 },
471 {
472 /* Test Case 12. */
473 /* K is the same as TC9, P and A are the same as TC10. */
474 .K = {
475 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
476 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
477 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
478 },
479 .K_len = 24,
480 .IV = {
481 0x93, 0x13, 0x22, 0x5d, 0xf8, 0x84, 0x06, 0xe5,
482 0x55, 0x90, 0x9c, 0x5a, 0xff, 0x52, 0x69, 0xaa,
483 0x6a, 0x7a, 0x95, 0x38, 0x53, 0x4f, 0x7d, 0xa1,
484 0xe4, 0xc3, 0x03, 0xd2, 0xa3, 0x18, 0xa7, 0x28,
485 0xc3, 0xc0, 0xc9, 0x51, 0x56, 0x80, 0x95, 0x39,
486 0xfc, 0xf0, 0xe2, 0x42, 0x9a, 0x6b, 0x52, 0x54,
487 0x16, 0xae, 0xdb, 0xf5, 0xa0, 0xde, 0x6a, 0x57,
488 0xa6, 0x37, 0xb3, 0x9b,
489 },
490 .IV_len = 60,
491 .P = {
492 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
493 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
494 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
495 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
496 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
497 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
498 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
499 0xba, 0x63, 0x7b, 0x39,
500 },
501 .P_len = 60,
502 .A = {
503 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
504 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
505 0xab, 0xad, 0xda, 0xd2,
506 },
507 .A_len = 20,
508 .C = {
509 0xd2, 0x7e, 0x88, 0x68, 0x1c, 0xe3, 0x24, 0x3c,
510 0x48, 0x30, 0x16, 0x5a, 0x8f, 0xdc, 0xf9, 0xff,
511 0x1d, 0xe9, 0xa1, 0xd8, 0xe6, 0xb4, 0x47, 0xef,
512 0x6e, 0xf7, 0xb7, 0x98, 0x28, 0x66, 0x6e, 0x45,
513 0x81, 0xe7, 0x90, 0x12, 0xaf, 0x34, 0xdd, 0xd9,
514 0xe2, 0xf0, 0x37, 0x58, 0x9b, 0x29, 0x2d, 0xb3,
515 0xe6, 0x7c, 0x03, 0x67, 0x45, 0xfa, 0x22, 0xe7,
516 0xe9, 0xb7, 0x37, 0x3b,
517 },
518 .C_len = 60,
519 .T = {
520 0xdc, 0xf5, 0x66, 0xff, 0x29, 0x1c, 0x25, 0xbb,
521 0xb8, 0x56, 0x8f, 0xc3, 0xd3, 0x76, 0xa6, 0xd9,
522 },
523 },
524 {
525 /* Test Case 13. */
526 .K = {},
527 .K_len = 32,
528 .IV = {},
529 .IV_len = 12,
530 .P = {},
531 .P_len = 0,
532 .A = {},
533 .A_len = 0,
534 .C = {},
535 .C_len = 0,
536 .T = {
537 0x53, 0x0f, 0x8a, 0xfb, 0xc7, 0x45, 0x36, 0xb9,
538 0xa9, 0x63, 0xb4, 0xf1, 0xc4, 0xcb, 0x73, 0x8b,
539 },
540 },
541 {
542 /* Test Case 14. */
543 .K = {},
544 .K_len = 32,
545 .IV = {},
546 .IV_len = 12,
547 .P = {},
548 .P_len = 16,
549 .A = {},
550 .A_len = 0,
551 .C = {
552 0xce, 0xa7, 0x40, 0x3d, 0x4d, 0x60, 0x6b, 0x6e,
553 0x07, 0x4e, 0xc5, 0xd3, 0xba, 0xf3, 0x9d, 0x18,
554 },
555 .C_len = 16,
556 .T = {
557 0xd0, 0xd1, 0xc8, 0xa7, 0x99, 0x99, 0x6b, 0xf0,
558 0x26, 0x5b, 0x98, 0xb5, 0xd4, 0x8a, 0xb9, 0x19,
559 },
560 },
561 {
562 /* Test Case 15. */
563 .K = {
564 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
565 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
566 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
567 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
568 },
569 .K_len = 32,
570 .IV = {
571 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
572 0xde, 0xca, 0xf8, 0x88,
573 },
574 .IV_len = 12,
575 .P = {
576 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
577 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
578 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
579 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
580 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
581 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
582 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
583 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55,
584 },
585 .P_len = 64,
586 .A = {},
587 .A_len = 0,
588 .C = {
589 0x52, 0x2d, 0xc1, 0xf0, 0x99, 0x56, 0x7d, 0x07,
590 0xf4, 0x7f, 0x37, 0xa3, 0x2a, 0x84, 0x42, 0x7d,
591 0x64, 0x3a, 0x8c, 0xdc, 0xbf, 0xe5, 0xc0, 0xc9,
592 0x75, 0x98, 0xa2, 0xbd, 0x25, 0x55, 0xd1, 0xaa,
593 0x8c, 0xb0, 0x8e, 0x48, 0x59, 0x0d, 0xbb, 0x3d,
594 0xa7, 0xb0, 0x8b, 0x10, 0x56, 0x82, 0x88, 0x38,
595 0xc5, 0xf6, 0x1e, 0x63, 0x93, 0xba, 0x7a, 0x0a,
596 0xbc, 0xc9, 0xf6, 0x62, 0x89, 0x80, 0x15, 0xad,
597 },
598 .C_len = 64,
599 .T = {
600 0xb0, 0x94, 0xda, 0xc5, 0xd9, 0x34, 0x71, 0xbd,
601 0xec, 0x1a, 0x50, 0x22, 0x70, 0xe3, 0xcc, 0x6c,
602 },
603 },
604 {
605 /* Test Case 16. */
606 /* K and IV are the same as TC15. */
607 .K = {
608 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
609 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
610 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
611 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
612 },
613 .K_len = 32,
614 .IV = {
615 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
616 0xde, 0xca, 0xf8, 0x88,
617 },
618 .IV_len = 12,
619 .P = {
620 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
621 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
622 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
623 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
624 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
625 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
626 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
627 0xba, 0x63, 0x7b, 0x39,
628 },
629 .P_len = 60,
630 .A = {
631 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
632 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
633 0xab, 0xad, 0xda, 0xd2,
634 },
635 .A_len = 20,
636 .C = {
637 0x52, 0x2d, 0xc1, 0xf0, 0x99, 0x56, 0x7d, 0x07,
638 0xf4, 0x7f, 0x37, 0xa3, 0x2a, 0x84, 0x42, 0x7d,
639 0x64, 0x3a, 0x8c, 0xdc, 0xbf, 0xe5, 0xc0, 0xc9,
640 0x75, 0x98, 0xa2, 0xbd, 0x25, 0x55, 0xd1, 0xaa,
641 0x8c, 0xb0, 0x8e, 0x48, 0x59, 0x0d, 0xbb, 0x3d,
642 0xa7, 0xb0, 0x8b, 0x10, 0x56, 0x82, 0x88, 0x38,
643 0xc5, 0xf6, 0x1e, 0x63, 0x93, 0xba, 0x7a, 0x0a,
644 0xbc, 0xc9, 0xf6, 0x62,
645 },
646 .C_len = 60,
647 .T = {
648 0x76, 0xfc, 0x6e, 0xce, 0x0f, 0x4e, 0x17, 0x68,
649 0xcd, 0xdf, 0x88, 0x53, 0xbb, 0x2d, 0x55, 0x1b,
650 },
651 },
652 {
653 /* Test Case 17. */
654 /* K is the same as TC15, P and A are the same as TC 16. */
655 .K = {
656 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
657 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
658 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
659 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
660 },
661 .K_len = 32,
662 .IV = {
663 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
664 },
665 .IV_len = 8,
666 .P = {
667 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
668 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
669 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
670 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
671 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
672 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
673 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
674 0xba, 0x63, 0x7b, 0x39,
675 },
676 .P_len = 60,
677 .A = {
678 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
679 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
680 0xab, 0xad, 0xda, 0xd2,
681 },
682 .A_len = 20,
683 .C = {
684 0xc3, 0x76, 0x2d, 0xf1, 0xca, 0x78, 0x7d, 0x32,
685 0xae, 0x47, 0xc1, 0x3b, 0xf1, 0x98, 0x44, 0xcb,
686 0xaf, 0x1a, 0xe1, 0x4d, 0x0b, 0x97, 0x6a, 0xfa,
687 0xc5, 0x2f, 0xf7, 0xd7, 0x9b, 0xba, 0x9d, 0xe0,
688 0xfe, 0xb5, 0x82, 0xd3, 0x39, 0x34, 0xa4, 0xf0,
689 0x95, 0x4c, 0xc2, 0x36, 0x3b, 0xc7, 0x3f, 0x78,
690 0x62, 0xac, 0x43, 0x0e, 0x64, 0xab, 0xe4, 0x99,
691 0xf4, 0x7c, 0x9b, 0x1f,
692 },
693 .C_len = 60,
694 .T = {
695 0x3a, 0x33, 0x7d, 0xbf, 0x46, 0xa7, 0x92, 0xc4,
696 0x5e, 0x45, 0x49, 0x13, 0xfe, 0x2e, 0xa8, 0xf2,
697 },
698 },
699 {
700 /* Test Case 18. */
701 /* K is the same as TC15, P and A are the same as TC 16. */
702 .K = {
703 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
704 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
705 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
706 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
707 },
708 .K_len = 32,
709 .IV = {
710 0x93, 0x13, 0x22, 0x5d, 0xf8, 0x84, 0x06, 0xe5,
711 0x55, 0x90, 0x9c, 0x5a, 0xff, 0x52, 0x69, 0xaa,
712 0x6a, 0x7a, 0x95, 0x38, 0x53, 0x4f, 0x7d, 0xa1,
713 0xe4, 0xc3, 0x03, 0xd2, 0xa3, 0x18, 0xa7, 0x28,
714 0xc3, 0xc0, 0xc9, 0x51, 0x56, 0x80, 0x95, 0x39,
715 0xfc, 0xf0, 0xe2, 0x42, 0x9a, 0x6b, 0x52, 0x54,
716 0x16, 0xae, 0xdb, 0xf5, 0xa0, 0xde, 0x6a, 0x57,
717 0xa6, 0x37, 0xb3, 0x9b,
718 },
719 .IV_len = 60,
720 .P = {
721 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
722 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
723 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
724 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
725 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
726 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
727 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
728 0xba, 0x63, 0x7b, 0x39,
729 },
730 .P_len = 60,
731 .A = {
732 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
733 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
734 0xab, 0xad, 0xda, 0xd2,
735 },
736 .A_len = 20,
737 .C = {
738 0x5a, 0x8d, 0xef, 0x2f, 0x0c, 0x9e, 0x53, 0xf1,
739 0xf7, 0x5d, 0x78, 0x53, 0x65, 0x9e, 0x2a, 0x20,
740 0xee, 0xb2, 0xb2, 0x2a, 0xaf, 0xde, 0x64, 0x19,
741 0xa0, 0x58, 0xab, 0x4f, 0x6f, 0x74, 0x6b, 0xf4,
742 0x0f, 0xc0, 0xc3, 0xb7, 0x80, 0xf2, 0x44, 0x45,
743 0x2d, 0xa3, 0xeb, 0xf1, 0xc5, 0xd8, 0x2c, 0xde,
744 0xa2, 0x41, 0x89, 0x97, 0x20, 0x0e, 0xf8, 0x2e,
745 0x44, 0xae, 0x7e, 0x3f,
746 },
747 .C_len = 60,
748 .T = {
749 0xa4, 0x4a, 0x82, 0x66, 0xee, 0x1c, 0x8e, 0xb0,
750 0xc8, 0xb5, 0xd4, 0xcf, 0x5a, 0xe9, 0xf1, 0x9a,
751 },
752 },
753 {
754 /* Test Case 19. */
755 .K = {},
756 .K_len = 16,
757 .IV = {},
758 .IV_len = 12,
759 .P = {},
760 .P_len = 0,
761 .A = {
762 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
763 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
764 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
765 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
766 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
767 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
768 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
769 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55,
770 0x52, 0x2d, 0xc1, 0xf0, 0x99, 0x56, 0x7d, 0x07,
771 0xf4, 0x7f, 0x37, 0xa3, 0x2a, 0x84, 0x42, 0x7d,
772 0x64, 0x3a, 0x8c, 0xdc, 0xbf, 0xe5, 0xc0, 0xc9,
773 0x75, 0x98, 0xa2, 0xbd, 0x25, 0x55, 0xd1, 0xaa,
774 0x8c, 0xb0, 0x8e, 0x48, 0x59, 0x0d, 0xbb, 0x3d,
775 0xa7, 0xb0, 0x8b, 0x10, 0x56, 0x82, 0x88, 0x38,
776 0xc5, 0xf6, 0x1e, 0x63, 0x93, 0xba, 0x7a, 0x0a,
777 0xbc, 0xc9, 0xf6, 0x62, 0x89, 0x80, 0x15, 0xad,
778 },
779 .A_len = 128,
780 .C = {},
781 .C_len = 0,
782 .T = {
783 0x5f, 0xea, 0x79, 0x3a, 0x2d, 0x6f, 0x97, 0x4d,
784 0x37, 0xe6, 0x8e, 0x0c, 0xb8, 0xff, 0x94, 0x92,
785 },
786 },
787 {
788 /* Test Case 20. */
789 .K = {},
790 .K_len = 16,
791 .IV = {
792 /* This results in 0xff in counter LSB. */
793 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
794 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
795 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
796 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
797 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
798 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
799 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
800 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
801 },
802 .IV_len = 64,
803 .P = {},
804 .P_len = 288,
805 .A = {},
806 .A_len = 0,
807 .C = {
808 0x56, 0xb3, 0x37, 0x3c, 0xa9, 0xef, 0x6e, 0x4a,
809 0x2b, 0x64, 0xfe, 0x1e, 0x9a, 0x17, 0xb6, 0x14,
810 0x25, 0xf1, 0x0d, 0x47, 0xa7, 0x5a, 0x5f, 0xce,
811 0x13, 0xef, 0xc6, 0xbc, 0x78, 0x4a, 0xf2, 0x4f,
812 0x41, 0x41, 0xbd, 0xd4, 0x8c, 0xf7, 0xc7, 0x70,
813 0x88, 0x7a, 0xfd, 0x57, 0x3c, 0xca, 0x54, 0x18,
814 0xa9, 0xae, 0xff, 0xcd, 0x7c, 0x5c, 0xed, 0xdf,
815 0xc6, 0xa7, 0x83, 0x97, 0xb9, 0xa8, 0x5b, 0x49,
816 0x9d, 0xa5, 0x58, 0x25, 0x72, 0x67, 0xca, 0xab,
817 0x2a, 0xd0, 0xb2, 0x3c, 0xa4, 0x76, 0xa5, 0x3c,
818 0xb1, 0x7f, 0xb4, 0x1c, 0x4b, 0x8b, 0x47, 0x5c,
819 0xb4, 0xf3, 0xf7, 0x16, 0x50, 0x94, 0xc2, 0x29,
820 0xc9, 0xe8, 0xc4, 0xdc, 0x0a, 0x2a, 0x5f, 0xf1,
821 0x90, 0x3e, 0x50, 0x15, 0x11, 0x22, 0x13, 0x76,
822 0xa1, 0xcd, 0xb8, 0x36, 0x4c, 0x50, 0x61, 0xa2,
823 0x0c, 0xae, 0x74, 0xbc, 0x4a, 0xcd, 0x76, 0xce,
824 0xb0, 0xab, 0xc9, 0xfd, 0x32, 0x17, 0xef, 0x9f,
825 0x8c, 0x90, 0xbe, 0x40, 0x2d, 0xdf, 0x6d, 0x86,
826 0x97, 0xf4, 0xf8, 0x80, 0xdf, 0xf1, 0x5b, 0xfb,
827 0x7a, 0x6b, 0x28, 0x24, 0x1e, 0xc8, 0xfe, 0x18,
828 0x3c, 0x2d, 0x59, 0xe3, 0xf9, 0xdf, 0xff, 0x65,
829 0x3c, 0x71, 0x26, 0xf0, 0xac, 0xb9, 0xe6, 0x42,
830 0x11, 0xf4, 0x2b, 0xae, 0x12, 0xaf, 0x46, 0x2b,
831 0x10, 0x70, 0xbe, 0xf1, 0xab, 0x5e, 0x36, 0x06,
832 0x87, 0x2c, 0xa1, 0x0d, 0xee, 0x15, 0xb3, 0x24,
833 0x9b, 0x1a, 0x1b, 0x95, 0x8f, 0x23, 0x13, 0x4c,
834 0x4b, 0xcc, 0xb7, 0xd0, 0x32, 0x00, 0xbc, 0xe4,
835 0x20, 0xa2, 0xf8, 0xeb, 0x66, 0xdc, 0xf3, 0x64,
836 0x4d, 0x14, 0x23, 0xc1, 0xb5, 0x69, 0x90, 0x03,
837 0xc1, 0x3e, 0xce, 0xf4, 0xbf, 0x38, 0xa3, 0xb6,
838 0x0e, 0xed, 0xc3, 0x40, 0x33, 0xba, 0xc1, 0x90,
839 0x27, 0x83, 0xdc, 0x6d, 0x89, 0xe2, 0xe7, 0x74,
840 0x18, 0x8a, 0x43, 0x9c, 0x7e, 0xbc, 0xc0, 0x67,
841 0x2d, 0xbd, 0xa4, 0xdd, 0xcf, 0xb2, 0x79, 0x46,
842 0x13, 0xb0, 0xbe, 0x41, 0x31, 0x5e, 0xf7, 0x78,
843 0x70, 0x8a, 0x70, 0xee, 0x7d, 0x75, 0x16, 0x5c,
844 },
845 .C_len = 288,
846 .T = {
847 0x8b, 0x30, 0x7f, 0x6b, 0x33, 0x28, 0x6d, 0x0a,
848 0xb0, 0x26, 0xa9, 0xed, 0x3f, 0xe1, 0xe8, 0x5f,
849 },
850 },
851};
73 852
74/* Test Case 3 */ 853#define N_TESTS (sizeof(gcm128_tests) / sizeof(*gcm128_tests))
75#define A3 A2
76static const u8 K3[]= {0xfe,0xff,0xe9,0x92,0x86,0x65,0x73,0x1c,0x6d,0x6a,0x8f,0x94,0x67,0x30,0x83,0x08},
77 P3[]= {0xd9,0x31,0x32,0x25,0xf8,0x84,0x06,0xe5,0xa5,0x59,0x09,0xc5,0xaf,0xf5,0x26,0x9a,
78 0x86,0xa7,0xa9,0x53,0x15,0x34,0xf7,0xda,0x2e,0x4c,0x30,0x3d,0x8a,0x31,0x8a,0x72,
79 0x1c,0x3c,0x0c,0x95,0x95,0x68,0x09,0x53,0x2f,0xcf,0x0e,0x24,0x49,0xa6,0xb5,0x25,
80 0xb1,0x6a,0xed,0xf5,0xaa,0x0d,0xe6,0x57,0xba,0x63,0x7b,0x39,0x1a,0xaf,0xd2,0x55},
81 IV3[]= {0xca,0xfe,0xba,0xbe,0xfa,0xce,0xdb,0xad,0xde,0xca,0xf8,0x88},
82 C3[]= {0x42,0x83,0x1e,0xc2,0x21,0x77,0x74,0x24,0x4b,0x72,0x21,0xb7,0x84,0xd0,0xd4,0x9c,
83 0xe3,0xaa,0x21,0x2f,0x2c,0x02,0xa4,0xe0,0x35,0xc1,0x7e,0x23,0x29,0xac,0xa1,0x2e,
84 0x21,0xd5,0x14,0xb2,0x54,0x66,0x93,0x1c,0x7d,0x8f,0x6a,0x5a,0xac,0x84,0xaa,0x05,
85 0x1b,0xa3,0x0b,0x39,0x6a,0x0a,0xac,0x97,0x3d,0x58,0xe0,0x91,0x47,0x3f,0x59,0x85},
86 T3[]= {0x4d,0x5c,0x2a,0xf3,0x27,0xcd,0x64,0xa6,0x2c,0xf3,0x5a,0xbd,0x2b,0xa6,0xfa,0xb4};
87 854
88/* Test Case 4 */ 855static int
89#define K4 K3 856do_gcm128_test(int test_no, struct gcm128_test *tv)
90#define IV4 IV3 857{
91static const u8 P4[]= {0xd9,0x31,0x32,0x25,0xf8,0x84,0x06,0xe5,0xa5,0x59,0x09,0xc5,0xaf,0xf5,0x26,0x9a, 858 GCM128_CONTEXT ctx;
92 0x86,0xa7,0xa9,0x53,0x15,0x34,0xf7,0xda,0x2e,0x4c,0x30,0x3d,0x8a,0x31,0x8a,0x72, 859 AES_KEY key;
93 0x1c,0x3c,0x0c,0x95,0x95,0x68,0x09,0x53,0x2f,0xcf,0x0e,0x24,0x49,0xa6,0xb5,0x25, 860 uint8_t *out;
94 0xb1,0x6a,0xed,0xf5,0xaa,0x0d,0xe6,0x57,0xba,0x63,0x7b,0x39}, 861 size_t out_len;
95 A4[]= {0xfe,0xed,0xfa,0xce,0xde,0xad,0xbe,0xef,0xfe,0xed,0xfa,0xce,0xde,0xad,0xbe,0xef, 862 int ret = 1;
96 0xab,0xad,0xda,0xd2},
97 C4[]= {0x42,0x83,0x1e,0xc2,0x21,0x77,0x74,0x24,0x4b,0x72,0x21,0xb7,0x84,0xd0,0xd4,0x9c,
98 0xe3,0xaa,0x21,0x2f,0x2c,0x02,0xa4,0xe0,0x35,0xc1,0x7e,0x23,0x29,0xac,0xa1,0x2e,
99 0x21,0xd5,0x14,0xb2,0x54,0x66,0x93,0x1c,0x7d,0x8f,0x6a,0x5a,0xac,0x84,0xaa,0x05,
100 0x1b,0xa3,0x0b,0x39,0x6a,0x0a,0xac,0x97,0x3d,0x58,0xe0,0x91},
101 T4[]= {0x5b,0xc9,0x4f,0xbc,0x32,0x21,0xa5,0xdb,0x94,0xfa,0xe9,0x5a,0xe7,0x12,0x1a,0x47};
102
103/* Test Case 5 */
104#define K5 K4
105#define P5 P4
106#define A5 A4
107static const u8 IV5[]= {0xca,0xfe,0xba,0xbe,0xfa,0xce,0xdb,0xad},
108 C5[]= {0x61,0x35,0x3b,0x4c,0x28,0x06,0x93,0x4a,0x77,0x7f,0xf5,0x1f,0xa2,0x2a,0x47,0x55,
109 0x69,0x9b,0x2a,0x71,0x4f,0xcd,0xc6,0xf8,0x37,0x66,0xe5,0xf9,0x7b,0x6c,0x74,0x23,
110 0x73,0x80,0x69,0x00,0xe4,0x9f,0x24,0xb2,0x2b,0x09,0x75,0x44,0xd4,0x89,0x6b,0x42,
111 0x49,0x89,0xb5,0xe1,0xeb,0xac,0x0f,0x07,0xc2,0x3f,0x45,0x98},
112 T5[]= {0x36,0x12,0xd2,0xe7,0x9e,0x3b,0x07,0x85,0x56,0x1b,0xe1,0x4a,0xac,0xa2,0xfc,0xcb};
113
114/* Test Case 6 */
115#define K6 K5
116#define P6 P5
117#define A6 A5
118static const u8 IV6[]= {0x93,0x13,0x22,0x5d,0xf8,0x84,0x06,0xe5,0x55,0x90,0x9c,0x5a,0xff,0x52,0x69,0xaa,
119 0x6a,0x7a,0x95,0x38,0x53,0x4f,0x7d,0xa1,0xe4,0xc3,0x03,0xd2,0xa3,0x18,0xa7,0x28,
120 0xc3,0xc0,0xc9,0x51,0x56,0x80,0x95,0x39,0xfc,0xf0,0xe2,0x42,0x9a,0x6b,0x52,0x54,
121 0x16,0xae,0xdb,0xf5,0xa0,0xde,0x6a,0x57,0xa6,0x37,0xb3,0x9b},
122 C6[]= {0x8c,0xe2,0x49,0x98,0x62,0x56,0x15,0xb6,0x03,0xa0,0x33,0xac,0xa1,0x3f,0xb8,0x94,
123 0xbe,0x91,0x12,0xa5,0xc3,0xa2,0x11,0xa8,0xba,0x26,0x2a,0x3c,0xca,0x7e,0x2c,0xa7,
124 0x01,0xe4,0xa9,0xa4,0xfb,0xa4,0x3c,0x90,0xcc,0xdc,0xb2,0x81,0xd4,0x8c,0x7c,0x6f,
125 0xd6,0x28,0x75,0xd2,0xac,0xa4,0x17,0x03,0x4c,0x34,0xae,0xe5},
126 T6[]= {0x61,0x9c,0xc5,0xae,0xff,0xfe,0x0b,0xfa,0x46,0x2a,0xf4,0x3c,0x16,0x99,0xd0,0x50};
127
128/* Test Case 7 */
129static const u8 K7[24],
130 *P7=NULL,
131 *A7=NULL,
132 IV7[12],
133 *C7=NULL,
134 T7[]= {0xcd,0x33,0xb2,0x8a,0xc7,0x73,0xf7,0x4b,0xa0,0x0e,0xd1,0xf3,0x12,0x57,0x24,0x35};
135
136/* Test Case 8 */
137#define K8 K7
138#define IV8 IV7
139#define A8 A7
140static const u8 P8[16],
141 C8[]= {0x98,0xe7,0x24,0x7c,0x07,0xf0,0xfe,0x41,0x1c,0x26,0x7e,0x43,0x84,0xb0,0xf6,0x00},
142 T8[]= {0x2f,0xf5,0x8d,0x80,0x03,0x39,0x27,0xab,0x8e,0xf4,0xd4,0x58,0x75,0x14,0xf0,0xfb};
143
144/* Test Case 9 */
145#define A9 A8
146static const u8 K9[]= {0xfe,0xff,0xe9,0x92,0x86,0x65,0x73,0x1c,0x6d,0x6a,0x8f,0x94,0x67,0x30,0x83,0x08,
147 0xfe,0xff,0xe9,0x92,0x86,0x65,0x73,0x1c},
148 P9[]= {0xd9,0x31,0x32,0x25,0xf8,0x84,0x06,0xe5,0xa5,0x59,0x09,0xc5,0xaf,0xf5,0x26,0x9a,
149 0x86,0xa7,0xa9,0x53,0x15,0x34,0xf7,0xda,0x2e,0x4c,0x30,0x3d,0x8a,0x31,0x8a,0x72,
150 0x1c,0x3c,0x0c,0x95,0x95,0x68,0x09,0x53,0x2f,0xcf,0x0e,0x24,0x49,0xa6,0xb5,0x25,
151 0xb1,0x6a,0xed,0xf5,0xaa,0x0d,0xe6,0x57,0xba,0x63,0x7b,0x39,0x1a,0xaf,0xd2,0x55},
152 IV9[]= {0xca,0xfe,0xba,0xbe,0xfa,0xce,0xdb,0xad,0xde,0xca,0xf8,0x88},
153 C9[]= {0x39,0x80,0xca,0x0b,0x3c,0x00,0xe8,0x41,0xeb,0x06,0xfa,0xc4,0x87,0x2a,0x27,0x57,
154 0x85,0x9e,0x1c,0xea,0xa6,0xef,0xd9,0x84,0x62,0x85,0x93,0xb4,0x0c,0xa1,0xe1,0x9c,
155 0x7d,0x77,0x3d,0x00,0xc1,0x44,0xc5,0x25,0xac,0x61,0x9d,0x18,0xc8,0x4a,0x3f,0x47,
156 0x18,0xe2,0x44,0x8b,0x2f,0xe3,0x24,0xd9,0xcc,0xda,0x27,0x10,0xac,0xad,0xe2,0x56},
157 T9[]= {0x99,0x24,0xa7,0xc8,0x58,0x73,0x36,0xbf,0xb1,0x18,0x02,0x4d,0xb8,0x67,0x4a,0x14};
158
159/* Test Case 10 */
160#define K10 K9
161#define IV10 IV9
162static const u8 P10[]= {0xd9,0x31,0x32,0x25,0xf8,0x84,0x06,0xe5,0xa5,0x59,0x09,0xc5,0xaf,0xf5,0x26,0x9a,
163 0x86,0xa7,0xa9,0x53,0x15,0x34,0xf7,0xda,0x2e,0x4c,0x30,0x3d,0x8a,0x31,0x8a,0x72,
164 0x1c,0x3c,0x0c,0x95,0x95,0x68,0x09,0x53,0x2f,0xcf,0x0e,0x24,0x49,0xa6,0xb5,0x25,
165 0xb1,0x6a,0xed,0xf5,0xaa,0x0d,0xe6,0x57,0xba,0x63,0x7b,0x39},
166 A10[]= {0xfe,0xed,0xfa,0xce,0xde,0xad,0xbe,0xef,0xfe,0xed,0xfa,0xce,0xde,0xad,0xbe,0xef,
167 0xab,0xad,0xda,0xd2},
168 C10[]= {0x39,0x80,0xca,0x0b,0x3c,0x00,0xe8,0x41,0xeb,0x06,0xfa,0xc4,0x87,0x2a,0x27,0x57,
169 0x85,0x9e,0x1c,0xea,0xa6,0xef,0xd9,0x84,0x62,0x85,0x93,0xb4,0x0c,0xa1,0xe1,0x9c,
170 0x7d,0x77,0x3d,0x00,0xc1,0x44,0xc5,0x25,0xac,0x61,0x9d,0x18,0xc8,0x4a,0x3f,0x47,
171 0x18,0xe2,0x44,0x8b,0x2f,0xe3,0x24,0xd9,0xcc,0xda,0x27,0x10},
172 T10[]= {0x25,0x19,0x49,0x8e,0x80,0xf1,0x47,0x8f,0x37,0xba,0x55,0xbd,0x6d,0x27,0x61,0x8c};
173
174/* Test Case 11 */
175#define K11 K10
176#define P11 P10
177#define A11 A10
178static const u8 IV11[]={0xca,0xfe,0xba,0xbe,0xfa,0xce,0xdb,0xad},
179 C11[]= {0x0f,0x10,0xf5,0x99,0xae,0x14,0xa1,0x54,0xed,0x24,0xb3,0x6e,0x25,0x32,0x4d,0xb8,
180 0xc5,0x66,0x63,0x2e,0xf2,0xbb,0xb3,0x4f,0x83,0x47,0x28,0x0f,0xc4,0x50,0x70,0x57,
181 0xfd,0xdc,0x29,0xdf,0x9a,0x47,0x1f,0x75,0xc6,0x65,0x41,0xd4,0xd4,0xda,0xd1,0xc9,
182 0xe9,0x3a,0x19,0xa5,0x8e,0x8b,0x47,0x3f,0xa0,0xf0,0x62,0xf7},
183 T11[]= {0x65,0xdc,0xc5,0x7f,0xcf,0x62,0x3a,0x24,0x09,0x4f,0xcc,0xa4,0x0d,0x35,0x33,0xf8};
184
185/* Test Case 12 */
186#define K12 K11
187#define P12 P11
188#define A12 A11
189static const u8 IV12[]={0x93,0x13,0x22,0x5d,0xf8,0x84,0x06,0xe5,0x55,0x90,0x9c,0x5a,0xff,0x52,0x69,0xaa,
190 0x6a,0x7a,0x95,0x38,0x53,0x4f,0x7d,0xa1,0xe4,0xc3,0x03,0xd2,0xa3,0x18,0xa7,0x28,
191 0xc3,0xc0,0xc9,0x51,0x56,0x80,0x95,0x39,0xfc,0xf0,0xe2,0x42,0x9a,0x6b,0x52,0x54,
192 0x16,0xae,0xdb,0xf5,0xa0,0xde,0x6a,0x57,0xa6,0x37,0xb3,0x9b},
193 C12[]= {0xd2,0x7e,0x88,0x68,0x1c,0xe3,0x24,0x3c,0x48,0x30,0x16,0x5a,0x8f,0xdc,0xf9,0xff,
194 0x1d,0xe9,0xa1,0xd8,0xe6,0xb4,0x47,0xef,0x6e,0xf7,0xb7,0x98,0x28,0x66,0x6e,0x45,
195 0x81,0xe7,0x90,0x12,0xaf,0x34,0xdd,0xd9,0xe2,0xf0,0x37,0x58,0x9b,0x29,0x2d,0xb3,
196 0xe6,0x7c,0x03,0x67,0x45,0xfa,0x22,0xe7,0xe9,0xb7,0x37,0x3b},
197 T12[]= {0xdc,0xf5,0x66,0xff,0x29,0x1c,0x25,0xbb,0xb8,0x56,0x8f,0xc3,0xd3,0x76,0xa6,0xd9};
198
199/* Test Case 13 */
200static const u8 K13[32],
201 *P13=NULL,
202 *A13=NULL,
203 IV13[12],
204 *C13=NULL,
205 T13[]={0x53,0x0f,0x8a,0xfb,0xc7,0x45,0x36,0xb9,0xa9,0x63,0xb4,0xf1,0xc4,0xcb,0x73,0x8b};
206
207/* Test Case 14 */
208#define K14 K13
209#define A14 A13
210static const u8 P14[16],
211 IV14[12],
212 C14[]= {0xce,0xa7,0x40,0x3d,0x4d,0x60,0x6b,0x6e,0x07,0x4e,0xc5,0xd3,0xba,0xf3,0x9d,0x18},
213 T14[]= {0xd0,0xd1,0xc8,0xa7,0x99,0x99,0x6b,0xf0,0x26,0x5b,0x98,0xb5,0xd4,0x8a,0xb9,0x19};
214
215/* Test Case 15 */
216#define A15 A14
217static const u8 K15[]= {0xfe,0xff,0xe9,0x92,0x86,0x65,0x73,0x1c,0x6d,0x6a,0x8f,0x94,0x67,0x30,0x83,0x08,
218 0xfe,0xff,0xe9,0x92,0x86,0x65,0x73,0x1c,0x6d,0x6a,0x8f,0x94,0x67,0x30,0x83,0x08},
219 P15[]= {0xd9,0x31,0x32,0x25,0xf8,0x84,0x06,0xe5,0xa5,0x59,0x09,0xc5,0xaf,0xf5,0x26,0x9a,
220 0x86,0xa7,0xa9,0x53,0x15,0x34,0xf7,0xda,0x2e,0x4c,0x30,0x3d,0x8a,0x31,0x8a,0x72,
221 0x1c,0x3c,0x0c,0x95,0x95,0x68,0x09,0x53,0x2f,0xcf,0x0e,0x24,0x49,0xa6,0xb5,0x25,
222 0xb1,0x6a,0xed,0xf5,0xaa,0x0d,0xe6,0x57,0xba,0x63,0x7b,0x39,0x1a,0xaf,0xd2,0x55},
223 IV15[]={0xca,0xfe,0xba,0xbe,0xfa,0xce,0xdb,0xad,0xde,0xca,0xf8,0x88},
224 C15[]= {0x52,0x2d,0xc1,0xf0,0x99,0x56,0x7d,0x07,0xf4,0x7f,0x37,0xa3,0x2a,0x84,0x42,0x7d,
225 0x64,0x3a,0x8c,0xdc,0xbf,0xe5,0xc0,0xc9,0x75,0x98,0xa2,0xbd,0x25,0x55,0xd1,0xaa,
226 0x8c,0xb0,0x8e,0x48,0x59,0x0d,0xbb,0x3d,0xa7,0xb0,0x8b,0x10,0x56,0x82,0x88,0x38,
227 0xc5,0xf6,0x1e,0x63,0x93,0xba,0x7a,0x0a,0xbc,0xc9,0xf6,0x62,0x89,0x80,0x15,0xad},
228 T15[]= {0xb0,0x94,0xda,0xc5,0xd9,0x34,0x71,0xbd,0xec,0x1a,0x50,0x22,0x70,0xe3,0xcc,0x6c};
229 863
230/* Test Case 16 */ 864 out_len = tv->P_len;
231#define K16 K15 865 out = malloc(out_len);
232#define IV16 IV15 866 if (out == NULL)
233static const u8 P16[]= {0xd9,0x31,0x32,0x25,0xf8,0x84,0x06,0xe5,0xa5,0x59,0x09,0xc5,0xaf,0xf5,0x26,0x9a, 867 err(1, "malloc");
234 0x86,0xa7,0xa9,0x53,0x15,0x34,0xf7,0xda,0x2e,0x4c,0x30,0x3d,0x8a,0x31,0x8a,0x72,
235 0x1c,0x3c,0x0c,0x95,0x95,0x68,0x09,0x53,0x2f,0xcf,0x0e,0x24,0x49,0xa6,0xb5,0x25,
236 0xb1,0x6a,0xed,0xf5,0xaa,0x0d,0xe6,0x57,0xba,0x63,0x7b,0x39},
237 A16[]= {0xfe,0xed,0xfa,0xce,0xde,0xad,0xbe,0xef,0xfe,0xed,0xfa,0xce,0xde,0xad,0xbe,0xef,
238 0xab,0xad,0xda,0xd2},
239 C16[]= {0x52,0x2d,0xc1,0xf0,0x99,0x56,0x7d,0x07,0xf4,0x7f,0x37,0xa3,0x2a,0x84,0x42,0x7d,
240 0x64,0x3a,0x8c,0xdc,0xbf,0xe5,0xc0,0xc9,0x75,0x98,0xa2,0xbd,0x25,0x55,0xd1,0xaa,
241 0x8c,0xb0,0x8e,0x48,0x59,0x0d,0xbb,0x3d,0xa7,0xb0,0x8b,0x10,0x56,0x82,0x88,0x38,
242 0xc5,0xf6,0x1e,0x63,0x93,0xba,0x7a,0x0a,0xbc,0xc9,0xf6,0x62},
243 T16[]= {0x76,0xfc,0x6e,0xce,0x0f,0x4e,0x17,0x68,0xcd,0xdf,0x88,0x53,0xbb,0x2d,0x55,0x1b};
244 868
245/* Test Case 17 */ 869 AES_set_encrypt_key(tv->K, tv->K_len * 8, &key);
246#define K17 K16
247#define P17 P16
248#define A17 A16
249static const u8 IV17[]={0xca,0xfe,0xba,0xbe,0xfa,0xce,0xdb,0xad},
250 C17[]= {0xc3,0x76,0x2d,0xf1,0xca,0x78,0x7d,0x32,0xae,0x47,0xc1,0x3b,0xf1,0x98,0x44,0xcb,
251 0xaf,0x1a,0xe1,0x4d,0x0b,0x97,0x6a,0xfa,0xc5,0x2f,0xf7,0xd7,0x9b,0xba,0x9d,0xe0,
252 0xfe,0xb5,0x82,0xd3,0x39,0x34,0xa4,0xf0,0x95,0x4c,0xc2,0x36,0x3b,0xc7,0x3f,0x78,
253 0x62,0xac,0x43,0x0e,0x64,0xab,0xe4,0x99,0xf4,0x7c,0x9b,0x1f},
254 T17[]= {0x3a,0x33,0x7d,0xbf,0x46,0xa7,0x92,0xc4,0x5e,0x45,0x49,0x13,0xfe,0x2e,0xa8,0xf2};
255 870
256/* Test Case 18 */ 871 memset(out, 0, out_len);
257#define K18 K17 872 CRYPTO_gcm128_init(&ctx, &key, (block128_f)AES_encrypt);
258#define P18 P17 873 CRYPTO_gcm128_setiv(&ctx, tv->IV, tv->IV_len);
259#define A18 A17 874 if (tv->A_len > 0)
260static const u8 IV18[]={0x93,0x13,0x22,0x5d,0xf8,0x84,0x06,0xe5,0x55,0x90,0x9c,0x5a,0xff,0x52,0x69,0xaa, 875 CRYPTO_gcm128_aad(&ctx, tv->A, tv->A_len);
261 0x6a,0x7a,0x95,0x38,0x53,0x4f,0x7d,0xa1,0xe4,0xc3,0x03,0xd2,0xa3,0x18,0xa7,0x28, 876 if (tv->P_len > 0)
262 0xc3,0xc0,0xc9,0x51,0x56,0x80,0x95,0x39,0xfc,0xf0,0xe2,0x42,0x9a,0x6b,0x52,0x54, 877 CRYPTO_gcm128_encrypt(&ctx, tv->P, out, out_len);
263 0x16,0xae,0xdb,0xf5,0xa0,0xde,0x6a,0x57,0xa6,0x37,0xb3,0x9b}, 878 if (CRYPTO_gcm128_finish(&ctx, tv->T, 16)) {
264 C18[]= {0x5a,0x8d,0xef,0x2f,0x0c,0x9e,0x53,0xf1,0xf7,0x5d,0x78,0x53,0x65,0x9e,0x2a,0x20, 879 fprintf(stderr, "TEST %i: CRYPTO_gcm128_finish failed\n",
265 0xee,0xb2,0xb2,0x2a,0xaf,0xde,0x64,0x19,0xa0,0x58,0xab,0x4f,0x6f,0x74,0x6b,0xf4, 880 test_no);
266 0x0f,0xc0,0xc3,0xb7,0x80,0xf2,0x44,0x45,0x2d,0xa3,0xeb,0xf1,0xc5,0xd8,0x2c,0xde, 881 goto fail;
267 0xa2,0x41,0x89,0x97,0x20,0x0e,0xf8,0x2e,0x44,0xae,0x7e,0x3f}, 882 }
268 T18[]= {0xa4,0x4a,0x82,0x66,0xee,0x1c,0x8e,0xb0,0xc8,0xb5,0xd4,0xcf,0x5a,0xe9,0xf1,0x9a}; 883 if (tv->C_len > 0 && memcmp(out, tv->C, out_len)) {
884 fprintf(stderr, "TEST %i: encrypt failed\n", test_no);
885 goto fail;
886 }
269 887
270/* Test Case 19 */ 888 memset(out, 0, out_len);
271#define K19 K1 889 CRYPTO_gcm128_setiv(&ctx, tv->IV, tv->IV_len);
272#define P19 P1 890 if (tv->A_len > 0)
273#define IV19 IV1 891 CRYPTO_gcm128_aad(&ctx, tv->A, tv->A_len);
274#define C19 C1 892 if (tv->C_len > 0)
275static const u8 A19[]= {0xd9,0x31,0x32,0x25,0xf8,0x84,0x06,0xe5,0xa5,0x59,0x09,0xc5,0xaf,0xf5,0x26,0x9a, 893 CRYPTO_gcm128_decrypt(&ctx, tv->C, out, out_len);
276 0x86,0xa7,0xa9,0x53,0x15,0x34,0xf7,0xda,0x2e,0x4c,0x30,0x3d,0x8a,0x31,0x8a,0x72, 894 if (CRYPTO_gcm128_finish(&ctx, tv->T, 16)) {
277 0x1c,0x3c,0x0c,0x95,0x95,0x68,0x09,0x53,0x2f,0xcf,0x0e,0x24,0x49,0xa6,0xb5,0x25, 895 fprintf(stderr, "TEST %i: CRYPTO_gcm128_finish failed\n",
278 0xb1,0x6a,0xed,0xf5,0xaa,0x0d,0xe6,0x57,0xba,0x63,0x7b,0x39,0x1a,0xaf,0xd2,0x55, 896 test_no);
279 0x52,0x2d,0xc1,0xf0,0x99,0x56,0x7d,0x07,0xf4,0x7f,0x37,0xa3,0x2a,0x84,0x42,0x7d, 897 goto fail;
280 0x64,0x3a,0x8c,0xdc,0xbf,0xe5,0xc0,0xc9,0x75,0x98,0xa2,0xbd,0x25,0x55,0xd1,0xaa, 898 }
281 0x8c,0xb0,0x8e,0x48,0x59,0x0d,0xbb,0x3d,0xa7,0xb0,0x8b,0x10,0x56,0x82,0x88,0x38, 899 if (tv->P_len > 0 && memcmp(out, tv->P, out_len)) {
282 0xc5,0xf6,0x1e,0x63,0x93,0xba,0x7a,0x0a,0xbc,0xc9,0xf6,0x62,0x89,0x80,0x15,0xad}, 900 fprintf(stderr, "TEST %i: decrypt failed\n", test_no);
283 T19[]= {0x5f,0xea,0x79,0x3a,0x2d,0x6f,0x97,0x4d,0x37,0xe6,0x8e,0x0c,0xb8,0xff,0x94,0x92}; 901 goto fail;
902 }
284 903
285/* Test Case 20 */ 904 ret = 0;
286#define K20 K1
287#define A20 A1
288static const u8 IV20[64]={0xff,0xff,0xff,0xff}, /* this results in 0xff in counter LSB */
289 P20[288],
290 C20[]= {0x56,0xb3,0x37,0x3c,0xa9,0xef,0x6e,0x4a,0x2b,0x64,0xfe,0x1e,0x9a,0x17,0xb6,0x14,
291 0x25,0xf1,0x0d,0x47,0xa7,0x5a,0x5f,0xce,0x13,0xef,0xc6,0xbc,0x78,0x4a,0xf2,0x4f,
292 0x41,0x41,0xbd,0xd4,0x8c,0xf7,0xc7,0x70,0x88,0x7a,0xfd,0x57,0x3c,0xca,0x54,0x18,
293 0xa9,0xae,0xff,0xcd,0x7c,0x5c,0xed,0xdf,0xc6,0xa7,0x83,0x97,0xb9,0xa8,0x5b,0x49,
294 0x9d,0xa5,0x58,0x25,0x72,0x67,0xca,0xab,0x2a,0xd0,0xb2,0x3c,0xa4,0x76,0xa5,0x3c,
295 0xb1,0x7f,0xb4,0x1c,0x4b,0x8b,0x47,0x5c,0xb4,0xf3,0xf7,0x16,0x50,0x94,0xc2,0x29,
296 0xc9,0xe8,0xc4,0xdc,0x0a,0x2a,0x5f,0xf1,0x90,0x3e,0x50,0x15,0x11,0x22,0x13,0x76,
297 0xa1,0xcd,0xb8,0x36,0x4c,0x50,0x61,0xa2,0x0c,0xae,0x74,0xbc,0x4a,0xcd,0x76,0xce,
298 0xb0,0xab,0xc9,0xfd,0x32,0x17,0xef,0x9f,0x8c,0x90,0xbe,0x40,0x2d,0xdf,0x6d,0x86,
299 0x97,0xf4,0xf8,0x80,0xdf,0xf1,0x5b,0xfb,0x7a,0x6b,0x28,0x24,0x1e,0xc8,0xfe,0x18,
300 0x3c,0x2d,0x59,0xe3,0xf9,0xdf,0xff,0x65,0x3c,0x71,0x26,0xf0,0xac,0xb9,0xe6,0x42,
301 0x11,0xf4,0x2b,0xae,0x12,0xaf,0x46,0x2b,0x10,0x70,0xbe,0xf1,0xab,0x5e,0x36,0x06,
302 0x87,0x2c,0xa1,0x0d,0xee,0x15,0xb3,0x24,0x9b,0x1a,0x1b,0x95,0x8f,0x23,0x13,0x4c,
303 0x4b,0xcc,0xb7,0xd0,0x32,0x00,0xbc,0xe4,0x20,0xa2,0xf8,0xeb,0x66,0xdc,0xf3,0x64,
304 0x4d,0x14,0x23,0xc1,0xb5,0x69,0x90,0x03,0xc1,0x3e,0xce,0xf4,0xbf,0x38,0xa3,0xb6,
305 0x0e,0xed,0xc3,0x40,0x33,0xba,0xc1,0x90,0x27,0x83,0xdc,0x6d,0x89,0xe2,0xe7,0x74,
306 0x18,0x8a,0x43,0x9c,0x7e,0xbc,0xc0,0x67,0x2d,0xbd,0xa4,0xdd,0xcf,0xb2,0x79,0x46,
307 0x13,0xb0,0xbe,0x41,0x31,0x5e,0xf7,0x78,0x70,0x8a,0x70,0xee,0x7d,0x75,0x16,0x5c},
308 T20[]= {0x8b,0x30,0x7f,0x6b,0x33,0x28,0x6d,0x0a,0xb0,0x26,0xa9,0xed,0x3f,0xe1,0xe8,0x5f};
309 905
310#define TEST_CASE(n) do { \ 906fail:
311 u8 out[sizeof(P##n)]; \ 907 free(out);
312 AES_set_encrypt_key(K##n,sizeof(K##n)*8,&key); \ 908 return (ret);
313 CRYPTO_gcm128_init(&ctx,&key,(block128_f)AES_encrypt); \ 909}
314 CRYPTO_gcm128_setiv(&ctx,IV##n,sizeof(IV##n)); \
315 memset(out,0,sizeof(out)); \
316 if (A##n) CRYPTO_gcm128_aad(&ctx,A##n,sizeof(A##n)); \
317 if (P##n) CRYPTO_gcm128_encrypt(&ctx,P##n,out,sizeof(out)); \
318 if (CRYPTO_gcm128_finish(&ctx,T##n,16) || \
319 (C##n && memcmp(out,C##n,sizeof(out)))) \
320 ret++, printf ("encrypt test#%d failed.\n",n); \
321 CRYPTO_gcm128_setiv(&ctx,IV##n,sizeof(IV##n)); \
322 memset(out,0,sizeof(out)); \
323 if (A##n) CRYPTO_gcm128_aad(&ctx,A##n,sizeof(A##n)); \
324 if (C##n) CRYPTO_gcm128_decrypt(&ctx,C##n,out,sizeof(out)); \
325 if (CRYPTO_gcm128_finish(&ctx,T##n,16) || \
326 (P##n && memcmp(out,P##n,sizeof(out)))) \
327 ret++, printf ("decrypt test#%d failed.\n",n); \
328 } while(0)
329 910
330int 911int
331main(int argc, char **argv) 912main(int argc, char **argv)
332{ 913{
333 GCM128_CONTEXT ctx; 914 int ret = 0;
334 AES_KEY key; 915 size_t i;
335 int ret=0;
336 916
337 TEST_CASE(1); 917 for (i = 0; i < N_TESTS; i++)
338 TEST_CASE(2); 918 ret |= do_gcm128_test(i + 1, &gcm128_tests[i]);
339 TEST_CASE(3);
340 TEST_CASE(4);
341 TEST_CASE(5);
342 TEST_CASE(6);
343 TEST_CASE(7);
344 TEST_CASE(8);
345 TEST_CASE(9);
346 TEST_CASE(10);
347 TEST_CASE(11);
348 TEST_CASE(12);
349 TEST_CASE(13);
350 TEST_CASE(14);
351 TEST_CASE(15);
352 TEST_CASE(16);
353 TEST_CASE(17);
354 TEST_CASE(18);
355 TEST_CASE(19);
356 TEST_CASE(20);
357 919
358 return ret; 920 return ret;
359} 921}