Revert "Merge branch 'upstream' into tizen"
[platform/upstream/nettle.git] / testsuite / gcm-test.c
1 #include "testutils.h"
2 #include "aes.h"
3 #include "nettle-internal.h"
4
5 void
6 test_main(void)
7 {
8   /* 
9    * GCM-AES Test Vectors from
10    * http://www.cryptobarn.com/papers/gcm-spec.pdf
11    */
12
13   /* Test case 1 */
14   test_aead(&nettle_gcm_aes128,
15             SHEX("00000000000000000000000000000000"),   /* key */
16             SHEX(""),                                   /* auth data */ 
17             SHEX(""),                                   /* plaintext */
18             SHEX(""),                                   /* ciphertext*/
19             SHEX("000000000000000000000000"),           /* IV */
20             SHEX("58e2fccefa7e3061367f1d57a4e7455a"));  /* tag */
21
22   /* Test case 2 */
23   test_aead(&nettle_gcm_aes128,
24             SHEX("00000000000000000000000000000000"),
25             SHEX(""),
26             SHEX("00000000000000000000000000000000"),
27             SHEX("0388dace60b6a392f328c2b971b2fe78"),
28             SHEX("000000000000000000000000"),
29             SHEX("ab6e47d42cec13bdf53a67b21257bddf"));
30
31   /* Test case 3 */
32   test_aead(&nettle_gcm_aes128,
33             SHEX("feffe9928665731c6d6a8f9467308308"),
34             SHEX(""),
35             SHEX("d9313225f88406e5a55909c5aff5269a"
36                  "86a7a9531534f7da2e4c303d8a318a72"
37                  "1c3c0c95956809532fcf0e2449a6b525"
38                  "b16aedf5aa0de657ba637b391aafd255"),
39             SHEX("42831ec2217774244b7221b784d0d49c"
40                  "e3aa212f2c02a4e035c17e2329aca12e"
41                  "21d514b25466931c7d8f6a5aac84aa05"
42                  "1ba30b396a0aac973d58e091473f5985"),
43             SHEX("cafebabefacedbaddecaf888"),
44             SHEX("4d5c2af327cd64a62cf35abd2ba6fab4"));
45
46   /* Test case 4 */
47   test_aead(&nettle_gcm_aes128,
48             SHEX("feffe9928665731c6d6a8f9467308308"),
49             SHEX("feedfacedeadbeeffeedfacedeadbeef"
50                  "abaddad2"),
51             SHEX("d9313225f88406e5a55909c5aff5269a"
52                  "86a7a9531534f7da2e4c303d8a318a72"
53                  "1c3c0c95956809532fcf0e2449a6b525"
54                  "b16aedf5aa0de657ba637b39"),
55             SHEX("42831ec2217774244b7221b784d0d49c"
56                  "e3aa212f2c02a4e035c17e2329aca12e"
57                  "21d514b25466931c7d8f6a5aac84aa05"
58                  "1ba30b396a0aac973d58e091"),
59             SHEX("cafebabefacedbaddecaf888"),
60             SHEX("5bc94fbc3221a5db94fae95ae7121a47"));
61
62   /* Test case 5 */
63   test_aead(&nettle_gcm_aes128,
64             SHEX("feffe9928665731c6d6a8f9467308308"),
65             SHEX("feedfacedeadbeeffeedfacedeadbeef"
66                  "abaddad2"),
67             SHEX("d9313225f88406e5a55909c5aff5269a"
68                  "86a7a9531534f7da2e4c303d8a318a72"
69                  "1c3c0c95956809532fcf0e2449a6b525"
70                  "b16aedf5aa0de657ba637b39"),
71             SHEX("61353b4c2806934a777ff51fa22a4755"
72                  "699b2a714fcdc6f83766e5f97b6c7423"
73                  "73806900e49f24b22b097544d4896b42"
74                  "4989b5e1ebac0f07c23f4598"),
75             SHEX("cafebabefacedbad"),
76             SHEX("3612d2e79e3b0785561be14aaca2fccb"));
77
78   /* Test case 6 */
79   test_aead(&nettle_gcm_aes128,
80             SHEX("feffe9928665731c6d6a8f9467308308"),
81             SHEX("feedfacedeadbeeffeedfacedeadbeef"
82                  "abaddad2"),
83             SHEX("d9313225f88406e5a55909c5aff5269a"
84                  "86a7a9531534f7da2e4c303d8a318a72"
85                  "1c3c0c95956809532fcf0e2449a6b525"
86                  "b16aedf5aa0de657ba637b39"),
87             SHEX("8ce24998625615b603a033aca13fb894"
88                  "be9112a5c3a211a8ba262a3cca7e2ca7"
89                  "01e4a9a4fba43c90ccdcb281d48c7c6f"
90                  "d62875d2aca417034c34aee5"),
91             SHEX("9313225df88406e555909c5aff5269aa"
92                  "6a7a9538534f7da1e4c303d2a318a728"
93                  "c3c0c95156809539fcf0e2429a6b5254"
94                  "16aedbf5a0de6a57a637b39b"),
95             SHEX("619cc5aefffe0bfa462af43c1699d050"));
96   
97   /* Test case 7 */
98   test_aead(&nettle_gcm_aes128,
99             SHEX("00000000000000000000000000000000"
100                  "0000000000000000"),
101             SHEX(""),
102             SHEX(""),
103             SHEX(""),
104             SHEX("000000000000000000000000"),
105             SHEX("cd33b28ac773f74ba00ed1f312572435"));
106
107   /* Test case 8 */
108   test_aead(&nettle_gcm_aes128,
109             SHEX("00000000000000000000000000000000"
110                  "0000000000000000"),
111             SHEX(""),
112             SHEX("00000000000000000000000000000000"),
113             SHEX("98e7247c07f0fe411c267e4384b0f600"),
114             SHEX("000000000000000000000000"),
115             SHEX("2ff58d80033927ab8ef4d4587514f0fb"));
116
117   /* Test case 9 */
118   test_aead(&nettle_gcm_aes128,
119             SHEX("feffe9928665731c6d6a8f9467308308"
120                  "feffe9928665731c"),
121             SHEX(""),
122             SHEX("d9313225f88406e5a55909c5aff5269a"
123                  "86a7a9531534f7da2e4c303d8a318a72"
124                  "1c3c0c95956809532fcf0e2449a6b525"
125                  "b16aedf5aa0de657ba637b391aafd255"),
126             SHEX("3980ca0b3c00e841eb06fac4872a2757"
127                  "859e1ceaa6efd984628593b40ca1e19c"
128                  "7d773d00c144c525ac619d18c84a3f47"
129                  "18e2448b2fe324d9ccda2710acade256"),
130             SHEX("cafebabefacedbaddecaf888"),
131             SHEX("9924a7c8587336bfb118024db8674a14"));
132
133   /* Test case 10 */
134   test_aead(&nettle_gcm_aes128,
135             SHEX("feffe9928665731c6d6a8f9467308308"
136                  "feffe9928665731c"),
137             SHEX("feedfacedeadbeeffeedfacedeadbeef"
138                  "abaddad2"),
139             SHEX("d9313225f88406e5a55909c5aff5269a"
140                  "86a7a9531534f7da2e4c303d8a318a72"
141                  "1c3c0c95956809532fcf0e2449a6b525"
142                  "b16aedf5aa0de657ba637b39"),
143             SHEX("3980ca0b3c00e841eb06fac4872a2757"
144                  "859e1ceaa6efd984628593b40ca1e19c"
145                  "7d773d00c144c525ac619d18c84a3f47"
146                  "18e2448b2fe324d9ccda2710"),
147             SHEX("cafebabefacedbaddecaf888"),
148             SHEX("2519498e80f1478f37ba55bd6d27618c"));
149
150   /* Test case 11 */
151   test_aead(&nettle_gcm_aes128,
152             SHEX("feffe9928665731c6d6a8f9467308308"
153                  "feffe9928665731c"),
154             SHEX("feedfacedeadbeeffeedfacedeadbeef"
155                  "abaddad2"),
156             SHEX("d9313225f88406e5a55909c5aff5269a"
157                  "86a7a9531534f7da2e4c303d8a318a72"
158                  "1c3c0c95956809532fcf0e2449a6b525"
159                  "b16aedf5aa0de657ba637b39"),
160             SHEX("0f10f599ae14a154ed24b36e25324db8"
161                  "c566632ef2bbb34f8347280fc4507057"
162                  "fddc29df9a471f75c66541d4d4dad1c9"
163                  "e93a19a58e8b473fa0f062f7"),
164             SHEX("cafebabefacedbad"),
165             SHEX("65dcc57fcf623a24094fcca40d3533f8"));
166
167   /* Test case 12 */
168   test_aead(&nettle_gcm_aes128,
169             SHEX("feffe9928665731c6d6a8f9467308308"
170                  "feffe9928665731c"),
171             SHEX("feedfacedeadbeeffeedfacedeadbeef"
172                  "abaddad2"),
173             SHEX("d9313225f88406e5a55909c5aff5269a"
174                  "86a7a9531534f7da2e4c303d8a318a72"
175                  "1c3c0c95956809532fcf0e2449a6b525"
176                  "b16aedf5aa0de657ba637b39"),
177             SHEX("d27e88681ce3243c4830165a8fdcf9ff"
178                  "1de9a1d8e6b447ef6ef7b79828666e45"
179                  "81e79012af34ddd9e2f037589b292db3"
180                  "e67c036745fa22e7e9b7373b"),
181             SHEX("9313225df88406e555909c5aff5269aa"
182                  "6a7a9538534f7da1e4c303d2a318a728"
183                  "c3c0c95156809539fcf0e2429a6b5254"
184                  "16aedbf5a0de6a57a637b39b"),
185             SHEX("dcf566ff291c25bbb8568fc3d376a6d9"));
186
187   /* Test case 13 */
188   test_aead(&nettle_gcm_aes128,
189             SHEX("00000000000000000000000000000000"
190                  "00000000000000000000000000000000"),
191             SHEX(""),
192             SHEX(""),
193             SHEX(""),
194             SHEX("000000000000000000000000"),
195             SHEX("530f8afbc74536b9a963b4f1c4cb738b"));
196
197   /* Test case 14 */
198   test_aead(&nettle_gcm_aes128,
199             SHEX("00000000000000000000000000000000"
200                  "00000000000000000000000000000000"),
201             SHEX(""),
202             SHEX("00000000000000000000000000000000"),
203             SHEX("cea7403d4d606b6e074ec5d3baf39d18"),
204             SHEX("000000000000000000000000"),
205             SHEX("d0d1c8a799996bf0265b98b5d48ab919"));
206
207   /* Test case 15 */
208   test_aead(&nettle_gcm_aes128,
209             SHEX("feffe9928665731c6d6a8f9467308308"
210                  "feffe9928665731c6d6a8f9467308308"),
211             SHEX(""),
212             SHEX("d9313225f88406e5a55909c5aff5269a"
213                  "86a7a9531534f7da2e4c303d8a318a72"
214                  "1c3c0c95956809532fcf0e2449a6b525"
215                  "b16aedf5aa0de657ba637b391aafd255"),
216             SHEX("522dc1f099567d07f47f37a32a84427d"
217                  "643a8cdcbfe5c0c97598a2bd2555d1aa"
218                  "8cb08e48590dbb3da7b08b1056828838"
219                  "c5f61e6393ba7a0abcc9f662898015ad"),
220             SHEX("cafebabefacedbaddecaf888"),
221             SHEX("b094dac5d93471bdec1a502270e3cc6c"));
222
223   /* Test case 16 */
224   test_aead(&nettle_gcm_aes128,
225             SHEX("feffe9928665731c6d6a8f9467308308"
226                  "feffe9928665731c6d6a8f9467308308"),
227             SHEX("feedfacedeadbeeffeedfacedeadbeef"
228                  "abaddad2"),
229             SHEX("d9313225f88406e5a55909c5aff5269a"
230                  "86a7a9531534f7da2e4c303d8a318a72"
231                  "1c3c0c95956809532fcf0e2449a6b525"
232                  "b16aedf5aa0de657ba637b39"),
233             SHEX("522dc1f099567d07f47f37a32a84427d"
234                  "643a8cdcbfe5c0c97598a2bd2555d1aa"
235                  "8cb08e48590dbb3da7b08b1056828838"
236                  "c5f61e6393ba7a0abcc9f662"),
237             SHEX("cafebabefacedbaddecaf888"),
238             SHEX("76fc6ece0f4e1768cddf8853bb2d551b"));
239
240   /* Test case 17 */
241   test_aead(&nettle_gcm_aes128,
242             SHEX("feffe9928665731c6d6a8f9467308308"
243                  "feffe9928665731c6d6a8f9467308308"),
244             SHEX("feedfacedeadbeeffeedfacedeadbeef"
245                  "abaddad2"),
246             SHEX("d9313225f88406e5a55909c5aff5269a"
247                  "86a7a9531534f7da2e4c303d8a318a72"
248                  "1c3c0c95956809532fcf0e2449a6b525"
249                  "b16aedf5aa0de657ba637b39"),
250             SHEX("c3762df1ca787d32ae47c13bf19844cb"
251                  "af1ae14d0b976afac52ff7d79bba9de0"
252                  "feb582d33934a4f0954cc2363bc73f78"
253                  "62ac430e64abe499f47c9b1f"),
254             SHEX("cafebabefacedbad"),
255             SHEX("3a337dbf46a792c45e454913fe2ea8f2"));
256
257   /* Test case 18 */
258   test_aead(&nettle_gcm_aes128,
259             SHEX("feffe9928665731c6d6a8f9467308308"
260                  "feffe9928665731c6d6a8f9467308308"),
261             SHEX("feedfacedeadbeeffeedfacedeadbeef"
262                  "abaddad2"),
263             SHEX("d9313225f88406e5a55909c5aff5269a"
264                  "86a7a9531534f7da2e4c303d8a318a72"
265                  "1c3c0c95956809532fcf0e2449a6b525"
266                  "b16aedf5aa0de657ba637b39"),
267             SHEX("5a8def2f0c9e53f1f75d7853659e2a20"
268                  "eeb2b22aafde6419a058ab4f6f746bf4"
269                  "0fc0c3b780f244452da3ebf1c5d82cde"
270                  "a2418997200ef82e44ae7e3f"),
271             SHEX("9313225df88406e555909c5aff5269aa"
272                  "6a7a9538534f7da1e4c303d2a318a728"
273                  "c3c0c95156809539fcf0e2429a6b5254"
274                  "16aedbf5a0de6a57a637b39b"),
275             SHEX("a44a8266ee1c8eb0c8b5d4cf5ae9f19a"));
276 }
277