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