5869 Need AES CMAC support in KCF+PKCS11
[unleashed.git] / usr / src / test / crypto-tests / tests / modes / aes / gcm / aes_gcm.h
blob4537c64e21edd015ac2dea5af02a2435ae9e3fe3
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.
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.
13 * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
16 #ifndef _AES_GCM_H
17 #define _AES_GCM_H
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
24 * Test vectors
25 * NIST, "The Galois/Counter Mode of Operation (GCM)", Appendix B
26 * http://csrc.nist.gov/groups/ST/toolkit/
27 * BCM/documents/proposedmodes/gcm/gcm-spec.pdf
30 uint8_t GCM_KEY0[] = {
31 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
32 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35 #define GCM_DATA0 NULL
37 #define GCM_AUTH0 NULL
39 uint8_t GCM_IV0[] = {
40 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
41 0x00, 0x00, 0x00, 0x00,
44 uint8_t GCM_RES0[] = {
45 0x58, 0xe2, 0xfc, 0xce, 0xfa, 0x7e, 0x30, 0x61,
46 0x36, 0x7f, 0x1d, 0x57, 0xa4, 0xe7, 0x45, 0x5a,
49 uint8_t GCM_KEY1[] = {
50 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
54 uint8_t GCM_DATA1[] = {
55 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
56 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
59 #define GCM_AUTH1 NULL
61 uint8_t GCM_IV1[] = {
62 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
63 0x00, 0x00, 0x00, 0x00,
66 uint8_t GCM_RES1[] = {
67 0x03, 0x88, 0xda, 0xce, 0x60, 0xb6, 0xa3, 0x92,
68 0xf3, 0x28, 0xc2, 0xb9, 0x71, 0xb2, 0xfe, 0x78,
69 0xab, 0x6e, 0x47, 0xd4, 0x2c, 0xec, 0x13, 0xbd,
70 0xf5, 0x3a, 0x67, 0xb2, 0x12, 0x57, 0xbd, 0xdf,
73 uint8_t GCM_KEY2[] = {
74 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
75 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
78 uint8_t GCM_DATA2[] = {
79 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
80 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
81 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
82 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
83 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
84 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
85 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
86 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55,
89 #define GCM_AUTH2 NULL
91 uint8_t GCM_IV2[] = {
92 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
93 0xde, 0xca, 0xf8, 0x88,
96 uint8_t GCM_RES2[] = {
97 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24,
98 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c,
99 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0,
100 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e,
101 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c,
102 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05,
103 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97,
104 0x3d, 0x58, 0xe0, 0x91, 0x47, 0x3f, 0x59, 0x85,
105 0x4d, 0x5c, 0x2a, 0xf3, 0x27, 0xcd, 0x64, 0xa6,
106 0x2c, 0xf3, 0x5a, 0xbd, 0x2b, 0xa6, 0xfa, 0xb4,
109 uint8_t GCM_KEY3[] = {
110 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
111 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
114 uint8_t GCM_DATA3[] = {
115 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
116 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
117 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
118 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
119 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
120 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
121 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
122 0xba, 0x63, 0x7b, 0x39,
125 uint8_t GCM_AUTH3[] = {
126 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
127 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
128 0xab, 0xad, 0xda, 0xd2,
131 uint8_t GCM_IV3[] = {
132 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
133 0xde, 0xca, 0xf8, 0x88,
136 uint8_t GCM_RES3[] = {
137 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24,
138 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c,
139 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0,
140 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e,
141 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c,
142 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05,
143 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97,
144 0x3d, 0x58, 0xe0, 0x91, 0x5b, 0xc9, 0x4f, 0xbc,
145 0x32, 0x21, 0xa5, 0xdb, 0x94, 0xfa, 0xe9, 0x5a,
146 0xe7, 0x12, 0x1a, 0x47,
149 uint8_t GCM_KEY4[] = {
150 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
151 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
154 uint8_t GCM_DATA4[] = {
155 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
156 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
157 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
158 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
159 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
160 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
161 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
162 0xba, 0x63, 0x7b, 0x39,
165 uint8_t GCM_AUTH4[] = {
166 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
167 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
168 0xab, 0xad, 0xda, 0xd2,
171 uint8_t GCM_IV4[] = {
172 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
175 uint8_t GCM_RES4[] = {
176 0x61, 0x35, 0x3b, 0x4c, 0x28, 0x06, 0x93, 0x4a,
177 0x77, 0x7f, 0xf5, 0x1f, 0xa2, 0x2a, 0x47, 0x55,
178 0x69, 0x9b, 0x2a, 0x71, 0x4f, 0xcd, 0xc6, 0xf8,
179 0x37, 0x66, 0xe5, 0xf9, 0x7b, 0x6c, 0x74, 0x23,
180 0x73, 0x80, 0x69, 0x00, 0xe4, 0x9f, 0x24, 0xb2,
181 0x2b, 0x09, 0x75, 0x44, 0xd4, 0x89, 0x6b, 0x42,
182 0x49, 0x89, 0xb5, 0xe1, 0xeb, 0xac, 0x0f, 0x07,
183 0xc2, 0x3f, 0x45, 0x98, 0x36, 0x12, 0xd2, 0xe7,
184 0x9e, 0x3b, 0x07, 0x85, 0x56, 0x1b, 0xe1, 0x4a,
185 0xac, 0xa2, 0xfc, 0xcb,
188 uint8_t GCM_KEY5[] = {
189 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
190 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
193 uint8_t GCM_DATA5[] = {
194 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
195 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
196 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
197 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
198 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
199 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
200 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
201 0xba, 0x63, 0x7b, 0x39,
204 uint8_t GCM_AUTH5[] = {
205 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
206 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
207 0xab, 0xad, 0xda, 0xd2,
210 uint8_t GCM_IV5[] = {
211 0x93, 0x13, 0x22, 0x5d, 0xf8, 0x84, 0x06, 0xe5,
212 0x55, 0x90, 0x9c, 0x5a, 0xff, 0x52, 0x69, 0xaa,
213 0x6a, 0x7a, 0x95, 0x38, 0x53, 0x4f, 0x7d, 0xa1,
214 0xe4, 0xc3, 0x03, 0xd2, 0xa3, 0x18, 0xa7, 0x28,
215 0xc3, 0xc0, 0xc9, 0x51, 0x56, 0x80, 0x95, 0x39,
216 0xfc, 0xf0, 0xe2, 0x42, 0x9a, 0x6b, 0x52, 0x54,
217 0x16, 0xae, 0xdb, 0xf5, 0xa0, 0xde, 0x6a, 0x57,
218 0xa6, 0x37, 0xb3, 0x9b,
221 uint8_t GCM_RES5[] = {
222 0x8c, 0xe2, 0x49, 0x98, 0x62, 0x56, 0x15, 0xb6,
223 0x03, 0xa0, 0x33, 0xac, 0xa1, 0x3f, 0xb8, 0x94,
224 0xbe, 0x91, 0x12, 0xa5, 0xc3, 0xa2, 0x11, 0xa8,
225 0xba, 0x26, 0x2a, 0x3c, 0xca, 0x7e, 0x2c, 0xa7,
226 0x01, 0xe4, 0xa9, 0xa4, 0xfb, 0xa4, 0x3c, 0x90,
227 0xcc, 0xdc, 0xb2, 0x81, 0xd4, 0x8c, 0x7c, 0x6f,
228 0xd6, 0x28, 0x75, 0xd2, 0xac, 0xa4, 0x17, 0x03,
229 0x4c, 0x34, 0xae, 0xe5, 0x61, 0x9c, 0xc5, 0xae,
230 0xff, 0xfe, 0x0b, 0xfa, 0x46, 0x2a, 0xf4, 0x3c,
231 0x16, 0x99, 0xd0, 0x50,
234 uint8_t GCM_KEY6[] = {
235 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
236 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
237 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
240 #define GCM_DATA6 NULL
242 #define GCM_AUTH6 NULL
244 uint8_t GCM_IV6[] = {
245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
246 0x00, 0x00, 0x00, 0x00,
249 uint8_t GCM_RES6[] = {
250 0xcd, 0x33, 0xb2, 0x8a, 0xc7, 0x73, 0xf7, 0x4b,
251 0xa0, 0x0e, 0xd1, 0xf3, 0x12, 0x57, 0x24, 0x35,
254 uint8_t GCM_KEY7[] = {
255 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
256 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
257 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
260 uint8_t GCM_DATA7[] = {
261 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
262 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
265 #define GCM_AUTH7 NULL
267 uint8_t GCM_IV7[] = {
268 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
269 0x00, 0x00, 0x00, 0x00,
272 uint8_t GCM_RES7[] = {
273 0x98, 0xe7, 0x24, 0x7c, 0x07, 0xf0, 0xfe, 0x41,
274 0x1c, 0x26, 0x7e, 0x43, 0x84, 0xb0, 0xf6, 0x00,
275 0x2f, 0xf5, 0x8d, 0x80, 0x03, 0x39, 0x27, 0xab,
276 0x8e, 0xf4, 0xd4, 0x58, 0x75, 0x14, 0xf0, 0xfb,
279 uint8_t GCM_KEY8[] = {
280 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
281 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
282 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
285 uint8_t GCM_DATA8[] = {
286 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
287 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
288 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
289 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
290 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
291 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
292 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
293 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55,
296 #define GCM_AUTH8 NULL
298 uint8_t GCM_IV8[] = {
299 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
300 0xde, 0xca, 0xf8, 0x88,
303 uint8_t GCM_RES8[] = {
304 0x39, 0x80, 0xca, 0x0b, 0x3c, 0x00, 0xe8, 0x41,
305 0xeb, 0x06, 0xfa, 0xc4, 0x87, 0x2a, 0x27, 0x57,
306 0x85, 0x9e, 0x1c, 0xea, 0xa6, 0xef, 0xd9, 0x84,
307 0x62, 0x85, 0x93, 0xb4, 0x0c, 0xa1, 0xe1, 0x9c,
308 0x7d, 0x77, 0x3d, 0x00, 0xc1, 0x44, 0xc5, 0x25,
309 0xac, 0x61, 0x9d, 0x18, 0xc8, 0x4a, 0x3f, 0x47,
310 0x18, 0xe2, 0x44, 0x8b, 0x2f, 0xe3, 0x24, 0xd9,
311 0xcc, 0xda, 0x27, 0x10, 0xac, 0xad, 0xe2, 0x56,
312 0x99, 0x24, 0xa7, 0xc8, 0x58, 0x73, 0x36, 0xbf,
313 0xb1, 0x18, 0x02, 0x4d, 0xb8, 0x67, 0x4a, 0x14,
316 uint8_t GCM_KEY9[] = {
317 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
318 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
319 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
322 uint8_t GCM_DATA9[] = {
323 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
324 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
325 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
326 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
327 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
328 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
329 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
330 0xba, 0x63, 0x7b, 0x39,
333 uint8_t GCM_AUTH9[] = {
334 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
335 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
336 0xab, 0xad, 0xda, 0xd2,
339 uint8_t GCM_IV9[] = {
340 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
341 0xde, 0xca, 0xf8, 0x88,
344 uint8_t GCM_RES9[] = {
345 0x39, 0x80, 0xca, 0x0b, 0x3c, 0x00, 0xe8, 0x41,
346 0xeb, 0x06, 0xfa, 0xc4, 0x87, 0x2a, 0x27, 0x57,
347 0x85, 0x9e, 0x1c, 0xea, 0xa6, 0xef, 0xd9, 0x84,
348 0x62, 0x85, 0x93, 0xb4, 0x0c, 0xa1, 0xe1, 0x9c,
349 0x7d, 0x77, 0x3d, 0x00, 0xc1, 0x44, 0xc5, 0x25,
350 0xac, 0x61, 0x9d, 0x18, 0xc8, 0x4a, 0x3f, 0x47,
351 0x18, 0xe2, 0x44, 0x8b, 0x2f, 0xe3, 0x24, 0xd9,
352 0xcc, 0xda, 0x27, 0x10, 0x25, 0x19, 0x49, 0x8e,
353 0x80, 0xf1, 0x47, 0x8f, 0x37, 0xba, 0x55, 0xbd,
354 0x6d, 0x27, 0x61, 0x8c,
357 uint8_t GCM_KEY10[] = {
358 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
359 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
360 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
363 uint8_t GCM_DATA10[] = {
364 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
365 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
366 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
367 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
368 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
369 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
370 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
371 0xba, 0x63, 0x7b, 0x39,
374 uint8_t GCM_AUTH10[] = {
375 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
376 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
377 0xab, 0xad, 0xda, 0xd2,
380 uint8_t GCM_IV10[] = {
381 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
384 uint8_t GCM_RES10[] = {
385 0x0f, 0x10, 0xf5, 0x99, 0xae, 0x14, 0xa1, 0x54,
386 0xed, 0x24, 0xb3, 0x6e, 0x25, 0x32, 0x4d, 0xb8,
387 0xc5, 0x66, 0x63, 0x2e, 0xf2, 0xbb, 0xb3, 0x4f,
388 0x83, 0x47, 0x28, 0x0f, 0xc4, 0x50, 0x70, 0x57,
389 0xfd, 0xdc, 0x29, 0xdf, 0x9a, 0x47, 0x1f, 0x75,
390 0xc6, 0x65, 0x41, 0xd4, 0xd4, 0xda, 0xd1, 0xc9,
391 0xe9, 0x3a, 0x19, 0xa5, 0x8e, 0x8b, 0x47, 0x3f,
392 0xa0, 0xf0, 0x62, 0xf7, 0x65, 0xdc, 0xc5, 0x7f,
393 0xcf, 0x62, 0x3a, 0x24, 0x09, 0x4f, 0xcc, 0xa4,
394 0x0d, 0x35, 0x33, 0xf8,
397 uint8_t GCM_KEY11[] = {
398 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
399 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
400 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
403 uint8_t GCM_DATA11[] = {
404 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
405 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
406 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
407 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
408 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
409 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
410 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
411 0xba, 0x63, 0x7b, 0x39,
414 uint8_t GCM_AUTH11[] = {
415 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
416 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
417 0xab, 0xad, 0xda, 0xd2,
420 uint8_t GCM_IV11[] = {
421 0x93, 0x13, 0x22, 0x5d, 0xf8, 0x84, 0x06, 0xe5,
422 0x55, 0x90, 0x9c, 0x5a, 0xff, 0x52, 0x69, 0xaa,
423 0x6a, 0x7a, 0x95, 0x38, 0x53, 0x4f, 0x7d, 0xa1,
424 0xe4, 0xc3, 0x03, 0xd2, 0xa3, 0x18, 0xa7, 0x28,
425 0xc3, 0xc0, 0xc9, 0x51, 0x56, 0x80, 0x95, 0x39,
426 0xfc, 0xf0, 0xe2, 0x42, 0x9a, 0x6b, 0x52, 0x54,
427 0x16, 0xae, 0xdb, 0xf5, 0xa0, 0xde, 0x6a, 0x57,
428 0xa6, 0x37, 0xb3, 0x9b,
431 uint8_t GCM_RES11[] = {
432 0xd2, 0x7e, 0x88, 0x68, 0x1c, 0xe3, 0x24, 0x3c,
433 0x48, 0x30, 0x16, 0x5a, 0x8f, 0xdc, 0xf9, 0xff,
434 0x1d, 0xe9, 0xa1, 0xd8, 0xe6, 0xb4, 0x47, 0xef,
435 0x6e, 0xf7, 0xb7, 0x98, 0x28, 0x66, 0x6e, 0x45,
436 0x81, 0xe7, 0x90, 0x12, 0xaf, 0x34, 0xdd, 0xd9,
437 0xe2, 0xf0, 0x37, 0x58, 0x9b, 0x29, 0x2d, 0xb3,
438 0xe6, 0x7c, 0x03, 0x67, 0x45, 0xfa, 0x22, 0xe7,
439 0xe9, 0xb7, 0x37, 0x3b, 0xdc, 0xf5, 0x66, 0xff,
440 0x29, 0x1c, 0x25, 0xbb, 0xb8, 0x56, 0x8f, 0xc3,
441 0xd3, 0x76, 0xa6, 0xd9,
444 uint8_t GCM_KEY12[] = {
445 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
446 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
447 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
448 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
451 #define GCM_DATA12 NULL
453 #define GCM_AUTH12 NULL
455 uint8_t GCM_IV12[] = {
456 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
457 0x00, 0x00, 0x00, 0x00,
460 uint8_t GCM_RES12[] = {
461 0x53, 0x0f, 0x8a, 0xfb, 0xc7, 0x45, 0x36, 0xb9,
462 0xa9, 0x63, 0xb4, 0xf1, 0xc4, 0xcb, 0x73, 0x8b,
465 uint8_t GCM_KEY13[] = {
466 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
467 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
468 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
469 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
472 uint8_t GCM_DATA13[] = {
473 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
474 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
477 #define GCM_AUTH13 NULL
479 uint8_t GCM_IV13[] = {
480 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
481 0x00, 0x00, 0x00, 0x00,
484 uint8_t GCM_RES13[] = {
485 0xce, 0xa7, 0x40, 0x3d, 0x4d, 0x60, 0x6b, 0x6e,
486 0x07, 0x4e, 0xc5, 0xd3, 0xba, 0xf3, 0x9d, 0x18,
487 0xd0, 0xd1, 0xc8, 0xa7, 0x99, 0x99, 0x6b, 0xf0,
488 0x26, 0x5b, 0x98, 0xb5, 0xd4, 0x8a, 0xb9, 0x19,
491 uint8_t GCM_KEY14[] = {
492 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
493 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
494 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
495 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
498 uint8_t GCM_DATA14[] = {
499 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
500 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
501 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
502 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
503 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
504 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
505 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
506 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55,
509 #define GCM_AUTH14 NULL
511 uint8_t GCM_IV14[] = {
512 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
513 0xde, 0xca, 0xf8, 0x88,
516 uint8_t GCM_RES14[] = {
517 0x52, 0x2d, 0xc1, 0xf0, 0x99, 0x56, 0x7d, 0x07,
518 0xf4, 0x7f, 0x37, 0xa3, 0x2a, 0x84, 0x42, 0x7d,
519 0x64, 0x3a, 0x8c, 0xdc, 0xbf, 0xe5, 0xc0, 0xc9,
520 0x75, 0x98, 0xa2, 0xbd, 0x25, 0x55, 0xd1, 0xaa,
521 0x8c, 0xb0, 0x8e, 0x48, 0x59, 0x0d, 0xbb, 0x3d,
522 0xa7, 0xb0, 0x8b, 0x10, 0x56, 0x82, 0x88, 0x38,
523 0xc5, 0xf6, 0x1e, 0x63, 0x93, 0xba, 0x7a, 0x0a,
524 0xbc, 0xc9, 0xf6, 0x62, 0x89, 0x80, 0x15, 0xad,
525 0xb0, 0x94, 0xda, 0xc5, 0xd9, 0x34, 0x71, 0xbd,
526 0xec, 0x1a, 0x50, 0x22, 0x70, 0xe3, 0xcc, 0x6c,
529 uint8_t GCM_KEY15[] = {
530 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
531 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
532 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
533 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
536 uint8_t GCM_DATA15[] = {
537 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
538 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
539 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
540 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
541 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
542 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
543 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
544 0xba, 0x63, 0x7b, 0x39,
547 uint8_t GCM_AUTH15[] = {
548 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
549 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
550 0xab, 0xad, 0xda, 0xd2,
553 uint8_t GCM_IV15[] = {
554 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
555 0xde, 0xca, 0xf8, 0x88,
558 uint8_t GCM_RES15[] = {
559 0x52, 0x2d, 0xc1, 0xf0, 0x99, 0x56, 0x7d, 0x07,
560 0xf4, 0x7f, 0x37, 0xa3, 0x2a, 0x84, 0x42, 0x7d,
561 0x64, 0x3a, 0x8c, 0xdc, 0xbf, 0xe5, 0xc0, 0xc9,
562 0x75, 0x98, 0xa2, 0xbd, 0x25, 0x55, 0xd1, 0xaa,
563 0x8c, 0xb0, 0x8e, 0x48, 0x59, 0x0d, 0xbb, 0x3d,
564 0xa7, 0xb0, 0x8b, 0x10, 0x56, 0x82, 0x88, 0x38,
565 0xc5, 0xf6, 0x1e, 0x63, 0x93, 0xba, 0x7a, 0x0a,
566 0xbc, 0xc9, 0xf6, 0x62, 0x76, 0xfc, 0x6e, 0xce,
567 0x0f, 0x4e, 0x17, 0x68, 0xcd, 0xdf, 0x88, 0x53,
568 0xbb, 0x2d, 0x55, 0x1b,
571 uint8_t GCM_KEY16[] = {
572 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
573 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
574 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
575 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
578 uint8_t GCM_DATA16[] = {
579 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
580 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
581 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
582 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
583 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
584 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
585 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
586 0xba, 0x63, 0x7b, 0x39,
589 uint8_t GCM_AUTH16[] = {
590 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
591 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
592 0xab, 0xad, 0xda, 0xd2,
595 uint8_t GCM_IV16[] = {
596 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
599 uint8_t GCM_RES16[] = {
600 0xc3, 0x76, 0x2d, 0xf1, 0xca, 0x78, 0x7d, 0x32,
601 0xae, 0x47, 0xc1, 0x3b, 0xf1, 0x98, 0x44, 0xcb,
602 0xaf, 0x1a, 0xe1, 0x4d, 0x0b, 0x97, 0x6a, 0xfa,
603 0xc5, 0x2f, 0xf7, 0xd7, 0x9b, 0xba, 0x9d, 0xe0,
604 0xfe, 0xb5, 0x82, 0xd3, 0x39, 0x34, 0xa4, 0xf0,
605 0x95, 0x4c, 0xc2, 0x36, 0x3b, 0xc7, 0x3f, 0x78,
606 0x62, 0xac, 0x43, 0x0e, 0x64, 0xab, 0xe4, 0x99,
607 0xf4, 0x7c, 0x9b, 0x1f, 0x3a, 0x33, 0x7d, 0xbf,
608 0x46, 0xa7, 0x92, 0xc4, 0x5e, 0x45, 0x49, 0x13,
609 0xfe, 0x2e, 0xa8, 0xf2,
612 uint8_t GCM_KEY17[] = {
613 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
614 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
615 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
616 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
619 uint8_t GCM_DATA17[] = {
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,
630 uint8_t GCM_AUTH17[] = {
631 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
632 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
633 0xab, 0xad, 0xda, 0xd2,
636 uint8_t GCM_IV17[] = {
637 0x93, 0x13, 0x22, 0x5d, 0xf8, 0x84, 0x06, 0xe5,
638 0x55, 0x90, 0x9c, 0x5a, 0xff, 0x52, 0x69, 0xaa,
639 0x6a, 0x7a, 0x95, 0x38, 0x53, 0x4f, 0x7d, 0xa1,
640 0xe4, 0xc3, 0x03, 0xd2, 0xa3, 0x18, 0xa7, 0x28,
641 0xc3, 0xc0, 0xc9, 0x51, 0x56, 0x80, 0x95, 0x39,
642 0xfc, 0xf0, 0xe2, 0x42, 0x9a, 0x6b, 0x52, 0x54,
643 0x16, 0xae, 0xdb, 0xf5, 0xa0, 0xde, 0x6a, 0x57,
644 0xa6, 0x37, 0xb3, 0x9b,
647 uint8_t GCM_RES17[] = {
648 0x5a, 0x8d, 0xef, 0x2f, 0x0c, 0x9e, 0x53, 0xf1,
649 0xf7, 0x5d, 0x78, 0x53, 0x65, 0x9e, 0x2a, 0x20,
650 0xee, 0xb2, 0xb2, 0x2a, 0xaf, 0xde, 0x64, 0x19,
651 0xa0, 0x58, 0xab, 0x4f, 0x6f, 0x74, 0x6b, 0xf4,
652 0x0f, 0xc0, 0xc3, 0xb7, 0x80, 0xf2, 0x44, 0x45,
653 0x2d, 0xa3, 0xeb, 0xf1, 0xc5, 0xd8, 0x2c, 0xde,
654 0xa2, 0x41, 0x89, 0x97, 0x20, 0x0e, 0xf8, 0x2e,
655 0x44, 0xae, 0x7e, 0x3f, 0xa4, 0x4a, 0x82, 0x66,
656 0xee, 0x1c, 0x8e, 0xb0, 0xc8, 0xb5, 0xd4, 0xcf,
657 0x5a, 0xe9, 0xf1, 0x9a,
661 uint8_t *DATA[] = {
662 GCM_DATA0, GCM_DATA1, GCM_DATA2, GCM_DATA3, GCM_DATA4, GCM_DATA5,
663 GCM_DATA6, GCM_DATA7, GCM_DATA8, GCM_DATA9, GCM_DATA10, GCM_DATA11,
664 GCM_DATA12, GCM_DATA13, GCM_DATA14, GCM_DATA15, GCM_DATA16, GCM_DATA17,
667 size_t DATALEN[] = {
668 0, sizeof (GCM_DATA1), sizeof (GCM_DATA2), sizeof (GCM_DATA3),
669 sizeof (GCM_DATA4), sizeof (GCM_DATA5), 0, sizeof (GCM_DATA7),
670 sizeof (GCM_DATA8), sizeof (GCM_DATA9), sizeof (GCM_DATA10),
671 sizeof (GCM_DATA11), 0, sizeof (GCM_DATA13), sizeof (GCM_DATA14),
672 sizeof (GCM_DATA15), sizeof (GCM_DATA16),
673 sizeof (GCM_DATA17),
676 uint8_t *RES[] = {
677 GCM_RES0, GCM_RES1, GCM_RES2, GCM_RES3, GCM_RES4, GCM_RES5,
678 GCM_RES6, GCM_RES7, GCM_RES8, GCM_RES9, GCM_RES10, GCM_RES11,
679 GCM_RES12, GCM_RES13, GCM_RES14, GCM_RES15, GCM_RES16, GCM_RES17,
682 size_t RESLEN[] = {
683 sizeof (GCM_RES0), sizeof (GCM_RES1), sizeof (GCM_RES2),
684 sizeof (GCM_RES3), sizeof (GCM_RES4), sizeof (GCM_RES5),
685 sizeof (GCM_RES6), sizeof (GCM_RES7), sizeof (GCM_RES8),
686 sizeof (GCM_RES9), sizeof (GCM_RES10), sizeof (GCM_RES11),
687 sizeof (GCM_RES12), sizeof (GCM_RES13), sizeof (GCM_RES14),
688 sizeof (GCM_RES15), sizeof (GCM_RES16), sizeof (GCM_RES17),
691 uint8_t *IV[] = {
692 GCM_IV0, GCM_IV1, GCM_IV2, GCM_IV3, GCM_IV4, GCM_IV5,
693 GCM_IV6, GCM_IV7, GCM_IV8, GCM_IV9, GCM_IV10, GCM_IV11,
694 GCM_IV12, GCM_IV13, GCM_IV14, GCM_IV15, GCM_IV16, GCM_IV17,
697 size_t IVLEN[] = {
698 sizeof (GCM_IV0), sizeof (GCM_IV1), sizeof (GCM_IV2),
699 sizeof (GCM_IV3), sizeof (GCM_IV4), sizeof (GCM_IV5),
700 sizeof (GCM_IV6), sizeof (GCM_IV7), sizeof (GCM_IV8),
701 sizeof (GCM_IV9), sizeof (GCM_IV10), sizeof (GCM_IV11),
702 sizeof (GCM_IV12), sizeof (GCM_IV13), sizeof (GCM_IV14),
703 sizeof (GCM_IV15), sizeof (GCM_IV16), sizeof (GCM_IV17),
706 uint8_t *AUTH[] = {
707 GCM_AUTH0, GCM_AUTH1, GCM_AUTH2, GCM_AUTH3, GCM_AUTH4, GCM_AUTH5,
708 GCM_AUTH6, GCM_AUTH7, GCM_AUTH8, GCM_AUTH9, GCM_AUTH10, GCM_AUTH11,
709 GCM_AUTH12, GCM_AUTH13, GCM_AUTH14, GCM_AUTH15, GCM_AUTH16, GCM_AUTH17,
712 size_t AUTHLEN[] = {
713 0, 0, 0, sizeof (GCM_AUTH3), sizeof (GCM_AUTH4), sizeof (GCM_AUTH5),
714 0, 0, 0, sizeof (GCM_AUTH9), sizeof (GCM_AUTH10), sizeof (GCM_AUTH11),
715 0, 0, 0, sizeof (GCM_AUTH15), sizeof (GCM_AUTH16), sizeof (GCM_AUTH17),
718 uint8_t *KEY[] = {
719 GCM_KEY0, GCM_KEY1, GCM_KEY2, GCM_KEY3, GCM_KEY4, GCM_KEY5,
720 GCM_KEY6, GCM_KEY7, GCM_KEY8, GCM_KEY9, GCM_KEY10, GCM_KEY11,
721 GCM_KEY12, GCM_KEY13, GCM_KEY14, GCM_KEY15, GCM_KEY16, GCM_KEY17,
724 size_t KEYLEN[] = {
725 sizeof (GCM_KEY0), sizeof (GCM_KEY1), sizeof (GCM_KEY2),
726 sizeof (GCM_KEY3), sizeof (GCM_KEY4), sizeof (GCM_KEY5),
727 sizeof (GCM_KEY6), sizeof (GCM_KEY7), sizeof (GCM_KEY8),
728 sizeof (GCM_KEY9), sizeof (GCM_KEY10), sizeof (GCM_KEY11),
729 sizeof (GCM_KEY12), sizeof (GCM_KEY13), sizeof (GCM_KEY14),
730 sizeof (GCM_KEY15), sizeof (GCM_KEY16), sizeof (GCM_KEY17),
733 #ifdef __cplusplus
735 #endif
737 #endif /* _AES_GCM_H */