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