1/* 2 * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. 3 * 4 * Licensed under the Apache License 2.0 (the "License"). You may not use 5 * this file except in compliance with the License. You can obtain a copy 6 * in the file LICENSE in the source distribution or at 7 * https://www.openssl.org/source/license.html 8 */ 9 10/* 11 * This file contains self test data required by FIPS 140-3 IG 12 * 10.3.A Cryptographic Algorithm Self test Requirements 13 * 14 * Note that in the 'General CAST requirements': Note33 Allows individual 15 * self tests for low level algorithms (such as digests) to be omitted, if 16 * they are tested as part of a higher level algorithm (such as HMAC). 17 */ 18 19/* Macros to build Self test data */ 20#define ITM(x) ((void *)&x), sizeof(x) 21#define ITM_STR(x) ((void *)&x), (sizeof(x) - 1) 22 23#define ST_KAT_PARAM_END() { "", 0, NULL, 0 } 24#define ST_KAT_PARAM_BIGNUM(name, data) \ 25 { name, OSSL_PARAM_UNSIGNED_INTEGER, ITM(data) } 26#define ST_KAT_PARAM_OCTET(name, data) \ 27 { name, OSSL_PARAM_OCTET_STRING, ITM(data) } 28#define ST_KAT_PARAM_UTF8STRING(name, data) \ 29 { name, OSSL_PARAM_UTF8_STRING, ITM_STR(data) } 30#define ST_KAT_PARAM_UTF8CHAR(name, data) \ 31 { name, OSSL_PARAM_UTF8_STRING, ITM(data) } 32#define ST_KAT_PARAM_INT(name, i) \ 33 { name, OSSL_PARAM_INTEGER, ITM(i) } 34 35/* used to store raw parameters for keys and algorithms */ 36typedef struct st_kat_param_st { 37 const char *name; /* an OSSL_PARAM name */ 38 size_t type; /* the type associated with the data */ 39 const void *data; /* unsigned char [], or char [] depending on the type */ 40 size_t data_len; /* the length of the data */ 41} ST_KAT_PARAM; 42 43typedef struct st_kat_st { 44 const char *desc; 45 const char *algorithm; 46 const unsigned char *pt; 47 size_t pt_len; 48 const unsigned char *expected; 49 size_t expected_len; 50} ST_KAT; 51 52#define CIPHER_MODE_ENCRYPT 1 53#define CIPHER_MODE_DECRYPT 2 54#define CIPHER_MODE_ALL (CIPHER_MODE_ENCRYPT | CIPHER_MODE_DECRYPT) 55 56/* FIPS 140-3 only allows DSA verification for legacy purposes */ 57#define SIGNATURE_MODE_VERIFY_ONLY 1 58#define SIGNATURE_MODE_SIGN_ONLY 2 59#define SIGNATURE_MODE_DIGESTED 4 60#define SIGNATURE_MODE_SIG_DIGESTED 8 61 62typedef ST_KAT ST_KAT_DIGEST; 63typedef struct st_kat_cipher_st { 64 ST_KAT base; 65 int mode; 66 const unsigned char *key; 67 size_t key_len; 68 const unsigned char *iv; 69 size_t iv_len; 70 const unsigned char *aad; 71 size_t aad_len; 72 const unsigned char *tag; 73 size_t tag_len; 74} ST_KAT_CIPHER; 75 76typedef struct st_kat_kdf_st { 77 const char *desc; 78 const char *algorithm; 79 const ST_KAT_PARAM *params; 80 const unsigned char *expected; 81 size_t expected_len; 82} ST_KAT_KDF; 83 84typedef struct st_kat_drbg_st { 85 const char *desc; 86 const char *algorithm; 87 const char *param_name; 88 char *param_value; 89 const unsigned char *entropyin; 90 size_t entropyinlen; 91 const unsigned char *nonce; 92 size_t noncelen; 93 const unsigned char *persstr; 94 size_t persstrlen; 95 const unsigned char *entropyinpr1; 96 size_t entropyinpr1len; 97 const unsigned char *entropyinpr2; 98 size_t entropyinpr2len; 99 const unsigned char *entropyaddin1; 100 size_t entropyaddin1len; 101 const unsigned char *entropyaddin2; 102 size_t entropyaddin2len; 103 const unsigned char *expected; 104 size_t expectedlen; 105} ST_KAT_DRBG; 106 107typedef struct st_kat_kas_st { 108 const char *desc; 109 const char *algorithm; 110 111 const ST_KAT_PARAM *key_group; 112 const ST_KAT_PARAM *key_host_data; 113 const ST_KAT_PARAM *key_peer_data; 114 115 const unsigned char *expected; 116 size_t expected_len; 117} ST_KAT_KAS; 118 119typedef struct st_kat_sign_st { 120 const char *desc; 121 const char *keytype; 122 const char *sigalgorithm; 123 int mode; 124 const ST_KAT_PARAM *key; 125 const unsigned char *msg; 126 size_t msg_len; 127 const unsigned char *entropy; 128 size_t entropy_len; 129 const unsigned char *nonce; 130 size_t nonce_len; 131 const unsigned char *persstr; 132 size_t persstr_len; 133 const unsigned char *sig_expected; /* Set to NULL if this value changes */ 134 size_t sig_expected_len; 135 const ST_KAT_PARAM *init; 136 const ST_KAT_PARAM *verify; 137} ST_KAT_SIGN; 138 139typedef struct st_kat_asym_cipher_st { 140 const char *desc; 141 const char *algorithm; 142 int encrypt; 143 const ST_KAT_PARAM *key; 144 const ST_KAT_PARAM *postinit; 145 const unsigned char *in; 146 size_t in_len; 147 const unsigned char *expected; 148 size_t expected_len; 149} ST_KAT_ASYM_CIPHER; 150 151typedef struct st_kat_keygen_st { 152 const char *desc; 153 const char *algorithm; 154 const ST_KAT_PARAM *keygen_params; 155 const ST_KAT_PARAM *expected_params; 156} ST_KAT_ASYM_KEYGEN; 157 158typedef struct st_kat_kem_st { 159 const char *desc; 160 const char *algorithm; 161 const ST_KAT_PARAM *key; 162 const unsigned char *cipher_text; 163 size_t cipher_text_len; 164 const unsigned char *entropy; 165 size_t entropy_len; 166 const unsigned char *secret; 167 size_t secret_len; 168 const unsigned char *reject_secret; 169} ST_KAT_KEM; 170 171/*- DIGEST SELF TEST DATA */ 172static const unsigned char sha1_pt[] = "abc"; 173static const unsigned char sha1_digest[] = { 174 0xA9, 0x99, 0x3E, 0x36, 0x47, 0x06, 0x81, 0x6A, 175 0xBA, 0x3E, 0x25, 0x71, 0x78, 0x50, 0xC2, 0x6C, 176 0x9C, 0xD0, 0xD8, 0x9D 177}; 178static const unsigned char sha512_pt[] = "abc"; 179static const unsigned char sha512_digest[] = { 180 0xDD, 0xAF, 0x35, 0xA1, 0x93, 0x61, 0x7A, 0xBA, 0xCC, 0x41, 0x73, 0x49, 181 0xAE, 0x20, 0x41, 0x31, 0x12, 0xE6, 0xFA, 0x4E, 0x89, 0xA9, 0x7E, 0xA2, 182 0x0A, 0x9E, 0xEE, 0xE6, 0x4B, 0x55, 0xD3, 0x9A, 0x21, 0x92, 0x99, 0x2A, 183 0x27, 0x4F, 0xC1, 0xA8, 0x36, 0xBA, 0x3C, 0x23, 0xA3, 0xFE, 0xEB, 0xBD, 184 0x45, 0x4D, 0x44, 0x23, 0x64, 0x3C, 0xE8, 0x0E, 0x2A, 0x9A, 0xC9, 0x4F, 185 0xA5, 0x4C, 0xA4, 0x9F 186}; 187static const unsigned char sha3_256_pt[] = { 0xe7, 0x37, 0x21, 0x05 }; 188static const unsigned char sha3_256_digest[] = { 189 0x3a, 0x42, 0xb6, 0x8a, 0xb0, 0x79, 0xf2, 0x8c, 0x4c, 0xa3, 0xc7, 0x52, 190 0x29, 0x6f, 0x27, 0x90, 0x06, 0xc4, 0xfe, 0x78, 0xb1, 0xeb, 0x79, 0xd9, 191 0x89, 0x77, 0x7f, 0x05, 0x1e, 0x40, 0x46, 0xae 192}; 193 194/* 195 * Note: 196 * SHA256 is tested by higher level algorithms so a 197 * CAST is not needed. 198 */ 199static const ST_KAT_DIGEST st_kat_digest_tests[] = 200{ 201 { 202 OSSL_SELF_TEST_DESC_MD_SHA1, 203 "SHA1", 204 ITM_STR(sha1_pt), 205 ITM(sha1_digest), 206 }, 207 { 208 OSSL_SELF_TEST_DESC_MD_SHA2, 209 "SHA512", 210 ITM_STR(sha512_pt), 211 ITM(sha512_digest), 212 }, 213 { 214 OSSL_SELF_TEST_DESC_MD_SHA3, 215 "SHA3-256", 216 ITM(sha3_256_pt), 217 ITM(sha3_256_digest), 218 }, 219}; 220 221/*- CIPHER TEST DATA */ 222 223/* AES-256 GCM test data */ 224static const unsigned char aes_256_gcm_key[] = { 225 0x92, 0xe1, 0x1d, 0xcd, 0xaa, 0x86, 0x6f, 0x5c, 226 0xe7, 0x90, 0xfd, 0x24, 0x50, 0x1f, 0x92, 0x50, 227 0x9a, 0xac, 0xf4, 0xcb, 0x8b, 0x13, 0x39, 0xd5, 228 0x0c, 0x9c, 0x12, 0x40, 0x93, 0x5d, 0xd0, 0x8b 229}; 230static const unsigned char aes_256_gcm_iv[] = { 231 0xac, 0x93, 0xa1, 0xa6, 0x14, 0x52, 0x99, 0xbd, 232 0xe9, 0x02, 0xf2, 0x1a 233}; 234static const unsigned char aes_256_gcm_pt[] = { 235 0x2d, 0x71, 0xbc, 0xfa, 0x91, 0x4e, 0x4a, 0xc0, 236 0x45, 0xb2, 0xaa, 0x60, 0x95, 0x5f, 0xad, 0x24 237}; 238static const unsigned char aes_256_gcm_aad[] = { 239 0x1e, 0x08, 0x89, 0x01, 0x6f, 0x67, 0x60, 0x1c, 240 0x8e, 0xbe, 0xa4, 0x94, 0x3b, 0xc2, 0x3a, 0xd6 241}; 242static const unsigned char aes_256_gcm_ct[] = { 243 0x89, 0x95, 0xae, 0x2e, 0x6d, 0xf3, 0xdb, 0xf9, 244 0x6f, 0xac, 0x7b, 0x71, 0x37, 0xba, 0xe6, 0x7f 245}; 246static const unsigned char aes_256_gcm_tag[] = { 247 0xec, 0xa5, 0xaa, 0x77, 0xd5, 0x1d, 0x4a, 0x0a, 248 0x14, 0xd9, 0xc5, 0x1e, 0x1d, 0xa4, 0x74, 0xab 249}; 250 251/* AES-ECB test data */ 252static const unsigned char aes_128_ecb_key[] = { 253 0x10, 0xa5, 0x88, 0x69, 0xd7, 0x4b, 0xe5, 0xa3, 254 0x74, 0xcf, 0x86, 0x7c, 0xfb, 0x47, 0x38, 0x59 255}; 256static const unsigned char aes_128_ecb_pt[] = { 257 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 258 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 259}; 260static const unsigned char aes_128_ecb_ct[] = { 261 0x6d, 0x25, 0x1e, 0x69, 0x44, 0xb0, 0x51, 0xe0, 262 0x4e, 0xaa, 0x6f, 0xb4, 0xdb, 0xf7, 0x84, 0x65 263}; 264 265#ifndef OPENSSL_NO_DES 266/* 267 * TDES-ECB test data from 268 * https://github.com/usnistgov/ACVP-Server/blob/master/gen-val/json-files/ACVP-TDES-ECB-1.0 269 * Decrypt 270 */ 271static const unsigned char tdes_key[] = { 272 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 273 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 274 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE 275}; 276static const unsigned char tdes_ct[] = { 277 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 278}; 279static const unsigned char tdes_pt[] = { 280 0x4B, 0xAB, 0x3B, 0xE1, 0x50, 0x2E, 0x3B, 0x36 281}; 282#endif 283 284static const ST_KAT_CIPHER st_kat_cipher_tests[] = { 285 { 286 { 287 OSSL_SELF_TEST_DESC_CIPHER_AES_GCM, 288 "AES-256-GCM", 289 ITM(aes_256_gcm_pt), 290 ITM(aes_256_gcm_ct) 291 }, 292 CIPHER_MODE_ENCRYPT | CIPHER_MODE_DECRYPT, 293 ITM(aes_256_gcm_key), 294 ITM(aes_256_gcm_iv), 295 ITM(aes_256_gcm_aad), 296 ITM(aes_256_gcm_tag) 297 }, 298 { 299 { 300 OSSL_SELF_TEST_DESC_CIPHER_AES_ECB, 301 "AES-128-ECB", 302 ITM(aes_128_ecb_pt), 303 ITM(aes_128_ecb_ct) 304 }, 305 CIPHER_MODE_DECRYPT, 306 ITM(aes_128_ecb_key) 307 }, 308#ifndef OPENSSL_NO_DES 309 { 310 { 311 OSSL_SELF_TEST_DESC_CIPHER_TDES, 312 "DES-EDE3-ECB", 313 ITM(tdes_pt), 314 ITM(tdes_ct) 315 }, 316 CIPHER_MODE_DECRYPT, 317 ITM(tdes_key) 318 } 319#endif 320}; 321 322static const char hkdf_digest[] = "SHA256"; 323/* 324 * Input parameters and expected result are from RFC 5869 test case 1, which is 325 * with a key-derivation key >= 112 bits required by NIST SP 800-131Ar2 326 * section 8. 327 */ 328static const unsigned char hkdf_secret[] = { 329 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 330 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 331 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b 332}; 333static const unsigned char hkdf_salt[] = { 334 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 335 0x08, 0x09, 0x0a, 0x0b, 0x0c 336}; 337static const unsigned char hkdf_info[] = { 338 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 339 0xf8, 0xf9 340}; 341static const unsigned char hkdf_expected[] = { 342 0x3c, 0xb2, 0x5f, 0x25, 0xfa, 0xac, 0xd5, 0x7a, 343 0x90, 0x43, 0x4f, 0x64, 0xd0, 0x36, 0x2f, 0x2a, 344 0x2d, 0x2d, 0x0a, 0x90, 0xcf, 0x1a, 0x5a, 0x4c, 345 0x5d, 0xb0, 0x2d, 0x56, 0xec, 0xc4, 0xc5, 0xbf, 346 0x34, 0x00, 0x72, 0x08, 0xd5, 0xb8, 0x87, 0x18, 347 0x58, 0x65 348}; 349static const ST_KAT_PARAM hkdf_params[] = { 350 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, hkdf_digest), 351 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, hkdf_secret), 352 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_SALT, hkdf_salt), 353 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_INFO, hkdf_info), 354 ST_KAT_PARAM_END() 355}; 356 357static const char sskdf_digest[] = "SHA256"; 358static const unsigned char sskdf_secret[] = { 359 0x6d, 0xbd, 0xc2, 0x3f, 0x04, 0x54, 0x88, 0xe4, 360 0x06, 0x27, 0x57, 0xb0, 0x6b, 0x9e, 0xba, 0xe1, 361 0x83, 0xfc, 0x5a, 0x59, 0x46, 0xd8, 0x0d, 0xb9, 362 0x3f, 0xec, 0x6f, 0x62, 0xec, 0x07, 0xe3, 0x72, 363 0x7f, 0x01, 0x26, 0xae, 0xd1, 0x2c, 0xe4, 0xb2, 364 0x62, 0xf4, 0x7d, 0x48, 0xd5, 0x42, 0x87, 0xf8, 365 0x1d, 0x47, 0x4c, 0x7c, 0x3b, 0x18, 0x50, 0xe9 366}; 367static const unsigned char sskdf_otherinfo[] = { 368 0xa1, 0xb2, 0xc3, 0xd4, 0xe5, 0x43, 0x41, 0x56, 369 0x53, 0x69, 0x64, 0x3c, 0x83, 0x2e, 0x98, 0x49, 370 0xdc, 0xdb, 0xa7, 0x1e, 0x9a, 0x31, 0x39, 0xe6, 371 0x06, 0xe0, 0x95, 0xde, 0x3c, 0x26, 0x4a, 0x66, 372 0xe9, 0x8a, 0x16, 0x58, 0x54, 0xcd, 0x07, 0x98, 373 0x9b, 0x1e, 0xe0, 0xec, 0x3f, 0x8d, 0xbe 374}; 375static const unsigned char sskdf_expected[] = { 376 0x27, 0xce, 0x57, 0xed, 0xb1, 0x7e, 0x1f, 0xf2, 377 0xe4, 0x79, 0x2e, 0x84, 0x8b, 0x04, 0xf1, 0xae 378}; 379static const ST_KAT_PARAM sskdf_params[] = { 380 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, sskdf_digest), 381 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, sskdf_secret), 382 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_INFO, sskdf_otherinfo), 383 ST_KAT_PARAM_END() 384}; 385 386static const char x942kdf_digest[] = "SHA256"; 387static const char x942kdf_cekalg[] = "AES-128-WRAP"; 388static const unsigned char x942kdf_secret[] = { 389 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 390 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 391 0x10, 0x11, 0x12, 0x13 392}; 393static const unsigned char x942kdf_expected[] = { 394 0x79, 0x66, 0xa0, 0x38, 0x22, 0x28, 0x1e, 0xa3, 395 0xeb, 0x08, 0xd9, 0xbc, 0x69, 0x5b, 0xd8, 0xff 396}; 397static const ST_KAT_PARAM x942kdf_params[] = { 398 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, x942kdf_digest), 399 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_CEK_ALG, x942kdf_cekalg), 400 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, x942kdf_secret), 401 ST_KAT_PARAM_END() 402}; 403 404static const char x963kdf_digest[] = "SHA256"; 405static const unsigned char x963kdf_otherinfo[] = { 406 0x75, 0xee, 0xf8, 0x1a, 0xa3, 0x04, 0x1e, 0x33, 407 0xb8, 0x09, 0x71, 0x20, 0x3d, 0x2c, 0x0c, 0x52 408}; 409static const unsigned char x963kdf_secret[] = { 410 0x22, 0x51, 0x8b, 0x10, 0xe7, 0x0f, 0x2a, 0x3f, 411 0x24, 0x38, 0x10, 0xae, 0x32, 0x54, 0x13, 0x9e, 412 0xfb, 0xee, 0x04, 0xaa, 0x57, 0xc7, 0xaf, 0x7d 413}; 414static const unsigned char x963kdf_expected[] = { 415 0xc4, 0x98, 0xaf, 0x77, 0x16, 0x1c, 0xc5, 0x9f, 416 0x29, 0x62, 0xb9, 0xa7, 0x13, 0xe2, 0xb2, 0x15, 417 0x15, 0x2d, 0x13, 0x97, 0x66, 0xce, 0x34, 0xa7, 418 0x76, 0xdf, 0x11, 0x86, 0x6a, 0x69, 0xbf, 0x2e 419}; 420static const ST_KAT_PARAM x963kdf_params[] = { 421 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, x963kdf_digest), 422 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, x963kdf_secret), 423 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_INFO, x963kdf_otherinfo), 424 ST_KAT_PARAM_END() 425}; 426 427static const char pbkdf2_digest[] = "SHA256"; 428/* 429 * Input parameters from RFC 6070, vector 5 (because it is the only one with 430 * a salt >= 16 bytes, which NIST SP 800-132 section 5.1 requires). The 431 * expected output is taken from 432 * https://github.com/brycx/Test-Vector-Generation/blob/master/PBKDF2/pbkdf2-hmac-sha2-test-vectors.md, 433 * which ran these test vectors with SHA-256. 434 * Note that the output only uses 2 iterations. 435 */ 436static const unsigned char pbkdf2_password[] = { 437 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x50, 0x41, 0x53, 0x53, 438 0x57, 0x4f, 0x52, 0x44, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64 439}; 440static const unsigned char pbkdf2_salt[] = { 441 0x73, 0x61, 0x6c, 0x74, 0x53, 0x41, 0x4c, 0x54, 0x73, 0x61, 0x6c, 0x74, 442 0x53, 0x41, 0x4c, 0x54, 0x73, 0x61, 0x6c, 0x74, 0x53, 0x41, 0x4c, 0x54, 443 0x73, 0x61, 0x6c, 0x74, 0x53, 0x41, 0x4c, 0x54, 0x73, 0x61, 0x6c, 0x74 444}; 445static const unsigned char pbkdf2_expected[] = { 446 0x13, 0xdc, 0x8a, 0x7c, 0x13, 0xd3, 0x72, 0xc9, 447 0x03, 0x82, 0x82, 0x2d, 0x2d, 0xc4, 0x92, 0xf2, 448 0xed, 0x52, 0x46, 0x7f, 0xb7, 0x82, 0x8e, 0xa8, 449 0x64 450}; 451/* 452 * FIPS 140-3 IG 10.3.A.8 allows the iteration count to be smaller 453 * so we use the minimum of 2 here. 454 */ 455static int pbkdf2_iterations = 2; 456static int pbkdf2_pkcs5 = 1; /* Disable compliance checks so a smaller iteration count can be used */ 457static const ST_KAT_PARAM pbkdf2_params[] = { 458 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, pbkdf2_digest), 459 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_PASSWORD, pbkdf2_password), 460 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_SALT, pbkdf2_salt), 461 ST_KAT_PARAM_INT(OSSL_KDF_PARAM_ITER, pbkdf2_iterations), 462 ST_KAT_PARAM_INT(OSSL_KDF_PARAM_PKCS5, pbkdf2_pkcs5), 463 ST_KAT_PARAM_END() 464}; 465 466static const char tls12prf_digest[] = "SHA256"; 467static const unsigned char tls12prf_secret[] = { 468 0x20, 0x2c, 0x88, 0xc0, 0x0f, 0x84, 0xa1, 0x7a, 469 0x20, 0x02, 0x70, 0x79, 0x60, 0x47, 0x87, 0x46, 470 0x11, 0x76, 0x45, 0x55, 0x39, 0xe7, 0x05, 0xbe, 471 0x73, 0x08, 0x90, 0x60, 0x2c, 0x28, 0x9a, 0x50, 472 0x01, 0xe3, 0x4e, 0xeb, 0x3a, 0x04, 0x3e, 0x5d, 473 0x52, 0xa6, 0x5e, 0x66, 0x12, 0x51, 0x88, 0xbf, 474}; 475static const unsigned char tls12prf_seed[] = { 476 'k', 'e', 'y', ' ', 'e', 'x', 'p', 'a', 'n', 's', 'i', 'o', 'n', 477 0xae, 0x6c, 0x80, 0x6f, 0x8a, 0xd4, 0xd8, 0x07, 478 0x84, 0x54, 0x9d, 0xff, 0x28, 0xa4, 0xb5, 0x8f, 479 0xd8, 0x37, 0x68, 0x1a, 0x51, 0xd9, 0x28, 0xc3, 480 0xe3, 0x0e, 0xe5, 0xff, 0x14, 0xf3, 0x98, 0x68, 481 0x62, 0xe1, 0xfd, 0x91, 0xf2, 0x3f, 0x55, 0x8a, 482 0x60, 0x5f, 0x28, 0x47, 0x8c, 0x58, 0xcf, 0x72, 483 0x63, 0x7b, 0x89, 0x78, 0x4d, 0x95, 0x9d, 0xf7, 484 0xe9, 0x46, 0xd3, 0xf0, 0x7b, 0xd1, 0xb6, 0x16, 485 }; 486static const unsigned char tls12prf_expected[] = { 487 0xd0, 0x61, 0x39, 0x88, 0x9f, 0xff, 0xac, 0x1e, 488 0x3a, 0x71, 0x86, 0x5f, 0x50, 0x4a, 0xa5, 0xd0, 489 0xd2, 0xa2, 0xe8, 0x95, 0x06, 0xc6, 0xf2, 0x27, 490 0x9b, 0x67, 0x0c, 0x3e, 0x1b, 0x74, 0xf5, 0x31, 491 0x01, 0x6a, 0x25, 0x30, 0xc5, 0x1a, 0x3a, 0x0f, 492 0x7e, 0x1d, 0x65, 0x90, 0xd0, 0xf0, 0x56, 0x6b, 493 0x2f, 0x38, 0x7f, 0x8d, 0x11, 0xfd, 0x4f, 0x73, 494 0x1c, 0xdd, 0x57, 0x2d, 0x2e, 0xae, 0x92, 0x7f, 495 0x6f, 0x2f, 0x81, 0x41, 0x0b, 0x25, 0xe6, 0x96, 496 0x0b, 0xe6, 0x89, 0x85, 0xad, 0xd6, 0xc3, 0x84, 497 0x45, 0xad, 0x9f, 0x8c, 0x64, 0xbf, 0x80, 0x68, 498 0xbf, 0x9a, 0x66, 0x79, 0x48, 0x5d, 0x96, 0x6f, 499 0x1a, 0xd6, 0xf6, 0x8b, 0x43, 0x49, 0x5b, 0x10, 500 0xa6, 0x83, 0x75, 0x5e, 0xa2, 0xb8, 0x58, 0xd7, 501 0x0c, 0xca, 0xc7, 0xec, 0x8b, 0x05, 0x3c, 0x6b, 502 0xd4, 0x1c, 0xa2, 0x99, 0xd4, 0xe5, 0x19, 0x28, 503}; 504static const ST_KAT_PARAM tls12prf_params[] = { 505 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, tls12prf_digest), 506 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_SECRET, tls12prf_secret), 507 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_SEED, tls12prf_seed), 508 ST_KAT_PARAM_END() 509}; 510 511static const char kbkdf_digest[] = "SHA256"; 512static const char kbkdf_mac[] = "HMAC"; 513static const unsigned char kbkdf_salt[] = { 'p', 'r', 'f' }; 514static const unsigned char kbkdf_prfinput[] = { 't', 'e', 's', 't' }; 515static unsigned char kbkdf_key[] = { 516 0x37, 0x05, 0xD9, 0x60, 0x80, 0xC1, 0x77, 0x28, 517 0xA0, 0xE8, 0x00, 0xEA, 0xB6, 0xE0, 0xD2, 0x3C, 518}; 519static unsigned char kbkdf_expected[] = { 520 0x9D, 0x18, 0x86, 0x16, 0xF6, 0x38, 0x52, 0xFE, 521 0x86, 0x91, 0x5B, 0xB8, 0x40, 0xB4, 0xA8, 0x86, 522 0xFF, 0x3E, 0x6B, 0xB0, 0xF8, 0x19, 0xB4, 0x9B, 523 0x89, 0x33, 0x93, 0xD3, 0x93, 0x85, 0x42, 0x95, 524}; 525static const ST_KAT_PARAM kbkdf_params[] = { 526 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, kbkdf_digest), 527 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_MAC, kbkdf_mac), 528 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, kbkdf_key), 529 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_SALT, kbkdf_salt), 530 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_INFO, kbkdf_prfinput), 531 ST_KAT_PARAM_END() 532}; 533 534static const char kbkdf_kmac_mac[] = "KMAC128"; 535static unsigned char kbkdf_kmac_label[] = { 536 0xB5, 0xB5, 0xF3, 0x71, 0x9F, 0xBE, 0x5B, 0x3D, 537 0x7B, 0x8D, 0x05, 0xA1, 0xD3, 0x25, 0x19, 0x50, 538}; 539static unsigned char kbkdf_kmac_context[] = { 540 0x36, 0x60, 0x0E, 0xF3, 0xC3, 0x70, 0xB5, 0xEF, 541 0x58, 0xBE, 0xF1, 0xBA, 0x1C, 0xF2, 0x74, 0xCB, 542}; 543static unsigned char kbkdf_kmac_key[] = { 544 0xB2, 0x51, 0x4C, 0xC1, 0xD5, 0xCD, 0x7B, 0x6B, 545 0xA3, 0x3C, 0x90, 0x05, 0xBD, 0xAC, 0x32, 0x2A, 546}; 547static unsigned char kbkdf_kmac_expected[] = { 548 0xB1, 0x58, 0xEE, 0xB1, 0x34, 0xA4, 0xDD, 0x9D, 549 0xAC, 0x52, 0xBD, 0x9E, 0x30, 0xE8, 0x0D, 0x76, 550 0x42, 0x57, 0x01, 0x89, 0x5F, 0x82, 0x74, 0xB9, 551 0xEB, 0x3E, 0x84, 0xD8, 0xA5, 0xDE, 0x6E, 0x54, 552}; 553static const ST_KAT_PARAM kbkdf_kmac_params[] = { 554 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_MAC, kbkdf_kmac_mac), 555 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, kbkdf_kmac_key), 556 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_SALT, kbkdf_kmac_label), 557 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_INFO, kbkdf_kmac_context), 558 ST_KAT_PARAM_END() 559}; 560 561static const char tls13_kdf_digest[] = "SHA256"; 562static int tls13_kdf_extract_mode = EVP_KDF_HKDF_MODE_EXTRACT_ONLY; 563static int tls13_kdf_expand_mode = EVP_KDF_HKDF_MODE_EXPAND_ONLY; 564static const unsigned char tls13_kdf_prefix[] = { 565 0x74, 0x6C, 0x73, 0x31, 0x33, 0x20 /* "tls13 " */ 566}; 567static const unsigned char tls13_kdf_client_early_secret_label[] = { 568 0x63, 0x20, 0x65, 0x20, 0x74, 0x72, 0x61, 0x66, 569 0x66, 0x69, 0x63 /* "c e traffic"*/ 570}; 571static const unsigned char tls13_kdf_psk[] = { 572 0xF8, 0xAF, 0x6A, 0xEA, 0x2D, 0x39, 0x7B, 0xAF, 573 0x29, 0x48, 0xA2, 0x5B, 0x28, 0x34, 0x20, 0x06, 574 0x92, 0xCF, 0xF1, 0x7E, 0xEE, 0x91, 0x65, 0xE4, 575 0xE2, 0x7B, 0xAB, 0xEE, 0x9E, 0xDE, 0xFD, 0x05 576}; 577static const unsigned char tls13_kdf_client_hello_hash[] = { 578 0x7c, 0x92, 0xf6, 0x8b, 0xd5, 0xbf, 0x36, 0x38, 579 0xea, 0x33, 0x8a, 0x64, 0x94, 0x72, 0x2e, 0x1b, 580 0x44, 0x12, 0x7e, 0x1b, 0x7e, 0x8a, 0xad, 0x53, 581 0x5f, 0x23, 0x22, 0xa6, 0x44, 0xff, 0x22, 0xb3 582}; 583 584static const unsigned char tls13_kdf_early_secret[] = { 585 0x15, 0x3B, 0x63, 0x94, 0xA9, 0xC0, 0x3C, 0xF3, 586 0xF5, 0xAC, 0xCC, 0x6E, 0x45, 0x5A, 0x76, 0x93, 587 0x28, 0x11, 0x38, 0xA1, 0xBC, 0xFA, 0x38, 0x03, 588 0xC2, 0x67, 0x35, 0xDD, 0x11, 0x94, 0xD2, 0x16 589}; 590static const unsigned char tls13_kdf_client_early_traffic_secret[] = { 591 0xC8, 0x05, 0x83, 0xA9, 0x0E, 0x99, 0x5C, 0x48, 592 0x96, 0x00, 0x49, 0x2A, 0x5D, 0xA6, 0x42, 0xE6, 593 0xB1, 0xF6, 0x79, 0xBA, 0x67, 0x48, 0x28, 0x79, 594 0x2D, 0xF0, 0x87, 0xB9, 0x39, 0x63, 0x61, 0x71 595}; 596static const ST_KAT_PARAM tls13_kdf_early_secret_params[] = { 597 ST_KAT_PARAM_INT(OSSL_KDF_PARAM_MODE, tls13_kdf_extract_mode), 598 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, tls13_kdf_digest), 599 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, tls13_kdf_psk), 600 ST_KAT_PARAM_END() 601}; 602static const ST_KAT_PARAM tls13_kdf_client_early_secret_params[] = { 603 ST_KAT_PARAM_INT(OSSL_KDF_PARAM_MODE, tls13_kdf_expand_mode), 604 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, tls13_kdf_digest), 605 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, tls13_kdf_early_secret), 606 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_DATA, tls13_kdf_client_hello_hash), 607 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_PREFIX, tls13_kdf_prefix), 608 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_LABEL, 609 tls13_kdf_client_early_secret_label), 610 ST_KAT_PARAM_END() 611}; 612 613/* 614 * NOTES: 615 * According to FIPS 140-3 10.3.A Note18: SSH KDF is not required, since it is 616 * sufficient to self-test the underlying SHA hash functions. 617 */ 618static const ST_KAT_KDF st_kat_kdf_tests[] = 619{ 620 { 621 OSSL_SELF_TEST_DESC_KDF_TLS13_EXTRACT, 622 OSSL_KDF_NAME_TLS1_3_KDF, 623 tls13_kdf_early_secret_params, 624 ITM(tls13_kdf_early_secret) 625 }, 626 { 627 OSSL_SELF_TEST_DESC_KDF_TLS13_EXPAND, 628 OSSL_KDF_NAME_TLS1_3_KDF, 629 tls13_kdf_client_early_secret_params, 630 ITM(tls13_kdf_client_early_traffic_secret) 631 }, 632 { 633 OSSL_SELF_TEST_DESC_KDF_TLS12_PRF, 634 OSSL_KDF_NAME_TLS1_PRF, 635 tls12prf_params, 636 ITM(tls12prf_expected) 637 }, 638 { 639 OSSL_SELF_TEST_DESC_KDF_PBKDF2, 640 OSSL_KDF_NAME_PBKDF2, 641 pbkdf2_params, 642 ITM(pbkdf2_expected) 643 }, 644 { 645 OSSL_SELF_TEST_DESC_KDF_KBKDF, 646 OSSL_KDF_NAME_KBKDF, 647 kbkdf_params, 648 ITM(kbkdf_expected) 649 }, 650 { 651 OSSL_SELF_TEST_DESC_KDF_KBKDF_KMAC, 652 OSSL_KDF_NAME_KBKDF, 653 kbkdf_kmac_params, 654 ITM(kbkdf_kmac_expected) 655 }, 656 { 657 OSSL_SELF_TEST_DESC_KDF_HKDF, 658 OSSL_KDF_NAME_HKDF, 659 hkdf_params, 660 ITM(hkdf_expected) 661 }, 662 { 663 OSSL_SELF_TEST_DESC_KDF_SSKDF, 664 OSSL_KDF_NAME_SSKDF, 665 sskdf_params, 666 ITM(sskdf_expected) 667 }, 668 { 669 OSSL_SELF_TEST_DESC_KDF_X963KDF, 670 OSSL_KDF_NAME_X963KDF, 671 x963kdf_params, 672 ITM(x963kdf_expected) 673 }, 674 { 675 OSSL_SELF_TEST_DESC_KDF_X942KDF, 676 OSSL_KDF_NAME_X942KDF_ASN1, 677 x942kdf_params, 678 ITM(x942kdf_expected) 679 }, 680}; 681 682/*- 683* DRBG test vectors are a small subset of 684* https://csrc.nist.rip/groups/STM/cavp/documents/drbg/drbgtestvectors.zip 685* Using the folder drbgvectors_pr_true 686* Generated for CAVS 14.3. 687*/ 688 689/* 690 * Hash_DRBG.rsp 691 * 692 * [SHA-256] 693 * [PredictionResistance = True] 694 * [EntropyInputLen = 256] 695 * [NonceLen = 128] 696 * [PersonalizationStringLen = 256] 697 * [AdditionalInputLen = 256] 698 * [ReturnedBitsLen = 1024] 699 * 700 * COUNT = 14 701 */ 702static const unsigned char drbg_hash_sha256_pr_entropyin[] = { 703 0x06, 0x6d, 0xc8, 0xce, 0x75, 0xb2, 0x89, 0x66, 0xa6, 0x85, 0x16, 0x3f, 704 0xe2, 0xa4, 0xd4, 0x27, 0xfb, 0xdb, 0x61, 0x66, 0x50, 0x61, 0x6b, 0xa2, 705 0x82, 0xfc, 0x33, 0x2b, 0x4e, 0x6f, 0x12, 0x20 706}; 707static const unsigned char drbg_hash_sha256_pr_nonce[] = { 708 0x55, 0x9f, 0x7c, 0x64, 0x89, 0x70, 0x83, 0xec, 0x2d, 0x73, 0x70, 0xd9, 709 0xf0, 0xe5, 0x07, 0x1f 710}; 711static const unsigned char drbg_hash_sha256_pr_persstr[] = { 712 0x88, 0x6f, 0x54, 0x9a, 0xad, 0x1a, 0xc6, 0x3d, 0x18, 0xcb, 0xcc, 0x66, 713 0x85, 0xda, 0xa2, 0xc2, 0xf7, 0x9e, 0xb0, 0x89, 0x4c, 0xb4, 0xae, 0xf1, 714 0xac, 0x54, 0x4f, 0xce, 0x57, 0xf1, 0x5e, 0x11 715}; 716static const unsigned char drbg_hash_sha256_pr_entropyinpr0[] = { 717 0xff, 0x80, 0xb7, 0xd2, 0x6a, 0x05, 0xbc, 0x8a, 0x7a, 0xbe, 0x53, 0x28, 718 0x6b, 0x0e, 0xeb, 0x73, 0x3b, 0x71, 0x5a, 0x20, 0x5b, 0xfa, 0x4f, 0xf6, 719 0x37, 0x03, 0xde, 0xad, 0xb6, 0xea, 0x0e, 0xf4 720}; 721static const unsigned char drbg_hash_sha256_pr_entropyinpr1[] = { 722 0xc7, 0x38, 0x32, 0x53, 0x46, 0x81, 0xed, 0xe3, 0x7e, 0x03, 0x84, 0x6d, 723 0x3c, 0x84, 0x17, 0x67, 0x29, 0x7d, 0x24, 0x6c, 0x68, 0x92, 0x41, 0xd2, 724 0xe7, 0x75, 0xbe, 0x7e, 0xc9, 0x96, 0x29, 0x3d 725}; 726static const unsigned char drbg_hash_sha256_pr_addin0[] = { 727 0xb7, 0x21, 0x5f, 0x14, 0xac, 0x7b, 0xaf, 0xd0, 0xa9, 0x17, 0x72, 0xba, 728 0x22, 0xf7, 0x19, 0xaf, 0xbd, 0x20, 0xb3, 0x11, 0x63, 0x6c, 0x2b, 0x1e, 729 0x83, 0xe4, 0xa8, 0x23, 0x35, 0x3f, 0xc6, 0xea 730}; 731static const unsigned char drbg_hash_sha256_pr_addin1[] = { 732 0xce, 0xd3, 0x1f, 0x7e, 0x0d, 0xae, 0x5b, 0xb5, 0xc0, 0x43, 0xe2, 0x46, 733 0xb2, 0x94, 0x73, 0xe2, 0xfd, 0x39, 0x51, 0x2e, 0xad, 0x45, 0x69, 0xee, 734 0xe3, 0xe3, 0x80, 0x33, 0x14, 0xab, 0xa7, 0xa3 735}; 736static const unsigned char drbg_hash_sha256_pr_expected[] = { 737 0x60, 0xc2, 0x34, 0xcf, 0xaf, 0xb4, 0x68, 0x03, 0x3b, 0xf1, 0x95, 0xe5, 738 0x78, 0xce, 0x26, 0x6e, 0x14, 0x65, 0x32, 0x6a, 0x96, 0xa9, 0xe0, 0x3f, 739 0x8b, 0x89, 0x36, 0x70, 0xef, 0x62, 0x75, 0x4d, 0x5e, 0x80, 0xd5, 0x53, 740 0xa1, 0xf8, 0x49, 0x50, 0x20, 0x8b, 0x93, 0x43, 0x07, 0x9f, 0x2e, 0xf8, 741 0x56, 0xe9, 0xc5, 0x70, 0x61, 0x85, 0x97, 0xb5, 0xdc, 0x82, 0xa2, 0xda, 742 0xea, 0xa3, 0xfd, 0x9b, 0x2f, 0xd2, 0xa0, 0xd7, 0x1b, 0xc6, 0x29, 0x35, 743 0xcc, 0xb8, 0x3d, 0xa0, 0x67, 0x98, 0x05, 0xa0, 0xe3, 0x1e, 0xfe, 0xe4, 744 0xf0, 0xe5, 0x13, 0xb0, 0x83, 0x17, 0xfa, 0xca, 0x93, 0x5e, 0x38, 0x29, 745 0x48, 0xd2, 0x72, 0xdb, 0x76, 0x3e, 0x6d, 0xf3, 0x25, 0x10, 0xff, 0x1b, 746 0x99, 0xff, 0xf8, 0xc6, 0x0e, 0xb0, 0xdd, 0x29, 0x2e, 0xbc, 0xbb, 0xc8, 747 0x0a, 0x01, 0x6e, 0xd3, 0xb0, 0x0e, 0x4e, 0xab 748}; 749 750/* 751 * CTR_DRBG.rsp 752 * 753 * [AES-128 use df] 754 * [PredictionResistance = True] 755 * [EntropyInputLen = 128] 756 * [NonceLen = 64] 757 * [PersonalizationStringLen = 128] 758 * [AdditionalInputLen = 128] 759 * [ReturnedBitsLen = 512] 760 * 761 * COUNT = 0 762 */ 763static const unsigned char drbg_ctr_aes128_pr_df_entropyin[] = { 764 0x92, 0x89, 0x8f, 0x31, 0xfa, 0x1c, 0xff, 0x6d, 0x18, 0x2f, 0x26, 0x06, 765 0x43, 0xdf, 0xf8, 0x18 766}; 767static const unsigned char drbg_ctr_aes128_pr_df_nonce[] = { 768 0xc2, 0xa4, 0xd9, 0x72, 0xc3, 0xb9, 0xb6, 0x97 769}; 770static const unsigned char drbg_ctr_aes128_pr_df_persstr[] = { 771 0xea, 0x65, 0xee, 0x60, 0x26, 0x4e, 0x7e, 0xb6, 0x0e, 0x82, 0x68, 0xc4, 772 0x37, 0x3c, 0x5c, 0x0b 773}; 774static const unsigned char drbg_ctr_aes128_pr_df_entropyinpr0[] = { 775 0x20, 0x72, 0x8a, 0x06, 0xf8, 0x6f, 0x8d, 0xd4, 0x41, 0xe2, 0x72, 0xb7, 776 0xc4, 0x2c, 0xe8, 0x10 777}; 778static const unsigned char drbg_ctr_aes128_pr_df_entropyinpr1[] = { 779 0x3d, 0xb0, 0xf0, 0x94, 0xf3, 0x05, 0x50, 0x33, 0x17, 0x86, 0x3e, 0x22, 780 0x08, 0xf7, 0xa5, 0x01 781}; 782static const unsigned char drbg_ctr_aes128_pr_df_addin0[] = { 783 0x1a, 0x40, 0xfa, 0xe3, 0xcc, 0x6c, 0x7c, 0xa0, 0xf8, 0xda, 0xba, 0x59, 784 0x23, 0x6d, 0xad, 0x1d 785}; 786static const unsigned char drbg_ctr_aes128_pr_df_addin1[] = { 787 0x9f, 0x72, 0x76, 0x6c, 0xc7, 0x46, 0xe5, 0xed, 0x2e, 0x53, 0x20, 0x12, 788 0xbc, 0x59, 0x31, 0x8c 789}; 790static const unsigned char drbg_ctr_aes128_pr_df_expected[] = { 791 0x5a, 0x35, 0x39, 0x87, 0x0f, 0x4d, 0x22, 0xa4, 0x09, 0x24, 0xee, 0x71, 792 0xc9, 0x6f, 0xac, 0x72, 0x0a, 0xd6, 0xf0, 0x88, 0x82, 0xd0, 0x83, 0x28, 793 0x73, 0xec, 0x3f, 0x93, 0xd8, 0xab, 0x45, 0x23, 0xf0, 0x7e, 0xac, 0x45, 794 0x14, 0x5e, 0x93, 0x9f, 0xb1, 0xd6, 0x76, 0x43, 0x3d, 0xb6, 0xe8, 0x08, 795 0x88, 0xf6, 0xda, 0x89, 0x08, 0x77, 0x42, 0xfe, 0x1a, 0xf4, 0x3f, 0xc4, 796 0x23, 0xc5, 0x1f, 0x68 797}; 798 799/* 800 * HMAC_DRBG.rsp 801 * 802 * [SHA-256] 803 * [PredictionResistance = True] 804 * [EntropyInputLen = 256] 805 * [NonceLen = 128] 806 * [PersonalizationStringLen = 256] 807 * [AdditionalInputLen = 256] 808 * [ReturnedBitsLen = 1024] 809 * 810 * COUNT = 0 811 */ 812static const unsigned char drbg_hmac_sha2_pr_entropyin[] = { 813 0xca, 0x85, 0x19, 0x11, 0x34, 0x93, 0x84, 0xbf, 814 0xfe, 0x89, 0xde, 0x1c, 0xbd, 0xc4, 0x6e, 0x68, 815 0x31, 0xe4, 0x4d, 0x34, 0xa4, 0xfb, 0x93, 0x5e, 816 0xe2, 0x85, 0xdd, 0x14, 0xb7, 0x1a, 0x74, 0x88 817}; 818static const unsigned char drbg_hmac_sha2_pr_nonce[] = { 819 0x65, 0x9b, 0xa9, 0x6c, 0x60, 0x1d, 0xc6, 0x9f, 820 0xc9, 0x02, 0x94, 0x08, 0x05, 0xec, 0x0c, 0xa8 821}; 822static const unsigned char drbg_hmac_sha2_pr_persstr[] = { 823 0xe7, 0x2d, 0xd8, 0x59, 0x0d, 0x4e, 0xd5, 0x29, 824 0x55, 0x15, 0xc3, 0x5e, 0xd6, 0x19, 0x9e, 0x9d, 825 0x21, 0x1b, 0x8f, 0x06, 0x9b, 0x30, 0x58, 0xca, 826 0xa6, 0x67, 0x0b, 0x96, 0xef, 0x12, 0x08, 0xd0 827}; 828static const unsigned char drbg_hmac_sha2_pr_entropyinpr0[] = { 829 0x5c, 0xac, 0xc6, 0x81, 0x65, 0xa2, 0xe2, 0xee, 830 0x20, 0x81, 0x2f, 0x35, 0xec, 0x73, 0xa7, 0x9d, 831 0xbf, 0x30, 0xfd, 0x47, 0x54, 0x76, 0xac, 0x0c, 832 0x44, 0xfc, 0x61, 0x74, 0xcd, 0xac, 0x2b, 0x55 833}; 834static const unsigned char drbg_hmac_sha2_pr_entropyinpr1[] = { 835 0x8d, 0xf0, 0x13, 0xb4, 0xd1, 0x03, 0x52, 0x30, 836 0x73, 0x91, 0x7d, 0xdf, 0x6a, 0x86, 0x97, 0x93, 837 0x05, 0x9e, 0x99, 0x43, 0xfc, 0x86, 0x54, 0x54, 838 0x9e, 0x7a, 0xb2, 0x2f, 0x7c, 0x29, 0xf1, 0x22 839}; 840static const unsigned char drbg_hmac_sha2_pr_addin0[] = { 841 0x79, 0x3a, 0x7e, 0xf8, 0xf6, 0xf0, 0x48, 0x2b, 842 0xea, 0xc5, 0x42, 0xbb, 0x78, 0x5c, 0x10, 0xf8, 843 0xb7, 0xb4, 0x06, 0xa4, 0xde, 0x92, 0x66, 0x7a, 844 0xb1, 0x68, 0xec, 0xc2, 0xcf, 0x75, 0x73, 0xc6 845}; 846static const unsigned char drbg_hmac_sha2_pr_addin1[] = { 847 0x22, 0x38, 0xcd, 0xb4, 0xe2, 0x3d, 0x62, 0x9f, 848 0xe0, 0xc2, 0xa8, 0x3d, 0xd8, 0xd5, 0x14, 0x4c, 849 0xe1, 0xa6, 0x22, 0x9e, 0xf4, 0x1d, 0xab, 0xe2, 850 0xa9, 0x9f, 0xf7, 0x22, 0xe5, 0x10, 0xb5, 0x30 851}; 852static const unsigned char drbg_hmac_sha2_pr_expected[] = { 853 0xb1, 0xd1, 0x7c, 0x00, 0x2a, 0x7f, 0xeb, 0xd2, 854 0x84, 0x12, 0xd8, 0xe5, 0x8a, 0x7f, 0x32, 0x31, 855 0x8e, 0x4e, 0xe3, 0x60, 0x5a, 0x99, 0xb0, 0x5b, 856 0x05, 0xd5, 0x93, 0x56, 0xd5, 0xf0, 0xc6, 0xb4, 857 0x96, 0x0a, 0x4b, 0x8f, 0x96, 0x3b, 0x7e, 0xfa, 858 0x55, 0xbb, 0x68, 0x72, 0xfb, 0xea, 0xc7, 0xb9, 859 0x9b, 0x78, 0xde, 0xa8, 0xf3, 0x53, 0x19, 0x73, 860 0x63, 0x7c, 0x94, 0x6a, 0x9c, 0xab, 0x33, 0x49, 861 0x74, 0x4b, 0x24, 0xa0, 0x85, 0x1d, 0xd4, 0x7f, 862 0x2b, 0x3b, 0x46, 0x0c, 0x2c, 0x61, 0x84, 0x6e, 863 0x91, 0x18, 0x1d, 0x62, 0xd4, 0x2c, 0x60, 0xa4, 864 0xef, 0xda, 0x5e, 0xd5, 0x79, 0x02, 0xbf, 0xd7, 865 0x02, 0xb3, 0x49, 0xc5, 0x49, 0x52, 0xc7, 0xf6, 866 0x44, 0x76, 0x9d, 0x8e, 0xf4, 0x01, 0x5e, 0xcc, 867 0x5f, 0x5b, 0xbd, 0x4a, 0xf0, 0x61, 0x34, 0x68, 868 0x8e, 0x30, 0x05, 0x0e, 0x04, 0x97, 0xfb, 0x0a 869}; 870 871static const ST_KAT_DRBG st_kat_drbg_tests[] = 872{ 873 { 874 OSSL_SELF_TEST_DESC_DRBG_HASH, 875 "HASH-DRBG", "digest", "SHA256", 876 ITM(drbg_hash_sha256_pr_entropyin), 877 ITM(drbg_hash_sha256_pr_nonce), 878 ITM(drbg_hash_sha256_pr_persstr), 879 ITM(drbg_hash_sha256_pr_entropyinpr0), 880 ITM(drbg_hash_sha256_pr_entropyinpr1), 881 ITM(drbg_hash_sha256_pr_addin0), 882 ITM(drbg_hash_sha256_pr_addin1), 883 ITM(drbg_hash_sha256_pr_expected) 884 }, 885 { 886 OSSL_SELF_TEST_DESC_DRBG_CTR, 887 "CTR-DRBG", "cipher", "AES-128-CTR", 888 ITM(drbg_ctr_aes128_pr_df_entropyin), 889 ITM(drbg_ctr_aes128_pr_df_nonce), 890 ITM(drbg_ctr_aes128_pr_df_persstr), 891 ITM(drbg_ctr_aes128_pr_df_entropyinpr0), 892 ITM(drbg_ctr_aes128_pr_df_entropyinpr1), 893 ITM(drbg_ctr_aes128_pr_df_addin0), 894 ITM(drbg_ctr_aes128_pr_df_addin1), 895 ITM(drbg_ctr_aes128_pr_df_expected) 896 }, 897 { 898 OSSL_SELF_TEST_DESC_DRBG_HMAC, 899 "HMAC-DRBG", "digest", "SHA256", 900 ITM(drbg_hmac_sha2_pr_entropyin), 901 ITM(drbg_hmac_sha2_pr_nonce), 902 ITM(drbg_hmac_sha2_pr_persstr), 903 ITM(drbg_hmac_sha2_pr_entropyinpr0), 904 ITM(drbg_hmac_sha2_pr_entropyinpr1), 905 ITM(drbg_hmac_sha2_pr_addin0), 906 ITM(drbg_hmac_sha2_pr_addin1), 907 ITM(drbg_hmac_sha2_pr_expected) 908 } 909}; 910 911/* KEY EXCHANGE TEST DATA */ 912 913#ifndef OPENSSL_NO_DH 914/* DH KAT */ 915static const unsigned char dh_priv[] = { 916 0x14, 0x33, 0xe0, 0xb5, 0xa9, 0x17, 0xb6, 0x0a, 917 0x30, 0x23, 0xf2, 0xf8, 0xaa, 0x2c, 0x2d, 0x70, 918 0xd2, 0x96, 0x8a, 0xba, 0x9a, 0xea, 0xc8, 0x15, 919 0x40, 0xb8, 0xfc, 0xe6 920}; 921static const unsigned char dh_pub[] = { 922 0x00, 0x8f, 0x81, 0x67, 0x68, 0xce, 0x97, 0x99, 923 0x7e, 0x11, 0x5c, 0xad, 0x5b, 0xe1, 0x0c, 0xd4, 924 0x15, 0x44, 0xdf, 0xc2, 0x47, 0xe7, 0x06, 0x27, 925 0x5e, 0xf3, 0x9d, 0x5c, 0x4b, 0x2e, 0x35, 0x05, 926 0xfd, 0x3c, 0x8f, 0x35, 0x85, 0x1b, 0x82, 0xdd, 927 0x49, 0xc9, 0xa8, 0x7e, 0x3a, 0x5f, 0x33, 0xdc, 928 0x8f, 0x5e, 0x32, 0x76, 0xe1, 0x52, 0x1b, 0x88, 929 0x85, 0xda, 0xa9, 0x1d, 0x5f, 0x1c, 0x05, 0x3a, 930 0xd4, 0x8d, 0xbb, 0xe7, 0x46, 0x46, 0x1e, 0x29, 931 0x4b, 0x5a, 0x02, 0x88, 0x46, 0x94, 0xd0, 0x68, 932 0x7d, 0xb2, 0x9f, 0x3a, 0x3d, 0x82, 0x05, 0xe5, 933 0xa7, 0xbe, 0x6c, 0x7e, 0x24, 0x35, 0x25, 0x14, 934 0xf3, 0x45, 0x08, 0x90, 0xfc, 0x55, 0x2e, 0xa8, 935 0xb8, 0xb1, 0x89, 0x15, 0x94, 0x51, 0x44, 0xa9, 936 0x9f, 0x68, 0xcb, 0x90, 0xbc, 0xd3, 0xae, 0x02, 937 0x37, 0x26, 0xe4, 0xe9, 0x1a, 0x90, 0x95, 0x7e, 938 0x1d, 0xac, 0x0c, 0x91, 0x97, 0x83, 0x24, 0x83, 939 0xb9, 0xa1, 0x40, 0x72, 0xac, 0xf0, 0x55, 0x32, 940 0x18, 0xab, 0xb8, 0x90, 0xda, 0x13, 0x4a, 0xc8, 941 0x4b, 0x7c, 0x18, 0xbc, 0x33, 0xbf, 0x99, 0x85, 942 0x39, 0x3e, 0xc6, 0x95, 0x9b, 0x48, 0x8e, 0xbe, 943 0x46, 0x59, 0x48, 0x41, 0x0d, 0x37, 0x25, 0x94, 944 0xbe, 0x8d, 0xf5, 0x81, 0x52, 0xf6, 0xdc, 0xeb, 945 0x98, 0xd7, 0x3b, 0x44, 0x61, 0x6f, 0xa3, 0xef, 946 0x7b, 0xfe, 0xbb, 0xc2, 0x8e, 0x46, 0x63, 0xbc, 947 0x52, 0x65, 0xf9, 0xf8, 0x85, 0x41, 0xdf, 0x82, 948 0x4a, 0x10, 0x2a, 0xe3, 0x0c, 0xb7, 0xad, 0x84, 949 0xa6, 0x6f, 0x4e, 0x8e, 0x96, 0x1e, 0x04, 0xf7, 950 0x57, 0x39, 0xca, 0x58, 0xd4, 0xef, 0x5a, 0xf1, 951 0xf5, 0x69, 0xc2, 0xb1, 0x5c, 0x0a, 0xce, 0xbe, 952 0x38, 0x01, 0xb5, 0x3f, 0x07, 0x8a, 0x72, 0x90, 953 0x10, 0xac, 0x51, 0x3a, 0x96, 0x43, 0xdf, 0x6f, 954 0xea 955}; 956static const unsigned char dh_peer_pub[] = { 957 0x1f, 0xc1, 0xda, 0x34, 0x1d, 0x1a, 0x84, 0x6a, 958 0x96, 0xb7, 0xbe, 0x24, 0x34, 0x0f, 0x87, 0x7d, 959 0xd0, 0x10, 0xaa, 0x03, 0x56, 0xd5, 0xad, 0x58, 960 0xaa, 0xe9, 0xc7, 0xb0, 0x8f, 0x74, 0x9a, 0x32, 961 0x23, 0x51, 0x10, 0xb5, 0xd8, 0x8e, 0xb5, 0xdb, 962 0xfa, 0x97, 0x8d, 0x27, 0xec, 0xc5, 0x30, 0xf0, 963 0x2d, 0x31, 0x14, 0x00, 0x5b, 0x64, 0xb1, 0xc0, 964 0xe0, 0x24, 0xcb, 0x8a, 0xe2, 0x16, 0x98, 0xbc, 965 0xa9, 0xe6, 0x0d, 0x42, 0x80, 0x86, 0x22, 0xf1, 966 0x81, 0xc5, 0x6e, 0x1d, 0xe7, 0xa9, 0x6e, 0x6e, 967 0xfe, 0xe9, 0xd6, 0x65, 0x67, 0xe9, 0x1b, 0x97, 968 0x70, 0x42, 0xc7, 0xe3, 0xd0, 0x44, 0x8f, 0x05, 969 0xfb, 0x77, 0xf5, 0x22, 0xb9, 0xbf, 0xc8, 0xd3, 970 0x3c, 0xc3, 0xc3, 0x1e, 0xd3, 0xb3, 0x1f, 0x0f, 971 0xec, 0xb6, 0xdb, 0x4f, 0x6e, 0xa3, 0x11, 0xe7, 972 0x7a, 0xfd, 0xbc, 0xd4, 0x7a, 0xee, 0x1b, 0xb1, 973 0x50, 0xf2, 0x16, 0x87, 0x35, 0x78, 0xfb, 0x96, 974 0x46, 0x8e, 0x8f, 0x9f, 0x3d, 0xe8, 0xef, 0xbf, 975 0xce, 0x75, 0x62, 0x4b, 0x1d, 0xf0, 0x53, 0x22, 976 0xa3, 0x4f, 0x14, 0x63, 0xe8, 0x39, 0xe8, 0x98, 977 0x4c, 0x4a, 0xd0, 0xa9, 0x6e, 0x1a, 0xc8, 0x42, 978 0xe5, 0x31, 0x8c, 0xc2, 0x3c, 0x06, 0x2a, 0x8c, 979 0xa1, 0x71, 0xb8, 0xd5, 0x75, 0x98, 0x0d, 0xde, 980 0x7f, 0xc5, 0x6f, 0x15, 0x36, 0x52, 0x38, 0x20, 981 0xd4, 0x31, 0x92, 0xbf, 0xd5, 0x1e, 0x8e, 0x22, 982 0x89, 0x78, 0xac, 0xa5, 0xb9, 0x44, 0x72, 0xf3, 983 0x39, 0xca, 0xeb, 0x99, 0x31, 0xb4, 0x2b, 0xe3, 984 0x01, 0x26, 0x8b, 0xc9, 0x97, 0x89, 0xc9, 0xb2, 985 0x55, 0x71, 0xc3, 0xc0, 0xe4, 0xcb, 0x3f, 0x00, 986 0x7f, 0x1a, 0x51, 0x1c, 0xbb, 0x53, 0xc8, 0x51, 987 0x9c, 0xdd, 0x13, 0x02, 0xab, 0xca, 0x6c, 0x0f, 988 0x34, 0xf9, 0x67, 0x39, 0xf1, 0x7f, 0xf4, 0x8b 989}; 990 991static const unsigned char dh_secret_expected[256] = { 992 0xa0, 0x38, 0x64, 0x37, 0xdf, 0x2d, 0x2c, 0x78, 993 0x49, 0xb9, 0xa7, 0x77, 0xfb, 0xc1, 0x69, 0x94, 994 0x85, 0xc5, 0x5a, 0xbc, 0x8d, 0x43, 0x32, 0x23, 995 0x94, 0xf5, 0xba, 0xb4, 0x5f, 0x22, 0x4b, 0x4e, 996 0xc4, 0xfd, 0x89, 0x41, 0x56, 0x41, 0xe8, 0x9f, 997 0x2d, 0x0d, 0x26, 0x33, 0x60, 0x13, 0x8a, 0x20, 998 0xf1, 0x7e, 0xb3, 0x76, 0x38, 0x03, 0x0e, 0x48, 999 0x4f, 0x27, 0x8c, 0x32, 0xdb, 0x66, 0x5c, 0xbf, 1000 0x7f, 0xc7, 0xeb, 0xc6, 0x2d, 0xfd, 0x00, 0x08, 1001 0xb0, 0x98, 0x4e, 0xad, 0x68, 0x65, 0xca, 0x9e, 1002 0x78, 0xe1, 0xaa, 0xb7, 0x8e, 0x08, 0x4d, 0x67, 1003 0xa6, 0x15, 0x16, 0xbb, 0x41, 0xac, 0x15, 0xb5, 1004 0x08, 0x92, 0x5d, 0x25, 0x1d, 0x7f, 0xf3, 0x1b, 1005 0x5c, 0xea, 0x21, 0x6b, 0xe5, 0x00, 0x4d, 0xb6, 1006 0x8e, 0xae, 0x84, 0xb4, 0xee, 0xf7, 0xcc, 0xdd, 1007 0x64, 0x19, 0x4e, 0x25, 0xce, 0x37, 0x4f, 0xde, 1008 0xb6, 0x21, 0xba, 0xd9, 0xc0, 0x7a, 0x87, 0xc7, 1009 0x90, 0x0a, 0x78, 0x8b, 0xdd, 0xbc, 0x68, 0x77, 1010 0x2d, 0xa6, 0xdf, 0x4d, 0x2e, 0xca, 0xdc, 0x86, 1011 0xb6, 0x1e, 0x54, 0x2b, 0x3a, 0xa9, 0x52, 0x67, 1012 0xf3, 0x1a, 0x35, 0xb7, 0x5a, 0xcd, 0x99, 0x59, 1013 0xe9, 0x07, 0x6f, 0xd7, 0xd7, 0x96, 0x8a, 0x47, 1014 0xdf, 0x9f, 0x51, 0x1b, 0x04, 0xa9, 0x45, 0x30, 1015 0x89, 0x8a, 0x3f, 0x7e, 0xca, 0xfc, 0x05, 0x2d, 1016 0x18, 0x77, 0x8f, 0x45, 0x25, 0x39, 0xdb, 0xf2, 1017 0x13, 0x36, 0x31, 0xdb, 0x50, 0x65, 0x63, 0x4a, 1018 0xae, 0x3e, 0xd1, 0x3e, 0xde, 0xc1, 0x32, 0x4b, 1019 0x78, 0x19, 0x03, 0x70, 0x0a, 0xc2, 0xa2, 0x6f, 1020 0x9b, 0xd4, 0xa6, 0x1d, 0x47, 0xf2, 0xa6, 0x91, 1021 0x61, 0x4a, 0x74, 0xf8, 0x70, 0x39, 0x42, 0x72, 1022 0xd5, 0x58, 0x7f, 0xcd, 0x16, 0xeb, 0x82, 0x0c, 1023 0x2c, 0xf4, 0xd0, 0x95, 0x22, 0xf9, 0xbe, 0x99, 1024}; 1025 1026static const char dh_ffdhe2048[] = "ffdhe2048"; 1027static const ST_KAT_PARAM dh_group[] = { 1028 ST_KAT_PARAM_UTF8STRING(OSSL_PKEY_PARAM_GROUP_NAME, dh_ffdhe2048), 1029 ST_KAT_PARAM_END() 1030}; 1031 1032/* The host's private key */ 1033static const ST_KAT_PARAM dh_host_key[] = { 1034 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PUB_KEY, dh_pub), 1035 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PRIV_KEY, dh_priv), 1036 ST_KAT_PARAM_END() 1037}; 1038 1039/* The peer's public key */ 1040static const ST_KAT_PARAM dh_peer_key[] = { 1041 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PUB_KEY, dh_peer_pub), 1042 ST_KAT_PARAM_END() 1043}; 1044#endif /* OPENSSL_NO_DH */ 1045 1046 1047#ifndef OPENSSL_NO_EC 1048static const char ecdh_curve_name[] = "prime256v1"; 1049static const unsigned char ecdh_privd[] = { 1050 0x33, 0xd0, 0x43, 0x83, 0xa9, 0x89, 0x56, 0x03, 1051 0xd2, 0xd7, 0xfe, 0x6b, 0x01, 0x6f, 0xe4, 0x59, 1052 0xcc, 0x0d, 0x9a, 0x24, 0x6c, 0x86, 0x1b, 0x2e, 1053 0xdc, 0x4b, 0x4d, 0x35, 0x43, 0xe1, 0x1b, 0xad 1054}; 1055static const unsigned char ecdh_pub[] = { 1056 0x04, 1057 0x1b, 0x93, 0x67, 0x55, 0x1c, 0x55, 0x9f, 0x63, 1058 0xd1, 0x22, 0xa4, 0xd8, 0xd1, 0x0a, 0x60, 0x6d, 1059 0x02, 0xa5, 0x77, 0x57, 0xc8, 0xa3, 0x47, 0x73, 1060 0x3a, 0x6a, 0x08, 0x28, 0x39, 0xbd, 0xc9, 0xd2, 1061 0x80, 0xec, 0xe9, 0xa7, 0x08, 0x29, 0x71, 0x2f, 1062 0xc9, 0x56, 0x82, 0xee, 0x9a, 0x85, 0x0f, 0x6d, 1063 0x7f, 0x59, 0x5f, 0x8c, 0xd1, 0x96, 0x0b, 0xdf, 1064 0x29, 0x3e, 0x49, 0x07, 0x88, 0x3f, 0x9a, 0x29 1065}; 1066static const unsigned char ecdh_peer_pub[] = { 1067 0x04, 1068 0x1f, 0x72, 0xbd, 0x2a, 0x3e, 0xeb, 0x6c, 0x76, 1069 0xe5, 0x5d, 0x69, 0x75, 0x24, 0xbf, 0x2f, 0x5b, 1070 0x96, 0xb2, 0x91, 0x62, 0x06, 0x35, 0xcc, 0xb2, 1071 0x4b, 0x31, 0x1b, 0x0c, 0x6f, 0x06, 0x9f, 0x86, 1072 0xcf, 0xc8, 0xac, 0xd5, 0x4f, 0x4d, 0x77, 0xf3, 1073 0x70, 0x4a, 0x8f, 0x04, 0x9a, 0xb1, 0x03, 0xc7, 1074 0xeb, 0xd5, 0x94, 0x78, 0x61, 0xab, 0x78, 0x0c, 1075 0x4a, 0x2d, 0x6b, 0xf3, 0x2f, 0x2e, 0x4a, 0xbc 1076}; 1077 1078static const ST_KAT_PARAM ecdh_group[] = { 1079 ST_KAT_PARAM_UTF8STRING(OSSL_PKEY_PARAM_GROUP_NAME, ecdh_curve_name), 1080 ST_KAT_PARAM_END() 1081}; 1082static const ST_KAT_PARAM ecdh_host_key[] = { 1083 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PUB_KEY, ecdh_pub), 1084 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PRIV_KEY, ecdh_privd), 1085 ST_KAT_PARAM_END() 1086}; 1087static const ST_KAT_PARAM ecdh_peer_key[] = { 1088 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PUB_KEY, ecdh_peer_pub), 1089 ST_KAT_PARAM_END() 1090}; 1091static const unsigned char ecdh_secret_expected[] = { 1092 0x45, 0x2a, 0x2f, 0x0d, 0x24, 0xe6, 0x8d, 0xd0, 1093 0xda, 0x59, 0x7b, 0x0c, 0xec, 0x9b, 0x4c, 0x38, 1094 0x41, 0xdd, 0xce, 0xb3, 0xcc, 0xf1, 0x90, 0x8e, 1095 0x30, 0xdb, 0x5b, 0x5f, 0x97, 0xea, 0xe0, 0xc2 1096}; 1097#endif /* OPENSSL_NO_EC */ 1098 1099#if !defined(OPENSSL_NO_DH) || !defined(OPENSSL_NO_EC) 1100static const ST_KAT_KAS st_kat_kas_tests[] = 1101{ 1102# ifndef OPENSSL_NO_DH 1103 { 1104 OSSL_SELF_TEST_DESC_KA_DH, 1105 "DH", 1106 dh_group, 1107 dh_host_key, 1108 dh_peer_key, 1109 ITM(dh_secret_expected) 1110 }, 1111# endif /* OPENSSL_NO_DH */ 1112# ifndef OPENSSL_NO_EC 1113 { 1114 OSSL_SELF_TEST_DESC_KA_ECDH, 1115 "EC", 1116 ecdh_group, 1117 ecdh_host_key, 1118 ecdh_peer_key, 1119 ITM(ecdh_secret_expected) 1120 }, 1121# endif /* OPENSSL_NO_EC */ 1122}; 1123#endif /* !defined(OPENSSL_NO_DH) || !defined(OPENSSL_NO_EC) */ 1124 1125/* RSA key data */ 1126static const unsigned char rsa_n[] = { 1127 0xDB, 0x10, 0x1A, 0xC2, 0xA3, 0xF1, 0xDC, 0xFF, 1128 0x13, 0x6B, 0xED, 0x44, 0xDF, 0xF0, 0x02, 0x6D, 1129 0x13, 0xC7, 0x88, 0xDA, 0x70, 0x6B, 0x54, 0xF1, 1130 0xE8, 0x27, 0xDC, 0xC3, 0x0F, 0x99, 0x6A, 0xFA, 1131 0xC6, 0x67, 0xFF, 0x1D, 0x1E, 0x3C, 0x1D, 0xC1, 1132 0xB5, 0x5F, 0x6C, 0xC0, 0xB2, 0x07, 0x3A, 0x6D, 1133 0x41, 0xE4, 0x25, 0x99, 0xAC, 0xFC, 0xD2, 0x0F, 1134 0x02, 0xD3, 0xD1, 0x54, 0x06, 0x1A, 0x51, 0x77, 1135 0xBD, 0xB6, 0xBF, 0xEA, 0xA7, 0x5C, 0x06, 0xA9, 1136 0x5D, 0x69, 0x84, 0x45, 0xD7, 0xF5, 0x05, 0xBA, 1137 0x47, 0xF0, 0x1B, 0xD7, 0x2B, 0x24, 0xEC, 0xCB, 1138 0x9B, 0x1B, 0x10, 0x8D, 0x81, 0xA0, 0xBE, 0xB1, 1139 0x8C, 0x33, 0xE4, 0x36, 0xB8, 0x43, 0xEB, 0x19, 1140 0x2A, 0x81, 0x8D, 0xDE, 0x81, 0x0A, 0x99, 0x48, 1141 0xB6, 0xF6, 0xBC, 0xCD, 0x49, 0x34, 0x3A, 0x8F, 1142 0x26, 0x94, 0xE3, 0x28, 0x82, 0x1A, 0x7C, 0x8F, 1143 0x59, 0x9F, 0x45, 0xE8, 0x5D, 0x1A, 0x45, 0x76, 1144 0x04, 0x56, 0x05, 0xA1, 0xD0, 0x1B, 0x8C, 0x77, 1145 0x6D, 0xAF, 0x53, 0xFA, 0x71, 0xE2, 0x67, 0xE0, 1146 0x9A, 0xFE, 0x03, 0xA9, 0x85, 0xD2, 0xC9, 0xAA, 1147 0xBA, 0x2A, 0xBC, 0xF4, 0xA0, 0x08, 0xF5, 0x13, 1148 0x98, 0x13, 0x5D, 0xF0, 0xD9, 0x33, 0x34, 0x2A, 1149 0x61, 0xC3, 0x89, 0x55, 0xF0, 0xAE, 0x1A, 0x9C, 1150 0x22, 0xEE, 0x19, 0x05, 0x8D, 0x32, 0xFE, 0xEC, 1151 0x9C, 0x84, 0xBA, 0xB7, 0xF9, 0x6C, 0x3A, 0x4F, 1152 0x07, 0xFC, 0x45, 0xEB, 0x12, 0xE5, 0x7B, 0xFD, 1153 0x55, 0xE6, 0x29, 0x69, 0xD1, 0xC2, 0xE8, 0xB9, 1154 0x78, 0x59, 0xF6, 0x79, 0x10, 0xC6, 0x4E, 0xEB, 1155 0x6A, 0x5E, 0xB9, 0x9A, 0xC7, 0xC4, 0x5B, 0x63, 1156 0xDA, 0xA3, 0x3F, 0x5E, 0x92, 0x7A, 0x81, 0x5E, 1157 0xD6, 0xB0, 0xE2, 0x62, 0x8F, 0x74, 0x26, 0xC2, 1158 0x0C, 0xD3, 0x9A, 0x17, 0x47, 0xE6, 0x8E, 0xAB 1159}; 1160static const unsigned char rsa_e[] = { 0x01, 0x00, 0x01 }; 1161static const unsigned char rsa_d[] = { 1162 0x52, 0x41, 0xF4, 0xDA, 0x7B, 0xB7, 0x59, 0x55, 1163 0xCA, 0xD4, 0x2F, 0x0F, 0x3A, 0xCB, 0xA4, 0x0D, 1164 0x93, 0x6C, 0xCC, 0x9D, 0xC1, 0xB2, 0xFB, 0xFD, 1165 0xAE, 0x40, 0x31, 0xAC, 0x69, 0x52, 0x21, 0x92, 1166 0xB3, 0x27, 0xDF, 0xEA, 0xEE, 0x2C, 0x82, 0xBB, 1167 0xF7, 0x40, 0x32, 0xD5, 0x14, 0xC4, 0x94, 0x12, 1168 0xEC, 0xB8, 0x1F, 0xCA, 0x59, 0xE3, 0xC1, 0x78, 1169 0xF3, 0x85, 0xD8, 0x47, 0xA5, 0xD7, 0x02, 0x1A, 1170 0x65, 0x79, 0x97, 0x0D, 0x24, 0xF4, 0xF0, 0x67, 1171 0x6E, 0x75, 0x2D, 0xBF, 0x10, 0x3D, 0xA8, 0x7D, 1172 0xEF, 0x7F, 0x60, 0xE4, 0xE6, 0x05, 0x82, 0x89, 1173 0x5D, 0xDF, 0xC6, 0xD2, 0x6C, 0x07, 0x91, 0x33, 1174 0x98, 0x42, 0xF0, 0x02, 0x00, 0x25, 0x38, 0xC5, 1175 0x85, 0x69, 0x8A, 0x7D, 0x2F, 0x95, 0x6C, 0x43, 1176 0x9A, 0xB8, 0x81, 0xE2, 0xD0, 0x07, 0x35, 0xAA, 1177 0x05, 0x41, 0xC9, 0x1E, 0xAF, 0xE4, 0x04, 0x3B, 1178 0x19, 0xB8, 0x73, 0xA2, 0xAC, 0x4B, 0x1E, 0x66, 1179 0x48, 0xD8, 0x72, 0x1F, 0xAC, 0xF6, 0xCB, 0xBC, 1180 0x90, 0x09, 0xCA, 0xEC, 0x0C, 0xDC, 0xF9, 0x2C, 1181 0xD7, 0xEB, 0xAE, 0xA3, 0xA4, 0x47, 0xD7, 0x33, 1182 0x2F, 0x8A, 0xCA, 0xBC, 0x5E, 0xF0, 0x77, 0xE4, 1183 0x97, 0x98, 0x97, 0xC7, 0x10, 0x91, 0x7D, 0x2A, 1184 0xA6, 0xFF, 0x46, 0x83, 0x97, 0xDE, 0xE9, 0xE2, 1185 0x17, 0x03, 0x06, 0x14, 0xE2, 0xD7, 0xB1, 0x1D, 1186 0x77, 0xAF, 0x51, 0x27, 0x5B, 0x5E, 0x69, 0xB8, 1187 0x81, 0xE6, 0x11, 0xC5, 0x43, 0x23, 0x81, 0x04, 1188 0x62, 0xFF, 0xE9, 0x46, 0xB8, 0xD8, 0x44, 0xDB, 1189 0xA5, 0xCC, 0x31, 0x54, 0x34, 0xCE, 0x3E, 0x82, 1190 0xD6, 0xBF, 0x7A, 0x0B, 0x64, 0x21, 0x6D, 0x88, 1191 0x7E, 0x5B, 0x45, 0x12, 0x1E, 0x63, 0x8D, 0x49, 1192 0xA7, 0x1D, 0xD9, 0x1E, 0x06, 0xCD, 0xE8, 0xBA, 1193 0x2C, 0x8C, 0x69, 0x32, 0xEA, 0xBE, 0x60, 0x71 1194}; 1195static const unsigned char rsa_p[] = { 1196 0xFA, 0xAC, 0xE1, 0x37, 0x5E, 0x32, 0x11, 0x34, 1197 0xC6, 0x72, 0x58, 0x2D, 0x91, 0x06, 0x3E, 0x77, 1198 0xE7, 0x11, 0x21, 0xCD, 0x4A, 0xF8, 0xA4, 0x3F, 1199 0x0F, 0xEF, 0x31, 0xE3, 0xF3, 0x55, 0xA0, 0xB9, 1200 0xAC, 0xB6, 0xCB, 0xBB, 0x41, 0xD0, 0x32, 0x81, 1201 0x9A, 0x8F, 0x7A, 0x99, 0x30, 0x77, 0x6C, 0x68, 1202 0x27, 0xE2, 0x96, 0xB5, 0x72, 0xC9, 0xC3, 0xD4, 1203 0x42, 0xAA, 0xAA, 0xCA, 0x95, 0x8F, 0xFF, 0xC9, 1204 0x9B, 0x52, 0x34, 0x30, 0x1D, 0xCF, 0xFE, 0xCF, 1205 0x3C, 0x56, 0x68, 0x6E, 0xEF, 0xE7, 0x6C, 0xD7, 1206 0xFB, 0x99, 0xF5, 0x4A, 0xA5, 0x21, 0x1F, 0x2B, 1207 0xEA, 0x93, 0xE8, 0x98, 0x26, 0xC4, 0x6E, 0x42, 1208 0x21, 0x5E, 0xA0, 0xA1, 0x2A, 0x58, 0x35, 0xBB, 1209 0x10, 0xE7, 0xBA, 0x27, 0x0A, 0x3B, 0xB3, 0xAF, 1210 0xE2, 0x75, 0x36, 0x04, 0xAC, 0x56, 0xA0, 0xAB, 1211 0x52, 0xDE, 0xCE, 0xDD, 0x2C, 0x28, 0x77, 0x03 1212}; 1213static const unsigned char rsa_q[] = { 1214 0xDF, 0xB7, 0x52, 0xB6, 0xD7, 0xC0, 0xE2, 0x96, 1215 0xE7, 0xC9, 0xFE, 0x5D, 0x71, 0x5A, 0xC4, 0x40, 1216 0x96, 0x2F, 0xE5, 0x87, 0xEA, 0xF3, 0xA5, 0x77, 1217 0x11, 0x67, 0x3C, 0x8D, 0x56, 0x08, 0xA7, 0xB5, 1218 0x67, 0xFA, 0x37, 0xA8, 0xB8, 0xCF, 0x61, 0xE8, 1219 0x63, 0xD8, 0x38, 0x06, 0x21, 0x2B, 0x92, 0x09, 1220 0xA6, 0x39, 0x3A, 0xEA, 0xA8, 0xB4, 0x45, 0x4B, 1221 0x36, 0x10, 0x4C, 0xE4, 0x00, 0x66, 0x71, 0x65, 1222 0xF8, 0x0B, 0x94, 0x59, 0x4F, 0x8C, 0xFD, 0xD5, 1223 0x34, 0xA2, 0xE7, 0x62, 0x84, 0x0A, 0xA7, 0xBB, 1224 0xDB, 0xD9, 0x8A, 0xCD, 0x05, 0xE1, 0xCC, 0x57, 1225 0x7B, 0xF1, 0xF1, 0x1F, 0x11, 0x9D, 0xBA, 0x3E, 1226 0x45, 0x18, 0x99, 0x1B, 0x41, 0x64, 0x43, 0xEE, 1227 0x97, 0x5D, 0x77, 0x13, 0x5B, 0x74, 0x69, 0x73, 1228 0x87, 0x95, 0x05, 0x07, 0xBE, 0x45, 0x07, 0x17, 1229 0x7E, 0x4A, 0x69, 0x22, 0xF3, 0xDB, 0x05, 0x39 1230}; 1231static const unsigned char rsa_dp[] = { 1232 0x5E, 0xD8, 0xDC, 0xDA, 0x53, 0x44, 0xC4, 0x67, 1233 0xE0, 0x92, 0x51, 0x34, 0xE4, 0x83, 0xA5, 0x4D, 1234 0x3E, 0xDB, 0xA7, 0x9B, 0x82, 0xBB, 0x73, 0x81, 1235 0xFC, 0xE8, 0x77, 0x4B, 0x15, 0xBE, 0x17, 0x73, 1236 0x49, 0x9B, 0x5C, 0x98, 0xBC, 0xBD, 0x26, 0xEF, 1237 0x0C, 0xE9, 0x2E, 0xED, 0x19, 0x7E, 0x86, 0x41, 1238 0x1E, 0x9E, 0x48, 0x81, 0xDD, 0x2D, 0xE4, 0x6F, 1239 0xC2, 0xCD, 0xCA, 0x93, 0x9E, 0x65, 0x7E, 0xD5, 1240 0xEC, 0x73, 0xFD, 0x15, 0x1B, 0xA2, 0xA0, 0x7A, 1241 0x0F, 0x0D, 0x6E, 0xB4, 0x53, 0x07, 0x90, 0x92, 1242 0x64, 0x3B, 0x8B, 0xA9, 0x33, 0xB3, 0xC5, 0x94, 1243 0x9B, 0x4C, 0x5D, 0x9C, 0x7C, 0x46, 0xA4, 0xA5, 1244 0x56, 0xF4, 0xF3, 0xF8, 0x27, 0x0A, 0x7B, 0x42, 1245 0x0D, 0x92, 0x70, 0x47, 0xE7, 0x42, 0x51, 0xA9, 1246 0xC2, 0x18, 0xB1, 0x58, 0xB1, 0x50, 0x91, 0xB8, 1247 0x61, 0x41, 0xB6, 0xA9, 0xCE, 0xD4, 0x7C, 0xBB 1248}; 1249static const unsigned char rsa_dq[] = { 1250 0x54, 0x09, 0x1F, 0x0F, 0x03, 0xD8, 0xB6, 0xC5, 1251 0x0C, 0xE8, 0xB9, 0x9E, 0x0C, 0x38, 0x96, 0x43, 1252 0xD4, 0xA6, 0xC5, 0x47, 0xDB, 0x20, 0x0E, 0xE5, 1253 0xBD, 0x29, 0xD4, 0x7B, 0x1A, 0xF8, 0x41, 0x57, 1254 0x49, 0x69, 0x9A, 0x82, 0xCC, 0x79, 0x4A, 0x43, 1255 0xEB, 0x4D, 0x8B, 0x2D, 0xF2, 0x43, 0xD5, 0xA5, 1256 0xBE, 0x44, 0xFD, 0x36, 0xAC, 0x8C, 0x9B, 0x02, 1257 0xF7, 0x9A, 0x03, 0xE8, 0x19, 0xA6, 0x61, 0xAE, 1258 0x76, 0x10, 0x93, 0x77, 0x41, 0x04, 0xAB, 0x4C, 1259 0xED, 0x6A, 0xCC, 0x14, 0x1B, 0x99, 0x8D, 0x0C, 1260 0x6A, 0x37, 0x3B, 0x86, 0x6C, 0x51, 0x37, 0x5B, 1261 0x1D, 0x79, 0xF2, 0xA3, 0x43, 0x10, 0xC6, 0xA7, 1262 0x21, 0x79, 0x6D, 0xF9, 0xE9, 0x04, 0x6A, 0xE8, 1263 0x32, 0xFF, 0xAE, 0xFD, 0x1C, 0x7B, 0x8C, 0x29, 1264 0x13, 0xA3, 0x0C, 0xB2, 0xAD, 0xEC, 0x6C, 0x0F, 1265 0x8D, 0x27, 0x12, 0x7B, 0x48, 0xB2, 0xDB, 0x31 1266}; 1267static const unsigned char rsa_qInv[] = { 1268 0x8D, 0x1B, 0x05, 0xCA, 0x24, 0x1F, 0x0C, 0x53, 1269 0x19, 0x52, 0x74, 0x63, 0x21, 0xFA, 0x78, 0x46, 1270 0x79, 0xAF, 0x5C, 0xDE, 0x30, 0xA4, 0x6C, 0x20, 1271 0x38, 0xE6, 0x97, 0x39, 0xB8, 0x7A, 0x70, 0x0D, 1272 0x8B, 0x6C, 0x6D, 0x13, 0x74, 0xD5, 0x1C, 0xDE, 1273 0xA9, 0xF4, 0x60, 0x37, 0xFE, 0x68, 0x77, 0x5E, 1274 0x0B, 0x4E, 0x5E, 0x03, 0x31, 0x30, 0xDF, 0xD6, 1275 0xAE, 0x85, 0xD0, 0x81, 0xBB, 0x61, 0xC7, 0xB1, 1276 0x04, 0x5A, 0xC4, 0x6D, 0x56, 0x1C, 0xD9, 0x64, 1277 0xE7, 0x85, 0x7F, 0x88, 0x91, 0xC9, 0x60, 0x28, 1278 0x05, 0xE2, 0xC6, 0x24, 0x8F, 0xDD, 0x61, 0x64, 1279 0xD8, 0x09, 0xDE, 0x7E, 0xD3, 0x4A, 0x61, 0x1A, 1280 0xD3, 0x73, 0x58, 0x4B, 0xD8, 0xA0, 0x54, 0x25, 1281 0x48, 0x83, 0x6F, 0x82, 0x6C, 0xAF, 0x36, 0x51, 1282 0x2A, 0x5D, 0x14, 0x2F, 0x41, 0x25, 0x00, 0xDD, 1283 0xF8, 0xF3, 0x95, 0xFE, 0x31, 0x25, 0x50, 0x12 1284}; 1285 1286static const ST_KAT_PARAM rsa_crt_key[] = { 1287 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_N, rsa_n), 1288 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_E, rsa_e), 1289 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_D, rsa_d), 1290 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_FACTOR1, rsa_p), 1291 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_FACTOR2, rsa_q), 1292 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_EXPONENT1, rsa_dp), 1293 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_EXPONENT2, rsa_dq), 1294 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_COEFFICIENT1, rsa_qInv), 1295 ST_KAT_PARAM_END() 1296}; 1297 1298static const ST_KAT_PARAM rsa_pub_key[] = { 1299 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_N, rsa_n), 1300 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_E, rsa_e), 1301 ST_KAT_PARAM_END() 1302}; 1303 1304static const ST_KAT_PARAM rsa_priv_key[] = { 1305 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_N, rsa_n), 1306 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_E, rsa_e), 1307 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_D, rsa_d), 1308 ST_KAT_PARAM_END() 1309}; 1310 1311/*- 1312 * Using OSSL_PKEY_RSA_PAD_MODE_NONE directly in the expansion of the 1313 * ST_KAT_PARAM_UTF8STRING macro below causes a failure on ancient 1314 * HP/UX PA-RISC compilers. 1315 */ 1316static const char pad_mode_none[] = OSSL_PKEY_RSA_PAD_MODE_NONE; 1317 1318static const ST_KAT_PARAM rsa_enc_params[] = { 1319 ST_KAT_PARAM_UTF8STRING(OSSL_ASYM_CIPHER_PARAM_PAD_MODE, pad_mode_none), 1320 ST_KAT_PARAM_END() 1321}; 1322 1323static const unsigned char rsa_sig_msg[] = "Hello World!"; 1324 1325static const unsigned char rsa_expected_sig[256] = { 1326 0xad, 0xbe, 0x2a, 0xaf, 0x16, 0x85, 0xc5, 0x00, 1327 0x91, 0x3e, 0xd0, 0x49, 0xfb, 0x3a, 0x81, 0xb9, 1328 0x6c, 0x28, 0xbc, 0xbf, 0xea, 0x96, 0x5f, 0xe4, 1329 0x9f, 0x99, 0xf7, 0x18, 0x8c, 0xec, 0x60, 0x28, 1330 0xeb, 0x29, 0x02, 0x49, 0xfc, 0xda, 0xd7, 0x78, 1331 0x68, 0xf8, 0xe1, 0xe9, 0x4d, 0x20, 0x6d, 0x32, 1332 0xa6, 0xde, 0xfc, 0xe4, 0xda, 0xcc, 0x6c, 0x75, 1333 0x36, 0x6b, 0xff, 0x5a, 0xac, 0x01, 0xa8, 0xc2, 1334 0xa9, 0xe6, 0x8b, 0x18, 0x3e, 0xec, 0xea, 0x4c, 1335 0x4a, 0x9e, 0x00, 0x09, 0xd1, 0x8a, 0x69, 0x1b, 1336 0x8b, 0xd9, 0xad, 0x37, 0xe5, 0x7c, 0xff, 0x7d, 1337 0x59, 0x56, 0x3e, 0xa0, 0xc6, 0x32, 0xd8, 0x35, 1338 0x2f, 0xff, 0xfb, 0x05, 0x02, 0xcd, 0xd7, 0x19, 1339 0xb9, 0x00, 0x86, 0x2a, 0xcf, 0xaa, 0x78, 0x16, 1340 0x4b, 0xf1, 0xa7, 0x59, 0xef, 0x7d, 0xe8, 0x74, 1341 0x23, 0x5c, 0xb2, 0xd4, 0x8a, 0x99, 0xa5, 0xbc, 1342 0xfa, 0x63, 0xd8, 0xf7, 0xbd, 0xc6, 0x00, 0x13, 1343 0x06, 0x02, 0x9a, 0xd4, 0xa7, 0xb4, 0x3d, 0x61, 1344 0xab, 0xf1, 0xc2, 0x95, 0x59, 0x9b, 0x3d, 0x67, 1345 0x1f, 0xde, 0x57, 0xb6, 0xb6, 0x9f, 0xb0, 0x87, 1346 0xd6, 0x51, 0xd5, 0x3e, 0x00, 0xe2, 0xc9, 0xa0, 1347 0x03, 0x66, 0xbc, 0x01, 0xb3, 0x8e, 0xfa, 0xf1, 1348 0x15, 0xeb, 0x26, 0xf1, 0x5d, 0x81, 0x90, 0xb4, 1349 0x1c, 0x00, 0x7c, 0x83, 0x4a, 0xa5, 0xde, 0x64, 1350 0xae, 0xea, 0x6c, 0x43, 0xc3, 0x20, 0x77, 0x77, 1351 0x42, 0x12, 0x24, 0xf5, 0xe3, 0x70, 0xdd, 0x59, 1352 0x48, 0x9c, 0xef, 0xd4, 0x8a, 0x3c, 0x29, 0x6a, 1353 0x0c, 0x9c, 0xf2, 0x13, 0xa4, 0x1c, 0x2f, 0x49, 1354 0xcd, 0xb4, 0xaa, 0x28, 0x40, 0x34, 0xc6, 0x75, 1355 0xba, 0x30, 0xe6, 0xd8, 0x5b, 0x2f, 0x08, 0xd0, 1356 0x29, 0xa5, 0x39, 0xfb, 0x6e, 0x3b, 0x0f, 0x52, 1357 0x2c, 0x68, 0xf0, 0x37, 0xa9, 0xd2, 0x56, 0xd6 1358}; 1359 1360static const unsigned char rsa_asym_plaintext_encrypt[256] = { 1361 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 1362 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 1363}; 1364static const unsigned char rsa_asym_expected_encrypt[256] = { 1365 0x54, 0xac, 0x23, 0x96, 0x1d, 0x82, 0x5d, 0x8b, 1366 0x8f, 0x36, 0x33, 0xd0, 0xf4, 0x02, 0xa2, 0x61, 1367 0xb1, 0x13, 0xd4, 0x4a, 0x46, 0x06, 0x37, 0x3c, 1368 0xbf, 0x40, 0x05, 0x3c, 0xc6, 0x3b, 0x64, 0xdc, 1369 0x22, 0x22, 0xaf, 0x36, 0x79, 0x62, 0x45, 0xf0, 1370 0x97, 0x82, 0x22, 0x44, 0x86, 0x4a, 0x7c, 0xfa, 1371 0xac, 0x03, 0x21, 0x84, 0x3f, 0x31, 0xad, 0x2a, 1372 0xa4, 0x6e, 0x7a, 0xc5, 0x93, 0xf3, 0x0f, 0xfc, 1373 0xf1, 0x62, 0xce, 0x82, 0x12, 0x45, 0xc9, 0x35, 1374 0xb0, 0x7a, 0xcd, 0x99, 0x8c, 0x91, 0x6b, 0x5a, 1375 0xd3, 0x46, 0xdb, 0xf9, 0x9e, 0x52, 0x49, 0xbd, 1376 0x1e, 0xe8, 0xda, 0xac, 0x61, 0x47, 0xc2, 0xda, 1377 0xfc, 0x1e, 0xfb, 0x74, 0xd7, 0xd6, 0xc1, 0x18, 1378 0x86, 0x3e, 0x20, 0x9c, 0x7a, 0xe1, 0x04, 0xb7, 1379 0x38, 0x43, 0xb1, 0x4e, 0xa0, 0xd8, 0xc1, 0x39, 1380 0x4d, 0xe1, 0xd3, 0xb0, 0xb3, 0xf1, 0x82, 0x87, 1381 0x1f, 0x74, 0xb5, 0x69, 0xfd, 0x33, 0xd6, 0x21, 1382 0x7c, 0x61, 0x60, 0x28, 0xca, 0x70, 0xdb, 0xa0, 1383 0xbb, 0xc8, 0x73, 0xa9, 0x82, 0xf8, 0x6b, 0xd8, 1384 0xf0, 0xc9, 0x7b, 0x20, 0xdf, 0x9d, 0xfb, 0x8c, 1385 0xd4, 0xa2, 0x89, 0xe1, 0x9b, 0x04, 0xad, 0xaa, 1386 0x11, 0x6c, 0x8f, 0xce, 0x83, 0x29, 0x56, 0x69, 1387 0xbb, 0x00, 0x3b, 0xef, 0xca, 0x2d, 0xcd, 0x52, 1388 0xc8, 0xf1, 0xb3, 0x9b, 0xb4, 0x4f, 0x6d, 0x9c, 1389 0x3d, 0x69, 0xcc, 0x6d, 0x1f, 0x38, 0x4d, 0xe6, 1390 0xbb, 0x0c, 0x87, 0xdc, 0x5f, 0xa9, 0x24, 0x93, 1391 0x03, 0x46, 0xa2, 0x33, 0x6c, 0xf4, 0xd8, 0x5d, 1392 0x68, 0xf3, 0xd3, 0xe0, 0xf2, 0x30, 0xdb, 0xf5, 1393 0x4f, 0x0f, 0xad, 0xc7, 0xd0, 0xaa, 0x47, 0xd9, 1394 0x9f, 0x85, 0x1b, 0x2e, 0x6c, 0x3c, 0x57, 0x04, 1395 0x29, 0xf4, 0xf5, 0x66, 0x7d, 0x93, 0x4a, 0xaa, 1396 0x05, 0x52, 0x55, 0xc1, 0xc6, 0x06, 0x90, 0xab, 1397}; 1398 1399#ifndef OPENSSL_NO_EC 1400/* ECDSA key data */ 1401static const char ecd_prime_curve_name[] = "secp224r1"; 1402static const unsigned char ecd_prime_priv[] = { 1403 0x98, 0x1f, 0xb5, 0xf1, 0xfc, 0x87, 0x1d, 0x7d, 1404 0xde, 0x1e, 0x01, 0x64, 0x09, 0x9b, 0xe7, 0x1b, 1405 0x9f, 0xad, 0x63, 0xdd, 0x33, 0x01, 0xd1, 0x50, 1406 0x80, 0x93, 0x50, 0x30 1407}; 1408static const unsigned char ecd_prime_pub[] = { 1409 0x04, 0x95, 0x47, 0x99, 0x44, 0x29, 0x8f, 0x51, 1410 0x39, 0xe2, 0x53, 0xec, 0x79, 0xb0, 0x4d, 0xde, 1411 0x87, 0x1a, 0x76, 0x54, 0xd5, 0x96, 0xb8, 0x7a, 1412 0x6d, 0xf4, 0x1c, 0x2c, 0x87, 0x91, 0x5f, 0xd5, 1413 0x31, 0xdd, 0x24, 0xe5, 0x78, 0xd9, 0x08, 0x24, 1414 0x8a, 0x49, 0x99, 0xec, 0x55, 0xf2, 0x82, 0xb3, 1415 0xc4, 0xb7, 0x33, 0x68, 0xe4, 0x24, 0xa9, 0x12, 1416 0x82 1417}; 1418static const unsigned char ecdsa_prime_expected_sig[] = { 1419 0x30, 0x3d, 0x02, 0x1c, 0x48, 0x4f, 0x3c, 0x97, 1420 0x5b, 0xfa, 0x40, 0x6c, 0xdb, 0xd6, 0x70, 0xb5, 1421 0xbd, 0x2d, 0xd0, 0xc6, 0x22, 0x93, 0x5a, 0x88, 1422 0x56, 0xd0, 0xaf, 0x0a, 0x94, 0x92, 0x20, 0x01, 1423 0x02, 0x1d, 0x00, 0xa4, 0x80, 0xe0, 0x47, 0x88, 1424 0x8a, 0xef, 0x2a, 0x47, 0x9d, 0x81, 0x9a, 0xbf, 1425 0x45, 0xc3, 0x6f, 0x9e, 0x2e, 0xc1, 0x44, 0x9f, 1426 0xfd, 0x79, 0xdb, 0x90, 0x3e, 0xb9, 0xb2 1427}; 1428static const ST_KAT_PARAM ecdsa_prime_key[] = { 1429 ST_KAT_PARAM_UTF8STRING(OSSL_PKEY_PARAM_GROUP_NAME, ecd_prime_curve_name), 1430 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PUB_KEY, ecd_prime_pub), 1431 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PRIV_KEY, ecd_prime_priv), 1432 ST_KAT_PARAM_END() 1433}; 1434 1435# ifndef OPENSSL_NO_EC2M 1436static const char ecd_bin_curve_name[] = "sect233r1"; 1437static const unsigned char ecd_bin_priv[] = { 1438 0x00, 0x6d, 0xd6, 0x39, 0x9d, 0x2a, 0xa2, 0xc8, 1439 0x8c, 0xfc, 0x7b, 0x80, 0x66, 0xaa, 0xe1, 0xaa, 1440 0xba, 0xee, 0xcb, 0xfd, 0xc9, 0xe5, 0x36, 0x38, 1441 0x2e, 0xf7, 0x37, 0x6d, 0xd3, 0x20 1442}; 1443static const unsigned char ecd_bin_pub[] = { 1444 0x04, 0x00, 0x06, 0xe2, 0x56, 0xf7, 0x37, 0xf9, 1445 0xea, 0xb6, 0xd1, 0x0f, 0x59, 0xfa, 0x23, 0xc3, 1446 0x93, 0xa8, 0xb2, 0x26, 0xe2, 0x5c, 0x08, 0xbe, 1447 0x63, 0x49, 0x26, 0xdc, 0xc7, 0x1e, 0x6f, 0x01, 1448 0x32, 0x3b, 0xe6, 0x54, 0x8d, 0xc1, 0x13, 0x3e, 1449 0x54, 0xb2, 0x66, 0x89, 0xb2, 0x82, 0x0a, 0x72, 1450 0x02, 0xa8, 0xe9, 0x6f, 0x54, 0xfd, 0x3a, 0x6b, 1451 0x99, 0xb6, 0x8f, 0x80, 0x46 1452}; 1453static const unsigned char ecdsa_bin_expected_sig[] = { 1454 0x30, 0x3f, 0x02, 0x1d, 0x58, 0xe9, 0xd0, 0x84, 1455 0x5c, 0xad, 0x29, 0x03, 0xf6, 0xa6, 0xbc, 0xe0, 1456 0x24, 0x6d, 0x9e, 0x79, 0x5d, 0x1e, 0xe8, 0x5a, 1457 0xc3, 0x31, 0x0a, 0xa9, 0xfb, 0xe3, 0x99, 0x54, 1458 0x11, 0x02, 0x1e, 0x00, 0xa3, 0x44, 0x28, 0xa3, 1459 0x70, 0x97, 0x98, 0x17, 0xd7, 0xa6, 0xad, 0x91, 1460 0xaf, 0x41, 0x69, 0xb6, 0x06, 0x99, 0x39, 0xc7, 1461 0x63, 0xa4, 0x6a, 0x81, 0xe4, 0x9a, 0x9d, 0x15, 1462 0x8b 1463}; 1464static const ST_KAT_PARAM ecdsa_bin_key[] = { 1465 ST_KAT_PARAM_UTF8STRING(OSSL_PKEY_PARAM_GROUP_NAME, ecd_bin_curve_name), 1466 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PUB_KEY, ecd_bin_pub), 1467 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PRIV_KEY, ecd_bin_priv), 1468 ST_KAT_PARAM_END() 1469}; 1470# endif /* OPENSSL_NO_EC2M */ 1471 1472# ifndef OPENSSL_NO_ECX 1473static const unsigned char ecx_sig_msg[] = { 1474 0x64, 0xa6, 0x5f, 0x3c, 0xde, 0xdc, 0xdd, 0x66, 1475 0x81, 0x1e, 0x29, 0x15 1476}; 1477static const unsigned char ed25519_pub[] = { 1478 0xfc, 0x51, 0xcd, 0x8e, 0x62, 0x18, 0xa1, 0xa3, 1479 0x8d, 0xa4, 0x7e, 0xd0, 0x02, 0x30, 0xf0, 0x58, 1480 0x08, 0x16, 0xed, 0x13, 0xba, 0x33, 0x03, 0xac, 1481 0x5d, 0xeb, 0x91, 0x15, 0x48, 0x90, 0x80, 0x25 1482}; 1483static const unsigned char ed25519_priv[] = { 1484 0xc5, 0xaa, 0x8d, 0xf4, 0x3f, 0x9f, 0x83, 0x7b, 1485 0xed, 0xb7, 0x44, 0x2f, 0x31, 0xdc, 0xb7, 0xb1, 1486 0x66, 0xd3, 0x85, 0x35, 0x07, 0x6f, 0x09, 0x4b, 1487 0x85, 0xce, 0x3a, 0x2e, 0x0b, 0x44, 0x58, 0xf7 1488}; 1489static const ST_KAT_PARAM ed25519_key[] = { 1490 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PUB_KEY, ed25519_pub), 1491 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PRIV_KEY, ed25519_priv), 1492 ST_KAT_PARAM_END() 1493}; 1494static const unsigned char ed25519_expected_sig[] = { 1495 0x1e, 0xf4, 0xc5, 0x61, 0xdc, 0x97, 0x9f, 0xaf, 1496 0x55, 0x6b, 0x46, 0xa1, 0xae, 0xb0, 0x64, 0x13, 1497 0x1c, 0x98, 0x09, 0x96, 0x88, 0xe0, 0x9d, 0x0e, 1498 0x4e, 0x7d, 0xc4, 0xa5, 0xa1, 0x91, 0x09, 0xca, 1499 0xd9, 0x5b, 0x4f, 0x1c, 0x80, 0x82, 0x9f, 0x65, 1500 0xc1, 0x41, 0xa4, 0xe8, 0x02, 0x05, 0x0c, 0xa6, 1501 0x7e, 0xa0, 0xfa, 0x01, 0xee, 0xeb, 0xaa, 0x91, 1502 0x62, 0xfd, 0x0f, 0x25, 0xa0, 0x2d, 0x37, 0x09 1503}; 1504 1505static const unsigned char ed448_pub[] = { 1506 0x3b, 0xa1, 0x6d, 0xa0, 0xc6, 0xf2, 0xcc, 0x1f, 1507 0x30, 0x18, 0x77, 0x40, 0x75, 0x6f, 0x5e, 0x79, 1508 0x8d, 0x6b, 0xc5, 0xfc, 0x01, 0x5d, 0x7c, 0x63, 1509 0xcc, 0x95, 0x10, 0xee, 0x3f, 0xd4, 0x4a, 0xdc, 1510 0x24, 0xd8, 0xe9, 0x68, 0xb6, 0xe4, 0x6e, 0x6f, 1511 0x94, 0xd1, 0x9b, 0x94, 0x53, 0x61, 0x72, 0x6b, 1512 0xd7, 0x5e, 0x14, 0x9e, 0xf0, 0x98, 0x17, 0xf5, 1513 0x80 1514}; 1515static const unsigned char ed448_priv[] = { 1516 0x25, 0x8c, 0xdd, 0x4a, 0xda, 0x32, 0xed, 0x9c, 1517 0x9f, 0xf5, 0x4e, 0x63, 0x75, 0x6a, 0xe5, 0x82, 1518 0xfb, 0x8f, 0xab, 0x2a, 0xc7, 0x21, 0xf2, 0xc8, 1519 0xe6, 0x76, 0xa7, 0x27, 0x68, 0x51, 0x3d, 0x93, 1520 0x9f, 0x63, 0xdd, 0xdb, 0x55, 0x60, 0x91, 0x33, 1521 0xf2, 0x9a, 0xdf, 0x86, 0xec, 0x99, 0x29, 0xdc, 1522 0xcb, 0x52, 0xc1, 0xc5, 0xfd, 0x2f, 0xf7, 0xe2, 1523 0x1b 1524}; 1525static const ST_KAT_PARAM ed448_key[] = { 1526 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PUB_KEY, ed448_pub), 1527 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PRIV_KEY, ed448_priv), 1528 ST_KAT_PARAM_END() 1529}; 1530static const unsigned char ed448_expected_sig[] = { 1531 0x7e, 0xee, 0xab, 0x7c, 0x4e, 0x50, 0xfb, 0x79, 1532 0x9b, 0x41, 0x8e, 0xe5, 0xe3, 0x19, 0x7f, 0xf6, 1533 0xbf, 0x15, 0xd4, 0x3a, 0x14, 0xc3, 0x43, 0x89, 1534 0xb5, 0x9d, 0xd1, 0xa7, 0xb1, 0xb8, 0x5b, 0x4a, 1535 0xe9, 0x04, 0x38, 0xac, 0xa6, 0x34, 0xbe, 0xa4, 1536 0x5e, 0x3a, 0x26, 0x95, 0xf1, 0x27, 0x0f, 0x07, 1537 0xfd, 0xcd, 0xf7, 0xc6, 0x2b, 0x8e, 0xfe, 0xaf, 1538 0x00, 0xb4, 0x5c, 0x2c, 0x96, 0xba, 0x45, 0x7e, 1539 0xb1, 0xa8, 0xbf, 0x07, 0x5a, 0x3d, 0xb2, 0x8e, 1540 0x5c, 0x24, 0xf6, 0xb9, 0x23, 0xed, 0x4a, 0xd7, 1541 0x47, 0xc3, 0xc9, 0xe0, 0x3c, 0x70, 0x79, 0xef, 1542 0xb8, 0x7c, 0xb1, 0x10, 0xd3, 0xa9, 0x98, 0x61, 1543 0xe7, 0x20, 0x03, 0xcb, 0xae, 0x6d, 0x6b, 0x8b, 1544 0x82, 0x7e, 0x4e, 0x6c, 0x14, 0x30, 0x64, 0xff, 1545 0x3c, 0x00 1546}; 1547# endif /* OPENSSL_NO_ECX */ 1548#endif /* OPENSSL_NO_EC */ 1549 1550#ifndef OPENSSL_NO_DSA 1551/* dsa 2048 */ 1552static const unsigned char dsa_p[] = { 1553 0xa2, 0x9b, 0x88, 0x72, 0xce, 0x8b, 0x84, 0x23, 1554 0xb7, 0xd5, 0xd2, 0x1d, 0x4b, 0x02, 0xf5, 0x7e, 1555 0x03, 0xe9, 0xe6, 0xb8, 0xa2, 0x58, 0xdc, 0x16, 1556 0x61, 0x1b, 0xa0, 0x98, 0xab, 0x54, 0x34, 0x15, 1557 0xe4, 0x15, 0xf1, 0x56, 0x99, 0x7a, 0x3e, 0xe2, 1558 0x36, 0x65, 0x8f, 0xa0, 0x93, 0x26, 0x0d, 0xe3, 1559 0xad, 0x42, 0x2e, 0x05, 0xe0, 0x46, 0xf9, 0xec, 1560 0x29, 0x16, 0x1a, 0x37, 0x5f, 0x0e, 0xb4, 0xef, 1561 0xfc, 0xef, 0x58, 0x28, 0x5c, 0x5d, 0x39, 0xed, 1562 0x42, 0x5d, 0x7a, 0x62, 0xca, 0x12, 0x89, 0x6c, 1563 0x4a, 0x92, 0xcb, 0x19, 0x46, 0xf2, 0x95, 0x2a, 1564 0x48, 0x13, 0x3f, 0x07, 0xda, 0x36, 0x4d, 0x1b, 1565 0xdf, 0x6b, 0x0f, 0x71, 0x39, 0x98, 0x3e, 0x69, 1566 0x3c, 0x80, 0x05, 0x9b, 0x0e, 0xac, 0xd1, 0x47, 1567 0x9b, 0xa9, 0xf2, 0x85, 0x77, 0x54, 0xed, 0xe7, 1568 0x5f, 0x11, 0x2b, 0x07, 0xeb, 0xbf, 0x35, 0x34, 1569 0x8b, 0xbf, 0x3e, 0x01, 0xe0, 0x2f, 0x2d, 0x47, 1570 0x3d, 0xe3, 0x94, 0x53, 0xf9, 0x9d, 0xd2, 0x36, 1571 0x75, 0x41, 0xca, 0xca, 0x3b, 0xa0, 0x11, 0x66, 1572 0x34, 0x3d, 0x7b, 0x5b, 0x58, 0xa3, 0x7b, 0xd1, 1573 0xb7, 0x52, 0x1d, 0xb2, 0xf1, 0x3b, 0x86, 0x70, 1574 0x71, 0x32, 0xfe, 0x09, 0xf4, 0xcd, 0x09, 0xdc, 1575 0x16, 0x18, 0xfa, 0x34, 0x01, 0xeb, 0xf9, 0xcc, 1576 0x7b, 0x19, 0xfa, 0x94, 0xaa, 0x47, 0x20, 0x88, 1577 0x13, 0x3d, 0x6c, 0xb2, 0xd3, 0x5c, 0x11, 0x79, 1578 0xc8, 0xc8, 0xff, 0x36, 0x87, 0x58, 0xd5, 0x07, 1579 0xd9, 0xf9, 0xa1, 0x7d, 0x46, 0xc1, 0x10, 0xfe, 1580 0x31, 0x44, 0xce, 0x9b, 0x02, 0x2b, 0x42, 0xe4, 1581 0x19, 0xeb, 0x4f, 0x53, 0x88, 0x61, 0x3b, 0xfc, 1582 0x3e, 0x26, 0x24, 0x1a, 0x43, 0x2e, 0x87, 0x06, 1583 0xbc, 0x58, 0xef, 0x76, 0x11, 0x72, 0x78, 0xde, 1584 0xab, 0x6c, 0xf6, 0x92, 0x61, 0x82, 0x91, 0xb7 1585}; 1586static const unsigned char dsa_q[] = { 1587 0xa3, 0xbf, 0xd9, 0xab, 0x78, 0x84, 0x79, 0x4e, 1588 0x38, 0x34, 0x50, 0xd5, 0x89, 0x1d, 0xc1, 0x8b, 1589 0x65, 0x15, 0x7b, 0xdc, 0xfc, 0xda, 0xc5, 0x15, 1590 0x18, 0x90, 0x28, 0x67 1591}; 1592static const unsigned char dsa_g[] = { 1593 0x68, 0x19, 0x27, 0x88, 0x69, 0xc7, 0xfd, 0x3d, 1594 0x2d, 0x7b, 0x77, 0xf7, 0x7e, 0x81, 0x50, 0xd9, 1595 0xad, 0x43, 0x3b, 0xea, 0x3b, 0xa8, 0x5e, 0xfc, 1596 0x80, 0x41, 0x5a, 0xa3, 0x54, 0x5f, 0x78, 0xf7, 1597 0x22, 0x96, 0xf0, 0x6c, 0xb1, 0x9c, 0xed, 0xa0, 1598 0x6c, 0x94, 0xb0, 0x55, 0x1c, 0xfe, 0x6e, 0x6f, 1599 0x86, 0x3e, 0x31, 0xd1, 0xde, 0x6e, 0xed, 0x7d, 1600 0xab, 0x8b, 0x0c, 0x9d, 0xf2, 0x31, 0xe0, 0x84, 1601 0x34, 0xd1, 0x18, 0x4f, 0x91, 0xd0, 0x33, 0x69, 1602 0x6b, 0xb3, 0x82, 0xf8, 0x45, 0x5e, 0x98, 0x88, 1603 0xf5, 0xd3, 0x1d, 0x47, 0x84, 0xec, 0x40, 0x12, 1604 0x02, 0x46, 0xf4, 0xbe, 0xa6, 0x17, 0x94, 0xbb, 1605 0xa5, 0x86, 0x6f, 0x09, 0x74, 0x64, 0x63, 0xbd, 1606 0xf8, 0xe9, 0xe1, 0x08, 0xcd, 0x95, 0x29, 0xc3, 1607 0xd0, 0xf6, 0xdf, 0x80, 0x31, 0x6e, 0x2e, 0x70, 1608 0xaa, 0xeb, 0x1b, 0x26, 0xcd, 0xb8, 0xad, 0x97, 1609 0xbc, 0x3d, 0x28, 0x7e, 0x0b, 0x8d, 0x61, 0x6c, 1610 0x42, 0xe6, 0x5b, 0x87, 0xdb, 0x20, 0xde, 0xb7, 1611 0x00, 0x5b, 0xc4, 0x16, 0x74, 0x7a, 0x64, 0x70, 1612 0x14, 0x7a, 0x68, 0xa7, 0x82, 0x03, 0x88, 0xeb, 1613 0xf4, 0x4d, 0x52, 0xe0, 0x62, 0x8a, 0xf9, 0xcf, 1614 0x1b, 0x71, 0x66, 0xd0, 0x34, 0x65, 0xf3, 0x5a, 1615 0xcc, 0x31, 0xb6, 0x11, 0x0c, 0x43, 0xda, 0xbc, 1616 0x7c, 0x5d, 0x59, 0x1e, 0x67, 0x1e, 0xaf, 0x7c, 1617 0x25, 0x2c, 0x1c, 0x14, 0x53, 0x36, 0xa1, 0xa4, 1618 0xdd, 0xf1, 0x32, 0x44, 0xd5, 0x5e, 0x83, 0x56, 1619 0x80, 0xca, 0xb2, 0x53, 0x3b, 0x82, 0xdf, 0x2e, 1620 0xfe, 0x55, 0xec, 0x18, 0xc1, 0xe6, 0xcd, 0x00, 1621 0x7b, 0xb0, 0x89, 0x75, 0x8b, 0xb1, 0x7c, 0x2c, 1622 0xbe, 0x14, 0x44, 0x1b, 0xd0, 0x93, 0xae, 0x66, 1623 0xe5, 0x97, 0x6d, 0x53, 0x73, 0x3f, 0x4f, 0xa3, 1624 0x26, 0x97, 0x01, 0xd3, 0x1d, 0x23, 0xd4, 0x67 1625}; 1626static const unsigned char dsa_pub[] = { 1627 0xa0, 0x12, 0xb3, 0xb1, 0x70, 0xb3, 0x07, 0x22, 1628 0x79, 0x57, 0xb7, 0xca, 0x20, 0x61, 0xa8, 0x16, 1629 0xac, 0x7a, 0x2b, 0x3d, 0x9a, 0xe9, 0x95, 0xa5, 1630 0x11, 0x9c, 0x38, 0x5b, 0x60, 0x3b, 0xf6, 0xf6, 1631 0xc5, 0xde, 0x4d, 0xc5, 0xec, 0xb5, 0xdf, 0xa4, 1632 0xa4, 0x1c, 0x68, 0x66, 0x2e, 0xb2, 0x5b, 0x63, 1633 0x8b, 0x7e, 0x26, 0x20, 0xba, 0x89, 0x8d, 0x07, 1634 0xda, 0x6c, 0x49, 0x91, 0xe7, 0x6c, 0xc0, 0xec, 1635 0xd1, 0xad, 0x34, 0x21, 0x07, 0x70, 0x67, 0xe4, 1636 0x7c, 0x18, 0xf5, 0x8a, 0x92, 0xa7, 0x2a, 0xd4, 1637 0x31, 0x99, 0xec, 0xb7, 0xbd, 0x84, 0xe7, 0xd3, 1638 0xaf, 0xb9, 0x01, 0x9f, 0x0e, 0x9d, 0xd0, 0xfb, 1639 0xaa, 0x48, 0x73, 0x00, 0xb1, 0x30, 0x81, 0xe3, 1640 0x3c, 0x90, 0x28, 0x76, 0x43, 0x6f, 0x7b, 0x03, 1641 0xc3, 0x45, 0x52, 0x84, 0x81, 0xd3, 0x62, 0x81, 1642 0x5e, 0x24, 0xfe, 0x59, 0xda, 0xc5, 0xac, 0x34, 1643 0x66, 0x0d, 0x4c, 0x8a, 0x76, 0xcb, 0x99, 0xa7, 1644 0xc7, 0xde, 0x93, 0xeb, 0x95, 0x6c, 0xd6, 0xbc, 1645 0x88, 0xe5, 0x8d, 0x90, 0x10, 0x34, 0x94, 0x4a, 1646 0x09, 0x4b, 0x01, 0x80, 0x3a, 0x43, 0xc6, 0x72, 1647 0xb9, 0x68, 0x8c, 0x0e, 0x01, 0xd8, 0xf4, 0xfc, 1648 0x91, 0xc6, 0x2a, 0x3f, 0x88, 0x02, 0x1f, 0x7b, 1649 0xd6, 0xa6, 0x51, 0xb1, 0xa8, 0x8f, 0x43, 0xaa, 1650 0x4e, 0xf2, 0x76, 0x53, 0xd1, 0x2b, 0xf8, 0xb7, 1651 0x09, 0x9f, 0xdf, 0x6b, 0x46, 0x10, 0x82, 0xf8, 1652 0xe9, 0x39, 0x10, 0x7b, 0xfd, 0x2f, 0x72, 0x10, 1653 0x08, 0x7d, 0x32, 0x6c, 0x37, 0x52, 0x00, 0xf1, 1654 0xf5, 0x1e, 0x7e, 0x74, 0xa3, 0x41, 0x31, 0x90, 1655 0x1b, 0xcd, 0x08, 0x63, 0x52, 0x1f, 0xf8, 0xd6, 1656 0x76, 0xc4, 0x85, 0x81, 0x86, 0x87, 0x36, 0xc5, 1657 0xe5, 0x1b, 0x16, 0xa4, 0xe3, 0x92, 0x15, 0xea, 1658 0x0b, 0x17, 0xc4, 0x73, 0x59, 0x74, 0xc5, 0x16 1659}; 1660static const unsigned char dsa_expected_sig[] = { 1661 0x30, 0x3c, 0x02, 0x1c, 0x69, 0xc6, 0xd6, 0x9e, 1662 0x2b, 0x91, 0xea, 0x72, 0xb3, 0x8b, 0x7c, 0x57, 1663 0x48, 0x75, 0xb7, 0x65, 0xc0, 0xb4, 0xf7, 0xbb, 1664 0x08, 0xa4, 0x95, 0x77, 0xfc, 0xa7, 0xed, 0x31, 1665 0x02, 0x1c, 0x4c, 0x2c, 0xff, 0xc6, 0x55, 0xeb, 1666 0x8f, 0xa7, 0x4f, 0x27, 0xd8, 0xec, 0xfd, 0x62, 1667 0x73, 0xf2, 0xd1, 0x55, 0xa5, 0xf0, 0x41, 0x68, 1668 0x34, 0x8d, 0x9e, 0x88, 0x08, 0x06 1669}; 1670 1671static const ST_KAT_PARAM dsa_key[] = { 1672 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_FFC_P, dsa_p), 1673 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_FFC_Q, dsa_q), 1674 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_FFC_G, dsa_g), 1675 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PUB_KEY, dsa_pub), 1676 ST_KAT_PARAM_END() 1677}; 1678#endif /* OPENSSL_NO_DSA */ 1679 1680#ifndef OPENSSL_NO_ML_DSA 1681static const unsigned char ml_dsa_65_pub_key[] = { 1682 0x3b, 0x5c, 0xb0, 0x79, 0xd2, 0xce, 0x76, 0x2b, 1683 0x3b, 0x95, 0x7c, 0x26, 0x69, 0x8f, 0xe7, 0x01, 1684 0xb9, 0x6b, 0x50, 0xa3, 0x2c, 0x73, 0x67, 0xcf, 1685 0x9e, 0xf4, 0xb8, 0x7d, 0xe3, 0xaf, 0x27, 0x77, 1686 0xc6, 0x7c, 0x34, 0xb7, 0x30, 0x4d, 0x01, 0xa4, 1687 0xaa, 0xce, 0x16, 0x7c, 0x13, 0x2b, 0x30, 0x6c, 1688 0x88, 0x31, 0xe4, 0x90, 0xf5, 0xc2, 0x80, 0xf5, 1689 0xe8, 0xb9, 0x2d, 0x7a, 0x83, 0x17, 0xfc, 0xbb, 1690 0x13, 0x6f, 0x18, 0x75, 0x5b, 0x40, 0x39, 0x2d, 1691 0x47, 0x56, 0x15, 0xc7, 0x1c, 0x6e, 0x9a, 0x95, 1692 0x7b, 0x6b, 0x77, 0x9f, 0x86, 0x38, 0x0e, 0xee, 1693 0xc0, 0x82, 0x6c, 0x3c, 0xae, 0xc0, 0xcf, 0x5a, 1694 0x85, 0x49, 0xb1, 0x0c, 0x2d, 0x0e, 0x51, 0x73, 1695 0xf0, 0xe7, 0xad, 0x3b, 0xa7, 0x3f, 0xf5, 0x75, 1696 0xb9, 0xb4, 0x63, 0xb9, 0xf0, 0x0a, 0xf4, 0x29, 1697 0x90, 0x20, 0x72, 0x46, 0x8c, 0x7a, 0xaa, 0x86, 1698 0xb7, 0x4e, 0xa7, 0x65, 0x23, 0xef, 0xec, 0x46, 1699 0x67, 0x02, 0xf1, 0xbb, 0x88, 0xc7, 0xa4, 0xfc, 1700 0x66, 0x52, 0x07, 0x67, 0x68, 0xa2, 0x72, 0xe8, 1701 0x8a, 0x53, 0x97, 0xe6, 0x89, 0x96, 0x95, 0x9e, 1702 0x6a, 0xe9, 0xa4, 0x7d, 0x19, 0x19, 0x5f, 0xb4, 1703 0x77, 0x52, 0x17, 0xd6, 0xf2, 0xea, 0x7f, 0xfc, 1704 0x5c, 0xd5, 0x18, 0x16, 0x8c, 0xc2, 0x2e, 0x31, 1705 0xf8, 0x98, 0x4b, 0x72, 0xa1, 0x80, 0xb6, 0x5c, 1706 0x32, 0x19, 0x2f, 0xe0, 0xae, 0x74, 0xf4, 0xc4, 1707 0x0a, 0xe0, 0x54, 0x52, 0x46, 0x9e, 0xf3, 0xb9, 1708 0x6c, 0x56, 0xd1, 0xe8, 0x99, 0x29, 0x39, 0x95, 1709 0x30, 0xa2, 0x6a, 0xc6, 0x32, 0x8a, 0xa6, 0x02, 1710 0x6a, 0x39, 0x2e, 0x13, 0x20, 0xbc, 0xf8, 0x7a, 1711 0x09, 0xb6, 0xa7, 0xd1, 0x39, 0xa5, 0x12, 0x02, 1712 0x81, 0x47, 0x8c, 0xc0, 0x1e, 0xfd, 0xf3, 0x28, 1713 0xe5, 0x34, 0xec, 0xf0, 0xfc, 0x3f, 0x22, 0x16, 1714 0xd2, 0xfe, 0xf0, 0xca, 0xaa, 0x6f, 0x82, 0xdd, 1715 0xd6, 0x83, 0xaf, 0xf9, 0xeb, 0x1d, 0xa8, 0x45, 1716 0x39, 0x63, 0xa5, 0xde, 0xee, 0x7d, 0x91, 0xe3, 1717 0xaa, 0xcc, 0x07, 0x92, 0xce, 0x50, 0xfd, 0xe4, 1718 0xa8, 0x50, 0x91, 0xd5, 0xec, 0xc1, 0x1b, 0x57, 1719 0x92, 0x37, 0x68, 0xf8, 0xd6, 0x32, 0x55, 0xba, 1720 0x65, 0xae, 0xb6, 0xc3, 0x9f, 0x6c, 0x18, 0xc5, 1721 0x12, 0x17, 0x9a, 0x04, 0x29, 0xab, 0x14, 0x94, 1722 0xbb, 0x13, 0x79, 0x5e, 0xb9, 0xf0, 0x62, 0x03, 1723 0xe0, 0xa4, 0x91, 0xba, 0x81, 0x4b, 0xaa, 0xf1, 1724 0x82, 0x47, 0x83, 0x43, 0x5f, 0x1e, 0x2d, 0x48, 1725 0x40, 0x56, 0xe4, 0x29, 0x79, 0x01, 0xd5, 0x89, 1726 0xaf, 0xa4, 0x56, 0x9e, 0x38, 0x62, 0x03, 0xa0, 1727 0xe7, 0x9f, 0x08, 0x1f, 0xca, 0xd4, 0x31, 0x48, 1728 0xf6, 0x68, 0xe0, 0xcc, 0x28, 0xff, 0x06, 0x97, 1729 0x67, 0x4b, 0x70, 0x78, 0xa0, 0x2a, 0xf9, 0x46, 1730 0x80, 0x6d, 0x37, 0xfb, 0xb3, 0x17, 0x12, 0xf0, 1731 0x95, 0xc7, 0xee, 0x31, 0x54, 0x75, 0xdf, 0x2a, 1732 0xa8, 0x7d, 0xff, 0x97, 0xbb, 0x45, 0x49, 0x55, 1733 0xd5, 0xac, 0x9c, 0x6f, 0x0e, 0xc3, 0x94, 0x96, 1734 0xc4, 0x9e, 0x9c, 0x45, 0x31, 0xcb, 0x23, 0xed, 1735 0x21, 0xf1, 0xfe, 0xe9, 0xf9, 0x8c, 0xb6, 0x8e, 1736 0x72, 0x6e, 0xdd, 0x37, 0x1c, 0xc7, 0xd6, 0x6b, 1737 0x36, 0x35, 0xa0, 0x67, 0x54, 0x00, 0x65, 0x2c, 1738 0xc8, 0xa4, 0xa0, 0x9e, 0x72, 0xd7, 0xc9, 0x3c, 1739 0x8c, 0x78, 0x1a, 0xf8, 0x80, 0xad, 0xc4, 0x99, 1740 0xc7, 0x35, 0x4e, 0x89, 0x3b, 0x4f, 0xa6, 0x9d, 1741 0x5d, 0xce, 0x66, 0x4d, 0x82, 0xef, 0x47, 0x73, 1742 0xa8, 0xc5, 0x14, 0x20, 0xdd, 0x57, 0x92, 0x10, 1743 0x95, 0x8a, 0xe1, 0xac, 0x82, 0xec, 0x39, 0xe7, 1744 0x2c, 0xa6, 0xfd, 0x50, 0x68, 0x0c, 0x3e, 0xcf, 1745 0xbc, 0xc5, 0x12, 0xfe, 0x30, 0xc8, 0xb7, 0xb4, 1746 0x84, 0xd8, 0x1d, 0x67, 0x54, 0x9d, 0x20, 0x49, 1747 0xa5, 0xfd, 0xf9, 0x18, 0xef, 0xc2, 0xd2, 0xcd, 1748 0xb7, 0x54, 0x2b, 0x31, 0x12, 0xf9, 0xaa, 0x8e, 1749 0x0a, 0x29, 0x0c, 0x37, 0xd2, 0x7c, 0xcd, 0xc5, 1750 0x0b, 0x98, 0x25, 0x97, 0x0b, 0x5a, 0xf7, 0x07, 1751 0x91, 0x98, 0xd1, 0x42, 0xdf, 0xc4, 0xf9, 0x42, 1752 0x97, 0xda, 0x20, 0xf4, 0x88, 0xe1, 0x6b, 0xd4, 1753 0x85, 0xf5, 0x1d, 0xca, 0x2a, 0xba, 0x30, 0xc5, 1754 0xdf, 0x9d, 0x4d, 0xb8, 0xb0, 0x30, 0x54, 0x61, 1755 0xcf, 0x91, 0x6f, 0x90, 0xa5, 0x25, 0x05, 0x9b, 1756 0x2b, 0x3e, 0x13, 0xcd, 0xcd, 0x40, 0x59, 0x7c, 1757 0x92, 0x9b, 0x51, 0x81, 0x0d, 0x58, 0x32, 0x0a, 1758 0x43, 0xbd, 0x01, 0xb4, 0xb8, 0x0b, 0xd5, 0xee, 1759 0x0d, 0x67, 0x70, 0x59, 0xd7, 0x47, 0x4f, 0xe5, 1760 0x84, 0x07, 0x75, 0x3e, 0x54, 0xfb, 0x5d, 0xd1, 1761 0x3f, 0x72, 0x6e, 0xae, 0xf9, 0x4b, 0x7b, 0x57, 1762 0xe0, 0xde, 0x8b, 0x8b, 0x12, 0x1b, 0x10, 0x3b, 1763 0x5e, 0x17, 0xd1, 0x72, 0x18, 0x3d, 0xff, 0xc6, 1764 0x83, 0xa5, 0xaf, 0xf9, 0x30, 0xae, 0xb7, 0x47, 1765 0x46, 0x5d, 0xac, 0xba, 0x35, 0x04, 0x35, 0x0b, 1766 0x42, 0x48, 0x7c, 0xa1, 0x00, 0x1a, 0xea, 0xea, 1767 0x5f, 0x93, 0x2b, 0xb7, 0xe5, 0x8f, 0x91, 0x3c, 1768 0x00, 0x98, 0x51, 0x40, 0xee, 0x11, 0x50, 0x70, 1769 0x40, 0xe4, 0x28, 0xd4, 0x79, 0x2d, 0xcd, 0x82, 1770 0xaf, 0x3f, 0xb2, 0xfc, 0x96, 0x8d, 0xbe, 0x79, 1771 0xa3, 0xcd, 0xac, 0x35, 0x4b, 0x5e, 0xb4, 0x81, 1772 0x0e, 0x6a, 0xde, 0x1f, 0x7e, 0xb0, 0x37, 0x3e, 1773 0xdc, 0xe0, 0x21, 0xcc, 0x9f, 0x90, 0x26, 0xb6, 1774 0x8a, 0x1d, 0xb3, 0x1e, 0xec, 0x7a, 0x88, 0x28, 1775 0x95, 0xe2, 0xc2, 0x1d, 0x07, 0xb1, 0xfa, 0xc6, 1776 0x21, 0x1b, 0x5e, 0x54, 0x7b, 0x37, 0x0e, 0x63, 1777 0xff, 0xdd, 0x70, 0xf9, 0xea, 0x2f, 0x2d, 0x98, 1778 0xe1, 0xbe, 0x37, 0xd0, 0x1f, 0x45, 0x5a, 0x63, 1779 0xad, 0x44, 0xbc, 0x5f, 0xc6, 0x23, 0x8a, 0xac, 1780 0x12, 0x71, 0xd5, 0xa2, 0x8b, 0xfc, 0x97, 0xbb, 1781 0x00, 0x4b, 0xd7, 0x09, 0xa6, 0xaf, 0x40, 0x08, 1782 0x6c, 0x8d, 0x10, 0x4a, 0x01, 0x34, 0xc1, 0x2c, 1783 0x92, 0x30, 0x0a, 0x85, 0x8f, 0x3f, 0x08, 0xdd, 1784 0xff, 0x9c, 0x10, 0xd1, 0x03, 0x03, 0x84, 0x1f, 1785 0xf8, 0x4e, 0xf2, 0xe3, 0xd1, 0xd3, 0xb9, 0xdf, 1786 0xfc, 0x97, 0x1c, 0xcf, 0x8a, 0x29, 0xe6, 0x59, 1787 0x04, 0xe2, 0x87, 0x27, 0xbb, 0xb9, 0x96, 0xd0, 1788 0x20, 0x2e, 0x91, 0x48, 0xaa, 0xbf, 0x53, 0x4a, 1789 0x34, 0xb5, 0x0e, 0x11, 0xce, 0xf8, 0x65, 0xa6, 1790 0x0d, 0x45, 0xda, 0xbf, 0x6a, 0xfb, 0x81, 0xe4, 1791 0x7c, 0x8c, 0xa0, 0x4b, 0x00, 0x1b, 0xd7, 0x73, 1792 0x61, 0x80, 0xc0, 0x6b, 0x60, 0xde, 0xf3, 0x32, 1793 0xae, 0x62, 0x35, 0x66, 0xdd, 0xde, 0x53, 0x61, 1794 0x86, 0xe9, 0x44, 0xf3, 0x01, 0x7b, 0xaa, 0xe7, 1795 0x31, 0xd4, 0x5b, 0x06, 0x52, 0x0f, 0xf4, 0x90, 1796 0x5c, 0x82, 0x3e, 0x12, 0x28, 0x88, 0x7f, 0xfc, 1797 0xb8, 0xee, 0x17, 0x34, 0x4e, 0xc3, 0x2a, 0xfb, 1798 0x84, 0x1b, 0x0f, 0xba, 0x51, 0x64, 0x96, 0x22, 1799 0x0d, 0x88, 0x9b, 0xf2, 0x72, 0x04, 0x55, 0x44, 1800 0x6a, 0x14, 0x2b, 0xa0, 0xc2, 0xbe, 0x9e, 0x7b, 1801 0x48, 0x32, 0xa7, 0xf6, 0x11, 0xae, 0x60, 0xfb, 1802 0xf8, 0x38, 0x67, 0x16, 0xdf, 0xdf, 0x46, 0x96, 1803 0xd7, 0x6c, 0x39, 0xa2, 0xad, 0xf7, 0xb7, 0x78, 1804 0x32, 0x2c, 0xba, 0xae, 0x33, 0x5a, 0x88, 0x4b, 1805 0x40, 0x1f, 0x88, 0xcd, 0xe7, 0x8f, 0x50, 0x5e, 1806 0xd8, 0x80, 0x82, 0x7b, 0x46, 0xc7, 0x07, 0x71, 1807 0x4f, 0x3b, 0xca, 0x9d, 0x73, 0x7c, 0xdb, 0xeb, 1808 0x4c, 0x37, 0xdd, 0xb4, 0xb8, 0x61, 0xf3, 0xdf, 1809 0xb2, 0xb5, 0x34, 0x27, 0xec, 0xeb, 0xba, 0xcc, 1810 0xdc, 0xe9, 0xde, 0x47, 0x2e, 0xe9, 0x3b, 0xa1, 1811 0x36, 0xf1, 0x66, 0xdf, 0xc8, 0x70, 0x7f, 0x39, 1812 0x82, 0xb3, 0x8c, 0x47, 0x9a, 0x45, 0x59, 0x2e, 1813 0x30, 0x9b, 0xaf, 0x7c, 0xad, 0x43, 0x38, 0x6e, 1814 0x05, 0x7d, 0x8b, 0xac, 0x5f, 0x70, 0x63, 0xeb, 1815 0x85, 0xee, 0xab, 0xa4, 0x57, 0x1d, 0x63, 0xac, 1816 0x48, 0x45, 0x74, 0xca, 0x0c, 0xa8, 0x65, 0x05, 1817 0x1a, 0x47, 0xa1, 0x2f, 0x4b, 0x96, 0x26, 0x9e, 1818 0xee, 0xec, 0x37, 0x57, 0xbf, 0xa0, 0x2b, 0x75, 1819 0xf5, 0x9b, 0xb5, 0x1d, 0x12, 0x8a, 0x61, 0x9c, 1820 0x8d, 0x2a, 0x7e, 0xee, 0x05, 0x2b, 0x85, 0x7c, 1821 0x6f, 0x34, 0xc4, 0xcd, 0xd5, 0xd0, 0xac, 0xf9, 1822 0x79, 0x24, 0xe7, 0x0f, 0x41, 0x95, 0xe2, 0x9a, 1823 0x22, 0x32, 0xa5, 0x98, 0x2e, 0x82, 0xc0, 0x07, 1824 0xf4, 0x74, 0x68, 0x00, 0xf9, 0x35, 0x5e, 0x12, 1825 0xfe, 0xa2, 0x0e, 0x15, 0x96, 0x83, 0x84, 0x31, 1826 0xc4, 0x25, 0xda, 0x7a, 0xec, 0x07, 0x15, 0xe4, 1827 0x7d, 0xc5, 0xf5, 0xe1, 0xc5, 0xba, 0x9a, 0x59, 1828 0x76, 0xae, 0x4e, 0x54, 0x27, 0x5e, 0xa9, 0x0d, 1829 0xa0, 0xd3, 0xcd, 0x99, 0x39, 0x76, 0x6d, 0x58, 1830 0xdf, 0x8a, 0xa9, 0x9e, 0x21, 0x22, 0x48, 0x7c, 1831 0x0c, 0x13, 0xfa, 0x86, 0x63, 0x74, 0x92, 0xf4, 1832 0xe5, 0x5d, 0xbf, 0xe4, 0x2d, 0xd7, 0xa1, 0xe3, 1833 0x0f, 0xc6, 0x3e, 0x82, 0xa0, 0xcc, 0xfa, 0x38, 1834 0x55, 0x36, 0x9b, 0x22, 0xd0, 0xb8, 0x7f, 0x3f, 1835 0x0f, 0x35, 0x01, 0xf9, 0x6f, 0xa6, 0x51, 0x77, 1836 0x21, 0xb7, 0x7a, 0x81, 0xca, 0x83, 0x6b, 0xec, 1837 0xa7, 0x71, 0x12, 0x6d, 0x22, 0x78, 0xb1, 0xc8, 1838 0x37, 0xda, 0x1d, 0xd1, 0x9c, 0xa5, 0x6c, 0xfa, 1839 0xd3, 0x4b, 0x87, 0x39, 0x6f, 0x59, 0xe1, 0xec, 1840 0x4a, 0xe5, 0x0e, 0x72, 0x2b, 0x31, 0x18, 0xd9, 1841 0x54, 0x6a, 0x4c, 0xc3, 0xe0, 0x58, 0x3b, 0xd8, 1842 0xe8, 0x65, 0xc1, 0x98, 0xed, 0x64, 0x7b, 0xb1, 1843 0xee, 0xa9, 0x54, 0x95, 0x37, 0x98, 0x68, 0xca, 1844 0x83, 0xef, 0xc5, 0x1b, 0x23, 0x71, 0x5c, 0x1a, 1845 0xe6, 0xc0, 0xce, 0x2e, 0x16, 0x59, 0x79, 0xf4, 1846 0x94, 0x43, 0xd8, 0xb1, 0x2e, 0xe3, 0xb9, 0xa0, 1847 0x95, 0x80, 0x66, 0xdd, 0x1d, 0xdd, 0x0d, 0x78, 1848 0x9d, 0xc3, 0x91, 0x60, 0x16, 0x8b, 0xc5, 0x39, 1849 0xad, 0xdb, 0xa3, 0xc1, 0xd2, 0x8d, 0xa0, 0x78, 1850 0x75, 0x68, 0xa6, 0xb9, 0x15, 0x57, 0x0b, 0x06, 1851 0x64, 0x55, 0xd7, 0x07, 0x53, 0xf9, 0x8b, 0xd9, 1852 0x97, 0x46, 0xca, 0x04, 0x95, 0xd4, 0x3c, 0xd3, 1853 0x8f, 0x0a, 0x53, 0x27, 0xe6, 0xd4, 0xb4, 0x7b, 1854 0x70, 0x12, 0x12, 0xc5, 0x14, 0xa0, 0x53, 0xe5, 1855 0xd4, 0x30, 0xaa, 0xcc, 0xec, 0x03, 0x0a, 0x36, 1856 0x21, 0x9f, 0x81, 0x16, 0x6d, 0x1d, 0x53, 0x6e, 1857 0x08, 0xae, 0xf7, 0x05, 0xd9, 0x73, 0x5a, 0x45, 1858 0x3a, 0x52, 0x3e, 0xeb, 0x67, 0x49, 0xe1, 0x1a, 1859 0x8a, 0x4c, 0xd9, 0x83, 0x64, 0xd8, 0x16, 0x37, 1860 0x1c, 0x6b, 0x1c, 0x0d, 0x8f, 0x6a, 0xbf, 0x21, 1861 0xf1, 0x4f, 0x4c, 0x55, 0x6f, 0xe0, 0x5c, 0xa7, 1862 0xb1, 0x7b, 0x57, 0xa9, 0xa2, 0xb4, 0x9d, 0x53, 1863 0x7f, 0x0f, 0xb0, 0x21, 0x95, 0x70, 0x3a, 0x0d, 1864 0xa2, 0xc1, 0x52, 0x26, 0xad, 0xa7, 0x48, 0x66, 1865 0x2a, 0xfc, 0xaa, 0xaf, 0x25, 0x02, 0x58, 0x80, 1866 0xbe, 0xe7, 0xe4, 0x2a, 0x50, 0xe5, 0x46, 0x13, 1867 0xaa, 0x57, 0x0e, 0x6e, 0xee, 0xa9, 0x9e, 0x19, 1868 0xa3, 0x92, 0x8e, 0xc6, 0x3d, 0x76, 0xbb, 0x12, 1869 0xe2, 0x78, 0x77, 0x99, 0x6a, 0x06, 0xc4, 0x45, 1870 0x1f, 0x45, 0xe1, 0xf6, 0x65, 0x1f, 0xba, 0xe4, 1871 0xf6, 0xca, 0xa9, 0x62, 0xa9, 0x2c, 0x3a, 0x2d, 1872 0x8d, 0x34, 0xe2, 0x32, 0x6e, 0x4a, 0x52, 0x9f, 1873 0x3d, 0xcf, 0xab, 0xe8, 0x63, 0x66, 0x3f, 0x06, 1874 0xa3, 0xaa, 0xd5, 0xcb, 0x5d, 0x41, 0xb8, 0xe7, 1875 0x0a, 0x6b, 0x45, 0x90, 0x3a, 0xf0, 0xe5, 0x7f, 1876 0x7e, 0xde, 0x68, 0x20, 0x5e, 0x5a, 0x31, 0x3a, 1877 0x5c, 0x25, 0xb3, 0x82, 0xc7, 0x1e, 0x7d, 0x4d, 1878 0xd0, 0x23, 0x9f, 0x22, 0x1a, 0x54, 0x0b, 0xe4, 1879 0x3c, 0x1c, 0xc5, 0x24, 0x39, 0x4d, 0x96, 0x90, 1880 0xce, 0xc9, 0x3a, 0x07, 0x45, 0x01, 0x9e, 0xb6, 1881 0x55, 0x1b, 0xdc, 0xe0, 0x3b, 0xe8, 0x92, 0x57, 1882 0x43, 0x12, 0x9b, 0x11, 0x3f, 0x81, 0x5a, 0xca, 1883 0xc5, 0x85, 0x39, 0x25, 0x6d, 0xe4, 0x30, 0xef, 1884 0x83, 0x21, 0xed, 0x9c, 0xb3, 0xcf, 0x10, 0xe6, 1885 0xa1, 0x46, 0x10, 0x9a, 0x7b, 0xaf, 0x5f, 0x75, 1886 0x99, 0x62, 0xc1, 0xf4, 0x2c, 0x28, 0x0a, 0x8a, 1887 0xc7, 0xd2, 0xb4, 0x75, 0xb9, 0x66, 0x70, 0x9a, 1888 0xaf, 0xe3, 0xf1, 0x2f, 0xf2, 0xb0, 0x59, 0x9c, 1889 0x1e, 0x1a, 0xbd, 0xa9, 0x15, 0x55, 0x95, 0x4c, 1890 0x5b, 0x78, 0x0b, 0x2c, 0x00, 0xbb, 0xf9, 0x8b, 1891 0xeb, 0x72, 0x4f, 0xfb, 0xa4, 0x3a, 0xa0, 0x04, 1892 0x45, 0x32, 0x02, 0x6c, 0x16, 0x52, 0x3f, 0x4a, 1893 0x0a, 0x77, 0x64, 0xf4, 0x74, 0xed, 0x60, 0x6b, 1894 0x5e, 0x43, 0xa7, 0xe3, 0x84, 0x7e, 0xda, 0xf0, 1895 0xb1, 0x9e, 0x6d, 0x90, 0x9c, 0x32, 0xae, 0xba, 1896 0x7c, 0xfb, 0x72, 0x22, 0x27, 0x9c, 0xe1, 0x85, 1897 0xe1, 0xf6, 0x22, 0x4c, 0x3c, 0x4a, 0xd6, 0xed, 1898 0x4c, 0xa7, 0x79, 0x59, 0xb5, 0x5b, 0x91, 0x65, 1899 0x3f, 0x93, 0x97, 0x8d, 0xd7, 0xd0, 0xab, 0x17, 1900 0x2f, 0x13, 0x74, 0x53, 0x69, 0x74, 0xf8, 0x6b, 1901 0x39, 0x5c, 0x64, 0x5b, 0x3d, 0x75, 0xca, 0x85, 1902 0x0e, 0xda, 0x0f, 0x01, 0x34, 0xa3, 0x67, 0x8e, 1903 0x26, 0x6f, 0x26, 0x3c, 0xd0, 0xd9, 0xae, 0xe8, 1904 0x52, 0x13, 0x7f, 0xf8, 0x69, 0x62, 0xfc, 0x9a, 1905 0xc0, 0x0c, 0x66, 0x2e, 0x57, 0x21, 0x75, 0xb0, 1906 0xb3, 0x8c, 0xf6, 0x97, 0x44, 0x46, 0x65, 0x15, 1907 0x79, 0xd5, 0x6b, 0x68, 0x96, 0x47, 0xc1, 0xba, 1908 0x75, 0x46, 0x87, 0x76, 0x7d, 0x2d, 0xac, 0xf3, 1909 0x16, 0xae, 0xfb, 0x7e, 0x41, 0xe4, 0xae, 0x15, 1910 0xc2, 0x51, 0x69, 0x71, 0x0b, 0x63, 0x20, 0x6a, 1911 0xbd, 0xad, 0xce, 0x2a, 0x94, 0xac, 0xcf, 0x15, 1912 0x4e, 0xdc, 0x8e, 0x2a, 0x48, 0xed, 0xb3, 0x48, 1913 0x95, 0xf4, 0x41, 0xf3, 0x52, 0xef, 0x62, 0x90, 1914 0x10, 0x30, 0x42, 0xec, 0xf9, 0x30, 0x25, 0xc3, 1915 0xc5, 0x47, 0x76, 0xb5, 0x37, 0xeb, 0x9e, 0x87, 1916 0xbe, 0x5c, 0x24, 0xa5, 0x34, 0xdd, 0x92, 0xa1, 1917 0x20, 0x7d, 0xa7, 0x94, 0xa2, 0x67, 0x26, 0x70, 1918 0xfe, 0xc9, 0x3f, 0x21, 0xd1, 0xc2, 0x5a, 0xb1, 1919 0xaa, 0xac, 0x14, 0x1a, 0xe4, 0xdb, 0x71, 0x7e, 1920 0x9c, 0xc2, 0x52, 0x59, 0xc9, 0x58, 0xca, 0x88, 1921 0x71, 0x4f, 0x90, 0xb1, 0xbb, 0xac, 0x80, 0x53, 1922 0x21, 0xfb, 0xff, 0xfd, 0x1e, 0x9f, 0xc0, 0x59, 1923 0x8d, 0x80, 0x8e, 0x85, 0xa9, 0x3b, 0xd3, 0x20, 1924 0x3b, 0x91, 0x16, 0x49, 0xb2, 0x2a, 0xa4, 0xe2, 1925 0x30, 0xb2, 0x76, 0xf6, 0x92, 0x71, 0x37, 0x1b 1926}; 1927 1928static const unsigned char ml_dsa_65_priv_key[] = { 1929 0x3b, 0x5c, 0xb0, 0x79, 0xd2, 0xce, 0x76, 0x2b, 1930 0x3b, 0x95, 0x7c, 0x26, 0x69, 0x8f, 0xe7, 0x01, 1931 0xb9, 0x6b, 0x50, 0xa3, 0x2c, 0x73, 0x67, 0xcf, 1932 0x9e, 0xf4, 0xb8, 0x7d, 0xe3, 0xaf, 0x27, 0x77, 1933 0x39, 0x3e, 0xac, 0x91, 0xa1, 0xfb, 0xed, 0xf7, 1934 0x52, 0x0a, 0x4f, 0x77, 0xb2, 0x57, 0x7c, 0x65, 1935 0x05, 0x6e, 0x76, 0x3d, 0x28, 0xf4, 0x3a, 0x88, 1936 0x49, 0x33, 0x7d, 0x30, 0x17, 0x21, 0x5a, 0xc0, 1937 0x4b, 0x03, 0x74, 0x65, 0x6d, 0xbb, 0xfe, 0x8e, 1938 0x0b, 0x8b, 0xb4, 0x42, 0xce, 0xc1, 0xdd, 0x11, 1939 0xb1, 0x8f, 0x31, 0x06, 0x0b, 0xeb, 0xdf, 0xb3, 1940 0x11, 0x12, 0x19, 0x22, 0x34, 0xd7, 0xaa, 0xf2, 1941 0x17, 0xf0, 0x2e, 0x22, 0xef, 0x68, 0x0c, 0x8f, 1942 0xc7, 0x42, 0x0b, 0xd6, 0x88, 0xd8, 0x3b, 0xa7, 1943 0x22, 0xc5, 0x4e, 0x1a, 0xf2, 0x60, 0x85, 0x24, 1944 0x75, 0x85, 0x49, 0x17, 0x1b, 0xd4, 0x69, 0xd8, 1945 0x50, 0x68, 0x36, 0x83, 0x51, 0x12, 0x40, 0x24, 1946 0x06, 0x04, 0x07, 0x47, 0x28, 0x62, 0x86, 0x26, 1947 0x12, 0x24, 0x40, 0x83, 0x65, 0x44, 0x10, 0x62, 1948 0x78, 0x58, 0x14, 0x67, 0x20, 0x20, 0x60, 0x53, 1949 0x28, 0x73, 0x53, 0x34, 0x82, 0x18, 0x42, 0x43, 1950 0x78, 0x67, 0x65, 0x28, 0x12, 0x65, 0x71, 0x17, 1951 0x33, 0x06, 0x10, 0x51, 0x38, 0x07, 0x61, 0x42, 1952 0x72, 0x60, 0x18, 0x52, 0x08, 0x74, 0x58, 0x72, 1953 0x73, 0x06, 0x65, 0x20, 0x73, 0x20, 0x72, 0x42, 1954 0x03, 0x86, 0x03, 0x03, 0x50, 0x85, 0x13, 0x43, 1955 0x24, 0x53, 0x33, 0x82, 0x03, 0x36, 0x82, 0x73, 1956 0x12, 0x15, 0x78, 0x54, 0x60, 0x64, 0x32, 0x60, 1957 0x42, 0x47, 0x84, 0x73, 0x51, 0x60, 0x26, 0x03, 1958 0x35, 0x58, 0x25, 0x28, 0x83, 0x55, 0x64, 0x06, 1959 0x70, 0x82, 0x75, 0x54, 0x15, 0x70, 0x37, 0x61, 1960 0x71, 0x38, 0x75, 0x36, 0x15, 0x70, 0x78, 0x17, 1961 0x62, 0x01, 0x02, 0x13, 0x12, 0x46, 0x12, 0x56, 1962 0x82, 0x51, 0x32, 0x16, 0x27, 0x00, 0x52, 0x41, 1963 0x43, 0x86, 0x46, 0x00, 0x61, 0x24, 0x78, 0x33, 1964 0x40, 0x13, 0x34, 0x47, 0x60, 0x18, 0x52, 0x18, 1965 0x80, 0x01, 0x46, 0x53, 0x32, 0x74, 0x51, 0x72, 1966 0x81, 0x21, 0x30, 0x50, 0x28, 0x28, 0x55, 0x53, 1967 0x71, 0x03, 0x84, 0x87, 0x61, 0x88, 0x45, 0x35, 1968 0x63, 0x72, 0x05, 0x37, 0x06, 0x37, 0x35, 0x36, 1969 0x56, 0x71, 0x74, 0x53, 0x07, 0x61, 0x72, 0x65, 1970 0x78, 0x57, 0x42, 0x41, 0x02, 0x06, 0x61, 0x06, 1971 0x07, 0x66, 0x64, 0x50, 0x31, 0x24, 0x82, 0x43, 1972 0x86, 0x31, 0x26, 0x76, 0x47, 0x45, 0x03, 0x66, 1973 0x44, 0x00, 0x46, 0x04, 0x83, 0x03, 0x83, 0x81, 1974 0x33, 0x08, 0x77, 0x57, 0x08, 0x40, 0x04, 0x22, 1975 0x35, 0x17, 0x43, 0x63, 0x78, 0x44, 0x86, 0x24, 1976 0x40, 0x17, 0x28, 0x67, 0x34, 0x18, 0x75, 0x72, 1977 0x26, 0x83, 0x68, 0x63, 0x57, 0x47, 0x48, 0x84, 1978 0x50, 0x16, 0x43, 0x17, 0x86, 0x16, 0x44, 0x17, 1979 0x18, 0x70, 0x08, 0x51, 0x78, 0x70, 0x15, 0x58, 1980 0x04, 0x10, 0x16, 0x03, 0x11, 0x04, 0x43, 0x70, 1981 0x32, 0x77, 0x03, 0x23, 0x12, 0x74, 0x38, 0x26, 1982 0x65, 0x66, 0x62, 0x04, 0x65, 0x75, 0x54, 0x00, 1983 0x04, 0x01, 0x43, 0x15, 0x07, 0x47, 0x71, 0x12, 1984 0x70, 0x41, 0x72, 0x34, 0x05, 0x26, 0x08, 0x11, 1985 0x55, 0x22, 0x72, 0x83, 0x04, 0x66, 0x88, 0x80, 1986 0x25, 0x17, 0x68, 0x60, 0x15, 0x37, 0x64, 0x14, 1987 0x26, 0x64, 0x01, 0x45, 0x54, 0x51, 0x71, 0x38, 1988 0x62, 0x65, 0x78, 0x43, 0x36, 0x21, 0x02, 0x27, 1989 0x43, 0x47, 0x83, 0x86, 0x07, 0x05, 0x48, 0x56, 1990 0x86, 0x31, 0x27, 0x66, 0x34, 0x35, 0x48, 0x81, 1991 0x08, 0x38, 0x05, 0x10, 0x63, 0x32, 0x61, 0x73, 1992 0x47, 0x30, 0x00, 0x82, 0x66, 0x54, 0x86, 0x81, 1993 0x36, 0x06, 0x45, 0x01, 0x45, 0x87, 0x23, 0x36, 1994 0x83, 0x00, 0x32, 0x81, 0x10, 0x06, 0x57, 0x76, 1995 0x62, 0x40, 0x61, 0x77, 0x04, 0x17, 0x28, 0x70, 1996 0x15, 0x07, 0x42, 0x18, 0x61, 0x70, 0x32, 0x42, 1997 0x68, 0x12, 0x00, 0x18, 0x12, 0x72, 0x60, 0x50, 1998 0x63, 0x28, 0x51, 0x87, 0x82, 0x03, 0x36, 0x63, 1999 0x63, 0x25, 0x68, 0x54, 0x56, 0x16, 0x07, 0x58, 2000 0x77, 0x83, 0x31, 0x85, 0x44, 0x43, 0x60, 0x22, 2001 0x16, 0x01, 0x41, 0x23, 0x27, 0x11, 0x46, 0x60, 2002 0x50, 0x84, 0x77, 0x18, 0x81, 0x31, 0x88, 0x47, 2003 0x36, 0x51, 0x71, 0x56, 0x04, 0x25, 0x17, 0x44, 2004 0x33, 0x78, 0x28, 0x72, 0x27, 0x87, 0x62, 0x78, 2005 0x13, 0x83, 0x58, 0x12, 0x36, 0x22, 0x10, 0x25, 2006 0x13, 0x50, 0x88, 0x10, 0x24, 0x78, 0x15, 0x12, 2007 0x26, 0x43, 0x58, 0x02, 0x24, 0x17, 0x34, 0x75, 2008 0x46, 0x15, 0x46, 0x42, 0x84, 0x52, 0x41, 0x75, 2009 0x48, 0x77, 0x88, 0x33, 0x18, 0x18, 0x84, 0x31, 2010 0x47, 0x22, 0x35, 0x64, 0x72, 0x35, 0x65, 0x73, 2011 0x66, 0x88, 0x73, 0x12, 0x25, 0x51, 0x66, 0x57, 2012 0x05, 0x23, 0x54, 0x74, 0x51, 0x76, 0x52, 0x24, 2013 0x40, 0x64, 0x68, 0x28, 0x25, 0x65, 0x77, 0x12, 2014 0x53, 0x35, 0x41, 0x85, 0x18, 0x25, 0x02, 0x25, 2015 0x47, 0x22, 0x40, 0x37, 0x54, 0x03, 0x53, 0x26, 2016 0x86, 0x50, 0x70, 0x25, 0x56, 0x27, 0x21, 0x11, 2017 0x11, 0x72, 0x71, 0x54, 0x47, 0x63, 0x67, 0x22, 2018 0x75, 0x61, 0x70, 0x05, 0x10, 0x03, 0x41, 0x48, 2019 0x01, 0x47, 0x14, 0x70, 0x06, 0x64, 0x84, 0x02, 2020 0x28, 0x06, 0x12, 0x45, 0x13, 0x56, 0x48, 0x65, 2021 0x00, 0x74, 0x02, 0x10, 0x78, 0x42, 0x80, 0x02, 2022 0x00, 0x16, 0x37, 0x43, 0x23, 0x56, 0x67, 0x20, 2023 0x31, 0x86, 0x22, 0x20, 0x35, 0x51, 0x34, 0x58, 2024 0x10, 0x87, 0x83, 0x43, 0x32, 0x85, 0x47, 0x72, 2025 0x32, 0x28, 0x38, 0x47, 0x08, 0x73, 0x38, 0x20, 2026 0x25, 0x14, 0x51, 0x66, 0x88, 0x85, 0x15, 0x88, 2027 0x86, 0x86, 0x73, 0x46, 0x52, 0x81, 0x32, 0x70, 2028 0x85, 0x31, 0x20, 0x80, 0x32, 0x42, 0x02, 0x33, 2029 0x37, 0x68, 0x66, 0x70, 0x11, 0x27, 0x53, 0x75, 2030 0x48, 0x65, 0x01, 0x25, 0x24, 0x53, 0x68, 0x15, 2031 0x47, 0x25, 0x42, 0x01, 0x04, 0x47, 0x01, 0x58, 2032 0x36, 0x17, 0x71, 0x44, 0x21, 0x63, 0x52, 0x61, 2033 0x56, 0x16, 0x73, 0x17, 0x28, 0x08, 0x07, 0x76, 2034 0x08, 0x42, 0x58, 0x11, 0x42, 0x18, 0x17, 0x18, 2035 0x65, 0x63, 0x82, 0x45, 0x74, 0x35, 0x21, 0x01, 2036 0x35, 0x26, 0x43, 0x56, 0x58, 0x56, 0x64, 0x81, 2037 0x05, 0x52, 0x77, 0x31, 0x47, 0x27, 0x21, 0x82, 2038 0x60, 0x05, 0x51, 0x04, 0x15, 0x34, 0x58, 0x00, 2039 0x40, 0x83, 0x48, 0x21, 0x52, 0x04, 0x62, 0x23, 2040 0x34, 0x64, 0x85, 0x77, 0x35, 0x81, 0x52, 0x35, 2041 0x80, 0x24, 0x00, 0x03, 0x84, 0x32, 0x67, 0x76, 2042 0x78, 0x32, 0x87, 0x50, 0x48, 0x00, 0x64, 0x45, 2043 0x17, 0x05, 0x56, 0x84, 0x13, 0x02, 0x68, 0x42, 2044 0x76, 0x81, 0x01, 0x41, 0x18, 0x56, 0x30, 0x58, 2045 0x43, 0x72, 0x28, 0x71, 0x21, 0x87, 0x14, 0x64, 2046 0x03, 0x31, 0x58, 0x04, 0x72, 0x11, 0x43, 0x50, 2047 0x82, 0x57, 0x14, 0x38, 0x53, 0x36, 0x53, 0x44, 2048 0x37, 0x36, 0x83, 0x47, 0x58, 0x58, 0x52, 0x08, 2049 0x13, 0x33, 0x43, 0x40, 0x54, 0x26, 0x35, 0x28, 2050 0x67, 0x02, 0x08, 0x18, 0x34, 0x67, 0x16, 0x17, 2051 0x73, 0x13, 0x18, 0x02, 0x88, 0x32, 0x61, 0x60, 2052 0x56, 0x38, 0x05, 0x87, 0x78, 0x52, 0x07, 0x53, 2053 0x81, 0x06, 0x52, 0x88, 0x07, 0x35, 0x72, 0x72, 2054 0x44, 0x28, 0x80, 0x86, 0x11, 0x70, 0x40, 0x41, 2055 0x63, 0x80, 0x46, 0x15, 0x27, 0x62, 0x03, 0x45, 2056 0x14, 0x33, 0x56, 0x07, 0x78, 0x43, 0x77, 0x62, 2057 0x06, 0x54, 0x74, 0x43, 0x28, 0x72, 0x16, 0x40, 2058 0x78, 0x62, 0x44, 0x34, 0x00, 0x25, 0x75, 0x74, 2059 0x77, 0x37, 0x02, 0x48, 0x67, 0x18, 0x51, 0x67, 2060 0x77, 0x68, 0x38, 0x72, 0x85, 0x34, 0x42, 0x54, 2061 0x71, 0x61, 0x47, 0x42, 0x68, 0x55, 0x27, 0x26, 2062 0x38, 0x85, 0x15, 0x15, 0x43, 0x14, 0x31, 0x24, 2063 0x81, 0x26, 0x21, 0x17, 0x04, 0x00, 0x27, 0x21, 2064 0x20, 0x72, 0x85, 0x77, 0x30, 0x17, 0x26, 0x48, 2065 0x05, 0x48, 0x71, 0x41, 0x48, 0x27, 0x12, 0x43, 2066 0x35, 0x26, 0x13, 0x00, 0x26, 0x67, 0x28, 0x25, 2067 0x10, 0x05, 0x74, 0x06, 0x65, 0x16, 0x87, 0x17, 2068 0x73, 0x37, 0x42, 0x20, 0x16, 0x44, 0x40, 0x68, 2069 0x27, 0x23, 0x38, 0x28, 0x60, 0x52, 0x64, 0x40, 2070 0x28, 0x46, 0x00, 0x00, 0x01, 0x43, 0x75, 0x15, 2071 0x38, 0x12, 0x37, 0x11, 0x11, 0x87, 0x34, 0x43, 2072 0x35, 0x76, 0x76, 0x50, 0x43, 0x05, 0x00, 0x27, 2073 0x18, 0x70, 0x68, 0x14, 0x60, 0x26, 0x12, 0x75, 2074 0x42, 0x06, 0x23, 0x56, 0x74, 0x74, 0x37, 0x17, 2075 0x46, 0x20, 0x34, 0x72, 0x21, 0x33, 0x82, 0x73, 2076 0x51, 0x64, 0x72, 0x02, 0x48, 0x82, 0x57, 0x53, 2077 0x64, 0x74, 0x75, 0x28, 0x64, 0x02, 0x30, 0x22, 2078 0x06, 0x73, 0x66, 0x72, 0x46, 0x56, 0x30, 0x11, 2079 0x78, 0x32, 0x47, 0x52, 0x31, 0x02, 0x74, 0x13, 2080 0x13, 0x41, 0x07, 0x27, 0x72, 0x07, 0x66, 0x63, 2081 0x34, 0x84, 0x30, 0x66, 0x28, 0x72, 0x50, 0x62, 2082 0x30, 0x52, 0x82, 0x37, 0x40, 0x78, 0x31, 0x35, 2083 0x76, 0x83, 0x05, 0x02, 0x37, 0x25, 0x28, 0x85, 2084 0x62, 0x10, 0x05, 0x38, 0x64, 0x87, 0x21, 0x76, 2085 0x04, 0x51, 0x12, 0x45, 0x08, 0x50, 0x50, 0x75, 2086 0x20, 0x86, 0x32, 0x43, 0x13, 0x47, 0x31, 0x24, 2087 0x26, 0x57, 0x68, 0x64, 0x88, 0x17, 0x02, 0x70, 2088 0x42, 0x72, 0x37, 0x32, 0x85, 0x87, 0x83, 0x86, 2089 0x47, 0x70, 0x56, 0x22, 0x24, 0x53, 0x48, 0x85, 2090 0x02, 0x48, 0x16, 0x01, 0x07, 0x57, 0x73, 0x76, 2091 0x27, 0x43, 0x00, 0x88, 0x27, 0x38, 0x30, 0x86, 2092 0x27, 0x18, 0x62, 0x05, 0x30, 0x37, 0x16, 0x80, 2093 0x31, 0x72, 0x28, 0x37, 0x47, 0x57, 0x62, 0x55, 2094 0x74, 0x07, 0x41, 0x72, 0x26, 0x58, 0x52, 0x68, 2095 0x04, 0x80, 0x72, 0x77, 0x35, 0x43, 0x36, 0x47, 2096 0x38, 0x76, 0x86, 0x60, 0x14, 0x22, 0x77, 0x61, 2097 0x52, 0x74, 0x17, 0x64, 0x67, 0x85, 0x23, 0x58, 2098 0x28, 0x23, 0x05, 0x33, 0x66, 0x64, 0x83, 0x71, 2099 0x14, 0x03, 0x21, 0x70, 0x55, 0x43, 0x35, 0x58, 2100 0x53, 0x78, 0x22, 0x00, 0x15, 0x00, 0x50, 0x16, 2101 0x26, 0x84, 0x18, 0x51, 0x24, 0x01, 0x20, 0x51, 2102 0x06, 0x74, 0x44, 0x83, 0x40, 0x55, 0x70, 0x28, 2103 0x66, 0x11, 0x31, 0x02, 0x57, 0x55, 0x52, 0x72, 2104 0x27, 0x84, 0x54, 0x71, 0x40, 0x78, 0x44, 0x75, 2105 0x24, 0x78, 0x61, 0x21, 0x65, 0x57, 0x43, 0x58, 2106 0x21, 0x15, 0x11, 0x87, 0x35, 0x82, 0x52, 0x00, 2107 0x46, 0x11, 0x34, 0x68, 0x60, 0x60, 0x50, 0x15, 2108 0x25, 0x62, 0x48, 0x08, 0x18, 0x31, 0x36, 0x86, 2109 0x41, 0x26, 0x80, 0x82, 0x54, 0x68, 0x02, 0x07, 2110 0x23, 0x22, 0x24, 0x33, 0x27, 0x02, 0x04, 0x40, 2111 0x22, 0x47, 0x87, 0x62, 0x70, 0x21, 0x81, 0x22, 2112 0x25, 0x78, 0x87, 0x67, 0x62, 0x38, 0x42, 0x10, 2113 0x21, 0x58, 0x56, 0x06, 0x20, 0x18, 0x46, 0x18, 2114 0x22, 0x61, 0x73, 0x45, 0x65, 0x73, 0x58, 0x57, 2115 0x04, 0x76, 0x72, 0x54, 0x48, 0x00, 0x62, 0x27, 2116 0x22, 0x25, 0x17, 0x43, 0x55, 0x58, 0x57, 0x64, 2117 0x04, 0x61, 0x21, 0x24, 0x02, 0x20, 0x17, 0x34, 2118 0x25, 0x13, 0x35, 0x14, 0x52, 0x76, 0x83, 0x11, 2119 0x05, 0x05, 0x03, 0x11, 0x28, 0x71, 0x16, 0x40, 2120 0x56, 0x21, 0x76, 0x18, 0x67, 0x38, 0x02, 0x15, 2121 0x36, 0x67, 0xf3, 0xc8, 0x13, 0x98, 0x97, 0xb3, 2122 0x28, 0x88, 0xb7, 0x32, 0x0d, 0xf8, 0xcf, 0x60, 2123 0x47, 0x25, 0x85, 0xf5, 0x2d, 0x0c, 0x02, 0x62, 2124 0xa7, 0xb3, 0x22, 0x3c, 0x55, 0xb6, 0x55, 0x9b, 2125 0x20, 0x35, 0x10, 0x77, 0x87, 0xeb, 0xcf, 0xa0, 2126 0x11, 0x37, 0xdc, 0x09, 0x0b, 0xdb, 0x94, 0x28, 2127 0xc5, 0x30, 0x74, 0x7f, 0x73, 0x3a, 0x05, 0x10, 2128 0xf2, 0x1a, 0x61, 0x88, 0xdb, 0x2e, 0xc9, 0xf1, 2129 0x14, 0x75, 0x3d, 0xef, 0x09, 0x2f, 0x53, 0x57, 2130 0x87, 0xb0, 0x78, 0xa2, 0xc1, 0xe3, 0x5b, 0xd4, 2131 0x4e, 0x77, 0x86, 0x0c, 0x69, 0x06, 0x33, 0x59, 2132 0x35, 0xdd, 0xbd, 0xa7, 0x9f, 0x3e, 0x2f, 0x0f, 2133 0x22, 0x4d, 0x17, 0xa6, 0x5c, 0x60, 0x3e, 0xa3, 2134 0xf1, 0xbf, 0x08, 0x38, 0x9f, 0x14, 0x0b, 0x07, 2135 0xa4, 0x0d, 0x1e, 0xf8, 0x34, 0x23, 0x01, 0x62, 2136 0xad, 0x3c, 0x65, 0x49, 0xca, 0x12, 0x01, 0x2b, 2137 0x2d, 0x17, 0x4c, 0xa1, 0xa7, 0x40, 0xde, 0xdd, 2138 0x2b, 0x4b, 0x14, 0xf1, 0x21, 0x6a, 0x68, 0xd5, 2139 0x65, 0xe6, 0x16, 0x42, 0xdc, 0xf3, 0xce, 0x0e, 2140 0x3a, 0xa4, 0x12, 0x16, 0x72, 0xa5, 0xa4, 0xbb, 2141 0xa3, 0xb4, 0x08, 0x6d, 0xce, 0x95, 0x73, 0xc6, 2142 0x4a, 0xe4, 0x5a, 0x14, 0x73, 0xb1, 0x14, 0xab, 2143 0x65, 0xb7, 0x8b, 0xe4, 0x7c, 0xa1, 0xd2, 0xbb, 2144 0x6a, 0xf2, 0xf2, 0x7d, 0x64, 0x26, 0x68, 0xec, 2145 0xc2, 0x51, 0x3c, 0xf0, 0xcc, 0x7a, 0x04, 0x6a, 2146 0x29, 0x8d, 0x76, 0x7f, 0xe5, 0x8f, 0x95, 0x20, 2147 0xd1, 0xf7, 0x98, 0x29, 0xf5, 0x35, 0x80, 0x25, 2148 0xda, 0x54, 0xde, 0xb9, 0x5f, 0x6d, 0x68, 0xcf, 2149 0x7e, 0x85, 0xcf, 0x38, 0x0d, 0x32, 0x63, 0x37, 2150 0x77, 0xe1, 0xa5, 0x9c, 0x0a, 0x6c, 0xc5, 0x3f, 2151 0xde, 0xdb, 0xe6, 0x57, 0x16, 0x4e, 0xbc, 0xb1, 2152 0x02, 0x7c, 0x58, 0x85, 0x60, 0x1f, 0x0d, 0x0f, 2153 0x4f, 0x5f, 0xbf, 0xa3, 0xbc, 0x2c, 0xfe, 0x66, 2154 0xbf, 0xb5, 0x93, 0xf0, 0x13, 0xfa, 0x52, 0x07, 2155 0x40, 0xdb, 0xbf, 0x6e, 0x6c, 0xca, 0x74, 0x61, 2156 0x0b, 0xa6, 0xaf, 0x02, 0x60, 0xf1, 0x57, 0x17, 2157 0x08, 0xf1, 0x09, 0xf7, 0xc4, 0x4e, 0x51, 0xaf, 2158 0x04, 0xf1, 0x4c, 0xbc, 0xe5, 0x77, 0x8f, 0x0f, 2159 0x9b, 0xa7, 0xb3, 0xf7, 0xb0, 0x32, 0x14, 0xbc, 2160 0x1d, 0x40, 0xe7, 0x06, 0x01, 0xd6, 0xf2, 0x7f, 2161 0x84, 0xab, 0x47, 0x34, 0x15, 0x2c, 0x62, 0xfe, 2162 0x95, 0x51, 0xaf, 0x51, 0x4a, 0x1d, 0xc4, 0xea, 2163 0xaf, 0xdc, 0xe4, 0xea, 0xa7, 0x7d, 0x25, 0x2a, 2164 0x79, 0x24, 0xf8, 0xaa, 0xf2, 0xe9, 0x82, 0x48, 2165 0x7b, 0x0e, 0x2c, 0x5c, 0x38, 0x89, 0x21, 0xfe, 2166 0x91, 0x72, 0xed, 0xd9, 0x41, 0xac, 0x0d, 0xdc, 2167 0x12, 0xf4, 0x3f, 0x49, 0x91, 0x65, 0x2d, 0x39, 2168 0xea, 0xdf, 0xc6, 0xcd, 0xa8, 0xbe, 0x53, 0x23, 2169 0x04, 0xbf, 0xd3, 0xf0, 0xb8, 0x76, 0xc8, 0x01, 2170 0x43, 0x2c, 0x6b, 0x79, 0xae, 0x23, 0x50, 0xe0, 2171 0x34, 0x09, 0x85, 0xd8, 0xdb, 0xc5, 0x37, 0xb8, 2172 0xd5, 0x49, 0x26, 0x9c, 0x0b, 0x85, 0x95, 0x5f, 2173 0x28, 0x17, 0x8d, 0xd3, 0x0d, 0xe0, 0x34, 0x34, 2174 0x23, 0x07, 0x74, 0x13, 0x55, 0xd7, 0xe5, 0xb4, 2175 0x83, 0x4c, 0xd8, 0xdc, 0xdb, 0x5a, 0xe9, 0x3c, 2176 0x36, 0x53, 0xa4, 0x3a, 0x80, 0xde, 0x77, 0xa0, 2177 0xaa, 0x9a, 0xe7, 0x6e, 0xdd, 0x98, 0xdd, 0x6a, 2178 0xf4, 0x34, 0xda, 0x83, 0x80, 0x9c, 0xe5, 0x83, 2179 0xb3, 0xb6, 0xf7, 0x81, 0x39, 0x46, 0xea, 0x93, 2180 0x85, 0xad, 0xf5, 0xa7, 0x1a, 0xb1, 0x31, 0x6f, 2181 0xb9, 0x79, 0x11, 0x57, 0x62, 0x47, 0xd9, 0xcc, 2182 0x67, 0x78, 0xec, 0x32, 0xd3, 0x0c, 0x34, 0xea, 2183 0x1b, 0xa8, 0x84, 0x54, 0xb1, 0xf3, 0x80, 0x4b, 2184 0x79, 0x32, 0x82, 0x18, 0x54, 0x2d, 0xdf, 0xbb, 2185 0x4d, 0xbe, 0x75, 0xa0, 0x8e, 0x53, 0x52, 0xed, 2186 0x6e, 0x0a, 0x9f, 0xa6, 0x9b, 0x14, 0x32, 0x10, 2187 0xf1, 0x7e, 0xdd, 0xfa, 0xc5, 0xf5, 0xbd, 0x67, 2188 0xfb, 0x64, 0xf6, 0xc3, 0xb1, 0xc9, 0x81, 0x17, 2189 0x60, 0x56, 0x11, 0xdc, 0x63, 0x13, 0x16, 0x4a, 2190 0xa8, 0xeb, 0x7f, 0x82, 0xd3, 0x90, 0xeb, 0x5e, 2191 0xe7, 0xb0, 0xd9, 0x3e, 0x13, 0xd3, 0x73, 0x90, 2192 0x0d, 0x67, 0xc1, 0x18, 0xcc, 0x3b, 0x88, 0xcd, 2193 0x4d, 0x40, 0xbe, 0xd4, 0x5e, 0xee, 0x73, 0xa4, 2194 0xee, 0xbd, 0xcb, 0xbc, 0x39, 0x8b, 0x6d, 0x15, 2195 0x34, 0x18, 0xd2, 0x55, 0x93, 0xc0, 0xf4, 0x95, 2196 0xd1, 0xe4, 0x7f, 0x37, 0xb1, 0x3a, 0x8c, 0x4b, 2197 0xbc, 0x7d, 0x76, 0xb4, 0x34, 0xf4, 0x11, 0x5c, 2198 0x10, 0xeb, 0x34, 0x88, 0x61, 0xd7, 0x89, 0xac, 2199 0x87, 0x91, 0x6a, 0x80, 0xee, 0x07, 0x0d, 0x26, 2200 0xfa, 0xd2, 0x75, 0x6b, 0xd6, 0x0b, 0xa5, 0xc6, 2201 0x71, 0x6d, 0x0a, 0x5b, 0x59, 0x62, 0x32, 0x60, 2202 0x42, 0x73, 0x75, 0xda, 0x63, 0x36, 0x96, 0xca, 2203 0xde, 0xe9, 0x60, 0xfe, 0xa2, 0x64, 0xcc, 0x85, 2204 0x22, 0x4c, 0xc5, 0x2f, 0x0e, 0xe8, 0xf5, 0x93, 2205 0xdb, 0x16, 0xa7, 0x1f, 0xd9, 0x30, 0xbc, 0xa2, 2206 0xba, 0x23, 0xca, 0xea, 0xc1, 0x4d, 0x2f, 0xd4, 2207 0x81, 0x98, 0xff, 0x58, 0xfc, 0x40, 0x39, 0x75, 2208 0x52, 0x3e, 0x3e, 0xf4, 0x8d, 0x95, 0x55, 0x0a, 2209 0x95, 0x5f, 0x4f, 0x5d, 0xdd, 0x0d, 0xb8, 0xd4, 2210 0x63, 0x98, 0x48, 0x6b, 0xec, 0xe8, 0xd9, 0xae, 2211 0xeb, 0x9d, 0x48, 0xa4, 0x9a, 0x63, 0x03, 0xc4, 2212 0x57, 0xcd, 0x7d, 0x97, 0xc8, 0x11, 0x7e, 0xcb, 2213 0x78, 0xe8, 0x5d, 0x6e, 0xe6, 0xdd, 0x13, 0x33, 2214 0xf2, 0x05, 0xcd, 0x5a, 0x44, 0x18, 0xf9, 0x32, 2215 0x41, 0x4e, 0x5c, 0xfc, 0x7a, 0xe9, 0xc2, 0x28, 2216 0xd3, 0x42, 0x56, 0xc8, 0x39, 0x26, 0x78, 0xdd, 2217 0x92, 0x1c, 0xa6, 0xf4, 0x94, 0xa9, 0xc4, 0x69, 2218 0xf9, 0x7e, 0xea, 0x9c, 0xd6, 0x92, 0xd6, 0xab, 2219 0xd5, 0x1d, 0xde, 0x4e, 0x8d, 0x6c, 0xb2, 0xc3, 2220 0x8a, 0xcb, 0xdb, 0xfc, 0x2d, 0xb6, 0xc6, 0x16, 2221 0x49, 0xd1, 0x31, 0x51, 0x90, 0x0c, 0x75, 0x6e, 2222 0x27, 0x3b, 0xda, 0x42, 0x0b, 0xdc, 0xd1, 0xea, 2223 0xde, 0xd9, 0xbe, 0x02, 0xb8, 0xb0, 0x55, 0xba, 2224 0xde, 0x0c, 0xcf, 0x68, 0xd2, 0x02, 0x7f, 0x16, 2225 0x5a, 0x63, 0xcc, 0xd1, 0x42, 0xb3, 0x2f, 0x08, 2226 0x4a, 0x8c, 0x06, 0xa9, 0x13, 0xa2, 0xca, 0xf0, 2227 0x72, 0xff, 0xd1, 0x77, 0x58, 0xcd, 0x8d, 0x49, 2228 0xca, 0x67, 0x9a, 0x21, 0x58, 0x94, 0xa6, 0x80, 2229 0x57, 0xb4, 0xfb, 0x7a, 0x76, 0x30, 0xe8, 0xa1, 2230 0xef, 0x45, 0x6f, 0xa9, 0x62, 0xf5, 0x51, 0xfa, 2231 0x87, 0x56, 0x07, 0x9b, 0xc3, 0xab, 0xd6, 0x3c, 2232 0xa4, 0x3a, 0x02, 0x1f, 0xcd, 0xaa, 0xce, 0x2c, 2233 0xc9, 0x49, 0x30, 0x27, 0x3e, 0x27, 0x92, 0x59, 2234 0xff, 0xb7, 0x35, 0x6e, 0xe7, 0x7e, 0x94, 0x06, 2235 0xf0, 0x2b, 0x00, 0x58, 0x3f, 0x5e, 0x28, 0x12, 2236 0x70, 0x1c, 0x6b, 0xef, 0x78, 0x22, 0x12, 0x03, 2237 0xd7, 0x12, 0xd5, 0x46, 0xd6, 0xf2, 0xea, 0x16, 2238 0x94, 0x2c, 0x1a, 0xfa, 0x52, 0x05, 0xed, 0xf1, 2239 0x25, 0xf4, 0x06, 0x8b, 0x85, 0x7c, 0x38, 0x70, 2240 0x53, 0x54, 0x41, 0x6c, 0x8a, 0x0a, 0x60, 0x83, 2241 0x59, 0x7d, 0x73, 0xe0, 0xd8, 0xa5, 0x1b, 0x3a, 2242 0xec, 0xcd, 0x5f, 0x44, 0x0b, 0xeb, 0xcc, 0xe9, 2243 0x65, 0xd4, 0x68, 0xb0, 0x3d, 0x13, 0xf1, 0xb9, 2244 0x2a, 0x67, 0xb7, 0xae, 0x4f, 0xf3, 0xa7, 0x2e, 2245 0x33, 0xf3, 0x80, 0xc1, 0x4f, 0xd1, 0xcd, 0xdd, 2246 0xd2, 0xab, 0xde, 0xcb, 0x04, 0xc8, 0x1b, 0x26, 2247 0xd4, 0x86, 0xd8, 0x6f, 0xe1, 0x2b, 0x85, 0xb9, 2248 0x2c, 0xe3, 0xaf, 0xf5, 0x9f, 0x4b, 0xfb, 0x41, 2249 0xa9, 0xc9, 0x2e, 0xd0, 0x2d, 0xda, 0xba, 0xa0, 2250 0xba, 0xfb, 0x14, 0x5d, 0x2e, 0xbf, 0x65, 0xbd, 2251 0xe3, 0x51, 0x8d, 0xdd, 0xbb, 0x51, 0x35, 0x3a, 2252 0xf0, 0xbe, 0x74, 0xae, 0x42, 0x8b, 0x5d, 0xd9, 2253 0xef, 0x67, 0x1c, 0x01, 0xb5, 0x1c, 0xc9, 0x3d, 2254 0x0c, 0x42, 0x3a, 0xce, 0x53, 0xbb, 0x23, 0xd0, 2255 0x92, 0x2c, 0x60, 0x0f, 0xf1, 0x73, 0x37, 0xa9, 2256 0x99, 0x86, 0xd9, 0x7e, 0xfc, 0x8a, 0x56, 0xa2, 2257 0xf7, 0x17, 0x69, 0x75, 0x49, 0x1a, 0x8e, 0x4c, 2258 0x4b, 0x87, 0xe0, 0xfb, 0xcc, 0x93, 0x14, 0x7d, 2259 0x96, 0xdc, 0xcc, 0xc6, 0x3c, 0x8d, 0x71, 0x50, 2260 0xf2, 0x0f, 0x67, 0xdd, 0xd9, 0x95, 0xb7, 0xc9, 2261 0xd8, 0xf4, 0x1a, 0xca, 0x0c, 0x90, 0xe4, 0xf5, 2262 0x0e, 0xf7, 0xfb, 0x8c, 0x4c, 0x92, 0x66, 0x3c, 2263 0x3d, 0xf2, 0x47, 0x6f, 0x8c, 0x51, 0x71, 0xff, 2264 0xe1, 0xba, 0x1f, 0x02, 0x64, 0x12, 0x79, 0xa5, 2265 0xad, 0x6e, 0x7c, 0xab, 0xf1, 0x06, 0x01, 0xc1, 2266 0x25, 0x4e, 0xd6, 0xb6, 0xc3, 0xe9, 0xbe, 0x64, 2267 0x52, 0x18, 0x22, 0x01, 0x23, 0xc6, 0xd6, 0xbb, 2268 0x13, 0xbe, 0x15, 0x40, 0xc4, 0x97, 0x4b, 0x24, 2269 0xe7, 0xaa, 0xef, 0x3b, 0x24, 0x04, 0x47, 0xcc, 2270 0x4d, 0xd8, 0xd2, 0x9f, 0xf6, 0x60, 0xb9, 0x04, 2271 0x27, 0xc0, 0x1c, 0xbc, 0x28, 0xe6, 0x16, 0xa4, 2272 0x06, 0xa8, 0xab, 0x52, 0x56, 0x58, 0x53, 0x4a, 2273 0xda, 0x0d, 0xf0, 0xb2, 0x8a, 0x8e, 0x7d, 0xd7, 2274 0x29, 0x45, 0xe9, 0xc6, 0xc3, 0xf4, 0xaa, 0x16, 2275 0x01, 0x48, 0x1d, 0x6c, 0x90, 0xbe, 0x49, 0x5c, 2276 0x28, 0x49, 0x18, 0xd5, 0x52, 0xd5, 0x12, 0x54, 2277 0x9c, 0x1f, 0xc0, 0xb5, 0x8f, 0x22, 0xa7, 0x2a, 2278 0xd7, 0x36, 0x41, 0xc2, 0xc1, 0x7d, 0x11, 0x9b, 2279 0xbf, 0x84, 0x2a, 0x05, 0x9f, 0x41, 0xea, 0x54, 2280 0xf2, 0xe1, 0x69, 0x4d, 0xd5, 0x63, 0x00, 0x28, 2281 0x81, 0x75, 0xd3, 0x8c, 0x19, 0x81, 0xd6, 0x0a, 2282 0x25, 0x62, 0x9e, 0x35, 0xd0, 0x4d, 0xc7, 0x73, 2283 0x3e, 0xae, 0x39, 0x89, 0xf9, 0xb6, 0x67, 0xf0, 2284 0x08, 0x98, 0xd7, 0x87, 0xf1, 0xf4, 0x58, 0x12, 2285 0xf5, 0x22, 0x51, 0xad, 0x9a, 0x4d, 0xed, 0x09, 2286 0x81, 0x82, 0x99, 0x9b, 0x5f, 0x05, 0xb6, 0x3e, 2287 0x8e, 0xad, 0x34, 0xa1, 0x2d, 0xb6, 0xae, 0xc7, 2288 0x7b, 0x7f, 0x39, 0xf9, 0x53, 0xaf, 0xcd, 0x0e, 2289 0xcc, 0x98, 0x5b, 0x5b, 0x92, 0x8c, 0x75, 0x36, 2290 0x0a, 0xa9, 0xfc, 0xf5, 0x22, 0x14, 0xf3, 0x44, 2291 0x5e, 0xc7, 0xf6, 0x7f, 0x3a, 0x92, 0x0b, 0xc1, 2292 0x68, 0xa3, 0xc2, 0xd8, 0xf3, 0xd1, 0x12, 0x5b, 2293 0x12, 0xd1, 0x96, 0x18, 0x50, 0x0c, 0xb5, 0x13, 2294 0x40, 0xcb, 0x38, 0xdd, 0xf7, 0xc2, 0x4f, 0xb9, 2295 0xda, 0xd2, 0x94, 0x3f, 0xbf, 0x63, 0x4f, 0x0a, 2296 0xb8, 0x03, 0x67, 0x65, 0xc6, 0x40, 0xff, 0xc8, 2297 0xd7, 0x8e, 0x06, 0x92, 0x7a, 0xdb, 0xad, 0x7d, 2298 0x1b, 0x82, 0xd5, 0x19, 0xf1, 0x4a, 0x11, 0x3a, 2299 0xe4, 0x23, 0x39, 0x8d, 0x5d, 0x0a, 0x63, 0xb2, 2300 0x67, 0x1f, 0x98, 0xde, 0x5a, 0x44, 0x6a, 0x70, 2301 0xff, 0x83, 0x34, 0x78, 0xa5, 0x02, 0x0b, 0x51, 2302 0x4b, 0x0a, 0xab, 0x16, 0x04, 0x2e, 0xce, 0x6a, 2303 0xf2, 0x72, 0x4c, 0x6f, 0x2f, 0xfa, 0xca, 0xd8, 2304 0x19, 0x4f, 0x48, 0x9f, 0x1c, 0x7d, 0x60, 0x34, 2305 0x9c, 0x79, 0x44, 0xd3, 0xaa, 0xea, 0x5c, 0xfe, 2306 0xa0, 0xa1, 0x6e, 0xff, 0xa8, 0xb6, 0xe3, 0xd9, 2307 0x60, 0xf2, 0x93, 0x32, 0x77, 0x07, 0xd6, 0xbb, 2308 0xdf, 0x3a, 0x49, 0x38, 0xad, 0xc4, 0x63, 0xaf, 2309 0xd0, 0x00, 0x41, 0xdb, 0x96, 0x75, 0xbb, 0xb3, 2310 0xa8, 0x10, 0x67, 0x7e, 0x47, 0x89, 0x8c, 0xce, 2311 0xdd, 0xe8, 0x8b, 0xf3, 0xdb, 0xd7, 0xf5, 0x4f, 2312 0x22, 0xbf, 0x19, 0x61, 0x64, 0xf7, 0xe3, 0xcd, 2313 0x4e, 0x3d, 0x19, 0x8e, 0x45, 0x8c, 0xce, 0xd3, 2314 0x65, 0x3e, 0xb0, 0xdc, 0x94, 0x2e, 0xa2, 0xc2, 2315 0x53, 0xba, 0x46, 0x3a, 0xd1, 0x39, 0xd4, 0x7a, 2316 0xd8, 0xd6, 0x95, 0xb7, 0xdb, 0xdd, 0x7a, 0x81, 2317 0x78, 0xac, 0xfe, 0x0a, 0x1c, 0x74, 0x3f, 0x52, 2318 0xa3, 0x4d, 0xee, 0x4d, 0x37, 0x15, 0xd7, 0x39, 2319 0x06, 0x59, 0xec, 0xa7, 0x92, 0xb2, 0x65, 0xee, 2320 0x49, 0x63, 0xf4, 0x01, 0x54, 0xc2, 0xa0, 0xab, 2321 0xfc, 0x10, 0x03, 0x30, 0x22, 0x63, 0xdb, 0x6e, 2322 0xed, 0xd9, 0x1c, 0x28, 0xb1, 0x48, 0x09, 0xa8, 2323 0x1c, 0x97, 0x09, 0xda, 0xaa, 0x3e, 0xd7, 0xc3, 2324 0x65, 0x2f, 0x81, 0x22, 0x8e, 0x4e, 0x0e, 0x71, 2325 0xaa, 0x96, 0xe4, 0x23, 0xd7, 0xa1, 0x1f, 0xcb, 2326 0x8c, 0x9e, 0xa0, 0x39, 0xc4, 0xb1, 0x01, 0x68, 2327 0x90, 0x61, 0x58, 0xcd, 0x62, 0xa0, 0xa9, 0xeb, 2328 0xb3, 0x07, 0xb4, 0xf5, 0xf9, 0xb6, 0xdf, 0x05, 2329 0xc6, 0x03, 0x7a, 0xa5, 0x1e, 0x8c, 0x12, 0x79, 2330 0x9a, 0xe3, 0x2b, 0x22, 0x25, 0x9a, 0x52, 0x68, 2331 0x4b, 0x47, 0x71, 0xac, 0x71, 0x3e, 0x1a, 0x14, 2332 0x7f, 0x34, 0x4d, 0xdc, 0x4e, 0x49, 0xf6, 0x5a, 2333 0x91, 0x5b, 0x44, 0xc8, 0xef, 0x67, 0x9c, 0xfe, 2334 0xb3, 0x04, 0xa9, 0x4f, 0xa8, 0xf3, 0x89, 0xdf, 2335 0x89, 0x83, 0xff, 0xd2, 0x45, 0x95, 0x66, 0x56, 2336 0x23, 0x84, 0x01, 0x13, 0x90, 0x5a, 0x7a, 0x04, 2337 0xc3, 0x97, 0x60, 0xf2, 0x86, 0x35, 0x5c, 0x45, 2338 0x6f, 0xcf, 0x27, 0xbc, 0xbb, 0xc3, 0x52, 0xf6, 2339 0xb2, 0xd6, 0x5a, 0xe0, 0xbc, 0x14, 0xc8, 0xfd, 2340 0x57, 0x38, 0x61, 0x8e, 0xc2, 0x58, 0x5e, 0xcc, 2341 0x0d, 0x86, 0xb6, 0xf3, 0x27, 0x92, 0x4a, 0x44, 2342 0xde, 0x27, 0x4b, 0xf9, 0xc3, 0x62, 0x5d, 0xe2, 2343 0x72, 0xfe, 0xae, 0x22, 0x8f, 0x31, 0x52, 0x99, 2344 0xda, 0x94, 0xd3, 0xaa, 0x73, 0x49, 0xdb, 0x48, 2345 0x1a, 0x1f, 0x0b, 0x7b, 0x11, 0x3f, 0xcd, 0x57, 2346 0xc4, 0x4e, 0x7b, 0x3e, 0xc6, 0x82, 0x8a, 0x17, 2347 0x41, 0xe3, 0x00, 0x55, 0xec, 0x82, 0x9f, 0x65, 2348 0x30, 0x4d, 0xfa, 0xc1, 0x91, 0x16, 0x89, 0x4d, 2349 0xec, 0x5a, 0xee, 0x17, 0xa0, 0xaf, 0x03, 0xb4, 2350 0x04, 0x01, 0x54, 0xa6, 0x13, 0xad, 0x7c, 0x49, 2351 0x17, 0x75, 0x0c, 0x4a, 0xe6, 0xf8, 0x7c, 0xa2, 2352 0xf3, 0x53, 0x84, 0xb1, 0xd3, 0x23, 0x53, 0xc7, 2353 0x35, 0xdf, 0x66, 0xee, 0x0f, 0xbc, 0x8e, 0x2c, 2354 0x21, 0x43, 0x46, 0x97, 0x89, 0x90, 0x35, 0x18, 2355 0xcc, 0xd9, 0x3a, 0xc8, 0x58, 0x1c, 0x52, 0x94, 2356 0x57, 0x4d, 0x5a, 0x37, 0xc3, 0xfb, 0x65, 0xdd, 2357 0xbe, 0x96, 0x97, 0xdf, 0xda, 0x73, 0x60, 0x9a, 2358 0x45, 0x1e, 0x18, 0xf4, 0xea, 0x5e, 0xfc, 0x0e, 2359 0x39, 0xf3, 0x81, 0x88, 0x2a, 0xe5, 0xe1, 0x91, 2360 0xed, 0x37, 0x32, 0x63, 0x4d, 0xd3, 0x90, 0xcb, 2361 0x86, 0xc0, 0x5c, 0xbd, 0x04, 0x7e, 0x13, 0x69, 2362 0xa0, 0xe1, 0x1f, 0xbd, 0x86, 0x33, 0xf4, 0x99, 2363 0xd1, 0x4e, 0xde, 0x60, 0xbb, 0xd2, 0xd5, 0x9d, 2364 0x3f, 0x15, 0x01, 0x79, 0x4a, 0x03, 0x5e, 0x39, 2365 0x23, 0x99, 0xbb, 0x27, 0x8d, 0x93, 0x5c, 0x13, 2366 0x6e, 0xbf, 0xc0, 0x3a, 0x32, 0xf9, 0xc0, 0xf4, 2367 0xb4, 0x73, 0x16, 0x63, 0xba, 0x9d, 0x2c, 0xb1, 2368 0x08, 0x63, 0x69, 0xa4, 0x71, 0x0d, 0x67, 0x06, 2369 0xd3, 0x48, 0x0e, 0x7a, 0x53, 0xe0, 0xdd, 0x19, 2370 0xc2, 0xfc, 0x96, 0x07, 0xbc, 0xe6, 0x3d, 0x76, 2371 0x73, 0xcb, 0x7f, 0x0f, 0xe1, 0x9a, 0x70, 0xd0, 2372 0x0c, 0xf7, 0xc9, 0x96, 0x04, 0x70, 0x4a, 0xf8, 2373 0x9a, 0x68, 0x12, 0x1c, 0xfa, 0x2b, 0x96, 0x9c, 2374 0x3f, 0x45, 0xf9, 0x02, 0x80, 0xf4, 0xcd, 0x60, 2375 0xb3, 0xb2, 0x03, 0x69, 0x3f, 0x3f, 0x81, 0x2f, 2376 0xfc, 0x9e, 0x6a, 0x0a, 0x72, 0xdb, 0x65, 0xe0, 2377 0x20, 0xb9, 0x3e, 0x0f, 0xaa, 0xc7, 0x68, 0x29, 2378 0xd1, 0xfe, 0xbf, 0x73, 0x32, 0xcb, 0x97, 0xa8, 2379 0x67, 0x77, 0x08, 0x39, 0x0d, 0x1d, 0x01, 0xec, 2380 0x5a, 0x7f, 0x60, 0x69, 0x13, 0x47, 0xa1, 0x7f, 2381 0xfc, 0x0c, 0xee, 0x51, 0x6f, 0x53, 0x16, 0x2f, 2382 0xd5, 0x50, 0x9d, 0x99, 0xe7, 0xa8, 0xf7, 0xda, 2383 0xb2, 0x71, 0xcd, 0x3d, 0xaa, 0x40, 0x6d, 0x7a, 2384 0x51, 0x76, 0xb2, 0xca, 0xc2, 0xc8, 0x88, 0x30, 2385 0xf6, 0xa9, 0x9c, 0xb4, 0x7e, 0x24, 0xce, 0x20, 2386 0x0f, 0x10, 0xf2, 0xdb, 0xad, 0x43, 0x5e, 0x0c, 2387 0x3d, 0x27, 0x6a, 0xed, 0x38, 0x2b, 0xe2, 0xd0, 2388 0x91, 0xff, 0x5b, 0x7c, 0x0c, 0xed, 0x87, 0xa7, 2389 0xd5, 0x09, 0x79, 0xfd, 0xe5, 0xeb, 0x26, 0xe0, 2390 0xa9, 0x71, 0xae, 0xd5, 0xba, 0xc4, 0x8a, 0xdf, 2391 0x0e, 0xbf, 0x0e, 0x8a, 0x6a, 0x40, 0x3d, 0x48, 2392 0x06, 0x53, 0x57, 0x43, 0xc6, 0x91, 0x4a, 0x3a, 2393 0x19, 0xc4, 0x06, 0x85, 0xbb, 0x80, 0x6e, 0x0f, 2394 0xf4, 0x54, 0xa9, 0xab, 0x2e, 0x85, 0xe8, 0x89, 2395 0x48, 0x55, 0xe3, 0xca, 0x74, 0xf0, 0x59, 0x47, 2396 0x01, 0x1d, 0x6b, 0xcd, 0x6c, 0xd3, 0x00, 0x9a, 2397 0x82, 0xaf, 0x1e, 0x29, 0x82, 0xdb, 0xd3, 0x48, 2398 0x24, 0x3e, 0x61, 0xf9, 0x40, 0xc7, 0x28, 0xc6, 2399 0xe3, 0x27, 0x71, 0xf0, 0x37, 0xeb, 0xf4, 0x30, 2400 0xdd, 0x1e, 0xf1, 0x1f, 0xa6, 0xc0, 0x7d, 0x8c, 2401 0x83, 0xac, 0xd5, 0x91, 0x3a, 0x9f, 0x8b, 0x03, 2402 0xe6, 0x7b, 0xef, 0x25, 0x57, 0xe9, 0x37, 0x52, 2403 0x01, 0xa1, 0xf6, 0xa9, 0xaf, 0xbf, 0x43, 0xf2, 2404 0x43, 0x79, 0x32, 0xf5, 0x03, 0x70, 0xde, 0x3c, 2405 0x41, 0x4e, 0x7f, 0xeb, 0x9d, 0x0e, 0x91, 0x45, 2406 0x0c, 0x98, 0xdd, 0x65, 0xcb, 0x41, 0xde, 0x75, 2407 0xa8, 0xb6, 0xe0, 0xd6, 0xe9, 0xbe, 0xe7, 0xd9, 2408 0xb0, 0x01, 0x27, 0x0c, 0xf1, 0xc0, 0x20, 0xed, 2409 0x7b, 0x17, 0xb2, 0xfa, 0x56, 0x9b, 0x5a, 0xf5, 2410 0xb1, 0x2e, 0x36, 0xd0, 0x88, 0x2b, 0x00, 0xc5, 2411 0x02, 0x4a, 0xa0, 0xda, 0x65, 0xb6, 0x7b, 0xa1, 2412 0x7b, 0x1e, 0x28, 0x72, 0xcf, 0x4f, 0xa3, 0xe6, 2413 0x21, 0x14, 0x25, 0x40, 0xc4, 0x41, 0xda, 0xde, 2414 0xd4, 0x10, 0xca, 0x02, 0x95, 0x31, 0xcd, 0xfc, 2415 0xe9, 0x7b, 0xb8, 0x0f, 0xe3, 0xf1, 0xcb, 0x2e, 2416 0x8f, 0xd4, 0x3e, 0xfa, 0xdc, 0x5f, 0x4c, 0xc3, 2417 0xc1, 0x38, 0x8e, 0xbe, 0xf8, 0x21, 0x56, 0xaf, 2418 0xba, 0x42, 0xb7, 0x76, 0xd8, 0xfc, 0xa3, 0x6c, 2419 0x07, 0x62, 0xa2, 0xb5, 0x27, 0xe0, 0x18, 0x7c, 2420 0x57, 0xe3, 0x6d, 0xfe, 0x47, 0x56, 0x61, 0xd5, 2421 0xda, 0x17, 0x44, 0x7b, 0x47, 0xea, 0x43, 0x62, 2422 0xcf, 0x11, 0xe4, 0x6b, 0x26, 0x82, 0x24, 0x13, 2423 0x63, 0xc6, 0x14, 0xbb, 0x00, 0xad, 0xe6, 0xe7, 2424 0x32, 0x4e, 0x79, 0xae, 0xc0, 0x1a, 0x51, 0x78, 2425 0xc0, 0xd4, 0x13, 0x02, 0xb1, 0x55, 0xcf, 0xf0, 2426 0x92, 0xaa, 0xad, 0x8f, 0x89, 0x4d, 0xfc, 0x2e, 2427 0x3b, 0x1a, 0x22, 0xb2, 0x4e, 0xef, 0xdb, 0x98, 2428 0x56, 0x0f, 0x7a, 0x0a, 0x5e, 0xf6, 0xde, 0x8e, 2429 0xd5, 0xdc, 0x84, 0x72, 0xe6, 0xa9, 0xd2, 0x5f, 2430 0xd5, 0x66, 0xab, 0x1e, 0x8b, 0xf2, 0x28, 0x9b, 2431 0x77, 0xc5, 0x24, 0x04, 0x93, 0x85, 0x54, 0x5b, 2432 0xcc, 0x0a, 0x18, 0xdc, 0xa9, 0x27, 0x34, 0x1d 2433}; 2434 2435static const unsigned char ml_dsa_65_sig[] = { 2436 0x5e, 0xc1, 0xb0, 0x64, 0x5c, 0x45, 0x6e, 0x22, 2437 0x9f, 0x7c, 0x49, 0xbf, 0x8e, 0x93, 0xe5, 0x83, 2438 0xfc, 0xa0, 0xf3, 0xb0, 0x93, 0x6f, 0x47, 0xa9, 2439 0x11, 0x9e, 0x1b, 0x13, 0xae, 0x05, 0xdd, 0xc6, 2440 0x55, 0x46, 0x81, 0x4f, 0x5e, 0x0c, 0xa7, 0x75, 2441 0x6b, 0x5c, 0x13, 0xf2, 0xc7, 0x1f, 0x4d, 0x74, 2442 0xa5, 0x50, 0xf4, 0xec, 0x3e, 0x75, 0x75, 0xbf, 2443 0x4c, 0xef, 0x50, 0x02, 0x87, 0x7d, 0x88, 0x05, 2444 0x40, 0xba, 0xc1, 0x8e, 0xd6, 0x5d, 0xe3, 0x3c, 2445 0xd9, 0x98, 0x05, 0x76, 0x09, 0xdf, 0xcb, 0xd2, 2446 0x0e, 0x56, 0x53, 0x88, 0x1e, 0xe1, 0x91, 0xcd, 2447 0x7d, 0x67, 0x11, 0x89, 0xf8, 0x58, 0xb9, 0x76, 2448 0xd6, 0x8f, 0x83, 0xca, 0xcc, 0x94, 0xf4, 0x97, 2449 0x58, 0xf5, 0x3d, 0xc7, 0xaa, 0xa4, 0x3f, 0xe3, 2450 0xcb, 0xcc, 0x67, 0xac, 0x50, 0x8f, 0xfe, 0xf7, 2451 0x90, 0x33, 0x04, 0x8b, 0x82, 0x14, 0x26, 0xa7, 2452 0x21, 0x4e, 0xf2, 0x37, 0x5a, 0x91, 0xe8, 0x7a, 2453 0x30, 0xb6, 0xce, 0x8f, 0x31, 0xfc, 0xef, 0xbe, 2454 0x7d, 0x16, 0x81, 0x18, 0xb3, 0x77, 0x0f, 0x4a, 2455 0xe9, 0x31, 0xf8, 0x51, 0x0e, 0xaa, 0x44, 0x5c, 2456 0x8b, 0x43, 0x0a, 0x61, 0x02, 0x6c, 0xdf, 0xee, 2457 0x09, 0x9b, 0x8f, 0x91, 0x5c, 0x75, 0x10, 0xa8, 2458 0xc6, 0xe3, 0x5d, 0x93, 0x74, 0x63, 0x73, 0x27, 2459 0xb9, 0x29, 0xc0, 0x9b, 0x62, 0x6a, 0xc6, 0x75, 2460 0x84, 0x78, 0x41, 0xf3, 0x5c, 0x5d, 0x60, 0xcf, 2461 0xc5, 0xe4, 0x78, 0x87, 0x53, 0x6c, 0xab, 0xff, 2462 0xbb, 0x53, 0xe9, 0x54, 0xf7, 0x1e, 0x06, 0xcf, 2463 0x9e, 0x52, 0xd0, 0x3c, 0x8c, 0x5e, 0x64, 0xba, 2464 0x28, 0x33, 0xb0, 0x14, 0x84, 0x56, 0x5a, 0xac, 2465 0xd6, 0xee, 0x1e, 0x5e, 0x39, 0x08, 0xcb, 0x16, 2466 0x54, 0x21, 0xe4, 0x6c, 0xa7, 0x29, 0xd2, 0x7b, 2467 0xbe, 0x09, 0xd5, 0x1c, 0xf2, 0xf8, 0x11, 0x1e, 2468 0x64, 0x6b, 0xca, 0x1a, 0xe4, 0xca, 0xab, 0xf1, 2469 0x13, 0xdc, 0xa2, 0x1e, 0x78, 0x09, 0x2a, 0x08, 2470 0xc5, 0xa1, 0x42, 0x62, 0xac, 0x94, 0x46, 0x61, 2471 0x37, 0x98, 0x0d, 0x93, 0xa6, 0xc2, 0x4d, 0xb8, 2472 0x00, 0x43, 0x4d, 0x6c, 0x5d, 0x06, 0x30, 0xaf, 2473 0xd5, 0xb6, 0x32, 0x9e, 0xfe, 0xf2, 0x03, 0x8b, 2474 0xa6, 0x7c, 0x6d, 0x36, 0x7e, 0xef, 0x99, 0x09, 2475 0xaf, 0x2c, 0x79, 0x70, 0x26, 0xff, 0xc8, 0x99, 2476 0x01, 0x93, 0x3b, 0x9c, 0xde, 0x0b, 0x5e, 0xf5, 2477 0x44, 0x5f, 0x15, 0xb6, 0x49, 0xde, 0x89, 0xdd, 2478 0x1e, 0x2b, 0x69, 0x7d, 0xb2, 0x88, 0xf2, 0x94, 2479 0x24, 0x49, 0xeb, 0x23, 0xfc, 0x60, 0x95, 0x09, 2480 0x89, 0xe5, 0xfd, 0xe3, 0x63, 0xfa, 0x3a, 0xb7, 2481 0x18, 0x99, 0xe0, 0x5a, 0x25, 0x94, 0xd6, 0x3a, 2482 0x6a, 0x48, 0x6e, 0xea, 0xe3, 0x61, 0xf8, 0x81, 2483 0xe8, 0x4a, 0x43, 0xcb, 0x19, 0xfe, 0x2e, 0x16, 2484 0x8d, 0xca, 0x7e, 0xeb, 0x81, 0x55, 0xc0, 0x8a, 2485 0xf5, 0x14, 0x5b, 0xb6, 0x06, 0x45, 0x72, 0xa6, 2486 0x8a, 0xc2, 0x16, 0x8d, 0xe4, 0x31, 0x54, 0x9c, 2487 0xd2, 0x75, 0x5f, 0x7d, 0xf2, 0x19, 0x19, 0xf4, 2488 0x4a, 0xfe, 0xaf, 0x18, 0x2d, 0x51, 0x43, 0x2e, 2489 0x40, 0x02, 0xc0, 0x25, 0x53, 0x10, 0x37, 0x3d, 2490 0xeb, 0xd6, 0x08, 0x75, 0x6c, 0xb2, 0x38, 0x72, 2491 0xef, 0x67, 0x80, 0x50, 0xc7, 0x54, 0x4c, 0x91, 2492 0xcb, 0x68, 0x64, 0x23, 0xa9, 0x4b, 0x0d, 0xcb, 2493 0x71, 0x9c, 0x27, 0x67, 0x22, 0x98, 0xad, 0x3a, 2494 0xa0, 0xd8, 0x9f, 0x21, 0x95, 0xdc, 0xb0, 0xa5, 2495 0xb4, 0x44, 0x3b, 0xc8, 0xcb, 0x5c, 0x50, 0xd1, 2496 0x38, 0x03, 0x91, 0x79, 0x73, 0x2f, 0x4a, 0xd7, 2497 0x1f, 0xe5, 0xdc, 0x16, 0xaf, 0xb1, 0x2a, 0x86, 2498 0x02, 0x0b, 0x31, 0x42, 0x64, 0x2f, 0x8a, 0x83, 2499 0x7b, 0x13, 0x78, 0xdd, 0x6c, 0x72, 0x46, 0xa2, 2500 0x84, 0x2f, 0xa8, 0x24, 0x43, 0xb0, 0x69, 0xaf, 2501 0x52, 0x58, 0x13, 0x7c, 0xb3, 0xf8, 0x2d, 0x74, 2502 0x87, 0x68, 0x17, 0xd6, 0x0c, 0x50, 0x19, 0xf8, 2503 0x11, 0x68, 0xd5, 0x1c, 0x56, 0x30, 0x5d, 0x31, 2504 0x56, 0xe4, 0x9d, 0x80, 0x39, 0x0c, 0xcd, 0x34, 2505 0xfe, 0x67, 0x2f, 0xfa, 0x0c, 0x10, 0xb2, 0xcd, 2506 0x66, 0x9e, 0x65, 0xac, 0xc5, 0x45, 0x33, 0x20, 2507 0x16, 0x79, 0x82, 0x48, 0x26, 0xaa, 0x54, 0xd9, 2508 0x32, 0x03, 0x99, 0x46, 0x65, 0xf8, 0xa8, 0xe7, 2509 0x3c, 0xb1, 0xf9, 0xed, 0x76, 0x21, 0x36, 0xab, 2510 0x98, 0x2d, 0xf2, 0xd1, 0x75, 0x33, 0x58, 0xb5, 2511 0x7c, 0x4e, 0x3b, 0x78, 0xb6, 0x24, 0x15, 0xd2, 2512 0xac, 0x41, 0x44, 0x46, 0x4d, 0x7a, 0x5b, 0x86, 2513 0xce, 0xc2, 0x93, 0x11, 0x8f, 0x68, 0xb5, 0xc7, 2514 0x83, 0x8f, 0xe1, 0x13, 0x91, 0xef, 0xca, 0x18, 2515 0xa3, 0xf1, 0x04, 0x28, 0x58, 0xd8, 0x54, 0x12, 2516 0x03, 0xbe, 0xe1, 0x29, 0xcf, 0x28, 0xa3, 0x43, 2517 0x78, 0x00, 0xb7, 0x52, 0x00, 0xe3, 0x44, 0x07, 2518 0x5f, 0x67, 0xb1, 0x78, 0x75, 0x9c, 0xe0, 0xc7, 2519 0x33, 0x5f, 0x69, 0x27, 0x05, 0x15, 0xc3, 0xd4, 2520 0x81, 0x09, 0x33, 0x7b, 0x3e, 0xc4, 0x71, 0xc3, 2521 0xc0, 0x9a, 0x2c, 0xb5, 0xfc, 0x00, 0x79, 0x1d, 2522 0x12, 0xb4, 0x90, 0xf1, 0xa3, 0xb1, 0xaa, 0xa8, 2523 0xf9, 0x40, 0x48, 0xb1, 0x8b, 0x3c, 0xa9, 0xa9, 2524 0x36, 0xe0, 0xe8, 0xd3, 0x43, 0x4f, 0x63, 0xcc, 2525 0xe1, 0xbf, 0x93, 0xa5, 0xb0, 0x7a, 0xac, 0xd6, 2526 0x69, 0x42, 0xce, 0x52, 0x8c, 0xd8, 0x30, 0x18, 2527 0x9f, 0x77, 0xa2, 0xd6, 0xde, 0x5a, 0x3d, 0x59, 2528 0x28, 0x3a, 0x2a, 0x58, 0x25, 0xcb, 0x95, 0x01, 2529 0x9d, 0x04, 0x81, 0x1d, 0x63, 0xfb, 0xb1, 0xf3, 2530 0x0b, 0x3d, 0x68, 0xc1, 0x42, 0x83, 0xc5, 0xc2, 2531 0x27, 0x1e, 0x58, 0x4f, 0x42, 0x89, 0x45, 0x08, 2532 0xb2, 0xf2, 0x8d, 0x26, 0xd1, 0xb3, 0x4d, 0xbd, 2533 0xaf, 0x74, 0xc9, 0x7f, 0xbe, 0x81, 0x46, 0x73, 2534 0xdb, 0x68, 0x45, 0x41, 0xb1, 0xbe, 0xe7, 0x76, 2535 0x31, 0x01, 0xc8, 0x8c, 0xb5, 0x26, 0x9e, 0x2e, 2536 0xde, 0x07, 0x9f, 0x5b, 0x7e, 0x73, 0x36, 0xbf, 2537 0x51, 0x60, 0x98, 0xe0, 0x6e, 0x83, 0x85, 0x21, 2538 0x2c, 0xdb, 0x28, 0x2c, 0x8f, 0x4b, 0xf9, 0x15, 2539 0x08, 0x8f, 0x06, 0xa8, 0xfe, 0x26, 0x2b, 0xea, 2540 0xaf, 0xb0, 0x97, 0x3c, 0xb9, 0xf8, 0x25, 0xef, 2541 0xf5, 0x58, 0xd2, 0xf4, 0xbd, 0x1c, 0x1b, 0x84, 2542 0x29, 0xde, 0xbe, 0xb6, 0xfd, 0x30, 0x47, 0x0c, 2543 0x63, 0x3a, 0x3e, 0x6d, 0x8b, 0x0b, 0x1e, 0x64, 2544 0x5d, 0x8f, 0x64, 0xc9, 0x35, 0x7a, 0xb4, 0xb9, 2545 0xfb, 0x47, 0xe4, 0x50, 0xcd, 0xf6, 0x1a, 0xb1, 2546 0xf6, 0x22, 0x0a, 0xd5, 0x63, 0xb5, 0x20, 0xed, 2547 0x13, 0xfb, 0x43, 0x11, 0x67, 0x89, 0x6d, 0x9f, 2548 0xb1, 0x6f, 0xe8, 0x48, 0x2f, 0x7e, 0xda, 0xbc, 2549 0x08, 0xc2, 0xde, 0x1c, 0x29, 0xa4, 0x50, 0x7d, 2550 0x9c, 0x8e, 0xbc, 0x0d, 0x2b, 0xe2, 0xda, 0xb6, 2551 0x9c, 0x6c, 0x08, 0xd3, 0x3c, 0xf6, 0x71, 0x23, 2552 0x90, 0x07, 0x8f, 0x99, 0x86, 0x85, 0xf8, 0xaa, 2553 0xed, 0x65, 0x99, 0xf3, 0xf5, 0x69, 0xe2, 0x6b, 2554 0x67, 0x47, 0x5c, 0x8d, 0x5d, 0xee, 0x9c, 0xda, 2555 0xa1, 0x56, 0x73, 0x35, 0xf1, 0xe7, 0x2e, 0xb9, 2556 0xf9, 0x70, 0xc5, 0xb4, 0xdd, 0x21, 0x9f, 0x25, 2557 0x23, 0xf4, 0x74, 0x57, 0xc1, 0xfd, 0x09, 0x2e, 2558 0x80, 0xea, 0x4d, 0x90, 0x93, 0x84, 0x06, 0x43, 2559 0xc0, 0xbc, 0x26, 0xd2, 0xfd, 0x3b, 0x03, 0x2e, 2560 0x93, 0x90, 0xb3, 0x4b, 0xd4, 0x58, 0x31, 0x18, 2561 0xc5, 0xa5, 0xc4, 0x3c, 0xe5, 0xb5, 0x23, 0xfb, 2562 0xec, 0xb0, 0xb8, 0xe7, 0x7e, 0x1a, 0xb3, 0xf9, 2563 0xce, 0x5a, 0x25, 0x02, 0x2e, 0xcf, 0xb3, 0x4a, 2564 0xe3, 0x5e, 0xd5, 0xc8, 0x78, 0x0a, 0x89, 0x7c, 2565 0x3e, 0x30, 0x8a, 0xd5, 0xb0, 0x60, 0xc1, 0x52, 2566 0x7c, 0xbc, 0x9e, 0x47, 0x0a, 0xa7, 0xc3, 0xee, 2567 0x11, 0x06, 0x72, 0x89, 0x23, 0x8b, 0x51, 0xb8, 2568 0xbb, 0x5d, 0xc1, 0xf0, 0x38, 0x66, 0x8e, 0xa7, 2569 0x43, 0xad, 0xc1, 0x40, 0x80, 0x58, 0xe4, 0xdf, 2570 0x0d, 0xb1, 0x2b, 0xa2, 0xd4, 0x58, 0x20, 0x95, 2571 0xee, 0x51, 0x13, 0x94, 0x1e, 0x8d, 0x1e, 0xd4, 2572 0x2d, 0x82, 0x73, 0xa6, 0x92, 0x0c, 0xec, 0x74, 2573 0x12, 0xbe, 0x2a, 0x8c, 0x72, 0xb3, 0x99, 0x7d, 2574 0x33, 0x50, 0xe4, 0xeb, 0xad, 0x24, 0x7c, 0xef, 2575 0x1a, 0x41, 0x4b, 0x04, 0xe6, 0x21, 0xa3, 0x1a, 2576 0xa4, 0x13, 0xf4, 0xdc, 0x70, 0xa2, 0xdc, 0x0d, 2577 0xc1, 0x02, 0x43, 0xeb, 0xf7, 0x69, 0x82, 0x7a, 2578 0x99, 0x61, 0x1b, 0x14, 0xaa, 0xce, 0x2b, 0x1b, 2579 0xd1, 0xaa, 0x3a, 0x99, 0xae, 0x51, 0xae, 0x35, 2580 0xb9, 0x8c, 0xe0, 0x43, 0x6e, 0x1e, 0x17, 0x36, 2581 0xf0, 0x9e, 0xf2, 0x83, 0x22, 0x6c, 0x82, 0xee, 2582 0xfb, 0x72, 0x35, 0x22, 0x45, 0x4a, 0xbc, 0xfa, 2583 0x65, 0x44, 0xa1, 0xce, 0x6a, 0x6a, 0xe1, 0x3f, 2584 0x6f, 0xd0, 0x45, 0x72, 0x29, 0xf4, 0xf4, 0xb0, 2585 0x97, 0x0e, 0x1e, 0xe6, 0xa8, 0xb6, 0xc8, 0x44, 2586 0x11, 0x99, 0x6e, 0xd9, 0xfd, 0x0b, 0x04, 0xaf, 2587 0x10, 0x0a, 0xd0, 0xae, 0x5d, 0xff, 0x78, 0x32, 2588 0x09, 0x39, 0x73, 0x2e, 0xaf, 0x65, 0x70, 0x3b, 2589 0xd5, 0xfe, 0x90, 0xc0, 0x9c, 0xf5, 0xba, 0xbd, 2590 0x9d, 0x78, 0xe9, 0x67, 0x87, 0x79, 0xad, 0x1f, 2591 0x77, 0x12, 0x8e, 0x8d, 0x6e, 0xc3, 0x69, 0xc6, 2592 0x22, 0x60, 0x2d, 0x4f, 0x49, 0x1b, 0xa7, 0xa3, 2593 0x8a, 0x14, 0x9d, 0x48, 0xfe, 0x0c, 0x38, 0x9a, 2594 0x0e, 0xbc, 0x7e, 0x5c, 0x6c, 0x01, 0xc5, 0x68, 2595 0x39, 0xd1, 0x33, 0xca, 0x23, 0xf6, 0x12, 0x02, 2596 0x59, 0x3f, 0xe2, 0x11, 0x9d, 0xa0, 0x41, 0x3d, 2597 0xa5, 0x3b, 0x5a, 0xe1, 0xdc, 0x66, 0x00, 0xcb, 2598 0x91, 0x39, 0x60, 0xd4, 0xa8, 0xdb, 0x91, 0xf3, 2599 0x2a, 0x7b, 0xfc, 0xc7, 0x41, 0x66, 0x88, 0x68, 2600 0x54, 0xff, 0x9f, 0x38, 0x03, 0x8c, 0x93, 0x72, 2601 0x4c, 0xab, 0xbe, 0xeb, 0x3d, 0x74, 0x74, 0x38, 2602 0xcf, 0x46, 0x08, 0xfa, 0x72, 0xcf, 0xbf, 0xed, 2603 0xb6, 0xc1, 0x0c, 0xc5, 0x13, 0xa9, 0x76, 0x67, 2604 0x6b, 0xe2, 0xad, 0xc4, 0x06, 0xfa, 0x0c, 0x81, 2605 0xd8, 0xdd, 0x7b, 0x28, 0x3f, 0x15, 0xb7, 0x0d, 2606 0xb3, 0x56, 0x5a, 0x3c, 0xa6, 0x8f, 0x96, 0x20, 2607 0xa4, 0x02, 0x6e, 0x0a, 0x7f, 0x8d, 0x97, 0x5a, 2608 0xb2, 0xf5, 0xa9, 0xd8, 0xb9, 0x0b, 0x72, 0x0c, 2609 0x6c, 0x6c, 0xcc, 0x31, 0x76, 0x55, 0x1a, 0xde, 2610 0xf5, 0x17, 0xd9, 0xb0, 0x57, 0xea, 0x39, 0xab, 2611 0xcd, 0xb7, 0x5f, 0x16, 0x07, 0xdb, 0x36, 0x63, 2612 0x16, 0x8c, 0x6f, 0x09, 0xe3, 0xc0, 0x43, 0xda, 2613 0xd0, 0x77, 0x17, 0xb4, 0x72, 0x50, 0xfc, 0x8e, 2614 0x1d, 0xdd, 0xec, 0x00, 0x2b, 0x21, 0xe4, 0x71, 2615 0xa4, 0xdd, 0x51, 0xd9, 0xe0, 0xdb, 0x14, 0x21, 2616 0x42, 0xf2, 0x90, 0x49, 0x25, 0x55, 0x48, 0x47, 2617 0x58, 0x7b, 0x96, 0x97, 0x42, 0xb2, 0xd5, 0x50, 2618 0xa9, 0x28, 0xba, 0xec, 0xba, 0x52, 0x6d, 0xd0, 2619 0xb1, 0x75, 0xd8, 0xd4, 0xda, 0x81, 0x10, 0x0c, 2620 0xb0, 0x75, 0x57, 0x57, 0x81, 0x7f, 0x8d, 0xf9, 2621 0x29, 0xaf, 0x27, 0x85, 0x45, 0x4a, 0x84, 0x53, 2622 0x78, 0xde, 0x09, 0xe9, 0xf5, 0x2c, 0xd4, 0x91, 2623 0xc3, 0x3a, 0x9c, 0x50, 0xe1, 0xc6, 0x20, 0x66, 2624 0x26, 0x4a, 0x7b, 0x4f, 0x05, 0x89, 0x97, 0x3b, 2625 0xe1, 0xb8, 0xbc, 0x28, 0xa4, 0x31, 0xa8, 0x13, 2626 0xb3, 0xc2, 0xf5, 0xee, 0x10, 0xec, 0x4c, 0xf4, 2627 0xd6, 0x21, 0xab, 0x9b, 0x58, 0xe8, 0x95, 0x7c, 2628 0x85, 0x64, 0x57, 0x81, 0x79, 0x1b, 0x8b, 0xb1, 2629 0x84, 0xd5, 0xe9, 0x86, 0xe1, 0x6f, 0xce, 0x56, 2630 0xe1, 0x8d, 0x1d, 0xa2, 0x4d, 0x54, 0x97, 0xc3, 2631 0x2e, 0xc5, 0x5d, 0x6e, 0x9b, 0x4f, 0x43, 0x0c, 2632 0xf0, 0x36, 0x68, 0x53, 0x9e, 0x2f, 0xbd, 0x5a, 2633 0x8f, 0x3c, 0x30, 0x9f, 0x38, 0x40, 0x58, 0x34, 2634 0x27, 0x18, 0xfc, 0x70, 0x54, 0x7e, 0x70, 0x15, 2635 0xeb, 0x93, 0x29, 0x15, 0x7d, 0xa7, 0x6b, 0xa0, 2636 0x5b, 0x7d, 0x2b, 0x7a, 0x79, 0x10, 0xb4, 0x8b, 2637 0xd9, 0xfa, 0x94, 0x5d, 0xc2, 0x1b, 0x0d, 0xf7, 2638 0x47, 0x18, 0xa9, 0x8f, 0xa2, 0x64, 0x32, 0x17, 2639 0x15, 0x1d, 0x3b, 0xed, 0x3c, 0x32, 0x8a, 0x69, 2640 0x2d, 0x14, 0xae, 0x5a, 0x4a, 0xa4, 0x79, 0xdb, 2641 0x6e, 0x9e, 0x81, 0xa5, 0x32, 0x92, 0xa3, 0x55, 2642 0x3e, 0xfa, 0x05, 0x21, 0x1e, 0x1d, 0xb8, 0x08, 2643 0x5e, 0xee, 0x21, 0x14, 0xc4, 0x38, 0x17, 0x6c, 2644 0x24, 0x1a, 0xdb, 0xbd, 0xf0, 0x37, 0x33, 0xc2, 2645 0xc5, 0xec, 0xe9, 0x92, 0x6d, 0x1c, 0xc0, 0x3e, 2646 0x58, 0x26, 0x26, 0xde, 0x87, 0xc2, 0xef, 0x2c, 2647 0x9d, 0x18, 0x7b, 0x71, 0x05, 0xf7, 0x9f, 0x42, 2648 0x29, 0x8c, 0x18, 0x9b, 0xf6, 0xe9, 0x34, 0x75, 2649 0x59, 0x6f, 0x18, 0x8c, 0x43, 0xcc, 0x5c, 0xd7, 2650 0x45, 0x14, 0xda, 0xa0, 0xcf, 0x11, 0x10, 0xb2, 2651 0x00, 0xab, 0x94, 0x59, 0x36, 0xd6, 0x77, 0x7b, 2652 0x8a, 0x84, 0xff, 0x22, 0xd3, 0x60, 0x66, 0x06, 2653 0x42, 0xa2, 0xe6, 0xdd, 0xc0, 0xe6, 0xb7, 0x4c, 2654 0xe7, 0xc6, 0x88, 0x71, 0xb9, 0xf2, 0x75, 0x96, 2655 0x30, 0x85, 0xaf, 0x5f, 0xa7, 0xdb, 0x2b, 0xe7, 2656 0x17, 0xbc, 0xa6, 0x6c, 0x2b, 0xec, 0xef, 0x53, 2657 0x26, 0xe5, 0xad, 0xf2, 0x03, 0x02, 0xac, 0x51, 2658 0xf7, 0xa5, 0x06, 0x8f, 0x80, 0x9f, 0xc6, 0xd0, 2659 0xed, 0x0f, 0xed, 0xea, 0xf6, 0x5b, 0x61, 0xfc, 2660 0x2b, 0xb3, 0x44, 0xfd, 0x26, 0x1c, 0xde, 0x45, 2661 0x9f, 0xdb, 0x58, 0x2a, 0x12, 0x41, 0xdf, 0x9d, 2662 0xf6, 0xf9, 0xfc, 0x89, 0xa0, 0x86, 0x33, 0xd2, 2663 0xcf, 0x8b, 0x17, 0x10, 0x84, 0xbe, 0x94, 0x72, 2664 0x77, 0x28, 0x58, 0x52, 0x9a, 0x24, 0x9c, 0x3a, 2665 0x55, 0xd5, 0x57, 0x57, 0xb1, 0x3d, 0x03, 0xa6, 2666 0x0d, 0xb7, 0x89, 0x61, 0xa6, 0x1d, 0xc6, 0x61, 2667 0xa4, 0x75, 0xc2, 0xa7, 0x0e, 0xc9, 0x4c, 0x95, 2668 0x2a, 0xa1, 0x65, 0x63, 0x1f, 0x82, 0x2c, 0xf0, 2669 0xad, 0xcf, 0x24, 0xca, 0x89, 0x64, 0x72, 0x1e, 2670 0x26, 0x66, 0x37, 0x36, 0x4c, 0x35, 0x1e, 0xe9, 2671 0xb5, 0x64, 0xd9, 0xe1, 0x8f, 0x42, 0x5e, 0x9d, 2672 0x1a, 0xd6, 0xfe, 0x20, 0xa9, 0x74, 0xa9, 0x85, 2673 0x62, 0xc6, 0x17, 0x20, 0x63, 0x1b, 0x8e, 0xb5, 2674 0x1a, 0x2a, 0x81, 0xc6, 0x21, 0xf9, 0x54, 0x04, 2675 0x56, 0x26, 0x89, 0x90, 0xa0, 0xab, 0xcb, 0x5f, 2676 0x86, 0x8f, 0x9e, 0xf1, 0x17, 0x65, 0xa7, 0xb7, 2677 0x28, 0x63, 0x39, 0x5c, 0x3c, 0xeb, 0x1f, 0x9d, 2678 0xf9, 0x19, 0xdb, 0xaa, 0x6c, 0x18, 0x8b, 0x57, 2679 0xac, 0xec, 0x55, 0xf6, 0xb8, 0x2a, 0xc9, 0x24, 2680 0x04, 0xa7, 0xcc, 0xec, 0x53, 0x28, 0x3d, 0xae, 2681 0x75, 0x39, 0xaa, 0x66, 0x84, 0xc6, 0x94, 0xd7, 2682 0xc2, 0xdc, 0x21, 0x12, 0x73, 0x0c, 0x06, 0x2b, 2683 0x17, 0x40, 0x69, 0x49, 0xfd, 0x78, 0x7b, 0x9a, 2684 0x13, 0x0f, 0xc4, 0x8a, 0xd2, 0x60, 0x9d, 0xa4, 2685 0x0b, 0x3a, 0xf4, 0x3a, 0x9b, 0x0a, 0x79, 0x3e, 2686 0x31, 0xaa, 0x27, 0x63, 0x41, 0x38, 0x4e, 0x46, 2687 0x14, 0x8c, 0x55, 0x80, 0x7b, 0x75, 0xc8, 0xe9, 2688 0x15, 0x64, 0xc8, 0xc7, 0xdd, 0xf4, 0x1d, 0xe9, 2689 0x25, 0x4a, 0x0e, 0x06, 0x4a, 0x1a, 0xc8, 0x88, 2690 0xec, 0x46, 0xd6, 0xfb, 0x6b, 0xb8, 0x94, 0x28, 2691 0xaf, 0xbc, 0x2f, 0xe6, 0x28, 0x76, 0xc0, 0x0a, 2692 0xfc, 0x60, 0x42, 0xef, 0x45, 0xff, 0x76, 0xf8, 2693 0xe1, 0x50, 0x6f, 0x94, 0xaf, 0xa5, 0xd9, 0x4d, 2694 0xe9, 0xa9, 0x7c, 0x2d, 0x1d, 0xb3, 0x78, 0x66, 2695 0xc3, 0x6e, 0x4d, 0x22, 0xd9, 0x0f, 0xcf, 0xf0, 2696 0x87, 0xa7, 0xdc, 0xec, 0x5a, 0x12, 0x65, 0x55, 2697 0x3d, 0x9b, 0xc8, 0x33, 0xfd, 0x83, 0xfc, 0x02, 2698 0xfb, 0x22, 0x0c, 0x1d, 0x7f, 0xff, 0x38, 0xe1, 2699 0x6b, 0x78, 0x47, 0xa8, 0x54, 0x31, 0x36, 0x69, 2700 0x44, 0x64, 0xae, 0x1a, 0xfc, 0x8b, 0x3c, 0x3a, 2701 0x9f, 0x3e, 0xca, 0x85, 0xa1, 0x0d, 0x56, 0x72, 2702 0x63, 0xb5, 0x7b, 0xfa, 0x4f, 0x18, 0x76, 0x57, 2703 0x3a, 0xa7, 0xb0, 0x20, 0x24, 0x9b, 0xb1, 0x8d, 2704 0x01, 0xec, 0x32, 0x9c, 0x84, 0xc1, 0x8d, 0x88, 2705 0x0d, 0xe4, 0x71, 0xe5, 0x1f, 0xe2, 0x0b, 0xae, 2706 0x87, 0xcf, 0x5f, 0xbf, 0xde, 0x57, 0x2f, 0x22, 2707 0x5a, 0x63, 0x5a, 0x9c, 0x85, 0x46, 0xf1, 0x3a, 2708 0x7e, 0x04, 0xec, 0xce, 0xb4, 0xa0, 0x00, 0x90, 2709 0x9a, 0x09, 0x11, 0xb4, 0x6b, 0x53, 0x37, 0xd2, 2710 0x03, 0xd1, 0x59, 0x2f, 0xdb, 0xda, 0xe9, 0xf8, 2711 0x0a, 0x67, 0x6a, 0x83, 0x30, 0x09, 0x66, 0x82, 2712 0x11, 0x10, 0xda, 0x52, 0x61, 0x40, 0xca, 0x86, 2713 0x85, 0xdf, 0x01, 0xc3, 0x0e, 0x68, 0xd0, 0xb7, 2714 0x0a, 0x37, 0x95, 0x30, 0xc3, 0x0f, 0x37, 0x49, 2715 0x27, 0x4a, 0x93, 0xd3, 0x6a, 0x1a, 0xaf, 0xa2, 2716 0x0a, 0xbf, 0xb7, 0xb7, 0x68, 0xe7, 0x8d, 0x4c, 2717 0x50, 0xf0, 0x9c, 0x10, 0x93, 0x1c, 0xdf, 0x83, 2718 0x7b, 0xe7, 0xfa, 0xc3, 0x41, 0xbd, 0x6c, 0x06, 2719 0x10, 0x8d, 0x4c, 0x38, 0x0f, 0x74, 0x04, 0x48, 2720 0x07, 0xdd, 0xba, 0xbe, 0x6f, 0x92, 0x7b, 0xc6, 2721 0x87, 0xae, 0x0c, 0xe9, 0x46, 0x52, 0x97, 0xa7, 2722 0xe6, 0x9a, 0x91, 0xbb, 0x7e, 0xb0, 0x65, 0xac, 2723 0x22, 0xe0, 0xa3, 0xc7, 0xe8, 0xc5, 0x53, 0x99, 2724 0x82, 0x1c, 0x2c, 0x54, 0x9b, 0xa0, 0xcf, 0x6b, 2725 0xd5, 0x9e, 0x18, 0xf9, 0x3c, 0x17, 0x88, 0xb4, 2726 0xfa, 0x01, 0x46, 0x6e, 0xd6, 0x41, 0xf2, 0xdd, 2727 0xf1, 0xea, 0xbc, 0x1d, 0x6c, 0xbb, 0xe2, 0xcb, 2728 0xe6, 0xfc, 0x22, 0xb5, 0x82, 0x9a, 0x89, 0x60, 2729 0x30, 0xdc, 0x1f, 0x42, 0x20, 0x34, 0x05, 0x02, 2730 0x70, 0x60, 0xbd, 0x95, 0x22, 0x0e, 0xeb, 0x29, 2731 0x23, 0x0c, 0x51, 0x95, 0x74, 0x7e, 0xae, 0xed, 2732 0x3a, 0x5d, 0x83, 0x20, 0xd9, 0x55, 0x80, 0x9b, 2733 0xe0, 0x50, 0x25, 0xe5, 0xbd, 0xfb, 0x45, 0x43, 2734 0xce, 0x34, 0x5a, 0x8a, 0xcf, 0x68, 0x2f, 0xde, 2735 0xdc, 0x95, 0x1d, 0x72, 0x6b, 0x69, 0x7d, 0xe6, 2736 0xd5, 0x82, 0x2f, 0x65, 0x31, 0x8e, 0xab, 0xbd, 2737 0x66, 0xb9, 0x39, 0x15, 0x02, 0x0f, 0xa7, 0x62, 2738 0xfc, 0xdb, 0xc1, 0x50, 0xfa, 0xf1, 0x6a, 0xe6, 2739 0x88, 0x56, 0x16, 0x3d, 0x1a, 0x6c, 0x1c, 0x95, 2740 0x6e, 0x93, 0xdc, 0x72, 0xc3, 0x35, 0x4d, 0x22, 2741 0xe1, 0xd5, 0xa2, 0xa6, 0xcf, 0xe7, 0xaf, 0x2a, 2742 0x02, 0x02, 0x2b, 0xb4, 0xaa, 0x42, 0x5c, 0x12, 2743 0xbb, 0x1d, 0x0b, 0xe6, 0x16, 0x9e, 0x2a, 0xc8, 2744 0xf5, 0xd4, 0x41, 0xf4, 0x72, 0x9b, 0x68, 0xd5, 2745 0x3a, 0x53, 0xb1, 0x61, 0x7a, 0x5e, 0x74, 0x33, 2746 0x52, 0xe7, 0x51, 0x62, 0xcb, 0x02, 0xfa, 0x0f, 2747 0x9d, 0x7d, 0x51, 0xf4, 0x66, 0xeb, 0x80, 0xff, 2748 0x83, 0xac, 0x1c, 0xde, 0x5d, 0xc6, 0x3a, 0x47, 2749 0x3e, 0x03, 0x9d, 0xaf, 0x4d, 0x9d, 0x2e, 0x27, 2750 0xb4, 0xd0, 0x69, 0x4a, 0xdc, 0x66, 0x96, 0xe9, 2751 0x77, 0x81, 0xfe, 0x13, 0x25, 0xd6, 0x4d, 0xa2, 2752 0x3e, 0xa5, 0xe3, 0xe0, 0xbb, 0x97, 0x27, 0x49, 2753 0x92, 0x10, 0x36, 0xdc, 0x31, 0x25, 0x5e, 0xba, 2754 0xa3, 0x5f, 0xca, 0x74, 0xbe, 0xe6, 0x57, 0xd0, 2755 0xfa, 0x46, 0x81, 0x2a, 0xe4, 0xf6, 0x9d, 0xd8, 2756 0xcf, 0xb4, 0x8f, 0x89, 0x75, 0x5e, 0x8b, 0x0e, 2757 0x10, 0x9e, 0x1a, 0xa5, 0x17, 0xc4, 0x56, 0x97, 2758 0x9e, 0x38, 0x38, 0xd8, 0xef, 0x4b, 0x82, 0x79, 2759 0xc4, 0x54, 0x2c, 0x2b, 0xed, 0xe2, 0x6a, 0x83, 2760 0x4b, 0x12, 0x6a, 0xa7, 0xff, 0x31, 0xe7, 0x8d, 2761 0x0a, 0x9f, 0xab, 0x49, 0xae, 0xee, 0xc1, 0xa8, 2762 0x87, 0xdf, 0x2d, 0x11, 0xda, 0xd9, 0xf6, 0xa1, 2763 0x12, 0x82, 0x96, 0x64, 0x68, 0xa8, 0xe2, 0x13, 2764 0xf8, 0x25, 0xf3, 0x3d, 0xa0, 0xcd, 0x0e, 0xfb, 2765 0x1f, 0xbc, 0x27, 0xe3, 0xed, 0x72, 0xa9, 0x31, 2766 0xee, 0x61, 0xcc, 0xb9, 0xb3, 0x4d, 0x72, 0x41, 2767 0x5c, 0xb8, 0x2d, 0x6f, 0xae, 0xdf, 0xf7, 0xf4, 2768 0x07, 0x04, 0xf3, 0xcf, 0x86, 0x30, 0x6f, 0xed, 2769 0x0c, 0x61, 0x4e, 0x78, 0x56, 0x2e, 0x85, 0xf1, 2770 0xaf, 0x6a, 0x76, 0x28, 0x0f, 0x4b, 0x14, 0xfa, 2771 0xf2, 0xda, 0x0c, 0x7f, 0xe1, 0xe3, 0x76, 0x66, 2772 0xb2, 0xd6, 0xb5, 0xe4, 0x61, 0xec, 0x21, 0xcd, 2773 0xfa, 0x58, 0x61, 0x96, 0x3b, 0x91, 0x82, 0xd4, 2774 0xf2, 0xd8, 0xac, 0x91, 0x7e, 0x2f, 0xaa, 0x92, 2775 0x2e, 0x89, 0x02, 0x19, 0x02, 0xb8, 0xb4, 0x28, 2776 0xde, 0x58, 0x69, 0xca, 0x8b, 0x31, 0x2d, 0x05, 2777 0xab, 0x28, 0xdd, 0x82, 0x60, 0x72, 0x98, 0xa1, 2778 0x50, 0x17, 0x22, 0x64, 0x4a, 0x4f, 0xb9, 0xad, 2779 0xb7, 0x03, 0x0b, 0x84, 0x32, 0x06, 0xa6, 0xb9, 2780 0xd2, 0x32, 0x2a, 0xda, 0xb6, 0xdd, 0xad, 0x57, 2781 0xde, 0xfb, 0x81, 0x1e, 0x91, 0xa1, 0x75, 0xcc, 2782 0x09, 0x2e, 0x1a, 0x0e, 0x90, 0x74, 0x26, 0xd1, 2783 0x8f, 0x9e, 0x0a, 0xe6, 0x62, 0x75, 0xca, 0x2c, 2784 0xc7, 0x85, 0xfa, 0x2b, 0xe2, 0x52, 0xe7, 0xb6, 2785 0x01, 0xb8, 0x9a, 0x53, 0x71, 0x92, 0x7b, 0x4e, 2786 0x48, 0x37, 0x2d, 0x18, 0x19, 0xb3, 0x91, 0xf5, 2787 0x26, 0x66, 0x56, 0x17, 0xb8, 0xb9, 0x4d, 0x38, 2788 0x7c, 0x03, 0x6e, 0x07, 0x1c, 0x25, 0xe0, 0x9c, 2789 0x7d, 0xcf, 0xc5, 0xe8, 0x0c, 0x90, 0xa4, 0xad, 2790 0xa3, 0xad, 0x7c, 0x40, 0x87, 0x4e, 0xe3, 0x9d, 2791 0x23, 0x4b, 0x72, 0x72, 0x6e, 0xe6, 0xca, 0x6a, 2792 0x6b, 0x5f, 0x49, 0x8d, 0xe5, 0x09, 0x42, 0x72, 2793 0x0c, 0x84, 0xdc, 0x59, 0x7e, 0xad, 0x1c, 0x58, 2794 0xdf, 0x7e, 0x0e, 0x5e, 0x36, 0xb8, 0x31, 0x64, 2795 0x1c, 0x2e, 0x89, 0xd3, 0x6a, 0x81, 0x7d, 0xce, 2796 0x04, 0xc9, 0x99, 0x5e, 0x52, 0x11, 0x20, 0x64, 2797 0xc6, 0xf0, 0x9a, 0x5f, 0x3f, 0xad, 0x8a, 0xec, 2798 0x26, 0xa2, 0x7b, 0x52, 0x32, 0x5f, 0x36, 0x4b, 2799 0x28, 0xdc, 0xd3, 0xfb, 0x72, 0x7a, 0x1d, 0xeb, 2800 0xf9, 0x74, 0xef, 0x66, 0xad, 0x86, 0x84, 0xda, 2801 0x13, 0x35, 0x7e, 0xe3, 0x1d, 0xb0, 0xb3, 0xc2, 2802 0x2a, 0xc9, 0x78, 0xed, 0x5f, 0x56, 0xd9, 0x08, 2803 0x13, 0x84, 0x92, 0x72, 0xd5, 0x1c, 0xfd, 0x90, 2804 0x5e, 0x11, 0xb5, 0x49, 0x52, 0x07, 0x9d, 0x5e, 2805 0x4c, 0x43, 0x4f, 0x25, 0x0a, 0x7b, 0xc5, 0xaf, 2806 0xbd, 0x68, 0x70, 0x1d, 0xe6, 0xe5, 0x79, 0x18, 2807 0x2c, 0xa3, 0x92, 0x76, 0x59, 0x84, 0x72, 0x10, 2808 0xf3, 0x6b, 0x8b, 0x15, 0xc1, 0x17, 0x35, 0x1a, 2809 0x88, 0x35, 0x25, 0x07, 0xaa, 0xd6, 0x02, 0xaf, 2810 0x03, 0xee, 0x64, 0x42, 0x23, 0x1c, 0x81, 0x01, 2811 0x45, 0xb8, 0xb5, 0x90, 0xa4, 0x69, 0x58, 0xe4, 2812 0xaa, 0xd9, 0x45, 0x91, 0x11, 0xed, 0x17, 0x01, 2813 0x64, 0x1a, 0x87, 0x13, 0x5d, 0x52, 0xa3, 0xca, 2814 0xa7, 0x50, 0xb7, 0xfa, 0x79, 0x1f, 0xce, 0x20, 2815 0x58, 0x9c, 0x64, 0x1a, 0x2d, 0x15, 0xc9, 0xfa, 2816 0x1e, 0x19, 0xcd, 0xcc, 0x11, 0x95, 0xfd, 0x1e, 2817 0x9b, 0xce, 0xea, 0xbe, 0x33, 0x1c, 0xa5, 0x58, 2818 0x02, 0x80, 0x8e, 0x95, 0xc5, 0x34, 0xa5, 0x66, 2819 0x85, 0xf0, 0x45, 0x76, 0xf0, 0x49, 0x6b, 0xea, 2820 0x0d, 0xaf, 0xb0, 0xa0, 0x7f, 0x8e, 0xe7, 0xfe, 2821 0x8f, 0x42, 0x0f, 0xc9, 0xaf, 0x56, 0xea, 0xa4, 2822 0x3e, 0x28, 0xbd, 0x66, 0x9d, 0x9f, 0x68, 0x41, 2823 0x45, 0xcc, 0xa4, 0x21, 0xa3, 0x40, 0xa7, 0x96, 2824 0xe1, 0xa3, 0x5d, 0x96, 0x40, 0xde, 0xe1, 0xd7, 2825 0xb2, 0xbc, 0xc6, 0x01, 0xc5, 0xa0, 0x9f, 0xee, 2826 0x08, 0x40, 0x29, 0xde, 0x90, 0x7e, 0x8a, 0x3a, 2827 0x8f, 0xa2, 0x43, 0xd3, 0xd6, 0x19, 0xd2, 0xe6, 2828 0xc0, 0xc6, 0x02, 0x8f, 0xb2, 0x81, 0x79, 0x2f, 2829 0x58, 0x0c, 0x75, 0x55, 0xb3, 0x92, 0x23, 0x68, 2830 0xd0, 0x30, 0x85, 0xcf, 0x95, 0xc5, 0x61, 0x06, 2831 0x4b, 0x94, 0xa5, 0x36, 0x68, 0x4f, 0x3c, 0xa1, 2832 0x1d, 0xcd, 0x10, 0xba, 0x1a, 0x5f, 0xa4, 0x52, 2833 0x77, 0x99, 0xfa, 0x20, 0xb1, 0xf9, 0x66, 0xa4, 2834 0x86, 0x3f, 0x7a, 0x87, 0x19, 0xdd, 0x4e, 0xb8, 2835 0x99, 0x6f, 0x12, 0x41, 0x43, 0x0c, 0x08, 0x22, 2836 0xc0, 0x47, 0x49, 0x71, 0x33, 0x6f, 0xc7, 0xd1, 2837 0x22, 0x98, 0x15, 0x56, 0x6a, 0xa6, 0x27, 0x73, 2838 0x03, 0x95, 0x5d, 0xb8, 0xe3, 0x6f, 0x49, 0x7a, 2839 0xe1, 0x62, 0x20, 0xae, 0x3d, 0x8b, 0x33, 0x6b, 2840 0x55, 0x2b, 0x3c, 0xcc, 0x0c, 0x13, 0x40, 0x86, 2841 0xda, 0x79, 0x7c, 0x2a, 0x91, 0xd9, 0xf1, 0xad, 2842 0x5d, 0x01, 0x7e, 0x84, 0xcc, 0xd9, 0xe0, 0xed, 2843 0x02, 0x1c, 0x23, 0x6e, 0xa3, 0xa9, 0xbb, 0x02, 2844 0x20, 0x6c, 0x77, 0x7e, 0x8d, 0xbe, 0xc7, 0xd3, 2845 0xe4, 0x02, 0x2f, 0x48, 0x4d, 0x78, 0xcb, 0xe0, 2846 0x23, 0x29, 0x4a, 0x4c, 0x66, 0x8a, 0xb3, 0xdb, 2847 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2848 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 2849 0x08, 0x0f, 0x19, 0x20, 0x29 2850}; 2851 2852/* 2853 * The message has been specially selected so that: 2854 * it fails the z_max rejection test on iteration one 2855 * it fails the r0_max rejection test on iteration two 2856 * it fails the h_ones rejection test on iteration three 2857 * it successfully generates the signature on iteration four 2858 * Thus, it is an optimal self test in terms of iterations and coverage. 2859 * 2860 * Refer to FIPS 140-3 IG 10.3.A.15 for details of the testing requirements. 2861 */ 2862static const unsigned char ml_dsa_65_msg[] = { 2863 0x23, 0x37, 0x34, 0x37, 0x36, 0x38, 0x23 2864}; 2865 2866static const ST_KAT_PARAM ml_dsa_key[] = { 2867 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PRIV_KEY, ml_dsa_65_priv_key), 2868 ST_KAT_PARAM_END() 2869}; 2870 2871static int ml_dsa_deterministic = 1; 2872static int ml_dsa_encoding = 0; 2873 2874static const ST_KAT_PARAM ml_dsa_sig_init[] = { 2875 ST_KAT_PARAM_INT(OSSL_SIGNATURE_PARAM_DETERMINISTIC, ml_dsa_deterministic), 2876 ST_KAT_PARAM_INT(OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING, ml_dsa_encoding), 2877 ST_KAT_PARAM_END() 2878}; 2879#endif /* OPENSSL_NO_ML_DSA */ 2880 2881#ifndef OPENSSL_NO_SLH_DSA 2882/* 2883 * Deterministic SLH_DSA key generation supplies the private key elements and 2884 * Half of the public key. 2885 */ 2886static const uint8_t slh_dsa_sha2_128f_keygen_entropy[] = { 2887 0xae, 0xd6, 0xf6, 0xf5, 0xc5, 0x40, 0x8b, 0xbf, 0xfa, 0x11, 0x36, 0xbc, 0x90, 0x49, 0xa7, 0x01, 2888 0x4d, 0x4c, 0xe0, 0x71, 0x1e, 0x17, 0x6a, 0x0c, 0x8a, 0x02, 0x35, 0x08, 0xa6, 0x92, 0xc2, 0x07, 2889 0x74, 0xd9, 0x8d, 0x50, 0x00, 0xaf, 0x53, 0xb9, 0x8f, 0x36, 0x38, 0x9a, 0x12, 0x92, 0xbe, 0xd3 2890}; 2891 2892/* The expected outputs for the public and private key elements */ 2893static const uint8_t slh_dsa_sha2_128f_keygen_priv_pub[] = { 2894 0xAE, 0xD6, 0xF6, 0xF5, 0xC5, 0x40, 0x8B, 0xBF, 0xFA, 0x11, 0x36, 0xBC, 0x90, 0x49, 0xA7, 0x01, 2895 0x4D, 0x4C, 0xE0, 0x71, 0x1E, 0x17, 0x6A, 0x0C, 0x8A, 0x02, 0x35, 0x08, 0xA6, 0x92, 0xC2, 0x07, 2896 0x74, 0xD9, 0x8D, 0x50, 0x00, 0xAF, 0x53, 0xB9, 0x8F, 0x36, 0x38, 0x9A, 0x12, 0x92, 0xBE, 0xD3, 2897 0xF4, 0xA6, 0x50, 0xC5, 0x6C, 0x42, 0x6F, 0xCF, 0xDB, 0x88, 0xE3, 0x35, 0x54, 0x59, 0x44, 0x0C 2898}; 2899 2900static const uint8_t slh_dsa_sha2_128f_keygen_pub[] = { 2901 0x74, 0xD9, 0x8D, 0x50, 0x00, 0xAF, 0x53, 0xB9, 0x8F, 0x36, 0x38, 0x9A, 0x12, 0x92, 0xBE, 0xD3, 2902 0xF4, 0xA6, 0x50, 0xC5, 0x6C, 0x42, 0x6F, 0xCF, 0xDB, 0x88, 0xE3, 0x35, 0x54, 0x59, 0x44, 0x0C 2903}; 2904 2905static const ST_KAT_PARAM slh_dsa_sha2_128f_keygen_init_params[] = { 2906 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_SLH_DSA_SEED, 2907 slh_dsa_sha2_128f_keygen_entropy), 2908 ST_KAT_PARAM_END() 2909}; 2910 2911static const ST_KAT_PARAM slh_dsa_128f_keygen_expected_params[] = { 2912 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PRIV_KEY, 2913 slh_dsa_sha2_128f_keygen_priv_pub), 2914 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PUB_KEY, 2915 slh_dsa_sha2_128f_keygen_pub), 2916 ST_KAT_PARAM_END() 2917}; 2918 2919static const unsigned char slh_dsa_sha2_sig_msg[] = { 2920 0x3f 2921}; 2922 2923static const unsigned char slh_dsa_shake_sig_msg[] = { 2924 0x01, 0x02, 0x03, 0x04 2925}; 2926 2927static int deterministic = 1; 2928static const ST_KAT_PARAM slh_dsa_sig_params[] = { 2929 ST_KAT_PARAM_INT(OSSL_SIGNATURE_PARAM_DETERMINISTIC, deterministic), 2930 ST_KAT_PARAM_END() 2931}; 2932 2933static const unsigned char slh_dsa_sha2_128f_priv_pub[] = { 2934 0xd5, 0x21, 0x3b, 0xa4, 0xbb, 0x64, 0x70, 0xf1, 0xb9, 0xed, 0xa8, 0x8c, 0xbc, 0x94, 0xe6, 0x27, 2935 0x7a, 0x58, 0xa9, 0x51, 0xef, 0x7f, 0x2b, 0x81, 0x46, 0x1d, 0xba, 0xc4, 0x1b, 0x5a, 0x6b, 0x83, 2936 0xfa, 0x49, 0x5f, 0xb8, 0x34, 0xde, 0xfe, 0xa7, 0xcc, 0x96, 0xa8, 0x13, 0x09, 0x47, 0x91, 0x35, 2937 0xa6, 0x70, 0x29, 0xe9, 0x06, 0x68, 0xc5, 0xa5, 0x8b, 0x96, 0xe6, 0x01, 0x11, 0x49, 0x1f, 0x3d 2938}; 2939 2940static const ST_KAT_PARAM slh_dsa_sha2_128f_key_params[] = { 2941 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PRIV_KEY, slh_dsa_sha2_128f_priv_pub), 2942 ST_KAT_PARAM_END() 2943}; 2944 2945static const unsigned char slh_dsa_shake_128f_priv_pub[] = { 2946 0xbb, 0xc7, 0x43, 0x06, 0xf7, 0x5d, 0xc2, 0xda, 0xf7, 0x37, 0x2b, 0x3c, 0x98, 0x41, 0xa4, 0xd6, 2947 0x85, 0x2c, 0x17, 0xb4, 0x59, 0xf1, 0x69, 0x2b, 0x8e, 0x9a, 0x1a, 0x0d, 0xac, 0xe5, 0xba, 0x26, 2948 0x38, 0x0c, 0x99, 0x30, 0x4a, 0x0d, 0xdd, 0x32, 0xf3, 0x44, 0xb9, 0x51, 0x44, 0xe1, 0xfd, 0xef, 2949 0x60, 0xbb, 0xc2, 0x34, 0x0e, 0x08, 0x77, 0x0f, 0xb4, 0x1a, 0x80, 0xa7, 0x6c, 0xb0, 0x8e, 0x34, 2950}; 2951 2952static const ST_KAT_PARAM slh_dsa_shake_128f_key_params[] = { 2953 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PRIV_KEY, slh_dsa_shake_128f_priv_pub), 2954 ST_KAT_PARAM_END() 2955}; 2956 2957/* This is the SHA256 digest of the signature */ 2958static const unsigned char slh_dsa_sha2_128f_sig_digest[] = { 2959 0xd3, 0x53, 0x7e, 0x05, 0xae, 0x63, 0x87, 0x6b, 0xf7, 0x80, 0x15, 0xff, 2960 0x86, 0xcc, 0x9e, 0x28, 0x4f, 0x91, 0xca, 0xbf, 0xac, 0x19, 0x12, 0x98, 2961 0xfb, 0xaa, 0x37, 0x55, 0x96, 0x35, 0x1d, 0x55 2962}; 2963 2964static const unsigned char slh_dsa_shake_128f_sig_digest[] = { 2965 0xb7, 0xeb, 0x1f, 0x00, 0x33, 0x41, 0xff, 0x11, 2966 0x3f, 0xc7, 0x4d, 0xce, 0x90, 0x6c, 0x55, 0xf7, 2967 0x4a, 0x54, 0x8b, 0x86, 0xc1, 0xb1, 0x08, 0x48, 2968 0x89, 0x77, 0x00, 0x72, 0x03, 0x92, 0xd1, 0xa6, 2969}; 2970#endif /* OPENSSL_NO_SLH_DSA */ 2971 2972/* Hash DRBG inputs for signature KATs */ 2973static const unsigned char sig_kat_entropyin[] = { 2974 0x06, 0x6d, 0xc8, 0xce, 0x75, 0xb2, 0x89, 0x66, 0xa6, 0x85, 0x16, 0x3f, 2975 0xe2, 0xa4, 0xd4, 0x27, 0xfb, 0xdb, 0x61, 0x66, 0x50, 0x61, 0x6b, 0xa2, 2976 0x82, 0xfc, 0x33, 0x2b, 0x4e, 0x6f, 0x12, 0x20 2977}; 2978static const unsigned char sig_kat_nonce[] = { 2979 0x55, 0x9f, 0x7c, 0x64, 0x89, 0x70, 0x83, 0xec, 0x2d, 0x73, 0x70, 0xd9, 2980 0xf0, 0xe5, 0x07, 0x1f 2981}; 2982static const unsigned char sig_kat_persstr[] = { 2983 0x88, 0x6f, 0x54, 0x9a, 0xad, 0x1a, 0xc6, 0x3d, 0x18, 0xcb, 0xcc, 0x66, 2984 0x85, 0xda, 0xa2, 0xc2, 0xf7, 0x9e, 0xb0, 0x89, 0x4c, 0xb4, 0xae, 0xf1, 2985 0xac, 0x54, 0x4f, 0xce, 0x57, 0xf1, 0x5e, 0x11 2986}; 2987 2988static const ST_KAT_SIGN st_kat_sign_tests[] = { 2989 { 2990 OSSL_SELF_TEST_DESC_SIGN_RSA, 2991 "RSA", "RSA-SHA256", 0, 2992 rsa_crt_key, 2993 ITM_STR(rsa_sig_msg), 2994 ITM(sig_kat_entropyin), 2995 ITM(sig_kat_nonce), 2996 ITM(sig_kat_persstr), 2997 ITM(rsa_expected_sig) 2998 }, 2999#ifndef OPENSSL_NO_EC 3000 { 3001 OSSL_SELF_TEST_DESC_SIGN_ECDSA, 3002 "EC", "ECDSA-SHA256", 0, 3003 ecdsa_prime_key, 3004 ITM_STR(rsa_sig_msg), 3005 ITM(sig_kat_entropyin), 3006 ITM(sig_kat_nonce), 3007 ITM(sig_kat_persstr), 3008 ITM(ecdsa_prime_expected_sig) 3009 }, 3010# ifndef OPENSSL_NO_EC2M 3011 { 3012 OSSL_SELF_TEST_DESC_SIGN_ECDSA, 3013 "EC", "ECDSA-SHA256", 0, 3014 ecdsa_bin_key, 3015 ITM_STR(rsa_sig_msg), 3016 ITM(sig_kat_entropyin), 3017 ITM(sig_kat_nonce), 3018 ITM(sig_kat_persstr), 3019 ITM(ecdsa_bin_expected_sig) 3020 }, 3021# endif 3022# ifndef OPENSSL_NO_ECX 3023 { 3024 OSSL_SELF_TEST_DESC_SIGN_EDDSA, 3025 "ED448", "ED448", 0, 3026 ed448_key, 3027 ITM(ecx_sig_msg), 3028 NULL, 0, NULL, 0, NULL, 0, 3029 ITM(ed448_expected_sig), 3030 }, 3031 { 3032 OSSL_SELF_TEST_DESC_SIGN_EDDSA, 3033 "ED25519", "ED25519", 0, 3034 ed25519_key, 3035 ITM(ecx_sig_msg), 3036 NULL, 0, NULL, 0, NULL, 0, 3037 ITM(ed25519_expected_sig), 3038 }, 3039# endif /* OPENSSL_NO_ECX */ 3040#endif /* OPENSSL_NO_EC */ 3041#ifndef OPENSSL_NO_DSA 3042 { 3043 OSSL_SELF_TEST_DESC_SIGN_DSA, 3044 "DSA", "DSA-SHA256", SIGNATURE_MODE_VERIFY_ONLY, 3045 dsa_key, 3046 ITM_STR(rsa_sig_msg), 3047 ITM(sig_kat_entropyin), 3048 ITM(sig_kat_nonce), 3049 ITM(sig_kat_persstr), 3050 ITM(dsa_expected_sig) 3051 }, 3052#endif /* OPENSSL_NO_DSA */ 3053 3054#ifndef OPENSSL_NO_ML_DSA 3055 { 3056 OSSL_SELF_TEST_DESC_SIGN_ML_DSA, 3057 "ML-DSA-65", "ML-DSA-65", 0, 3058 ml_dsa_key, 3059 ITM(ml_dsa_65_msg), 3060 NULL, 0, 3061 NULL, 0, 3062 NULL, 0, 3063 ITM(ml_dsa_65_sig), 3064 ml_dsa_sig_init, 3065 ml_dsa_sig_init 3066 }, 3067#endif /* OPENSSL_NO_ML_DSA */ 3068#ifndef OPENSSL_NO_SLH_DSA 3069 /* 3070 * FIPS 140-3 IG 10.3.A.16 Note 29 says: 3071 * 3072 * It is recommended (but not required) that if the module implements 3073 * both "s" and "f" algorithms, the module self-test at least one of 3074 * each "s" and "f" algorithm. 3075 * 3076 * Because the "s" version is so slow, we only test the "f" versions 3077 * here. 3078 */ 3079 { 3080 OSSL_SELF_TEST_DESC_SIGN_SLH_DSA, 3081 "SLH-DSA-SHA2-128f", "SLH-DSA-SHA2-128f", SIGNATURE_MODE_SIG_DIGESTED, 3082 slh_dsa_sha2_128f_key_params, 3083 ITM(slh_dsa_sha2_sig_msg), 3084 NULL, 0, NULL, 0, NULL, 0, 3085 ITM(slh_dsa_sha2_128f_sig_digest), 3086 slh_dsa_sig_params, slh_dsa_sig_params 3087 }, 3088 { 3089 OSSL_SELF_TEST_DESC_SIGN_SLH_DSA, 3090 "SLH-DSA-SHAKE-128f", "SLH-DSA-SHAKE-128f", SIGNATURE_MODE_SIG_DIGESTED, 3091 slh_dsa_shake_128f_key_params, 3092 ITM(slh_dsa_shake_sig_msg), 3093 NULL, 0, NULL, 0, NULL, 0, 3094 ITM(slh_dsa_shake_128f_sig_digest), 3095 slh_dsa_sig_params, slh_dsa_sig_params 3096 }, 3097#endif /* OPENSSL_NO_SLH_DSA */ 3098}; 3099 3100#if !defined(OPENSSL_NO_ML_DSA) 3101static const ST_KAT_PARAM ml_dsa_keygen_params[] = { 3102 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_ML_DSA_SEED, sig_kat_entropyin), 3103 ST_KAT_PARAM_END() 3104}; 3105#endif 3106 3107/*- KEM SELF TEST DATA */ 3108/* 3109 * Test case generated via the OpenSSL commands: 3110 * 3111 * openssl genpkey -algorithm ML-KEM-512 -out priv-ml-kem-512.pem 3112 * openssl pkey -in priv-ml-kem-512.pem -pubout -out pub-ml-kem-512.pem 3113 * openssl pkeyutl -encap -inkey pub-ml-kem-512.pem \ 3114 * -pkeyopt ikme:00000000000000000000000000000000 -secret good.dat \ 3115 * -out ctext.dat 3116 * openssl pkeyutl -decap -inkey priv-ml-kem-512.pem \ 3117 * -secret goodcmp.dat -in ctext.dat 3118 * apps/openssl pkeyutl -decap -inkey priv-ml-kem-512.pem \ 3119 * -secret implicit-reject.dat -in <(head -c 768 /dev/zero) 3120 * openssl pkey -in priv-ml-kem-512.pem -text | 3121 * sed '1,/^priv:/d; /^pub:/,$d' | 3122 * tr -d ' :\n' | 3123 * xxd -r -p | 3124 * tail -c 32 > z.dat 3125 * (cat z.dat; head -c 768 /dev/zero) | 3126 * openssl dgst -shake256 -xoflen 32 -binary > expected.dat 3127 */ 3128#ifndef OPENSSL_NO_ML_KEM 3129static const unsigned char ml_kem_512_cipher_text[] = { 3130 0x6b, 0xc5, 0x04, 0x00, 0x27, 0x7a, 0xbb, 0x7e, 3131 0x6b, 0xf9, 0xfb, 0x56, 0x82, 0x01, 0x75, 0xeb, 3132 0xb7, 0xb9, 0xf4, 0xf2, 0x82, 0x2c, 0x6d, 0x0a, 3133 0xe0, 0x80, 0xa3, 0x49, 0x92, 0x0f, 0x6d, 0x00, 3134 0x8e, 0xba, 0x35, 0xb5, 0x42, 0xb9, 0xd7, 0xed, 3135 0x89, 0xcb, 0xfd, 0x38, 0xd7, 0x9f, 0x55, 0x3b, 3136 0xf0, 0x8e, 0x63, 0x80, 0x95, 0xcf, 0x0d, 0x4f, 3137 0x50, 0x40, 0xac, 0x1d, 0x1b, 0xdc, 0x24, 0x84, 3138 0x3b, 0x18, 0xc2, 0x77, 0x9f, 0x24, 0x11, 0x81, 3139 0xa6, 0xcc, 0xd8, 0xf4, 0xe8, 0x00, 0xdc, 0x26, 3140 0x61, 0x36, 0xd1, 0xb6, 0x5d, 0x9c, 0x12, 0x6d, 3141 0xf5, 0xe7, 0x93, 0xc8, 0x6d, 0xac, 0xaf, 0x3c, 3142 0x78, 0x3f, 0xa9, 0xc1, 0x00, 0x6f, 0x08, 0x29, 3143 0x4f, 0x1a, 0x4d, 0x3b, 0xb4, 0x4b, 0x6f, 0xc2, 3144 0x09, 0x00, 0x4b, 0xc1, 0xf0, 0xe6, 0x7f, 0x48, 3145 0x48, 0x09, 0x40, 0xf2, 0x0a, 0x86, 0x18, 0xbf, 3146 0xc6, 0x4e, 0xb2, 0xb0, 0xab, 0xfe, 0x1b, 0xea, 3147 0x91, 0x58, 0x8c, 0x18, 0x6e, 0x30, 0xe8, 0x33, 3148 0x87, 0x29, 0x26, 0xef, 0xe9, 0x0c, 0x3b, 0x8b, 3149 0x0c, 0x99, 0x40, 0x53, 0xb9, 0x30, 0xba, 0x17, 3150 0xb3, 0x8a, 0x74, 0x59, 0x5d, 0x4c, 0x76, 0x1a, 3151 0xd3, 0x3f, 0xe4, 0xf7, 0xa3, 0x0f, 0x3a, 0x2c, 3152 0x85, 0xc1, 0x46, 0xf0, 0xa4, 0x91, 0xa3, 0x12, 3153 0xb2, 0xa4, 0x4b, 0x88, 0x8d, 0x1c, 0x85, 0xb1, 3154 0xe4, 0x41, 0x1f, 0x9d, 0xb7, 0x91, 0x2f, 0x60, 3155 0x98, 0xfd, 0xfc, 0x29, 0x89, 0x11, 0x7d, 0x16, 3156 0x09, 0x9e, 0x76, 0xf1, 0x9c, 0xb3, 0x50, 0xb9, 3157 0xd0, 0x02, 0xd2, 0xa2, 0x0d, 0xdd, 0xee, 0x90, 3158 0x47, 0x0d, 0xb9, 0x4a, 0x53, 0x11, 0xa2, 0x4f, 3159 0x13, 0x5a, 0x40, 0xdc, 0xc6, 0xfe, 0xd7, 0x28, 3160 0x36, 0xec, 0xa0, 0x5e, 0xab, 0xc1, 0x7d, 0x19, 3161 0x33, 0x59, 0xe2, 0xe4, 0xea, 0x26, 0x67, 0x2f, 3162 0xe5, 0x05, 0xd8, 0x34, 0x6e, 0x3c, 0xab, 0x63, 3163 0x8b, 0x24, 0x16, 0xc7, 0x1b, 0x2a, 0x9b, 0xe5, 3164 0x04, 0x78, 0x98, 0x6c, 0x6c, 0x1e, 0x94, 0xe3, 3165 0x7f, 0x86, 0x52, 0xc0, 0x17, 0x56, 0x8d, 0x01, 3166 0x7a, 0x28, 0x81, 0x07, 0x3d, 0x61, 0x2a, 0xcd, 3167 0xc8, 0xb6, 0x7e, 0x5b, 0xad, 0xa8, 0x90, 0xbd, 3168 0x0c, 0x95, 0xb5, 0x09, 0x9d, 0x7c, 0x34, 0x8c, 3169 0x74, 0x8f, 0x8e, 0x7c, 0x28, 0x6c, 0xe2, 0x2f, 3170 0xa2, 0x87, 0x7f, 0x80, 0x43, 0x46, 0x1c, 0xb2, 3171 0x1c, 0x5a, 0xd2, 0xec, 0xad, 0xf9, 0x55, 0xe3, 3172 0x6b, 0x19, 0x54, 0x08, 0x84, 0x1a, 0x34, 0x82, 3173 0xf4, 0x9c, 0xec, 0x3d, 0x65, 0xf9, 0x78, 0x7f, 3174 0x37, 0x47, 0xcf, 0xf1, 0xcb, 0x15, 0xf2, 0xac, 3175 0xff, 0x3b, 0x8f, 0xa0, 0x8c, 0x25, 0x88, 0x5c, 3176 0x38, 0x23, 0x9a, 0x27, 0x16, 0x6a, 0xdf, 0xa3, 3177 0x98, 0x1d, 0x16, 0x33, 0x4b, 0x4f, 0xfb, 0x83, 3178 0x85, 0x66, 0x76, 0x03, 0xb9, 0xb5, 0x46, 0x21, 3179 0xb9, 0xf3, 0xf4, 0xf1, 0x3a, 0x85, 0xec, 0x9e, 3180 0x56, 0x6a, 0xb6, 0x1d, 0xcc, 0xca, 0xfb, 0x11, 3181 0xae, 0x47, 0x7d, 0x93, 0xa5, 0xbc, 0x90, 0x32, 3182 0xde, 0xa1, 0xa5, 0x1e, 0x5d, 0x52, 0x17, 0x98, 3183 0x0a, 0x8b, 0xc4, 0x1a, 0x28, 0x7c, 0x9c, 0x22, 3184 0x3e, 0x33, 0x06, 0x40, 0x77, 0xe5, 0x22, 0x49, 3185 0x86, 0xf9, 0x3c, 0xc5, 0xc1, 0xb9, 0x77, 0x25, 3186 0x53, 0x66, 0x5a, 0x18, 0x83, 0x5a, 0x2b, 0xbf, 3187 0xac, 0x04, 0x70, 0x26, 0xe8, 0x2b, 0xb6, 0x0c, 3188 0xe8, 0x00, 0x95, 0xbb, 0x08, 0x75, 0xf3, 0x37, 3189 0x31, 0x2e, 0xef, 0x28, 0x8d, 0x58, 0x92, 0xd4, 3190 0xfd, 0xd7, 0x02, 0xce, 0x8f, 0x11, 0x83, 0x17, 3191 0x53, 0x19, 0x44, 0xd7, 0xd5, 0x6d, 0x44, 0x04, 3192 0x3a, 0x0a, 0x01, 0x46, 0xf2, 0xd2, 0xa5, 0x05, 3193 0x88, 0xa0, 0xd9, 0x0d, 0xe1, 0xa0, 0x7a, 0xf2, 3194 0x20, 0x2e, 0x5b, 0x05, 0xe4, 0x2b, 0x11, 0x3d, 3195 0xb3, 0x82, 0x64, 0x3b, 0xef, 0xc1, 0x53, 0xba, 3196 0x9f, 0x7f, 0x29, 0x59, 0x87, 0x39, 0x52, 0xda, 3197 0x7b, 0xff, 0xd7, 0xdd, 0xa1, 0xa9, 0x9f, 0xa1, 3198 0xe2, 0x38, 0x74, 0xb0, 0x94, 0xdc, 0xc5, 0xb5, 3199 0xf3, 0x61, 0xdf, 0x92, 0x62, 0xe1, 0x96, 0x87, 3200 0x6d, 0xb4, 0x2c, 0xc7, 0xf0, 0x38, 0xe9, 0x5e, 3201 0xfc, 0xff, 0x4c, 0x01, 0xc7, 0x59, 0x39, 0xe5, 3202 0x9b, 0xfb, 0xf5, 0x2b, 0x1b, 0xe5, 0xf8, 0x25, 3203 0x06, 0x07, 0xc7, 0x82, 0x46, 0x2a, 0x99, 0xd0, 3204 0xa9, 0x67, 0x81, 0xd7, 0xa2, 0x29, 0x96, 0x1a, 3205 0x94, 0x8e, 0x7d, 0x51, 0x76, 0x99, 0xad, 0x61, 3206 0xec, 0xb6, 0xc0, 0x58, 0x8e, 0xd0, 0x9d, 0xff, 3207 0x58, 0x57, 0x1b, 0x2e, 0xad, 0x65, 0xd8, 0xde, 3208 0xa5, 0xfa, 0x81, 0x4b, 0x2c, 0x06, 0x1b, 0xfe, 3209 0x49, 0x20, 0x4d, 0x5e, 0x1b, 0xb7, 0x40, 0x96, 3210 0xaa, 0x81, 0x25, 0xeb, 0x84, 0xdb, 0xea, 0x5d, 3211 0x0b, 0xaf, 0xf9, 0x8e, 0x41, 0xa6, 0xdd, 0x91, 3212 0x3a, 0x68, 0x54, 0xb7, 0x2e, 0xb1, 0x74, 0xff, 3213 0xf5, 0x0d, 0xa7, 0x3c, 0xc7, 0x30, 0x5b, 0x55, 3214 0xc6, 0x2d, 0xc8, 0x4c, 0xb4, 0xad, 0xcc, 0xd0, 3215 0xa1, 0x1b, 0x41, 0xc7, 0x23, 0xe8, 0xda, 0xff, 3216 0xb7, 0x3a, 0x12, 0xc2, 0xdc, 0x39, 0x7c, 0xf4, 3217 0xb9, 0x50, 0x00, 0x53, 0x88, 0xc8, 0x77, 0x49, 3218 0xfd, 0x70, 0x3d, 0xe0, 0xaa, 0x0c, 0x28, 0xd4, 3219 0xa2, 0xec, 0x82, 0x5d, 0xda, 0xe8, 0x05, 0x2f, 3220 0xe8, 0x9c, 0x21, 0x39, 0x3a, 0x22, 0x2f, 0x0a, 3221 0x5c, 0x6d, 0x01, 0xdf, 0xc8, 0x9f, 0x46, 0xf7, 3222 0x15, 0x02, 0xad, 0x19, 0x35, 0x63, 0x55, 0x58, 3223 0xf5, 0x7a, 0x46, 0xc9, 0x7a, 0xe6, 0x33, 0x84, 3224 0x48, 0x2b, 0xf0, 0xe7, 0xc5, 0x72, 0x98, 0x43, 3225 0x6a, 0x99, 0xba, 0x00, 0x57, 0x4f, 0xaa, 0x0a 3226}; 3227 3228static const unsigned char ml_kem_512_private_key[] = { 3229 0x87, 0xca, 0x19, 0x93, 0xb6, 0x4d, 0x89, 0x32, 3230 0xae, 0x3b, 0x22, 0x52, 0x82, 0xa1, 0xb3, 0xc1, 3231 0x37, 0x65, 0xdc, 0xc1, 0x22, 0x4c, 0x43, 0x77, 3232 0x33, 0x0a, 0x04, 0xec, 0xec, 0x0b, 0x25, 0x05, 3233 0x40, 0x07, 0x53, 0x82, 0xbe, 0x37, 0x52, 0x53, 3234 0x12, 0x87, 0x7d, 0x77, 0x69, 0xfd, 0x59, 0x4f, 3235 0xbd, 0x16, 0x42, 0x82, 0x58, 0x9d, 0xee, 0x5c, 3236 0x0f, 0x2c, 0x14, 0x7f, 0xc6, 0x2a, 0x95, 0x42, 3237 0x10, 0x3c, 0x08, 0xbc, 0xcc, 0xa0, 0x05, 0x82, 3238 0xe9, 0xc5, 0x26, 0x81, 0xfa, 0xb8, 0x79, 0x78, 3239 0x5b, 0x3e, 0x79, 0x49, 0x68, 0x44, 0xb3, 0x7b, 3240 0xf5, 0x26, 0x62, 0x7a, 0x8a, 0x3c, 0xd8, 0x82, 3241 0x1f, 0x16, 0x1d, 0x92, 0x99, 0xac, 0xc4, 0xa9, 3242 0xb9, 0x30, 0x32, 0x6b, 0x6b, 0x67, 0x3d, 0x16, 3243 0x13, 0x1d, 0xf0, 0x98, 0x94, 0x42, 0x90, 0x68, 3244 0xfc, 0x65, 0xa3, 0xe5, 0x16, 0x22, 0x09, 0x64, 3245 0xc0, 0x7d, 0x54, 0x03, 0x47, 0x89, 0xbe, 0xae, 3246 0x61, 0x4b, 0x13, 0xa1, 0xcd, 0xad, 0xbc, 0x20, 3247 0x5e, 0x36, 0x36, 0x34, 0x41, 0x1d, 0x5b, 0x3a, 3248 0x26, 0x91, 0x80, 0x75, 0xe0, 0x63, 0x9d, 0xd6, 3249 0x35, 0xc9, 0x28, 0x81, 0xa4, 0x6e, 0xfb, 0x95, 3250 0x01, 0x11, 0x8f, 0xcc, 0x18, 0xb3, 0x9a, 0x91, 3251 0x66, 0xa6, 0x37, 0x6c, 0xeb, 0x71, 0x42, 0x29, 3252 0xec, 0x71, 0xa4, 0x99, 0x6d, 0x92, 0x97, 0x9d, 3253 0x94, 0x64, 0x6e, 0xc3, 0xf0, 0x5d, 0xa5, 0x49, 3254 0x8f, 0x66, 0xa5, 0x0a, 0x9a, 0xb9, 0xcf, 0x85, 3255 0x20, 0xa7, 0x28, 0xe1, 0xc2, 0x10, 0x08, 0x72, 3256 0x58, 0x71, 0x56, 0x3e, 0x7b, 0x47, 0x46, 0x81, 3257 0x7d, 0x74, 0xfa, 0xb2, 0xb6, 0xf2, 0xa0, 0xe3, 3258 0x4a, 0x0a, 0x5e, 0x95, 0x2b, 0x32, 0xf1, 0x07, 3259 0x2c, 0x30, 0x5e, 0x81, 0x84, 0x58, 0xf3, 0x42, 3260 0x34, 0xdb, 0xaa, 0xc4, 0x06, 0xcb, 0x63, 0x72, 3261 0xfa, 0x01, 0x86, 0xe8, 0xca, 0xd7, 0x73, 0x1d, 3262 0xac, 0xd8, 0x64, 0x60, 0x66, 0xb1, 0x19, 0xb1, 3263 0x59, 0xac, 0x78, 0x21, 0xab, 0x9a, 0x62, 0xbf, 3264 0xe8, 0x1b, 0xd1, 0xdc, 0x75, 0x08, 0xa4, 0x9e, 3265 0x22, 0x54, 0xa8, 0x36, 0x68, 0x4b, 0xb7, 0x22, 3266 0xa3, 0xbc, 0x04, 0x09, 0xe2, 0xe9, 0x4d, 0xce, 3267 0xf5, 0x46, 0x69, 0x1a, 0x47, 0x80, 0xb2, 0xa5, 3268 0xa0, 0x24, 0xcf, 0x0d, 0x60, 0x95, 0x99, 0x33, 3269 0xad, 0x6a, 0x58, 0x7a, 0x56, 0x53, 0x86, 0x44, 3270 0xa8, 0x3c, 0x1f, 0x92, 0x55, 0x3f, 0x3a, 0x3b, 3271 0x5f, 0x81, 0xaa, 0x0c, 0xc4, 0x4b, 0x1a, 0xe3, 3272 0x61, 0x8a, 0xd0, 0x5d, 0x29, 0x87, 0xb6, 0x7d, 3273 0x1c, 0x85, 0xa5, 0x14, 0xb0, 0xde, 0x1c, 0x8d, 3274 0x5c, 0xc1, 0x5c, 0x04, 0xfc, 0x77, 0xad, 0x03, 3275 0x55, 0x96, 0xe0, 0xa7, 0x43, 0xb5, 0x95, 0x9a, 3276 0xd5, 0x22, 0xef, 0x13, 0x5f, 0x14, 0x9c, 0x0e, 3277 0x7e, 0x56, 0x89, 0x37, 0x33, 0xc9, 0x00, 0x54, 3278 0x7e, 0xea, 0x32, 0x4f, 0x02, 0x85, 0xcd, 0xe5, 3279 0x9c, 0x25, 0x00, 0x3b, 0xad, 0xc2, 0x72, 0x3a, 3280 0x38, 0x66, 0x95, 0xf9, 0xf4, 0x22, 0x1f, 0x50, 3281 0x19, 0x20, 0x6a, 0x31, 0x03, 0xf8, 0x97, 0x91, 3282 0xf0, 0x42, 0xbb, 0xc0, 0x86, 0xde, 0x56, 0x93, 3283 0xf2, 0x78, 0x9b, 0xc9, 0x98, 0x16, 0x47, 0x83, 3284 0x67, 0x55, 0x92, 0x4e, 0x5a, 0xfa, 0x5d, 0x88, 3285 0xf9, 0xc8, 0xef, 0xa8, 0x21, 0x34, 0x58, 0x5f, 3286 0xca, 0xbb, 0x52, 0x98, 0xbc, 0x5c, 0xf5, 0xa7, 3287 0xae, 0xc5, 0xfc, 0x78, 0xf9, 0xa5, 0x30, 0x16, 3288 0x68, 0x9d, 0x62, 0x17, 0x41, 0x7a, 0x95, 0xcf, 3289 0x27, 0xb6, 0x6d, 0xae, 0x58, 0xa7, 0x28, 0x8c, 3290 0x8f, 0xc3, 0x28, 0xac, 0x06, 0x79, 0x9d, 0x94, 3291 0xc4, 0x9d, 0xed, 0xb2, 0x61, 0xf4, 0x44, 0x86, 3292 0xec, 0x12, 0xc3, 0x13, 0x97, 0xa7, 0x8b, 0x9a, 3293 0x63, 0x2e, 0xf1, 0x66, 0x08, 0x84, 0x32, 0xf6, 3294 0x15, 0x3b, 0x91, 0xca, 0xce, 0xf7, 0x40, 0x53, 3295 0xa9, 0x28, 0x11, 0x63, 0xa0, 0x23, 0x2e, 0xc4, 3296 0x44, 0x28, 0x05, 0x01, 0x02, 0x74, 0xcf, 0x9c, 3297 0x3a, 0x1a, 0xbc, 0x93, 0x8a, 0x2c, 0xe8, 0x9a, 3298 0xca, 0xe1, 0x74, 0x62, 0x03, 0x88, 0xc7, 0x12, 3299 0x20, 0x96, 0x3c, 0x4d, 0x10, 0x79, 0x28, 0x6f, 3300 0x7b, 0xa8, 0x1b, 0xfb, 0x5e, 0x57, 0x17, 0xcc, 3301 0x6d, 0xd0, 0x72, 0x8a, 0xb2, 0x70, 0xa3, 0x0a, 3302 0x88, 0x03, 0x5b, 0x88, 0x5d, 0x35, 0x12, 0x8e, 3303 0xac, 0xc1, 0x81, 0xca, 0xb7, 0x2b, 0xb1, 0x96, 3304 0xf6, 0x35, 0xce, 0xbb, 0x75, 0xad, 0x0d, 0xd0, 3305 0xba, 0x4e, 0x43, 0x5b, 0x31, 0x08, 0x93, 0x32, 3306 0x72, 0x63, 0x58, 0xc5, 0xa2, 0x70, 0x95, 0x12, 3307 0x8f, 0xf2, 0xc1, 0x61, 0xeb, 0x22, 0xe9, 0x4a, 3308 0x65, 0xa5, 0x48, 0x5d, 0x4c, 0x11, 0x78, 0x69, 3309 0x0b, 0x1f, 0x39, 0x2b, 0x7f, 0x63, 0x77, 0xad, 3310 0x96, 0x6b, 0x67, 0x80, 0x90, 0x70, 0x57, 0x2b, 3311 0xbc, 0x68, 0x9c, 0xaa, 0xb2, 0xd8, 0x3c, 0xbf, 3312 0xd6, 0x4f, 0xc4, 0x28, 0x65, 0x74, 0x54, 0x84, 3313 0x43, 0x9a, 0x1c, 0x96, 0x50, 0x02, 0x97, 0xc6, 3314 0xcf, 0xb0, 0xb1, 0x1d, 0x98, 0x9a, 0x32, 0x94, 3315 0x73, 0x88, 0x94, 0x78, 0x2d, 0x5f, 0x25, 0x05, 3316 0x5f, 0xa6, 0x96, 0x7a, 0xc8, 0x3a, 0xdf, 0xa8, 3317 0x19, 0xb2, 0x53, 0x53, 0x05, 0xf9, 0x31, 0xdc, 3318 0x58, 0x6c, 0xd1, 0x3a, 0x9b, 0x47, 0x3b, 0x7d, 3319 0x87, 0xe5, 0xb4, 0xb2, 0xd9, 0x96, 0x2a, 0x59, 3320 0x90, 0x3c, 0xcc, 0xad, 0xdc, 0xa2, 0x57, 0x87, 3321 0x71, 0xc6, 0x7e, 0x5a, 0x49, 0x98, 0xc8, 0x94, 3322 0x29, 0x30, 0x7b, 0x0e, 0x01, 0x97, 0x53, 0x18, 3323 0x32, 0x50, 0x73, 0x9e, 0x14, 0x47, 0x97, 0xbd, 3324 0xcc, 0x22, 0xab, 0x02, 0x95, 0xd7, 0xc5, 0x32, 3325 0xdf, 0x17, 0x84, 0x86, 0x77, 0x41, 0x6e, 0x95, 3326 0x4d, 0x66, 0xf9, 0xb0, 0x9e, 0x12, 0x81, 0x53, 3327 0x2a, 0x2e, 0x8f, 0x0c, 0x6a, 0xbe, 0x00, 0x37, 3328 0xe7, 0xe8, 0x11, 0x90, 0x97, 0xc9, 0xec, 0x84, 3329 0x5a, 0xa0, 0x69, 0x85, 0xc0, 0x88, 0x55, 0x2c, 3330 0x41, 0xb6, 0x15, 0x17, 0x36, 0x42, 0xc1, 0x02, 3331 0x51, 0xc0, 0x6e, 0x91, 0xa2, 0x5c, 0x24, 0x3c, 3332 0x02, 0x63, 0xb6, 0x75, 0xc7, 0x20, 0x7d, 0x58, 3333 0x70, 0x1d, 0x13, 0xa5, 0x2e, 0xab, 0x92, 0x56, 3334 0x5e, 0xf1, 0xa1, 0xde, 0xfb, 0xae, 0xfe, 0x4c, 3335 0x0b, 0x03, 0xf5, 0x04, 0x44, 0xa3, 0xbe, 0x20, 3336 0xb1, 0x71, 0x31, 0x0b, 0xa3, 0xf2, 0x08, 0x52, 3337 0xf3, 0xa2, 0xa1, 0x8e, 0x72, 0x29, 0x40, 0x70, 3338 0x15, 0x64, 0x60, 0x52, 0xd2, 0xe7, 0x3a, 0xbe, 3339 0xe3, 0x18, 0xd7, 0x55, 0x89, 0x9c, 0x78, 0x4a, 3340 0x6f, 0xb5, 0xaa, 0xb1, 0x7c, 0x90, 0x2c, 0xb6, 3341 0x8a, 0xfa, 0x36, 0x57, 0xb9, 0x01, 0x2e, 0x1b, 3342 0xb8, 0xb6, 0xaa, 0xc2, 0x68, 0x9a, 0xa4, 0x8c, 3343 0x2d, 0x42, 0x62, 0xbb, 0x29, 0x63, 0xb0, 0x6a, 3344 0x24, 0x22, 0x82, 0x54, 0x1c, 0xf6, 0x14, 0x19, 3345 0xd9, 0x0e, 0x2b, 0xd3, 0x66, 0xbe, 0xe7, 0xa4, 3346 0x36, 0x9b, 0x72, 0x41, 0xa6, 0x6b, 0xf2, 0x64, 3347 0x5d, 0x8e, 0x90, 0x4c, 0x3f, 0x7b, 0x30, 0x0c, 3348 0x04, 0x1d, 0x56, 0x87, 0x39, 0x3d, 0x2c, 0xa9, 3349 0x29, 0x75, 0xcb, 0xfd, 0xc0, 0x18, 0xdd, 0xc6, 3350 0x0a, 0xf5, 0x62, 0x00, 0x9e, 0xb0, 0x88, 0x8e, 3351 0x5a, 0x05, 0x76, 0x24, 0x6a, 0xce, 0x74, 0x5b, 3352 0xb1, 0x63, 0x40, 0x8b, 0x5a, 0x9a, 0xe3, 0xc1, 3353 0x94, 0xa8, 0x5c, 0x21, 0x90, 0x7b, 0x37, 0xb1, 3354 0x62, 0x8e, 0xcd, 0x9a, 0x15, 0xec, 0x20, 0x24, 3355 0x87, 0x30, 0x27, 0x34, 0x44, 0xb0, 0xa2, 0xf4, 3356 0x54, 0xf9, 0xb4, 0x73, 0x0f, 0x33, 0x91, 0x50, 3357 0x47, 0x6e, 0xe0, 0x70, 0x98, 0xf6, 0xbc, 0x1b, 3358 0x97, 0xcc, 0x1b, 0xd3, 0xb8, 0xc1, 0xa2, 0xeb, 3359 0x0e, 0x50, 0xa7, 0x82, 0xf2, 0x11, 0x5d, 0xf6, 3360 0x17, 0x49, 0x6f, 0x6c, 0x6f, 0x8c, 0x09, 0xb0, 3361 0x5f, 0x88, 0x8d, 0x9e, 0x93, 0x3d, 0x28, 0x77, 3362 0x46, 0xc6, 0x31, 0xb3, 0x10, 0x87, 0x26, 0xb0, 3363 0xc4, 0xa7, 0xc8, 0x8b, 0x09, 0xc8, 0x60, 0xac, 3364 0xd7, 0x52, 0x35, 0x70, 0xc8, 0x02, 0xbd, 0x38, 3365 0x72, 0x43, 0x16, 0x2d, 0x12, 0x8c, 0xa2, 0x29, 3366 0x4c, 0x83, 0x43, 0x18, 0xcc, 0x21, 0xfb, 0x14, 3367 0xd2, 0xab, 0x37, 0x3f, 0x22, 0x4e, 0x3f, 0xd4, 3368 0x98, 0x43, 0x85, 0x95, 0x09, 0xf4, 0xca, 0x1a, 3369 0x1a, 0x56, 0x6c, 0x05, 0x67, 0x88, 0xa3, 0xaa, 3370 0x48, 0x4a, 0xaa, 0xbd, 0xf1, 0xa0, 0x8f, 0x1b, 3371 0x44, 0xc7, 0x56, 0xab, 0x2a, 0x0c, 0x8b, 0xc5, 3372 0x85, 0x1e, 0xe2, 0xeb, 0x23, 0x03, 0x4c, 0x2e, 3373 0xaa, 0x5a, 0xc1, 0x5f, 0x89, 0x75, 0x1b, 0xd5, 3374 0xca, 0xe1, 0xd5, 0x90, 0x89, 0xd5, 0x00, 0x2b, 3375 0xb1, 0xb3, 0xbf, 0xca, 0x4a, 0xde, 0x09, 0x82, 3376 0xad, 0x67, 0x83, 0xe9, 0xd3, 0x7f, 0xb3, 0xe3, 3377 0x20, 0xac, 0x98, 0x55, 0xdf, 0x66, 0x6b, 0xfd, 3378 0x7c, 0x6b, 0x87, 0xa9, 0xa4, 0x6e, 0x25, 0x97, 3379 0x12, 0x56, 0x11, 0x61, 0x50, 0x7e, 0x17, 0x35, 3380 0x98, 0xf9, 0x88, 0xac, 0xb6, 0xf9, 0xab, 0x3a, 3381 0x10, 0x92, 0x63, 0x24, 0x46, 0x88, 0xc7, 0x08, 3382 0x78, 0x75, 0x8f, 0xf4, 0xd4, 0x31, 0x3b, 0x76, 3383 0x64, 0xf0, 0xf5, 0x10, 0xe9, 0x13, 0xca, 0x01, 3384 0xc5, 0x2b, 0x3a, 0x1b, 0x46, 0x53, 0x51, 0x44, 3385 0xe2, 0xdb, 0x0c, 0xac, 0xe8, 0xa6, 0x46, 0x66, 3386 0x00, 0xcf, 0x2a, 0x87, 0x83, 0x50, 0x07, 0xe1, 3387 0x6a, 0xa5, 0x07, 0x80, 0x1d, 0x86, 0xb7, 0x38, 3388 0x5e, 0x66, 0x9b, 0xfa, 0xf6, 0xba, 0x1d, 0xf5, 3389 0x68, 0x31, 0x63, 0xc2, 0xd5, 0x70, 0x53, 0x2f, 3390 0xd7, 0x43, 0x90, 0x54, 0x64, 0x0f, 0x24, 0x4c, 3391 0x52, 0x87, 0x13, 0x59, 0xd2, 0x84, 0x2f, 0xc3, 3392 0x37, 0xa0, 0x60, 0x03, 0x3a, 0xf0, 0x5e, 0xaa, 3393 0x00, 0x1c, 0x34, 0xfc, 0x7b, 0xd8, 0xf9, 0x10, 3394 0x29, 0xe4, 0x6c, 0x29, 0x43, 0x36, 0x27, 0x64, 3395 0x5d, 0x67, 0x86, 0x64, 0x21, 0xd6, 0x61, 0xaf, 3396 0x25, 0x74, 0x80, 0x53, 0x2b, 0x88, 0x78, 0x50, 3397 0xdc, 0x49, 0x9f, 0xfe, 0xd5, 0xb1, 0x40, 0x98, 3398 0xa0, 0x33, 0x72, 0x5e, 0x82, 0x0a, 0x5b, 0xe1, 3399 0x40, 0x0a, 0x0c, 0xb7, 0x03, 0x74, 0x1c, 0xa7, 3400 0x4b, 0x47, 0x86, 0x73, 0xaa, 0xcf, 0x85, 0x16, 3401 0x6e, 0xe8, 0xa1, 0x84, 0xdb, 0x2c, 0x58, 0x54, 3402 0x9c, 0x22, 0x40, 0xb8, 0x30, 0x8c, 0x27, 0xbe, 3403 0xba, 0x40, 0xc3, 0xb9, 0xd7, 0x29, 0xed, 0xb1, 3404 0x8c, 0xc2, 0x06, 0x8e, 0xcd, 0xb2, 0x7d, 0xa2, 3405 0x2b, 0x2c, 0xd3, 0xe7, 0xa0, 0xba, 0xa5, 0x30, 3406 0xc5, 0x19, 0x3c, 0xd3, 0xc8, 0x6b, 0xf8, 0x6a, 3407 0x44, 0xf0, 0x79, 0x9e, 0x51, 0x55, 0xb0, 0x9b, 3408 0xe2, 0x50, 0x98, 0x85, 0x23, 0xb3, 0xa7, 0x31, 3409 0xdd, 0x89, 0x1b, 0xc2, 0x00, 0x60, 0x11, 0xa0, 3410 0x65, 0xc0, 0xab, 0x57, 0xf1, 0xa6, 0xc1, 0x78, 3411 0x89, 0x55, 0xe0, 0x13, 0x5f, 0xa5, 0xca, 0x8f, 3412 0x3e, 0x52, 0xc7, 0x5d, 0x37, 0x16, 0x97, 0x3a, 3413 0x2f, 0xb2, 0x2c, 0x0e, 0xb1, 0x7c, 0x1b, 0x32, 3414 0x85, 0x29, 0xd9, 0xfa, 0x76, 0x56, 0xd7, 0x4d, 3415 0xea, 0x74, 0x0d, 0x9f, 0x07, 0x97, 0x77, 0xc3, 3416 0x6c, 0x17, 0xa1, 0x9c, 0x19, 0x58, 0x9e, 0x84, 3417 0xd2, 0xb8, 0xe4, 0xd1, 0xbc, 0x31, 0x07, 0xcb, 3418 0xd2, 0x78, 0x14, 0x22, 0x48, 0x35, 0x48, 0x44, 3419 0x6c, 0x89, 0x93, 0x14, 0x77, 0x44, 0xaa, 0x9e, 3420 0xc1, 0xc5, 0x93, 0xec, 0x2d, 0x5b, 0xaa, 0xc8, 3421 0x6a, 0x0a, 0xf6, 0x4a, 0x85, 0xe9, 0x09, 0xdf, 3422 0x8e, 0x28, 0x16, 0x60, 0x5d, 0x20, 0xb4, 0xe3, 3423 0x82, 0xb3, 0x0b, 0xbb, 0x61, 0xbf, 0x3a, 0x5f, 3424 0x82, 0x1a, 0x0b, 0x5d, 0xba, 0x9a, 0xd3, 0xe7, 3425 0xe5, 0xbd, 0x1b, 0x37, 0xa7, 0x5e, 0x0f, 0x09, 3426 0x29, 0x74, 0xe8, 0x46, 0xe8, 0xc3, 0x7c, 0x45, 3427 0x48, 0x7d, 0x60, 0x73, 0x9f, 0x99, 0x35, 0x17, 3428 0x19, 0xa5, 0x39, 0x47, 0x23, 0x26, 0x2b, 0x3b, 3429 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3430 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3431 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3432 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 3433}; 3434 3435static const unsigned char ml_kem_512_secret[] = { 3436 0x4a, 0xd5, 0x3a, 0x06, 0xb2, 0x9f, 0x12, 0x56, 3437 0x84, 0x21, 0xa5, 0x52, 0xc0, 0x81, 0x95, 0xb5, 3438 0x86, 0x73, 0xc8, 0x2f, 0x87, 0x0c, 0xc1, 0xcc, 3439 0xd6, 0x5a, 0x08, 0xe4, 0x32, 0x5f, 0xeb, 0x27 3440}; 3441 3442static const unsigned char ml_kem_512_reject_secret[] = { 3443 0x87, 0xf1, 0xe8, 0x13, 0xb7, 0x2e, 0x04, 0x87, 3444 0x47, 0x22, 0x56, 0x6e, 0x12, 0x80, 0xd8, 0x9d, 3445 0x8b, 0x44, 0xb7, 0xfd, 0xff, 0x7d, 0x69, 0x23, 3446 0x36, 0xd7, 0xb8, 0x7f, 0x38, 0xe7, 0x85, 0xce 3447}; 3448 3449static const unsigned char ml_kem_512_entropy[ML_KEM_RANDOM_BYTES] = { 3450 0 3451}; 3452 3453static const unsigned char ml_kem_512_seed[ML_KEM_SEED_BYTES] = { 3454 0 3455}; 3456 3457static const ST_KAT_PARAM ml_kem_keygen_params[] = { 3458 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_ML_KEM_SEED, ml_kem_512_seed), 3459 ST_KAT_PARAM_END() 3460}; 3461 3462static const ST_KAT_PARAM ml_kem_key[] = { 3463 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PRIV_KEY, ml_kem_512_private_key), 3464 ST_KAT_PARAM_END() 3465}; 3466 3467static const ST_KAT_KEM st_kat_kem_tests[] = { 3468 { 3469 OSSL_SELF_TEST_DESC_KEM, 3470 "ML-KEM-512", 3471 ml_kem_key, 3472 ITM(ml_kem_512_cipher_text), 3473 ITM(ml_kem_512_entropy), 3474 ITM(ml_kem_512_secret), 3475 ml_kem_512_reject_secret /* No length because same as _secret's */ 3476 }, 3477}; 3478#endif /* OPENSSL_NO_ML_KEM */ 3479 3480#if !defined(OPENSSL_NO_ML_KEM) || !defined(OPENSSL_NO_ML_DSA) || !defined(OPENSSL_NO_SLH_DSA) 3481static const ST_KAT_ASYM_KEYGEN st_kat_asym_keygen_tests[] = { 3482# if !defined(OPENSSL_NO_ML_KEM) 3483 /* 3484 * FIPS 140-3 IG 10.3.A resolution 14 mandates a CAST for ML-KEM 3485 * key generation. 3486 */ 3487 { 3488 OSSL_SELF_TEST_DESC_KEYGEN_ML_KEM, 3489 "ML-KEM-512", 3490 ml_kem_keygen_params, 3491 ml_kem_key 3492 }, 3493# endif 3494# if !defined(OPENSSL_NO_ML_DSA) 3495 { 3496 OSSL_SELF_TEST_DESC_KEYGEN_ML_DSA, 3497 "ML-DSA-65", 3498 ml_dsa_keygen_params, 3499 ml_dsa_key 3500 }, 3501# endif 3502# if !defined(OPENSSL_NO_SLH_DSA) 3503 { 3504 OSSL_SELF_TEST_DESC_KEYGEN_SLH_DSA, 3505 "SLH-DSA-SHA2-128f", 3506 slh_dsa_sha2_128f_keygen_init_params, 3507 slh_dsa_128f_keygen_expected_params 3508 }, 3509# endif 3510}; 3511#endif /* !OPENSSL_NO_ML_DSA || !OPENSSL_NO_SLH_DSA */ 3512 3513static const ST_KAT_ASYM_CIPHER st_kat_asym_cipher_tests[] = { 3514 { 3515 OSSL_SELF_TEST_DESC_ASYM_RSA_ENC, 3516 "RSA", 3517 1, 3518 rsa_pub_key, 3519 rsa_enc_params, 3520 ITM(rsa_asym_plaintext_encrypt), 3521 ITM(rsa_asym_expected_encrypt), 3522 }, 3523 { 3524 OSSL_SELF_TEST_DESC_ASYM_RSA_DEC, 3525 "RSA", 3526 0, 3527 rsa_priv_key, 3528 rsa_enc_params, 3529 ITM(rsa_asym_expected_encrypt), 3530 ITM(rsa_asym_plaintext_encrypt), 3531 }, 3532 { 3533 OSSL_SELF_TEST_DESC_ASYM_RSA_DEC, 3534 "RSA", 3535 0, 3536 rsa_crt_key, 3537 rsa_enc_params, 3538 ITM(rsa_asym_expected_encrypt), 3539 ITM(rsa_asym_plaintext_encrypt), 3540 }, 3541}; 3542