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 1311static const unsigned char rsa_sig_msg[] = "Hello World!"; 1312 1313static const unsigned char rsa_expected_sig[256] = { 1314 0xad, 0xbe, 0x2a, 0xaf, 0x16, 0x85, 0xc5, 0x00, 1315 0x91, 0x3e, 0xd0, 0x49, 0xfb, 0x3a, 0x81, 0xb9, 1316 0x6c, 0x28, 0xbc, 0xbf, 0xea, 0x96, 0x5f, 0xe4, 1317 0x9f, 0x99, 0xf7, 0x18, 0x8c, 0xec, 0x60, 0x28, 1318 0xeb, 0x29, 0x02, 0x49, 0xfc, 0xda, 0xd7, 0x78, 1319 0x68, 0xf8, 0xe1, 0xe9, 0x4d, 0x20, 0x6d, 0x32, 1320 0xa6, 0xde, 0xfc, 0xe4, 0xda, 0xcc, 0x6c, 0x75, 1321 0x36, 0x6b, 0xff, 0x5a, 0xac, 0x01, 0xa8, 0xc2, 1322 0xa9, 0xe6, 0x8b, 0x18, 0x3e, 0xec, 0xea, 0x4c, 1323 0x4a, 0x9e, 0x00, 0x09, 0xd1, 0x8a, 0x69, 0x1b, 1324 0x8b, 0xd9, 0xad, 0x37, 0xe5, 0x7c, 0xff, 0x7d, 1325 0x59, 0x56, 0x3e, 0xa0, 0xc6, 0x32, 0xd8, 0x35, 1326 0x2f, 0xff, 0xfb, 0x05, 0x02, 0xcd, 0xd7, 0x19, 1327 0xb9, 0x00, 0x86, 0x2a, 0xcf, 0xaa, 0x78, 0x16, 1328 0x4b, 0xf1, 0xa7, 0x59, 0xef, 0x7d, 0xe8, 0x74, 1329 0x23, 0x5c, 0xb2, 0xd4, 0x8a, 0x99, 0xa5, 0xbc, 1330 0xfa, 0x63, 0xd8, 0xf7, 0xbd, 0xc6, 0x00, 0x13, 1331 0x06, 0x02, 0x9a, 0xd4, 0xa7, 0xb4, 0x3d, 0x61, 1332 0xab, 0xf1, 0xc2, 0x95, 0x59, 0x9b, 0x3d, 0x67, 1333 0x1f, 0xde, 0x57, 0xb6, 0xb6, 0x9f, 0xb0, 0x87, 1334 0xd6, 0x51, 0xd5, 0x3e, 0x00, 0xe2, 0xc9, 0xa0, 1335 0x03, 0x66, 0xbc, 0x01, 0xb3, 0x8e, 0xfa, 0xf1, 1336 0x15, 0xeb, 0x26, 0xf1, 0x5d, 0x81, 0x90, 0xb4, 1337 0x1c, 0x00, 0x7c, 0x83, 0x4a, 0xa5, 0xde, 0x64, 1338 0xae, 0xea, 0x6c, 0x43, 0xc3, 0x20, 0x77, 0x77, 1339 0x42, 0x12, 0x24, 0xf5, 0xe3, 0x70, 0xdd, 0x59, 1340 0x48, 0x9c, 0xef, 0xd4, 0x8a, 0x3c, 0x29, 0x6a, 1341 0x0c, 0x9c, 0xf2, 0x13, 0xa4, 0x1c, 0x2f, 0x49, 1342 0xcd, 0xb4, 0xaa, 0x28, 0x40, 0x34, 0xc6, 0x75, 1343 0xba, 0x30, 0xe6, 0xd8, 0x5b, 0x2f, 0x08, 0xd0, 1344 0x29, 0xa5, 0x39, 0xfb, 0x6e, 0x3b, 0x0f, 0x52, 1345 0x2c, 0x68, 0xf0, 0x37, 0xa9, 0xd2, 0x56, 0xd6 1346}; 1347 1348static const unsigned char rsa_asym_plaintext_encrypt[256] = { 1349 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 1350 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 1351}; 1352static const unsigned char rsa_asym_expected_encrypt[256] = { 1353 0x54, 0xac, 0x23, 0x96, 0x1d, 0x82, 0x5d, 0x8b, 1354 0x8f, 0x36, 0x33, 0xd0, 0xf4, 0x02, 0xa2, 0x61, 1355 0xb1, 0x13, 0xd4, 0x4a, 0x46, 0x06, 0x37, 0x3c, 1356 0xbf, 0x40, 0x05, 0x3c, 0xc6, 0x3b, 0x64, 0xdc, 1357 0x22, 0x22, 0xaf, 0x36, 0x79, 0x62, 0x45, 0xf0, 1358 0x97, 0x82, 0x22, 0x44, 0x86, 0x4a, 0x7c, 0xfa, 1359 0xac, 0x03, 0x21, 0x84, 0x3f, 0x31, 0xad, 0x2a, 1360 0xa4, 0x6e, 0x7a, 0xc5, 0x93, 0xf3, 0x0f, 0xfc, 1361 0xf1, 0x62, 0xce, 0x82, 0x12, 0x45, 0xc9, 0x35, 1362 0xb0, 0x7a, 0xcd, 0x99, 0x8c, 0x91, 0x6b, 0x5a, 1363 0xd3, 0x46, 0xdb, 0xf9, 0x9e, 0x52, 0x49, 0xbd, 1364 0x1e, 0xe8, 0xda, 0xac, 0x61, 0x47, 0xc2, 0xda, 1365 0xfc, 0x1e, 0xfb, 0x74, 0xd7, 0xd6, 0xc1, 0x18, 1366 0x86, 0x3e, 0x20, 0x9c, 0x7a, 0xe1, 0x04, 0xb7, 1367 0x38, 0x43, 0xb1, 0x4e, 0xa0, 0xd8, 0xc1, 0x39, 1368 0x4d, 0xe1, 0xd3, 0xb0, 0xb3, 0xf1, 0x82, 0x87, 1369 0x1f, 0x74, 0xb5, 0x69, 0xfd, 0x33, 0xd6, 0x21, 1370 0x7c, 0x61, 0x60, 0x28, 0xca, 0x70, 0xdb, 0xa0, 1371 0xbb, 0xc8, 0x73, 0xa9, 0x82, 0xf8, 0x6b, 0xd8, 1372 0xf0, 0xc9, 0x7b, 0x20, 0xdf, 0x9d, 0xfb, 0x8c, 1373 0xd4, 0xa2, 0x89, 0xe1, 0x9b, 0x04, 0xad, 0xaa, 1374 0x11, 0x6c, 0x8f, 0xce, 0x83, 0x29, 0x56, 0x69, 1375 0xbb, 0x00, 0x3b, 0xef, 0xca, 0x2d, 0xcd, 0x52, 1376 0xc8, 0xf1, 0xb3, 0x9b, 0xb4, 0x4f, 0x6d, 0x9c, 1377 0x3d, 0x69, 0xcc, 0x6d, 0x1f, 0x38, 0x4d, 0xe6, 1378 0xbb, 0x0c, 0x87, 0xdc, 0x5f, 0xa9, 0x24, 0x93, 1379 0x03, 0x46, 0xa2, 0x33, 0x6c, 0xf4, 0xd8, 0x5d, 1380 0x68, 0xf3, 0xd3, 0xe0, 0xf2, 0x30, 0xdb, 0xf5, 1381 0x4f, 0x0f, 0xad, 0xc7, 0xd0, 0xaa, 0x47, 0xd9, 1382 0x9f, 0x85, 0x1b, 0x2e, 0x6c, 0x3c, 0x57, 0x04, 1383 0x29, 0xf4, 0xf5, 0x66, 0x7d, 0x93, 0x4a, 0xaa, 1384 0x05, 0x52, 0x55, 0xc1, 0xc6, 0x06, 0x90, 0xab, 1385}; 1386 1387#ifndef OPENSSL_NO_EC 1388/* ECDSA key data */ 1389static const char ecd_prime_curve_name[] = "secp224r1"; 1390static const unsigned char ecd_prime_priv[] = { 1391 0x98, 0x1f, 0xb5, 0xf1, 0xfc, 0x87, 0x1d, 0x7d, 1392 0xde, 0x1e, 0x01, 0x64, 0x09, 0x9b, 0xe7, 0x1b, 1393 0x9f, 0xad, 0x63, 0xdd, 0x33, 0x01, 0xd1, 0x50, 1394 0x80, 0x93, 0x50, 0x30 1395}; 1396static const unsigned char ecd_prime_pub[] = { 1397 0x04, 0x95, 0x47, 0x99, 0x44, 0x29, 0x8f, 0x51, 1398 0x39, 0xe2, 0x53, 0xec, 0x79, 0xb0, 0x4d, 0xde, 1399 0x87, 0x1a, 0x76, 0x54, 0xd5, 0x96, 0xb8, 0x7a, 1400 0x6d, 0xf4, 0x1c, 0x2c, 0x87, 0x91, 0x5f, 0xd5, 1401 0x31, 0xdd, 0x24, 0xe5, 0x78, 0xd9, 0x08, 0x24, 1402 0x8a, 0x49, 0x99, 0xec, 0x55, 0xf2, 0x82, 0xb3, 1403 0xc4, 0xb7, 0x33, 0x68, 0xe4, 0x24, 0xa9, 0x12, 1404 0x82 1405}; 1406static const unsigned char ecdsa_prime_expected_sig[] = { 1407 0x30, 0x3d, 0x02, 0x1c, 0x48, 0x4f, 0x3c, 0x97, 1408 0x5b, 0xfa, 0x40, 0x6c, 0xdb, 0xd6, 0x70, 0xb5, 1409 0xbd, 0x2d, 0xd0, 0xc6, 0x22, 0x93, 0x5a, 0x88, 1410 0x56, 0xd0, 0xaf, 0x0a, 0x94, 0x92, 0x20, 0x01, 1411 0x02, 0x1d, 0x00, 0xa4, 0x80, 0xe0, 0x47, 0x88, 1412 0x8a, 0xef, 0x2a, 0x47, 0x9d, 0x81, 0x9a, 0xbf, 1413 0x45, 0xc3, 0x6f, 0x9e, 0x2e, 0xc1, 0x44, 0x9f, 1414 0xfd, 0x79, 0xdb, 0x90, 0x3e, 0xb9, 0xb2 1415}; 1416static const ST_KAT_PARAM ecdsa_prime_key[] = { 1417 ST_KAT_PARAM_UTF8STRING(OSSL_PKEY_PARAM_GROUP_NAME, ecd_prime_curve_name), 1418 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PUB_KEY, ecd_prime_pub), 1419 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PRIV_KEY, ecd_prime_priv), 1420 ST_KAT_PARAM_END() 1421}; 1422 1423# ifndef OPENSSL_NO_EC2M 1424static const char ecd_bin_curve_name[] = "sect233r1"; 1425static const unsigned char ecd_bin_priv[] = { 1426 0x00, 0x6d, 0xd6, 0x39, 0x9d, 0x2a, 0xa2, 0xc8, 1427 0x8c, 0xfc, 0x7b, 0x80, 0x66, 0xaa, 0xe1, 0xaa, 1428 0xba, 0xee, 0xcb, 0xfd, 0xc9, 0xe5, 0x36, 0x38, 1429 0x2e, 0xf7, 0x37, 0x6d, 0xd3, 0x20 1430}; 1431static const unsigned char ecd_bin_pub[] = { 1432 0x04, 0x00, 0x06, 0xe2, 0x56, 0xf7, 0x37, 0xf9, 1433 0xea, 0xb6, 0xd1, 0x0f, 0x59, 0xfa, 0x23, 0xc3, 1434 0x93, 0xa8, 0xb2, 0x26, 0xe2, 0x5c, 0x08, 0xbe, 1435 0x63, 0x49, 0x26, 0xdc, 0xc7, 0x1e, 0x6f, 0x01, 1436 0x32, 0x3b, 0xe6, 0x54, 0x8d, 0xc1, 0x13, 0x3e, 1437 0x54, 0xb2, 0x66, 0x89, 0xb2, 0x82, 0x0a, 0x72, 1438 0x02, 0xa8, 0xe9, 0x6f, 0x54, 0xfd, 0x3a, 0x6b, 1439 0x99, 0xb6, 0x8f, 0x80, 0x46 1440}; 1441static const unsigned char ecdsa_bin_expected_sig[] = { 1442 0x30, 0x3f, 0x02, 0x1d, 0x58, 0xe9, 0xd0, 0x84, 1443 0x5c, 0xad, 0x29, 0x03, 0xf6, 0xa6, 0xbc, 0xe0, 1444 0x24, 0x6d, 0x9e, 0x79, 0x5d, 0x1e, 0xe8, 0x5a, 1445 0xc3, 0x31, 0x0a, 0xa9, 0xfb, 0xe3, 0x99, 0x54, 1446 0x11, 0x02, 0x1e, 0x00, 0xa3, 0x44, 0x28, 0xa3, 1447 0x70, 0x97, 0x98, 0x17, 0xd7, 0xa6, 0xad, 0x91, 1448 0xaf, 0x41, 0x69, 0xb6, 0x06, 0x99, 0x39, 0xc7, 1449 0x63, 0xa4, 0x6a, 0x81, 0xe4, 0x9a, 0x9d, 0x15, 1450 0x8b 1451}; 1452static const ST_KAT_PARAM ecdsa_bin_key[] = { 1453 ST_KAT_PARAM_UTF8STRING(OSSL_PKEY_PARAM_GROUP_NAME, ecd_bin_curve_name), 1454 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PUB_KEY, ecd_bin_pub), 1455 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PRIV_KEY, ecd_bin_priv), 1456 ST_KAT_PARAM_END() 1457}; 1458# endif /* OPENSSL_NO_EC2M */ 1459 1460# ifndef OPENSSL_NO_ECX 1461static const unsigned char ecx_sig_msg[] = { 1462 0x64, 0xa6, 0x5f, 0x3c, 0xde, 0xdc, 0xdd, 0x66, 1463 0x81, 0x1e, 0x29, 0x15 1464}; 1465static const unsigned char ed25519_pub[] = { 1466 0xfc, 0x51, 0xcd, 0x8e, 0x62, 0x18, 0xa1, 0xa3, 1467 0x8d, 0xa4, 0x7e, 0xd0, 0x02, 0x30, 0xf0, 0x58, 1468 0x08, 0x16, 0xed, 0x13, 0xba, 0x33, 0x03, 0xac, 1469 0x5d, 0xeb, 0x91, 0x15, 0x48, 0x90, 0x80, 0x25 1470}; 1471static const unsigned char ed25519_priv[] = { 1472 0xc5, 0xaa, 0x8d, 0xf4, 0x3f, 0x9f, 0x83, 0x7b, 1473 0xed, 0xb7, 0x44, 0x2f, 0x31, 0xdc, 0xb7, 0xb1, 1474 0x66, 0xd3, 0x85, 0x35, 0x07, 0x6f, 0x09, 0x4b, 1475 0x85, 0xce, 0x3a, 0x2e, 0x0b, 0x44, 0x58, 0xf7 1476}; 1477static const ST_KAT_PARAM ed25519_key[] = { 1478 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PUB_KEY, ed25519_pub), 1479 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PRIV_KEY, ed25519_priv), 1480 ST_KAT_PARAM_END() 1481}; 1482static const unsigned char ed25519_expected_sig[] = { 1483 0x1e, 0xf4, 0xc5, 0x61, 0xdc, 0x97, 0x9f, 0xaf, 1484 0x55, 0x6b, 0x46, 0xa1, 0xae, 0xb0, 0x64, 0x13, 1485 0x1c, 0x98, 0x09, 0x96, 0x88, 0xe0, 0x9d, 0x0e, 1486 0x4e, 0x7d, 0xc4, 0xa5, 0xa1, 0x91, 0x09, 0xca, 1487 0xd9, 0x5b, 0x4f, 0x1c, 0x80, 0x82, 0x9f, 0x65, 1488 0xc1, 0x41, 0xa4, 0xe8, 0x02, 0x05, 0x0c, 0xa6, 1489 0x7e, 0xa0, 0xfa, 0x01, 0xee, 0xeb, 0xaa, 0x91, 1490 0x62, 0xfd, 0x0f, 0x25, 0xa0, 0x2d, 0x37, 0x09 1491}; 1492 1493static const unsigned char ed448_pub[] = { 1494 0x3b, 0xa1, 0x6d, 0xa0, 0xc6, 0xf2, 0xcc, 0x1f, 1495 0x30, 0x18, 0x77, 0x40, 0x75, 0x6f, 0x5e, 0x79, 1496 0x8d, 0x6b, 0xc5, 0xfc, 0x01, 0x5d, 0x7c, 0x63, 1497 0xcc, 0x95, 0x10, 0xee, 0x3f, 0xd4, 0x4a, 0xdc, 1498 0x24, 0xd8, 0xe9, 0x68, 0xb6, 0xe4, 0x6e, 0x6f, 1499 0x94, 0xd1, 0x9b, 0x94, 0x53, 0x61, 0x72, 0x6b, 1500 0xd7, 0x5e, 0x14, 0x9e, 0xf0, 0x98, 0x17, 0xf5, 1501 0x80 1502}; 1503static const unsigned char ed448_priv[] = { 1504 0x25, 0x8c, 0xdd, 0x4a, 0xda, 0x32, 0xed, 0x9c, 1505 0x9f, 0xf5, 0x4e, 0x63, 0x75, 0x6a, 0xe5, 0x82, 1506 0xfb, 0x8f, 0xab, 0x2a, 0xc7, 0x21, 0xf2, 0xc8, 1507 0xe6, 0x76, 0xa7, 0x27, 0x68, 0x51, 0x3d, 0x93, 1508 0x9f, 0x63, 0xdd, 0xdb, 0x55, 0x60, 0x91, 0x33, 1509 0xf2, 0x9a, 0xdf, 0x86, 0xec, 0x99, 0x29, 0xdc, 1510 0xcb, 0x52, 0xc1, 0xc5, 0xfd, 0x2f, 0xf7, 0xe2, 1511 0x1b 1512}; 1513static const ST_KAT_PARAM ed448_key[] = { 1514 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PUB_KEY, ed448_pub), 1515 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PRIV_KEY, ed448_priv), 1516 ST_KAT_PARAM_END() 1517}; 1518static const unsigned char ed448_expected_sig[] = { 1519 0x7e, 0xee, 0xab, 0x7c, 0x4e, 0x50, 0xfb, 0x79, 1520 0x9b, 0x41, 0x8e, 0xe5, 0xe3, 0x19, 0x7f, 0xf6, 1521 0xbf, 0x15, 0xd4, 0x3a, 0x14, 0xc3, 0x43, 0x89, 1522 0xb5, 0x9d, 0xd1, 0xa7, 0xb1, 0xb8, 0x5b, 0x4a, 1523 0xe9, 0x04, 0x38, 0xac, 0xa6, 0x34, 0xbe, 0xa4, 1524 0x5e, 0x3a, 0x26, 0x95, 0xf1, 0x27, 0x0f, 0x07, 1525 0xfd, 0xcd, 0xf7, 0xc6, 0x2b, 0x8e, 0xfe, 0xaf, 1526 0x00, 0xb4, 0x5c, 0x2c, 0x96, 0xba, 0x45, 0x7e, 1527 0xb1, 0xa8, 0xbf, 0x07, 0x5a, 0x3d, 0xb2, 0x8e, 1528 0x5c, 0x24, 0xf6, 0xb9, 0x23, 0xed, 0x4a, 0xd7, 1529 0x47, 0xc3, 0xc9, 0xe0, 0x3c, 0x70, 0x79, 0xef, 1530 0xb8, 0x7c, 0xb1, 0x10, 0xd3, 0xa9, 0x98, 0x61, 1531 0xe7, 0x20, 0x03, 0xcb, 0xae, 0x6d, 0x6b, 0x8b, 1532 0x82, 0x7e, 0x4e, 0x6c, 0x14, 0x30, 0x64, 0xff, 1533 0x3c, 0x00 1534}; 1535# endif /* OPENSSL_NO_ECX */ 1536#endif /* OPENSSL_NO_EC */ 1537 1538#ifndef OPENSSL_NO_DSA 1539/* dsa 2048 */ 1540static const unsigned char dsa_p[] = { 1541 0xa2, 0x9b, 0x88, 0x72, 0xce, 0x8b, 0x84, 0x23, 1542 0xb7, 0xd5, 0xd2, 0x1d, 0x4b, 0x02, 0xf5, 0x7e, 1543 0x03, 0xe9, 0xe6, 0xb8, 0xa2, 0x58, 0xdc, 0x16, 1544 0x61, 0x1b, 0xa0, 0x98, 0xab, 0x54, 0x34, 0x15, 1545 0xe4, 0x15, 0xf1, 0x56, 0x99, 0x7a, 0x3e, 0xe2, 1546 0x36, 0x65, 0x8f, 0xa0, 0x93, 0x26, 0x0d, 0xe3, 1547 0xad, 0x42, 0x2e, 0x05, 0xe0, 0x46, 0xf9, 0xec, 1548 0x29, 0x16, 0x1a, 0x37, 0x5f, 0x0e, 0xb4, 0xef, 1549 0xfc, 0xef, 0x58, 0x28, 0x5c, 0x5d, 0x39, 0xed, 1550 0x42, 0x5d, 0x7a, 0x62, 0xca, 0x12, 0x89, 0x6c, 1551 0x4a, 0x92, 0xcb, 0x19, 0x46, 0xf2, 0x95, 0x2a, 1552 0x48, 0x13, 0x3f, 0x07, 0xda, 0x36, 0x4d, 0x1b, 1553 0xdf, 0x6b, 0x0f, 0x71, 0x39, 0x98, 0x3e, 0x69, 1554 0x3c, 0x80, 0x05, 0x9b, 0x0e, 0xac, 0xd1, 0x47, 1555 0x9b, 0xa9, 0xf2, 0x85, 0x77, 0x54, 0xed, 0xe7, 1556 0x5f, 0x11, 0x2b, 0x07, 0xeb, 0xbf, 0x35, 0x34, 1557 0x8b, 0xbf, 0x3e, 0x01, 0xe0, 0x2f, 0x2d, 0x47, 1558 0x3d, 0xe3, 0x94, 0x53, 0xf9, 0x9d, 0xd2, 0x36, 1559 0x75, 0x41, 0xca, 0xca, 0x3b, 0xa0, 0x11, 0x66, 1560 0x34, 0x3d, 0x7b, 0x5b, 0x58, 0xa3, 0x7b, 0xd1, 1561 0xb7, 0x52, 0x1d, 0xb2, 0xf1, 0x3b, 0x86, 0x70, 1562 0x71, 0x32, 0xfe, 0x09, 0xf4, 0xcd, 0x09, 0xdc, 1563 0x16, 0x18, 0xfa, 0x34, 0x01, 0xeb, 0xf9, 0xcc, 1564 0x7b, 0x19, 0xfa, 0x94, 0xaa, 0x47, 0x20, 0x88, 1565 0x13, 0x3d, 0x6c, 0xb2, 0xd3, 0x5c, 0x11, 0x79, 1566 0xc8, 0xc8, 0xff, 0x36, 0x87, 0x58, 0xd5, 0x07, 1567 0xd9, 0xf9, 0xa1, 0x7d, 0x46, 0xc1, 0x10, 0xfe, 1568 0x31, 0x44, 0xce, 0x9b, 0x02, 0x2b, 0x42, 0xe4, 1569 0x19, 0xeb, 0x4f, 0x53, 0x88, 0x61, 0x3b, 0xfc, 1570 0x3e, 0x26, 0x24, 0x1a, 0x43, 0x2e, 0x87, 0x06, 1571 0xbc, 0x58, 0xef, 0x76, 0x11, 0x72, 0x78, 0xde, 1572 0xab, 0x6c, 0xf6, 0x92, 0x61, 0x82, 0x91, 0xb7 1573}; 1574static const unsigned char dsa_q[] = { 1575 0xa3, 0xbf, 0xd9, 0xab, 0x78, 0x84, 0x79, 0x4e, 1576 0x38, 0x34, 0x50, 0xd5, 0x89, 0x1d, 0xc1, 0x8b, 1577 0x65, 0x15, 0x7b, 0xdc, 0xfc, 0xda, 0xc5, 0x15, 1578 0x18, 0x90, 0x28, 0x67 1579}; 1580static const unsigned char dsa_g[] = { 1581 0x68, 0x19, 0x27, 0x88, 0x69, 0xc7, 0xfd, 0x3d, 1582 0x2d, 0x7b, 0x77, 0xf7, 0x7e, 0x81, 0x50, 0xd9, 1583 0xad, 0x43, 0x3b, 0xea, 0x3b, 0xa8, 0x5e, 0xfc, 1584 0x80, 0x41, 0x5a, 0xa3, 0x54, 0x5f, 0x78, 0xf7, 1585 0x22, 0x96, 0xf0, 0x6c, 0xb1, 0x9c, 0xed, 0xa0, 1586 0x6c, 0x94, 0xb0, 0x55, 0x1c, 0xfe, 0x6e, 0x6f, 1587 0x86, 0x3e, 0x31, 0xd1, 0xde, 0x6e, 0xed, 0x7d, 1588 0xab, 0x8b, 0x0c, 0x9d, 0xf2, 0x31, 0xe0, 0x84, 1589 0x34, 0xd1, 0x18, 0x4f, 0x91, 0xd0, 0x33, 0x69, 1590 0x6b, 0xb3, 0x82, 0xf8, 0x45, 0x5e, 0x98, 0x88, 1591 0xf5, 0xd3, 0x1d, 0x47, 0x84, 0xec, 0x40, 0x12, 1592 0x02, 0x46, 0xf4, 0xbe, 0xa6, 0x17, 0x94, 0xbb, 1593 0xa5, 0x86, 0x6f, 0x09, 0x74, 0x64, 0x63, 0xbd, 1594 0xf8, 0xe9, 0xe1, 0x08, 0xcd, 0x95, 0x29, 0xc3, 1595 0xd0, 0xf6, 0xdf, 0x80, 0x31, 0x6e, 0x2e, 0x70, 1596 0xaa, 0xeb, 0x1b, 0x26, 0xcd, 0xb8, 0xad, 0x97, 1597 0xbc, 0x3d, 0x28, 0x7e, 0x0b, 0x8d, 0x61, 0x6c, 1598 0x42, 0xe6, 0x5b, 0x87, 0xdb, 0x20, 0xde, 0xb7, 1599 0x00, 0x5b, 0xc4, 0x16, 0x74, 0x7a, 0x64, 0x70, 1600 0x14, 0x7a, 0x68, 0xa7, 0x82, 0x03, 0x88, 0xeb, 1601 0xf4, 0x4d, 0x52, 0xe0, 0x62, 0x8a, 0xf9, 0xcf, 1602 0x1b, 0x71, 0x66, 0xd0, 0x34, 0x65, 0xf3, 0x5a, 1603 0xcc, 0x31, 0xb6, 0x11, 0x0c, 0x43, 0xda, 0xbc, 1604 0x7c, 0x5d, 0x59, 0x1e, 0x67, 0x1e, 0xaf, 0x7c, 1605 0x25, 0x2c, 0x1c, 0x14, 0x53, 0x36, 0xa1, 0xa4, 1606 0xdd, 0xf1, 0x32, 0x44, 0xd5, 0x5e, 0x83, 0x56, 1607 0x80, 0xca, 0xb2, 0x53, 0x3b, 0x82, 0xdf, 0x2e, 1608 0xfe, 0x55, 0xec, 0x18, 0xc1, 0xe6, 0xcd, 0x00, 1609 0x7b, 0xb0, 0x89, 0x75, 0x8b, 0xb1, 0x7c, 0x2c, 1610 0xbe, 0x14, 0x44, 0x1b, 0xd0, 0x93, 0xae, 0x66, 1611 0xe5, 0x97, 0x6d, 0x53, 0x73, 0x3f, 0x4f, 0xa3, 1612 0x26, 0x97, 0x01, 0xd3, 0x1d, 0x23, 0xd4, 0x67 1613}; 1614static const unsigned char dsa_pub[] = { 1615 0xa0, 0x12, 0xb3, 0xb1, 0x70, 0xb3, 0x07, 0x22, 1616 0x79, 0x57, 0xb7, 0xca, 0x20, 0x61, 0xa8, 0x16, 1617 0xac, 0x7a, 0x2b, 0x3d, 0x9a, 0xe9, 0x95, 0xa5, 1618 0x11, 0x9c, 0x38, 0x5b, 0x60, 0x3b, 0xf6, 0xf6, 1619 0xc5, 0xde, 0x4d, 0xc5, 0xec, 0xb5, 0xdf, 0xa4, 1620 0xa4, 0x1c, 0x68, 0x66, 0x2e, 0xb2, 0x5b, 0x63, 1621 0x8b, 0x7e, 0x26, 0x20, 0xba, 0x89, 0x8d, 0x07, 1622 0xda, 0x6c, 0x49, 0x91, 0xe7, 0x6c, 0xc0, 0xec, 1623 0xd1, 0xad, 0x34, 0x21, 0x07, 0x70, 0x67, 0xe4, 1624 0x7c, 0x18, 0xf5, 0x8a, 0x92, 0xa7, 0x2a, 0xd4, 1625 0x31, 0x99, 0xec, 0xb7, 0xbd, 0x84, 0xe7, 0xd3, 1626 0xaf, 0xb9, 0x01, 0x9f, 0x0e, 0x9d, 0xd0, 0xfb, 1627 0xaa, 0x48, 0x73, 0x00, 0xb1, 0x30, 0x81, 0xe3, 1628 0x3c, 0x90, 0x28, 0x76, 0x43, 0x6f, 0x7b, 0x03, 1629 0xc3, 0x45, 0x52, 0x84, 0x81, 0xd3, 0x62, 0x81, 1630 0x5e, 0x24, 0xfe, 0x59, 0xda, 0xc5, 0xac, 0x34, 1631 0x66, 0x0d, 0x4c, 0x8a, 0x76, 0xcb, 0x99, 0xa7, 1632 0xc7, 0xde, 0x93, 0xeb, 0x95, 0x6c, 0xd6, 0xbc, 1633 0x88, 0xe5, 0x8d, 0x90, 0x10, 0x34, 0x94, 0x4a, 1634 0x09, 0x4b, 0x01, 0x80, 0x3a, 0x43, 0xc6, 0x72, 1635 0xb9, 0x68, 0x8c, 0x0e, 0x01, 0xd8, 0xf4, 0xfc, 1636 0x91, 0xc6, 0x2a, 0x3f, 0x88, 0x02, 0x1f, 0x7b, 1637 0xd6, 0xa6, 0x51, 0xb1, 0xa8, 0x8f, 0x43, 0xaa, 1638 0x4e, 0xf2, 0x76, 0x53, 0xd1, 0x2b, 0xf8, 0xb7, 1639 0x09, 0x9f, 0xdf, 0x6b, 0x46, 0x10, 0x82, 0xf8, 1640 0xe9, 0x39, 0x10, 0x7b, 0xfd, 0x2f, 0x72, 0x10, 1641 0x08, 0x7d, 0x32, 0x6c, 0x37, 0x52, 0x00, 0xf1, 1642 0xf5, 0x1e, 0x7e, 0x74, 0xa3, 0x41, 0x31, 0x90, 1643 0x1b, 0xcd, 0x08, 0x63, 0x52, 0x1f, 0xf8, 0xd6, 1644 0x76, 0xc4, 0x85, 0x81, 0x86, 0x87, 0x36, 0xc5, 1645 0xe5, 0x1b, 0x16, 0xa4, 0xe3, 0x92, 0x15, 0xea, 1646 0x0b, 0x17, 0xc4, 0x73, 0x59, 0x74, 0xc5, 0x16 1647}; 1648static const unsigned char dsa_expected_sig[] = { 1649 0x30, 0x3c, 0x02, 0x1c, 0x69, 0xc6, 0xd6, 0x9e, 1650 0x2b, 0x91, 0xea, 0x72, 0xb3, 0x8b, 0x7c, 0x57, 1651 0x48, 0x75, 0xb7, 0x65, 0xc0, 0xb4, 0xf7, 0xbb, 1652 0x08, 0xa4, 0x95, 0x77, 0xfc, 0xa7, 0xed, 0x31, 1653 0x02, 0x1c, 0x4c, 0x2c, 0xff, 0xc6, 0x55, 0xeb, 1654 0x8f, 0xa7, 0x4f, 0x27, 0xd8, 0xec, 0xfd, 0x62, 1655 0x73, 0xf2, 0xd1, 0x55, 0xa5, 0xf0, 0x41, 0x68, 1656 0x34, 0x8d, 0x9e, 0x88, 0x08, 0x06 1657}; 1658 1659static const ST_KAT_PARAM dsa_key[] = { 1660 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_FFC_P, dsa_p), 1661 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_FFC_Q, dsa_q), 1662 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_FFC_G, dsa_g), 1663 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PUB_KEY, dsa_pub), 1664 ST_KAT_PARAM_END() 1665}; 1666#endif /* OPENSSL_NO_DSA */ 1667 1668#ifndef OPENSSL_NO_ML_DSA 1669static const unsigned char ml_dsa_65_pub_key[] = { 1670 0x3b, 0x5c, 0xb0, 0x79, 0xd2, 0xce, 0x76, 0x2b, 1671 0x3b, 0x95, 0x7c, 0x26, 0x69, 0x8f, 0xe7, 0x01, 1672 0xb9, 0x6b, 0x50, 0xa3, 0x2c, 0x73, 0x67, 0xcf, 1673 0x9e, 0xf4, 0xb8, 0x7d, 0xe3, 0xaf, 0x27, 0x77, 1674 0xc6, 0x7c, 0x34, 0xb7, 0x30, 0x4d, 0x01, 0xa4, 1675 0xaa, 0xce, 0x16, 0x7c, 0x13, 0x2b, 0x30, 0x6c, 1676 0x88, 0x31, 0xe4, 0x90, 0xf5, 0xc2, 0x80, 0xf5, 1677 0xe8, 0xb9, 0x2d, 0x7a, 0x83, 0x17, 0xfc, 0xbb, 1678 0x13, 0x6f, 0x18, 0x75, 0x5b, 0x40, 0x39, 0x2d, 1679 0x47, 0x56, 0x15, 0xc7, 0x1c, 0x6e, 0x9a, 0x95, 1680 0x7b, 0x6b, 0x77, 0x9f, 0x86, 0x38, 0x0e, 0xee, 1681 0xc0, 0x82, 0x6c, 0x3c, 0xae, 0xc0, 0xcf, 0x5a, 1682 0x85, 0x49, 0xb1, 0x0c, 0x2d, 0x0e, 0x51, 0x73, 1683 0xf0, 0xe7, 0xad, 0x3b, 0xa7, 0x3f, 0xf5, 0x75, 1684 0xb9, 0xb4, 0x63, 0xb9, 0xf0, 0x0a, 0xf4, 0x29, 1685 0x90, 0x20, 0x72, 0x46, 0x8c, 0x7a, 0xaa, 0x86, 1686 0xb7, 0x4e, 0xa7, 0x65, 0x23, 0xef, 0xec, 0x46, 1687 0x67, 0x02, 0xf1, 0xbb, 0x88, 0xc7, 0xa4, 0xfc, 1688 0x66, 0x52, 0x07, 0x67, 0x68, 0xa2, 0x72, 0xe8, 1689 0x8a, 0x53, 0x97, 0xe6, 0x89, 0x96, 0x95, 0x9e, 1690 0x6a, 0xe9, 0xa4, 0x7d, 0x19, 0x19, 0x5f, 0xb4, 1691 0x77, 0x52, 0x17, 0xd6, 0xf2, 0xea, 0x7f, 0xfc, 1692 0x5c, 0xd5, 0x18, 0x16, 0x8c, 0xc2, 0x2e, 0x31, 1693 0xf8, 0x98, 0x4b, 0x72, 0xa1, 0x80, 0xb6, 0x5c, 1694 0x32, 0x19, 0x2f, 0xe0, 0xae, 0x74, 0xf4, 0xc4, 1695 0x0a, 0xe0, 0x54, 0x52, 0x46, 0x9e, 0xf3, 0xb9, 1696 0x6c, 0x56, 0xd1, 0xe8, 0x99, 0x29, 0x39, 0x95, 1697 0x30, 0xa2, 0x6a, 0xc6, 0x32, 0x8a, 0xa6, 0x02, 1698 0x6a, 0x39, 0x2e, 0x13, 0x20, 0xbc, 0xf8, 0x7a, 1699 0x09, 0xb6, 0xa7, 0xd1, 0x39, 0xa5, 0x12, 0x02, 1700 0x81, 0x47, 0x8c, 0xc0, 0x1e, 0xfd, 0xf3, 0x28, 1701 0xe5, 0x34, 0xec, 0xf0, 0xfc, 0x3f, 0x22, 0x16, 1702 0xd2, 0xfe, 0xf0, 0xca, 0xaa, 0x6f, 0x82, 0xdd, 1703 0xd6, 0x83, 0xaf, 0xf9, 0xeb, 0x1d, 0xa8, 0x45, 1704 0x39, 0x63, 0xa5, 0xde, 0xee, 0x7d, 0x91, 0xe3, 1705 0xaa, 0xcc, 0x07, 0x92, 0xce, 0x50, 0xfd, 0xe4, 1706 0xa8, 0x50, 0x91, 0xd5, 0xec, 0xc1, 0x1b, 0x57, 1707 0x92, 0x37, 0x68, 0xf8, 0xd6, 0x32, 0x55, 0xba, 1708 0x65, 0xae, 0xb6, 0xc3, 0x9f, 0x6c, 0x18, 0xc5, 1709 0x12, 0x17, 0x9a, 0x04, 0x29, 0xab, 0x14, 0x94, 1710 0xbb, 0x13, 0x79, 0x5e, 0xb9, 0xf0, 0x62, 0x03, 1711 0xe0, 0xa4, 0x91, 0xba, 0x81, 0x4b, 0xaa, 0xf1, 1712 0x82, 0x47, 0x83, 0x43, 0x5f, 0x1e, 0x2d, 0x48, 1713 0x40, 0x56, 0xe4, 0x29, 0x79, 0x01, 0xd5, 0x89, 1714 0xaf, 0xa4, 0x56, 0x9e, 0x38, 0x62, 0x03, 0xa0, 1715 0xe7, 0x9f, 0x08, 0x1f, 0xca, 0xd4, 0x31, 0x48, 1716 0xf6, 0x68, 0xe0, 0xcc, 0x28, 0xff, 0x06, 0x97, 1717 0x67, 0x4b, 0x70, 0x78, 0xa0, 0x2a, 0xf9, 0x46, 1718 0x80, 0x6d, 0x37, 0xfb, 0xb3, 0x17, 0x12, 0xf0, 1719 0x95, 0xc7, 0xee, 0x31, 0x54, 0x75, 0xdf, 0x2a, 1720 0xa8, 0x7d, 0xff, 0x97, 0xbb, 0x45, 0x49, 0x55, 1721 0xd5, 0xac, 0x9c, 0x6f, 0x0e, 0xc3, 0x94, 0x96, 1722 0xc4, 0x9e, 0x9c, 0x45, 0x31, 0xcb, 0x23, 0xed, 1723 0x21, 0xf1, 0xfe, 0xe9, 0xf9, 0x8c, 0xb6, 0x8e, 1724 0x72, 0x6e, 0xdd, 0x37, 0x1c, 0xc7, 0xd6, 0x6b, 1725 0x36, 0x35, 0xa0, 0x67, 0x54, 0x00, 0x65, 0x2c, 1726 0xc8, 0xa4, 0xa0, 0x9e, 0x72, 0xd7, 0xc9, 0x3c, 1727 0x8c, 0x78, 0x1a, 0xf8, 0x80, 0xad, 0xc4, 0x99, 1728 0xc7, 0x35, 0x4e, 0x89, 0x3b, 0x4f, 0xa6, 0x9d, 1729 0x5d, 0xce, 0x66, 0x4d, 0x82, 0xef, 0x47, 0x73, 1730 0xa8, 0xc5, 0x14, 0x20, 0xdd, 0x57, 0x92, 0x10, 1731 0x95, 0x8a, 0xe1, 0xac, 0x82, 0xec, 0x39, 0xe7, 1732 0x2c, 0xa6, 0xfd, 0x50, 0x68, 0x0c, 0x3e, 0xcf, 1733 0xbc, 0xc5, 0x12, 0xfe, 0x30, 0xc8, 0xb7, 0xb4, 1734 0x84, 0xd8, 0x1d, 0x67, 0x54, 0x9d, 0x20, 0x49, 1735 0xa5, 0xfd, 0xf9, 0x18, 0xef, 0xc2, 0xd2, 0xcd, 1736 0xb7, 0x54, 0x2b, 0x31, 0x12, 0xf9, 0xaa, 0x8e, 1737 0x0a, 0x29, 0x0c, 0x37, 0xd2, 0x7c, 0xcd, 0xc5, 1738 0x0b, 0x98, 0x25, 0x97, 0x0b, 0x5a, 0xf7, 0x07, 1739 0x91, 0x98, 0xd1, 0x42, 0xdf, 0xc4, 0xf9, 0x42, 1740 0x97, 0xda, 0x20, 0xf4, 0x88, 0xe1, 0x6b, 0xd4, 1741 0x85, 0xf5, 0x1d, 0xca, 0x2a, 0xba, 0x30, 0xc5, 1742 0xdf, 0x9d, 0x4d, 0xb8, 0xb0, 0x30, 0x54, 0x61, 1743 0xcf, 0x91, 0x6f, 0x90, 0xa5, 0x25, 0x05, 0x9b, 1744 0x2b, 0x3e, 0x13, 0xcd, 0xcd, 0x40, 0x59, 0x7c, 1745 0x92, 0x9b, 0x51, 0x81, 0x0d, 0x58, 0x32, 0x0a, 1746 0x43, 0xbd, 0x01, 0xb4, 0xb8, 0x0b, 0xd5, 0xee, 1747 0x0d, 0x67, 0x70, 0x59, 0xd7, 0x47, 0x4f, 0xe5, 1748 0x84, 0x07, 0x75, 0x3e, 0x54, 0xfb, 0x5d, 0xd1, 1749 0x3f, 0x72, 0x6e, 0xae, 0xf9, 0x4b, 0x7b, 0x57, 1750 0xe0, 0xde, 0x8b, 0x8b, 0x12, 0x1b, 0x10, 0x3b, 1751 0x5e, 0x17, 0xd1, 0x72, 0x18, 0x3d, 0xff, 0xc6, 1752 0x83, 0xa5, 0xaf, 0xf9, 0x30, 0xae, 0xb7, 0x47, 1753 0x46, 0x5d, 0xac, 0xba, 0x35, 0x04, 0x35, 0x0b, 1754 0x42, 0x48, 0x7c, 0xa1, 0x00, 0x1a, 0xea, 0xea, 1755 0x5f, 0x93, 0x2b, 0xb7, 0xe5, 0x8f, 0x91, 0x3c, 1756 0x00, 0x98, 0x51, 0x40, 0xee, 0x11, 0x50, 0x70, 1757 0x40, 0xe4, 0x28, 0xd4, 0x79, 0x2d, 0xcd, 0x82, 1758 0xaf, 0x3f, 0xb2, 0xfc, 0x96, 0x8d, 0xbe, 0x79, 1759 0xa3, 0xcd, 0xac, 0x35, 0x4b, 0x5e, 0xb4, 0x81, 1760 0x0e, 0x6a, 0xde, 0x1f, 0x7e, 0xb0, 0x37, 0x3e, 1761 0xdc, 0xe0, 0x21, 0xcc, 0x9f, 0x90, 0x26, 0xb6, 1762 0x8a, 0x1d, 0xb3, 0x1e, 0xec, 0x7a, 0x88, 0x28, 1763 0x95, 0xe2, 0xc2, 0x1d, 0x07, 0xb1, 0xfa, 0xc6, 1764 0x21, 0x1b, 0x5e, 0x54, 0x7b, 0x37, 0x0e, 0x63, 1765 0xff, 0xdd, 0x70, 0xf9, 0xea, 0x2f, 0x2d, 0x98, 1766 0xe1, 0xbe, 0x37, 0xd0, 0x1f, 0x45, 0x5a, 0x63, 1767 0xad, 0x44, 0xbc, 0x5f, 0xc6, 0x23, 0x8a, 0xac, 1768 0x12, 0x71, 0xd5, 0xa2, 0x8b, 0xfc, 0x97, 0xbb, 1769 0x00, 0x4b, 0xd7, 0x09, 0xa6, 0xaf, 0x40, 0x08, 1770 0x6c, 0x8d, 0x10, 0x4a, 0x01, 0x34, 0xc1, 0x2c, 1771 0x92, 0x30, 0x0a, 0x85, 0x8f, 0x3f, 0x08, 0xdd, 1772 0xff, 0x9c, 0x10, 0xd1, 0x03, 0x03, 0x84, 0x1f, 1773 0xf8, 0x4e, 0xf2, 0xe3, 0xd1, 0xd3, 0xb9, 0xdf, 1774 0xfc, 0x97, 0x1c, 0xcf, 0x8a, 0x29, 0xe6, 0x59, 1775 0x04, 0xe2, 0x87, 0x27, 0xbb, 0xb9, 0x96, 0xd0, 1776 0x20, 0x2e, 0x91, 0x48, 0xaa, 0xbf, 0x53, 0x4a, 1777 0x34, 0xb5, 0x0e, 0x11, 0xce, 0xf8, 0x65, 0xa6, 1778 0x0d, 0x45, 0xda, 0xbf, 0x6a, 0xfb, 0x81, 0xe4, 1779 0x7c, 0x8c, 0xa0, 0x4b, 0x00, 0x1b, 0xd7, 0x73, 1780 0x61, 0x80, 0xc0, 0x6b, 0x60, 0xde, 0xf3, 0x32, 1781 0xae, 0x62, 0x35, 0x66, 0xdd, 0xde, 0x53, 0x61, 1782 0x86, 0xe9, 0x44, 0xf3, 0x01, 0x7b, 0xaa, 0xe7, 1783 0x31, 0xd4, 0x5b, 0x06, 0x52, 0x0f, 0xf4, 0x90, 1784 0x5c, 0x82, 0x3e, 0x12, 0x28, 0x88, 0x7f, 0xfc, 1785 0xb8, 0xee, 0x17, 0x34, 0x4e, 0xc3, 0x2a, 0xfb, 1786 0x84, 0x1b, 0x0f, 0xba, 0x51, 0x64, 0x96, 0x22, 1787 0x0d, 0x88, 0x9b, 0xf2, 0x72, 0x04, 0x55, 0x44, 1788 0x6a, 0x14, 0x2b, 0xa0, 0xc2, 0xbe, 0x9e, 0x7b, 1789 0x48, 0x32, 0xa7, 0xf6, 0x11, 0xae, 0x60, 0xfb, 1790 0xf8, 0x38, 0x67, 0x16, 0xdf, 0xdf, 0x46, 0x96, 1791 0xd7, 0x6c, 0x39, 0xa2, 0xad, 0xf7, 0xb7, 0x78, 1792 0x32, 0x2c, 0xba, 0xae, 0x33, 0x5a, 0x88, 0x4b, 1793 0x40, 0x1f, 0x88, 0xcd, 0xe7, 0x8f, 0x50, 0x5e, 1794 0xd8, 0x80, 0x82, 0x7b, 0x46, 0xc7, 0x07, 0x71, 1795 0x4f, 0x3b, 0xca, 0x9d, 0x73, 0x7c, 0xdb, 0xeb, 1796 0x4c, 0x37, 0xdd, 0xb4, 0xb8, 0x61, 0xf3, 0xdf, 1797 0xb2, 0xb5, 0x34, 0x27, 0xec, 0xeb, 0xba, 0xcc, 1798 0xdc, 0xe9, 0xde, 0x47, 0x2e, 0xe9, 0x3b, 0xa1, 1799 0x36, 0xf1, 0x66, 0xdf, 0xc8, 0x70, 0x7f, 0x39, 1800 0x82, 0xb3, 0x8c, 0x47, 0x9a, 0x45, 0x59, 0x2e, 1801 0x30, 0x9b, 0xaf, 0x7c, 0xad, 0x43, 0x38, 0x6e, 1802 0x05, 0x7d, 0x8b, 0xac, 0x5f, 0x70, 0x63, 0xeb, 1803 0x85, 0xee, 0xab, 0xa4, 0x57, 0x1d, 0x63, 0xac, 1804 0x48, 0x45, 0x74, 0xca, 0x0c, 0xa8, 0x65, 0x05, 1805 0x1a, 0x47, 0xa1, 0x2f, 0x4b, 0x96, 0x26, 0x9e, 1806 0xee, 0xec, 0x37, 0x57, 0xbf, 0xa0, 0x2b, 0x75, 1807 0xf5, 0x9b, 0xb5, 0x1d, 0x12, 0x8a, 0x61, 0x9c, 1808 0x8d, 0x2a, 0x7e, 0xee, 0x05, 0x2b, 0x85, 0x7c, 1809 0x6f, 0x34, 0xc4, 0xcd, 0xd5, 0xd0, 0xac, 0xf9, 1810 0x79, 0x24, 0xe7, 0x0f, 0x41, 0x95, 0xe2, 0x9a, 1811 0x22, 0x32, 0xa5, 0x98, 0x2e, 0x82, 0xc0, 0x07, 1812 0xf4, 0x74, 0x68, 0x00, 0xf9, 0x35, 0x5e, 0x12, 1813 0xfe, 0xa2, 0x0e, 0x15, 0x96, 0x83, 0x84, 0x31, 1814 0xc4, 0x25, 0xda, 0x7a, 0xec, 0x07, 0x15, 0xe4, 1815 0x7d, 0xc5, 0xf5, 0xe1, 0xc5, 0xba, 0x9a, 0x59, 1816 0x76, 0xae, 0x4e, 0x54, 0x27, 0x5e, 0xa9, 0x0d, 1817 0xa0, 0xd3, 0xcd, 0x99, 0x39, 0x76, 0x6d, 0x58, 1818 0xdf, 0x8a, 0xa9, 0x9e, 0x21, 0x22, 0x48, 0x7c, 1819 0x0c, 0x13, 0xfa, 0x86, 0x63, 0x74, 0x92, 0xf4, 1820 0xe5, 0x5d, 0xbf, 0xe4, 0x2d, 0xd7, 0xa1, 0xe3, 1821 0x0f, 0xc6, 0x3e, 0x82, 0xa0, 0xcc, 0xfa, 0x38, 1822 0x55, 0x36, 0x9b, 0x22, 0xd0, 0xb8, 0x7f, 0x3f, 1823 0x0f, 0x35, 0x01, 0xf9, 0x6f, 0xa6, 0x51, 0x77, 1824 0x21, 0xb7, 0x7a, 0x81, 0xca, 0x83, 0x6b, 0xec, 1825 0xa7, 0x71, 0x12, 0x6d, 0x22, 0x78, 0xb1, 0xc8, 1826 0x37, 0xda, 0x1d, 0xd1, 0x9c, 0xa5, 0x6c, 0xfa, 1827 0xd3, 0x4b, 0x87, 0x39, 0x6f, 0x59, 0xe1, 0xec, 1828 0x4a, 0xe5, 0x0e, 0x72, 0x2b, 0x31, 0x18, 0xd9, 1829 0x54, 0x6a, 0x4c, 0xc3, 0xe0, 0x58, 0x3b, 0xd8, 1830 0xe8, 0x65, 0xc1, 0x98, 0xed, 0x64, 0x7b, 0xb1, 1831 0xee, 0xa9, 0x54, 0x95, 0x37, 0x98, 0x68, 0xca, 1832 0x83, 0xef, 0xc5, 0x1b, 0x23, 0x71, 0x5c, 0x1a, 1833 0xe6, 0xc0, 0xce, 0x2e, 0x16, 0x59, 0x79, 0xf4, 1834 0x94, 0x43, 0xd8, 0xb1, 0x2e, 0xe3, 0xb9, 0xa0, 1835 0x95, 0x80, 0x66, 0xdd, 0x1d, 0xdd, 0x0d, 0x78, 1836 0x9d, 0xc3, 0x91, 0x60, 0x16, 0x8b, 0xc5, 0x39, 1837 0xad, 0xdb, 0xa3, 0xc1, 0xd2, 0x8d, 0xa0, 0x78, 1838 0x75, 0x68, 0xa6, 0xb9, 0x15, 0x57, 0x0b, 0x06, 1839 0x64, 0x55, 0xd7, 0x07, 0x53, 0xf9, 0x8b, 0xd9, 1840 0x97, 0x46, 0xca, 0x04, 0x95, 0xd4, 0x3c, 0xd3, 1841 0x8f, 0x0a, 0x53, 0x27, 0xe6, 0xd4, 0xb4, 0x7b, 1842 0x70, 0x12, 0x12, 0xc5, 0x14, 0xa0, 0x53, 0xe5, 1843 0xd4, 0x30, 0xaa, 0xcc, 0xec, 0x03, 0x0a, 0x36, 1844 0x21, 0x9f, 0x81, 0x16, 0x6d, 0x1d, 0x53, 0x6e, 1845 0x08, 0xae, 0xf7, 0x05, 0xd9, 0x73, 0x5a, 0x45, 1846 0x3a, 0x52, 0x3e, 0xeb, 0x67, 0x49, 0xe1, 0x1a, 1847 0x8a, 0x4c, 0xd9, 0x83, 0x64, 0xd8, 0x16, 0x37, 1848 0x1c, 0x6b, 0x1c, 0x0d, 0x8f, 0x6a, 0xbf, 0x21, 1849 0xf1, 0x4f, 0x4c, 0x55, 0x6f, 0xe0, 0x5c, 0xa7, 1850 0xb1, 0x7b, 0x57, 0xa9, 0xa2, 0xb4, 0x9d, 0x53, 1851 0x7f, 0x0f, 0xb0, 0x21, 0x95, 0x70, 0x3a, 0x0d, 1852 0xa2, 0xc1, 0x52, 0x26, 0xad, 0xa7, 0x48, 0x66, 1853 0x2a, 0xfc, 0xaa, 0xaf, 0x25, 0x02, 0x58, 0x80, 1854 0xbe, 0xe7, 0xe4, 0x2a, 0x50, 0xe5, 0x46, 0x13, 1855 0xaa, 0x57, 0x0e, 0x6e, 0xee, 0xa9, 0x9e, 0x19, 1856 0xa3, 0x92, 0x8e, 0xc6, 0x3d, 0x76, 0xbb, 0x12, 1857 0xe2, 0x78, 0x77, 0x99, 0x6a, 0x06, 0xc4, 0x45, 1858 0x1f, 0x45, 0xe1, 0xf6, 0x65, 0x1f, 0xba, 0xe4, 1859 0xf6, 0xca, 0xa9, 0x62, 0xa9, 0x2c, 0x3a, 0x2d, 1860 0x8d, 0x34, 0xe2, 0x32, 0x6e, 0x4a, 0x52, 0x9f, 1861 0x3d, 0xcf, 0xab, 0xe8, 0x63, 0x66, 0x3f, 0x06, 1862 0xa3, 0xaa, 0xd5, 0xcb, 0x5d, 0x41, 0xb8, 0xe7, 1863 0x0a, 0x6b, 0x45, 0x90, 0x3a, 0xf0, 0xe5, 0x7f, 1864 0x7e, 0xde, 0x68, 0x20, 0x5e, 0x5a, 0x31, 0x3a, 1865 0x5c, 0x25, 0xb3, 0x82, 0xc7, 0x1e, 0x7d, 0x4d, 1866 0xd0, 0x23, 0x9f, 0x22, 0x1a, 0x54, 0x0b, 0xe4, 1867 0x3c, 0x1c, 0xc5, 0x24, 0x39, 0x4d, 0x96, 0x90, 1868 0xce, 0xc9, 0x3a, 0x07, 0x45, 0x01, 0x9e, 0xb6, 1869 0x55, 0x1b, 0xdc, 0xe0, 0x3b, 0xe8, 0x92, 0x57, 1870 0x43, 0x12, 0x9b, 0x11, 0x3f, 0x81, 0x5a, 0xca, 1871 0xc5, 0x85, 0x39, 0x25, 0x6d, 0xe4, 0x30, 0xef, 1872 0x83, 0x21, 0xed, 0x9c, 0xb3, 0xcf, 0x10, 0xe6, 1873 0xa1, 0x46, 0x10, 0x9a, 0x7b, 0xaf, 0x5f, 0x75, 1874 0x99, 0x62, 0xc1, 0xf4, 0x2c, 0x28, 0x0a, 0x8a, 1875 0xc7, 0xd2, 0xb4, 0x75, 0xb9, 0x66, 0x70, 0x9a, 1876 0xaf, 0xe3, 0xf1, 0x2f, 0xf2, 0xb0, 0x59, 0x9c, 1877 0x1e, 0x1a, 0xbd, 0xa9, 0x15, 0x55, 0x95, 0x4c, 1878 0x5b, 0x78, 0x0b, 0x2c, 0x00, 0xbb, 0xf9, 0x8b, 1879 0xeb, 0x72, 0x4f, 0xfb, 0xa4, 0x3a, 0xa0, 0x04, 1880 0x45, 0x32, 0x02, 0x6c, 0x16, 0x52, 0x3f, 0x4a, 1881 0x0a, 0x77, 0x64, 0xf4, 0x74, 0xed, 0x60, 0x6b, 1882 0x5e, 0x43, 0xa7, 0xe3, 0x84, 0x7e, 0xda, 0xf0, 1883 0xb1, 0x9e, 0x6d, 0x90, 0x9c, 0x32, 0xae, 0xba, 1884 0x7c, 0xfb, 0x72, 0x22, 0x27, 0x9c, 0xe1, 0x85, 1885 0xe1, 0xf6, 0x22, 0x4c, 0x3c, 0x4a, 0xd6, 0xed, 1886 0x4c, 0xa7, 0x79, 0x59, 0xb5, 0x5b, 0x91, 0x65, 1887 0x3f, 0x93, 0x97, 0x8d, 0xd7, 0xd0, 0xab, 0x17, 1888 0x2f, 0x13, 0x74, 0x53, 0x69, 0x74, 0xf8, 0x6b, 1889 0x39, 0x5c, 0x64, 0x5b, 0x3d, 0x75, 0xca, 0x85, 1890 0x0e, 0xda, 0x0f, 0x01, 0x34, 0xa3, 0x67, 0x8e, 1891 0x26, 0x6f, 0x26, 0x3c, 0xd0, 0xd9, 0xae, 0xe8, 1892 0x52, 0x13, 0x7f, 0xf8, 0x69, 0x62, 0xfc, 0x9a, 1893 0xc0, 0x0c, 0x66, 0x2e, 0x57, 0x21, 0x75, 0xb0, 1894 0xb3, 0x8c, 0xf6, 0x97, 0x44, 0x46, 0x65, 0x15, 1895 0x79, 0xd5, 0x6b, 0x68, 0x96, 0x47, 0xc1, 0xba, 1896 0x75, 0x46, 0x87, 0x76, 0x7d, 0x2d, 0xac, 0xf3, 1897 0x16, 0xae, 0xfb, 0x7e, 0x41, 0xe4, 0xae, 0x15, 1898 0xc2, 0x51, 0x69, 0x71, 0x0b, 0x63, 0x20, 0x6a, 1899 0xbd, 0xad, 0xce, 0x2a, 0x94, 0xac, 0xcf, 0x15, 1900 0x4e, 0xdc, 0x8e, 0x2a, 0x48, 0xed, 0xb3, 0x48, 1901 0x95, 0xf4, 0x41, 0xf3, 0x52, 0xef, 0x62, 0x90, 1902 0x10, 0x30, 0x42, 0xec, 0xf9, 0x30, 0x25, 0xc3, 1903 0xc5, 0x47, 0x76, 0xb5, 0x37, 0xeb, 0x9e, 0x87, 1904 0xbe, 0x5c, 0x24, 0xa5, 0x34, 0xdd, 0x92, 0xa1, 1905 0x20, 0x7d, 0xa7, 0x94, 0xa2, 0x67, 0x26, 0x70, 1906 0xfe, 0xc9, 0x3f, 0x21, 0xd1, 0xc2, 0x5a, 0xb1, 1907 0xaa, 0xac, 0x14, 0x1a, 0xe4, 0xdb, 0x71, 0x7e, 1908 0x9c, 0xc2, 0x52, 0x59, 0xc9, 0x58, 0xca, 0x88, 1909 0x71, 0x4f, 0x90, 0xb1, 0xbb, 0xac, 0x80, 0x53, 1910 0x21, 0xfb, 0xff, 0xfd, 0x1e, 0x9f, 0xc0, 0x59, 1911 0x8d, 0x80, 0x8e, 0x85, 0xa9, 0x3b, 0xd3, 0x20, 1912 0x3b, 0x91, 0x16, 0x49, 0xb2, 0x2a, 0xa4, 0xe2, 1913 0x30, 0xb2, 0x76, 0xf6, 0x92, 0x71, 0x37, 0x1b 1914}; 1915 1916static const unsigned char ml_dsa_65_priv_key[] = { 1917 0x3b, 0x5c, 0xb0, 0x79, 0xd2, 0xce, 0x76, 0x2b, 1918 0x3b, 0x95, 0x7c, 0x26, 0x69, 0x8f, 0xe7, 0x01, 1919 0xb9, 0x6b, 0x50, 0xa3, 0x2c, 0x73, 0x67, 0xcf, 1920 0x9e, 0xf4, 0xb8, 0x7d, 0xe3, 0xaf, 0x27, 0x77, 1921 0x39, 0x3e, 0xac, 0x91, 0xa1, 0xfb, 0xed, 0xf7, 1922 0x52, 0x0a, 0x4f, 0x77, 0xb2, 0x57, 0x7c, 0x65, 1923 0x05, 0x6e, 0x76, 0x3d, 0x28, 0xf4, 0x3a, 0x88, 1924 0x49, 0x33, 0x7d, 0x30, 0x17, 0x21, 0x5a, 0xc0, 1925 0x4b, 0x03, 0x74, 0x65, 0x6d, 0xbb, 0xfe, 0x8e, 1926 0x0b, 0x8b, 0xb4, 0x42, 0xce, 0xc1, 0xdd, 0x11, 1927 0xb1, 0x8f, 0x31, 0x06, 0x0b, 0xeb, 0xdf, 0xb3, 1928 0x11, 0x12, 0x19, 0x22, 0x34, 0xd7, 0xaa, 0xf2, 1929 0x17, 0xf0, 0x2e, 0x22, 0xef, 0x68, 0x0c, 0x8f, 1930 0xc7, 0x42, 0x0b, 0xd6, 0x88, 0xd8, 0x3b, 0xa7, 1931 0x22, 0xc5, 0x4e, 0x1a, 0xf2, 0x60, 0x85, 0x24, 1932 0x75, 0x85, 0x49, 0x17, 0x1b, 0xd4, 0x69, 0xd8, 1933 0x50, 0x68, 0x36, 0x83, 0x51, 0x12, 0x40, 0x24, 1934 0x06, 0x04, 0x07, 0x47, 0x28, 0x62, 0x86, 0x26, 1935 0x12, 0x24, 0x40, 0x83, 0x65, 0x44, 0x10, 0x62, 1936 0x78, 0x58, 0x14, 0x67, 0x20, 0x20, 0x60, 0x53, 1937 0x28, 0x73, 0x53, 0x34, 0x82, 0x18, 0x42, 0x43, 1938 0x78, 0x67, 0x65, 0x28, 0x12, 0x65, 0x71, 0x17, 1939 0x33, 0x06, 0x10, 0x51, 0x38, 0x07, 0x61, 0x42, 1940 0x72, 0x60, 0x18, 0x52, 0x08, 0x74, 0x58, 0x72, 1941 0x73, 0x06, 0x65, 0x20, 0x73, 0x20, 0x72, 0x42, 1942 0x03, 0x86, 0x03, 0x03, 0x50, 0x85, 0x13, 0x43, 1943 0x24, 0x53, 0x33, 0x82, 0x03, 0x36, 0x82, 0x73, 1944 0x12, 0x15, 0x78, 0x54, 0x60, 0x64, 0x32, 0x60, 1945 0x42, 0x47, 0x84, 0x73, 0x51, 0x60, 0x26, 0x03, 1946 0x35, 0x58, 0x25, 0x28, 0x83, 0x55, 0x64, 0x06, 1947 0x70, 0x82, 0x75, 0x54, 0x15, 0x70, 0x37, 0x61, 1948 0x71, 0x38, 0x75, 0x36, 0x15, 0x70, 0x78, 0x17, 1949 0x62, 0x01, 0x02, 0x13, 0x12, 0x46, 0x12, 0x56, 1950 0x82, 0x51, 0x32, 0x16, 0x27, 0x00, 0x52, 0x41, 1951 0x43, 0x86, 0x46, 0x00, 0x61, 0x24, 0x78, 0x33, 1952 0x40, 0x13, 0x34, 0x47, 0x60, 0x18, 0x52, 0x18, 1953 0x80, 0x01, 0x46, 0x53, 0x32, 0x74, 0x51, 0x72, 1954 0x81, 0x21, 0x30, 0x50, 0x28, 0x28, 0x55, 0x53, 1955 0x71, 0x03, 0x84, 0x87, 0x61, 0x88, 0x45, 0x35, 1956 0x63, 0x72, 0x05, 0x37, 0x06, 0x37, 0x35, 0x36, 1957 0x56, 0x71, 0x74, 0x53, 0x07, 0x61, 0x72, 0x65, 1958 0x78, 0x57, 0x42, 0x41, 0x02, 0x06, 0x61, 0x06, 1959 0x07, 0x66, 0x64, 0x50, 0x31, 0x24, 0x82, 0x43, 1960 0x86, 0x31, 0x26, 0x76, 0x47, 0x45, 0x03, 0x66, 1961 0x44, 0x00, 0x46, 0x04, 0x83, 0x03, 0x83, 0x81, 1962 0x33, 0x08, 0x77, 0x57, 0x08, 0x40, 0x04, 0x22, 1963 0x35, 0x17, 0x43, 0x63, 0x78, 0x44, 0x86, 0x24, 1964 0x40, 0x17, 0x28, 0x67, 0x34, 0x18, 0x75, 0x72, 1965 0x26, 0x83, 0x68, 0x63, 0x57, 0x47, 0x48, 0x84, 1966 0x50, 0x16, 0x43, 0x17, 0x86, 0x16, 0x44, 0x17, 1967 0x18, 0x70, 0x08, 0x51, 0x78, 0x70, 0x15, 0x58, 1968 0x04, 0x10, 0x16, 0x03, 0x11, 0x04, 0x43, 0x70, 1969 0x32, 0x77, 0x03, 0x23, 0x12, 0x74, 0x38, 0x26, 1970 0x65, 0x66, 0x62, 0x04, 0x65, 0x75, 0x54, 0x00, 1971 0x04, 0x01, 0x43, 0x15, 0x07, 0x47, 0x71, 0x12, 1972 0x70, 0x41, 0x72, 0x34, 0x05, 0x26, 0x08, 0x11, 1973 0x55, 0x22, 0x72, 0x83, 0x04, 0x66, 0x88, 0x80, 1974 0x25, 0x17, 0x68, 0x60, 0x15, 0x37, 0x64, 0x14, 1975 0x26, 0x64, 0x01, 0x45, 0x54, 0x51, 0x71, 0x38, 1976 0x62, 0x65, 0x78, 0x43, 0x36, 0x21, 0x02, 0x27, 1977 0x43, 0x47, 0x83, 0x86, 0x07, 0x05, 0x48, 0x56, 1978 0x86, 0x31, 0x27, 0x66, 0x34, 0x35, 0x48, 0x81, 1979 0x08, 0x38, 0x05, 0x10, 0x63, 0x32, 0x61, 0x73, 1980 0x47, 0x30, 0x00, 0x82, 0x66, 0x54, 0x86, 0x81, 1981 0x36, 0x06, 0x45, 0x01, 0x45, 0x87, 0x23, 0x36, 1982 0x83, 0x00, 0x32, 0x81, 0x10, 0x06, 0x57, 0x76, 1983 0x62, 0x40, 0x61, 0x77, 0x04, 0x17, 0x28, 0x70, 1984 0x15, 0x07, 0x42, 0x18, 0x61, 0x70, 0x32, 0x42, 1985 0x68, 0x12, 0x00, 0x18, 0x12, 0x72, 0x60, 0x50, 1986 0x63, 0x28, 0x51, 0x87, 0x82, 0x03, 0x36, 0x63, 1987 0x63, 0x25, 0x68, 0x54, 0x56, 0x16, 0x07, 0x58, 1988 0x77, 0x83, 0x31, 0x85, 0x44, 0x43, 0x60, 0x22, 1989 0x16, 0x01, 0x41, 0x23, 0x27, 0x11, 0x46, 0x60, 1990 0x50, 0x84, 0x77, 0x18, 0x81, 0x31, 0x88, 0x47, 1991 0x36, 0x51, 0x71, 0x56, 0x04, 0x25, 0x17, 0x44, 1992 0x33, 0x78, 0x28, 0x72, 0x27, 0x87, 0x62, 0x78, 1993 0x13, 0x83, 0x58, 0x12, 0x36, 0x22, 0x10, 0x25, 1994 0x13, 0x50, 0x88, 0x10, 0x24, 0x78, 0x15, 0x12, 1995 0x26, 0x43, 0x58, 0x02, 0x24, 0x17, 0x34, 0x75, 1996 0x46, 0x15, 0x46, 0x42, 0x84, 0x52, 0x41, 0x75, 1997 0x48, 0x77, 0x88, 0x33, 0x18, 0x18, 0x84, 0x31, 1998 0x47, 0x22, 0x35, 0x64, 0x72, 0x35, 0x65, 0x73, 1999 0x66, 0x88, 0x73, 0x12, 0x25, 0x51, 0x66, 0x57, 2000 0x05, 0x23, 0x54, 0x74, 0x51, 0x76, 0x52, 0x24, 2001 0x40, 0x64, 0x68, 0x28, 0x25, 0x65, 0x77, 0x12, 2002 0x53, 0x35, 0x41, 0x85, 0x18, 0x25, 0x02, 0x25, 2003 0x47, 0x22, 0x40, 0x37, 0x54, 0x03, 0x53, 0x26, 2004 0x86, 0x50, 0x70, 0x25, 0x56, 0x27, 0x21, 0x11, 2005 0x11, 0x72, 0x71, 0x54, 0x47, 0x63, 0x67, 0x22, 2006 0x75, 0x61, 0x70, 0x05, 0x10, 0x03, 0x41, 0x48, 2007 0x01, 0x47, 0x14, 0x70, 0x06, 0x64, 0x84, 0x02, 2008 0x28, 0x06, 0x12, 0x45, 0x13, 0x56, 0x48, 0x65, 2009 0x00, 0x74, 0x02, 0x10, 0x78, 0x42, 0x80, 0x02, 2010 0x00, 0x16, 0x37, 0x43, 0x23, 0x56, 0x67, 0x20, 2011 0x31, 0x86, 0x22, 0x20, 0x35, 0x51, 0x34, 0x58, 2012 0x10, 0x87, 0x83, 0x43, 0x32, 0x85, 0x47, 0x72, 2013 0x32, 0x28, 0x38, 0x47, 0x08, 0x73, 0x38, 0x20, 2014 0x25, 0x14, 0x51, 0x66, 0x88, 0x85, 0x15, 0x88, 2015 0x86, 0x86, 0x73, 0x46, 0x52, 0x81, 0x32, 0x70, 2016 0x85, 0x31, 0x20, 0x80, 0x32, 0x42, 0x02, 0x33, 2017 0x37, 0x68, 0x66, 0x70, 0x11, 0x27, 0x53, 0x75, 2018 0x48, 0x65, 0x01, 0x25, 0x24, 0x53, 0x68, 0x15, 2019 0x47, 0x25, 0x42, 0x01, 0x04, 0x47, 0x01, 0x58, 2020 0x36, 0x17, 0x71, 0x44, 0x21, 0x63, 0x52, 0x61, 2021 0x56, 0x16, 0x73, 0x17, 0x28, 0x08, 0x07, 0x76, 2022 0x08, 0x42, 0x58, 0x11, 0x42, 0x18, 0x17, 0x18, 2023 0x65, 0x63, 0x82, 0x45, 0x74, 0x35, 0x21, 0x01, 2024 0x35, 0x26, 0x43, 0x56, 0x58, 0x56, 0x64, 0x81, 2025 0x05, 0x52, 0x77, 0x31, 0x47, 0x27, 0x21, 0x82, 2026 0x60, 0x05, 0x51, 0x04, 0x15, 0x34, 0x58, 0x00, 2027 0x40, 0x83, 0x48, 0x21, 0x52, 0x04, 0x62, 0x23, 2028 0x34, 0x64, 0x85, 0x77, 0x35, 0x81, 0x52, 0x35, 2029 0x80, 0x24, 0x00, 0x03, 0x84, 0x32, 0x67, 0x76, 2030 0x78, 0x32, 0x87, 0x50, 0x48, 0x00, 0x64, 0x45, 2031 0x17, 0x05, 0x56, 0x84, 0x13, 0x02, 0x68, 0x42, 2032 0x76, 0x81, 0x01, 0x41, 0x18, 0x56, 0x30, 0x58, 2033 0x43, 0x72, 0x28, 0x71, 0x21, 0x87, 0x14, 0x64, 2034 0x03, 0x31, 0x58, 0x04, 0x72, 0x11, 0x43, 0x50, 2035 0x82, 0x57, 0x14, 0x38, 0x53, 0x36, 0x53, 0x44, 2036 0x37, 0x36, 0x83, 0x47, 0x58, 0x58, 0x52, 0x08, 2037 0x13, 0x33, 0x43, 0x40, 0x54, 0x26, 0x35, 0x28, 2038 0x67, 0x02, 0x08, 0x18, 0x34, 0x67, 0x16, 0x17, 2039 0x73, 0x13, 0x18, 0x02, 0x88, 0x32, 0x61, 0x60, 2040 0x56, 0x38, 0x05, 0x87, 0x78, 0x52, 0x07, 0x53, 2041 0x81, 0x06, 0x52, 0x88, 0x07, 0x35, 0x72, 0x72, 2042 0x44, 0x28, 0x80, 0x86, 0x11, 0x70, 0x40, 0x41, 2043 0x63, 0x80, 0x46, 0x15, 0x27, 0x62, 0x03, 0x45, 2044 0x14, 0x33, 0x56, 0x07, 0x78, 0x43, 0x77, 0x62, 2045 0x06, 0x54, 0x74, 0x43, 0x28, 0x72, 0x16, 0x40, 2046 0x78, 0x62, 0x44, 0x34, 0x00, 0x25, 0x75, 0x74, 2047 0x77, 0x37, 0x02, 0x48, 0x67, 0x18, 0x51, 0x67, 2048 0x77, 0x68, 0x38, 0x72, 0x85, 0x34, 0x42, 0x54, 2049 0x71, 0x61, 0x47, 0x42, 0x68, 0x55, 0x27, 0x26, 2050 0x38, 0x85, 0x15, 0x15, 0x43, 0x14, 0x31, 0x24, 2051 0x81, 0x26, 0x21, 0x17, 0x04, 0x00, 0x27, 0x21, 2052 0x20, 0x72, 0x85, 0x77, 0x30, 0x17, 0x26, 0x48, 2053 0x05, 0x48, 0x71, 0x41, 0x48, 0x27, 0x12, 0x43, 2054 0x35, 0x26, 0x13, 0x00, 0x26, 0x67, 0x28, 0x25, 2055 0x10, 0x05, 0x74, 0x06, 0x65, 0x16, 0x87, 0x17, 2056 0x73, 0x37, 0x42, 0x20, 0x16, 0x44, 0x40, 0x68, 2057 0x27, 0x23, 0x38, 0x28, 0x60, 0x52, 0x64, 0x40, 2058 0x28, 0x46, 0x00, 0x00, 0x01, 0x43, 0x75, 0x15, 2059 0x38, 0x12, 0x37, 0x11, 0x11, 0x87, 0x34, 0x43, 2060 0x35, 0x76, 0x76, 0x50, 0x43, 0x05, 0x00, 0x27, 2061 0x18, 0x70, 0x68, 0x14, 0x60, 0x26, 0x12, 0x75, 2062 0x42, 0x06, 0x23, 0x56, 0x74, 0x74, 0x37, 0x17, 2063 0x46, 0x20, 0x34, 0x72, 0x21, 0x33, 0x82, 0x73, 2064 0x51, 0x64, 0x72, 0x02, 0x48, 0x82, 0x57, 0x53, 2065 0x64, 0x74, 0x75, 0x28, 0x64, 0x02, 0x30, 0x22, 2066 0x06, 0x73, 0x66, 0x72, 0x46, 0x56, 0x30, 0x11, 2067 0x78, 0x32, 0x47, 0x52, 0x31, 0x02, 0x74, 0x13, 2068 0x13, 0x41, 0x07, 0x27, 0x72, 0x07, 0x66, 0x63, 2069 0x34, 0x84, 0x30, 0x66, 0x28, 0x72, 0x50, 0x62, 2070 0x30, 0x52, 0x82, 0x37, 0x40, 0x78, 0x31, 0x35, 2071 0x76, 0x83, 0x05, 0x02, 0x37, 0x25, 0x28, 0x85, 2072 0x62, 0x10, 0x05, 0x38, 0x64, 0x87, 0x21, 0x76, 2073 0x04, 0x51, 0x12, 0x45, 0x08, 0x50, 0x50, 0x75, 2074 0x20, 0x86, 0x32, 0x43, 0x13, 0x47, 0x31, 0x24, 2075 0x26, 0x57, 0x68, 0x64, 0x88, 0x17, 0x02, 0x70, 2076 0x42, 0x72, 0x37, 0x32, 0x85, 0x87, 0x83, 0x86, 2077 0x47, 0x70, 0x56, 0x22, 0x24, 0x53, 0x48, 0x85, 2078 0x02, 0x48, 0x16, 0x01, 0x07, 0x57, 0x73, 0x76, 2079 0x27, 0x43, 0x00, 0x88, 0x27, 0x38, 0x30, 0x86, 2080 0x27, 0x18, 0x62, 0x05, 0x30, 0x37, 0x16, 0x80, 2081 0x31, 0x72, 0x28, 0x37, 0x47, 0x57, 0x62, 0x55, 2082 0x74, 0x07, 0x41, 0x72, 0x26, 0x58, 0x52, 0x68, 2083 0x04, 0x80, 0x72, 0x77, 0x35, 0x43, 0x36, 0x47, 2084 0x38, 0x76, 0x86, 0x60, 0x14, 0x22, 0x77, 0x61, 2085 0x52, 0x74, 0x17, 0x64, 0x67, 0x85, 0x23, 0x58, 2086 0x28, 0x23, 0x05, 0x33, 0x66, 0x64, 0x83, 0x71, 2087 0x14, 0x03, 0x21, 0x70, 0x55, 0x43, 0x35, 0x58, 2088 0x53, 0x78, 0x22, 0x00, 0x15, 0x00, 0x50, 0x16, 2089 0x26, 0x84, 0x18, 0x51, 0x24, 0x01, 0x20, 0x51, 2090 0x06, 0x74, 0x44, 0x83, 0x40, 0x55, 0x70, 0x28, 2091 0x66, 0x11, 0x31, 0x02, 0x57, 0x55, 0x52, 0x72, 2092 0x27, 0x84, 0x54, 0x71, 0x40, 0x78, 0x44, 0x75, 2093 0x24, 0x78, 0x61, 0x21, 0x65, 0x57, 0x43, 0x58, 2094 0x21, 0x15, 0x11, 0x87, 0x35, 0x82, 0x52, 0x00, 2095 0x46, 0x11, 0x34, 0x68, 0x60, 0x60, 0x50, 0x15, 2096 0x25, 0x62, 0x48, 0x08, 0x18, 0x31, 0x36, 0x86, 2097 0x41, 0x26, 0x80, 0x82, 0x54, 0x68, 0x02, 0x07, 2098 0x23, 0x22, 0x24, 0x33, 0x27, 0x02, 0x04, 0x40, 2099 0x22, 0x47, 0x87, 0x62, 0x70, 0x21, 0x81, 0x22, 2100 0x25, 0x78, 0x87, 0x67, 0x62, 0x38, 0x42, 0x10, 2101 0x21, 0x58, 0x56, 0x06, 0x20, 0x18, 0x46, 0x18, 2102 0x22, 0x61, 0x73, 0x45, 0x65, 0x73, 0x58, 0x57, 2103 0x04, 0x76, 0x72, 0x54, 0x48, 0x00, 0x62, 0x27, 2104 0x22, 0x25, 0x17, 0x43, 0x55, 0x58, 0x57, 0x64, 2105 0x04, 0x61, 0x21, 0x24, 0x02, 0x20, 0x17, 0x34, 2106 0x25, 0x13, 0x35, 0x14, 0x52, 0x76, 0x83, 0x11, 2107 0x05, 0x05, 0x03, 0x11, 0x28, 0x71, 0x16, 0x40, 2108 0x56, 0x21, 0x76, 0x18, 0x67, 0x38, 0x02, 0x15, 2109 0x36, 0x67, 0xf3, 0xc8, 0x13, 0x98, 0x97, 0xb3, 2110 0x28, 0x88, 0xb7, 0x32, 0x0d, 0xf8, 0xcf, 0x60, 2111 0x47, 0x25, 0x85, 0xf5, 0x2d, 0x0c, 0x02, 0x62, 2112 0xa7, 0xb3, 0x22, 0x3c, 0x55, 0xb6, 0x55, 0x9b, 2113 0x20, 0x35, 0x10, 0x77, 0x87, 0xeb, 0xcf, 0xa0, 2114 0x11, 0x37, 0xdc, 0x09, 0x0b, 0xdb, 0x94, 0x28, 2115 0xc5, 0x30, 0x74, 0x7f, 0x73, 0x3a, 0x05, 0x10, 2116 0xf2, 0x1a, 0x61, 0x88, 0xdb, 0x2e, 0xc9, 0xf1, 2117 0x14, 0x75, 0x3d, 0xef, 0x09, 0x2f, 0x53, 0x57, 2118 0x87, 0xb0, 0x78, 0xa2, 0xc1, 0xe3, 0x5b, 0xd4, 2119 0x4e, 0x77, 0x86, 0x0c, 0x69, 0x06, 0x33, 0x59, 2120 0x35, 0xdd, 0xbd, 0xa7, 0x9f, 0x3e, 0x2f, 0x0f, 2121 0x22, 0x4d, 0x17, 0xa6, 0x5c, 0x60, 0x3e, 0xa3, 2122 0xf1, 0xbf, 0x08, 0x38, 0x9f, 0x14, 0x0b, 0x07, 2123 0xa4, 0x0d, 0x1e, 0xf8, 0x34, 0x23, 0x01, 0x62, 2124 0xad, 0x3c, 0x65, 0x49, 0xca, 0x12, 0x01, 0x2b, 2125 0x2d, 0x17, 0x4c, 0xa1, 0xa7, 0x40, 0xde, 0xdd, 2126 0x2b, 0x4b, 0x14, 0xf1, 0x21, 0x6a, 0x68, 0xd5, 2127 0x65, 0xe6, 0x16, 0x42, 0xdc, 0xf3, 0xce, 0x0e, 2128 0x3a, 0xa4, 0x12, 0x16, 0x72, 0xa5, 0xa4, 0xbb, 2129 0xa3, 0xb4, 0x08, 0x6d, 0xce, 0x95, 0x73, 0xc6, 2130 0x4a, 0xe4, 0x5a, 0x14, 0x73, 0xb1, 0x14, 0xab, 2131 0x65, 0xb7, 0x8b, 0xe4, 0x7c, 0xa1, 0xd2, 0xbb, 2132 0x6a, 0xf2, 0xf2, 0x7d, 0x64, 0x26, 0x68, 0xec, 2133 0xc2, 0x51, 0x3c, 0xf0, 0xcc, 0x7a, 0x04, 0x6a, 2134 0x29, 0x8d, 0x76, 0x7f, 0xe5, 0x8f, 0x95, 0x20, 2135 0xd1, 0xf7, 0x98, 0x29, 0xf5, 0x35, 0x80, 0x25, 2136 0xda, 0x54, 0xde, 0xb9, 0x5f, 0x6d, 0x68, 0xcf, 2137 0x7e, 0x85, 0xcf, 0x38, 0x0d, 0x32, 0x63, 0x37, 2138 0x77, 0xe1, 0xa5, 0x9c, 0x0a, 0x6c, 0xc5, 0x3f, 2139 0xde, 0xdb, 0xe6, 0x57, 0x16, 0x4e, 0xbc, 0xb1, 2140 0x02, 0x7c, 0x58, 0x85, 0x60, 0x1f, 0x0d, 0x0f, 2141 0x4f, 0x5f, 0xbf, 0xa3, 0xbc, 0x2c, 0xfe, 0x66, 2142 0xbf, 0xb5, 0x93, 0xf0, 0x13, 0xfa, 0x52, 0x07, 2143 0x40, 0xdb, 0xbf, 0x6e, 0x6c, 0xca, 0x74, 0x61, 2144 0x0b, 0xa6, 0xaf, 0x02, 0x60, 0xf1, 0x57, 0x17, 2145 0x08, 0xf1, 0x09, 0xf7, 0xc4, 0x4e, 0x51, 0xaf, 2146 0x04, 0xf1, 0x4c, 0xbc, 0xe5, 0x77, 0x8f, 0x0f, 2147 0x9b, 0xa7, 0xb3, 0xf7, 0xb0, 0x32, 0x14, 0xbc, 2148 0x1d, 0x40, 0xe7, 0x06, 0x01, 0xd6, 0xf2, 0x7f, 2149 0x84, 0xab, 0x47, 0x34, 0x15, 0x2c, 0x62, 0xfe, 2150 0x95, 0x51, 0xaf, 0x51, 0x4a, 0x1d, 0xc4, 0xea, 2151 0xaf, 0xdc, 0xe4, 0xea, 0xa7, 0x7d, 0x25, 0x2a, 2152 0x79, 0x24, 0xf8, 0xaa, 0xf2, 0xe9, 0x82, 0x48, 2153 0x7b, 0x0e, 0x2c, 0x5c, 0x38, 0x89, 0x21, 0xfe, 2154 0x91, 0x72, 0xed, 0xd9, 0x41, 0xac, 0x0d, 0xdc, 2155 0x12, 0xf4, 0x3f, 0x49, 0x91, 0x65, 0x2d, 0x39, 2156 0xea, 0xdf, 0xc6, 0xcd, 0xa8, 0xbe, 0x53, 0x23, 2157 0x04, 0xbf, 0xd3, 0xf0, 0xb8, 0x76, 0xc8, 0x01, 2158 0x43, 0x2c, 0x6b, 0x79, 0xae, 0x23, 0x50, 0xe0, 2159 0x34, 0x09, 0x85, 0xd8, 0xdb, 0xc5, 0x37, 0xb8, 2160 0xd5, 0x49, 0x26, 0x9c, 0x0b, 0x85, 0x95, 0x5f, 2161 0x28, 0x17, 0x8d, 0xd3, 0x0d, 0xe0, 0x34, 0x34, 2162 0x23, 0x07, 0x74, 0x13, 0x55, 0xd7, 0xe5, 0xb4, 2163 0x83, 0x4c, 0xd8, 0xdc, 0xdb, 0x5a, 0xe9, 0x3c, 2164 0x36, 0x53, 0xa4, 0x3a, 0x80, 0xde, 0x77, 0xa0, 2165 0xaa, 0x9a, 0xe7, 0x6e, 0xdd, 0x98, 0xdd, 0x6a, 2166 0xf4, 0x34, 0xda, 0x83, 0x80, 0x9c, 0xe5, 0x83, 2167 0xb3, 0xb6, 0xf7, 0x81, 0x39, 0x46, 0xea, 0x93, 2168 0x85, 0xad, 0xf5, 0xa7, 0x1a, 0xb1, 0x31, 0x6f, 2169 0xb9, 0x79, 0x11, 0x57, 0x62, 0x47, 0xd9, 0xcc, 2170 0x67, 0x78, 0xec, 0x32, 0xd3, 0x0c, 0x34, 0xea, 2171 0x1b, 0xa8, 0x84, 0x54, 0xb1, 0xf3, 0x80, 0x4b, 2172 0x79, 0x32, 0x82, 0x18, 0x54, 0x2d, 0xdf, 0xbb, 2173 0x4d, 0xbe, 0x75, 0xa0, 0x8e, 0x53, 0x52, 0xed, 2174 0x6e, 0x0a, 0x9f, 0xa6, 0x9b, 0x14, 0x32, 0x10, 2175 0xf1, 0x7e, 0xdd, 0xfa, 0xc5, 0xf5, 0xbd, 0x67, 2176 0xfb, 0x64, 0xf6, 0xc3, 0xb1, 0xc9, 0x81, 0x17, 2177 0x60, 0x56, 0x11, 0xdc, 0x63, 0x13, 0x16, 0x4a, 2178 0xa8, 0xeb, 0x7f, 0x82, 0xd3, 0x90, 0xeb, 0x5e, 2179 0xe7, 0xb0, 0xd9, 0x3e, 0x13, 0xd3, 0x73, 0x90, 2180 0x0d, 0x67, 0xc1, 0x18, 0xcc, 0x3b, 0x88, 0xcd, 2181 0x4d, 0x40, 0xbe, 0xd4, 0x5e, 0xee, 0x73, 0xa4, 2182 0xee, 0xbd, 0xcb, 0xbc, 0x39, 0x8b, 0x6d, 0x15, 2183 0x34, 0x18, 0xd2, 0x55, 0x93, 0xc0, 0xf4, 0x95, 2184 0xd1, 0xe4, 0x7f, 0x37, 0xb1, 0x3a, 0x8c, 0x4b, 2185 0xbc, 0x7d, 0x76, 0xb4, 0x34, 0xf4, 0x11, 0x5c, 2186 0x10, 0xeb, 0x34, 0x88, 0x61, 0xd7, 0x89, 0xac, 2187 0x87, 0x91, 0x6a, 0x80, 0xee, 0x07, 0x0d, 0x26, 2188 0xfa, 0xd2, 0x75, 0x6b, 0xd6, 0x0b, 0xa5, 0xc6, 2189 0x71, 0x6d, 0x0a, 0x5b, 0x59, 0x62, 0x32, 0x60, 2190 0x42, 0x73, 0x75, 0xda, 0x63, 0x36, 0x96, 0xca, 2191 0xde, 0xe9, 0x60, 0xfe, 0xa2, 0x64, 0xcc, 0x85, 2192 0x22, 0x4c, 0xc5, 0x2f, 0x0e, 0xe8, 0xf5, 0x93, 2193 0xdb, 0x16, 0xa7, 0x1f, 0xd9, 0x30, 0xbc, 0xa2, 2194 0xba, 0x23, 0xca, 0xea, 0xc1, 0x4d, 0x2f, 0xd4, 2195 0x81, 0x98, 0xff, 0x58, 0xfc, 0x40, 0x39, 0x75, 2196 0x52, 0x3e, 0x3e, 0xf4, 0x8d, 0x95, 0x55, 0x0a, 2197 0x95, 0x5f, 0x4f, 0x5d, 0xdd, 0x0d, 0xb8, 0xd4, 2198 0x63, 0x98, 0x48, 0x6b, 0xec, 0xe8, 0xd9, 0xae, 2199 0xeb, 0x9d, 0x48, 0xa4, 0x9a, 0x63, 0x03, 0xc4, 2200 0x57, 0xcd, 0x7d, 0x97, 0xc8, 0x11, 0x7e, 0xcb, 2201 0x78, 0xe8, 0x5d, 0x6e, 0xe6, 0xdd, 0x13, 0x33, 2202 0xf2, 0x05, 0xcd, 0x5a, 0x44, 0x18, 0xf9, 0x32, 2203 0x41, 0x4e, 0x5c, 0xfc, 0x7a, 0xe9, 0xc2, 0x28, 2204 0xd3, 0x42, 0x56, 0xc8, 0x39, 0x26, 0x78, 0xdd, 2205 0x92, 0x1c, 0xa6, 0xf4, 0x94, 0xa9, 0xc4, 0x69, 2206 0xf9, 0x7e, 0xea, 0x9c, 0xd6, 0x92, 0xd6, 0xab, 2207 0xd5, 0x1d, 0xde, 0x4e, 0x8d, 0x6c, 0xb2, 0xc3, 2208 0x8a, 0xcb, 0xdb, 0xfc, 0x2d, 0xb6, 0xc6, 0x16, 2209 0x49, 0xd1, 0x31, 0x51, 0x90, 0x0c, 0x75, 0x6e, 2210 0x27, 0x3b, 0xda, 0x42, 0x0b, 0xdc, 0xd1, 0xea, 2211 0xde, 0xd9, 0xbe, 0x02, 0xb8, 0xb0, 0x55, 0xba, 2212 0xde, 0x0c, 0xcf, 0x68, 0xd2, 0x02, 0x7f, 0x16, 2213 0x5a, 0x63, 0xcc, 0xd1, 0x42, 0xb3, 0x2f, 0x08, 2214 0x4a, 0x8c, 0x06, 0xa9, 0x13, 0xa2, 0xca, 0xf0, 2215 0x72, 0xff, 0xd1, 0x77, 0x58, 0xcd, 0x8d, 0x49, 2216 0xca, 0x67, 0x9a, 0x21, 0x58, 0x94, 0xa6, 0x80, 2217 0x57, 0xb4, 0xfb, 0x7a, 0x76, 0x30, 0xe8, 0xa1, 2218 0xef, 0x45, 0x6f, 0xa9, 0x62, 0xf5, 0x51, 0xfa, 2219 0x87, 0x56, 0x07, 0x9b, 0xc3, 0xab, 0xd6, 0x3c, 2220 0xa4, 0x3a, 0x02, 0x1f, 0xcd, 0xaa, 0xce, 0x2c, 2221 0xc9, 0x49, 0x30, 0x27, 0x3e, 0x27, 0x92, 0x59, 2222 0xff, 0xb7, 0x35, 0x6e, 0xe7, 0x7e, 0x94, 0x06, 2223 0xf0, 0x2b, 0x00, 0x58, 0x3f, 0x5e, 0x28, 0x12, 2224 0x70, 0x1c, 0x6b, 0xef, 0x78, 0x22, 0x12, 0x03, 2225 0xd7, 0x12, 0xd5, 0x46, 0xd6, 0xf2, 0xea, 0x16, 2226 0x94, 0x2c, 0x1a, 0xfa, 0x52, 0x05, 0xed, 0xf1, 2227 0x25, 0xf4, 0x06, 0x8b, 0x85, 0x7c, 0x38, 0x70, 2228 0x53, 0x54, 0x41, 0x6c, 0x8a, 0x0a, 0x60, 0x83, 2229 0x59, 0x7d, 0x73, 0xe0, 0xd8, 0xa5, 0x1b, 0x3a, 2230 0xec, 0xcd, 0x5f, 0x44, 0x0b, 0xeb, 0xcc, 0xe9, 2231 0x65, 0xd4, 0x68, 0xb0, 0x3d, 0x13, 0xf1, 0xb9, 2232 0x2a, 0x67, 0xb7, 0xae, 0x4f, 0xf3, 0xa7, 0x2e, 2233 0x33, 0xf3, 0x80, 0xc1, 0x4f, 0xd1, 0xcd, 0xdd, 2234 0xd2, 0xab, 0xde, 0xcb, 0x04, 0xc8, 0x1b, 0x26, 2235 0xd4, 0x86, 0xd8, 0x6f, 0xe1, 0x2b, 0x85, 0xb9, 2236 0x2c, 0xe3, 0xaf, 0xf5, 0x9f, 0x4b, 0xfb, 0x41, 2237 0xa9, 0xc9, 0x2e, 0xd0, 0x2d, 0xda, 0xba, 0xa0, 2238 0xba, 0xfb, 0x14, 0x5d, 0x2e, 0xbf, 0x65, 0xbd, 2239 0xe3, 0x51, 0x8d, 0xdd, 0xbb, 0x51, 0x35, 0x3a, 2240 0xf0, 0xbe, 0x74, 0xae, 0x42, 0x8b, 0x5d, 0xd9, 2241 0xef, 0x67, 0x1c, 0x01, 0xb5, 0x1c, 0xc9, 0x3d, 2242 0x0c, 0x42, 0x3a, 0xce, 0x53, 0xbb, 0x23, 0xd0, 2243 0x92, 0x2c, 0x60, 0x0f, 0xf1, 0x73, 0x37, 0xa9, 2244 0x99, 0x86, 0xd9, 0x7e, 0xfc, 0x8a, 0x56, 0xa2, 2245 0xf7, 0x17, 0x69, 0x75, 0x49, 0x1a, 0x8e, 0x4c, 2246 0x4b, 0x87, 0xe0, 0xfb, 0xcc, 0x93, 0x14, 0x7d, 2247 0x96, 0xdc, 0xcc, 0xc6, 0x3c, 0x8d, 0x71, 0x50, 2248 0xf2, 0x0f, 0x67, 0xdd, 0xd9, 0x95, 0xb7, 0xc9, 2249 0xd8, 0xf4, 0x1a, 0xca, 0x0c, 0x90, 0xe4, 0xf5, 2250 0x0e, 0xf7, 0xfb, 0x8c, 0x4c, 0x92, 0x66, 0x3c, 2251 0x3d, 0xf2, 0x47, 0x6f, 0x8c, 0x51, 0x71, 0xff, 2252 0xe1, 0xba, 0x1f, 0x02, 0x64, 0x12, 0x79, 0xa5, 2253 0xad, 0x6e, 0x7c, 0xab, 0xf1, 0x06, 0x01, 0xc1, 2254 0x25, 0x4e, 0xd6, 0xb6, 0xc3, 0xe9, 0xbe, 0x64, 2255 0x52, 0x18, 0x22, 0x01, 0x23, 0xc6, 0xd6, 0xbb, 2256 0x13, 0xbe, 0x15, 0x40, 0xc4, 0x97, 0x4b, 0x24, 2257 0xe7, 0xaa, 0xef, 0x3b, 0x24, 0x04, 0x47, 0xcc, 2258 0x4d, 0xd8, 0xd2, 0x9f, 0xf6, 0x60, 0xb9, 0x04, 2259 0x27, 0xc0, 0x1c, 0xbc, 0x28, 0xe6, 0x16, 0xa4, 2260 0x06, 0xa8, 0xab, 0x52, 0x56, 0x58, 0x53, 0x4a, 2261 0xda, 0x0d, 0xf0, 0xb2, 0x8a, 0x8e, 0x7d, 0xd7, 2262 0x29, 0x45, 0xe9, 0xc6, 0xc3, 0xf4, 0xaa, 0x16, 2263 0x01, 0x48, 0x1d, 0x6c, 0x90, 0xbe, 0x49, 0x5c, 2264 0x28, 0x49, 0x18, 0xd5, 0x52, 0xd5, 0x12, 0x54, 2265 0x9c, 0x1f, 0xc0, 0xb5, 0x8f, 0x22, 0xa7, 0x2a, 2266 0xd7, 0x36, 0x41, 0xc2, 0xc1, 0x7d, 0x11, 0x9b, 2267 0xbf, 0x84, 0x2a, 0x05, 0x9f, 0x41, 0xea, 0x54, 2268 0xf2, 0xe1, 0x69, 0x4d, 0xd5, 0x63, 0x00, 0x28, 2269 0x81, 0x75, 0xd3, 0x8c, 0x19, 0x81, 0xd6, 0x0a, 2270 0x25, 0x62, 0x9e, 0x35, 0xd0, 0x4d, 0xc7, 0x73, 2271 0x3e, 0xae, 0x39, 0x89, 0xf9, 0xb6, 0x67, 0xf0, 2272 0x08, 0x98, 0xd7, 0x87, 0xf1, 0xf4, 0x58, 0x12, 2273 0xf5, 0x22, 0x51, 0xad, 0x9a, 0x4d, 0xed, 0x09, 2274 0x81, 0x82, 0x99, 0x9b, 0x5f, 0x05, 0xb6, 0x3e, 2275 0x8e, 0xad, 0x34, 0xa1, 0x2d, 0xb6, 0xae, 0xc7, 2276 0x7b, 0x7f, 0x39, 0xf9, 0x53, 0xaf, 0xcd, 0x0e, 2277 0xcc, 0x98, 0x5b, 0x5b, 0x92, 0x8c, 0x75, 0x36, 2278 0x0a, 0xa9, 0xfc, 0xf5, 0x22, 0x14, 0xf3, 0x44, 2279 0x5e, 0xc7, 0xf6, 0x7f, 0x3a, 0x92, 0x0b, 0xc1, 2280 0x68, 0xa3, 0xc2, 0xd8, 0xf3, 0xd1, 0x12, 0x5b, 2281 0x12, 0xd1, 0x96, 0x18, 0x50, 0x0c, 0xb5, 0x13, 2282 0x40, 0xcb, 0x38, 0xdd, 0xf7, 0xc2, 0x4f, 0xb9, 2283 0xda, 0xd2, 0x94, 0x3f, 0xbf, 0x63, 0x4f, 0x0a, 2284 0xb8, 0x03, 0x67, 0x65, 0xc6, 0x40, 0xff, 0xc8, 2285 0xd7, 0x8e, 0x06, 0x92, 0x7a, 0xdb, 0xad, 0x7d, 2286 0x1b, 0x82, 0xd5, 0x19, 0xf1, 0x4a, 0x11, 0x3a, 2287 0xe4, 0x23, 0x39, 0x8d, 0x5d, 0x0a, 0x63, 0xb2, 2288 0x67, 0x1f, 0x98, 0xde, 0x5a, 0x44, 0x6a, 0x70, 2289 0xff, 0x83, 0x34, 0x78, 0xa5, 0x02, 0x0b, 0x51, 2290 0x4b, 0x0a, 0xab, 0x16, 0x04, 0x2e, 0xce, 0x6a, 2291 0xf2, 0x72, 0x4c, 0x6f, 0x2f, 0xfa, 0xca, 0xd8, 2292 0x19, 0x4f, 0x48, 0x9f, 0x1c, 0x7d, 0x60, 0x34, 2293 0x9c, 0x79, 0x44, 0xd3, 0xaa, 0xea, 0x5c, 0xfe, 2294 0xa0, 0xa1, 0x6e, 0xff, 0xa8, 0xb6, 0xe3, 0xd9, 2295 0x60, 0xf2, 0x93, 0x32, 0x77, 0x07, 0xd6, 0xbb, 2296 0xdf, 0x3a, 0x49, 0x38, 0xad, 0xc4, 0x63, 0xaf, 2297 0xd0, 0x00, 0x41, 0xdb, 0x96, 0x75, 0xbb, 0xb3, 2298 0xa8, 0x10, 0x67, 0x7e, 0x47, 0x89, 0x8c, 0xce, 2299 0xdd, 0xe8, 0x8b, 0xf3, 0xdb, 0xd7, 0xf5, 0x4f, 2300 0x22, 0xbf, 0x19, 0x61, 0x64, 0xf7, 0xe3, 0xcd, 2301 0x4e, 0x3d, 0x19, 0x8e, 0x45, 0x8c, 0xce, 0xd3, 2302 0x65, 0x3e, 0xb0, 0xdc, 0x94, 0x2e, 0xa2, 0xc2, 2303 0x53, 0xba, 0x46, 0x3a, 0xd1, 0x39, 0xd4, 0x7a, 2304 0xd8, 0xd6, 0x95, 0xb7, 0xdb, 0xdd, 0x7a, 0x81, 2305 0x78, 0xac, 0xfe, 0x0a, 0x1c, 0x74, 0x3f, 0x52, 2306 0xa3, 0x4d, 0xee, 0x4d, 0x37, 0x15, 0xd7, 0x39, 2307 0x06, 0x59, 0xec, 0xa7, 0x92, 0xb2, 0x65, 0xee, 2308 0x49, 0x63, 0xf4, 0x01, 0x54, 0xc2, 0xa0, 0xab, 2309 0xfc, 0x10, 0x03, 0x30, 0x22, 0x63, 0xdb, 0x6e, 2310 0xed, 0xd9, 0x1c, 0x28, 0xb1, 0x48, 0x09, 0xa8, 2311 0x1c, 0x97, 0x09, 0xda, 0xaa, 0x3e, 0xd7, 0xc3, 2312 0x65, 0x2f, 0x81, 0x22, 0x8e, 0x4e, 0x0e, 0x71, 2313 0xaa, 0x96, 0xe4, 0x23, 0xd7, 0xa1, 0x1f, 0xcb, 2314 0x8c, 0x9e, 0xa0, 0x39, 0xc4, 0xb1, 0x01, 0x68, 2315 0x90, 0x61, 0x58, 0xcd, 0x62, 0xa0, 0xa9, 0xeb, 2316 0xb3, 0x07, 0xb4, 0xf5, 0xf9, 0xb6, 0xdf, 0x05, 2317 0xc6, 0x03, 0x7a, 0xa5, 0x1e, 0x8c, 0x12, 0x79, 2318 0x9a, 0xe3, 0x2b, 0x22, 0x25, 0x9a, 0x52, 0x68, 2319 0x4b, 0x47, 0x71, 0xac, 0x71, 0x3e, 0x1a, 0x14, 2320 0x7f, 0x34, 0x4d, 0xdc, 0x4e, 0x49, 0xf6, 0x5a, 2321 0x91, 0x5b, 0x44, 0xc8, 0xef, 0x67, 0x9c, 0xfe, 2322 0xb3, 0x04, 0xa9, 0x4f, 0xa8, 0xf3, 0x89, 0xdf, 2323 0x89, 0x83, 0xff, 0xd2, 0x45, 0x95, 0x66, 0x56, 2324 0x23, 0x84, 0x01, 0x13, 0x90, 0x5a, 0x7a, 0x04, 2325 0xc3, 0x97, 0x60, 0xf2, 0x86, 0x35, 0x5c, 0x45, 2326 0x6f, 0xcf, 0x27, 0xbc, 0xbb, 0xc3, 0x52, 0xf6, 2327 0xb2, 0xd6, 0x5a, 0xe0, 0xbc, 0x14, 0xc8, 0xfd, 2328 0x57, 0x38, 0x61, 0x8e, 0xc2, 0x58, 0x5e, 0xcc, 2329 0x0d, 0x86, 0xb6, 0xf3, 0x27, 0x92, 0x4a, 0x44, 2330 0xde, 0x27, 0x4b, 0xf9, 0xc3, 0x62, 0x5d, 0xe2, 2331 0x72, 0xfe, 0xae, 0x22, 0x8f, 0x31, 0x52, 0x99, 2332 0xda, 0x94, 0xd3, 0xaa, 0x73, 0x49, 0xdb, 0x48, 2333 0x1a, 0x1f, 0x0b, 0x7b, 0x11, 0x3f, 0xcd, 0x57, 2334 0xc4, 0x4e, 0x7b, 0x3e, 0xc6, 0x82, 0x8a, 0x17, 2335 0x41, 0xe3, 0x00, 0x55, 0xec, 0x82, 0x9f, 0x65, 2336 0x30, 0x4d, 0xfa, 0xc1, 0x91, 0x16, 0x89, 0x4d, 2337 0xec, 0x5a, 0xee, 0x17, 0xa0, 0xaf, 0x03, 0xb4, 2338 0x04, 0x01, 0x54, 0xa6, 0x13, 0xad, 0x7c, 0x49, 2339 0x17, 0x75, 0x0c, 0x4a, 0xe6, 0xf8, 0x7c, 0xa2, 2340 0xf3, 0x53, 0x84, 0xb1, 0xd3, 0x23, 0x53, 0xc7, 2341 0x35, 0xdf, 0x66, 0xee, 0x0f, 0xbc, 0x8e, 0x2c, 2342 0x21, 0x43, 0x46, 0x97, 0x89, 0x90, 0x35, 0x18, 2343 0xcc, 0xd9, 0x3a, 0xc8, 0x58, 0x1c, 0x52, 0x94, 2344 0x57, 0x4d, 0x5a, 0x37, 0xc3, 0xfb, 0x65, 0xdd, 2345 0xbe, 0x96, 0x97, 0xdf, 0xda, 0x73, 0x60, 0x9a, 2346 0x45, 0x1e, 0x18, 0xf4, 0xea, 0x5e, 0xfc, 0x0e, 2347 0x39, 0xf3, 0x81, 0x88, 0x2a, 0xe5, 0xe1, 0x91, 2348 0xed, 0x37, 0x32, 0x63, 0x4d, 0xd3, 0x90, 0xcb, 2349 0x86, 0xc0, 0x5c, 0xbd, 0x04, 0x7e, 0x13, 0x69, 2350 0xa0, 0xe1, 0x1f, 0xbd, 0x86, 0x33, 0xf4, 0x99, 2351 0xd1, 0x4e, 0xde, 0x60, 0xbb, 0xd2, 0xd5, 0x9d, 2352 0x3f, 0x15, 0x01, 0x79, 0x4a, 0x03, 0x5e, 0x39, 2353 0x23, 0x99, 0xbb, 0x27, 0x8d, 0x93, 0x5c, 0x13, 2354 0x6e, 0xbf, 0xc0, 0x3a, 0x32, 0xf9, 0xc0, 0xf4, 2355 0xb4, 0x73, 0x16, 0x63, 0xba, 0x9d, 0x2c, 0xb1, 2356 0x08, 0x63, 0x69, 0xa4, 0x71, 0x0d, 0x67, 0x06, 2357 0xd3, 0x48, 0x0e, 0x7a, 0x53, 0xe0, 0xdd, 0x19, 2358 0xc2, 0xfc, 0x96, 0x07, 0xbc, 0xe6, 0x3d, 0x76, 2359 0x73, 0xcb, 0x7f, 0x0f, 0xe1, 0x9a, 0x70, 0xd0, 2360 0x0c, 0xf7, 0xc9, 0x96, 0x04, 0x70, 0x4a, 0xf8, 2361 0x9a, 0x68, 0x12, 0x1c, 0xfa, 0x2b, 0x96, 0x9c, 2362 0x3f, 0x45, 0xf9, 0x02, 0x80, 0xf4, 0xcd, 0x60, 2363 0xb3, 0xb2, 0x03, 0x69, 0x3f, 0x3f, 0x81, 0x2f, 2364 0xfc, 0x9e, 0x6a, 0x0a, 0x72, 0xdb, 0x65, 0xe0, 2365 0x20, 0xb9, 0x3e, 0x0f, 0xaa, 0xc7, 0x68, 0x29, 2366 0xd1, 0xfe, 0xbf, 0x73, 0x32, 0xcb, 0x97, 0xa8, 2367 0x67, 0x77, 0x08, 0x39, 0x0d, 0x1d, 0x01, 0xec, 2368 0x5a, 0x7f, 0x60, 0x69, 0x13, 0x47, 0xa1, 0x7f, 2369 0xfc, 0x0c, 0xee, 0x51, 0x6f, 0x53, 0x16, 0x2f, 2370 0xd5, 0x50, 0x9d, 0x99, 0xe7, 0xa8, 0xf7, 0xda, 2371 0xb2, 0x71, 0xcd, 0x3d, 0xaa, 0x40, 0x6d, 0x7a, 2372 0x51, 0x76, 0xb2, 0xca, 0xc2, 0xc8, 0x88, 0x30, 2373 0xf6, 0xa9, 0x9c, 0xb4, 0x7e, 0x24, 0xce, 0x20, 2374 0x0f, 0x10, 0xf2, 0xdb, 0xad, 0x43, 0x5e, 0x0c, 2375 0x3d, 0x27, 0x6a, 0xed, 0x38, 0x2b, 0xe2, 0xd0, 2376 0x91, 0xff, 0x5b, 0x7c, 0x0c, 0xed, 0x87, 0xa7, 2377 0xd5, 0x09, 0x79, 0xfd, 0xe5, 0xeb, 0x26, 0xe0, 2378 0xa9, 0x71, 0xae, 0xd5, 0xba, 0xc4, 0x8a, 0xdf, 2379 0x0e, 0xbf, 0x0e, 0x8a, 0x6a, 0x40, 0x3d, 0x48, 2380 0x06, 0x53, 0x57, 0x43, 0xc6, 0x91, 0x4a, 0x3a, 2381 0x19, 0xc4, 0x06, 0x85, 0xbb, 0x80, 0x6e, 0x0f, 2382 0xf4, 0x54, 0xa9, 0xab, 0x2e, 0x85, 0xe8, 0x89, 2383 0x48, 0x55, 0xe3, 0xca, 0x74, 0xf0, 0x59, 0x47, 2384 0x01, 0x1d, 0x6b, 0xcd, 0x6c, 0xd3, 0x00, 0x9a, 2385 0x82, 0xaf, 0x1e, 0x29, 0x82, 0xdb, 0xd3, 0x48, 2386 0x24, 0x3e, 0x61, 0xf9, 0x40, 0xc7, 0x28, 0xc6, 2387 0xe3, 0x27, 0x71, 0xf0, 0x37, 0xeb, 0xf4, 0x30, 2388 0xdd, 0x1e, 0xf1, 0x1f, 0xa6, 0xc0, 0x7d, 0x8c, 2389 0x83, 0xac, 0xd5, 0x91, 0x3a, 0x9f, 0x8b, 0x03, 2390 0xe6, 0x7b, 0xef, 0x25, 0x57, 0xe9, 0x37, 0x52, 2391 0x01, 0xa1, 0xf6, 0xa9, 0xaf, 0xbf, 0x43, 0xf2, 2392 0x43, 0x79, 0x32, 0xf5, 0x03, 0x70, 0xde, 0x3c, 2393 0x41, 0x4e, 0x7f, 0xeb, 0x9d, 0x0e, 0x91, 0x45, 2394 0x0c, 0x98, 0xdd, 0x65, 0xcb, 0x41, 0xde, 0x75, 2395 0xa8, 0xb6, 0xe0, 0xd6, 0xe9, 0xbe, 0xe7, 0xd9, 2396 0xb0, 0x01, 0x27, 0x0c, 0xf1, 0xc0, 0x20, 0xed, 2397 0x7b, 0x17, 0xb2, 0xfa, 0x56, 0x9b, 0x5a, 0xf5, 2398 0xb1, 0x2e, 0x36, 0xd0, 0x88, 0x2b, 0x00, 0xc5, 2399 0x02, 0x4a, 0xa0, 0xda, 0x65, 0xb6, 0x7b, 0xa1, 2400 0x7b, 0x1e, 0x28, 0x72, 0xcf, 0x4f, 0xa3, 0xe6, 2401 0x21, 0x14, 0x25, 0x40, 0xc4, 0x41, 0xda, 0xde, 2402 0xd4, 0x10, 0xca, 0x02, 0x95, 0x31, 0xcd, 0xfc, 2403 0xe9, 0x7b, 0xb8, 0x0f, 0xe3, 0xf1, 0xcb, 0x2e, 2404 0x8f, 0xd4, 0x3e, 0xfa, 0xdc, 0x5f, 0x4c, 0xc3, 2405 0xc1, 0x38, 0x8e, 0xbe, 0xf8, 0x21, 0x56, 0xaf, 2406 0xba, 0x42, 0xb7, 0x76, 0xd8, 0xfc, 0xa3, 0x6c, 2407 0x07, 0x62, 0xa2, 0xb5, 0x27, 0xe0, 0x18, 0x7c, 2408 0x57, 0xe3, 0x6d, 0xfe, 0x47, 0x56, 0x61, 0xd5, 2409 0xda, 0x17, 0x44, 0x7b, 0x47, 0xea, 0x43, 0x62, 2410 0xcf, 0x11, 0xe4, 0x6b, 0x26, 0x82, 0x24, 0x13, 2411 0x63, 0xc6, 0x14, 0xbb, 0x00, 0xad, 0xe6, 0xe7, 2412 0x32, 0x4e, 0x79, 0xae, 0xc0, 0x1a, 0x51, 0x78, 2413 0xc0, 0xd4, 0x13, 0x02, 0xb1, 0x55, 0xcf, 0xf0, 2414 0x92, 0xaa, 0xad, 0x8f, 0x89, 0x4d, 0xfc, 0x2e, 2415 0x3b, 0x1a, 0x22, 0xb2, 0x4e, 0xef, 0xdb, 0x98, 2416 0x56, 0x0f, 0x7a, 0x0a, 0x5e, 0xf6, 0xde, 0x8e, 2417 0xd5, 0xdc, 0x84, 0x72, 0xe6, 0xa9, 0xd2, 0x5f, 2418 0xd5, 0x66, 0xab, 0x1e, 0x8b, 0xf2, 0x28, 0x9b, 2419 0x77, 0xc5, 0x24, 0x04, 0x93, 0x85, 0x54, 0x5b, 2420 0xcc, 0x0a, 0x18, 0xdc, 0xa9, 0x27, 0x34, 0x1d 2421}; 2422 2423static const unsigned char ml_dsa_65_sig[] = { 2424 0x5e, 0xc1, 0xb0, 0x64, 0x5c, 0x45, 0x6e, 0x22, 2425 0x9f, 0x7c, 0x49, 0xbf, 0x8e, 0x93, 0xe5, 0x83, 2426 0xfc, 0xa0, 0xf3, 0xb0, 0x93, 0x6f, 0x47, 0xa9, 2427 0x11, 0x9e, 0x1b, 0x13, 0xae, 0x05, 0xdd, 0xc6, 2428 0x55, 0x46, 0x81, 0x4f, 0x5e, 0x0c, 0xa7, 0x75, 2429 0x6b, 0x5c, 0x13, 0xf2, 0xc7, 0x1f, 0x4d, 0x74, 2430 0xa5, 0x50, 0xf4, 0xec, 0x3e, 0x75, 0x75, 0xbf, 2431 0x4c, 0xef, 0x50, 0x02, 0x87, 0x7d, 0x88, 0x05, 2432 0x40, 0xba, 0xc1, 0x8e, 0xd6, 0x5d, 0xe3, 0x3c, 2433 0xd9, 0x98, 0x05, 0x76, 0x09, 0xdf, 0xcb, 0xd2, 2434 0x0e, 0x56, 0x53, 0x88, 0x1e, 0xe1, 0x91, 0xcd, 2435 0x7d, 0x67, 0x11, 0x89, 0xf8, 0x58, 0xb9, 0x76, 2436 0xd6, 0x8f, 0x83, 0xca, 0xcc, 0x94, 0xf4, 0x97, 2437 0x58, 0xf5, 0x3d, 0xc7, 0xaa, 0xa4, 0x3f, 0xe3, 2438 0xcb, 0xcc, 0x67, 0xac, 0x50, 0x8f, 0xfe, 0xf7, 2439 0x90, 0x33, 0x04, 0x8b, 0x82, 0x14, 0x26, 0xa7, 2440 0x21, 0x4e, 0xf2, 0x37, 0x5a, 0x91, 0xe8, 0x7a, 2441 0x30, 0xb6, 0xce, 0x8f, 0x31, 0xfc, 0xef, 0xbe, 2442 0x7d, 0x16, 0x81, 0x18, 0xb3, 0x77, 0x0f, 0x4a, 2443 0xe9, 0x31, 0xf8, 0x51, 0x0e, 0xaa, 0x44, 0x5c, 2444 0x8b, 0x43, 0x0a, 0x61, 0x02, 0x6c, 0xdf, 0xee, 2445 0x09, 0x9b, 0x8f, 0x91, 0x5c, 0x75, 0x10, 0xa8, 2446 0xc6, 0xe3, 0x5d, 0x93, 0x74, 0x63, 0x73, 0x27, 2447 0xb9, 0x29, 0xc0, 0x9b, 0x62, 0x6a, 0xc6, 0x75, 2448 0x84, 0x78, 0x41, 0xf3, 0x5c, 0x5d, 0x60, 0xcf, 2449 0xc5, 0xe4, 0x78, 0x87, 0x53, 0x6c, 0xab, 0xff, 2450 0xbb, 0x53, 0xe9, 0x54, 0xf7, 0x1e, 0x06, 0xcf, 2451 0x9e, 0x52, 0xd0, 0x3c, 0x8c, 0x5e, 0x64, 0xba, 2452 0x28, 0x33, 0xb0, 0x14, 0x84, 0x56, 0x5a, 0xac, 2453 0xd6, 0xee, 0x1e, 0x5e, 0x39, 0x08, 0xcb, 0x16, 2454 0x54, 0x21, 0xe4, 0x6c, 0xa7, 0x29, 0xd2, 0x7b, 2455 0xbe, 0x09, 0xd5, 0x1c, 0xf2, 0xf8, 0x11, 0x1e, 2456 0x64, 0x6b, 0xca, 0x1a, 0xe4, 0xca, 0xab, 0xf1, 2457 0x13, 0xdc, 0xa2, 0x1e, 0x78, 0x09, 0x2a, 0x08, 2458 0xc5, 0xa1, 0x42, 0x62, 0xac, 0x94, 0x46, 0x61, 2459 0x37, 0x98, 0x0d, 0x93, 0xa6, 0xc2, 0x4d, 0xb8, 2460 0x00, 0x43, 0x4d, 0x6c, 0x5d, 0x06, 0x30, 0xaf, 2461 0xd5, 0xb6, 0x32, 0x9e, 0xfe, 0xf2, 0x03, 0x8b, 2462 0xa6, 0x7c, 0x6d, 0x36, 0x7e, 0xef, 0x99, 0x09, 2463 0xaf, 0x2c, 0x79, 0x70, 0x26, 0xff, 0xc8, 0x99, 2464 0x01, 0x93, 0x3b, 0x9c, 0xde, 0x0b, 0x5e, 0xf5, 2465 0x44, 0x5f, 0x15, 0xb6, 0x49, 0xde, 0x89, 0xdd, 2466 0x1e, 0x2b, 0x69, 0x7d, 0xb2, 0x88, 0xf2, 0x94, 2467 0x24, 0x49, 0xeb, 0x23, 0xfc, 0x60, 0x95, 0x09, 2468 0x89, 0xe5, 0xfd, 0xe3, 0x63, 0xfa, 0x3a, 0xb7, 2469 0x18, 0x99, 0xe0, 0x5a, 0x25, 0x94, 0xd6, 0x3a, 2470 0x6a, 0x48, 0x6e, 0xea, 0xe3, 0x61, 0xf8, 0x81, 2471 0xe8, 0x4a, 0x43, 0xcb, 0x19, 0xfe, 0x2e, 0x16, 2472 0x8d, 0xca, 0x7e, 0xeb, 0x81, 0x55, 0xc0, 0x8a, 2473 0xf5, 0x14, 0x5b, 0xb6, 0x06, 0x45, 0x72, 0xa6, 2474 0x8a, 0xc2, 0x16, 0x8d, 0xe4, 0x31, 0x54, 0x9c, 2475 0xd2, 0x75, 0x5f, 0x7d, 0xf2, 0x19, 0x19, 0xf4, 2476 0x4a, 0xfe, 0xaf, 0x18, 0x2d, 0x51, 0x43, 0x2e, 2477 0x40, 0x02, 0xc0, 0x25, 0x53, 0x10, 0x37, 0x3d, 2478 0xeb, 0xd6, 0x08, 0x75, 0x6c, 0xb2, 0x38, 0x72, 2479 0xef, 0x67, 0x80, 0x50, 0xc7, 0x54, 0x4c, 0x91, 2480 0xcb, 0x68, 0x64, 0x23, 0xa9, 0x4b, 0x0d, 0xcb, 2481 0x71, 0x9c, 0x27, 0x67, 0x22, 0x98, 0xad, 0x3a, 2482 0xa0, 0xd8, 0x9f, 0x21, 0x95, 0xdc, 0xb0, 0xa5, 2483 0xb4, 0x44, 0x3b, 0xc8, 0xcb, 0x5c, 0x50, 0xd1, 2484 0x38, 0x03, 0x91, 0x79, 0x73, 0x2f, 0x4a, 0xd7, 2485 0x1f, 0xe5, 0xdc, 0x16, 0xaf, 0xb1, 0x2a, 0x86, 2486 0x02, 0x0b, 0x31, 0x42, 0x64, 0x2f, 0x8a, 0x83, 2487 0x7b, 0x13, 0x78, 0xdd, 0x6c, 0x72, 0x46, 0xa2, 2488 0x84, 0x2f, 0xa8, 0x24, 0x43, 0xb0, 0x69, 0xaf, 2489 0x52, 0x58, 0x13, 0x7c, 0xb3, 0xf8, 0x2d, 0x74, 2490 0x87, 0x68, 0x17, 0xd6, 0x0c, 0x50, 0x19, 0xf8, 2491 0x11, 0x68, 0xd5, 0x1c, 0x56, 0x30, 0x5d, 0x31, 2492 0x56, 0xe4, 0x9d, 0x80, 0x39, 0x0c, 0xcd, 0x34, 2493 0xfe, 0x67, 0x2f, 0xfa, 0x0c, 0x10, 0xb2, 0xcd, 2494 0x66, 0x9e, 0x65, 0xac, 0xc5, 0x45, 0x33, 0x20, 2495 0x16, 0x79, 0x82, 0x48, 0x26, 0xaa, 0x54, 0xd9, 2496 0x32, 0x03, 0x99, 0x46, 0x65, 0xf8, 0xa8, 0xe7, 2497 0x3c, 0xb1, 0xf9, 0xed, 0x76, 0x21, 0x36, 0xab, 2498 0x98, 0x2d, 0xf2, 0xd1, 0x75, 0x33, 0x58, 0xb5, 2499 0x7c, 0x4e, 0x3b, 0x78, 0xb6, 0x24, 0x15, 0xd2, 2500 0xac, 0x41, 0x44, 0x46, 0x4d, 0x7a, 0x5b, 0x86, 2501 0xce, 0xc2, 0x93, 0x11, 0x8f, 0x68, 0xb5, 0xc7, 2502 0x83, 0x8f, 0xe1, 0x13, 0x91, 0xef, 0xca, 0x18, 2503 0xa3, 0xf1, 0x04, 0x28, 0x58, 0xd8, 0x54, 0x12, 2504 0x03, 0xbe, 0xe1, 0x29, 0xcf, 0x28, 0xa3, 0x43, 2505 0x78, 0x00, 0xb7, 0x52, 0x00, 0xe3, 0x44, 0x07, 2506 0x5f, 0x67, 0xb1, 0x78, 0x75, 0x9c, 0xe0, 0xc7, 2507 0x33, 0x5f, 0x69, 0x27, 0x05, 0x15, 0xc3, 0xd4, 2508 0x81, 0x09, 0x33, 0x7b, 0x3e, 0xc4, 0x71, 0xc3, 2509 0xc0, 0x9a, 0x2c, 0xb5, 0xfc, 0x00, 0x79, 0x1d, 2510 0x12, 0xb4, 0x90, 0xf1, 0xa3, 0xb1, 0xaa, 0xa8, 2511 0xf9, 0x40, 0x48, 0xb1, 0x8b, 0x3c, 0xa9, 0xa9, 2512 0x36, 0xe0, 0xe8, 0xd3, 0x43, 0x4f, 0x63, 0xcc, 2513 0xe1, 0xbf, 0x93, 0xa5, 0xb0, 0x7a, 0xac, 0xd6, 2514 0x69, 0x42, 0xce, 0x52, 0x8c, 0xd8, 0x30, 0x18, 2515 0x9f, 0x77, 0xa2, 0xd6, 0xde, 0x5a, 0x3d, 0x59, 2516 0x28, 0x3a, 0x2a, 0x58, 0x25, 0xcb, 0x95, 0x01, 2517 0x9d, 0x04, 0x81, 0x1d, 0x63, 0xfb, 0xb1, 0xf3, 2518 0x0b, 0x3d, 0x68, 0xc1, 0x42, 0x83, 0xc5, 0xc2, 2519 0x27, 0x1e, 0x58, 0x4f, 0x42, 0x89, 0x45, 0x08, 2520 0xb2, 0xf2, 0x8d, 0x26, 0xd1, 0xb3, 0x4d, 0xbd, 2521 0xaf, 0x74, 0xc9, 0x7f, 0xbe, 0x81, 0x46, 0x73, 2522 0xdb, 0x68, 0x45, 0x41, 0xb1, 0xbe, 0xe7, 0x76, 2523 0x31, 0x01, 0xc8, 0x8c, 0xb5, 0x26, 0x9e, 0x2e, 2524 0xde, 0x07, 0x9f, 0x5b, 0x7e, 0x73, 0x36, 0xbf, 2525 0x51, 0x60, 0x98, 0xe0, 0x6e, 0x83, 0x85, 0x21, 2526 0x2c, 0xdb, 0x28, 0x2c, 0x8f, 0x4b, 0xf9, 0x15, 2527 0x08, 0x8f, 0x06, 0xa8, 0xfe, 0x26, 0x2b, 0xea, 2528 0xaf, 0xb0, 0x97, 0x3c, 0xb9, 0xf8, 0x25, 0xef, 2529 0xf5, 0x58, 0xd2, 0xf4, 0xbd, 0x1c, 0x1b, 0x84, 2530 0x29, 0xde, 0xbe, 0xb6, 0xfd, 0x30, 0x47, 0x0c, 2531 0x63, 0x3a, 0x3e, 0x6d, 0x8b, 0x0b, 0x1e, 0x64, 2532 0x5d, 0x8f, 0x64, 0xc9, 0x35, 0x7a, 0xb4, 0xb9, 2533 0xfb, 0x47, 0xe4, 0x50, 0xcd, 0xf6, 0x1a, 0xb1, 2534 0xf6, 0x22, 0x0a, 0xd5, 0x63, 0xb5, 0x20, 0xed, 2535 0x13, 0xfb, 0x43, 0x11, 0x67, 0x89, 0x6d, 0x9f, 2536 0xb1, 0x6f, 0xe8, 0x48, 0x2f, 0x7e, 0xda, 0xbc, 2537 0x08, 0xc2, 0xde, 0x1c, 0x29, 0xa4, 0x50, 0x7d, 2538 0x9c, 0x8e, 0xbc, 0x0d, 0x2b, 0xe2, 0xda, 0xb6, 2539 0x9c, 0x6c, 0x08, 0xd3, 0x3c, 0xf6, 0x71, 0x23, 2540 0x90, 0x07, 0x8f, 0x99, 0x86, 0x85, 0xf8, 0xaa, 2541 0xed, 0x65, 0x99, 0xf3, 0xf5, 0x69, 0xe2, 0x6b, 2542 0x67, 0x47, 0x5c, 0x8d, 0x5d, 0xee, 0x9c, 0xda, 2543 0xa1, 0x56, 0x73, 0x35, 0xf1, 0xe7, 0x2e, 0xb9, 2544 0xf9, 0x70, 0xc5, 0xb4, 0xdd, 0x21, 0x9f, 0x25, 2545 0x23, 0xf4, 0x74, 0x57, 0xc1, 0xfd, 0x09, 0x2e, 2546 0x80, 0xea, 0x4d, 0x90, 0x93, 0x84, 0x06, 0x43, 2547 0xc0, 0xbc, 0x26, 0xd2, 0xfd, 0x3b, 0x03, 0x2e, 2548 0x93, 0x90, 0xb3, 0x4b, 0xd4, 0x58, 0x31, 0x18, 2549 0xc5, 0xa5, 0xc4, 0x3c, 0xe5, 0xb5, 0x23, 0xfb, 2550 0xec, 0xb0, 0xb8, 0xe7, 0x7e, 0x1a, 0xb3, 0xf9, 2551 0xce, 0x5a, 0x25, 0x02, 0x2e, 0xcf, 0xb3, 0x4a, 2552 0xe3, 0x5e, 0xd5, 0xc8, 0x78, 0x0a, 0x89, 0x7c, 2553 0x3e, 0x30, 0x8a, 0xd5, 0xb0, 0x60, 0xc1, 0x52, 2554 0x7c, 0xbc, 0x9e, 0x47, 0x0a, 0xa7, 0xc3, 0xee, 2555 0x11, 0x06, 0x72, 0x89, 0x23, 0x8b, 0x51, 0xb8, 2556 0xbb, 0x5d, 0xc1, 0xf0, 0x38, 0x66, 0x8e, 0xa7, 2557 0x43, 0xad, 0xc1, 0x40, 0x80, 0x58, 0xe4, 0xdf, 2558 0x0d, 0xb1, 0x2b, 0xa2, 0xd4, 0x58, 0x20, 0x95, 2559 0xee, 0x51, 0x13, 0x94, 0x1e, 0x8d, 0x1e, 0xd4, 2560 0x2d, 0x82, 0x73, 0xa6, 0x92, 0x0c, 0xec, 0x74, 2561 0x12, 0xbe, 0x2a, 0x8c, 0x72, 0xb3, 0x99, 0x7d, 2562 0x33, 0x50, 0xe4, 0xeb, 0xad, 0x24, 0x7c, 0xef, 2563 0x1a, 0x41, 0x4b, 0x04, 0xe6, 0x21, 0xa3, 0x1a, 2564 0xa4, 0x13, 0xf4, 0xdc, 0x70, 0xa2, 0xdc, 0x0d, 2565 0xc1, 0x02, 0x43, 0xeb, 0xf7, 0x69, 0x82, 0x7a, 2566 0x99, 0x61, 0x1b, 0x14, 0xaa, 0xce, 0x2b, 0x1b, 2567 0xd1, 0xaa, 0x3a, 0x99, 0xae, 0x51, 0xae, 0x35, 2568 0xb9, 0x8c, 0xe0, 0x43, 0x6e, 0x1e, 0x17, 0x36, 2569 0xf0, 0x9e, 0xf2, 0x83, 0x22, 0x6c, 0x82, 0xee, 2570 0xfb, 0x72, 0x35, 0x22, 0x45, 0x4a, 0xbc, 0xfa, 2571 0x65, 0x44, 0xa1, 0xce, 0x6a, 0x6a, 0xe1, 0x3f, 2572 0x6f, 0xd0, 0x45, 0x72, 0x29, 0xf4, 0xf4, 0xb0, 2573 0x97, 0x0e, 0x1e, 0xe6, 0xa8, 0xb6, 0xc8, 0x44, 2574 0x11, 0x99, 0x6e, 0xd9, 0xfd, 0x0b, 0x04, 0xaf, 2575 0x10, 0x0a, 0xd0, 0xae, 0x5d, 0xff, 0x78, 0x32, 2576 0x09, 0x39, 0x73, 0x2e, 0xaf, 0x65, 0x70, 0x3b, 2577 0xd5, 0xfe, 0x90, 0xc0, 0x9c, 0xf5, 0xba, 0xbd, 2578 0x9d, 0x78, 0xe9, 0x67, 0x87, 0x79, 0xad, 0x1f, 2579 0x77, 0x12, 0x8e, 0x8d, 0x6e, 0xc3, 0x69, 0xc6, 2580 0x22, 0x60, 0x2d, 0x4f, 0x49, 0x1b, 0xa7, 0xa3, 2581 0x8a, 0x14, 0x9d, 0x48, 0xfe, 0x0c, 0x38, 0x9a, 2582 0x0e, 0xbc, 0x7e, 0x5c, 0x6c, 0x01, 0xc5, 0x68, 2583 0x39, 0xd1, 0x33, 0xca, 0x23, 0xf6, 0x12, 0x02, 2584 0x59, 0x3f, 0xe2, 0x11, 0x9d, 0xa0, 0x41, 0x3d, 2585 0xa5, 0x3b, 0x5a, 0xe1, 0xdc, 0x66, 0x00, 0xcb, 2586 0x91, 0x39, 0x60, 0xd4, 0xa8, 0xdb, 0x91, 0xf3, 2587 0x2a, 0x7b, 0xfc, 0xc7, 0x41, 0x66, 0x88, 0x68, 2588 0x54, 0xff, 0x9f, 0x38, 0x03, 0x8c, 0x93, 0x72, 2589 0x4c, 0xab, 0xbe, 0xeb, 0x3d, 0x74, 0x74, 0x38, 2590 0xcf, 0x46, 0x08, 0xfa, 0x72, 0xcf, 0xbf, 0xed, 2591 0xb6, 0xc1, 0x0c, 0xc5, 0x13, 0xa9, 0x76, 0x67, 2592 0x6b, 0xe2, 0xad, 0xc4, 0x06, 0xfa, 0x0c, 0x81, 2593 0xd8, 0xdd, 0x7b, 0x28, 0x3f, 0x15, 0xb7, 0x0d, 2594 0xb3, 0x56, 0x5a, 0x3c, 0xa6, 0x8f, 0x96, 0x20, 2595 0xa4, 0x02, 0x6e, 0x0a, 0x7f, 0x8d, 0x97, 0x5a, 2596 0xb2, 0xf5, 0xa9, 0xd8, 0xb9, 0x0b, 0x72, 0x0c, 2597 0x6c, 0x6c, 0xcc, 0x31, 0x76, 0x55, 0x1a, 0xde, 2598 0xf5, 0x17, 0xd9, 0xb0, 0x57, 0xea, 0x39, 0xab, 2599 0xcd, 0xb7, 0x5f, 0x16, 0x07, 0xdb, 0x36, 0x63, 2600 0x16, 0x8c, 0x6f, 0x09, 0xe3, 0xc0, 0x43, 0xda, 2601 0xd0, 0x77, 0x17, 0xb4, 0x72, 0x50, 0xfc, 0x8e, 2602 0x1d, 0xdd, 0xec, 0x00, 0x2b, 0x21, 0xe4, 0x71, 2603 0xa4, 0xdd, 0x51, 0xd9, 0xe0, 0xdb, 0x14, 0x21, 2604 0x42, 0xf2, 0x90, 0x49, 0x25, 0x55, 0x48, 0x47, 2605 0x58, 0x7b, 0x96, 0x97, 0x42, 0xb2, 0xd5, 0x50, 2606 0xa9, 0x28, 0xba, 0xec, 0xba, 0x52, 0x6d, 0xd0, 2607 0xb1, 0x75, 0xd8, 0xd4, 0xda, 0x81, 0x10, 0x0c, 2608 0xb0, 0x75, 0x57, 0x57, 0x81, 0x7f, 0x8d, 0xf9, 2609 0x29, 0xaf, 0x27, 0x85, 0x45, 0x4a, 0x84, 0x53, 2610 0x78, 0xde, 0x09, 0xe9, 0xf5, 0x2c, 0xd4, 0x91, 2611 0xc3, 0x3a, 0x9c, 0x50, 0xe1, 0xc6, 0x20, 0x66, 2612 0x26, 0x4a, 0x7b, 0x4f, 0x05, 0x89, 0x97, 0x3b, 2613 0xe1, 0xb8, 0xbc, 0x28, 0xa4, 0x31, 0xa8, 0x13, 2614 0xb3, 0xc2, 0xf5, 0xee, 0x10, 0xec, 0x4c, 0xf4, 2615 0xd6, 0x21, 0xab, 0x9b, 0x58, 0xe8, 0x95, 0x7c, 2616 0x85, 0x64, 0x57, 0x81, 0x79, 0x1b, 0x8b, 0xb1, 2617 0x84, 0xd5, 0xe9, 0x86, 0xe1, 0x6f, 0xce, 0x56, 2618 0xe1, 0x8d, 0x1d, 0xa2, 0x4d, 0x54, 0x97, 0xc3, 2619 0x2e, 0xc5, 0x5d, 0x6e, 0x9b, 0x4f, 0x43, 0x0c, 2620 0xf0, 0x36, 0x68, 0x53, 0x9e, 0x2f, 0xbd, 0x5a, 2621 0x8f, 0x3c, 0x30, 0x9f, 0x38, 0x40, 0x58, 0x34, 2622 0x27, 0x18, 0xfc, 0x70, 0x54, 0x7e, 0x70, 0x15, 2623 0xeb, 0x93, 0x29, 0x15, 0x7d, 0xa7, 0x6b, 0xa0, 2624 0x5b, 0x7d, 0x2b, 0x7a, 0x79, 0x10, 0xb4, 0x8b, 2625 0xd9, 0xfa, 0x94, 0x5d, 0xc2, 0x1b, 0x0d, 0xf7, 2626 0x47, 0x18, 0xa9, 0x8f, 0xa2, 0x64, 0x32, 0x17, 2627 0x15, 0x1d, 0x3b, 0xed, 0x3c, 0x32, 0x8a, 0x69, 2628 0x2d, 0x14, 0xae, 0x5a, 0x4a, 0xa4, 0x79, 0xdb, 2629 0x6e, 0x9e, 0x81, 0xa5, 0x32, 0x92, 0xa3, 0x55, 2630 0x3e, 0xfa, 0x05, 0x21, 0x1e, 0x1d, 0xb8, 0x08, 2631 0x5e, 0xee, 0x21, 0x14, 0xc4, 0x38, 0x17, 0x6c, 2632 0x24, 0x1a, 0xdb, 0xbd, 0xf0, 0x37, 0x33, 0xc2, 2633 0xc5, 0xec, 0xe9, 0x92, 0x6d, 0x1c, 0xc0, 0x3e, 2634 0x58, 0x26, 0x26, 0xde, 0x87, 0xc2, 0xef, 0x2c, 2635 0x9d, 0x18, 0x7b, 0x71, 0x05, 0xf7, 0x9f, 0x42, 2636 0x29, 0x8c, 0x18, 0x9b, 0xf6, 0xe9, 0x34, 0x75, 2637 0x59, 0x6f, 0x18, 0x8c, 0x43, 0xcc, 0x5c, 0xd7, 2638 0x45, 0x14, 0xda, 0xa0, 0xcf, 0x11, 0x10, 0xb2, 2639 0x00, 0xab, 0x94, 0x59, 0x36, 0xd6, 0x77, 0x7b, 2640 0x8a, 0x84, 0xff, 0x22, 0xd3, 0x60, 0x66, 0x06, 2641 0x42, 0xa2, 0xe6, 0xdd, 0xc0, 0xe6, 0xb7, 0x4c, 2642 0xe7, 0xc6, 0x88, 0x71, 0xb9, 0xf2, 0x75, 0x96, 2643 0x30, 0x85, 0xaf, 0x5f, 0xa7, 0xdb, 0x2b, 0xe7, 2644 0x17, 0xbc, 0xa6, 0x6c, 0x2b, 0xec, 0xef, 0x53, 2645 0x26, 0xe5, 0xad, 0xf2, 0x03, 0x02, 0xac, 0x51, 2646 0xf7, 0xa5, 0x06, 0x8f, 0x80, 0x9f, 0xc6, 0xd0, 2647 0xed, 0x0f, 0xed, 0xea, 0xf6, 0x5b, 0x61, 0xfc, 2648 0x2b, 0xb3, 0x44, 0xfd, 0x26, 0x1c, 0xde, 0x45, 2649 0x9f, 0xdb, 0x58, 0x2a, 0x12, 0x41, 0xdf, 0x9d, 2650 0xf6, 0xf9, 0xfc, 0x89, 0xa0, 0x86, 0x33, 0xd2, 2651 0xcf, 0x8b, 0x17, 0x10, 0x84, 0xbe, 0x94, 0x72, 2652 0x77, 0x28, 0x58, 0x52, 0x9a, 0x24, 0x9c, 0x3a, 2653 0x55, 0xd5, 0x57, 0x57, 0xb1, 0x3d, 0x03, 0xa6, 2654 0x0d, 0xb7, 0x89, 0x61, 0xa6, 0x1d, 0xc6, 0x61, 2655 0xa4, 0x75, 0xc2, 0xa7, 0x0e, 0xc9, 0x4c, 0x95, 2656 0x2a, 0xa1, 0x65, 0x63, 0x1f, 0x82, 0x2c, 0xf0, 2657 0xad, 0xcf, 0x24, 0xca, 0x89, 0x64, 0x72, 0x1e, 2658 0x26, 0x66, 0x37, 0x36, 0x4c, 0x35, 0x1e, 0xe9, 2659 0xb5, 0x64, 0xd9, 0xe1, 0x8f, 0x42, 0x5e, 0x9d, 2660 0x1a, 0xd6, 0xfe, 0x20, 0xa9, 0x74, 0xa9, 0x85, 2661 0x62, 0xc6, 0x17, 0x20, 0x63, 0x1b, 0x8e, 0xb5, 2662 0x1a, 0x2a, 0x81, 0xc6, 0x21, 0xf9, 0x54, 0x04, 2663 0x56, 0x26, 0x89, 0x90, 0xa0, 0xab, 0xcb, 0x5f, 2664 0x86, 0x8f, 0x9e, 0xf1, 0x17, 0x65, 0xa7, 0xb7, 2665 0x28, 0x63, 0x39, 0x5c, 0x3c, 0xeb, 0x1f, 0x9d, 2666 0xf9, 0x19, 0xdb, 0xaa, 0x6c, 0x18, 0x8b, 0x57, 2667 0xac, 0xec, 0x55, 0xf6, 0xb8, 0x2a, 0xc9, 0x24, 2668 0x04, 0xa7, 0xcc, 0xec, 0x53, 0x28, 0x3d, 0xae, 2669 0x75, 0x39, 0xaa, 0x66, 0x84, 0xc6, 0x94, 0xd7, 2670 0xc2, 0xdc, 0x21, 0x12, 0x73, 0x0c, 0x06, 0x2b, 2671 0x17, 0x40, 0x69, 0x49, 0xfd, 0x78, 0x7b, 0x9a, 2672 0x13, 0x0f, 0xc4, 0x8a, 0xd2, 0x60, 0x9d, 0xa4, 2673 0x0b, 0x3a, 0xf4, 0x3a, 0x9b, 0x0a, 0x79, 0x3e, 2674 0x31, 0xaa, 0x27, 0x63, 0x41, 0x38, 0x4e, 0x46, 2675 0x14, 0x8c, 0x55, 0x80, 0x7b, 0x75, 0xc8, 0xe9, 2676 0x15, 0x64, 0xc8, 0xc7, 0xdd, 0xf4, 0x1d, 0xe9, 2677 0x25, 0x4a, 0x0e, 0x06, 0x4a, 0x1a, 0xc8, 0x88, 2678 0xec, 0x46, 0xd6, 0xfb, 0x6b, 0xb8, 0x94, 0x28, 2679 0xaf, 0xbc, 0x2f, 0xe6, 0x28, 0x76, 0xc0, 0x0a, 2680 0xfc, 0x60, 0x42, 0xef, 0x45, 0xff, 0x76, 0xf8, 2681 0xe1, 0x50, 0x6f, 0x94, 0xaf, 0xa5, 0xd9, 0x4d, 2682 0xe9, 0xa9, 0x7c, 0x2d, 0x1d, 0xb3, 0x78, 0x66, 2683 0xc3, 0x6e, 0x4d, 0x22, 0xd9, 0x0f, 0xcf, 0xf0, 2684 0x87, 0xa7, 0xdc, 0xec, 0x5a, 0x12, 0x65, 0x55, 2685 0x3d, 0x9b, 0xc8, 0x33, 0xfd, 0x83, 0xfc, 0x02, 2686 0xfb, 0x22, 0x0c, 0x1d, 0x7f, 0xff, 0x38, 0xe1, 2687 0x6b, 0x78, 0x47, 0xa8, 0x54, 0x31, 0x36, 0x69, 2688 0x44, 0x64, 0xae, 0x1a, 0xfc, 0x8b, 0x3c, 0x3a, 2689 0x9f, 0x3e, 0xca, 0x85, 0xa1, 0x0d, 0x56, 0x72, 2690 0x63, 0xb5, 0x7b, 0xfa, 0x4f, 0x18, 0x76, 0x57, 2691 0x3a, 0xa7, 0xb0, 0x20, 0x24, 0x9b, 0xb1, 0x8d, 2692 0x01, 0xec, 0x32, 0x9c, 0x84, 0xc1, 0x8d, 0x88, 2693 0x0d, 0xe4, 0x71, 0xe5, 0x1f, 0xe2, 0x0b, 0xae, 2694 0x87, 0xcf, 0x5f, 0xbf, 0xde, 0x57, 0x2f, 0x22, 2695 0x5a, 0x63, 0x5a, 0x9c, 0x85, 0x46, 0xf1, 0x3a, 2696 0x7e, 0x04, 0xec, 0xce, 0xb4, 0xa0, 0x00, 0x90, 2697 0x9a, 0x09, 0x11, 0xb4, 0x6b, 0x53, 0x37, 0xd2, 2698 0x03, 0xd1, 0x59, 0x2f, 0xdb, 0xda, 0xe9, 0xf8, 2699 0x0a, 0x67, 0x6a, 0x83, 0x30, 0x09, 0x66, 0x82, 2700 0x11, 0x10, 0xda, 0x52, 0x61, 0x40, 0xca, 0x86, 2701 0x85, 0xdf, 0x01, 0xc3, 0x0e, 0x68, 0xd0, 0xb7, 2702 0x0a, 0x37, 0x95, 0x30, 0xc3, 0x0f, 0x37, 0x49, 2703 0x27, 0x4a, 0x93, 0xd3, 0x6a, 0x1a, 0xaf, 0xa2, 2704 0x0a, 0xbf, 0xb7, 0xb7, 0x68, 0xe7, 0x8d, 0x4c, 2705 0x50, 0xf0, 0x9c, 0x10, 0x93, 0x1c, 0xdf, 0x83, 2706 0x7b, 0xe7, 0xfa, 0xc3, 0x41, 0xbd, 0x6c, 0x06, 2707 0x10, 0x8d, 0x4c, 0x38, 0x0f, 0x74, 0x04, 0x48, 2708 0x07, 0xdd, 0xba, 0xbe, 0x6f, 0x92, 0x7b, 0xc6, 2709 0x87, 0xae, 0x0c, 0xe9, 0x46, 0x52, 0x97, 0xa7, 2710 0xe6, 0x9a, 0x91, 0xbb, 0x7e, 0xb0, 0x65, 0xac, 2711 0x22, 0xe0, 0xa3, 0xc7, 0xe8, 0xc5, 0x53, 0x99, 2712 0x82, 0x1c, 0x2c, 0x54, 0x9b, 0xa0, 0xcf, 0x6b, 2713 0xd5, 0x9e, 0x18, 0xf9, 0x3c, 0x17, 0x88, 0xb4, 2714 0xfa, 0x01, 0x46, 0x6e, 0xd6, 0x41, 0xf2, 0xdd, 2715 0xf1, 0xea, 0xbc, 0x1d, 0x6c, 0xbb, 0xe2, 0xcb, 2716 0xe6, 0xfc, 0x22, 0xb5, 0x82, 0x9a, 0x89, 0x60, 2717 0x30, 0xdc, 0x1f, 0x42, 0x20, 0x34, 0x05, 0x02, 2718 0x70, 0x60, 0xbd, 0x95, 0x22, 0x0e, 0xeb, 0x29, 2719 0x23, 0x0c, 0x51, 0x95, 0x74, 0x7e, 0xae, 0xed, 2720 0x3a, 0x5d, 0x83, 0x20, 0xd9, 0x55, 0x80, 0x9b, 2721 0xe0, 0x50, 0x25, 0xe5, 0xbd, 0xfb, 0x45, 0x43, 2722 0xce, 0x34, 0x5a, 0x8a, 0xcf, 0x68, 0x2f, 0xde, 2723 0xdc, 0x95, 0x1d, 0x72, 0x6b, 0x69, 0x7d, 0xe6, 2724 0xd5, 0x82, 0x2f, 0x65, 0x31, 0x8e, 0xab, 0xbd, 2725 0x66, 0xb9, 0x39, 0x15, 0x02, 0x0f, 0xa7, 0x62, 2726 0xfc, 0xdb, 0xc1, 0x50, 0xfa, 0xf1, 0x6a, 0xe6, 2727 0x88, 0x56, 0x16, 0x3d, 0x1a, 0x6c, 0x1c, 0x95, 2728 0x6e, 0x93, 0xdc, 0x72, 0xc3, 0x35, 0x4d, 0x22, 2729 0xe1, 0xd5, 0xa2, 0xa6, 0xcf, 0xe7, 0xaf, 0x2a, 2730 0x02, 0x02, 0x2b, 0xb4, 0xaa, 0x42, 0x5c, 0x12, 2731 0xbb, 0x1d, 0x0b, 0xe6, 0x16, 0x9e, 0x2a, 0xc8, 2732 0xf5, 0xd4, 0x41, 0xf4, 0x72, 0x9b, 0x68, 0xd5, 2733 0x3a, 0x53, 0xb1, 0x61, 0x7a, 0x5e, 0x74, 0x33, 2734 0x52, 0xe7, 0x51, 0x62, 0xcb, 0x02, 0xfa, 0x0f, 2735 0x9d, 0x7d, 0x51, 0xf4, 0x66, 0xeb, 0x80, 0xff, 2736 0x83, 0xac, 0x1c, 0xde, 0x5d, 0xc6, 0x3a, 0x47, 2737 0x3e, 0x03, 0x9d, 0xaf, 0x4d, 0x9d, 0x2e, 0x27, 2738 0xb4, 0xd0, 0x69, 0x4a, 0xdc, 0x66, 0x96, 0xe9, 2739 0x77, 0x81, 0xfe, 0x13, 0x25, 0xd6, 0x4d, 0xa2, 2740 0x3e, 0xa5, 0xe3, 0xe0, 0xbb, 0x97, 0x27, 0x49, 2741 0x92, 0x10, 0x36, 0xdc, 0x31, 0x25, 0x5e, 0xba, 2742 0xa3, 0x5f, 0xca, 0x74, 0xbe, 0xe6, 0x57, 0xd0, 2743 0xfa, 0x46, 0x81, 0x2a, 0xe4, 0xf6, 0x9d, 0xd8, 2744 0xcf, 0xb4, 0x8f, 0x89, 0x75, 0x5e, 0x8b, 0x0e, 2745 0x10, 0x9e, 0x1a, 0xa5, 0x17, 0xc4, 0x56, 0x97, 2746 0x9e, 0x38, 0x38, 0xd8, 0xef, 0x4b, 0x82, 0x79, 2747 0xc4, 0x54, 0x2c, 0x2b, 0xed, 0xe2, 0x6a, 0x83, 2748 0x4b, 0x12, 0x6a, 0xa7, 0xff, 0x31, 0xe7, 0x8d, 2749 0x0a, 0x9f, 0xab, 0x49, 0xae, 0xee, 0xc1, 0xa8, 2750 0x87, 0xdf, 0x2d, 0x11, 0xda, 0xd9, 0xf6, 0xa1, 2751 0x12, 0x82, 0x96, 0x64, 0x68, 0xa8, 0xe2, 0x13, 2752 0xf8, 0x25, 0xf3, 0x3d, 0xa0, 0xcd, 0x0e, 0xfb, 2753 0x1f, 0xbc, 0x27, 0xe3, 0xed, 0x72, 0xa9, 0x31, 2754 0xee, 0x61, 0xcc, 0xb9, 0xb3, 0x4d, 0x72, 0x41, 2755 0x5c, 0xb8, 0x2d, 0x6f, 0xae, 0xdf, 0xf7, 0xf4, 2756 0x07, 0x04, 0xf3, 0xcf, 0x86, 0x30, 0x6f, 0xed, 2757 0x0c, 0x61, 0x4e, 0x78, 0x56, 0x2e, 0x85, 0xf1, 2758 0xaf, 0x6a, 0x76, 0x28, 0x0f, 0x4b, 0x14, 0xfa, 2759 0xf2, 0xda, 0x0c, 0x7f, 0xe1, 0xe3, 0x76, 0x66, 2760 0xb2, 0xd6, 0xb5, 0xe4, 0x61, 0xec, 0x21, 0xcd, 2761 0xfa, 0x58, 0x61, 0x96, 0x3b, 0x91, 0x82, 0xd4, 2762 0xf2, 0xd8, 0xac, 0x91, 0x7e, 0x2f, 0xaa, 0x92, 2763 0x2e, 0x89, 0x02, 0x19, 0x02, 0xb8, 0xb4, 0x28, 2764 0xde, 0x58, 0x69, 0xca, 0x8b, 0x31, 0x2d, 0x05, 2765 0xab, 0x28, 0xdd, 0x82, 0x60, 0x72, 0x98, 0xa1, 2766 0x50, 0x17, 0x22, 0x64, 0x4a, 0x4f, 0xb9, 0xad, 2767 0xb7, 0x03, 0x0b, 0x84, 0x32, 0x06, 0xa6, 0xb9, 2768 0xd2, 0x32, 0x2a, 0xda, 0xb6, 0xdd, 0xad, 0x57, 2769 0xde, 0xfb, 0x81, 0x1e, 0x91, 0xa1, 0x75, 0xcc, 2770 0x09, 0x2e, 0x1a, 0x0e, 0x90, 0x74, 0x26, 0xd1, 2771 0x8f, 0x9e, 0x0a, 0xe6, 0x62, 0x75, 0xca, 0x2c, 2772 0xc7, 0x85, 0xfa, 0x2b, 0xe2, 0x52, 0xe7, 0xb6, 2773 0x01, 0xb8, 0x9a, 0x53, 0x71, 0x92, 0x7b, 0x4e, 2774 0x48, 0x37, 0x2d, 0x18, 0x19, 0xb3, 0x91, 0xf5, 2775 0x26, 0x66, 0x56, 0x17, 0xb8, 0xb9, 0x4d, 0x38, 2776 0x7c, 0x03, 0x6e, 0x07, 0x1c, 0x25, 0xe0, 0x9c, 2777 0x7d, 0xcf, 0xc5, 0xe8, 0x0c, 0x90, 0xa4, 0xad, 2778 0xa3, 0xad, 0x7c, 0x40, 0x87, 0x4e, 0xe3, 0x9d, 2779 0x23, 0x4b, 0x72, 0x72, 0x6e, 0xe6, 0xca, 0x6a, 2780 0x6b, 0x5f, 0x49, 0x8d, 0xe5, 0x09, 0x42, 0x72, 2781 0x0c, 0x84, 0xdc, 0x59, 0x7e, 0xad, 0x1c, 0x58, 2782 0xdf, 0x7e, 0x0e, 0x5e, 0x36, 0xb8, 0x31, 0x64, 2783 0x1c, 0x2e, 0x89, 0xd3, 0x6a, 0x81, 0x7d, 0xce, 2784 0x04, 0xc9, 0x99, 0x5e, 0x52, 0x11, 0x20, 0x64, 2785 0xc6, 0xf0, 0x9a, 0x5f, 0x3f, 0xad, 0x8a, 0xec, 2786 0x26, 0xa2, 0x7b, 0x52, 0x32, 0x5f, 0x36, 0x4b, 2787 0x28, 0xdc, 0xd3, 0xfb, 0x72, 0x7a, 0x1d, 0xeb, 2788 0xf9, 0x74, 0xef, 0x66, 0xad, 0x86, 0x84, 0xda, 2789 0x13, 0x35, 0x7e, 0xe3, 0x1d, 0xb0, 0xb3, 0xc2, 2790 0x2a, 0xc9, 0x78, 0xed, 0x5f, 0x56, 0xd9, 0x08, 2791 0x13, 0x84, 0x92, 0x72, 0xd5, 0x1c, 0xfd, 0x90, 2792 0x5e, 0x11, 0xb5, 0x49, 0x52, 0x07, 0x9d, 0x5e, 2793 0x4c, 0x43, 0x4f, 0x25, 0x0a, 0x7b, 0xc5, 0xaf, 2794 0xbd, 0x68, 0x70, 0x1d, 0xe6, 0xe5, 0x79, 0x18, 2795 0x2c, 0xa3, 0x92, 0x76, 0x59, 0x84, 0x72, 0x10, 2796 0xf3, 0x6b, 0x8b, 0x15, 0xc1, 0x17, 0x35, 0x1a, 2797 0x88, 0x35, 0x25, 0x07, 0xaa, 0xd6, 0x02, 0xaf, 2798 0x03, 0xee, 0x64, 0x42, 0x23, 0x1c, 0x81, 0x01, 2799 0x45, 0xb8, 0xb5, 0x90, 0xa4, 0x69, 0x58, 0xe4, 2800 0xaa, 0xd9, 0x45, 0x91, 0x11, 0xed, 0x17, 0x01, 2801 0x64, 0x1a, 0x87, 0x13, 0x5d, 0x52, 0xa3, 0xca, 2802 0xa7, 0x50, 0xb7, 0xfa, 0x79, 0x1f, 0xce, 0x20, 2803 0x58, 0x9c, 0x64, 0x1a, 0x2d, 0x15, 0xc9, 0xfa, 2804 0x1e, 0x19, 0xcd, 0xcc, 0x11, 0x95, 0xfd, 0x1e, 2805 0x9b, 0xce, 0xea, 0xbe, 0x33, 0x1c, 0xa5, 0x58, 2806 0x02, 0x80, 0x8e, 0x95, 0xc5, 0x34, 0xa5, 0x66, 2807 0x85, 0xf0, 0x45, 0x76, 0xf0, 0x49, 0x6b, 0xea, 2808 0x0d, 0xaf, 0xb0, 0xa0, 0x7f, 0x8e, 0xe7, 0xfe, 2809 0x8f, 0x42, 0x0f, 0xc9, 0xaf, 0x56, 0xea, 0xa4, 2810 0x3e, 0x28, 0xbd, 0x66, 0x9d, 0x9f, 0x68, 0x41, 2811 0x45, 0xcc, 0xa4, 0x21, 0xa3, 0x40, 0xa7, 0x96, 2812 0xe1, 0xa3, 0x5d, 0x96, 0x40, 0xde, 0xe1, 0xd7, 2813 0xb2, 0xbc, 0xc6, 0x01, 0xc5, 0xa0, 0x9f, 0xee, 2814 0x08, 0x40, 0x29, 0xde, 0x90, 0x7e, 0x8a, 0x3a, 2815 0x8f, 0xa2, 0x43, 0xd3, 0xd6, 0x19, 0xd2, 0xe6, 2816 0xc0, 0xc6, 0x02, 0x8f, 0xb2, 0x81, 0x79, 0x2f, 2817 0x58, 0x0c, 0x75, 0x55, 0xb3, 0x92, 0x23, 0x68, 2818 0xd0, 0x30, 0x85, 0xcf, 0x95, 0xc5, 0x61, 0x06, 2819 0x4b, 0x94, 0xa5, 0x36, 0x68, 0x4f, 0x3c, 0xa1, 2820 0x1d, 0xcd, 0x10, 0xba, 0x1a, 0x5f, 0xa4, 0x52, 2821 0x77, 0x99, 0xfa, 0x20, 0xb1, 0xf9, 0x66, 0xa4, 2822 0x86, 0x3f, 0x7a, 0x87, 0x19, 0xdd, 0x4e, 0xb8, 2823 0x99, 0x6f, 0x12, 0x41, 0x43, 0x0c, 0x08, 0x22, 2824 0xc0, 0x47, 0x49, 0x71, 0x33, 0x6f, 0xc7, 0xd1, 2825 0x22, 0x98, 0x15, 0x56, 0x6a, 0xa6, 0x27, 0x73, 2826 0x03, 0x95, 0x5d, 0xb8, 0xe3, 0x6f, 0x49, 0x7a, 2827 0xe1, 0x62, 0x20, 0xae, 0x3d, 0x8b, 0x33, 0x6b, 2828 0x55, 0x2b, 0x3c, 0xcc, 0x0c, 0x13, 0x40, 0x86, 2829 0xda, 0x79, 0x7c, 0x2a, 0x91, 0xd9, 0xf1, 0xad, 2830 0x5d, 0x01, 0x7e, 0x84, 0xcc, 0xd9, 0xe0, 0xed, 2831 0x02, 0x1c, 0x23, 0x6e, 0xa3, 0xa9, 0xbb, 0x02, 2832 0x20, 0x6c, 0x77, 0x7e, 0x8d, 0xbe, 0xc7, 0xd3, 2833 0xe4, 0x02, 0x2f, 0x48, 0x4d, 0x78, 0xcb, 0xe0, 2834 0x23, 0x29, 0x4a, 0x4c, 0x66, 0x8a, 0xb3, 0xdb, 2835 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2836 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 2837 0x08, 0x0f, 0x19, 0x20, 0x29 2838}; 2839 2840/* 2841 * The message has been specially selected so that: 2842 * it fails the z_max rejection test on iteration one 2843 * it fails the r0_max rejection test on iteration two 2844 * it fails the h_ones rejection test on iteration three 2845 * it successfully generates the signature on iteration four 2846 * Thus, it is an optimal self test in terms of iterations and coverage. 2847 * 2848 * Refer to FIPS 140-3 IG 10.3.A.15 for details of the testing requirements. 2849 */ 2850static const unsigned char ml_dsa_65_msg[] = { 2851 0x23, 0x37, 0x34, 0x37, 0x36, 0x38, 0x23 2852}; 2853 2854static const ST_KAT_PARAM ml_dsa_key[] = { 2855 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PRIV_KEY, ml_dsa_65_priv_key), 2856 ST_KAT_PARAM_END() 2857}; 2858 2859static int ml_dsa_deterministic = 1; 2860static int ml_dsa_encoding = 0; 2861 2862static const ST_KAT_PARAM ml_dsa_sig_init[] = { 2863 ST_KAT_PARAM_INT(OSSL_SIGNATURE_PARAM_DETERMINISTIC, ml_dsa_deterministic), 2864 ST_KAT_PARAM_INT(OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING, ml_dsa_encoding), 2865 ST_KAT_PARAM_END() 2866}; 2867#endif /* OPENSSL_NO_ML_DSA */ 2868 2869#ifndef OPENSSL_NO_SLH_DSA 2870/* 2871 * Deterministic SLH_DSA key generation supplies the private key elements and 2872 * Half of the public key. 2873 */ 2874static const uint8_t slh_dsa_sha2_128f_keygen_entropy[] = { 2875 0xae, 0xd6, 0xf6, 0xf5, 0xc5, 0x40, 0x8b, 0xbf, 0xfa, 0x11, 0x36, 0xbc, 0x90, 0x49, 0xa7, 0x01, 2876 0x4d, 0x4c, 0xe0, 0x71, 0x1e, 0x17, 0x6a, 0x0c, 0x8a, 0x02, 0x35, 0x08, 0xa6, 0x92, 0xc2, 0x07, 2877 0x74, 0xd9, 0x8d, 0x50, 0x00, 0xaf, 0x53, 0xb9, 0x8f, 0x36, 0x38, 0x9a, 0x12, 0x92, 0xbe, 0xd3 2878}; 2879 2880/* The expected outputs for the public and private key elements */ 2881static const uint8_t slh_dsa_sha2_128f_keygen_priv_pub[] = { 2882 0xAE, 0xD6, 0xF6, 0xF5, 0xC5, 0x40, 0x8B, 0xBF, 0xFA, 0x11, 0x36, 0xBC, 0x90, 0x49, 0xA7, 0x01, 2883 0x4D, 0x4C, 0xE0, 0x71, 0x1E, 0x17, 0x6A, 0x0C, 0x8A, 0x02, 0x35, 0x08, 0xA6, 0x92, 0xC2, 0x07, 2884 0x74, 0xD9, 0x8D, 0x50, 0x00, 0xAF, 0x53, 0xB9, 0x8F, 0x36, 0x38, 0x9A, 0x12, 0x92, 0xBE, 0xD3, 2885 0xF4, 0xA6, 0x50, 0xC5, 0x6C, 0x42, 0x6F, 0xCF, 0xDB, 0x88, 0xE3, 0x35, 0x54, 0x59, 0x44, 0x0C 2886}; 2887 2888static const uint8_t slh_dsa_sha2_128f_keygen_pub[] = { 2889 0x74, 0xD9, 0x8D, 0x50, 0x00, 0xAF, 0x53, 0xB9, 0x8F, 0x36, 0x38, 0x9A, 0x12, 0x92, 0xBE, 0xD3, 2890 0xF4, 0xA6, 0x50, 0xC5, 0x6C, 0x42, 0x6F, 0xCF, 0xDB, 0x88, 0xE3, 0x35, 0x54, 0x59, 0x44, 0x0C 2891}; 2892 2893static const ST_KAT_PARAM slh_dsa_sha2_128f_keygen_init_params[] = { 2894 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_SLH_DSA_SEED, 2895 slh_dsa_sha2_128f_keygen_entropy), 2896 ST_KAT_PARAM_END() 2897}; 2898 2899static const ST_KAT_PARAM slh_dsa_128f_keygen_expected_params[] = { 2900 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PRIV_KEY, 2901 slh_dsa_sha2_128f_keygen_priv_pub), 2902 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PUB_KEY, 2903 slh_dsa_sha2_128f_keygen_pub), 2904 ST_KAT_PARAM_END() 2905}; 2906 2907static const unsigned char slh_dsa_sha2_sig_msg[] = { 2908 0x3f 2909}; 2910 2911static const unsigned char slh_dsa_shake_sig_msg[] = { 2912 0x01, 0x02, 0x03, 0x04 2913}; 2914 2915static int deterministic = 1; 2916static const ST_KAT_PARAM slh_dsa_sig_params[] = { 2917 ST_KAT_PARAM_INT(OSSL_SIGNATURE_PARAM_DETERMINISTIC, deterministic), 2918 ST_KAT_PARAM_END() 2919}; 2920 2921static const unsigned char slh_dsa_sha2_128f_priv_pub[] = { 2922 0xd5, 0x21, 0x3b, 0xa4, 0xbb, 0x64, 0x70, 0xf1, 0xb9, 0xed, 0xa8, 0x8c, 0xbc, 0x94, 0xe6, 0x27, 2923 0x7a, 0x58, 0xa9, 0x51, 0xef, 0x7f, 0x2b, 0x81, 0x46, 0x1d, 0xba, 0xc4, 0x1b, 0x5a, 0x6b, 0x83, 2924 0xfa, 0x49, 0x5f, 0xb8, 0x34, 0xde, 0xfe, 0xa7, 0xcc, 0x96, 0xa8, 0x13, 0x09, 0x47, 0x91, 0x35, 2925 0xa6, 0x70, 0x29, 0xe9, 0x06, 0x68, 0xc5, 0xa5, 0x8b, 0x96, 0xe6, 0x01, 0x11, 0x49, 0x1f, 0x3d 2926}; 2927 2928static const ST_KAT_PARAM slh_dsa_sha2_128f_key_params[] = { 2929 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PRIV_KEY, slh_dsa_sha2_128f_priv_pub), 2930 ST_KAT_PARAM_END() 2931}; 2932 2933static const unsigned char slh_dsa_shake_128f_priv_pub[] = { 2934 0xbb, 0xc7, 0x43, 0x06, 0xf7, 0x5d, 0xc2, 0xda, 0xf7, 0x37, 0x2b, 0x3c, 0x98, 0x41, 0xa4, 0xd6, 2935 0x85, 0x2c, 0x17, 0xb4, 0x59, 0xf1, 0x69, 0x2b, 0x8e, 0x9a, 0x1a, 0x0d, 0xac, 0xe5, 0xba, 0x26, 2936 0x38, 0x0c, 0x99, 0x30, 0x4a, 0x0d, 0xdd, 0x32, 0xf3, 0x44, 0xb9, 0x51, 0x44, 0xe1, 0xfd, 0xef, 2937 0x60, 0xbb, 0xc2, 0x34, 0x0e, 0x08, 0x77, 0x0f, 0xb4, 0x1a, 0x80, 0xa7, 0x6c, 0xb0, 0x8e, 0x34, 2938}; 2939 2940static const ST_KAT_PARAM slh_dsa_shake_128f_key_params[] = { 2941 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PRIV_KEY, slh_dsa_shake_128f_priv_pub), 2942 ST_KAT_PARAM_END() 2943}; 2944 2945/* This is the SHA256 digest of the signature */ 2946static const unsigned char slh_dsa_sha2_128f_sig_digest[] = { 2947 0xd3, 0x53, 0x7e, 0x05, 0xae, 0x63, 0x87, 0x6b, 0xf7, 0x80, 0x15, 0xff, 2948 0x86, 0xcc, 0x9e, 0x28, 0x4f, 0x91, 0xca, 0xbf, 0xac, 0x19, 0x12, 0x98, 2949 0xfb, 0xaa, 0x37, 0x55, 0x96, 0x35, 0x1d, 0x55 2950}; 2951 2952static const unsigned char slh_dsa_shake_128f_sig_digest[] = { 2953 0xb7, 0xeb, 0x1f, 0x00, 0x33, 0x41, 0xff, 0x11, 2954 0x3f, 0xc7, 0x4d, 0xce, 0x90, 0x6c, 0x55, 0xf7, 2955 0x4a, 0x54, 0x8b, 0x86, 0xc1, 0xb1, 0x08, 0x48, 2956 0x89, 0x77, 0x00, 0x72, 0x03, 0x92, 0xd1, 0xa6, 2957}; 2958#endif /* OPENSSL_NO_SLH_DSA */ 2959 2960/* Hash DRBG inputs for signature KATs */ 2961static const unsigned char sig_kat_entropyin[] = { 2962 0x06, 0x6d, 0xc8, 0xce, 0x75, 0xb2, 0x89, 0x66, 0xa6, 0x85, 0x16, 0x3f, 2963 0xe2, 0xa4, 0xd4, 0x27, 0xfb, 0xdb, 0x61, 0x66, 0x50, 0x61, 0x6b, 0xa2, 2964 0x82, 0xfc, 0x33, 0x2b, 0x4e, 0x6f, 0x12, 0x20 2965}; 2966static const unsigned char sig_kat_nonce[] = { 2967 0x55, 0x9f, 0x7c, 0x64, 0x89, 0x70, 0x83, 0xec, 0x2d, 0x73, 0x70, 0xd9, 2968 0xf0, 0xe5, 0x07, 0x1f 2969}; 2970static const unsigned char sig_kat_persstr[] = { 2971 0x88, 0x6f, 0x54, 0x9a, 0xad, 0x1a, 0xc6, 0x3d, 0x18, 0xcb, 0xcc, 0x66, 2972 0x85, 0xda, 0xa2, 0xc2, 0xf7, 0x9e, 0xb0, 0x89, 0x4c, 0xb4, 0xae, 0xf1, 2973 0xac, 0x54, 0x4f, 0xce, 0x57, 0xf1, 0x5e, 0x11 2974}; 2975 2976static const ST_KAT_SIGN st_kat_sign_tests[] = { 2977 { 2978 OSSL_SELF_TEST_DESC_SIGN_RSA, 2979 "RSA", "RSA-SHA256", 0, 2980 rsa_crt_key, 2981 ITM_STR(rsa_sig_msg), 2982 ITM(sig_kat_entropyin), 2983 ITM(sig_kat_nonce), 2984 ITM(sig_kat_persstr), 2985 ITM(rsa_expected_sig) 2986 }, 2987#ifndef OPENSSL_NO_EC 2988 { 2989 OSSL_SELF_TEST_DESC_SIGN_ECDSA, 2990 "EC", "ECDSA-SHA256", 0, 2991 ecdsa_prime_key, 2992 ITM_STR(rsa_sig_msg), 2993 ITM(sig_kat_entropyin), 2994 ITM(sig_kat_nonce), 2995 ITM(sig_kat_persstr), 2996 ITM(ecdsa_prime_expected_sig) 2997 }, 2998# ifndef OPENSSL_NO_EC2M 2999 { 3000 OSSL_SELF_TEST_DESC_SIGN_ECDSA, 3001 "EC", "ECDSA-SHA256", 0, 3002 ecdsa_bin_key, 3003 ITM_STR(rsa_sig_msg), 3004 ITM(sig_kat_entropyin), 3005 ITM(sig_kat_nonce), 3006 ITM(sig_kat_persstr), 3007 ITM(ecdsa_bin_expected_sig) 3008 }, 3009# endif 3010# ifndef OPENSSL_NO_ECX 3011 { 3012 OSSL_SELF_TEST_DESC_SIGN_EDDSA, 3013 "ED448", "ED448", 0, 3014 ed448_key, 3015 ITM(ecx_sig_msg), 3016 NULL, 0, NULL, 0, NULL, 0, 3017 ITM(ed448_expected_sig), 3018 }, 3019 { 3020 OSSL_SELF_TEST_DESC_SIGN_EDDSA, 3021 "ED25519", "ED25519", 0, 3022 ed25519_key, 3023 ITM(ecx_sig_msg), 3024 NULL, 0, NULL, 0, NULL, 0, 3025 ITM(ed25519_expected_sig), 3026 }, 3027# endif /* OPENSSL_NO_ECX */ 3028#endif /* OPENSSL_NO_EC */ 3029#ifndef OPENSSL_NO_DSA 3030 { 3031 OSSL_SELF_TEST_DESC_SIGN_DSA, 3032 "DSA", "DSA-SHA256", SIGNATURE_MODE_VERIFY_ONLY, 3033 dsa_key, 3034 ITM_STR(rsa_sig_msg), 3035 ITM(sig_kat_entropyin), 3036 ITM(sig_kat_nonce), 3037 ITM(sig_kat_persstr), 3038 ITM(dsa_expected_sig) 3039 }, 3040#endif /* OPENSSL_NO_DSA */ 3041 3042#ifndef OPENSSL_NO_ML_DSA 3043 { 3044 OSSL_SELF_TEST_DESC_SIGN_ML_DSA, 3045 "ML-DSA-65", "ML-DSA-65", 0, 3046 ml_dsa_key, 3047 ITM(ml_dsa_65_msg), 3048 NULL, 0, 3049 NULL, 0, 3050 NULL, 0, 3051 ITM(ml_dsa_65_sig), 3052 ml_dsa_sig_init, 3053 ml_dsa_sig_init 3054 }, 3055#endif /* OPENSSL_NO_ML_DSA */ 3056#ifndef OPENSSL_NO_SLH_DSA 3057 /* 3058 * FIPS 140-3 IG 10.3.A.16 Note 29 says: 3059 * 3060 * It is recommended (but not required) that if the module implements 3061 * both "s" and "f" algorithms, the module self-test at least one of 3062 * each "s" and "f" algorithm. 3063 * 3064 * Because the "s" version is so slow, we only test the "f" versions 3065 * here. 3066 */ 3067 { 3068 OSSL_SELF_TEST_DESC_SIGN_SLH_DSA, 3069 "SLH-DSA-SHA2-128f", "SLH-DSA-SHA2-128f", SIGNATURE_MODE_SIG_DIGESTED, 3070 slh_dsa_sha2_128f_key_params, 3071 ITM(slh_dsa_sha2_sig_msg), 3072 NULL, 0, NULL, 0, NULL, 0, 3073 ITM(slh_dsa_sha2_128f_sig_digest), 3074 slh_dsa_sig_params, slh_dsa_sig_params 3075 }, 3076 { 3077 OSSL_SELF_TEST_DESC_SIGN_SLH_DSA, 3078 "SLH-DSA-SHAKE-128f", "SLH-DSA-SHAKE-128f", SIGNATURE_MODE_SIG_DIGESTED, 3079 slh_dsa_shake_128f_key_params, 3080 ITM(slh_dsa_shake_sig_msg), 3081 NULL, 0, NULL, 0, NULL, 0, 3082 ITM(slh_dsa_shake_128f_sig_digest), 3083 slh_dsa_sig_params, slh_dsa_sig_params 3084 }, 3085#endif /* OPENSSL_NO_SLH_DSA */ 3086}; 3087 3088#if !defined(OPENSSL_NO_ML_DSA) 3089static const ST_KAT_PARAM ml_dsa_keygen_params[] = { 3090 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_ML_DSA_SEED, sig_kat_entropyin), 3091 ST_KAT_PARAM_END() 3092}; 3093#endif 3094 3095/*- KEM SELF TEST DATA */ 3096/* 3097 * Test case generated via the OpenSSL commands: 3098 * 3099 * openssl genpkey -algorithm ML-KEM-512 -out priv-ml-kem-512.pem 3100 * openssl pkey -in priv-ml-kem-512.pem -pubout -out pub-ml-kem-512.pem 3101 * openssl pkeyutl -encap -inkey pub-ml-kem-512.pem \ 3102 * -pkeyopt ikme:00000000000000000000000000000000 -secret good.dat \ 3103 * -out ctext.dat 3104 * openssl pkeyutl -decap -inkey priv-ml-kem-512.pem \ 3105 * -secret goodcmp.dat -in ctext.dat 3106 * apps/openssl pkeyutl -decap -inkey priv-ml-kem-512.pem \ 3107 * -secret implicit-reject.dat -in <(head -c 768 /dev/zero) 3108 * openssl pkey -in priv-ml-kem-512.pem -text | 3109 * sed '1,/^priv:/d; /^pub:/,$d' | 3110 * tr -d ' :\n' | 3111 * xxd -r -p | 3112 * tail -c 32 > z.dat 3113 * (cat z.dat; head -c 768 /dev/zero) | 3114 * openssl dgst -shake256 -xoflen 32 -binary > expected.dat 3115 */ 3116#ifndef OPENSSL_NO_ML_KEM 3117static const unsigned char ml_kem_512_cipher_text[] = { 3118 0x6b, 0xc5, 0x04, 0x00, 0x27, 0x7a, 0xbb, 0x7e, 3119 0x6b, 0xf9, 0xfb, 0x56, 0x82, 0x01, 0x75, 0xeb, 3120 0xb7, 0xb9, 0xf4, 0xf2, 0x82, 0x2c, 0x6d, 0x0a, 3121 0xe0, 0x80, 0xa3, 0x49, 0x92, 0x0f, 0x6d, 0x00, 3122 0x8e, 0xba, 0x35, 0xb5, 0x42, 0xb9, 0xd7, 0xed, 3123 0x89, 0xcb, 0xfd, 0x38, 0xd7, 0x9f, 0x55, 0x3b, 3124 0xf0, 0x8e, 0x63, 0x80, 0x95, 0xcf, 0x0d, 0x4f, 3125 0x50, 0x40, 0xac, 0x1d, 0x1b, 0xdc, 0x24, 0x84, 3126 0x3b, 0x18, 0xc2, 0x77, 0x9f, 0x24, 0x11, 0x81, 3127 0xa6, 0xcc, 0xd8, 0xf4, 0xe8, 0x00, 0xdc, 0x26, 3128 0x61, 0x36, 0xd1, 0xb6, 0x5d, 0x9c, 0x12, 0x6d, 3129 0xf5, 0xe7, 0x93, 0xc8, 0x6d, 0xac, 0xaf, 0x3c, 3130 0x78, 0x3f, 0xa9, 0xc1, 0x00, 0x6f, 0x08, 0x29, 3131 0x4f, 0x1a, 0x4d, 0x3b, 0xb4, 0x4b, 0x6f, 0xc2, 3132 0x09, 0x00, 0x4b, 0xc1, 0xf0, 0xe6, 0x7f, 0x48, 3133 0x48, 0x09, 0x40, 0xf2, 0x0a, 0x86, 0x18, 0xbf, 3134 0xc6, 0x4e, 0xb2, 0xb0, 0xab, 0xfe, 0x1b, 0xea, 3135 0x91, 0x58, 0x8c, 0x18, 0x6e, 0x30, 0xe8, 0x33, 3136 0x87, 0x29, 0x26, 0xef, 0xe9, 0x0c, 0x3b, 0x8b, 3137 0x0c, 0x99, 0x40, 0x53, 0xb9, 0x30, 0xba, 0x17, 3138 0xb3, 0x8a, 0x74, 0x59, 0x5d, 0x4c, 0x76, 0x1a, 3139 0xd3, 0x3f, 0xe4, 0xf7, 0xa3, 0x0f, 0x3a, 0x2c, 3140 0x85, 0xc1, 0x46, 0xf0, 0xa4, 0x91, 0xa3, 0x12, 3141 0xb2, 0xa4, 0x4b, 0x88, 0x8d, 0x1c, 0x85, 0xb1, 3142 0xe4, 0x41, 0x1f, 0x9d, 0xb7, 0x91, 0x2f, 0x60, 3143 0x98, 0xfd, 0xfc, 0x29, 0x89, 0x11, 0x7d, 0x16, 3144 0x09, 0x9e, 0x76, 0xf1, 0x9c, 0xb3, 0x50, 0xb9, 3145 0xd0, 0x02, 0xd2, 0xa2, 0x0d, 0xdd, 0xee, 0x90, 3146 0x47, 0x0d, 0xb9, 0x4a, 0x53, 0x11, 0xa2, 0x4f, 3147 0x13, 0x5a, 0x40, 0xdc, 0xc6, 0xfe, 0xd7, 0x28, 3148 0x36, 0xec, 0xa0, 0x5e, 0xab, 0xc1, 0x7d, 0x19, 3149 0x33, 0x59, 0xe2, 0xe4, 0xea, 0x26, 0x67, 0x2f, 3150 0xe5, 0x05, 0xd8, 0x34, 0x6e, 0x3c, 0xab, 0x63, 3151 0x8b, 0x24, 0x16, 0xc7, 0x1b, 0x2a, 0x9b, 0xe5, 3152 0x04, 0x78, 0x98, 0x6c, 0x6c, 0x1e, 0x94, 0xe3, 3153 0x7f, 0x86, 0x52, 0xc0, 0x17, 0x56, 0x8d, 0x01, 3154 0x7a, 0x28, 0x81, 0x07, 0x3d, 0x61, 0x2a, 0xcd, 3155 0xc8, 0xb6, 0x7e, 0x5b, 0xad, 0xa8, 0x90, 0xbd, 3156 0x0c, 0x95, 0xb5, 0x09, 0x9d, 0x7c, 0x34, 0x8c, 3157 0x74, 0x8f, 0x8e, 0x7c, 0x28, 0x6c, 0xe2, 0x2f, 3158 0xa2, 0x87, 0x7f, 0x80, 0x43, 0x46, 0x1c, 0xb2, 3159 0x1c, 0x5a, 0xd2, 0xec, 0xad, 0xf9, 0x55, 0xe3, 3160 0x6b, 0x19, 0x54, 0x08, 0x84, 0x1a, 0x34, 0x82, 3161 0xf4, 0x9c, 0xec, 0x3d, 0x65, 0xf9, 0x78, 0x7f, 3162 0x37, 0x47, 0xcf, 0xf1, 0xcb, 0x15, 0xf2, 0xac, 3163 0xff, 0x3b, 0x8f, 0xa0, 0x8c, 0x25, 0x88, 0x5c, 3164 0x38, 0x23, 0x9a, 0x27, 0x16, 0x6a, 0xdf, 0xa3, 3165 0x98, 0x1d, 0x16, 0x33, 0x4b, 0x4f, 0xfb, 0x83, 3166 0x85, 0x66, 0x76, 0x03, 0xb9, 0xb5, 0x46, 0x21, 3167 0xb9, 0xf3, 0xf4, 0xf1, 0x3a, 0x85, 0xec, 0x9e, 3168 0x56, 0x6a, 0xb6, 0x1d, 0xcc, 0xca, 0xfb, 0x11, 3169 0xae, 0x47, 0x7d, 0x93, 0xa5, 0xbc, 0x90, 0x32, 3170 0xde, 0xa1, 0xa5, 0x1e, 0x5d, 0x52, 0x17, 0x98, 3171 0x0a, 0x8b, 0xc4, 0x1a, 0x28, 0x7c, 0x9c, 0x22, 3172 0x3e, 0x33, 0x06, 0x40, 0x77, 0xe5, 0x22, 0x49, 3173 0x86, 0xf9, 0x3c, 0xc5, 0xc1, 0xb9, 0x77, 0x25, 3174 0x53, 0x66, 0x5a, 0x18, 0x83, 0x5a, 0x2b, 0xbf, 3175 0xac, 0x04, 0x70, 0x26, 0xe8, 0x2b, 0xb6, 0x0c, 3176 0xe8, 0x00, 0x95, 0xbb, 0x08, 0x75, 0xf3, 0x37, 3177 0x31, 0x2e, 0xef, 0x28, 0x8d, 0x58, 0x92, 0xd4, 3178 0xfd, 0xd7, 0x02, 0xce, 0x8f, 0x11, 0x83, 0x17, 3179 0x53, 0x19, 0x44, 0xd7, 0xd5, 0x6d, 0x44, 0x04, 3180 0x3a, 0x0a, 0x01, 0x46, 0xf2, 0xd2, 0xa5, 0x05, 3181 0x88, 0xa0, 0xd9, 0x0d, 0xe1, 0xa0, 0x7a, 0xf2, 3182 0x20, 0x2e, 0x5b, 0x05, 0xe4, 0x2b, 0x11, 0x3d, 3183 0xb3, 0x82, 0x64, 0x3b, 0xef, 0xc1, 0x53, 0xba, 3184 0x9f, 0x7f, 0x29, 0x59, 0x87, 0x39, 0x52, 0xda, 3185 0x7b, 0xff, 0xd7, 0xdd, 0xa1, 0xa9, 0x9f, 0xa1, 3186 0xe2, 0x38, 0x74, 0xb0, 0x94, 0xdc, 0xc5, 0xb5, 3187 0xf3, 0x61, 0xdf, 0x92, 0x62, 0xe1, 0x96, 0x87, 3188 0x6d, 0xb4, 0x2c, 0xc7, 0xf0, 0x38, 0xe9, 0x5e, 3189 0xfc, 0xff, 0x4c, 0x01, 0xc7, 0x59, 0x39, 0xe5, 3190 0x9b, 0xfb, 0xf5, 0x2b, 0x1b, 0xe5, 0xf8, 0x25, 3191 0x06, 0x07, 0xc7, 0x82, 0x46, 0x2a, 0x99, 0xd0, 3192 0xa9, 0x67, 0x81, 0xd7, 0xa2, 0x29, 0x96, 0x1a, 3193 0x94, 0x8e, 0x7d, 0x51, 0x76, 0x99, 0xad, 0x61, 3194 0xec, 0xb6, 0xc0, 0x58, 0x8e, 0xd0, 0x9d, 0xff, 3195 0x58, 0x57, 0x1b, 0x2e, 0xad, 0x65, 0xd8, 0xde, 3196 0xa5, 0xfa, 0x81, 0x4b, 0x2c, 0x06, 0x1b, 0xfe, 3197 0x49, 0x20, 0x4d, 0x5e, 0x1b, 0xb7, 0x40, 0x96, 3198 0xaa, 0x81, 0x25, 0xeb, 0x84, 0xdb, 0xea, 0x5d, 3199 0x0b, 0xaf, 0xf9, 0x8e, 0x41, 0xa6, 0xdd, 0x91, 3200 0x3a, 0x68, 0x54, 0xb7, 0x2e, 0xb1, 0x74, 0xff, 3201 0xf5, 0x0d, 0xa7, 0x3c, 0xc7, 0x30, 0x5b, 0x55, 3202 0xc6, 0x2d, 0xc8, 0x4c, 0xb4, 0xad, 0xcc, 0xd0, 3203 0xa1, 0x1b, 0x41, 0xc7, 0x23, 0xe8, 0xda, 0xff, 3204 0xb7, 0x3a, 0x12, 0xc2, 0xdc, 0x39, 0x7c, 0xf4, 3205 0xb9, 0x50, 0x00, 0x53, 0x88, 0xc8, 0x77, 0x49, 3206 0xfd, 0x70, 0x3d, 0xe0, 0xaa, 0x0c, 0x28, 0xd4, 3207 0xa2, 0xec, 0x82, 0x5d, 0xda, 0xe8, 0x05, 0x2f, 3208 0xe8, 0x9c, 0x21, 0x39, 0x3a, 0x22, 0x2f, 0x0a, 3209 0x5c, 0x6d, 0x01, 0xdf, 0xc8, 0x9f, 0x46, 0xf7, 3210 0x15, 0x02, 0xad, 0x19, 0x35, 0x63, 0x55, 0x58, 3211 0xf5, 0x7a, 0x46, 0xc9, 0x7a, 0xe6, 0x33, 0x84, 3212 0x48, 0x2b, 0xf0, 0xe7, 0xc5, 0x72, 0x98, 0x43, 3213 0x6a, 0x99, 0xba, 0x00, 0x57, 0x4f, 0xaa, 0x0a 3214}; 3215 3216static const unsigned char ml_kem_512_private_key[] = { 3217 0x87, 0xca, 0x19, 0x93, 0xb6, 0x4d, 0x89, 0x32, 3218 0xae, 0x3b, 0x22, 0x52, 0x82, 0xa1, 0xb3, 0xc1, 3219 0x37, 0x65, 0xdc, 0xc1, 0x22, 0x4c, 0x43, 0x77, 3220 0x33, 0x0a, 0x04, 0xec, 0xec, 0x0b, 0x25, 0x05, 3221 0x40, 0x07, 0x53, 0x82, 0xbe, 0x37, 0x52, 0x53, 3222 0x12, 0x87, 0x7d, 0x77, 0x69, 0xfd, 0x59, 0x4f, 3223 0xbd, 0x16, 0x42, 0x82, 0x58, 0x9d, 0xee, 0x5c, 3224 0x0f, 0x2c, 0x14, 0x7f, 0xc6, 0x2a, 0x95, 0x42, 3225 0x10, 0x3c, 0x08, 0xbc, 0xcc, 0xa0, 0x05, 0x82, 3226 0xe9, 0xc5, 0x26, 0x81, 0xfa, 0xb8, 0x79, 0x78, 3227 0x5b, 0x3e, 0x79, 0x49, 0x68, 0x44, 0xb3, 0x7b, 3228 0xf5, 0x26, 0x62, 0x7a, 0x8a, 0x3c, 0xd8, 0x82, 3229 0x1f, 0x16, 0x1d, 0x92, 0x99, 0xac, 0xc4, 0xa9, 3230 0xb9, 0x30, 0x32, 0x6b, 0x6b, 0x67, 0x3d, 0x16, 3231 0x13, 0x1d, 0xf0, 0x98, 0x94, 0x42, 0x90, 0x68, 3232 0xfc, 0x65, 0xa3, 0xe5, 0x16, 0x22, 0x09, 0x64, 3233 0xc0, 0x7d, 0x54, 0x03, 0x47, 0x89, 0xbe, 0xae, 3234 0x61, 0x4b, 0x13, 0xa1, 0xcd, 0xad, 0xbc, 0x20, 3235 0x5e, 0x36, 0x36, 0x34, 0x41, 0x1d, 0x5b, 0x3a, 3236 0x26, 0x91, 0x80, 0x75, 0xe0, 0x63, 0x9d, 0xd6, 3237 0x35, 0xc9, 0x28, 0x81, 0xa4, 0x6e, 0xfb, 0x95, 3238 0x01, 0x11, 0x8f, 0xcc, 0x18, 0xb3, 0x9a, 0x91, 3239 0x66, 0xa6, 0x37, 0x6c, 0xeb, 0x71, 0x42, 0x29, 3240 0xec, 0x71, 0xa4, 0x99, 0x6d, 0x92, 0x97, 0x9d, 3241 0x94, 0x64, 0x6e, 0xc3, 0xf0, 0x5d, 0xa5, 0x49, 3242 0x8f, 0x66, 0xa5, 0x0a, 0x9a, 0xb9, 0xcf, 0x85, 3243 0x20, 0xa7, 0x28, 0xe1, 0xc2, 0x10, 0x08, 0x72, 3244 0x58, 0x71, 0x56, 0x3e, 0x7b, 0x47, 0x46, 0x81, 3245 0x7d, 0x74, 0xfa, 0xb2, 0xb6, 0xf2, 0xa0, 0xe3, 3246 0x4a, 0x0a, 0x5e, 0x95, 0x2b, 0x32, 0xf1, 0x07, 3247 0x2c, 0x30, 0x5e, 0x81, 0x84, 0x58, 0xf3, 0x42, 3248 0x34, 0xdb, 0xaa, 0xc4, 0x06, 0xcb, 0x63, 0x72, 3249 0xfa, 0x01, 0x86, 0xe8, 0xca, 0xd7, 0x73, 0x1d, 3250 0xac, 0xd8, 0x64, 0x60, 0x66, 0xb1, 0x19, 0xb1, 3251 0x59, 0xac, 0x78, 0x21, 0xab, 0x9a, 0x62, 0xbf, 3252 0xe8, 0x1b, 0xd1, 0xdc, 0x75, 0x08, 0xa4, 0x9e, 3253 0x22, 0x54, 0xa8, 0x36, 0x68, 0x4b, 0xb7, 0x22, 3254 0xa3, 0xbc, 0x04, 0x09, 0xe2, 0xe9, 0x4d, 0xce, 3255 0xf5, 0x46, 0x69, 0x1a, 0x47, 0x80, 0xb2, 0xa5, 3256 0xa0, 0x24, 0xcf, 0x0d, 0x60, 0x95, 0x99, 0x33, 3257 0xad, 0x6a, 0x58, 0x7a, 0x56, 0x53, 0x86, 0x44, 3258 0xa8, 0x3c, 0x1f, 0x92, 0x55, 0x3f, 0x3a, 0x3b, 3259 0x5f, 0x81, 0xaa, 0x0c, 0xc4, 0x4b, 0x1a, 0xe3, 3260 0x61, 0x8a, 0xd0, 0x5d, 0x29, 0x87, 0xb6, 0x7d, 3261 0x1c, 0x85, 0xa5, 0x14, 0xb0, 0xde, 0x1c, 0x8d, 3262 0x5c, 0xc1, 0x5c, 0x04, 0xfc, 0x77, 0xad, 0x03, 3263 0x55, 0x96, 0xe0, 0xa7, 0x43, 0xb5, 0x95, 0x9a, 3264 0xd5, 0x22, 0xef, 0x13, 0x5f, 0x14, 0x9c, 0x0e, 3265 0x7e, 0x56, 0x89, 0x37, 0x33, 0xc9, 0x00, 0x54, 3266 0x7e, 0xea, 0x32, 0x4f, 0x02, 0x85, 0xcd, 0xe5, 3267 0x9c, 0x25, 0x00, 0x3b, 0xad, 0xc2, 0x72, 0x3a, 3268 0x38, 0x66, 0x95, 0xf9, 0xf4, 0x22, 0x1f, 0x50, 3269 0x19, 0x20, 0x6a, 0x31, 0x03, 0xf8, 0x97, 0x91, 3270 0xf0, 0x42, 0xbb, 0xc0, 0x86, 0xde, 0x56, 0x93, 3271 0xf2, 0x78, 0x9b, 0xc9, 0x98, 0x16, 0x47, 0x83, 3272 0x67, 0x55, 0x92, 0x4e, 0x5a, 0xfa, 0x5d, 0x88, 3273 0xf9, 0xc8, 0xef, 0xa8, 0x21, 0x34, 0x58, 0x5f, 3274 0xca, 0xbb, 0x52, 0x98, 0xbc, 0x5c, 0xf5, 0xa7, 3275 0xae, 0xc5, 0xfc, 0x78, 0xf9, 0xa5, 0x30, 0x16, 3276 0x68, 0x9d, 0x62, 0x17, 0x41, 0x7a, 0x95, 0xcf, 3277 0x27, 0xb6, 0x6d, 0xae, 0x58, 0xa7, 0x28, 0x8c, 3278 0x8f, 0xc3, 0x28, 0xac, 0x06, 0x79, 0x9d, 0x94, 3279 0xc4, 0x9d, 0xed, 0xb2, 0x61, 0xf4, 0x44, 0x86, 3280 0xec, 0x12, 0xc3, 0x13, 0x97, 0xa7, 0x8b, 0x9a, 3281 0x63, 0x2e, 0xf1, 0x66, 0x08, 0x84, 0x32, 0xf6, 3282 0x15, 0x3b, 0x91, 0xca, 0xce, 0xf7, 0x40, 0x53, 3283 0xa9, 0x28, 0x11, 0x63, 0xa0, 0x23, 0x2e, 0xc4, 3284 0x44, 0x28, 0x05, 0x01, 0x02, 0x74, 0xcf, 0x9c, 3285 0x3a, 0x1a, 0xbc, 0x93, 0x8a, 0x2c, 0xe8, 0x9a, 3286 0xca, 0xe1, 0x74, 0x62, 0x03, 0x88, 0xc7, 0x12, 3287 0x20, 0x96, 0x3c, 0x4d, 0x10, 0x79, 0x28, 0x6f, 3288 0x7b, 0xa8, 0x1b, 0xfb, 0x5e, 0x57, 0x17, 0xcc, 3289 0x6d, 0xd0, 0x72, 0x8a, 0xb2, 0x70, 0xa3, 0x0a, 3290 0x88, 0x03, 0x5b, 0x88, 0x5d, 0x35, 0x12, 0x8e, 3291 0xac, 0xc1, 0x81, 0xca, 0xb7, 0x2b, 0xb1, 0x96, 3292 0xf6, 0x35, 0xce, 0xbb, 0x75, 0xad, 0x0d, 0xd0, 3293 0xba, 0x4e, 0x43, 0x5b, 0x31, 0x08, 0x93, 0x32, 3294 0x72, 0x63, 0x58, 0xc5, 0xa2, 0x70, 0x95, 0x12, 3295 0x8f, 0xf2, 0xc1, 0x61, 0xeb, 0x22, 0xe9, 0x4a, 3296 0x65, 0xa5, 0x48, 0x5d, 0x4c, 0x11, 0x78, 0x69, 3297 0x0b, 0x1f, 0x39, 0x2b, 0x7f, 0x63, 0x77, 0xad, 3298 0x96, 0x6b, 0x67, 0x80, 0x90, 0x70, 0x57, 0x2b, 3299 0xbc, 0x68, 0x9c, 0xaa, 0xb2, 0xd8, 0x3c, 0xbf, 3300 0xd6, 0x4f, 0xc4, 0x28, 0x65, 0x74, 0x54, 0x84, 3301 0x43, 0x9a, 0x1c, 0x96, 0x50, 0x02, 0x97, 0xc6, 3302 0xcf, 0xb0, 0xb1, 0x1d, 0x98, 0x9a, 0x32, 0x94, 3303 0x73, 0x88, 0x94, 0x78, 0x2d, 0x5f, 0x25, 0x05, 3304 0x5f, 0xa6, 0x96, 0x7a, 0xc8, 0x3a, 0xdf, 0xa8, 3305 0x19, 0xb2, 0x53, 0x53, 0x05, 0xf9, 0x31, 0xdc, 3306 0x58, 0x6c, 0xd1, 0x3a, 0x9b, 0x47, 0x3b, 0x7d, 3307 0x87, 0xe5, 0xb4, 0xb2, 0xd9, 0x96, 0x2a, 0x59, 3308 0x90, 0x3c, 0xcc, 0xad, 0xdc, 0xa2, 0x57, 0x87, 3309 0x71, 0xc6, 0x7e, 0x5a, 0x49, 0x98, 0xc8, 0x94, 3310 0x29, 0x30, 0x7b, 0x0e, 0x01, 0x97, 0x53, 0x18, 3311 0x32, 0x50, 0x73, 0x9e, 0x14, 0x47, 0x97, 0xbd, 3312 0xcc, 0x22, 0xab, 0x02, 0x95, 0xd7, 0xc5, 0x32, 3313 0xdf, 0x17, 0x84, 0x86, 0x77, 0x41, 0x6e, 0x95, 3314 0x4d, 0x66, 0xf9, 0xb0, 0x9e, 0x12, 0x81, 0x53, 3315 0x2a, 0x2e, 0x8f, 0x0c, 0x6a, 0xbe, 0x00, 0x37, 3316 0xe7, 0xe8, 0x11, 0x90, 0x97, 0xc9, 0xec, 0x84, 3317 0x5a, 0xa0, 0x69, 0x85, 0xc0, 0x88, 0x55, 0x2c, 3318 0x41, 0xb6, 0x15, 0x17, 0x36, 0x42, 0xc1, 0x02, 3319 0x51, 0xc0, 0x6e, 0x91, 0xa2, 0x5c, 0x24, 0x3c, 3320 0x02, 0x63, 0xb6, 0x75, 0xc7, 0x20, 0x7d, 0x58, 3321 0x70, 0x1d, 0x13, 0xa5, 0x2e, 0xab, 0x92, 0x56, 3322 0x5e, 0xf1, 0xa1, 0xde, 0xfb, 0xae, 0xfe, 0x4c, 3323 0x0b, 0x03, 0xf5, 0x04, 0x44, 0xa3, 0xbe, 0x20, 3324 0xb1, 0x71, 0x31, 0x0b, 0xa3, 0xf2, 0x08, 0x52, 3325 0xf3, 0xa2, 0xa1, 0x8e, 0x72, 0x29, 0x40, 0x70, 3326 0x15, 0x64, 0x60, 0x52, 0xd2, 0xe7, 0x3a, 0xbe, 3327 0xe3, 0x18, 0xd7, 0x55, 0x89, 0x9c, 0x78, 0x4a, 3328 0x6f, 0xb5, 0xaa, 0xb1, 0x7c, 0x90, 0x2c, 0xb6, 3329 0x8a, 0xfa, 0x36, 0x57, 0xb9, 0x01, 0x2e, 0x1b, 3330 0xb8, 0xb6, 0xaa, 0xc2, 0x68, 0x9a, 0xa4, 0x8c, 3331 0x2d, 0x42, 0x62, 0xbb, 0x29, 0x63, 0xb0, 0x6a, 3332 0x24, 0x22, 0x82, 0x54, 0x1c, 0xf6, 0x14, 0x19, 3333 0xd9, 0x0e, 0x2b, 0xd3, 0x66, 0xbe, 0xe7, 0xa4, 3334 0x36, 0x9b, 0x72, 0x41, 0xa6, 0x6b, 0xf2, 0x64, 3335 0x5d, 0x8e, 0x90, 0x4c, 0x3f, 0x7b, 0x30, 0x0c, 3336 0x04, 0x1d, 0x56, 0x87, 0x39, 0x3d, 0x2c, 0xa9, 3337 0x29, 0x75, 0xcb, 0xfd, 0xc0, 0x18, 0xdd, 0xc6, 3338 0x0a, 0xf5, 0x62, 0x00, 0x9e, 0xb0, 0x88, 0x8e, 3339 0x5a, 0x05, 0x76, 0x24, 0x6a, 0xce, 0x74, 0x5b, 3340 0xb1, 0x63, 0x40, 0x8b, 0x5a, 0x9a, 0xe3, 0xc1, 3341 0x94, 0xa8, 0x5c, 0x21, 0x90, 0x7b, 0x37, 0xb1, 3342 0x62, 0x8e, 0xcd, 0x9a, 0x15, 0xec, 0x20, 0x24, 3343 0x87, 0x30, 0x27, 0x34, 0x44, 0xb0, 0xa2, 0xf4, 3344 0x54, 0xf9, 0xb4, 0x73, 0x0f, 0x33, 0x91, 0x50, 3345 0x47, 0x6e, 0xe0, 0x70, 0x98, 0xf6, 0xbc, 0x1b, 3346 0x97, 0xcc, 0x1b, 0xd3, 0xb8, 0xc1, 0xa2, 0xeb, 3347 0x0e, 0x50, 0xa7, 0x82, 0xf2, 0x11, 0x5d, 0xf6, 3348 0x17, 0x49, 0x6f, 0x6c, 0x6f, 0x8c, 0x09, 0xb0, 3349 0x5f, 0x88, 0x8d, 0x9e, 0x93, 0x3d, 0x28, 0x77, 3350 0x46, 0xc6, 0x31, 0xb3, 0x10, 0x87, 0x26, 0xb0, 3351 0xc4, 0xa7, 0xc8, 0x8b, 0x09, 0xc8, 0x60, 0xac, 3352 0xd7, 0x52, 0x35, 0x70, 0xc8, 0x02, 0xbd, 0x38, 3353 0x72, 0x43, 0x16, 0x2d, 0x12, 0x8c, 0xa2, 0x29, 3354 0x4c, 0x83, 0x43, 0x18, 0xcc, 0x21, 0xfb, 0x14, 3355 0xd2, 0xab, 0x37, 0x3f, 0x22, 0x4e, 0x3f, 0xd4, 3356 0x98, 0x43, 0x85, 0x95, 0x09, 0xf4, 0xca, 0x1a, 3357 0x1a, 0x56, 0x6c, 0x05, 0x67, 0x88, 0xa3, 0xaa, 3358 0x48, 0x4a, 0xaa, 0xbd, 0xf1, 0xa0, 0x8f, 0x1b, 3359 0x44, 0xc7, 0x56, 0xab, 0x2a, 0x0c, 0x8b, 0xc5, 3360 0x85, 0x1e, 0xe2, 0xeb, 0x23, 0x03, 0x4c, 0x2e, 3361 0xaa, 0x5a, 0xc1, 0x5f, 0x89, 0x75, 0x1b, 0xd5, 3362 0xca, 0xe1, 0xd5, 0x90, 0x89, 0xd5, 0x00, 0x2b, 3363 0xb1, 0xb3, 0xbf, 0xca, 0x4a, 0xde, 0x09, 0x82, 3364 0xad, 0x67, 0x83, 0xe9, 0xd3, 0x7f, 0xb3, 0xe3, 3365 0x20, 0xac, 0x98, 0x55, 0xdf, 0x66, 0x6b, 0xfd, 3366 0x7c, 0x6b, 0x87, 0xa9, 0xa4, 0x6e, 0x25, 0x97, 3367 0x12, 0x56, 0x11, 0x61, 0x50, 0x7e, 0x17, 0x35, 3368 0x98, 0xf9, 0x88, 0xac, 0xb6, 0xf9, 0xab, 0x3a, 3369 0x10, 0x92, 0x63, 0x24, 0x46, 0x88, 0xc7, 0x08, 3370 0x78, 0x75, 0x8f, 0xf4, 0xd4, 0x31, 0x3b, 0x76, 3371 0x64, 0xf0, 0xf5, 0x10, 0xe9, 0x13, 0xca, 0x01, 3372 0xc5, 0x2b, 0x3a, 0x1b, 0x46, 0x53, 0x51, 0x44, 3373 0xe2, 0xdb, 0x0c, 0xac, 0xe8, 0xa6, 0x46, 0x66, 3374 0x00, 0xcf, 0x2a, 0x87, 0x83, 0x50, 0x07, 0xe1, 3375 0x6a, 0xa5, 0x07, 0x80, 0x1d, 0x86, 0xb7, 0x38, 3376 0x5e, 0x66, 0x9b, 0xfa, 0xf6, 0xba, 0x1d, 0xf5, 3377 0x68, 0x31, 0x63, 0xc2, 0xd5, 0x70, 0x53, 0x2f, 3378 0xd7, 0x43, 0x90, 0x54, 0x64, 0x0f, 0x24, 0x4c, 3379 0x52, 0x87, 0x13, 0x59, 0xd2, 0x84, 0x2f, 0xc3, 3380 0x37, 0xa0, 0x60, 0x03, 0x3a, 0xf0, 0x5e, 0xaa, 3381 0x00, 0x1c, 0x34, 0xfc, 0x7b, 0xd8, 0xf9, 0x10, 3382 0x29, 0xe4, 0x6c, 0x29, 0x43, 0x36, 0x27, 0x64, 3383 0x5d, 0x67, 0x86, 0x64, 0x21, 0xd6, 0x61, 0xaf, 3384 0x25, 0x74, 0x80, 0x53, 0x2b, 0x88, 0x78, 0x50, 3385 0xdc, 0x49, 0x9f, 0xfe, 0xd5, 0xb1, 0x40, 0x98, 3386 0xa0, 0x33, 0x72, 0x5e, 0x82, 0x0a, 0x5b, 0xe1, 3387 0x40, 0x0a, 0x0c, 0xb7, 0x03, 0x74, 0x1c, 0xa7, 3388 0x4b, 0x47, 0x86, 0x73, 0xaa, 0xcf, 0x85, 0x16, 3389 0x6e, 0xe8, 0xa1, 0x84, 0xdb, 0x2c, 0x58, 0x54, 3390 0x9c, 0x22, 0x40, 0xb8, 0x30, 0x8c, 0x27, 0xbe, 3391 0xba, 0x40, 0xc3, 0xb9, 0xd7, 0x29, 0xed, 0xb1, 3392 0x8c, 0xc2, 0x06, 0x8e, 0xcd, 0xb2, 0x7d, 0xa2, 3393 0x2b, 0x2c, 0xd3, 0xe7, 0xa0, 0xba, 0xa5, 0x30, 3394 0xc5, 0x19, 0x3c, 0xd3, 0xc8, 0x6b, 0xf8, 0x6a, 3395 0x44, 0xf0, 0x79, 0x9e, 0x51, 0x55, 0xb0, 0x9b, 3396 0xe2, 0x50, 0x98, 0x85, 0x23, 0xb3, 0xa7, 0x31, 3397 0xdd, 0x89, 0x1b, 0xc2, 0x00, 0x60, 0x11, 0xa0, 3398 0x65, 0xc0, 0xab, 0x57, 0xf1, 0xa6, 0xc1, 0x78, 3399 0x89, 0x55, 0xe0, 0x13, 0x5f, 0xa5, 0xca, 0x8f, 3400 0x3e, 0x52, 0xc7, 0x5d, 0x37, 0x16, 0x97, 0x3a, 3401 0x2f, 0xb2, 0x2c, 0x0e, 0xb1, 0x7c, 0x1b, 0x32, 3402 0x85, 0x29, 0xd9, 0xfa, 0x76, 0x56, 0xd7, 0x4d, 3403 0xea, 0x74, 0x0d, 0x9f, 0x07, 0x97, 0x77, 0xc3, 3404 0x6c, 0x17, 0xa1, 0x9c, 0x19, 0x58, 0x9e, 0x84, 3405 0xd2, 0xb8, 0xe4, 0xd1, 0xbc, 0x31, 0x07, 0xcb, 3406 0xd2, 0x78, 0x14, 0x22, 0x48, 0x35, 0x48, 0x44, 3407 0x6c, 0x89, 0x93, 0x14, 0x77, 0x44, 0xaa, 0x9e, 3408 0xc1, 0xc5, 0x93, 0xec, 0x2d, 0x5b, 0xaa, 0xc8, 3409 0x6a, 0x0a, 0xf6, 0x4a, 0x85, 0xe9, 0x09, 0xdf, 3410 0x8e, 0x28, 0x16, 0x60, 0x5d, 0x20, 0xb4, 0xe3, 3411 0x82, 0xb3, 0x0b, 0xbb, 0x61, 0xbf, 0x3a, 0x5f, 3412 0x82, 0x1a, 0x0b, 0x5d, 0xba, 0x9a, 0xd3, 0xe7, 3413 0xe5, 0xbd, 0x1b, 0x37, 0xa7, 0x5e, 0x0f, 0x09, 3414 0x29, 0x74, 0xe8, 0x46, 0xe8, 0xc3, 0x7c, 0x45, 3415 0x48, 0x7d, 0x60, 0x73, 0x9f, 0x99, 0x35, 0x17, 3416 0x19, 0xa5, 0x39, 0x47, 0x23, 0x26, 0x2b, 0x3b, 3417 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3418 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3419 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3420 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 3421}; 3422 3423static const unsigned char ml_kem_512_secret[] = { 3424 0x4a, 0xd5, 0x3a, 0x06, 0xb2, 0x9f, 0x12, 0x56, 3425 0x84, 0x21, 0xa5, 0x52, 0xc0, 0x81, 0x95, 0xb5, 3426 0x86, 0x73, 0xc8, 0x2f, 0x87, 0x0c, 0xc1, 0xcc, 3427 0xd6, 0x5a, 0x08, 0xe4, 0x32, 0x5f, 0xeb, 0x27 3428}; 3429 3430static const unsigned char ml_kem_512_reject_secret[] = { 3431 0x87, 0xf1, 0xe8, 0x13, 0xb7, 0x2e, 0x04, 0x87, 3432 0x47, 0x22, 0x56, 0x6e, 0x12, 0x80, 0xd8, 0x9d, 3433 0x8b, 0x44, 0xb7, 0xfd, 0xff, 0x7d, 0x69, 0x23, 3434 0x36, 0xd7, 0xb8, 0x7f, 0x38, 0xe7, 0x85, 0xce 3435}; 3436 3437static const unsigned char ml_kem_512_entropy[ML_KEM_RANDOM_BYTES] = { 3438 0 3439}; 3440 3441static const unsigned char ml_kem_512_seed[ML_KEM_SEED_BYTES] = { 3442 0 3443}; 3444 3445static const ST_KAT_PARAM ml_kem_keygen_params[] = { 3446 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_ML_KEM_SEED, ml_kem_512_seed), 3447 ST_KAT_PARAM_END() 3448}; 3449 3450static const ST_KAT_PARAM ml_kem_key[] = { 3451 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PRIV_KEY, ml_kem_512_private_key), 3452 ST_KAT_PARAM_END() 3453}; 3454 3455static const ST_KAT_KEM st_kat_kem_tests[] = { 3456 { 3457 OSSL_SELF_TEST_DESC_KEM, 3458 "ML-KEM-512", 3459 ml_kem_key, 3460 ITM(ml_kem_512_cipher_text), 3461 ITM(ml_kem_512_entropy), 3462 ITM(ml_kem_512_secret), 3463 ml_kem_512_reject_secret /* No length because same as _secret's */ 3464 }, 3465}; 3466#endif /* OPENSSL_NO_ML_KEM */ 3467 3468#if !defined(OPENSSL_NO_ML_KEM) || !defined(OPENSSL_NO_ML_DSA) || !defined(OPENSSL_NO_SLH_DSA) 3469static const ST_KAT_ASYM_KEYGEN st_kat_asym_keygen_tests[] = { 3470# if !defined(OPENSSL_NO_ML_KEM) 3471 /* 3472 * FIPS 140-3 IG 10.3.A resolution 14 mandates a CAST for ML-KEM 3473 * key generation. 3474 */ 3475 { 3476 OSSL_SELF_TEST_DESC_KEYGEN_ML_KEM, 3477 "ML-KEM-512", 3478 ml_kem_keygen_params, 3479 ml_kem_key 3480 }, 3481# endif 3482# if !defined(OPENSSL_NO_ML_DSA) 3483 { 3484 OSSL_SELF_TEST_DESC_KEYGEN_ML_DSA, 3485 "ML-DSA-65", 3486 ml_dsa_keygen_params, 3487 ml_dsa_key 3488 }, 3489# endif 3490# if !defined(OPENSSL_NO_SLH_DSA) 3491 { 3492 OSSL_SELF_TEST_DESC_KEYGEN_SLH_DSA, 3493 "SLH-DSA-SHA2-128f", 3494 slh_dsa_sha2_128f_keygen_init_params, 3495 slh_dsa_128f_keygen_expected_params 3496 }, 3497# endif 3498}; 3499#endif /* !OPENSSL_NO_ML_DSA || !OPENSSL_NO_SLH_DSA */ 3500