9ec5fbcf034b15a3555f620ae507daad39390be7
[dpdk.git] / app / test / test_cryptodev_aes_ctr_test_vectors.h
1 /*-
2  *   BSD LICENSE
3  *
4  *   Copyright(c) 2016 Intel Corporation. All rights reserved.
5  *
6  *   Redistribution and use in source and binary forms, with or without
7  *   modification, are permitted provided that the following conditions
8  *   are met:
9  *
10  *       * Redistributions of source code must retain the above copyright
11  *         notice, this list of conditions and the following disclaimer.
12  *       * Redistributions in binary form must reproduce the above copyright
13  *         notice, this list of conditions and the following disclaimer in
14  *         the documentation and/or other materials provided with the
15  *         distribution.
16  *       * Neither the name of Intel Corporation nor the names of its
17  *         contributors may be used to endorse or promote products derived
18  *         from this software without specific prior written permission.
19  *
20  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32
33 #ifndef TEST_CRYPTODEV_AES_CTR_TEST_VECTORS_H_
34 #define TEST_CRYPTODEV_AES_CTR_TEST_VECTORS_H_
35
36 struct aes_ctr_test_data {
37
38         struct {
39                 uint8_t data[64];
40                 unsigned len;
41         } key;
42
43         struct {
44                 uint8_t data[64] __rte_aligned(16);
45                 unsigned len;
46         } iv;
47
48         struct {
49                 uint8_t data[1024];
50                 unsigned len;
51         } plaintext;
52
53         struct {
54                 uint8_t data[1024];
55                 unsigned len;
56         } ciphertext;
57
58         struct {
59                 enum rte_crypto_auth_algorithm algo;
60                 uint8_t data[64];
61                 unsigned len;
62         } auth_key;
63
64         struct {
65                 uint8_t data[1024];
66                 unsigned len;
67         } digest;
68 };
69
70 /* CTR-AES128-Encrypt-SHA1 test vector */
71
72 static const struct aes_ctr_test_data aes_ctr_test_case_1 = {
73         .key = {
74                 .data = {
75                         0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
76                         0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
77                 },
78                 .len = 16
79         },
80         .iv = {
81                 .data = {
82                         0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
83                         0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
84                 },
85                 .len = 16
86         },
87         .plaintext = {
88                 .data = {
89                         0x6B, 0xC1, 0xBE, 0xE2, 0x2E, 0x40, 0x9F, 0x96,
90                         0xE9, 0x3D, 0x7E, 0x11, 0x73, 0x93, 0x17, 0x2A,
91                         0xAE, 0x2D, 0x8A, 0x57, 0x1E, 0x03, 0xAC, 0x9C,
92                         0x9E, 0xB7, 0x6F, 0xAC, 0x45, 0xAF, 0x8E, 0x51,
93                         0x30, 0xC8, 0x1C, 0x46, 0xA3, 0x5C, 0xE4, 0x11,
94                         0xE5, 0xFB, 0xC1, 0x19, 0x1A, 0x0A, 0x52, 0xEF,
95                         0xF6, 0x9F, 0x24, 0x45, 0xDF, 0x4F, 0x9B, 0x17,
96                         0xAD, 0x2B, 0x41, 0x7B, 0xE6, 0x6C, 0x37, 0x10
97                 },
98                 .len = 64
99         },
100         .ciphertext = {
101                 .data = {
102                         0x87, 0x4D, 0x61, 0x91, 0xB6, 0x20, 0xE3, 0x26,
103                         0x1B, 0xEF, 0x68, 0x64, 0x99, 0x0D, 0xB6, 0xCE,
104                         0x98, 0x06, 0xF6, 0x6B, 0x79, 0x70, 0xFD, 0xFF,
105                         0x86, 0x17, 0x18, 0x7B, 0xB9, 0xFF, 0xFD, 0xFF,
106                         0x5A, 0xE4, 0xDF, 0x3E, 0xDB, 0xD5, 0xD3, 0x5E,
107                         0x5B, 0x4F, 0x09, 0x02, 0x0D, 0xB0, 0x3E, 0xAB,
108                         0x1E, 0x03, 0x1D, 0xDA, 0x2F, 0xBE, 0x03, 0xD1,
109                         0x79, 0x21, 0x70, 0xA0, 0xF3, 0x00, 0x9C, 0xEE
110                 },
111                 .len = 64
112         },
113         .auth_key = {
114                 .algo = RTE_CRYPTO_AUTH_SHA1_HMAC,
115                 .data = {
116                         0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA,
117                         0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD,
118                         0xDE, 0xF4, 0xDE, 0xAD
119                 },
120                 .len = 20
121         },
122         .digest = {
123                 .data = {
124                         0x9B, 0x6F, 0x0C, 0x43, 0xF5, 0xC1, 0x3E, 0xB0,
125                         0xB1, 0x70, 0xB8, 0x2B, 0x33, 0x09, 0xD2, 0xB2,
126                         0x56, 0x20, 0xFB, 0xFE
127                 },
128                 /* Limitation of Multi-buffer library */
129                 .len = TRUNCATED_DIGEST_BYTE_LENGTH_SHA1
130         }
131 };
132
133 /** AES-192-XCBC Encrypt test vector */
134
135 static const struct aes_ctr_test_data aes_ctr_test_case_2 = {
136         .key = {
137                 .data = {
138                         0xCB, 0xC5, 0xED, 0x5B, 0xE7, 0x7C, 0xBD, 0x8C,
139                         0x50, 0xD9, 0x30, 0xF2, 0xB5, 0x6A, 0x0E, 0x5F,
140                         0xAA, 0xAE, 0xAD, 0xA2, 0x1F, 0x49, 0x52, 0xD4
141                 },
142                 .len = 24
143         },
144         .iv = {
145                 .data = {
146                         0x3F, 0x69, 0xA8, 0xCD, 0xE8, 0xF0, 0xEF, 0x40,
147                         0xB8, 0x7A, 0x4B, 0xED, 0x2B, 0xAF, 0xBF, 0x57
148                 },
149                 .len = 16
150         },
151         .plaintext = {
152                 .data = {
153                         0x01, 0x0F, 0x10, 0x1F, 0x20, 0x1C, 0x0E, 0xB8,
154                         0xFB, 0x5C, 0xCD, 0xCC, 0x1F, 0xF9, 0xAF, 0x0B,
155                         0x95, 0x03, 0x74, 0x99, 0x49, 0xE7, 0x62, 0x55,
156                         0xDA, 0xEA, 0x13, 0x20, 0x1D, 0xC6, 0xCC, 0xCC,
157                         0xD1, 0x70, 0x75, 0x47, 0x02, 0x2F, 0xFB, 0x86,
158                         0xBB, 0x6B, 0x23, 0xD2, 0xC9, 0x74, 0xD7, 0x7B,
159                         0x08, 0x03, 0x3B, 0x79, 0x39, 0xBB, 0x91, 0x29,
160                         0xDA, 0x14, 0x39, 0x8D, 0xFF, 0x81, 0x50, 0x96,
161                 },
162                 .len = 64
163         },
164         .ciphertext = {
165                 .data = {
166                         0x4A, 0x6C, 0xC8, 0xCC, 0x96, 0x2A, 0x13, 0x84,
167                         0x1C, 0x36, 0x88, 0xE9, 0xE5, 0x94, 0x70, 0xB2,
168                         0x14, 0x5B, 0x13, 0x80, 0xEA, 0xD8, 0x8D, 0x37,
169                         0xFD, 0x70, 0xA8, 0x83, 0xE8, 0x2B, 0x88, 0x1E,
170                         0xBA, 0x94, 0x3F, 0xF6, 0xB3, 0x1F, 0xDE, 0x34,
171                         0xF3, 0x5B, 0x80, 0xE9, 0xAB, 0xF5, 0x1C, 0x29,
172                         0xB6, 0xD9, 0x76, 0x2B, 0x06, 0xC6, 0x74, 0xF1,
173                         0x59, 0x5E, 0x9E, 0xA5, 0x7B, 0x2D, 0xD7, 0xF0
174                 },
175                 .len = 64
176         },
177         .auth_key = {
178                 .algo = RTE_CRYPTO_AUTH_AES_XCBC_MAC,
179                 .data = {
180                         0x87, 0x61, 0x54, 0x53, 0xC4, 0x6D, 0xDD, 0x51,
181                         0xE1, 0x9F, 0x86, 0x64, 0x39, 0x0A, 0xE6, 0x59
182                 },
183                 .len = 16
184         },
185         .digest = {
186                 .data = {
187                         0xCA, 0x33, 0xB3, 0x3B, 0x16, 0x94, 0xAA, 0x55,
188                         0x36, 0x6B, 0x45, 0x46
189                 },
190                 .len = TRUNCATED_DIGEST_BYTE_LENGTH_SHA1
191         }
192 };
193
194 /* CTR-AES256-Encrypt-SHA1 test vector */
195
196 static const struct aes_ctr_test_data aes_ctr_test_case_3 = {
197         .key = {
198                 .data = {
199                         0x60, 0x3D, 0xEB, 0x10, 0x15, 0xCA, 0x71, 0xBE,
200                         0x2B, 0x73, 0xAE, 0xF0, 0x85, 0x7D, 0x77, 0x81,
201                         0x1F, 0x35, 0x2C, 0x07, 0x3B, 0x61, 0x08, 0xD7,
202                         0x2D, 0x98, 0x10, 0xA3, 0x09, 0x14, 0xDF, 0xF4
203                 },
204                 .len = 32
205         },
206         .iv = {
207                 .data = {
208                         0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
209                         0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
210                 },
211                 .len = 16
212         },
213         .plaintext = {
214                 .data = {
215                         0x6B, 0xC1, 0xBE, 0xE2, 0x2E, 0x40, 0x9F, 0x96,
216                         0xE9, 0x3D, 0x7E, 0x11, 0x73, 0x93, 0x17, 0x2A,
217                         0xAE, 0x2D, 0x8A, 0x57, 0x1E, 0x03, 0xAC, 0x9C,
218                         0x9E, 0xB7, 0x6F, 0xAC, 0x45, 0xAF, 0x8E, 0x51,
219                         0x30, 0xC8, 0x1C, 0x46, 0xA3, 0x5C, 0xE4, 0x11,
220                         0xE5, 0xFB, 0xC1, 0x19, 0x1A, 0x0A, 0x52, 0xEF,
221                         0xF6, 0x9F, 0x24, 0x45, 0xDF, 0x4F, 0x9B, 0x17,
222                         0xAD, 0x2B, 0x41, 0x7B, 0xE6, 0x6C, 0x37, 0x10
223                 },
224                 .len = 64
225         },
226         .ciphertext = {
227                 .data = {
228                         0x60, 0x1E, 0xC3, 0x13, 0x77, 0x57, 0x89, 0xA5,
229                         0xB7, 0xA7, 0xF5, 0x04, 0xBB, 0xF3, 0xD2, 0x28,
230                         0xF4, 0x43, 0xE3, 0xCA, 0x4D, 0x62, 0xB5, 0x9A,
231                         0xCA, 0x84, 0xE9, 0x90, 0xCA, 0xCA, 0xF5, 0xC5,
232                         0x2B, 0x09, 0x30, 0xDA, 0xA2, 0x3D, 0xE9, 0x4C,
233                         0xE8, 0x70, 0x17, 0xBA, 0x2D, 0x84, 0x98, 0x8D,
234                         0xDF, 0xC9, 0xC5, 0x8D, 0xB6, 0x7A, 0xAD, 0xA6,
235                         0x13, 0xC2, 0xDD, 0x08, 0x45, 0x79, 0x41, 0xA6
236                 },
237                 .len = 64
238         },
239         .auth_key = {
240                 .algo = RTE_CRYPTO_AUTH_SHA1_HMAC,
241                 .data = {
242                         0xF8, 0x2A, 0xC7, 0x54, 0xDB, 0x96, 0x18, 0xAA,
243                         0xC3, 0xA1, 0x53, 0xF6, 0x1F, 0x17, 0x60, 0xBD,
244                         0xDE, 0xF4, 0xDE, 0xAD
245                 },
246                 .len = 20
247         },
248         .digest = {
249                 .data = {
250                         0x3B, 0x1A, 0x9D, 0x82, 0x35, 0xD5, 0xDD, 0x64,
251                         0xCC, 0x1B, 0xA9, 0xC0, 0xEB, 0xE9, 0x42, 0x16,
252                         0xE7, 0x87, 0xA3, 0xEF
253                 },
254                 .len = TRUNCATED_DIGEST_BYTE_LENGTH_SHA1
255         }
256 };
257 #endif /* TEST_CRYPTODEV_AES_CTR_TEST_VECTORS_H_ */