test mbuf attach
[dpdk.git] / app / test / test_cryptodev_ecdsa_test_vectors.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright (C) 2020 Marvell International Ltd.
3  */
4
5 #ifndef __TEST_CRYPTODEV_ECDSA_TEST_VECTORS_H__
6 #define __TEST_CRYPTODEV_ECDSA_TEST_VECTORS_H__
7
8 #include "rte_crypto_asym.h"
9
10 /* EC curve id */
11 enum curve {
12         SECP192R1,
13         SECP224R1,
14         SECP256R1,
15         SECP384R1,
16         SECP521R1,
17         END_OF_CURVE_LIST
18 };
19
20 const char *curve[] = {"SECP192R1",
21                        "SECP224R1",
22                        "SECP256R1",
23                        "SECP384R1",
24                        "SECP521R1"};
25
26 struct crypto_testsuite_ecdsa_params {
27         rte_crypto_param pubkey_qx;
28         rte_crypto_param pubkey_qy;
29         rte_crypto_param scalar;
30         rte_crypto_param digest;
31         rte_crypto_param sign_r;
32         rte_crypto_param sign_s;
33         rte_crypto_param pkey;
34         int curve;
35 };
36
37 /*
38  * Test vector reference:
39  * https://csrc.nist.gov/CSRC/media/Projects/
40  * Cryptographic-Algorithm-Validation-Program/
41  * documents/components/186-3ecdsasiggencomponenttestvectors.zip
42  */
43
44 /* SECP192R1 (P-192 NIST) test vector */
45
46 static uint8_t digest_secp192r1[] = {
47         0x5a, 0xe8, 0x31, 0x7d, 0x34, 0xd1, 0xe5, 0x95,
48         0xe3, 0xfa, 0x72, 0x47, 0xdb, 0x80, 0xc0, 0xaf,
49         0x43, 0x20, 0xcc, 0xe1, 0x11, 0x6d, 0xe1, 0x87,
50         0xf8, 0xf7, 0xe2, 0xe0, 0x99, 0xc0, 0xd8, 0xd0
51 };
52
53 static uint8_t pkey_secp192r1[] = {
54         0x24, 0xed, 0xd2, 0x2f, 0x7d, 0xdd, 0x6f, 0xa5,
55         0xbc, 0x61, 0xfc, 0x06, 0x53, 0x47, 0x9a, 0xa4,
56         0x08, 0x09, 0xef, 0x86, 0x5c, 0xf2, 0x7a, 0x47
57 };
58
59 static uint8_t scalar_secp192r1[] = {
60         0xa5, 0xc8, 0x17, 0xa2, 0x36, 0xa5, 0xf7, 0xfa,
61         0xa3, 0x29, 0xb8, 0xec, 0xc3, 0xc5, 0x96, 0x68,
62         0x7c, 0x71, 0xaa, 0xaf, 0x86, 0xc7, 0x70, 0x3e
63 };
64
65 static uint8_t pubkey_qx_secp192r1[] = {
66         0x9b, 0xf1, 0x2d, 0x71, 0x74, 0xb7, 0x70, 0x8a,
67         0x07, 0x6a, 0x38, 0xbc, 0x80, 0xaa, 0x28, 0x66,
68         0x2f, 0x25, 0x1e, 0x2e, 0xd8, 0xd4, 0x14, 0xdc
69 };
70
71 static uint8_t pubkey_qy_secp192r1[] = {
72         0x48, 0x54, 0xc8, 0xd0, 0x7d, 0xfc, 0x08, 0x82,
73         0x4e, 0x9e, 0x47, 0x1c, 0xa2, 0xfe, 0xdc, 0xfc,
74         0xff, 0x3d, 0xdc, 0xb0, 0x11, 0x57, 0x34, 0x98
75 };
76
77 static uint8_t sign_secp192r1_r[] = {
78         0x35, 0x4a, 0xba, 0xec, 0xf4, 0x36, 0x1f, 0xea,
79         0x90, 0xc2, 0x9b, 0x91, 0x99, 0x88, 0x2e, 0xdf,
80         0x85, 0x73, 0xe6, 0x86, 0xa8, 0x13, 0xef, 0xf8
81 };
82
83 static uint8_t sign_secp192r1_s[] = {
84         0x80, 0xf5, 0x00, 0x00, 0xac, 0x86, 0x11, 0x1c,
85         0x9b, 0x30, 0x47, 0x38, 0x5a, 0x15, 0xd7, 0x8e,
86         0x63, 0x2c, 0x58, 0xb7, 0x94, 0x9e, 0x82, 0xc1
87 };
88
89 /** ECDSA SECP192R1 elliptic curve param */
90
91 struct crypto_testsuite_ecdsa_params ecdsa_param_secp192r1 = {
92         .pubkey_qx = {
93                 .data = pubkey_qx_secp192r1,
94                 .length = sizeof(pubkey_qx_secp192r1),
95         },
96         .pubkey_qy = {
97                 .data = pubkey_qy_secp192r1,
98                 .length = sizeof(pubkey_qy_secp192r1),
99         },
100         .scalar = {
101                 .data = scalar_secp192r1,
102                 .length = sizeof(scalar_secp192r1),
103         },
104         .digest = {
105                 .data = digest_secp192r1,
106                 .length = sizeof(digest_secp192r1),
107         },
108         .sign_r = {
109                 .data = sign_secp192r1_r,
110                 .length = sizeof(sign_secp192r1_r),
111         },
112         .sign_s = {
113                 .data = sign_secp192r1_s,
114                 .length = sizeof(sign_secp192r1_s),
115         },
116         .pkey = {
117                 .data = pkey_secp192r1,
118                 .length = sizeof(pkey_secp192r1),
119         },
120         .curve = RTE_CRYPTO_EC_GROUP_SECP192R1
121 };
122
123 /* SECP224R1 (P-224 NIST) test vectors */
124
125 static uint8_t digest_secp224r1[] = {
126         0x00, 0xc6, 0xfc, 0x53, 0xc1, 0x98, 0x6d, 0x19,
127         0xa8, 0xa8, 0xb5, 0x80, 0xee, 0x55, 0x3d, 0xc1,
128         0x24, 0x07, 0x45, 0xd7, 0x60, 0x64, 0x7d, 0x1c,
129         0x0a, 0xdf, 0x44, 0x2c, 0x13, 0x3c, 0x7f, 0x56
130 };
131
132 static uint8_t pkey_secp224r1[] = {
133         0x88, 0x8f, 0xc9, 0x92, 0x89, 0x3b, 0xdd, 0x8a,
134         0xa0, 0x2c, 0x80, 0x76, 0x88, 0x32, 0x60, 0x5d,
135         0x02, 0x0b, 0x81, 0xae, 0x0b, 0x25, 0x47, 0x41,
136         0x54, 0xec, 0x89, 0xaa
137 };
138
139 static uint8_t scalar_secp224r1[] = {
140         0x06, 0xf7, 0xa5, 0x60, 0x07, 0x82, 0x54, 0x33,
141         0xc4, 0xc6, 0x11, 0x53, 0xdf, 0x1a, 0x13, 0x5e,
142         0xee, 0x2f, 0x38, 0xec, 0x68, 0x7b, 0x49, 0x2e,
143         0xd4, 0x0d, 0x9c, 0x90
144 };
145
146 static uint8_t pubkey_qx_secp224r1[] = {
147         0x4c, 0x74, 0x1e, 0x4d, 0x20, 0x10, 0x36, 0x70,
148         0xb7, 0x16, 0x1a, 0xe7, 0x22, 0x71, 0x08, 0x21,
149         0x55, 0x83, 0x84, 0x18, 0x08, 0x43, 0x35, 0x33,
150         0x8a, 0xc3, 0x8f, 0xa4
151 };
152
153 static uint8_t pubkey_qy_secp224r1[] = {
154         0xdb, 0x79, 0x19, 0x15, 0x1a, 0xc2, 0x85, 0x87,
155         0xb7, 0x2b, 0xad, 0x7a, 0xb1, 0x80, 0xec, 0x8e,
156         0x95, 0xab, 0x9e, 0x2c, 0x8d, 0x81, 0xd9, 0xb9,
157         0xd7, 0xe2, 0xe3, 0x83
158 };
159
160 static uint8_t sign_secp224r1_r[] = {
161         0x09, 0x09, 0xc9, 0xb9, 0xca, 0xe8, 0xd2, 0x79,
162         0x0e, 0x29, 0xdb, 0x6a, 0xfd, 0xb4, 0x5c, 0x04,
163         0xf5, 0xb0, 0x72, 0xc4, 0xc2, 0x04, 0x10, 0xc7,
164         0xdc, 0x9b, 0x67, 0x72
165 };
166
167 static uint8_t sign_secp224r1_s[] = {
168         0x29, 0x8f, 0x4f, 0xca, 0xe1, 0xfe, 0x27, 0x1d,
169         0xa1, 0xe0, 0x34, 0x5d, 0x11, 0xd0, 0x7a, 0x1f,
170         0xca, 0x43, 0xf5, 0x8a, 0xf4, 0xc1, 0x13, 0xb9,
171         0x09, 0xee, 0xde, 0xa0
172 };
173
174 /** ECDSA SECP224R1 elliptic curve param */
175
176 struct crypto_testsuite_ecdsa_params ecdsa_param_secp224r1 = {
177         .pubkey_qx = {
178                 .data = pubkey_qx_secp224r1,
179                 .length = sizeof(pubkey_qx_secp224r1),
180         },
181         .pubkey_qy = {
182                 .data = pubkey_qy_secp224r1,
183                 .length = sizeof(pubkey_qy_secp224r1),
184         },
185         .scalar = {
186                 .data = scalar_secp224r1,
187                 .length = sizeof(scalar_secp224r1),
188         },
189         .digest = {
190                 .data = digest_secp224r1,
191                 .length = sizeof(digest_secp224r1),
192         },
193         .sign_r = {
194                 .data = sign_secp224r1_r,
195                 .length = sizeof(sign_secp224r1_r),
196         },
197         .sign_s = {
198                 .data = sign_secp224r1_s,
199                 .length = sizeof(sign_secp224r1_s),
200         },
201         .pkey = {
202                 .data = pkey_secp224r1,
203                 .length = sizeof(pkey_secp224r1),
204         },
205         .curve = RTE_CRYPTO_EC_GROUP_SECP224R1
206 };
207
208 /* SECP256R1 (P-256 NIST) test vectors */
209
210 static uint8_t digest_secp256r1[] = {
211         0x44, 0xac, 0xf6, 0xb7, 0xe3, 0x6c, 0x13, 0x42,
212         0xc2, 0xc5, 0x89, 0x72, 0x04, 0xfe, 0x09, 0x50,
213         0x4e, 0x1e, 0x2e, 0xfb, 0x1a, 0x90, 0x03, 0x77,
214         0xdb, 0xc4, 0xe7, 0xa6, 0xa1, 0x33, 0xec, 0x56
215 };
216
217 static uint8_t pkey_secp256r1[] = {
218         0x51, 0x9b, 0x42, 0x3d, 0x71, 0x5f, 0x8b, 0x58,
219         0x1f, 0x4f, 0xa8, 0xee, 0x59, 0xf4, 0x77, 0x1a,
220         0x5b, 0x44, 0xc8, 0x13, 0x0b, 0x4e, 0x3e, 0xac,
221         0xca, 0x54, 0xa5, 0x6d, 0xda, 0x72, 0xb4, 0x64
222 };
223
224 static uint8_t scalar_secp256r1[] = {
225         0x94, 0xa1, 0xbb, 0xb1, 0x4b, 0x90, 0x6a, 0x61,
226         0xa2, 0x80, 0xf2, 0x45, 0xf9, 0xe9, 0x3c, 0x7f,
227         0x3b, 0x4a, 0x62, 0x47, 0x82, 0x4f, 0x5d, 0x33,
228         0xb9, 0x67, 0x07, 0x87, 0x64, 0x2a, 0x68, 0xde
229 };
230
231 static uint8_t pubkey_qx_secp256r1[] = {
232         0x1c, 0xcb, 0xe9, 0x1c, 0x07, 0x5f, 0xc7, 0xf4,
233         0xf0, 0x33, 0xbf, 0xa2, 0x48, 0xdb, 0x8f, 0xcc,
234         0xd3, 0x56, 0x5d, 0xe9, 0x4b, 0xbf, 0xb1, 0x2f,
235         0x3c, 0x59, 0xff, 0x46, 0xc2, 0x71, 0xbf, 0x83
236 };
237
238 static uint8_t pubkey_qy_secp256r1[] = {
239         0xce, 0x40, 0x14, 0xc6, 0x88, 0x11, 0xf9, 0xa2,
240         0x1a, 0x1f, 0xdb, 0x2c, 0x0e, 0x61, 0x13, 0xe0,
241         0x6d, 0xb7, 0xca, 0x93, 0xb7, 0x40, 0x4e, 0x78,
242         0xdc, 0x7c, 0xcd, 0x5c, 0xa8, 0x9a, 0x4c, 0xa9
243 };
244
245 static uint8_t sign_secp256r1_r[] = {
246         0xf3, 0xac, 0x80, 0x61, 0xb5, 0x14, 0x79, 0x5b,
247         0x88, 0x43, 0xe3, 0xd6, 0x62, 0x95, 0x27, 0xed,
248         0x2a, 0xfd, 0x6b, 0x1f, 0x6a, 0x55, 0x5a, 0x7a,
249         0xca, 0xbb, 0x5e, 0x6f, 0x79, 0xc8, 0xc2, 0xac
250 };
251
252 static uint8_t sign_secp256r1_s[] = {
253         0x8b, 0xf7, 0x78, 0x19, 0xca, 0x05, 0xa6, 0xb2,
254         0x78, 0x6c, 0x76, 0x26, 0x2b, 0xf7, 0x37, 0x1c,
255         0xef, 0x97, 0xb2, 0x18, 0xe9, 0x6f, 0x17, 0x5a,
256         0x3c, 0xcd, 0xda, 0x2a, 0xcc, 0x05, 0x89, 0x03
257 };
258
259 /** ECDSA SECP256R1 elliptic curve param */
260
261 struct crypto_testsuite_ecdsa_params ecdsa_param_secp256r1 = {
262         .pubkey_qx = {
263                 .data = pubkey_qx_secp256r1,
264                 .length = sizeof(pubkey_qx_secp256r1),
265         },
266         .pubkey_qy = {
267                 .data = pubkey_qy_secp256r1,
268                 .length = sizeof(pubkey_qy_secp256r1),
269         },
270         .scalar = {
271                 .data = scalar_secp256r1,
272                 .length = sizeof(scalar_secp256r1),
273         },
274         .digest = {
275                 .data = digest_secp256r1,
276                 .length = sizeof(digest_secp256r1),
277         },
278         .sign_r = {
279                 .data = sign_secp256r1_r,
280                 .length = sizeof(sign_secp256r1_r),
281         },
282         .sign_s = {
283                 .data = sign_secp256r1_s,
284                 .length = sizeof(sign_secp256r1_s),
285         },
286         .pkey = {
287                 .data = pkey_secp256r1,
288                 .length = sizeof(pkey_secp256r1),
289         },
290         .curve = RTE_CRYPTO_EC_GROUP_SECP256R1
291 };
292
293 /* SECP384R1 (P-384 NIST) test vectors */
294
295 static uint8_t digest_secp384r1[] = {
296         0xbb, 0xbd, 0x0a, 0x5f, 0x64, 0x5d, 0x3f, 0xda,
297         0x10, 0xe2, 0x88, 0xd1, 0x72, 0xb2, 0x99, 0x45,
298         0x5f, 0x9d, 0xff, 0x00, 0xe0, 0xfb, 0xc2, 0x83,
299         0x3e, 0x18, 0xcd, 0x01, 0x7d, 0x7f, 0x3e, 0xd1
300 };
301
302 static uint8_t pkey_secp384r1[] = {
303         0xc6, 0x02, 0xbc, 0x74, 0xa3, 0x45, 0x92, 0xc3,
304         0x11, 0xa6, 0x56, 0x96, 0x61, 0xe0, 0x83, 0x2c,
305         0x84, 0xf7, 0x20, 0x72, 0x74, 0x67, 0x6c, 0xc4,
306         0x2a, 0x89, 0xf0, 0x58, 0x16, 0x26, 0x30, 0x18,
307         0x4b, 0x52, 0xf0, 0xd9, 0x9b, 0x85, 0x5a, 0x77,
308         0x83, 0xc9, 0x87, 0x47, 0x6d, 0x7f, 0x9e, 0x6b
309 };
310
311 static uint8_t scalar_secp384r1[] = {
312         0xc1, 0x0b, 0x5c, 0x25, 0xc4, 0x68, 0x3d, 0x0b,
313         0x78, 0x27, 0xd0, 0xd8, 0x86, 0x97, 0xcd, 0xc0,
314         0x93, 0x24, 0x96, 0xb5, 0x29, 0x9b, 0x79, 0x8c,
315         0x0d, 0xd1, 0xe7, 0xaf, 0x6c, 0xc7, 0x57, 0xcc,
316         0xb3, 0x0f, 0xcd, 0x3d, 0x36, 0xea, 0xd4, 0xa8,
317         0x04, 0x87, 0x7e, 0x24, 0xf3, 0xa3, 0x24, 0x43
318 };
319
320 static uint8_t pubkey_qx_secp384r1[] = {
321         0x04, 0x00, 0x19, 0x3b, 0x21, 0xf0, 0x7c, 0xd0,
322         0x59, 0x82, 0x6e, 0x94, 0x53, 0xd3, 0xe9, 0x6d,
323         0xd1, 0x45, 0x04, 0x1c, 0x97, 0xd4, 0x9f, 0xf6,
324         0xb7, 0x04, 0x7f, 0x86, 0xbb, 0x0b, 0x04, 0x39,
325         0xe9, 0x09, 0x27, 0x4c, 0xb9, 0xc2, 0x82, 0xbf,
326         0xab, 0x88, 0x67, 0x4c, 0x07, 0x65, 0xbc, 0x75
327 };
328
329 static uint8_t pubkey_qy_secp384r1[] = {
330         0xf7, 0x0d, 0x89, 0xc5, 0x2a, 0xcb, 0xc7, 0x04,
331         0x68, 0xd2, 0xc5, 0xae, 0x75, 0xc7, 0x6d, 0x7f,
332         0x69, 0xb7, 0x6a, 0xf6, 0x2d, 0xcf, 0x95, 0xe9,
333         0x9e, 0xba, 0x5d, 0xd1, 0x1a, 0xdf, 0x8f, 0x42,
334         0xec, 0x9a, 0x42, 0x5b, 0x0c, 0x5e, 0xc9, 0x8e,
335         0x2f, 0x23, 0x4a, 0x92, 0x6b, 0x82, 0xa1, 0x47
336 };
337
338 static uint8_t sign_secp384r1_r[] = {
339         0xb1, 0x1d, 0xb0, 0x0c, 0xda, 0xf5, 0x32, 0x86,
340         0xd4, 0x48, 0x3f, 0x38, 0xcd, 0x02, 0x78, 0x59,
341         0x48, 0x47, 0x7e, 0xd7, 0xeb, 0xc2, 0xad, 0x60,
342         0x90, 0x54, 0x55, 0x1d, 0xa0, 0xab, 0x03, 0x59,
343         0x97, 0x8c, 0x61, 0x85, 0x17, 0x88, 0xaa, 0x2e,
344         0xc3, 0x26, 0x79, 0x46, 0xd4, 0x40, 0xe8, 0x78
345 };
346
347 static uint8_t sign_secp384r1_s[] = {
348         0x16, 0x00, 0x78, 0x73, 0xc5, 0xb0, 0x60, 0x4c,
349         0xe6, 0x81, 0x12, 0xa8, 0xfe, 0xe9, 0x73, 0xe8,
350         0xe2, 0xb6, 0xe3, 0x31, 0x9c, 0x68, 0x3a, 0x76,
351         0x2f, 0xf5, 0x06, 0x5a, 0x07, 0x65, 0x12, 0xd7,
352         0xc9, 0x8b, 0x27, 0xe7, 0x4b, 0x78, 0x87, 0x67,
353         0x10, 0x48, 0xac, 0x02, 0x7d, 0xf8, 0xcb, 0xf2
354 };
355
356 /** ECDSA SECP384R1 elliptic curve param */
357
358 struct crypto_testsuite_ecdsa_params ecdsa_param_secp384r1 = {
359         .pubkey_qx = {
360                 .data = pubkey_qx_secp384r1,
361                 .length = sizeof(pubkey_qx_secp384r1),
362         },
363         .pubkey_qy = {
364                 .data = pubkey_qy_secp384r1,
365                 .length = sizeof(pubkey_qy_secp384r1),
366         },
367         .scalar = {
368                 .data = scalar_secp384r1,
369                 .length = sizeof(scalar_secp384r1),
370         },
371         .digest = {
372                 .data = digest_secp384r1,
373                 .length = sizeof(digest_secp384r1),
374         },
375         .sign_r = {
376                 .data = sign_secp384r1_r,
377                 .length = sizeof(sign_secp384r1_r),
378         },
379         .sign_s = {
380                 .data = sign_secp384r1_s,
381                 .length = sizeof(sign_secp384r1_s),
382         },
383         .pkey = {
384                 .data = pkey_secp384r1,
385                 .length = sizeof(pkey_secp384r1),
386         },
387         .curve = RTE_CRYPTO_EC_GROUP_SECP384R1
388 };
389
390 /* SECP521R1 (P-521 NIST) test vectors */
391
392 static uint8_t digest_secp521r1[] = {
393         0x53, 0xe6, 0x53, 0x7c, 0xb6, 0xea, 0x68, 0xae,
394         0x47, 0xa8, 0x16, 0x11, 0xc2, 0x27, 0x56, 0xd7,
395         0x70, 0xd7, 0xa3, 0x7e, 0x33, 0x6c, 0x3a, 0xf0,
396         0xb0, 0x81, 0x4b, 0x04, 0xfa, 0x39, 0x43, 0x4b
397 };
398
399 static uint8_t pkey_secp521r1[] = {
400         0x01, 0xe8, 0xc0, 0x59, 0x96, 0xb8, 0x5e, 0x6f,
401         0x3f, 0x87, 0x57, 0x12, 0xa0, 0x9c, 0x1b, 0x40,
402         0x67, 0x2b, 0x5e, 0x7a, 0x78, 0xd5, 0x85, 0x2d,
403         0xe0, 0x15, 0x85, 0xc5, 0xfb, 0x99, 0x0b, 0xf3,
404         0x81, 0x2c, 0x32, 0x45, 0x53, 0x4a, 0x71, 0x43,
405         0x89, 0xae, 0x90, 0x14, 0xd6, 0x77, 0xa4, 0x49,
406         0xef, 0xd6, 0x58, 0x25, 0x4e, 0x61, 0x0d, 0xa8,
407         0xe6, 0xca, 0xd3, 0x34, 0x14, 0xb9, 0xd3, 0x3e,
408         0x0d, 0x7a
409 };
410
411 static uint8_t scalar_secp521r1[] = {
412         0x00, 0xdc, 0x8d, 0xaa, 0xac, 0xdd, 0xb8, 0xfd,
413         0x2f, 0xf5, 0xc3, 0x4a, 0x5c, 0xe1, 0x83, 0xa4,
414         0x22, 0x61, 0xad, 0x3c, 0x64, 0xdb, 0xfc, 0x09,
415         0x5e, 0x58, 0x92, 0x43, 0x64, 0xdc, 0x47, 0xea,
416         0x1c, 0x05, 0xe2, 0x59, 0x9a, 0xae, 0x91, 0x7c,
417         0x2c, 0x95, 0xf4, 0x7d, 0x6b, 0xb3, 0x7d, 0xa0,
418         0x08, 0xaf, 0x9f, 0x55, 0x73, 0x0d, 0xdb, 0xe4,
419         0xd8, 0xde, 0xd2, 0x4f, 0x9e, 0x8d, 0xaa, 0x46,
420         0xdb, 0x6a
421 };
422
423 static uint8_t pubkey_qx_secp521r1[] = {
424         0x00, 0x7d, 0x04, 0x2c, 0xa1, 0x94, 0x08, 0x52,
425         0x4e, 0x68, 0xb9, 0x81, 0xf1, 0x41, 0x93, 0x51,
426         0xe3, 0xb8, 0x47, 0x36, 0xc7, 0x7f, 0xe5, 0x8f,
427         0xee, 0x7d, 0x11, 0x31, 0x7d, 0xf2, 0xe8, 0x50,
428         0xd9, 0x60, 0xc7, 0xdd, 0x10, 0xd1, 0x0b, 0xa7,
429         0x14, 0xc8, 0xa6, 0x09, 0xd1, 0x63, 0x50, 0x2b,
430         0x79, 0xd6, 0x82, 0xe8, 0xbb, 0xec, 0xd4, 0xf5,
431         0x25, 0x91, 0xd2, 0x74, 0x85, 0x33, 0xe4, 0x5a,
432         0x86, 0x7a
433 };
434
435 static uint8_t pubkey_qy_secp521r1[] = {
436         0x01, 0x97, 0xac, 0x64, 0x16, 0x11, 0x1c, 0xcf,
437         0x98, 0x7d, 0x29, 0x04, 0x59, 0xeb, 0xc8, 0xad,
438         0x9e, 0xc5, 0x6e, 0x49, 0x05, 0x9c, 0x99, 0x21,
439         0x55, 0x53, 0x9a, 0x36, 0xa6, 0x26, 0x63, 0x1f,
440         0x4a, 0x2d, 0x89, 0x16, 0x4b, 0x98, 0x51, 0x54,
441         0xf2, 0xdd, 0xdc, 0x02, 0x81, 0xee, 0x5b, 0x51,
442         0x78, 0x27, 0x1f, 0x3a, 0x76, 0xa0, 0x91, 0x4c,
443         0x3f, 0xcd, 0x1f, 0x97, 0xbe, 0x8e, 0x83, 0x76,
444         0xef, 0xb3
445 };
446
447 static uint8_t sign_secp521r1_r[] = {
448         0x00, 0x9d, 0xd1, 0xf2, 0xa7, 0x16, 0x84, 0x3e,
449         0xed, 0xec, 0x7a, 0x66, 0x45, 0xac, 0x83, 0x4d,
450         0x43, 0x36, 0xe7, 0xb1, 0x8e, 0x35, 0x70, 0x1f,
451         0x06, 0xca, 0xe9, 0xd6, 0xb2, 0x90, 0xd4, 0x14,
452         0x91, 0x42, 0x47, 0x35, 0xf3, 0xb5, 0x7e, 0x82,
453         0x9a, 0xd5, 0xde, 0x05, 0x5e, 0xae, 0xef, 0x17,
454         0x78, 0xf0, 0x51, 0xc1, 0xee, 0x15, 0x2b, 0xf2,
455         0x13, 0x1a, 0x08, 0x1e, 0x53, 0xdf, 0x2a, 0x56,
456         0x7a, 0x8a
457 };
458
459 static uint8_t sign_secp521r1_s[] = {
460         0x00, 0x21, 0x48, 0xe8, 0x42, 0x8d, 0x70, 0xa7,
461         0x2b, 0xc9, 0xfa, 0x98, 0x6c, 0x38, 0xc2, 0xc9,
462         0x7d, 0xed, 0xa0, 0x42, 0x0f, 0x22, 0x2f, 0x9d,
463         0xc9, 0x9d, 0x32, 0xc0, 0xac, 0xba, 0x69, 0x9d,
464         0xc7, 0xba, 0x0a, 0x2b, 0x79, 0xce, 0x59, 0x99,
465         0xff, 0x61, 0xbd, 0x0b, 0x23, 0x3c, 0x74, 0x4a,
466         0x89, 0x3b, 0xc1, 0x05, 0xbc, 0xa5, 0xc2, 0x35,
467         0x42, 0x3e, 0x53, 0x16, 0x12, 0xda, 0x65, 0xd7,
468         0x2e, 0x62
469 };
470
471 /** ECDSA SECP521R1 elliptic curve param */
472
473 struct crypto_testsuite_ecdsa_params ecdsa_param_secp521r1 = {
474         .pubkey_qx = {
475                 .data = pubkey_qx_secp521r1,
476                 .length = sizeof(pubkey_qx_secp521r1),
477         },
478         .pubkey_qy = {
479                 .data = pubkey_qy_secp521r1,
480                 .length = sizeof(pubkey_qy_secp521r1),
481         },
482         .scalar = {
483                 .data = scalar_secp521r1,
484                 .length = sizeof(scalar_secp521r1),
485         },
486         .digest = {
487                 .data = digest_secp521r1,
488                 .length = sizeof(digest_secp521r1),
489         },
490         .sign_r = {
491                 .data = sign_secp521r1_r,
492                 .length = sizeof(sign_secp521r1_r),
493         },
494         .sign_s = {
495                 .data = sign_secp521r1_s,
496                 .length = sizeof(sign_secp521r1_s),
497         },
498         .pkey = {
499                 .data = pkey_secp521r1,
500                 .length = sizeof(pkey_secp521r1),
501         },
502         .curve = RTE_CRYPTO_EC_GROUP_SECP521R1
503 };
504
505 #endif /* __TEST_CRYPTODEV_ECDSA_TEST_VECTORS_H__ */