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