xref: /freebsd/crypto/libecc/src/tests/decdsa_test_vectors.h (revision f0865ec9906d5a18fa2a3b61381f22ce16e606ad)
1*f0865ec9SKyle Evans /*
2*f0865ec9SKyle Evans  *  Copyright (C) 2021 - This file is part of libecc project
3*f0865ec9SKyle Evans  *
4*f0865ec9SKyle Evans  *  Authors:
5*f0865ec9SKyle Evans  *      Ryad BENADJILA <ryadbenadjila@gmail.com>
6*f0865ec9SKyle Evans  *      Arnaud EBALARD <arnaud.ebalard@ssi.gouv.fr>
7*f0865ec9SKyle Evans  *
8*f0865ec9SKyle Evans  *  This software is licensed under a dual BSD and GPL v2 license.
9*f0865ec9SKyle Evans  *  See LICENSE file at the root folder of the project.
10*f0865ec9SKyle Evans  */
11*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA224
12*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP192R1
13*f0865ec9SKyle Evans #define DECDSA_SHA224_SECP192R1_SELF_TEST_0
14*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA224/SECP192R1 ***/
15*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP192R1_SHA224_0_test_vector_expected_sig[] = {
16*f0865ec9SKyle Evans 	0xa1, 0xf0, 0x0d, 0xad, 0x97, 0xae, 0xec, 0x91,
17*f0865ec9SKyle Evans 	0xc9, 0x55, 0x85, 0xf3, 0x62, 0x00, 0xc6, 0x5f,
18*f0865ec9SKyle Evans 	0x3c, 0x01, 0x81, 0x2a, 0xa6, 0x03, 0x78, 0xf5,
19*f0865ec9SKyle Evans 	0xe0, 0x7e, 0xc1, 0x30, 0x4c, 0x7c, 0x6c, 0x9d,
20*f0865ec9SKyle Evans 	0xeb, 0xbe, 0x98, 0x0b, 0x96, 0x92, 0x66, 0x8f,
21*f0865ec9SKyle Evans 	0x81, 0xd4, 0xde, 0x79, 0x22, 0xa0, 0xf9, 0x7a
22*f0865ec9SKyle Evans };
23*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP192R1_SHA224_0_test_vector_priv_key[] = {
24*f0865ec9SKyle Evans 	0x6f, 0xab, 0x03, 0x49, 0x34, 0xe4, 0xc0, 0xfc,
25*f0865ec9SKyle Evans 	0x9a, 0xe6, 0x7f, 0x5b, 0x56, 0x59, 0xa9, 0xd7,
26*f0865ec9SKyle Evans 	0xd1, 0xfe, 0xfd, 0x18, 0x7e, 0xe0, 0x9f, 0xd4
27*f0865ec9SKyle Evans };
28*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP192R1_SHA224_0_test_case = {
29*f0865ec9SKyle Evans 	.name="DECDSA-SHA224/SECP192R1 0",
30*f0865ec9SKyle Evans 	.ec_str_p = &secp192r1_str_params,
31*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP192R1_SHA224_0_test_vector_priv_key,
32*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP192R1_SHA224_0_test_vector_priv_key),
33*f0865ec9SKyle Evans 	.nn_random = NULL,
34*f0865ec9SKyle Evans 	.hash_type = SHA224,
35*f0865ec9SKyle Evans 	.msg = "sample",
36*f0865ec9SKyle Evans 	.msglen = 6,
37*f0865ec9SKyle Evans 	.sig_type = DECDSA,
38*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP192R1_SHA224_0_test_vector_expected_sig,
39*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP192R1_SHA224_0_test_vector_expected_sig),
40*f0865ec9SKyle Evans 	.adata = NULL,
41*f0865ec9SKyle Evans 	.adata_len = 0
42*f0865ec9SKyle Evans };
43*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP192R1 */
44*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA224 */
45*f0865ec9SKyle Evans 
46*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA256
47*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP192R1
48*f0865ec9SKyle Evans #define DECDSA_SHA256_SECP192R1_SELF_TEST_0
49*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA256/SECP192R1 ***/
50*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP192R1_SHA256_0_test_vector_expected_sig[] = {
51*f0865ec9SKyle Evans 	0x4b, 0x0b, 0x8c, 0xe9, 0x8a, 0x92, 0x86, 0x6a,
52*f0865ec9SKyle Evans 	0x28, 0x20, 0xe2, 0x0a, 0xa6, 0xb7, 0x5b, 0x56,
53*f0865ec9SKyle Evans 	0x38, 0x2e, 0x0f, 0x9b, 0xfd, 0x5e, 0xcb, 0x55,
54*f0865ec9SKyle Evans 	0xcc, 0xdb, 0x00, 0x69, 0x26, 0xea, 0x95, 0x65,
55*f0865ec9SKyle Evans 	0xcb, 0xad, 0xc8, 0x40, 0x82, 0x9d, 0x8c, 0x38,
56*f0865ec9SKyle Evans 	0x4e, 0x06, 0xde, 0x1f, 0x1e, 0x38, 0x1b, 0x85
57*f0865ec9SKyle Evans };
58*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP192R1_SHA256_0_test_vector_priv_key[] = {
59*f0865ec9SKyle Evans 	0x6f, 0xab, 0x03, 0x49, 0x34, 0xe4, 0xc0, 0xfc,
60*f0865ec9SKyle Evans 	0x9a, 0xe6, 0x7f, 0x5b, 0x56, 0x59, 0xa9, 0xd7,
61*f0865ec9SKyle Evans 	0xd1, 0xfe, 0xfd, 0x18, 0x7e, 0xe0, 0x9f, 0xd4
62*f0865ec9SKyle Evans };
63*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP192R1_SHA256_0_test_case = {
64*f0865ec9SKyle Evans 	.name="DECDSA-SHA256/SECP192R1 0",
65*f0865ec9SKyle Evans 	.ec_str_p = &secp192r1_str_params,
66*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP192R1_SHA256_0_test_vector_priv_key,
67*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP192R1_SHA256_0_test_vector_priv_key),
68*f0865ec9SKyle Evans 	.nn_random = NULL,
69*f0865ec9SKyle Evans 	.hash_type = SHA256,
70*f0865ec9SKyle Evans 	.msg = "sample",
71*f0865ec9SKyle Evans 	.msglen = 6,
72*f0865ec9SKyle Evans 	.sig_type = DECDSA,
73*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP192R1_SHA256_0_test_vector_expected_sig,
74*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP192R1_SHA256_0_test_vector_expected_sig),
75*f0865ec9SKyle Evans 	.adata = NULL,
76*f0865ec9SKyle Evans 	.adata_len = 0
77*f0865ec9SKyle Evans };
78*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP192R1 */
79*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA256 */
80*f0865ec9SKyle Evans 
81*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA384
82*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP192R1
83*f0865ec9SKyle Evans #define DECDSA_SHA384_SECP192R1_SELF_TEST_0
84*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA384/SECP192R1 ***/
85*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP192R1_SHA384_0_test_vector_expected_sig[] = {
86*f0865ec9SKyle Evans 	0xda, 0x63, 0xbf, 0x0b, 0x9a, 0xbc, 0xf9, 0x48,
87*f0865ec9SKyle Evans 	0xfb, 0xb1, 0xe9, 0x16, 0x7f, 0x13, 0x61, 0x45,
88*f0865ec9SKyle Evans 	0xf7, 0xa2, 0x04, 0x26, 0xdc, 0xc2, 0x87, 0xd5,
89*f0865ec9SKyle Evans 	0xc3, 0xaa, 0x2c, 0x96, 0x09, 0x72, 0xbd, 0x7a,
90*f0865ec9SKyle Evans 	0x20, 0x03, 0xa5, 0x7e, 0x1c, 0x4c, 0x77, 0xf0,
91*f0865ec9SKyle Evans 	0x57, 0x8f, 0x8a, 0xe9, 0x5e, 0x31, 0xec, 0x5e
92*f0865ec9SKyle Evans };
93*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP192R1_SHA384_0_test_vector_priv_key[] = {
94*f0865ec9SKyle Evans 	0x6f, 0xab, 0x03, 0x49, 0x34, 0xe4, 0xc0, 0xfc,
95*f0865ec9SKyle Evans 	0x9a, 0xe6, 0x7f, 0x5b, 0x56, 0x59, 0xa9, 0xd7,
96*f0865ec9SKyle Evans 	0xd1, 0xfe, 0xfd, 0x18, 0x7e, 0xe0, 0x9f, 0xd4
97*f0865ec9SKyle Evans };
98*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP192R1_SHA384_0_test_case = {
99*f0865ec9SKyle Evans 	.name="DECDSA-SHA384/SECP192R1 0",
100*f0865ec9SKyle Evans 	.ec_str_p = &secp192r1_str_params,
101*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP192R1_SHA384_0_test_vector_priv_key,
102*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP192R1_SHA384_0_test_vector_priv_key),
103*f0865ec9SKyle Evans 	.nn_random = NULL,
104*f0865ec9SKyle Evans 	.hash_type = SHA384,
105*f0865ec9SKyle Evans 	.msg = "sample",
106*f0865ec9SKyle Evans 	.msglen = 6,
107*f0865ec9SKyle Evans 	.sig_type = DECDSA,
108*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP192R1_SHA384_0_test_vector_expected_sig,
109*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP192R1_SHA384_0_test_vector_expected_sig),
110*f0865ec9SKyle Evans 	.adata = NULL,
111*f0865ec9SKyle Evans 	.adata_len = 0
112*f0865ec9SKyle Evans };
113*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP192R1 */
114*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA384 */
115*f0865ec9SKyle Evans 
116*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA512
117*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP192R1
118*f0865ec9SKyle Evans #define DECDSA_SHA512_SECP192R1_SELF_TEST_0
119*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA512/SECP192R1 ***/
120*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP192R1_SHA512_0_test_vector_expected_sig[] = {
121*f0865ec9SKyle Evans 	0x4d, 0x60, 0xc5, 0xab, 0x19, 0x96, 0xbd, 0x84,
122*f0865ec9SKyle Evans 	0x83, 0x43, 0xb3, 0x1c, 0x00, 0x85, 0x02, 0x05,
123*f0865ec9SKyle Evans 	0xe2, 0xea, 0x69, 0x22, 0xda, 0xc2, 0xe4, 0xb8,
124*f0865ec9SKyle Evans 	0x3f, 0x6e, 0x83, 0x74, 0x48, 0xf0, 0x27, 0xa1,
125*f0865ec9SKyle Evans 	0xbf, 0x4b, 0x34, 0xe7, 0x96, 0xe3, 0x2a, 0x81,
126*f0865ec9SKyle Evans 	0x1c, 0xbb, 0x40, 0x50, 0x90, 0x8d, 0x8f, 0x67
127*f0865ec9SKyle Evans };
128*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP192R1_SHA512_0_test_vector_priv_key[] = {
129*f0865ec9SKyle Evans 	0x6f, 0xab, 0x03, 0x49, 0x34, 0xe4, 0xc0, 0xfc,
130*f0865ec9SKyle Evans 	0x9a, 0xe6, 0x7f, 0x5b, 0x56, 0x59, 0xa9, 0xd7,
131*f0865ec9SKyle Evans 	0xd1, 0xfe, 0xfd, 0x18, 0x7e, 0xe0, 0x9f, 0xd4
132*f0865ec9SKyle Evans };
133*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP192R1_SHA512_0_test_case = {
134*f0865ec9SKyle Evans 	.name="DECDSA-SHA512/SECP192R1 0",
135*f0865ec9SKyle Evans 	.ec_str_p = &secp192r1_str_params,
136*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP192R1_SHA512_0_test_vector_priv_key,
137*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP192R1_SHA512_0_test_vector_priv_key),
138*f0865ec9SKyle Evans 	.nn_random = NULL,
139*f0865ec9SKyle Evans 	.hash_type = SHA512,
140*f0865ec9SKyle Evans 	.msg = "sample",
141*f0865ec9SKyle Evans 	.msglen = 6,
142*f0865ec9SKyle Evans 	.sig_type = DECDSA,
143*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP192R1_SHA512_0_test_vector_expected_sig,
144*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP192R1_SHA512_0_test_vector_expected_sig),
145*f0865ec9SKyle Evans 	.adata = NULL,
146*f0865ec9SKyle Evans 	.adata_len = 0
147*f0865ec9SKyle Evans };
148*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP192R1 */
149*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA512 */
150*f0865ec9SKyle Evans 
151*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA224
152*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP192R1
153*f0865ec9SKyle Evans #define DECDSA_SHA224_SECP192R1_SELF_TEST_1
154*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA224/SECP192R1 ***/
155*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP192R1_SHA224_1_test_vector_expected_sig[] = {
156*f0865ec9SKyle Evans 	0x69, 0x45, 0xa1, 0xc1, 0xd1, 0xb2, 0x20, 0x6b,
157*f0865ec9SKyle Evans 	0x81, 0x45, 0x54, 0x8f, 0x63, 0x3b, 0xb6, 0x1c,
158*f0865ec9SKyle Evans 	0xef, 0x04, 0x89, 0x1b, 0xaf, 0x26, 0xed, 0x34,
159*f0865ec9SKyle Evans 	0xb7, 0xfb, 0x7f, 0xdf, 0xc3, 0x39, 0xc0, 0xb9,
160*f0865ec9SKyle Evans 	0xbd, 0x61, 0xa9, 0xf5, 0xa8, 0xea, 0xf9, 0xbe,
161*f0865ec9SKyle Evans 	0x58, 0xfc, 0x5c, 0xba, 0x2c, 0xb1, 0x52, 0x93
162*f0865ec9SKyle Evans };
163*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP192R1_SHA224_1_test_vector_priv_key[] = {
164*f0865ec9SKyle Evans 	0x6f, 0xab, 0x03, 0x49, 0x34, 0xe4, 0xc0, 0xfc,
165*f0865ec9SKyle Evans 	0x9a, 0xe6, 0x7f, 0x5b, 0x56, 0x59, 0xa9, 0xd7,
166*f0865ec9SKyle Evans 	0xd1, 0xfe, 0xfd, 0x18, 0x7e, 0xe0, 0x9f, 0xd4
167*f0865ec9SKyle Evans };
168*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP192R1_SHA224_1_test_case = {
169*f0865ec9SKyle Evans 	.name="DECDSA-SHA224/SECP192R1 1",
170*f0865ec9SKyle Evans 	.ec_str_p = &secp192r1_str_params,
171*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP192R1_SHA224_1_test_vector_priv_key,
172*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP192R1_SHA224_1_test_vector_priv_key),
173*f0865ec9SKyle Evans 	.nn_random = NULL,
174*f0865ec9SKyle Evans 	.hash_type = SHA224,
175*f0865ec9SKyle Evans 	.msg = "test",
176*f0865ec9SKyle Evans 	.msglen = 4,
177*f0865ec9SKyle Evans 	.sig_type = DECDSA,
178*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP192R1_SHA224_1_test_vector_expected_sig,
179*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP192R1_SHA224_1_test_vector_expected_sig),
180*f0865ec9SKyle Evans 	.adata = NULL,
181*f0865ec9SKyle Evans 	.adata_len = 0
182*f0865ec9SKyle Evans };
183*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP192R1 */
184*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA224 */
185*f0865ec9SKyle Evans 
186*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA256
187*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP192R1
188*f0865ec9SKyle Evans #define DECDSA_SHA256_SECP192R1_SELF_TEST_1
189*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA256/SECP192R1 ***/
190*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP192R1_SHA256_1_test_vector_expected_sig[] = {
191*f0865ec9SKyle Evans 	0x3a, 0x71, 0x8b, 0xd8, 0xb4, 0x92, 0x6c, 0x3b,
192*f0865ec9SKyle Evans 	0x52, 0xee, 0x6b, 0xbe, 0x67, 0xef, 0x79, 0xb1,
193*f0865ec9SKyle Evans 	0x8c, 0xb6, 0xeb, 0x62, 0xb1, 0xad, 0x97, 0xae,
194*f0865ec9SKyle Evans 	0x56, 0x62, 0xe6, 0x84, 0x8a, 0x4a, 0x19, 0xb1,
195*f0865ec9SKyle Evans 	0xf1, 0xae, 0x2f, 0x72, 0xac, 0xd4, 0xb8, 0xbb,
196*f0865ec9SKyle Evans 	0xe5, 0x0f, 0x1e, 0xac, 0x65, 0xd9, 0x12, 0x4f
197*f0865ec9SKyle Evans };
198*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP192R1_SHA256_1_test_vector_priv_key[] = {
199*f0865ec9SKyle Evans 	0x6f, 0xab, 0x03, 0x49, 0x34, 0xe4, 0xc0, 0xfc,
200*f0865ec9SKyle Evans 	0x9a, 0xe6, 0x7f, 0x5b, 0x56, 0x59, 0xa9, 0xd7,
201*f0865ec9SKyle Evans 	0xd1, 0xfe, 0xfd, 0x18, 0x7e, 0xe0, 0x9f, 0xd4
202*f0865ec9SKyle Evans };
203*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP192R1_SHA256_1_test_case = {
204*f0865ec9SKyle Evans 	.name="DECDSA-SHA256/SECP192R1 1",
205*f0865ec9SKyle Evans 	.ec_str_p = &secp192r1_str_params,
206*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP192R1_SHA256_1_test_vector_priv_key,
207*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP192R1_SHA256_1_test_vector_priv_key),
208*f0865ec9SKyle Evans 	.nn_random = NULL,
209*f0865ec9SKyle Evans 	.hash_type = SHA256,
210*f0865ec9SKyle Evans 	.msg = "test",
211*f0865ec9SKyle Evans 	.msglen = 4,
212*f0865ec9SKyle Evans 	.sig_type = DECDSA,
213*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP192R1_SHA256_1_test_vector_expected_sig,
214*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP192R1_SHA256_1_test_vector_expected_sig),
215*f0865ec9SKyle Evans 	.adata = NULL,
216*f0865ec9SKyle Evans 	.adata_len = 0
217*f0865ec9SKyle Evans };
218*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP192R1 */
219*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA256 */
220*f0865ec9SKyle Evans 
221*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA384
222*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP192R1
223*f0865ec9SKyle Evans #define DECDSA_SHA384_SECP192R1_SELF_TEST_1
224*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA384/SECP192R1 ***/
225*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP192R1_SHA384_1_test_vector_expected_sig[] = {
226*f0865ec9SKyle Evans 	0xb2, 0x34, 0xb6, 0x0b, 0x4d, 0xb7, 0x5a, 0x73,
227*f0865ec9SKyle Evans 	0x3e, 0x19, 0x28, 0x0a, 0x7a, 0x60, 0x34, 0xbd,
228*f0865ec9SKyle Evans 	0x6b, 0x1e, 0xe8, 0x8a, 0xf5, 0x33, 0x23, 0x67,
229*f0865ec9SKyle Evans 	0x79, 0x94, 0x09, 0x0b, 0x2d, 0x59, 0xbb, 0x78,
230*f0865ec9SKyle Evans 	0x2b, 0xe5, 0x7e, 0x74, 0xa4, 0x4c, 0x9a, 0x1c,
231*f0865ec9SKyle Evans 	0x70, 0x04, 0x13, 0xf8, 0xab, 0xef, 0xe7, 0x7a
232*f0865ec9SKyle Evans };
233*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP192R1_SHA384_1_test_vector_priv_key[] = {
234*f0865ec9SKyle Evans 	0x6f, 0xab, 0x03, 0x49, 0x34, 0xe4, 0xc0, 0xfc,
235*f0865ec9SKyle Evans 	0x9a, 0xe6, 0x7f, 0x5b, 0x56, 0x59, 0xa9, 0xd7,
236*f0865ec9SKyle Evans 	0xd1, 0xfe, 0xfd, 0x18, 0x7e, 0xe0, 0x9f, 0xd4
237*f0865ec9SKyle Evans };
238*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP192R1_SHA384_1_test_case = {
239*f0865ec9SKyle Evans 	.name="DECDSA-SHA384/SECP192R1 1",
240*f0865ec9SKyle Evans 	.ec_str_p = &secp192r1_str_params,
241*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP192R1_SHA384_1_test_vector_priv_key,
242*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP192R1_SHA384_1_test_vector_priv_key),
243*f0865ec9SKyle Evans 	.nn_random = NULL,
244*f0865ec9SKyle Evans 	.hash_type = SHA384,
245*f0865ec9SKyle Evans 	.msg = "test",
246*f0865ec9SKyle Evans 	.msglen = 4,
247*f0865ec9SKyle Evans 	.sig_type = DECDSA,
248*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP192R1_SHA384_1_test_vector_expected_sig,
249*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP192R1_SHA384_1_test_vector_expected_sig),
250*f0865ec9SKyle Evans 	.adata = NULL,
251*f0865ec9SKyle Evans 	.adata_len = 0
252*f0865ec9SKyle Evans };
253*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP192R1 */
254*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA384 */
255*f0865ec9SKyle Evans 
256*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA512
257*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP192R1
258*f0865ec9SKyle Evans #define DECDSA_SHA512_SECP192R1_SELF_TEST_1
259*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA512/SECP192R1 ***/
260*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP192R1_SHA512_1_test_vector_expected_sig[] = {
261*f0865ec9SKyle Evans 	0xfe, 0x4f, 0x4a, 0xe8, 0x6a, 0x58, 0xb6, 0x50,
262*f0865ec9SKyle Evans 	0x79, 0x46, 0x71, 0x59, 0x34, 0xfe, 0x2d, 0x8f,
263*f0865ec9SKyle Evans 	0xf9, 0xd9, 0x5b, 0x6b, 0x09, 0x8f, 0xe7, 0x39,
264*f0865ec9SKyle Evans 	0x74, 0xcf, 0x56, 0x05, 0xc9, 0x8f, 0xba, 0x0e,
265*f0865ec9SKyle Evans 	0x1e, 0xf3, 0x4d, 0x4b, 0x5a, 0x15, 0x77, 0xa7,
266*f0865ec9SKyle Evans 	0xdc, 0xf5, 0x94, 0x57, 0xca, 0xe5, 0x22, 0x90
267*f0865ec9SKyle Evans };
268*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP192R1_SHA512_1_test_vector_priv_key[] = {
269*f0865ec9SKyle Evans 	0x6f, 0xab, 0x03, 0x49, 0x34, 0xe4, 0xc0, 0xfc,
270*f0865ec9SKyle Evans 	0x9a, 0xe6, 0x7f, 0x5b, 0x56, 0x59, 0xa9, 0xd7,
271*f0865ec9SKyle Evans 	0xd1, 0xfe, 0xfd, 0x18, 0x7e, 0xe0, 0x9f, 0xd4
272*f0865ec9SKyle Evans };
273*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP192R1_SHA512_1_test_case = {
274*f0865ec9SKyle Evans 	.name="DECDSA-SHA512/SECP192R1 1",
275*f0865ec9SKyle Evans 	.ec_str_p = &secp192r1_str_params,
276*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP192R1_SHA512_1_test_vector_priv_key,
277*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP192R1_SHA512_1_test_vector_priv_key),
278*f0865ec9SKyle Evans 	.nn_random = NULL,
279*f0865ec9SKyle Evans 	.hash_type = SHA512,
280*f0865ec9SKyle Evans 	.msg = "test",
281*f0865ec9SKyle Evans 	.msglen = 4,
282*f0865ec9SKyle Evans 	.sig_type = DECDSA,
283*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP192R1_SHA512_1_test_vector_expected_sig,
284*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP192R1_SHA512_1_test_vector_expected_sig),
285*f0865ec9SKyle Evans 	.adata = NULL,
286*f0865ec9SKyle Evans 	.adata_len = 0
287*f0865ec9SKyle Evans };
288*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP192R1 */
289*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA512 */
290*f0865ec9SKyle Evans 
291*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA224
292*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP256R1
293*f0865ec9SKyle Evans #define DECDSA_SHA224_SECP256R1_SELF_TEST_0
294*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA224/SECP256R1 ***/
295*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP256R1_SHA224_0_test_vector_expected_sig[] = {
296*f0865ec9SKyle Evans 	0x53, 0xb2, 0xff, 0xf5, 0xd1, 0x75, 0x2b, 0x2c,
297*f0865ec9SKyle Evans 	0x68, 0x9d, 0xf2, 0x57, 0xc0, 0x4c, 0x40, 0xa5,
298*f0865ec9SKyle Evans 	0x87, 0xfa, 0xba, 0xbb, 0x3f, 0x6f, 0xc2, 0x70,
299*f0865ec9SKyle Evans 	0x2f, 0x13, 0x43, 0xaf, 0x7c, 0xa9, 0xaa, 0x3f,
300*f0865ec9SKyle Evans 	0xb9, 0xaf, 0xb6, 0x4f, 0xdc, 0x03, 0xdc, 0x1a,
301*f0865ec9SKyle Evans 	0x13, 0x1c, 0x7d, 0x23, 0x86, 0xd1, 0x1e, 0x34,
302*f0865ec9SKyle Evans 	0x9f, 0x07, 0x0a, 0xa4, 0x32, 0xa4, 0xac, 0xc9,
303*f0865ec9SKyle Evans 	0x18, 0xbe, 0xa9, 0x88, 0xbf, 0x75, 0xc7, 0x4c
304*f0865ec9SKyle Evans };
305*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP256R1_SHA224_0_test_vector_priv_key[] = {
306*f0865ec9SKyle Evans 	0xc9, 0xaf, 0xa9, 0xd8, 0x45, 0xba, 0x75, 0x16,
307*f0865ec9SKyle Evans 	0x6b, 0x5c, 0x21, 0x57, 0x67, 0xb1, 0xd6, 0x93,
308*f0865ec9SKyle Evans 	0x4e, 0x50, 0xc3, 0xdb, 0x36, 0xe8, 0x9b, 0x12,
309*f0865ec9SKyle Evans 	0x7b, 0x8a, 0x62, 0x2b, 0x12, 0x0f, 0x67, 0x21
310*f0865ec9SKyle Evans };
311*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP256R1_SHA224_0_test_case = {
312*f0865ec9SKyle Evans 	.name="DECDSA-SHA224/SECP256R1 0",
313*f0865ec9SKyle Evans 	.ec_str_p = &secp256r1_str_params,
314*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP256R1_SHA224_0_test_vector_priv_key,
315*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP256R1_SHA224_0_test_vector_priv_key),
316*f0865ec9SKyle Evans 	.nn_random = NULL,
317*f0865ec9SKyle Evans 	.hash_type = SHA224,
318*f0865ec9SKyle Evans 	.msg = "sample",
319*f0865ec9SKyle Evans 	.msglen = 6,
320*f0865ec9SKyle Evans 	.sig_type = DECDSA,
321*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP256R1_SHA224_0_test_vector_expected_sig,
322*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP256R1_SHA224_0_test_vector_expected_sig),
323*f0865ec9SKyle Evans 	.adata = NULL,
324*f0865ec9SKyle Evans 	.adata_len = 0
325*f0865ec9SKyle Evans };
326*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP256R1 */
327*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA224 */
328*f0865ec9SKyle Evans 
329*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA256
330*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP256R1
331*f0865ec9SKyle Evans #define DECDSA_SHA256_SECP256R1_SELF_TEST_0
332*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA256/SECP256R1 ***/
333*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP256R1_SHA256_0_test_vector_expected_sig[] = {
334*f0865ec9SKyle Evans 	0xef, 0xd4, 0x8b, 0x2a, 0xac, 0xb6, 0xa8, 0xfd,
335*f0865ec9SKyle Evans 	0x11, 0x40, 0xdd, 0x9c, 0xd4, 0x5e, 0x81, 0xd6,
336*f0865ec9SKyle Evans 	0x9d, 0x2c, 0x87, 0x7b, 0x56, 0xaa, 0xf9, 0x91,
337*f0865ec9SKyle Evans 	0xc3, 0x4d, 0x0e, 0xa8, 0x4e, 0xaf, 0x37, 0x16,
338*f0865ec9SKyle Evans 	0xf7, 0xcb, 0x1c, 0x94, 0x2d, 0x65, 0x7c, 0x41,
339*f0865ec9SKyle Evans 	0xd4, 0x36, 0xc7, 0xa1, 0xb6, 0xe2, 0x9f, 0x65,
340*f0865ec9SKyle Evans 	0xf3, 0xe9, 0x00, 0xdb, 0xb9, 0xaf, 0xf4, 0x06,
341*f0865ec9SKyle Evans 	0x4d, 0xc4, 0xab, 0x2f, 0x84, 0x3a, 0xcd, 0xa8
342*f0865ec9SKyle Evans };
343*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP256R1_SHA256_0_test_vector_priv_key[] = {
344*f0865ec9SKyle Evans 	0xc9, 0xaf, 0xa9, 0xd8, 0x45, 0xba, 0x75, 0x16,
345*f0865ec9SKyle Evans 	0x6b, 0x5c, 0x21, 0x57, 0x67, 0xb1, 0xd6, 0x93,
346*f0865ec9SKyle Evans 	0x4e, 0x50, 0xc3, 0xdb, 0x36, 0xe8, 0x9b, 0x12,
347*f0865ec9SKyle Evans 	0x7b, 0x8a, 0x62, 0x2b, 0x12, 0x0f, 0x67, 0x21
348*f0865ec9SKyle Evans };
349*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP256R1_SHA256_0_test_case = {
350*f0865ec9SKyle Evans 	.name="DECDSA-SHA256/SECP256R1 0",
351*f0865ec9SKyle Evans 	.ec_str_p = &secp256r1_str_params,
352*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP256R1_SHA256_0_test_vector_priv_key,
353*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP256R1_SHA256_0_test_vector_priv_key),
354*f0865ec9SKyle Evans 	.nn_random = NULL,
355*f0865ec9SKyle Evans 	.hash_type = SHA256,
356*f0865ec9SKyle Evans 	.msg = "sample",
357*f0865ec9SKyle Evans 	.msglen = 6,
358*f0865ec9SKyle Evans 	.sig_type = DECDSA,
359*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP256R1_SHA256_0_test_vector_expected_sig,
360*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP256R1_SHA256_0_test_vector_expected_sig),
361*f0865ec9SKyle Evans 	.adata = NULL,
362*f0865ec9SKyle Evans 	.adata_len = 0
363*f0865ec9SKyle Evans };
364*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP256R1 */
365*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA256 */
366*f0865ec9SKyle Evans 
367*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA384
368*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP256R1
369*f0865ec9SKyle Evans #define DECDSA_SHA384_SECP256R1_SELF_TEST_0
370*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA384/SECP256R1 ***/
371*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP256R1_SHA384_0_test_vector_expected_sig[] = {
372*f0865ec9SKyle Evans 	0x0e, 0xaf, 0xea, 0x03, 0x9b, 0x20, 0xe9, 0xb4,
373*f0865ec9SKyle Evans 	0x23, 0x09, 0xfb, 0x1d, 0x89, 0xe2, 0x13, 0x05,
374*f0865ec9SKyle Evans 	0x7c, 0xbf, 0x97, 0x3d, 0xc0, 0xcf, 0xc8, 0xf1,
375*f0865ec9SKyle Evans 	0x29, 0xed, 0xdd, 0xc8, 0x00, 0xef, 0x77, 0x19,
376*f0865ec9SKyle Evans 	0x48, 0x61, 0xf0, 0x49, 0x1e, 0x69, 0x98, 0xb9,
377*f0865ec9SKyle Evans 	0x45, 0x51, 0x93, 0xe3, 0x4e, 0x7b, 0x0d, 0x28,
378*f0865ec9SKyle Evans 	0x4d, 0xdd, 0x71, 0x49, 0xa7, 0x4b, 0x95, 0xb9,
379*f0865ec9SKyle Evans 	0x26, 0x1f, 0x13, 0xab, 0xde, 0x94, 0x09, 0x54
380*f0865ec9SKyle Evans };
381*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP256R1_SHA384_0_test_vector_priv_key[] = {
382*f0865ec9SKyle Evans 	0xc9, 0xaf, 0xa9, 0xd8, 0x45, 0xba, 0x75, 0x16,
383*f0865ec9SKyle Evans 	0x6b, 0x5c, 0x21, 0x57, 0x67, 0xb1, 0xd6, 0x93,
384*f0865ec9SKyle Evans 	0x4e, 0x50, 0xc3, 0xdb, 0x36, 0xe8, 0x9b, 0x12,
385*f0865ec9SKyle Evans 	0x7b, 0x8a, 0x62, 0x2b, 0x12, 0x0f, 0x67, 0x21
386*f0865ec9SKyle Evans };
387*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP256R1_SHA384_0_test_case = {
388*f0865ec9SKyle Evans 	.name="DECDSA-SHA384/SECP256R1 0",
389*f0865ec9SKyle Evans 	.ec_str_p = &secp256r1_str_params,
390*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP256R1_SHA384_0_test_vector_priv_key,
391*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP256R1_SHA384_0_test_vector_priv_key),
392*f0865ec9SKyle Evans 	.nn_random = NULL,
393*f0865ec9SKyle Evans 	.hash_type = SHA384,
394*f0865ec9SKyle Evans 	.msg = "sample",
395*f0865ec9SKyle Evans 	.msglen = 6,
396*f0865ec9SKyle Evans 	.sig_type = DECDSA,
397*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP256R1_SHA384_0_test_vector_expected_sig,
398*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP256R1_SHA384_0_test_vector_expected_sig),
399*f0865ec9SKyle Evans 	.adata = NULL,
400*f0865ec9SKyle Evans 	.adata_len = 0
401*f0865ec9SKyle Evans };
402*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP256R1 */
403*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA384 */
404*f0865ec9SKyle Evans 
405*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA512
406*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP256R1
407*f0865ec9SKyle Evans #define DECDSA_SHA512_SECP256R1_SELF_TEST_0
408*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA512/SECP256R1 ***/
409*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP256R1_SHA512_0_test_vector_expected_sig[] = {
410*f0865ec9SKyle Evans 	0x84, 0x96, 0xa6, 0x0b, 0x5e, 0x9b, 0x47, 0xc8,
411*f0865ec9SKyle Evans 	0x25, 0x48, 0x88, 0x27, 0xe0, 0x49, 0x5b, 0x0e,
412*f0865ec9SKyle Evans 	0x3f, 0xa1, 0x09, 0xec, 0x45, 0x68, 0xfd, 0x3f,
413*f0865ec9SKyle Evans 	0x8d, 0x10, 0x97, 0x67, 0x8e, 0xb9, 0x7f, 0x00,
414*f0865ec9SKyle Evans 	0x23, 0x62, 0xab, 0x1a, 0xdb, 0xe2, 0xb8, 0xad,
415*f0865ec9SKyle Evans 	0xf9, 0xcb, 0x9e, 0xda, 0xb7, 0x40, 0xea, 0x60,
416*f0865ec9SKyle Evans 	0x49, 0xc0, 0x28, 0x11, 0x4f, 0x24, 0x60, 0xf9,
417*f0865ec9SKyle Evans 	0x65, 0x54, 0xf6, 0x1f, 0xae, 0x33, 0x02, 0xfe
418*f0865ec9SKyle Evans };
419*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP256R1_SHA512_0_test_vector_priv_key[] = {
420*f0865ec9SKyle Evans 	0xc9, 0xaf, 0xa9, 0xd8, 0x45, 0xba, 0x75, 0x16,
421*f0865ec9SKyle Evans 	0x6b, 0x5c, 0x21, 0x57, 0x67, 0xb1, 0xd6, 0x93,
422*f0865ec9SKyle Evans 	0x4e, 0x50, 0xc3, 0xdb, 0x36, 0xe8, 0x9b, 0x12,
423*f0865ec9SKyle Evans 	0x7b, 0x8a, 0x62, 0x2b, 0x12, 0x0f, 0x67, 0x21
424*f0865ec9SKyle Evans };
425*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP256R1_SHA512_0_test_case = {
426*f0865ec9SKyle Evans 	.name="DECDSA-SHA512/SECP256R1 0",
427*f0865ec9SKyle Evans 	.ec_str_p = &secp256r1_str_params,
428*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP256R1_SHA512_0_test_vector_priv_key,
429*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP256R1_SHA512_0_test_vector_priv_key),
430*f0865ec9SKyle Evans 	.nn_random = NULL,
431*f0865ec9SKyle Evans 	.hash_type = SHA512,
432*f0865ec9SKyle Evans 	.msg = "sample",
433*f0865ec9SKyle Evans 	.msglen = 6,
434*f0865ec9SKyle Evans 	.sig_type = DECDSA,
435*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP256R1_SHA512_0_test_vector_expected_sig,
436*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP256R1_SHA512_0_test_vector_expected_sig),
437*f0865ec9SKyle Evans 	.adata = NULL,
438*f0865ec9SKyle Evans 	.adata_len = 0
439*f0865ec9SKyle Evans };
440*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP256R1 */
441*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA512 */
442*f0865ec9SKyle Evans 
443*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA224
444*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP256R1
445*f0865ec9SKyle Evans #define DECDSA_SHA224_SECP256R1_SELF_TEST_1
446*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA224/SECP256R1 ***/
447*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP256R1_SHA224_1_test_vector_expected_sig[] = {
448*f0865ec9SKyle Evans 	0xc3, 0x7e, 0xdb, 0x6f, 0x0a, 0xe7, 0x9d, 0x47,
449*f0865ec9SKyle Evans 	0xc3, 0xc2, 0x7e, 0x96, 0x2f, 0xa2, 0x69, 0xbb,
450*f0865ec9SKyle Evans 	0x4f, 0x44, 0x17, 0x70, 0x35, 0x7e, 0x11, 0x4e,
451*f0865ec9SKyle Evans 	0xe5, 0x11, 0xf6, 0x62, 0xec, 0x34, 0xa6, 0x92,
452*f0865ec9SKyle Evans 	0xc8, 0x20, 0x05, 0x3a, 0x05, 0x79, 0x1e, 0x52,
453*f0865ec9SKyle Evans 	0x1f, 0xca, 0xad, 0x60, 0x42, 0xd4, 0x0a, 0xea,
454*f0865ec9SKyle Evans 	0x1d, 0x6b, 0x1a, 0x54, 0x01, 0x38, 0x55, 0x8f,
455*f0865ec9SKyle Evans 	0x47, 0xd0, 0x71, 0x98, 0x00, 0xe1, 0x8f, 0x2d
456*f0865ec9SKyle Evans };
457*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP256R1_SHA224_1_test_vector_priv_key[] = {
458*f0865ec9SKyle Evans 	0xc9, 0xaf, 0xa9, 0xd8, 0x45, 0xba, 0x75, 0x16,
459*f0865ec9SKyle Evans 	0x6b, 0x5c, 0x21, 0x57, 0x67, 0xb1, 0xd6, 0x93,
460*f0865ec9SKyle Evans 	0x4e, 0x50, 0xc3, 0xdb, 0x36, 0xe8, 0x9b, 0x12,
461*f0865ec9SKyle Evans 	0x7b, 0x8a, 0x62, 0x2b, 0x12, 0x0f, 0x67, 0x21
462*f0865ec9SKyle Evans };
463*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP256R1_SHA224_1_test_case = {
464*f0865ec9SKyle Evans 	.name="DECDSA-SHA224/SECP256R1 1",
465*f0865ec9SKyle Evans 	.ec_str_p = &secp256r1_str_params,
466*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP256R1_SHA224_1_test_vector_priv_key,
467*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP256R1_SHA224_1_test_vector_priv_key),
468*f0865ec9SKyle Evans 	.nn_random = NULL,
469*f0865ec9SKyle Evans 	.hash_type = SHA224,
470*f0865ec9SKyle Evans 	.msg = "test",
471*f0865ec9SKyle Evans 	.msglen = 4,
472*f0865ec9SKyle Evans 	.sig_type = DECDSA,
473*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP256R1_SHA224_1_test_vector_expected_sig,
474*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP256R1_SHA224_1_test_vector_expected_sig),
475*f0865ec9SKyle Evans 	.adata = NULL,
476*f0865ec9SKyle Evans 	.adata_len = 0
477*f0865ec9SKyle Evans };
478*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP256R1 */
479*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA224 */
480*f0865ec9SKyle Evans 
481*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA256
482*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP256R1
483*f0865ec9SKyle Evans #define DECDSA_SHA256_SECP256R1_SELF_TEST_1
484*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA256/SECP256R1 ***/
485*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP256R1_SHA256_1_test_vector_expected_sig[] = {
486*f0865ec9SKyle Evans 	0xf1, 0xab, 0xb0, 0x23, 0x51, 0x83, 0x51, 0xcd,
487*f0865ec9SKyle Evans 	0x71, 0xd8, 0x81, 0x56, 0x7b, 0x1e, 0xa6, 0x63,
488*f0865ec9SKyle Evans 	0xed, 0x3e, 0xfc, 0xf6, 0xc5, 0x13, 0x2b, 0x35,
489*f0865ec9SKyle Evans 	0x4f, 0x28, 0xd3, 0xb0, 0xb7, 0xd3, 0x83, 0x67,
490*f0865ec9SKyle Evans 	0x01, 0x9f, 0x41, 0x13, 0x74, 0x2a, 0x2b, 0x14,
491*f0865ec9SKyle Evans 	0xbd, 0x25, 0x92, 0x6b, 0x49, 0xc6, 0x49, 0x15,
492*f0865ec9SKyle Evans 	0x5f, 0x26, 0x7e, 0x60, 0xd3, 0x81, 0x4b, 0x4c,
493*f0865ec9SKyle Evans 	0x0c, 0xc8, 0x42, 0x50, 0xe4, 0x6f, 0x00, 0x83
494*f0865ec9SKyle Evans };
495*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP256R1_SHA256_1_test_vector_priv_key[] = {
496*f0865ec9SKyle Evans 	0xc9, 0xaf, 0xa9, 0xd8, 0x45, 0xba, 0x75, 0x16,
497*f0865ec9SKyle Evans 	0x6b, 0x5c, 0x21, 0x57, 0x67, 0xb1, 0xd6, 0x93,
498*f0865ec9SKyle Evans 	0x4e, 0x50, 0xc3, 0xdb, 0x36, 0xe8, 0x9b, 0x12,
499*f0865ec9SKyle Evans 	0x7b, 0x8a, 0x62, 0x2b, 0x12, 0x0f, 0x67, 0x21
500*f0865ec9SKyle Evans };
501*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP256R1_SHA256_1_test_case = {
502*f0865ec9SKyle Evans 	.name="DECDSA-SHA256/SECP256R1 1",
503*f0865ec9SKyle Evans 	.ec_str_p = &secp256r1_str_params,
504*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP256R1_SHA256_1_test_vector_priv_key,
505*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP256R1_SHA256_1_test_vector_priv_key),
506*f0865ec9SKyle Evans 	.nn_random = NULL,
507*f0865ec9SKyle Evans 	.hash_type = SHA256,
508*f0865ec9SKyle Evans 	.msg = "test",
509*f0865ec9SKyle Evans 	.msglen = 4,
510*f0865ec9SKyle Evans 	.sig_type = DECDSA,
511*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP256R1_SHA256_1_test_vector_expected_sig,
512*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP256R1_SHA256_1_test_vector_expected_sig),
513*f0865ec9SKyle Evans 	.adata = NULL,
514*f0865ec9SKyle Evans 	.adata_len = 0
515*f0865ec9SKyle Evans };
516*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP256R1 */
517*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA256 */
518*f0865ec9SKyle Evans 
519*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA384
520*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP256R1
521*f0865ec9SKyle Evans #define DECDSA_SHA384_SECP256R1_SELF_TEST_1
522*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA384/SECP256R1 ***/
523*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP256R1_SHA384_1_test_vector_expected_sig[] = {
524*f0865ec9SKyle Evans 	0x83, 0x91, 0x0e, 0x8b, 0x48, 0xbb, 0x0c, 0x74,
525*f0865ec9SKyle Evans 	0x24, 0x4e, 0xbd, 0xf7, 0xf0, 0x7a, 0x1c, 0x54,
526*f0865ec9SKyle Evans 	0x13, 0xd6, 0x14, 0x72, 0xbd, 0x94, 0x1e, 0xf3,
527*f0865ec9SKyle Evans 	0x92, 0x0e, 0x62, 0x3f, 0xbc, 0xce, 0xbe, 0xb6,
528*f0865ec9SKyle Evans 	0x8d, 0xdb, 0xec, 0x54, 0xcf, 0x8c, 0xd5, 0x87,
529*f0865ec9SKyle Evans 	0x48, 0x83, 0x84, 0x1d, 0x71, 0x21, 0x42, 0xa5,
530*f0865ec9SKyle Evans 	0x6a, 0x8d, 0x0f, 0x21, 0x8f, 0x50, 0x03, 0xcb,
531*f0865ec9SKyle Evans 	0x02, 0x96, 0xb6, 0xb5, 0x09, 0x61, 0x9f, 0x2c
532*f0865ec9SKyle Evans };
533*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP256R1_SHA384_1_test_vector_priv_key[] = {
534*f0865ec9SKyle Evans 	0xc9, 0xaf, 0xa9, 0xd8, 0x45, 0xba, 0x75, 0x16,
535*f0865ec9SKyle Evans 	0x6b, 0x5c, 0x21, 0x57, 0x67, 0xb1, 0xd6, 0x93,
536*f0865ec9SKyle Evans 	0x4e, 0x50, 0xc3, 0xdb, 0x36, 0xe8, 0x9b, 0x12,
537*f0865ec9SKyle Evans 	0x7b, 0x8a, 0x62, 0x2b, 0x12, 0x0f, 0x67, 0x21
538*f0865ec9SKyle Evans };
539*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP256R1_SHA384_1_test_case = {
540*f0865ec9SKyle Evans 	.name="DECDSA-SHA384/SECP256R1 1",
541*f0865ec9SKyle Evans 	.ec_str_p = &secp256r1_str_params,
542*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP256R1_SHA384_1_test_vector_priv_key,
543*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP256R1_SHA384_1_test_vector_priv_key),
544*f0865ec9SKyle Evans 	.nn_random = NULL,
545*f0865ec9SKyle Evans 	.hash_type = SHA384,
546*f0865ec9SKyle Evans 	.msg = "test",
547*f0865ec9SKyle Evans 	.msglen = 4,
548*f0865ec9SKyle Evans 	.sig_type = DECDSA,
549*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP256R1_SHA384_1_test_vector_expected_sig,
550*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP256R1_SHA384_1_test_vector_expected_sig),
551*f0865ec9SKyle Evans 	.adata = NULL,
552*f0865ec9SKyle Evans 	.adata_len = 0
553*f0865ec9SKyle Evans };
554*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP256R1 */
555*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA384 */
556*f0865ec9SKyle Evans 
557*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA512
558*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP256R1
559*f0865ec9SKyle Evans #define DECDSA_SHA512_SECP256R1_SELF_TEST_1
560*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA512/SECP256R1 ***/
561*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP256R1_SHA512_1_test_vector_expected_sig[] = {
562*f0865ec9SKyle Evans 	0x46, 0x1d, 0x93, 0xf3, 0x1b, 0x65, 0x40, 0x89,
563*f0865ec9SKyle Evans 	0x47, 0x88, 0xfd, 0x20, 0x6c, 0x07, 0xcf, 0xa0,
564*f0865ec9SKyle Evans 	0xcc, 0x35, 0xf4, 0x6f, 0xa3, 0xc9, 0x18, 0x16,
565*f0865ec9SKyle Evans 	0xff, 0xf1, 0x04, 0x0a, 0xd1, 0x58, 0x1a, 0x04,
566*f0865ec9SKyle Evans 	0x39, 0xaf, 0x9f, 0x15, 0xde, 0x0d, 0xb8, 0xd9,
567*f0865ec9SKyle Evans 	0x7e, 0x72, 0x71, 0x9c, 0x74, 0x82, 0x0d, 0x30,
568*f0865ec9SKyle Evans 	0x4c, 0xe5, 0x22, 0x6e, 0x32, 0xde, 0xda, 0xe6,
569*f0865ec9SKyle Evans 	0x75, 0x19, 0xe8, 0x40, 0xd1, 0x19, 0x4e, 0x55
570*f0865ec9SKyle Evans };
571*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP256R1_SHA512_1_test_vector_priv_key[] = {
572*f0865ec9SKyle Evans 	0xc9, 0xaf, 0xa9, 0xd8, 0x45, 0xba, 0x75, 0x16,
573*f0865ec9SKyle Evans 	0x6b, 0x5c, 0x21, 0x57, 0x67, 0xb1, 0xd6, 0x93,
574*f0865ec9SKyle Evans 	0x4e, 0x50, 0xc3, 0xdb, 0x36, 0xe8, 0x9b, 0x12,
575*f0865ec9SKyle Evans 	0x7b, 0x8a, 0x62, 0x2b, 0x12, 0x0f, 0x67, 0x21
576*f0865ec9SKyle Evans };
577*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP256R1_SHA512_1_test_case = {
578*f0865ec9SKyle Evans 	.name="DECDSA-SHA512/SECP256R1 1",
579*f0865ec9SKyle Evans 	.ec_str_p = &secp256r1_str_params,
580*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP256R1_SHA512_1_test_vector_priv_key,
581*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP256R1_SHA512_1_test_vector_priv_key),
582*f0865ec9SKyle Evans 	.nn_random = NULL,
583*f0865ec9SKyle Evans 	.hash_type = SHA512,
584*f0865ec9SKyle Evans 	.msg = "test",
585*f0865ec9SKyle Evans 	.msglen = 4,
586*f0865ec9SKyle Evans 	.sig_type = DECDSA,
587*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP256R1_SHA512_1_test_vector_expected_sig,
588*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP256R1_SHA512_1_test_vector_expected_sig),
589*f0865ec9SKyle Evans 	.adata = NULL,
590*f0865ec9SKyle Evans 	.adata_len = 0
591*f0865ec9SKyle Evans };
592*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP256R1 */
593*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA512 */
594*f0865ec9SKyle Evans 
595*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA224
596*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP384R1
597*f0865ec9SKyle Evans #define DECDSA_SHA224_SECP384R1_SELF_TEST_0
598*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA224/SECP384R1 ***/
599*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP384R1_SHA224_0_test_vector_expected_sig[] = {
600*f0865ec9SKyle Evans 	0x42, 0x35, 0x6e, 0x76, 0xb5, 0x5a, 0x6d, 0x9b,
601*f0865ec9SKyle Evans 	0x46, 0x31, 0xc8, 0x65, 0x44, 0x5d, 0xbe, 0x54,
602*f0865ec9SKyle Evans 	0xe0, 0x56, 0xd3, 0xb3, 0x43, 0x17, 0x66, 0xd0,
603*f0865ec9SKyle Evans 	0x50, 0x92, 0x44, 0x79, 0x3c, 0x3f, 0x93, 0x66,
604*f0865ec9SKyle Evans 	0x45, 0x0f, 0x76, 0xee, 0x3d, 0xe4, 0x3f, 0x5a,
605*f0865ec9SKyle Evans 	0x12, 0x53, 0x33, 0xa6, 0xbe, 0x06, 0x01, 0x22,
606*f0865ec9SKyle Evans 	0x9d, 0xa0, 0xc8, 0x17, 0x87, 0x06, 0x40, 0x21,
607*f0865ec9SKyle Evans 	0xe7, 0x8d, 0xf6, 0x58, 0xf2, 0xfb, 0xb0, 0xb0,
608*f0865ec9SKyle Evans 	0x42, 0xbf, 0x30, 0x46, 0x65, 0xdb, 0x72, 0x1f,
609*f0865ec9SKyle Evans 	0x07, 0x7a, 0x42, 0x98, 0xb0, 0x95, 0xe4, 0x83,
610*f0865ec9SKyle Evans 	0x4c, 0x08, 0x2c, 0x03, 0xd8, 0x30, 0x28, 0xef,
611*f0865ec9SKyle Evans 	0xbf, 0x93, 0xa3, 0xc2, 0x39, 0x40, 0xca, 0x8d
612*f0865ec9SKyle Evans };
613*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP384R1_SHA224_0_test_vector_priv_key[] = {
614*f0865ec9SKyle Evans 	0x6b, 0x9d, 0x3d, 0xad, 0x2e, 0x1b, 0x8c, 0x1c,
615*f0865ec9SKyle Evans 	0x05, 0xb1, 0x98, 0x75, 0xb6, 0x65, 0x9f, 0x4d,
616*f0865ec9SKyle Evans 	0xe2, 0x3c, 0x3b, 0x66, 0x7b, 0xf2, 0x97, 0xba,
617*f0865ec9SKyle Evans 	0x9a, 0xa4, 0x77, 0x40, 0x78, 0x71, 0x37, 0xd8,
618*f0865ec9SKyle Evans 	0x96, 0xd5, 0x72, 0x4e, 0x4c, 0x70, 0xa8, 0x25,
619*f0865ec9SKyle Evans 	0xf8, 0x72, 0xc9, 0xea, 0x60, 0xd2, 0xed, 0xf5
620*f0865ec9SKyle Evans };
621*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP384R1_SHA224_0_test_case = {
622*f0865ec9SKyle Evans 	.name="DECDSA-SHA224/SECP384R1 0",
623*f0865ec9SKyle Evans 	.ec_str_p = &secp384r1_str_params,
624*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP384R1_SHA224_0_test_vector_priv_key,
625*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP384R1_SHA224_0_test_vector_priv_key),
626*f0865ec9SKyle Evans 	.nn_random = NULL,
627*f0865ec9SKyle Evans 	.hash_type = SHA224,
628*f0865ec9SKyle Evans 	.msg = "sample",
629*f0865ec9SKyle Evans 	.msglen = 6,
630*f0865ec9SKyle Evans 	.sig_type = DECDSA,
631*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP384R1_SHA224_0_test_vector_expected_sig,
632*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP384R1_SHA224_0_test_vector_expected_sig),
633*f0865ec9SKyle Evans 	.adata = NULL,
634*f0865ec9SKyle Evans 	.adata_len = 0
635*f0865ec9SKyle Evans };
636*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP384R1 */
637*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA224 */
638*f0865ec9SKyle Evans 
639*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA256
640*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP384R1
641*f0865ec9SKyle Evans #define DECDSA_SHA256_SECP384R1_SELF_TEST_0
642*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA256/SECP384R1 ***/
643*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP384R1_SHA256_0_test_vector_expected_sig[] = {
644*f0865ec9SKyle Evans 	0x21, 0xb1, 0x3d, 0x1e, 0x01, 0x3c, 0x7f, 0xa1,
645*f0865ec9SKyle Evans 	0x39, 0x2d, 0x03, 0xc5, 0xf9, 0x9a, 0xf8, 0xb3,
646*f0865ec9SKyle Evans 	0x0c, 0x57, 0x0c, 0x6f, 0x98, 0xd4, 0xea, 0x8e,
647*f0865ec9SKyle Evans 	0x35, 0x4b, 0x63, 0xa2, 0x1d, 0x3d, 0xaa, 0x33,
648*f0865ec9SKyle Evans 	0xbd, 0xe1, 0xe8, 0x88, 0xe6, 0x33, 0x55, 0xd9,
649*f0865ec9SKyle Evans 	0x2f, 0xa2, 0xb3, 0xc3, 0x6d, 0x8f, 0xb2, 0xcd,
650*f0865ec9SKyle Evans 	0xf3, 0xaa, 0x44, 0x3f, 0xb1, 0x07, 0x74, 0x5b,
651*f0865ec9SKyle Evans 	0xf4, 0xbd, 0x77, 0xcb, 0x38, 0x91, 0x67, 0x46,
652*f0865ec9SKyle Evans 	0x32, 0x06, 0x8a, 0x10, 0xca, 0x67, 0xe3, 0xd4,
653*f0865ec9SKyle Evans 	0x5d, 0xb2, 0x26, 0x6f, 0xa7, 0xd1, 0xfe, 0xeb,
654*f0865ec9SKyle Evans 	0xef, 0xdc, 0x63, 0xec, 0xcd, 0x1a, 0xc4, 0x2e,
655*f0865ec9SKyle Evans 	0xc0, 0xcb, 0x86, 0x68, 0xa4, 0xfa, 0x0a, 0xb0
656*f0865ec9SKyle Evans };
657*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP384R1_SHA256_0_test_vector_priv_key[] = {
658*f0865ec9SKyle Evans 	0x6b, 0x9d, 0x3d, 0xad, 0x2e, 0x1b, 0x8c, 0x1c,
659*f0865ec9SKyle Evans 	0x05, 0xb1, 0x98, 0x75, 0xb6, 0x65, 0x9f, 0x4d,
660*f0865ec9SKyle Evans 	0xe2, 0x3c, 0x3b, 0x66, 0x7b, 0xf2, 0x97, 0xba,
661*f0865ec9SKyle Evans 	0x9a, 0xa4, 0x77, 0x40, 0x78, 0x71, 0x37, 0xd8,
662*f0865ec9SKyle Evans 	0x96, 0xd5, 0x72, 0x4e, 0x4c, 0x70, 0xa8, 0x25,
663*f0865ec9SKyle Evans 	0xf8, 0x72, 0xc9, 0xea, 0x60, 0xd2, 0xed, 0xf5
664*f0865ec9SKyle Evans };
665*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP384R1_SHA256_0_test_case = {
666*f0865ec9SKyle Evans 	.name="DECDSA-SHA256/SECP384R1 0",
667*f0865ec9SKyle Evans 	.ec_str_p = &secp384r1_str_params,
668*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP384R1_SHA256_0_test_vector_priv_key,
669*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP384R1_SHA256_0_test_vector_priv_key),
670*f0865ec9SKyle Evans 	.nn_random = NULL,
671*f0865ec9SKyle Evans 	.hash_type = SHA256,
672*f0865ec9SKyle Evans 	.msg = "sample",
673*f0865ec9SKyle Evans 	.msglen = 6,
674*f0865ec9SKyle Evans 	.sig_type = DECDSA,
675*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP384R1_SHA256_0_test_vector_expected_sig,
676*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP384R1_SHA256_0_test_vector_expected_sig),
677*f0865ec9SKyle Evans 	.adata = NULL,
678*f0865ec9SKyle Evans 	.adata_len = 0
679*f0865ec9SKyle Evans };
680*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP384R1 */
681*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA256 */
682*f0865ec9SKyle Evans 
683*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA384
684*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP384R1
685*f0865ec9SKyle Evans #define DECDSA_SHA384_SECP384R1_SELF_TEST_0
686*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA384/SECP384R1 ***/
687*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP384R1_SHA384_0_test_vector_expected_sig[] = {
688*f0865ec9SKyle Evans 	0x94, 0xed, 0xbb, 0x92, 0xa5, 0xec, 0xb8, 0xaa,
689*f0865ec9SKyle Evans 	0xd4, 0x73, 0x6e, 0x56, 0xc6, 0x91, 0x91, 0x6b,
690*f0865ec9SKyle Evans 	0x3f, 0x88, 0x14, 0x06, 0x66, 0xce, 0x9f, 0xa7,
691*f0865ec9SKyle Evans 	0x3d, 0x64, 0xc4, 0xea, 0x95, 0xad, 0x13, 0x3c,
692*f0865ec9SKyle Evans 	0x81, 0xa6, 0x48, 0x15, 0x2e, 0x44, 0xac, 0xf9,
693*f0865ec9SKyle Evans 	0x6e, 0x36, 0xdd, 0x1e, 0x80, 0xfa, 0xbe, 0x46,
694*f0865ec9SKyle Evans 	0x99, 0xef, 0x4a, 0xeb, 0x15, 0xf1, 0x78, 0xce,
695*f0865ec9SKyle Evans 	0xa1, 0xfe, 0x40, 0xdb, 0x26, 0x03, 0x13, 0x8f,
696*f0865ec9SKyle Evans 	0x13, 0x0e, 0x74, 0x0a, 0x19, 0x62, 0x45, 0x26,
697*f0865ec9SKyle Evans 	0x20, 0x3b, 0x63, 0x51, 0xd0, 0xa3, 0xa9, 0x4f,
698*f0865ec9SKyle Evans 	0xa3, 0x29, 0xc1, 0x45, 0x78, 0x6e, 0x67, 0x9e,
699*f0865ec9SKyle Evans 	0x7b, 0x82, 0xc7, 0x1a, 0x38, 0x62, 0x8a, 0xc8
700*f0865ec9SKyle Evans };
701*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP384R1_SHA384_0_test_vector_priv_key[] = {
702*f0865ec9SKyle Evans 	0x6b, 0x9d, 0x3d, 0xad, 0x2e, 0x1b, 0x8c, 0x1c,
703*f0865ec9SKyle Evans 	0x05, 0xb1, 0x98, 0x75, 0xb6, 0x65, 0x9f, 0x4d,
704*f0865ec9SKyle Evans 	0xe2, 0x3c, 0x3b, 0x66, 0x7b, 0xf2, 0x97, 0xba,
705*f0865ec9SKyle Evans 	0x9a, 0xa4, 0x77, 0x40, 0x78, 0x71, 0x37, 0xd8,
706*f0865ec9SKyle Evans 	0x96, 0xd5, 0x72, 0x4e, 0x4c, 0x70, 0xa8, 0x25,
707*f0865ec9SKyle Evans 	0xf8, 0x72, 0xc9, 0xea, 0x60, 0xd2, 0xed, 0xf5
708*f0865ec9SKyle Evans };
709*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP384R1_SHA384_0_test_case = {
710*f0865ec9SKyle Evans 	.name="DECDSA-SHA384/SECP384R1 0",
711*f0865ec9SKyle Evans 	.ec_str_p = &secp384r1_str_params,
712*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP384R1_SHA384_0_test_vector_priv_key,
713*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP384R1_SHA384_0_test_vector_priv_key),
714*f0865ec9SKyle Evans 	.nn_random = NULL,
715*f0865ec9SKyle Evans 	.hash_type = SHA384,
716*f0865ec9SKyle Evans 	.msg = "sample",
717*f0865ec9SKyle Evans 	.msglen = 6,
718*f0865ec9SKyle Evans 	.sig_type = DECDSA,
719*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP384R1_SHA384_0_test_vector_expected_sig,
720*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP384R1_SHA384_0_test_vector_expected_sig),
721*f0865ec9SKyle Evans 	.adata = NULL,
722*f0865ec9SKyle Evans 	.adata_len = 0
723*f0865ec9SKyle Evans };
724*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP384R1 */
725*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA384 */
726*f0865ec9SKyle Evans 
727*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA512
728*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP384R1
729*f0865ec9SKyle Evans #define DECDSA_SHA512_SECP384R1_SELF_TEST_0
730*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA512/SECP384R1 ***/
731*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP384R1_SHA512_0_test_vector_expected_sig[] = {
732*f0865ec9SKyle Evans 	0xed, 0x09, 0x59, 0xd5, 0x88, 0x0a, 0xb2, 0xd8,
733*f0865ec9SKyle Evans 	0x69, 0xae, 0x7f, 0x6c, 0x29, 0x15, 0xc6, 0xd6,
734*f0865ec9SKyle Evans 	0x0f, 0x96, 0x50, 0x7f, 0x9c, 0xb3, 0xe0, 0x47,
735*f0865ec9SKyle Evans 	0xc0, 0x04, 0x68, 0x61, 0xda, 0x4a, 0x79, 0x9c,
736*f0865ec9SKyle Evans 	0xfe, 0x30, 0xf3, 0x5c, 0xc9, 0x00, 0x05, 0x6d,
737*f0865ec9SKyle Evans 	0x7c, 0x99, 0xcd, 0x78, 0x82, 0x43, 0x37, 0x09,
738*f0865ec9SKyle Evans 	0x51, 0x2c, 0x8c, 0xce, 0xee, 0x38, 0x90, 0xa8,
739*f0865ec9SKyle Evans 	0x40, 0x58, 0xce, 0x1e, 0x22, 0xdb, 0xc2, 0x19,
740*f0865ec9SKyle Evans 	0x8f, 0x42, 0x32, 0x3c, 0xe8, 0xac, 0xa9, 0x13,
741*f0865ec9SKyle Evans 	0x53, 0x29, 0xf0, 0x3c, 0x06, 0x8e, 0x51, 0x12,
742*f0865ec9SKyle Evans 	0xdc, 0x7c, 0xc3, 0xef, 0x34, 0x46, 0xde, 0xfc,
743*f0865ec9SKyle Evans 	0xeb, 0x01, 0xa4, 0x5c, 0x26, 0x67, 0xfd, 0xd5
744*f0865ec9SKyle Evans };
745*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP384R1_SHA512_0_test_vector_priv_key[] = {
746*f0865ec9SKyle Evans 	0x6b, 0x9d, 0x3d, 0xad, 0x2e, 0x1b, 0x8c, 0x1c,
747*f0865ec9SKyle Evans 	0x05, 0xb1, 0x98, 0x75, 0xb6, 0x65, 0x9f, 0x4d,
748*f0865ec9SKyle Evans 	0xe2, 0x3c, 0x3b, 0x66, 0x7b, 0xf2, 0x97, 0xba,
749*f0865ec9SKyle Evans 	0x9a, 0xa4, 0x77, 0x40, 0x78, 0x71, 0x37, 0xd8,
750*f0865ec9SKyle Evans 	0x96, 0xd5, 0x72, 0x4e, 0x4c, 0x70, 0xa8, 0x25,
751*f0865ec9SKyle Evans 	0xf8, 0x72, 0xc9, 0xea, 0x60, 0xd2, 0xed, 0xf5
752*f0865ec9SKyle Evans };
753*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP384R1_SHA512_0_test_case = {
754*f0865ec9SKyle Evans 	.name="DECDSA-SHA512/SECP384R1 0",
755*f0865ec9SKyle Evans 	.ec_str_p = &secp384r1_str_params,
756*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP384R1_SHA512_0_test_vector_priv_key,
757*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP384R1_SHA512_0_test_vector_priv_key),
758*f0865ec9SKyle Evans 	.nn_random = NULL,
759*f0865ec9SKyle Evans 	.hash_type = SHA512,
760*f0865ec9SKyle Evans 	.msg = "sample",
761*f0865ec9SKyle Evans 	.msglen = 6,
762*f0865ec9SKyle Evans 	.sig_type = DECDSA,
763*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP384R1_SHA512_0_test_vector_expected_sig,
764*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP384R1_SHA512_0_test_vector_expected_sig),
765*f0865ec9SKyle Evans 	.adata = NULL,
766*f0865ec9SKyle Evans 	.adata_len = 0
767*f0865ec9SKyle Evans };
768*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP384R1 */
769*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA512 */
770*f0865ec9SKyle Evans 
771*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA224
772*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP384R1
773*f0865ec9SKyle Evans #define DECDSA_SHA224_SECP384R1_SELF_TEST_1
774*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA224/SECP384R1 ***/
775*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP384R1_SHA224_1_test_vector_expected_sig[] = {
776*f0865ec9SKyle Evans 	0xe8, 0xc9, 0xd0, 0xb6, 0xea, 0x72, 0xa0, 0xe7,
777*f0865ec9SKyle Evans 	0x83, 0x7f, 0xea, 0x1d, 0x14, 0xa1, 0xa9, 0x55,
778*f0865ec9SKyle Evans 	0x7f, 0x29, 0xfa, 0xa4, 0x5d, 0x3e, 0x7e, 0xe8,
779*f0865ec9SKyle Evans 	0x88, 0xfc, 0x5b, 0xf9, 0x54, 0xb5, 0xe6, 0x24,
780*f0865ec9SKyle Evans 	0x64, 0xa9, 0xa8, 0x17, 0xc4, 0x7f, 0xf7, 0x8b,
781*f0865ec9SKyle Evans 	0x8c, 0x11, 0x06, 0x6b, 0x24, 0x08, 0x0e, 0x72,
782*f0865ec9SKyle Evans 	0x07, 0x04, 0x1d, 0x4a, 0x7a, 0x03, 0x79, 0xac,
783*f0865ec9SKyle Evans 	0x72, 0x32, 0xff, 0x72, 0xe6, 0xf7, 0x7b, 0x6d,
784*f0865ec9SKyle Evans 	0xdb, 0x8f, 0x09, 0xb1, 0x6c, 0xce, 0x0e, 0xc3,
785*f0865ec9SKyle Evans 	0x28, 0x6b, 0x2b, 0xd4, 0x3f, 0xa8, 0xc6, 0x14,
786*f0865ec9SKyle Evans 	0x1c, 0x53, 0xea, 0x5a, 0xbe, 0xf0, 0xd8, 0x23,
787*f0865ec9SKyle Evans 	0x10, 0x77, 0xa0, 0x45, 0x40, 0xa9, 0x6b, 0x66
788*f0865ec9SKyle Evans };
789*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP384R1_SHA224_1_test_vector_priv_key[] = {
790*f0865ec9SKyle Evans 	0x6b, 0x9d, 0x3d, 0xad, 0x2e, 0x1b, 0x8c, 0x1c,
791*f0865ec9SKyle Evans 	0x05, 0xb1, 0x98, 0x75, 0xb6, 0x65, 0x9f, 0x4d,
792*f0865ec9SKyle Evans 	0xe2, 0x3c, 0x3b, 0x66, 0x7b, 0xf2, 0x97, 0xba,
793*f0865ec9SKyle Evans 	0x9a, 0xa4, 0x77, 0x40, 0x78, 0x71, 0x37, 0xd8,
794*f0865ec9SKyle Evans 	0x96, 0xd5, 0x72, 0x4e, 0x4c, 0x70, 0xa8, 0x25,
795*f0865ec9SKyle Evans 	0xf8, 0x72, 0xc9, 0xea, 0x60, 0xd2, 0xed, 0xf5
796*f0865ec9SKyle Evans };
797*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP384R1_SHA224_1_test_case = {
798*f0865ec9SKyle Evans 	.name="DECDSA-SHA224/SECP384R1 1",
799*f0865ec9SKyle Evans 	.ec_str_p = &secp384r1_str_params,
800*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP384R1_SHA224_1_test_vector_priv_key,
801*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP384R1_SHA224_1_test_vector_priv_key),
802*f0865ec9SKyle Evans 	.nn_random = NULL,
803*f0865ec9SKyle Evans 	.hash_type = SHA224,
804*f0865ec9SKyle Evans 	.msg = "test",
805*f0865ec9SKyle Evans 	.msglen = 4,
806*f0865ec9SKyle Evans 	.sig_type = DECDSA,
807*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP384R1_SHA224_1_test_vector_expected_sig,
808*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP384R1_SHA224_1_test_vector_expected_sig),
809*f0865ec9SKyle Evans 	.adata = NULL,
810*f0865ec9SKyle Evans 	.adata_len = 0
811*f0865ec9SKyle Evans };
812*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP384R1 */
813*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA224 */
814*f0865ec9SKyle Evans 
815*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA256
816*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP384R1
817*f0865ec9SKyle Evans #define DECDSA_SHA256_SECP384R1_SELF_TEST_1
818*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA256/SECP384R1 ***/
819*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP384R1_SHA256_1_test_vector_expected_sig[] = {
820*f0865ec9SKyle Evans 	0x6d, 0x6d, 0xef, 0xac, 0x9a, 0xb6, 0x4d, 0xab,
821*f0865ec9SKyle Evans 	0xaf, 0xe3, 0x6c, 0x6b, 0xf5, 0x10, 0x35, 0x2a,
822*f0865ec9SKyle Evans 	0x4c, 0xc2, 0x70, 0x01, 0x26, 0x36, 0x38, 0xe5,
823*f0865ec9SKyle Evans 	0xb1, 0x6d, 0x9b, 0xb5, 0x1d, 0x45, 0x15, 0x59,
824*f0865ec9SKyle Evans 	0xf9, 0x18, 0xee, 0xda, 0xf2, 0x29, 0x3b, 0xe5,
825*f0865ec9SKyle Evans 	0xb4, 0x75, 0xcc, 0x8f, 0x01, 0x88, 0x63, 0x6b,
826*f0865ec9SKyle Evans 	0x2d, 0x46, 0xf3, 0xbe, 0xcb, 0xcc, 0x52, 0x3d,
827*f0865ec9SKyle Evans 	0x5f, 0x1a, 0x12, 0x56, 0xbf, 0x0c, 0x9b, 0x02,
828*f0865ec9SKyle Evans 	0x4d, 0x87, 0x9b, 0xa9, 0xe8, 0x38, 0x14, 0x4c,
829*f0865ec9SKyle Evans 	0x8b, 0xa6, 0xba, 0xeb, 0x4b, 0x53, 0xb4, 0x7d,
830*f0865ec9SKyle Evans 	0x51, 0xab, 0x37, 0x3f, 0x98, 0x45, 0xc0, 0x51,
831*f0865ec9SKyle Evans 	0x4e, 0xef, 0xb1, 0x40, 0x24, 0x78, 0x72, 0x65
832*f0865ec9SKyle Evans };
833*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP384R1_SHA256_1_test_vector_priv_key[] = {
834*f0865ec9SKyle Evans 	0x6b, 0x9d, 0x3d, 0xad, 0x2e, 0x1b, 0x8c, 0x1c,
835*f0865ec9SKyle Evans 	0x05, 0xb1, 0x98, 0x75, 0xb6, 0x65, 0x9f, 0x4d,
836*f0865ec9SKyle Evans 	0xe2, 0x3c, 0x3b, 0x66, 0x7b, 0xf2, 0x97, 0xba,
837*f0865ec9SKyle Evans 	0x9a, 0xa4, 0x77, 0x40, 0x78, 0x71, 0x37, 0xd8,
838*f0865ec9SKyle Evans 	0x96, 0xd5, 0x72, 0x4e, 0x4c, 0x70, 0xa8, 0x25,
839*f0865ec9SKyle Evans 	0xf8, 0x72, 0xc9, 0xea, 0x60, 0xd2, 0xed, 0xf5
840*f0865ec9SKyle Evans };
841*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP384R1_SHA256_1_test_case = {
842*f0865ec9SKyle Evans 	.name="DECDSA-SHA256/SECP384R1 1",
843*f0865ec9SKyle Evans 	.ec_str_p = &secp384r1_str_params,
844*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP384R1_SHA256_1_test_vector_priv_key,
845*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP384R1_SHA256_1_test_vector_priv_key),
846*f0865ec9SKyle Evans 	.nn_random = NULL,
847*f0865ec9SKyle Evans 	.hash_type = SHA256,
848*f0865ec9SKyle Evans 	.msg = "test",
849*f0865ec9SKyle Evans 	.msglen = 4,
850*f0865ec9SKyle Evans 	.sig_type = DECDSA,
851*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP384R1_SHA256_1_test_vector_expected_sig,
852*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP384R1_SHA256_1_test_vector_expected_sig),
853*f0865ec9SKyle Evans 	.adata = NULL,
854*f0865ec9SKyle Evans 	.adata_len = 0
855*f0865ec9SKyle Evans };
856*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP384R1 */
857*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA256 */
858*f0865ec9SKyle Evans 
859*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA384
860*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP384R1
861*f0865ec9SKyle Evans #define DECDSA_SHA384_SECP384R1_SELF_TEST_1
862*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA384/SECP384R1 ***/
863*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP384R1_SHA384_1_test_vector_expected_sig[] = {
864*f0865ec9SKyle Evans 	0x82, 0x03, 0xb6, 0x3d, 0x3c, 0x85, 0x3e, 0x8d,
865*f0865ec9SKyle Evans 	0x77, 0x22, 0x7f, 0xb3, 0x77, 0xbc, 0xf7, 0xb7,
866*f0865ec9SKyle Evans 	0xb7, 0x72, 0xe9, 0x78, 0x92, 0xa8, 0x0f, 0x36,
867*f0865ec9SKyle Evans 	0xab, 0x77, 0x5d, 0x50, 0x9d, 0x7a, 0x5f, 0xeb,
868*f0865ec9SKyle Evans 	0x05, 0x42, 0xa7, 0xf0, 0x81, 0x29, 0x98, 0xda,
869*f0865ec9SKyle Evans 	0x8f, 0x1d, 0xd3, 0xca, 0x3c, 0xf0, 0x23, 0xdb,
870*f0865ec9SKyle Evans 	0xdd, 0xd0, 0x76, 0x04, 0x48, 0xd4, 0x2d, 0x8a,
871*f0865ec9SKyle Evans 	0x43, 0xaf, 0x45, 0xaf, 0x83, 0x6f, 0xce, 0x4d,
872*f0865ec9SKyle Evans 	0xe8, 0xbe, 0x06, 0xb4, 0x85, 0xe9, 0xb6, 0x1b,
873*f0865ec9SKyle Evans 	0x82, 0x7c, 0x2f, 0x13, 0x17, 0x39, 0x23, 0xe0,
874*f0865ec9SKyle Evans 	0x6a, 0x73, 0x9f, 0x04, 0x06, 0x49, 0xa6, 0x67,
875*f0865ec9SKyle Evans 	0xbf, 0x3b, 0x82, 0x82, 0x46, 0xba, 0xa5, 0xa5
876*f0865ec9SKyle Evans };
877*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP384R1_SHA384_1_test_vector_priv_key[] = {
878*f0865ec9SKyle Evans 	0x6b, 0x9d, 0x3d, 0xad, 0x2e, 0x1b, 0x8c, 0x1c,
879*f0865ec9SKyle Evans 	0x05, 0xb1, 0x98, 0x75, 0xb6, 0x65, 0x9f, 0x4d,
880*f0865ec9SKyle Evans 	0xe2, 0x3c, 0x3b, 0x66, 0x7b, 0xf2, 0x97, 0xba,
881*f0865ec9SKyle Evans 	0x9a, 0xa4, 0x77, 0x40, 0x78, 0x71, 0x37, 0xd8,
882*f0865ec9SKyle Evans 	0x96, 0xd5, 0x72, 0x4e, 0x4c, 0x70, 0xa8, 0x25,
883*f0865ec9SKyle Evans 	0xf8, 0x72, 0xc9, 0xea, 0x60, 0xd2, 0xed, 0xf5
884*f0865ec9SKyle Evans };
885*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP384R1_SHA384_1_test_case = {
886*f0865ec9SKyle Evans 	.name="DECDSA-SHA384/SECP384R1 1",
887*f0865ec9SKyle Evans 	.ec_str_p = &secp384r1_str_params,
888*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP384R1_SHA384_1_test_vector_priv_key,
889*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP384R1_SHA384_1_test_vector_priv_key),
890*f0865ec9SKyle Evans 	.nn_random = NULL,
891*f0865ec9SKyle Evans 	.hash_type = SHA384,
892*f0865ec9SKyle Evans 	.msg = "test",
893*f0865ec9SKyle Evans 	.msglen = 4,
894*f0865ec9SKyle Evans 	.sig_type = DECDSA,
895*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP384R1_SHA384_1_test_vector_expected_sig,
896*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP384R1_SHA384_1_test_vector_expected_sig),
897*f0865ec9SKyle Evans 	.adata = NULL,
898*f0865ec9SKyle Evans 	.adata_len = 0
899*f0865ec9SKyle Evans };
900*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP384R1 */
901*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA384 */
902*f0865ec9SKyle Evans 
903*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA512
904*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP384R1
905*f0865ec9SKyle Evans #define DECDSA_SHA512_SECP384R1_SELF_TEST_1
906*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA512/SECP384R1 ***/
907*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP384R1_SHA512_1_test_vector_expected_sig[] = {
908*f0865ec9SKyle Evans 	0xa0, 0xd5, 0xd0, 0x90, 0xc9, 0x98, 0x0f, 0xaf,
909*f0865ec9SKyle Evans 	0x3c, 0x2c, 0xe5, 0x7b, 0x7a, 0xe9, 0x51, 0xd3,
910*f0865ec9SKyle Evans 	0x19, 0x77, 0xdd, 0x11, 0xc7, 0x75, 0xd3, 0x14,
911*f0865ec9SKyle Evans 	0xaf, 0x55, 0xf7, 0x6c, 0x67, 0x64, 0x47, 0xd0,
912*f0865ec9SKyle Evans 	0x6f, 0xb6, 0x49, 0x5c, 0xd2, 0x1b, 0x4b, 0x6e,
913*f0865ec9SKyle Evans 	0x34, 0x0f, 0xc2, 0x36, 0x58, 0x4f, 0xb2, 0x77,
914*f0865ec9SKyle Evans 	0x97, 0x69, 0x84, 0xe5, 0x9b, 0x4c, 0x77, 0xb0,
915*f0865ec9SKyle Evans 	0xe8, 0xe4, 0x46, 0x0d, 0xca, 0x3d, 0x9f, 0x20,
916*f0865ec9SKyle Evans 	0xe0, 0x7b, 0x9b, 0xb1, 0xf6, 0x3b, 0xee, 0xfa,
917*f0865ec9SKyle Evans 	0xf5, 0x76, 0xf6, 0xb2, 0xe8, 0xb2, 0x24, 0x63,
918*f0865ec9SKyle Evans 	0x4a, 0x20, 0x92, 0xcd, 0x37, 0x92, 0xe0, 0x15,
919*f0865ec9SKyle Evans 	0x9a, 0xd9, 0xce, 0xe3, 0x76, 0x59, 0xc7, 0x36
920*f0865ec9SKyle Evans };
921*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP384R1_SHA512_1_test_vector_priv_key[] = {
922*f0865ec9SKyle Evans 	0x6b, 0x9d, 0x3d, 0xad, 0x2e, 0x1b, 0x8c, 0x1c,
923*f0865ec9SKyle Evans 	0x05, 0xb1, 0x98, 0x75, 0xb6, 0x65, 0x9f, 0x4d,
924*f0865ec9SKyle Evans 	0xe2, 0x3c, 0x3b, 0x66, 0x7b, 0xf2, 0x97, 0xba,
925*f0865ec9SKyle Evans 	0x9a, 0xa4, 0x77, 0x40, 0x78, 0x71, 0x37, 0xd8,
926*f0865ec9SKyle Evans 	0x96, 0xd5, 0x72, 0x4e, 0x4c, 0x70, 0xa8, 0x25,
927*f0865ec9SKyle Evans 	0xf8, 0x72, 0xc9, 0xea, 0x60, 0xd2, 0xed, 0xf5
928*f0865ec9SKyle Evans };
929*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP384R1_SHA512_1_test_case = {
930*f0865ec9SKyle Evans 	.name="DECDSA-SHA512/SECP384R1 1",
931*f0865ec9SKyle Evans 	.ec_str_p = &secp384r1_str_params,
932*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP384R1_SHA512_1_test_vector_priv_key,
933*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP384R1_SHA512_1_test_vector_priv_key),
934*f0865ec9SKyle Evans 	.nn_random = NULL,
935*f0865ec9SKyle Evans 	.hash_type = SHA512,
936*f0865ec9SKyle Evans 	.msg = "test",
937*f0865ec9SKyle Evans 	.msglen = 4,
938*f0865ec9SKyle Evans 	.sig_type = DECDSA,
939*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP384R1_SHA512_1_test_vector_expected_sig,
940*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP384R1_SHA512_1_test_vector_expected_sig),
941*f0865ec9SKyle Evans 	.adata = NULL,
942*f0865ec9SKyle Evans 	.adata_len = 0
943*f0865ec9SKyle Evans };
944*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP384R1 */
945*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA512 */
946*f0865ec9SKyle Evans 
947*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA224
948*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP521R1
949*f0865ec9SKyle Evans #define DECDSA_SHA224_SECP521R1_SELF_TEST_0
950*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA224/SECP521R1 ***/
951*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP521R1_SHA224_0_test_vector_expected_sig[] = {
952*f0865ec9SKyle Evans 	0x01, 0x77, 0x63, 0x31, 0xcf, 0xcd, 0xf9, 0x27,
953*f0865ec9SKyle Evans 	0xd6, 0x66, 0xe0, 0x32, 0xe0, 0x0c, 0xf7, 0x76,
954*f0865ec9SKyle Evans 	0x18, 0x7b, 0xc9, 0xfd, 0xd8, 0xe6, 0x9d, 0x0d,
955*f0865ec9SKyle Evans 	0xab, 0xb4, 0x10, 0x9f, 0xfe, 0x1b, 0x5e, 0x2a,
956*f0865ec9SKyle Evans 	0x30, 0x71, 0x5f, 0x4c, 0xc9, 0x23, 0xa4, 0xa5,
957*f0865ec9SKyle Evans 	0xe9, 0x4d, 0x25, 0x03, 0xe9, 0xac, 0xfe, 0xd9,
958*f0865ec9SKyle Evans 	0x28, 0x57, 0xb7, 0xf3, 0x1d, 0x71, 0x52, 0xe0,
959*f0865ec9SKyle Evans 	0xf8, 0xc0, 0x0c, 0x15, 0xff, 0x3d, 0x87, 0xe2,
960*f0865ec9SKyle Evans 	0xed, 0x2e, 0x00, 0x50, 0xcb, 0x52, 0x65, 0x41,
961*f0865ec9SKyle Evans 	0x7f, 0xe2, 0x32, 0x0b, 0xbb, 0x5a, 0x12, 0x2b,
962*f0865ec9SKyle Evans 	0x8e, 0x1a, 0x32, 0xbd, 0x69, 0x90, 0x89, 0x85,
963*f0865ec9SKyle Evans 	0x11, 0x28, 0xe3, 0x60, 0xe6, 0x20, 0xa3, 0x0c,
964*f0865ec9SKyle Evans 	0x7e, 0x17, 0xba, 0x41, 0xa6, 0x66, 0xaf, 0x12,
965*f0865ec9SKyle Evans 	0x6c, 0xe1, 0x00, 0xe5, 0x79, 0x9b, 0x15, 0x3b,
966*f0865ec9SKyle Evans 	0x60, 0x52, 0x8d, 0x53, 0x00, 0xd0, 0x84, 0x89,
967*f0865ec9SKyle Evans 	0xca, 0x91, 0x78, 0xfb, 0x61, 0x0a, 0x20, 0x06,
968*f0865ec9SKyle Evans 	0xc2, 0x54, 0xb4, 0x1f
969*f0865ec9SKyle Evans };
970*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP521R1_SHA224_0_test_vector_priv_key[] = {
971*f0865ec9SKyle Evans 	0x00, 0xfa, 0xd0, 0x6d, 0xaa, 0x62, 0xba, 0x3b,
972*f0865ec9SKyle Evans 	0x25, 0xd2, 0xfb, 0x40, 0x13, 0x3d, 0xa7, 0x57,
973*f0865ec9SKyle Evans 	0x20, 0x5d, 0xe6, 0x7f, 0x5b, 0xb0, 0x01, 0x8f,
974*f0865ec9SKyle Evans 	0xee, 0x8c, 0x86, 0xe1, 0xb6, 0x8c, 0x7e, 0x75,
975*f0865ec9SKyle Evans 	0xca, 0xa8, 0x96, 0xeb, 0x32, 0xf1, 0xf4, 0x7c,
976*f0865ec9SKyle Evans 	0x70, 0x85, 0x58, 0x36, 0xa6, 0xd1, 0x6f, 0xcc,
977*f0865ec9SKyle Evans 	0x14, 0x66, 0xf6, 0xd8, 0xfb, 0xec, 0x67, 0xdb,
978*f0865ec9SKyle Evans 	0x89, 0xec, 0x0c, 0x08, 0xb0, 0xe9, 0x96, 0xb8,
979*f0865ec9SKyle Evans 	0x35, 0x38
980*f0865ec9SKyle Evans };
981*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP521R1_SHA224_0_test_case = {
982*f0865ec9SKyle Evans 	.name="DECDSA-SHA224/SECP521R1 0",
983*f0865ec9SKyle Evans 	.ec_str_p = &secp521r1_str_params,
984*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP521R1_SHA224_0_test_vector_priv_key,
985*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP521R1_SHA224_0_test_vector_priv_key),
986*f0865ec9SKyle Evans 	.nn_random = NULL,
987*f0865ec9SKyle Evans 	.hash_type = SHA224,
988*f0865ec9SKyle Evans 	.msg = "sample",
989*f0865ec9SKyle Evans 	.msglen = 6,
990*f0865ec9SKyle Evans 	.sig_type = DECDSA,
991*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP521R1_SHA224_0_test_vector_expected_sig,
992*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP521R1_SHA224_0_test_vector_expected_sig),
993*f0865ec9SKyle Evans 	.adata = NULL,
994*f0865ec9SKyle Evans 	.adata_len = 0
995*f0865ec9SKyle Evans };
996*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP521R1 */
997*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA224 */
998*f0865ec9SKyle Evans 
999*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA256
1000*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP521R1
1001*f0865ec9SKyle Evans #define DECDSA_SHA256_SECP521R1_SELF_TEST_0
1002*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA256/SECP521R1 ***/
1003*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP521R1_SHA256_0_test_vector_expected_sig[] = {
1004*f0865ec9SKyle Evans 	0x01, 0x51, 0x1b, 0xb4, 0xd6, 0x75, 0x11, 0x4f,
1005*f0865ec9SKyle Evans 	0xe2, 0x66, 0xfc, 0x43, 0x72, 0xb8, 0x76, 0x82,
1006*f0865ec9SKyle Evans 	0xba, 0xec, 0xc0, 0x1d, 0x3c, 0xc6, 0x2c, 0xf2,
1007*f0865ec9SKyle Evans 	0x30, 0x3c, 0x92, 0xb3, 0x52, 0x60, 0x12, 0x65,
1008*f0865ec9SKyle Evans 	0x9d, 0x16, 0x87, 0x6e, 0x25, 0xc7, 0xc1, 0xe5,
1009*f0865ec9SKyle Evans 	0x76, 0x48, 0xf2, 0x3b, 0x73, 0x56, 0x4d, 0x67,
1010*f0865ec9SKyle Evans 	0xf6, 0x1c, 0x6f, 0x14, 0xd5, 0x27, 0xd5, 0x49,
1011*f0865ec9SKyle Evans 	0x72, 0x81, 0x04, 0x21, 0xe7, 0xd8, 0x75, 0x89,
1012*f0865ec9SKyle Evans 	0xe1, 0xa7, 0x00, 0x4a, 0x17, 0x11, 0x43, 0xa8,
1013*f0865ec9SKyle Evans 	0x31, 0x63, 0xd6, 0xdf, 0x46, 0x0a, 0xaf, 0x61,
1014*f0865ec9SKyle Evans 	0x52, 0x26, 0x95, 0xf2, 0x07, 0xa5, 0x8b, 0x95,
1015*f0865ec9SKyle Evans 	0xc0, 0x64, 0x4d, 0x87, 0xe5, 0x2a, 0xa1, 0xa3,
1016*f0865ec9SKyle Evans 	0x47, 0x91, 0x6e, 0x4f, 0x7a, 0x72, 0x93, 0x0b,
1017*f0865ec9SKyle Evans 	0x1b, 0xc0, 0x6d, 0xbe, 0x22, 0xce, 0x3f, 0x58,
1018*f0865ec9SKyle Evans 	0x26, 0x4a, 0xfd, 0x23, 0x70, 0x4c, 0xbb, 0x63,
1019*f0865ec9SKyle Evans 	0xb2, 0x9b, 0x93, 0x1f, 0x7d, 0xe6, 0xc9, 0xd9,
1020*f0865ec9SKyle Evans 	0x49, 0xa7, 0xec, 0xfc
1021*f0865ec9SKyle Evans };
1022*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP521R1_SHA256_0_test_vector_priv_key[] = {
1023*f0865ec9SKyle Evans 	0x00, 0xfa, 0xd0, 0x6d, 0xaa, 0x62, 0xba, 0x3b,
1024*f0865ec9SKyle Evans 	0x25, 0xd2, 0xfb, 0x40, 0x13, 0x3d, 0xa7, 0x57,
1025*f0865ec9SKyle Evans 	0x20, 0x5d, 0xe6, 0x7f, 0x5b, 0xb0, 0x01, 0x8f,
1026*f0865ec9SKyle Evans 	0xee, 0x8c, 0x86, 0xe1, 0xb6, 0x8c, 0x7e, 0x75,
1027*f0865ec9SKyle Evans 	0xca, 0xa8, 0x96, 0xeb, 0x32, 0xf1, 0xf4, 0x7c,
1028*f0865ec9SKyle Evans 	0x70, 0x85, 0x58, 0x36, 0xa6, 0xd1, 0x6f, 0xcc,
1029*f0865ec9SKyle Evans 	0x14, 0x66, 0xf6, 0xd8, 0xfb, 0xec, 0x67, 0xdb,
1030*f0865ec9SKyle Evans 	0x89, 0xec, 0x0c, 0x08, 0xb0, 0xe9, 0x96, 0xb8,
1031*f0865ec9SKyle Evans 	0x35, 0x38
1032*f0865ec9SKyle Evans };
1033*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP521R1_SHA256_0_test_case = {
1034*f0865ec9SKyle Evans 	.name="DECDSA-SHA256/SECP521R1 0",
1035*f0865ec9SKyle Evans 	.ec_str_p = &secp521r1_str_params,
1036*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP521R1_SHA256_0_test_vector_priv_key,
1037*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP521R1_SHA256_0_test_vector_priv_key),
1038*f0865ec9SKyle Evans 	.nn_random = NULL,
1039*f0865ec9SKyle Evans 	.hash_type = SHA256,
1040*f0865ec9SKyle Evans 	.msg = "sample",
1041*f0865ec9SKyle Evans 	.msglen = 6,
1042*f0865ec9SKyle Evans 	.sig_type = DECDSA,
1043*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP521R1_SHA256_0_test_vector_expected_sig,
1044*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP521R1_SHA256_0_test_vector_expected_sig),
1045*f0865ec9SKyle Evans 	.adata = NULL,
1046*f0865ec9SKyle Evans 	.adata_len = 0
1047*f0865ec9SKyle Evans };
1048*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP521R1 */
1049*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA256 */
1050*f0865ec9SKyle Evans 
1051*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA384
1052*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP521R1
1053*f0865ec9SKyle Evans #define DECDSA_SHA384_SECP521R1_SELF_TEST_0
1054*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA384/SECP521R1 ***/
1055*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP521R1_SHA384_0_test_vector_expected_sig[] = {
1056*f0865ec9SKyle Evans 	0x01, 0xea, 0x84, 0x2a, 0x0e, 0x17, 0xd2, 0xde,
1057*f0865ec9SKyle Evans 	0x4f, 0x92, 0xc1, 0x53, 0x15, 0xc6, 0x3d, 0xdf,
1058*f0865ec9SKyle Evans 	0x72, 0x68, 0x5c, 0x18, 0x19, 0x5c, 0x2b, 0xb9,
1059*f0865ec9SKyle Evans 	0x5e, 0x57, 0x2b, 0x9c, 0x51, 0x36, 0xca, 0x4b,
1060*f0865ec9SKyle Evans 	0x4b, 0x57, 0x6a, 0xd7, 0x12, 0xa5, 0x2b, 0xe9,
1061*f0865ec9SKyle Evans 	0x73, 0x06, 0x27, 0xd1, 0x60, 0x54, 0xba, 0x40,
1062*f0865ec9SKyle Evans 	0xcc, 0x0b, 0x8d, 0x3f, 0xf0, 0x35, 0xb1, 0x2a,
1063*f0865ec9SKyle Evans 	0xe7, 0x51, 0x68, 0x39, 0x7f, 0x5d, 0x50, 0xc6,
1064*f0865ec9SKyle Evans 	0x74, 0x51, 0x01, 0xf2, 0x1a, 0x3c, 0xee, 0x06,
1065*f0865ec9SKyle Evans 	0x6e, 0x19, 0x61, 0x02, 0x5f, 0xb0, 0x48, 0xbd,
1066*f0865ec9SKyle Evans 	0x5f, 0xe2, 0xb7, 0x92, 0x4d, 0x0c, 0xd7, 0x97,
1067*f0865ec9SKyle Evans 	0xba, 0xbe, 0x0a, 0x83, 0xb6, 0x6f, 0x1e, 0x35,
1068*f0865ec9SKyle Evans 	0xee, 0xaf, 0x5f, 0xde, 0x14, 0x3f, 0xa8, 0x5d,
1069*f0865ec9SKyle Evans 	0xc3, 0x94, 0xa7, 0xde, 0xe7, 0x66, 0x52, 0x33,
1070*f0865ec9SKyle Evans 	0x93, 0x78, 0x44, 0x84, 0xbd, 0xf3, 0xe0, 0x01,
1071*f0865ec9SKyle Evans 	0x14, 0xa1, 0xc8, 0x57, 0xcd, 0xe1, 0xaa, 0x20,
1072*f0865ec9SKyle Evans 	0x3d, 0xb6, 0x5d, 0x61
1073*f0865ec9SKyle Evans };
1074*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP521R1_SHA384_0_test_vector_priv_key[] = {
1075*f0865ec9SKyle Evans 	0x00, 0xfa, 0xd0, 0x6d, 0xaa, 0x62, 0xba, 0x3b,
1076*f0865ec9SKyle Evans 	0x25, 0xd2, 0xfb, 0x40, 0x13, 0x3d, 0xa7, 0x57,
1077*f0865ec9SKyle Evans 	0x20, 0x5d, 0xe6, 0x7f, 0x5b, 0xb0, 0x01, 0x8f,
1078*f0865ec9SKyle Evans 	0xee, 0x8c, 0x86, 0xe1, 0xb6, 0x8c, 0x7e, 0x75,
1079*f0865ec9SKyle Evans 	0xca, 0xa8, 0x96, 0xeb, 0x32, 0xf1, 0xf4, 0x7c,
1080*f0865ec9SKyle Evans 	0x70, 0x85, 0x58, 0x36, 0xa6, 0xd1, 0x6f, 0xcc,
1081*f0865ec9SKyle Evans 	0x14, 0x66, 0xf6, 0xd8, 0xfb, 0xec, 0x67, 0xdb,
1082*f0865ec9SKyle Evans 	0x89, 0xec, 0x0c, 0x08, 0xb0, 0xe9, 0x96, 0xb8,
1083*f0865ec9SKyle Evans 	0x35, 0x38
1084*f0865ec9SKyle Evans };
1085*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP521R1_SHA384_0_test_case = {
1086*f0865ec9SKyle Evans 	.name="DECDSA-SHA384/SECP521R1 0",
1087*f0865ec9SKyle Evans 	.ec_str_p = &secp521r1_str_params,
1088*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP521R1_SHA384_0_test_vector_priv_key,
1089*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP521R1_SHA384_0_test_vector_priv_key),
1090*f0865ec9SKyle Evans 	.nn_random = NULL,
1091*f0865ec9SKyle Evans 	.hash_type = SHA384,
1092*f0865ec9SKyle Evans 	.msg = "sample",
1093*f0865ec9SKyle Evans 	.msglen = 6,
1094*f0865ec9SKyle Evans 	.sig_type = DECDSA,
1095*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP521R1_SHA384_0_test_vector_expected_sig,
1096*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP521R1_SHA384_0_test_vector_expected_sig),
1097*f0865ec9SKyle Evans 	.adata = NULL,
1098*f0865ec9SKyle Evans 	.adata_len = 0
1099*f0865ec9SKyle Evans };
1100*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP521R1 */
1101*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA384 */
1102*f0865ec9SKyle Evans 
1103*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA512
1104*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP521R1
1105*f0865ec9SKyle Evans #define DECDSA_SHA512_SECP521R1_SELF_TEST_0
1106*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA512/SECP521R1 ***/
1107*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP521R1_SHA512_0_test_vector_expected_sig[] = {
1108*f0865ec9SKyle Evans 	0x00, 0xc3, 0x28, 0xfa, 0xfc, 0xbd, 0x79, 0xdd,
1109*f0865ec9SKyle Evans 	0x77, 0x85, 0x03, 0x70, 0xc4, 0x63, 0x25, 0xd9,
1110*f0865ec9SKyle Evans 	0x87, 0xcb, 0x52, 0x55, 0x69, 0xfb, 0x63, 0xc5,
1111*f0865ec9SKyle Evans 	0xd3, 0xbc, 0x53, 0x95, 0x0e, 0x6d, 0x4c, 0x5f,
1112*f0865ec9SKyle Evans 	0x17, 0x4e, 0x25, 0xa1, 0xee, 0x90, 0x17, 0xb5,
1113*f0865ec9SKyle Evans 	0xd4, 0x50, 0x60, 0x6a, 0xdd, 0x15, 0x2b, 0x53,
1114*f0865ec9SKyle Evans 	0x49, 0x31, 0xd7, 0xd4, 0xe8, 0x45, 0x5c, 0xc9,
1115*f0865ec9SKyle Evans 	0x1f, 0x9b, 0x15, 0xbf, 0x05, 0xec, 0x36, 0xe3,
1116*f0865ec9SKyle Evans 	0x77, 0xfa, 0x00, 0x61, 0x7c, 0xce, 0x7c, 0xf5,
1117*f0865ec9SKyle Evans 	0x06, 0x48, 0x06, 0xc4, 0x67, 0xf6, 0x78, 0xd3,
1118*f0865ec9SKyle Evans 	0xb4, 0x08, 0x0d, 0x6f, 0x1c, 0xc5, 0x0a, 0xf2,
1119*f0865ec9SKyle Evans 	0x6c, 0xa2, 0x09, 0x41, 0x73, 0x08, 0x28, 0x1b,
1120*f0865ec9SKyle Evans 	0x68, 0xaf, 0x28, 0x26, 0x23, 0xea, 0xa6, 0x3e,
1121*f0865ec9SKyle Evans 	0x5b, 0x5c, 0x07, 0x23, 0xd8, 0xb8, 0xc3, 0x7f,
1122*f0865ec9SKyle Evans 	0xf0, 0x77, 0x7b, 0x1a, 0x20, 0xf8, 0xcc, 0xb1,
1123*f0865ec9SKyle Evans 	0xdc, 0xcc, 0x43, 0x99, 0x7f, 0x1e, 0xe0, 0xe4,
1124*f0865ec9SKyle Evans 	0x4d, 0xa4, 0xa6, 0x7a
1125*f0865ec9SKyle Evans };
1126*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP521R1_SHA512_0_test_vector_priv_key[] = {
1127*f0865ec9SKyle Evans 	0x00, 0xfa, 0xd0, 0x6d, 0xaa, 0x62, 0xba, 0x3b,
1128*f0865ec9SKyle Evans 	0x25, 0xd2, 0xfb, 0x40, 0x13, 0x3d, 0xa7, 0x57,
1129*f0865ec9SKyle Evans 	0x20, 0x5d, 0xe6, 0x7f, 0x5b, 0xb0, 0x01, 0x8f,
1130*f0865ec9SKyle Evans 	0xee, 0x8c, 0x86, 0xe1, 0xb6, 0x8c, 0x7e, 0x75,
1131*f0865ec9SKyle Evans 	0xca, 0xa8, 0x96, 0xeb, 0x32, 0xf1, 0xf4, 0x7c,
1132*f0865ec9SKyle Evans 	0x70, 0x85, 0x58, 0x36, 0xa6, 0xd1, 0x6f, 0xcc,
1133*f0865ec9SKyle Evans 	0x14, 0x66, 0xf6, 0xd8, 0xfb, 0xec, 0x67, 0xdb,
1134*f0865ec9SKyle Evans 	0x89, 0xec, 0x0c, 0x08, 0xb0, 0xe9, 0x96, 0xb8,
1135*f0865ec9SKyle Evans 	0x35, 0x38
1136*f0865ec9SKyle Evans };
1137*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP521R1_SHA512_0_test_case = {
1138*f0865ec9SKyle Evans 	.name="DECDSA-SHA512/SECP521R1 0",
1139*f0865ec9SKyle Evans 	.ec_str_p = &secp521r1_str_params,
1140*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP521R1_SHA512_0_test_vector_priv_key,
1141*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP521R1_SHA512_0_test_vector_priv_key),
1142*f0865ec9SKyle Evans 	.nn_random = NULL,
1143*f0865ec9SKyle Evans 	.hash_type = SHA512,
1144*f0865ec9SKyle Evans 	.msg = "sample",
1145*f0865ec9SKyle Evans 	.msglen = 6,
1146*f0865ec9SKyle Evans 	.sig_type = DECDSA,
1147*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP521R1_SHA512_0_test_vector_expected_sig,
1148*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP521R1_SHA512_0_test_vector_expected_sig),
1149*f0865ec9SKyle Evans 	.adata = NULL,
1150*f0865ec9SKyle Evans 	.adata_len = 0
1151*f0865ec9SKyle Evans };
1152*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP521R1 */
1153*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA512 */
1154*f0865ec9SKyle Evans 
1155*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA224
1156*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP521R1
1157*f0865ec9SKyle Evans #define DECDSA_SHA224_SECP521R1_SELF_TEST_1
1158*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA224/SECP521R1 ***/
1159*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP521R1_SHA224_1_test_vector_expected_sig[] = {
1160*f0865ec9SKyle Evans 	0x01, 0xc7, 0xed, 0x90, 0x2e, 0x12, 0x3e, 0x68,
1161*f0865ec9SKyle Evans 	0x15, 0x54, 0x60, 0x65, 0xa2, 0xc4, 0xaf, 0x97,
1162*f0865ec9SKyle Evans 	0x7b, 0x22, 0xaa, 0x8e, 0xad, 0xdb, 0x68, 0xb2,
1163*f0865ec9SKyle Evans 	0xc1, 0x11, 0x0e, 0x7e, 0xa4, 0x4d, 0x42, 0x08,
1164*f0865ec9SKyle Evans 	0x6b, 0xfe, 0x4a, 0x34, 0xb6, 0x7d, 0xdc, 0x0e,
1165*f0865ec9SKyle Evans 	0x17, 0xe9, 0x65, 0x36, 0xe3, 0x58, 0x21, 0x9b,
1166*f0865ec9SKyle Evans 	0x23, 0xa7, 0x06, 0xc6, 0xa6, 0xe1, 0x6b, 0xa7,
1167*f0865ec9SKyle Evans 	0x7b, 0x65, 0xe1, 0xc5, 0x95, 0xd4, 0x3c, 0xae,
1168*f0865ec9SKyle Evans 	0x17, 0xfb, 0x01, 0x77, 0x33, 0x66, 0x76, 0x30,
1169*f0865ec9SKyle Evans 	0x4f, 0xcb, 0x34, 0x3c, 0xe0, 0x28, 0xb3, 0x8e,
1170*f0865ec9SKyle Evans 	0x7b, 0x4f, 0xba, 0x76, 0xc1, 0xc1, 0xb2, 0x77,
1171*f0865ec9SKyle Evans 	0xda, 0x18, 0xca, 0xd2, 0xa8, 0x47, 0x8b, 0x2a,
1172*f0865ec9SKyle Evans 	0x9a, 0x9f, 0x5b, 0xec, 0x0f, 0x3b, 0xa0, 0x4f,
1173*f0865ec9SKyle Evans 	0x35, 0xdb, 0x3e, 0x42, 0x63, 0x56, 0x9e, 0xc6,
1174*f0865ec9SKyle Evans 	0xaa, 0xde, 0x8c, 0x92, 0x74, 0x6e, 0x4c, 0x82,
1175*f0865ec9SKyle Evans 	0xf8, 0x29, 0x9a, 0xe1, 0xb8, 0xf1, 0x73, 0x9f,
1176*f0865ec9SKyle Evans 	0x8f, 0xd5, 0x19, 0xa4
1177*f0865ec9SKyle Evans };
1178*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP521R1_SHA224_1_test_vector_priv_key[] = {
1179*f0865ec9SKyle Evans 	0x00, 0xfa, 0xd0, 0x6d, 0xaa, 0x62, 0xba, 0x3b,
1180*f0865ec9SKyle Evans 	0x25, 0xd2, 0xfb, 0x40, 0x13, 0x3d, 0xa7, 0x57,
1181*f0865ec9SKyle Evans 	0x20, 0x5d, 0xe6, 0x7f, 0x5b, 0xb0, 0x01, 0x8f,
1182*f0865ec9SKyle Evans 	0xee, 0x8c, 0x86, 0xe1, 0xb6, 0x8c, 0x7e, 0x75,
1183*f0865ec9SKyle Evans 	0xca, 0xa8, 0x96, 0xeb, 0x32, 0xf1, 0xf4, 0x7c,
1184*f0865ec9SKyle Evans 	0x70, 0x85, 0x58, 0x36, 0xa6, 0xd1, 0x6f, 0xcc,
1185*f0865ec9SKyle Evans 	0x14, 0x66, 0xf6, 0xd8, 0xfb, 0xec, 0x67, 0xdb,
1186*f0865ec9SKyle Evans 	0x89, 0xec, 0x0c, 0x08, 0xb0, 0xe9, 0x96, 0xb8,
1187*f0865ec9SKyle Evans 	0x35, 0x38
1188*f0865ec9SKyle Evans };
1189*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP521R1_SHA224_1_test_case = {
1190*f0865ec9SKyle Evans 	.name="DECDSA-SHA224/SECP521R1 1",
1191*f0865ec9SKyle Evans 	.ec_str_p = &secp521r1_str_params,
1192*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP521R1_SHA224_1_test_vector_priv_key,
1193*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP521R1_SHA224_1_test_vector_priv_key),
1194*f0865ec9SKyle Evans 	.nn_random = NULL,
1195*f0865ec9SKyle Evans 	.hash_type = SHA224,
1196*f0865ec9SKyle Evans 	.msg = "test",
1197*f0865ec9SKyle Evans 	.msglen = 4,
1198*f0865ec9SKyle Evans 	.sig_type = DECDSA,
1199*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP521R1_SHA224_1_test_vector_expected_sig,
1200*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP521R1_SHA224_1_test_vector_expected_sig),
1201*f0865ec9SKyle Evans 	.adata = NULL,
1202*f0865ec9SKyle Evans 	.adata_len = 0
1203*f0865ec9SKyle Evans };
1204*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP521R1 */
1205*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA224 */
1206*f0865ec9SKyle Evans 
1207*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA256
1208*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP521R1
1209*f0865ec9SKyle Evans #define DECDSA_SHA256_SECP521R1_SELF_TEST_1
1210*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA256/SECP521R1 ***/
1211*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP521R1_SHA256_1_test_vector_expected_sig[] = {
1212*f0865ec9SKyle Evans 	0x00, 0x0e, 0x87, 0x1c, 0x4a, 0x14, 0xf9, 0x93,
1213*f0865ec9SKyle Evans 	0xc6, 0xc7, 0x36, 0x95, 0x01, 0x90, 0x0c, 0x4b,
1214*f0865ec9SKyle Evans 	0xc1, 0xe9, 0xc7, 0xb0, 0xb4, 0xba, 0x44, 0xe0,
1215*f0865ec9SKyle Evans 	0x48, 0x68, 0xb3, 0x0b, 0x41, 0xd8, 0x07, 0x10,
1216*f0865ec9SKyle Evans 	0x42, 0xeb, 0x28, 0xc4, 0xc2, 0x50, 0x41, 0x1d,
1217*f0865ec9SKyle Evans 	0x0c, 0xe0, 0x8c, 0xd1, 0x97, 0xe4, 0x18, 0x8e,
1218*f0865ec9SKyle Evans 	0xa4, 0x87, 0x6f, 0x27, 0x9f, 0x90, 0xb3, 0xd8,
1219*f0865ec9SKyle Evans 	0xd7, 0x4a, 0x3c, 0x76, 0xe6, 0xf1, 0xe4, 0x65,
1220*f0865ec9SKyle Evans 	0x6a, 0xa8, 0x00, 0xcd, 0x52, 0xdb, 0xaa, 0x33,
1221*f0865ec9SKyle Evans 	0xb0, 0x63, 0xc3, 0xa6, 0xcd, 0x80, 0x58, 0xa1,
1222*f0865ec9SKyle Evans 	0xfb, 0x0a, 0x46, 0xa4, 0x75, 0x4b, 0x03, 0x4f,
1223*f0865ec9SKyle Evans 	0xcc, 0x64, 0x47, 0x66, 0xca, 0x14, 0xda, 0x8c,
1224*f0865ec9SKyle Evans 	0xa5, 0xca, 0x9f, 0xde, 0x00, 0xe8, 0x8c, 0x1a,
1225*f0865ec9SKyle Evans 	0xd6, 0x0c, 0xcb, 0xa7, 0x59, 0x02, 0x52, 0x99,
1226*f0865ec9SKyle Evans 	0x07, 0x9d, 0x7a, 0x42, 0x7e, 0xc3, 0xcc, 0x5b,
1227*f0865ec9SKyle Evans 	0x61, 0x9b, 0xfb, 0xc8, 0x28, 0xe7, 0x76, 0x9b,
1228*f0865ec9SKyle Evans 	0xcd, 0x69, 0x4e, 0x86
1229*f0865ec9SKyle Evans };
1230*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP521R1_SHA256_1_test_vector_priv_key[] = {
1231*f0865ec9SKyle Evans 	0x00, 0xfa, 0xd0, 0x6d, 0xaa, 0x62, 0xba, 0x3b,
1232*f0865ec9SKyle Evans 	0x25, 0xd2, 0xfb, 0x40, 0x13, 0x3d, 0xa7, 0x57,
1233*f0865ec9SKyle Evans 	0x20, 0x5d, 0xe6, 0x7f, 0x5b, 0xb0, 0x01, 0x8f,
1234*f0865ec9SKyle Evans 	0xee, 0x8c, 0x86, 0xe1, 0xb6, 0x8c, 0x7e, 0x75,
1235*f0865ec9SKyle Evans 	0xca, 0xa8, 0x96, 0xeb, 0x32, 0xf1, 0xf4, 0x7c,
1236*f0865ec9SKyle Evans 	0x70, 0x85, 0x58, 0x36, 0xa6, 0xd1, 0x6f, 0xcc,
1237*f0865ec9SKyle Evans 	0x14, 0x66, 0xf6, 0xd8, 0xfb, 0xec, 0x67, 0xdb,
1238*f0865ec9SKyle Evans 	0x89, 0xec, 0x0c, 0x08, 0xb0, 0xe9, 0x96, 0xb8,
1239*f0865ec9SKyle Evans 	0x35, 0x38
1240*f0865ec9SKyle Evans };
1241*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP521R1_SHA256_1_test_case = {
1242*f0865ec9SKyle Evans 	.name="DECDSA-SHA256/SECP521R1 1",
1243*f0865ec9SKyle Evans 	.ec_str_p = &secp521r1_str_params,
1244*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP521R1_SHA256_1_test_vector_priv_key,
1245*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP521R1_SHA256_1_test_vector_priv_key),
1246*f0865ec9SKyle Evans 	.nn_random = NULL,
1247*f0865ec9SKyle Evans 	.hash_type = SHA256,
1248*f0865ec9SKyle Evans 	.msg = "test",
1249*f0865ec9SKyle Evans 	.msglen = 4,
1250*f0865ec9SKyle Evans 	.sig_type = DECDSA,
1251*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP521R1_SHA256_1_test_vector_expected_sig,
1252*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP521R1_SHA256_1_test_vector_expected_sig),
1253*f0865ec9SKyle Evans 	.adata = NULL,
1254*f0865ec9SKyle Evans 	.adata_len = 0
1255*f0865ec9SKyle Evans };
1256*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP521R1 */
1257*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA256 */
1258*f0865ec9SKyle Evans 
1259*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA384
1260*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP521R1
1261*f0865ec9SKyle Evans #define DECDSA_SHA384_SECP521R1_SELF_TEST_1
1262*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA384/SECP521R1 ***/
1263*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP521R1_SHA384_1_test_vector_expected_sig[] = {
1264*f0865ec9SKyle Evans 	0x01, 0x4b, 0xee, 0x21, 0xa1, 0x8b, 0x6d, 0x8b,
1265*f0865ec9SKyle Evans 	0x3c, 0x93, 0xfa, 0xb0, 0x8d, 0x43, 0xe7, 0x39,
1266*f0865ec9SKyle Evans 	0x70, 0x79, 0x53, 0x24, 0x4f, 0xdb, 0xe9, 0x24,
1267*f0865ec9SKyle Evans 	0xfa, 0x92, 0x6d, 0x76, 0x66, 0x9e, 0x7a, 0xc8,
1268*f0865ec9SKyle Evans 	0xc8, 0x9d, 0xf6, 0x2e, 0xd8, 0x97, 0x5c, 0x2d,
1269*f0865ec9SKyle Evans 	0x83, 0x97, 0xa6, 0x5a, 0x49, 0xdc, 0xc0, 0x9f,
1270*f0865ec9SKyle Evans 	0x6b, 0x0a, 0xc6, 0x22, 0x72, 0x74, 0x19, 0x24,
1271*f0865ec9SKyle Evans 	0xd4, 0x79, 0x35, 0x4d, 0x74, 0xff, 0x60, 0x75,
1272*f0865ec9SKyle Evans 	0x57, 0x8c, 0x01, 0x33, 0x33, 0x08, 0x65, 0xc0,
1273*f0865ec9SKyle Evans 	0x67, 0xa0, 0xea, 0xf7, 0x23, 0x62, 0xa6, 0x5e,
1274*f0865ec9SKyle Evans 	0x2d, 0x7b, 0xc4, 0xe4, 0x61, 0xe8, 0xc8, 0x99,
1275*f0865ec9SKyle Evans 	0x5c, 0x3b, 0x62, 0x26, 0xa2, 0x1b, 0xd1, 0xaa,
1276*f0865ec9SKyle Evans 	0x78, 0xf0, 0xed, 0x94, 0xfe, 0x53, 0x6a, 0x0d,
1277*f0865ec9SKyle Evans 	0xca, 0x35, 0x53, 0x4f, 0x0c, 0xd1, 0x51, 0x0c,
1278*f0865ec9SKyle Evans 	0x41, 0x52, 0x5d, 0x16, 0x3f, 0xe9, 0xd7, 0x4d,
1279*f0865ec9SKyle Evans 	0x13, 0x48, 0x81, 0xe3, 0x51, 0x41, 0xed, 0x5e,
1280*f0865ec9SKyle Evans 	0x8e, 0x95, 0xb9, 0x79
1281*f0865ec9SKyle Evans };
1282*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP521R1_SHA384_1_test_vector_priv_key[] = {
1283*f0865ec9SKyle Evans 	0x00, 0xfa, 0xd0, 0x6d, 0xaa, 0x62, 0xba, 0x3b,
1284*f0865ec9SKyle Evans 	0x25, 0xd2, 0xfb, 0x40, 0x13, 0x3d, 0xa7, 0x57,
1285*f0865ec9SKyle Evans 	0x20, 0x5d, 0xe6, 0x7f, 0x5b, 0xb0, 0x01, 0x8f,
1286*f0865ec9SKyle Evans 	0xee, 0x8c, 0x86, 0xe1, 0xb6, 0x8c, 0x7e, 0x75,
1287*f0865ec9SKyle Evans 	0xca, 0xa8, 0x96, 0xeb, 0x32, 0xf1, 0xf4, 0x7c,
1288*f0865ec9SKyle Evans 	0x70, 0x85, 0x58, 0x36, 0xa6, 0xd1, 0x6f, 0xcc,
1289*f0865ec9SKyle Evans 	0x14, 0x66, 0xf6, 0xd8, 0xfb, 0xec, 0x67, 0xdb,
1290*f0865ec9SKyle Evans 	0x89, 0xec, 0x0c, 0x08, 0xb0, 0xe9, 0x96, 0xb8,
1291*f0865ec9SKyle Evans 	0x35, 0x38
1292*f0865ec9SKyle Evans };
1293*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP521R1_SHA384_1_test_case = {
1294*f0865ec9SKyle Evans 	.name="DECDSA-SHA384/SECP521R1 1",
1295*f0865ec9SKyle Evans 	.ec_str_p = &secp521r1_str_params,
1296*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP521R1_SHA384_1_test_vector_priv_key,
1297*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP521R1_SHA384_1_test_vector_priv_key),
1298*f0865ec9SKyle Evans 	.nn_random = NULL,
1299*f0865ec9SKyle Evans 	.hash_type = SHA384,
1300*f0865ec9SKyle Evans 	.msg = "test",
1301*f0865ec9SKyle Evans 	.msglen = 4,
1302*f0865ec9SKyle Evans 	.sig_type = DECDSA,
1303*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP521R1_SHA384_1_test_vector_expected_sig,
1304*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP521R1_SHA384_1_test_vector_expected_sig),
1305*f0865ec9SKyle Evans 	.adata = NULL,
1306*f0865ec9SKyle Evans 	.adata_len = 0
1307*f0865ec9SKyle Evans };
1308*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP521R1 */
1309*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA384 */
1310*f0865ec9SKyle Evans 
1311*f0865ec9SKyle Evans #ifdef WITH_HASH_SHA512
1312*f0865ec9SKyle Evans #ifdef WITH_CURVE_SECP521R1
1313*f0865ec9SKyle Evans #define DECDSA_SHA512_SECP521R1_SELF_TEST_1
1314*f0865ec9SKyle Evans /*** Tests for DECDSA-SHA512/SECP521R1 ***/
1315*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP521R1_SHA512_1_test_vector_expected_sig[] = {
1316*f0865ec9SKyle Evans 	0x01, 0x3e, 0x99, 0x02, 0x0a, 0xbf, 0x5c, 0xee,
1317*f0865ec9SKyle Evans 	0x75, 0x25, 0xd1, 0x6b, 0x69, 0xb2, 0x29, 0x65,
1318*f0865ec9SKyle Evans 	0x2a, 0xb6, 0xbd, 0xf2, 0xaf, 0xfc, 0xae, 0xf3,
1319*f0865ec9SKyle Evans 	0x87, 0x73, 0xb4, 0xb7, 0xd0, 0x87, 0x25, 0xf1,
1320*f0865ec9SKyle Evans 	0x0c, 0xdb, 0x93, 0x48, 0x2f, 0xdc, 0xc5, 0x4e,
1321*f0865ec9SKyle Evans 	0xdc, 0xee, 0x91, 0xec, 0xa4, 0x16, 0x6b, 0x2a,
1322*f0865ec9SKyle Evans 	0x7c, 0x62, 0x65, 0xef, 0x0c, 0xe2, 0xbd, 0x70,
1323*f0865ec9SKyle Evans 	0x51, 0xb7, 0xce, 0xf9, 0x45, 0xba, 0xbd, 0x47,
1324*f0865ec9SKyle Evans 	0xee, 0x6d, 0x01, 0xfb, 0xd0, 0x01, 0x3c, 0x67,
1325*f0865ec9SKyle Evans 	0x4a, 0xa7, 0x9c, 0xb3, 0x98, 0x49, 0x52, 0x79,
1326*f0865ec9SKyle Evans 	0x16, 0xce, 0x30, 0x1c, 0x66, 0xea, 0x7c, 0xe8,
1327*f0865ec9SKyle Evans 	0xb8, 0x06, 0x82, 0x78, 0x6a, 0xd6, 0x0f, 0x98,
1328*f0865ec9SKyle Evans 	0xf7, 0xe7, 0x8a, 0x19, 0xca, 0x69, 0xef, 0xf5,
1329*f0865ec9SKyle Evans 	0xc5, 0x74, 0x00, 0xe3, 0xb3, 0xa0, 0xad, 0x66,
1330*f0865ec9SKyle Evans 	0xce, 0x09, 0x78, 0x21, 0x4d, 0x13, 0xba, 0xf4,
1331*f0865ec9SKyle Evans 	0xe9, 0xac, 0x60, 0x75, 0x2f, 0x7b, 0x15, 0x5e,
1332*f0865ec9SKyle Evans 	0x2d, 0xe4, 0xdc, 0xe3
1333*f0865ec9SKyle Evans };
1334*f0865ec9SKyle Evans static const u8 decdsa_rfc6979_SECP521R1_SHA512_1_test_vector_priv_key[] = {
1335*f0865ec9SKyle Evans 	0x00, 0xfa, 0xd0, 0x6d, 0xaa, 0x62, 0xba, 0x3b,
1336*f0865ec9SKyle Evans 	0x25, 0xd2, 0xfb, 0x40, 0x13, 0x3d, 0xa7, 0x57,
1337*f0865ec9SKyle Evans 	0x20, 0x5d, 0xe6, 0x7f, 0x5b, 0xb0, 0x01, 0x8f,
1338*f0865ec9SKyle Evans 	0xee, 0x8c, 0x86, 0xe1, 0xb6, 0x8c, 0x7e, 0x75,
1339*f0865ec9SKyle Evans 	0xca, 0xa8, 0x96, 0xeb, 0x32, 0xf1, 0xf4, 0x7c,
1340*f0865ec9SKyle Evans 	0x70, 0x85, 0x58, 0x36, 0xa6, 0xd1, 0x6f, 0xcc,
1341*f0865ec9SKyle Evans 	0x14, 0x66, 0xf6, 0xd8, 0xfb, 0xec, 0x67, 0xdb,
1342*f0865ec9SKyle Evans 	0x89, 0xec, 0x0c, 0x08, 0xb0, 0xe9, 0x96, 0xb8,
1343*f0865ec9SKyle Evans 	0x35, 0x38
1344*f0865ec9SKyle Evans };
1345*f0865ec9SKyle Evans static const ec_test_case decdsa_rfc6979_SECP521R1_SHA512_1_test_case = {
1346*f0865ec9SKyle Evans 	.name="DECDSA-SHA512/SECP521R1 1",
1347*f0865ec9SKyle Evans 	.ec_str_p = &secp521r1_str_params,
1348*f0865ec9SKyle Evans 	.priv_key = decdsa_rfc6979_SECP521R1_SHA512_1_test_vector_priv_key,
1349*f0865ec9SKyle Evans 	.priv_key_len = sizeof(decdsa_rfc6979_SECP521R1_SHA512_1_test_vector_priv_key),
1350*f0865ec9SKyle Evans 	.nn_random = NULL,
1351*f0865ec9SKyle Evans 	.hash_type = SHA512,
1352*f0865ec9SKyle Evans 	.msg = "test",
1353*f0865ec9SKyle Evans 	.msglen = 4,
1354*f0865ec9SKyle Evans 	.sig_type = DECDSA,
1355*f0865ec9SKyle Evans 	.exp_sig = decdsa_rfc6979_SECP521R1_SHA512_1_test_vector_expected_sig,
1356*f0865ec9SKyle Evans 	.exp_siglen = sizeof(decdsa_rfc6979_SECP521R1_SHA512_1_test_vector_expected_sig),
1357*f0865ec9SKyle Evans 	.adata = NULL,
1358*f0865ec9SKyle Evans 	.adata_len = 0
1359*f0865ec9SKyle Evans };
1360*f0865ec9SKyle Evans #endif /* WITH_CURVE_SECP521R1 */
1361*f0865ec9SKyle Evans #endif /* WITH_HASH_SHA512 */
1362*f0865ec9SKyle Evans 
1363