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