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