1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright (C) 2020 Marvell International Ltd.
5 #ifndef __TEST_CRYPTODEV_ECPM_TEST_VECTORS_H__
6 #define __TEST_CRYPTODEV_ECPM_TEST_VECTORS_H__
8 #include "rte_crypto_asym.h"
10 struct crypto_testsuite_ecpm_params {
11 rte_crypto_param gen_x;
12 rte_crypto_param gen_y;
13 rte_crypto_param privkey;
14 rte_crypto_param pubkey_x;
15 rte_crypto_param pubkey_y;
19 /* SECP192R1 (P-192 NIST) test vectors */
21 static uint8_t gen_x_secp192r1[] = {
22 0x18, 0x8d, 0xa8, 0x0e, 0xb0, 0x30, 0x90, 0xf6,
23 0x7c, 0xbf, 0x20, 0xeb, 0x43, 0xa1, 0x88, 0x00,
24 0xf4, 0xff, 0x0a, 0xfd, 0x82, 0xff, 0x10, 0x12
27 static uint8_t gen_y_secp192r1[] = {
28 0x07, 0x19, 0x2b, 0x95, 0xff, 0xc8, 0xda, 0x78,
29 0x63, 0x10, 0x11, 0xed, 0x6b, 0x24, 0xcd, 0xd5,
30 0x73, 0xf9, 0x77, 0xa1, 0x1e, 0x79, 0x48, 0x11
33 static uint8_t privkey_secp192r1[] = {
34 0x24, 0xed, 0xd2, 0x2f, 0x7d, 0xdd, 0x6f, 0xa5,
35 0xbc, 0x61, 0xfc, 0x06, 0x53, 0x47, 0x9a, 0xa4,
36 0x08, 0x09, 0xef, 0x86, 0x5c, 0xf2, 0x7a, 0x47
38 static uint8_t pubkey_x_secp192r1[] = {
39 0x9b, 0xf1, 0x2d, 0x71, 0x74, 0xb7, 0x70, 0x8a,
40 0x07, 0x6a, 0x38, 0xbc, 0x80, 0xaa, 0x28, 0x66,
41 0x2f, 0x25, 0x1e, 0x2e, 0xd8, 0xd4, 0x14, 0xdc
44 static uint8_t pubkey_y_secp192r1[] = {
45 0x48, 0x54, 0xc8, 0xd0, 0x7d, 0xfc, 0x08, 0x82,
46 0x4e, 0x9e, 0x47, 0x1c, 0xa2, 0xfe, 0xdc, 0xfc,
47 0xff, 0x3d, 0xdc, 0xb0, 0x11, 0x57, 0x34, 0x98
50 struct crypto_testsuite_ecpm_params ecpm_param_secp192r1 = {
52 .data = gen_x_secp192r1,
53 .length = sizeof(gen_x_secp192r1),
56 .data = gen_y_secp192r1,
57 .length = sizeof(gen_y_secp192r1),
60 .data = privkey_secp192r1,
61 .length = sizeof(privkey_secp192r1),
64 .data = pubkey_x_secp192r1,
65 .length = sizeof(pubkey_x_secp192r1),
68 .data = pubkey_y_secp192r1,
69 .length = sizeof(pubkey_y_secp192r1),
71 .curve = RTE_CRYPTO_EC_GROUP_SECP192R1
74 /* SECP224R1 (P-224 NIST) test vectors */
76 static uint8_t gen_x_secp224r1[] = {
77 0xb7, 0x0e, 0x0c, 0xbd, 0x6b, 0xb4, 0xbf, 0x7f,
78 0x32, 0x13, 0x90, 0xb9, 0x4a, 0x03, 0xc1, 0xd3,
79 0x56, 0xc2, 0x11, 0x22, 0x34, 0x32, 0x80, 0xd6,
80 0x11, 0x5c, 0x1d, 0x21
83 static uint8_t gen_y_secp224r1[] = {
84 0xbd, 0x37, 0x63, 0x88, 0xb5, 0xf7, 0x23, 0xfb,
85 0x4c, 0x22, 0xdf, 0xe6, 0xcd, 0x43, 0x75, 0xa0,
86 0x5a, 0x07, 0x47, 0x64, 0x44, 0xd5, 0x81, 0x99,
87 0x85, 0x00, 0x7e, 0x34
90 static uint8_t privkey_secp224r1[] = {
91 0x88, 0x8f, 0xc9, 0x92, 0x89, 0x3b, 0xdd, 0x8a,
92 0xa0, 0x2c, 0x80, 0x76, 0x88, 0x32, 0x60, 0x5d,
93 0x02, 0x0b, 0x81, 0xae, 0x0b, 0x25, 0x47, 0x41,
94 0x54, 0xec, 0x89, 0xaa
97 static uint8_t pubkey_x_secp224r1[] = {
98 0x4c, 0x74, 0x1e, 0x4d, 0x20, 0x10, 0x36, 0x70,
99 0xb7, 0x16, 0x1a, 0xe7, 0x22, 0x71, 0x08, 0x21,
100 0x55, 0x83, 0x84, 0x18, 0x08, 0x43, 0x35, 0x33,
101 0x8a, 0xc3, 0x8f, 0xa4
104 static uint8_t pubkey_y_secp224r1[] = {
105 0xdb, 0x79, 0x19, 0x15, 0x1a, 0xc2, 0x85, 0x87,
106 0xb7, 0x2b, 0xad, 0x7a, 0xb1, 0x80, 0xec, 0x8e,
107 0x95, 0xab, 0x9e, 0x2c, 0x8d, 0x81, 0xd9, 0xb9,
108 0xd7, 0xe2, 0xe3, 0x83
111 struct crypto_testsuite_ecpm_params ecpm_param_secp224r1 = {
113 .data = gen_x_secp224r1,
114 .length = sizeof(gen_x_secp224r1),
117 .data = gen_y_secp224r1,
118 .length = sizeof(gen_y_secp224r1),
121 .data = privkey_secp224r1,
122 .length = sizeof(privkey_secp224r1),
125 .data = pubkey_x_secp224r1,
126 .length = sizeof(pubkey_x_secp224r1),
129 .data = pubkey_y_secp224r1,
130 .length = sizeof(pubkey_y_secp224r1),
132 .curve = RTE_CRYPTO_EC_GROUP_SECP224R1
135 /* SECP256R1 (P-256 NIST) test vectors */
137 static uint8_t gen_x_secp256r1[] = {
138 0x6b, 0x17, 0xd1, 0xf2, 0xe1, 0x2c, 0x42, 0x47,
139 0xf8, 0xbc, 0xe6, 0xe5, 0x63, 0xa4, 0x40, 0xf2,
140 0x77, 0x03, 0x7d, 0x81, 0x2d, 0xeb, 0x33, 0xa0,
141 0xf4, 0xa1, 0x39, 0x45, 0xd8, 0x98, 0xc2, 0x96
144 static uint8_t gen_y_secp256r1[] = {
145 0x4f, 0xe3, 0x42, 0xe2, 0xfe, 0x1a, 0x7f, 0x9b,
146 0x8e, 0xe7, 0xeb, 0x4a, 0x7c, 0x0f, 0x9e, 0x16,
147 0x2b, 0xce, 0x33, 0x57, 0x6b, 0x31, 0x5e, 0xce,
148 0xcb, 0xb6, 0x40, 0x68, 0x37, 0xbf, 0x51, 0xf5
151 static uint8_t pubkey_x_secp256r1[] = {
152 0x06, 0x27, 0x5d, 0x38, 0x7b, 0x8f, 0xcd, 0x29,
153 0x12, 0x02, 0xa5, 0xad, 0x72, 0x35, 0x55, 0xd4,
154 0xe1, 0xca, 0xd6, 0x32, 0x91, 0xe7, 0x8c, 0xb7,
155 0xf9, 0x85, 0xfe, 0xb5, 0xca, 0x61, 0xfd, 0xa7,
158 static uint8_t pubkey_y_secp256r1[] = {
159 0x6d, 0x28, 0x17, 0x9c, 0x88, 0x2a, 0x06, 0x8c,
160 0x85, 0x52, 0x44, 0xc1, 0x2f, 0xf6, 0x45, 0x80,
161 0x63, 0x1c, 0x52, 0xe4, 0xa5, 0xf8, 0x21, 0x43,
162 0xec, 0xeb, 0xe2, 0xbb, 0x39, 0xff, 0x1f, 0xd8
165 static uint8_t privkey_secp256r1[] = {
166 0x36, 0xf7, 0xe3, 0x07, 0x84, 0xfa, 0xb5, 0x8d,
167 0x8d, 0x1d, 0x00, 0x21, 0x8b, 0x59, 0xd1, 0x70,
168 0x14, 0x94, 0x86, 0x69, 0xec, 0xd3, 0x99, 0xc8,
169 0x7a, 0xf0, 0x2d, 0x05, 0xbf, 0x16, 0xed, 0x36
172 struct crypto_testsuite_ecpm_params ecpm_param_secp256r1 = {
174 .data = gen_x_secp256r1,
175 .length = sizeof(gen_x_secp256r1),
178 .data = gen_y_secp256r1,
179 .length = sizeof(gen_y_secp256r1),
182 .data = privkey_secp256r1,
183 .length = sizeof(privkey_secp256r1),
186 .data = pubkey_x_secp256r1,
187 .length = sizeof(pubkey_x_secp256r1),
190 .data = pubkey_y_secp256r1,
191 .length = sizeof(pubkey_y_secp256r1),
193 .curve = RTE_CRYPTO_EC_GROUP_SECP256R1
196 /* SECP384R1 (P-384 NIST) test vectors */
198 static uint8_t gen_x_secp384r1[] = {
199 0xAA, 0x87, 0xCA, 0x22, 0xBE, 0x8B, 0x05, 0x37,
200 0x8E, 0xB1, 0xC7, 0x1E, 0xF3, 0x20, 0xAD, 0x74,
201 0x6E, 0x1D, 0x3B, 0x62, 0x8B, 0xA7, 0x9B, 0x98,
202 0x59, 0xF7, 0x41, 0xE0, 0x82, 0x54, 0x2A, 0x38,
203 0x55, 0x02, 0xF2, 0x5D, 0xBF, 0x55, 0x29, 0x6C,
204 0x3A, 0x54, 0x5E, 0x38, 0x72, 0x76, 0x0A, 0xB7
207 static uint8_t gen_y_secp384r1[] = {
208 0x36, 0x17, 0xDE, 0x4A, 0x96, 0x26, 0x2C, 0x6F,
209 0x5D, 0x9E, 0x98, 0xBF, 0x92, 0x92, 0xDC, 0x29,
210 0xF8, 0xF4, 0x1D, 0xBD, 0x28, 0x9A, 0x14, 0x7C,
211 0xE9, 0xDA, 0x31, 0x13, 0xB5, 0xF0, 0xB8, 0xC0,
212 0x0A, 0x60, 0xB1, 0xCE, 0x1D, 0x7E, 0x81, 0x9D,
213 0x7A, 0x43, 0x1D, 0x7C, 0x90, 0xEA, 0x0E, 0x5F
216 static uint8_t privkey_secp384r1[] = {
217 0xc6, 0x02, 0xbc, 0x74, 0xa3, 0x45, 0x92, 0xc3,
218 0x11, 0xa6, 0x56, 0x96, 0x61, 0xe0, 0x83, 0x2c,
219 0x84, 0xf7, 0x20, 0x72, 0x74, 0x67, 0x6c, 0xc4,
220 0x2a, 0x89, 0xf0, 0x58, 0x16, 0x26, 0x30, 0x18,
221 0x4b, 0x52, 0xf0, 0xd9, 0x9b, 0x85, 0x5a, 0x77,
222 0x83, 0xc9, 0x87, 0x47, 0x6d, 0x7f, 0x9e, 0x6b
225 static uint8_t pubkey_x_secp384r1[] = {
226 0x04, 0x00, 0x19, 0x3b, 0x21, 0xf0, 0x7c, 0xd0,
227 0x59, 0x82, 0x6e, 0x94, 0x53, 0xd3, 0xe9, 0x6d,
228 0xd1, 0x45, 0x04, 0x1c, 0x97, 0xd4, 0x9f, 0xf6,
229 0xb7, 0x04, 0x7f, 0x86, 0xbb, 0x0b, 0x04, 0x39,
230 0xe9, 0x09, 0x27, 0x4c, 0xb9, 0xc2, 0x82, 0xbf,
231 0xab, 0x88, 0x67, 0x4c, 0x07, 0x65, 0xbc, 0x75
234 static uint8_t pubkey_y_secp384r1[] = {
235 0xf7, 0x0d, 0x89, 0xc5, 0x2a, 0xcb, 0xc7, 0x04,
236 0x68, 0xd2, 0xc5, 0xae, 0x75, 0xc7, 0x6d, 0x7f,
237 0x69, 0xb7, 0x6a, 0xf6, 0x2d, 0xcf, 0x95, 0xe9,
238 0x9e, 0xba, 0x5d, 0xd1, 0x1a, 0xdf, 0x8f, 0x42,
239 0xec, 0x9a, 0x42, 0x5b, 0x0c, 0x5e, 0xc9, 0x8e,
240 0x2f, 0x23, 0x4a, 0x92, 0x6b, 0x82, 0xa1, 0x47
243 struct crypto_testsuite_ecpm_params ecpm_param_secp384r1 = {
245 .data = gen_x_secp384r1,
246 .length = sizeof(gen_x_secp384r1),
249 .data = gen_y_secp384r1,
250 .length = sizeof(gen_y_secp384r1),
253 .data = privkey_secp384r1,
254 .length = sizeof(privkey_secp384r1),
257 .data = pubkey_x_secp384r1,
258 .length = sizeof(pubkey_x_secp384r1),
261 .data = pubkey_y_secp384r1,
262 .length = sizeof(pubkey_y_secp384r1),
264 .curve = RTE_CRYPTO_EC_GROUP_SECP384R1
267 /* SECP521R1 (P-521 NIST) test vectors */
269 static uint8_t gen_x_secp521r1[] = {
270 0xc6, 0x85, 0x8e, 0x06, 0xb7, 0x04, 0x04,
271 0xe9, 0xcd, 0x9e, 0x3e, 0xcb, 0x66, 0x23, 0x95,
272 0xb4, 0x42, 0x9c, 0x64, 0x81, 0x39, 0x05, 0x3f,
273 0xb5, 0x21, 0xf8, 0x28, 0xaf, 0x60, 0x6b, 0x4d,
274 0x3d, 0xba, 0xa1, 0x4b, 0x5e, 0x77, 0xef, 0xe7,
275 0x59, 0x28, 0xfe, 0x1d, 0xc1, 0x27, 0xa2, 0xff,
276 0xa8, 0xde, 0x33, 0x48, 0xb3, 0xc1, 0x85, 0x6a,
277 0x42, 0x9b, 0xf9, 0x7e, 0x7e, 0x31, 0xc2, 0xe5,
281 static uint8_t gen_y_secp521r1[] = {
282 0x01, 0x18, 0x39, 0x29, 0x6a, 0x78, 0x9a, 0x3b,
283 0xc0, 0x04, 0x5c, 0x8a, 0x5f, 0xb4, 0x2c, 0x7d,
284 0x1b, 0xd9, 0x98, 0xf5, 0x44, 0x49, 0x57, 0x9b,
285 0x44, 0x68, 0x17, 0xaf, 0xbd, 0x17, 0x27, 0x3e,
286 0x66, 0x2c, 0x97, 0xee, 0x72, 0x99, 0x5e, 0xf4,
287 0x26, 0x40, 0xc5, 0x50, 0xb9, 0x01, 0x3f, 0xad,
288 0x07, 0x61, 0x35, 0x3c, 0x70, 0x86, 0xa2, 0x72,
289 0xc2, 0x40, 0x88, 0xbe, 0x94, 0x76, 0x9f, 0xd1,
293 static uint8_t privkey_secp521r1[] = {
294 0x01, 0xe8, 0xc0, 0x59, 0x96, 0xb8, 0x5e, 0x6f,
295 0x3f, 0x87, 0x57, 0x12, 0xa0, 0x9c, 0x1b, 0x40,
296 0x67, 0x2b, 0x5e, 0x7a, 0x78, 0xd5, 0x85, 0x2d,
297 0xe0, 0x15, 0x85, 0xc5, 0xfb, 0x99, 0x0b, 0xf3,
298 0x81, 0x2c, 0x32, 0x45, 0x53, 0x4a, 0x71, 0x43,
299 0x89, 0xae, 0x90, 0x14, 0xd6, 0x77, 0xa4, 0x49,
300 0xef, 0xd6, 0x58, 0x25, 0x4e, 0x61, 0x0d, 0xa8,
301 0xe6, 0xca, 0xd3, 0x34, 0x14, 0xb9, 0xd3, 0x3e,
305 static uint8_t pubkey_x_secp521r1[] = {
306 0x00, 0x7d, 0x04, 0x2c, 0xa1, 0x94, 0x08, 0x52,
307 0x4e, 0x68, 0xb9, 0x81, 0xf1, 0x41, 0x93, 0x51,
308 0xe3, 0xb8, 0x47, 0x36, 0xc7, 0x7f, 0xe5, 0x8f,
309 0xee, 0x7d, 0x11, 0x31, 0x7d, 0xf2, 0xe8, 0x50,
310 0xd9, 0x60, 0xc7, 0xdd, 0x10, 0xd1, 0x0b, 0xa7,
311 0x14, 0xc8, 0xa6, 0x09, 0xd1, 0x63, 0x50, 0x2b,
312 0x79, 0xd6, 0x82, 0xe8, 0xbb, 0xec, 0xd4, 0xf5,
313 0x25, 0x91, 0xd2, 0x74, 0x85, 0x33, 0xe4, 0x5a,
317 static uint8_t pubkey_y_secp521r1[] = {
318 0x01, 0x97, 0xac, 0x64, 0x16, 0x11, 0x1c, 0xcf,
319 0x98, 0x7d, 0x29, 0x04, 0x59, 0xeb, 0xc8, 0xad,
320 0x9e, 0xc5, 0x6e, 0x49, 0x05, 0x9c, 0x99, 0x21,
321 0x55, 0x53, 0x9a, 0x36, 0xa6, 0x26, 0x63, 0x1f,
322 0x4a, 0x2d, 0x89, 0x16, 0x4b, 0x98, 0x51, 0x54,
323 0xf2, 0xdd, 0xdc, 0x02, 0x81, 0xee, 0x5b, 0x51,
324 0x78, 0x27, 0x1f, 0x3a, 0x76, 0xa0, 0x91, 0x4c,
325 0x3f, 0xcd, 0x1f, 0x97, 0xbe, 0x8e, 0x83, 0x76,
329 struct crypto_testsuite_ecpm_params ecpm_param_secp521r1 = {
331 .data = gen_x_secp521r1,
332 .length = sizeof(gen_x_secp521r1),
335 .data = gen_y_secp521r1,
336 .length = sizeof(gen_y_secp521r1),
339 .data = privkey_secp521r1,
340 .length = sizeof(privkey_secp521r1),
343 .data = pubkey_x_secp521r1,
344 .length = sizeof(pubkey_x_secp521r1),
347 .data = pubkey_y_secp521r1,
348 .length = sizeof(pubkey_y_secp521r1),
350 .curve = RTE_CRYPTO_EC_GROUP_SECP521R1
353 #endif /* __TEST_CRYPTODEV_ECPM_TEST_VECTORS_H__ */