feat(tls): X.509 basicConstraints + EKU chain hardening (rv2 9 F3c-net decision 6)

- crypto.c: x509_find_ext (generic extension walker) + wo_x509_basic_constraints
  (cA / pathLenConstraint, absent => not a CA) + wo_x509_eku_serverauth_ok
  (EKU absent, serverAuth, or anyEKU => usable; else not)
- wo_tls_verify_chain enforces decision 6: the leaf must be server-usable
  (EKU), every server-sent issuer and the signing anchor must be a CA
  (basicConstraints CA:TRUE) with a pathLenConstraint covering the
  intermediates below it — stops a leaf masquerading as a CA
- gen_x509.py extended (folds in the wildcard leaf, adds EKU clientAuth-only,
  EKU serverAuth, a non-CA intermediate + a leaf issued under it); vectors
  regenerated
- KATs: extractors (test_crypto 104) + chain enforcement (test_tls 103) —
  EKU serverAuth accepted, clientAuth-only rejected, leaf-under-non-CA
  rejected though every signature verifies; existing chains still pass.
  ASan/UBSan clean

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
(cherry picked from commit 3811418014c2c8d9bc3a9464256f52104261b1b9)
This commit is contained in:
shoney.arickathil 2026-09-09 02:35:40 +02:00
parent 66de570888
commit 3a1ba15851
7 changed files with 648 additions and 183 deletions

View file

@ -1607,6 +1607,86 @@ static int x509_parse(const uint8_t *der_buf, size_t len, x509_cert *c) {
}
static const uint8_t OID_SAN[] = { 0x55, 0x1d, 0x11 }; /* 2.5.29.17 */
static const uint8_t OID_BASIC_CONSTRAINTS[] = { 0x55, 0x1d, 0x13 }; /* 2.5.29.19 */
static const uint8_t OID_EKU[] = { 0x55, 0x1d, 0x25 }; /* 2.5.29.37 */
static const uint8_t OID_EKU_SERVER_AUTH[] = { 0x2b,0x06,0x01,0x05,0x05,0x07,0x03,0x01 };
static const uint8_t OID_EKU_ANY[] = { 0x55, 0x1d, 0x25, 0x00 }; /* anyExtendedKeyUsage */
/* Find the extension with OID `oid` in a parsed cert's extension area; fills
* val/vallen with its extnValue (the OCTET STRING contents). Returns 1 found,
* 0 not present, -1 malformed. */
static int x509_find_ext(const x509_cert *c, const uint8_t *oid, size_t oidn,
const uint8_t **val, size_t *vallen) {
der r = { c->ext_area, c->ext_area + c->ext_area_len };
while (r.p < r.end && (*r.p == 0x81 || *r.p == 0x82))
if (der_skip(&r) < 0) return -1;
der exp, exts;
if (der_into(&r, 0xA3, &exp) < 0) return 0; /* no [3] extensions */
if (der_into(&exp, 0x30, &exts) < 0) return -1;
while (exts.p < exts.end) {
der ext;
if (der_into(&exts, 0x30, &ext) < 0) return -1;
const uint8_t *eo; size_t eol;
if (der_tlv(&ext, &eo, &eol) != 0x06) return -1;
if (ext.p < ext.end && *ext.p == 0x01) /* optional critical */
if (der_skip(&ext) < 0) return -1;
const uint8_t *ev; size_t evl;
if (der_tlv(&ext, &ev, &evl) != 0x04) return -1;
if (oid_eq(eo, eol, oid, oidn)) { *val = ev; *vallen = evl; return 1; }
}
return 0;
}
/* basicConstraints (RFC 5280 §4.2.1.9): SEQUENCE { cA BOOLEAN DEFAULT FALSE,
* pathLenConstraint INTEGER OPTIONAL }. Fills *is_ca and, when present,
* *has_pathlen + *pathlen. Absent extension => not a CA. 0 ok, -1 malformed. */
int wo_x509_basic_constraints(const uint8_t *cert_der, size_t cert_len,
int *is_ca, int *has_pathlen, int *pathlen) {
*is_ca = 0; *has_pathlen = 0; *pathlen = 0;
x509_cert c;
if (x509_parse(cert_der, cert_len, &c) != 0) return -1;
const uint8_t *v; size_t vl;
int f = x509_find_ext(&c, OID_BASIC_CONSTRAINTS, sizeof OID_BASIC_CONSTRAINTS, &v, &vl);
if (f < 0) return -1;
if (f == 0) return 0; /* absent -> not a CA */
der bc; der d = { v, v + vl };
if (der_into(&d, 0x30, &bc) < 0) return -1; /* SEQUENCE */
if (bc.p < bc.end && *bc.p == 0x01) { /* cA BOOLEAN */
const uint8_t *bv; size_t bvl;
if (der_tlv(&bc, &bv, &bvl) != 0x01 || bvl != 1) return -1;
*is_ca = bv[0] != 0;
}
if (bc.p < bc.end && *bc.p == 0x02) { /* pathLenConstraint */
const uint8_t *pv; size_t pvl;
if (der_tlv(&bc, &pv, &pvl) != 0x02 || pvl == 0 || pvl > 2) return -1;
int n = 0;
for (size_t i = 0; i < pvl; i++) n = (n << 8) | pv[i];
*has_pathlen = 1; *pathlen = n;
}
return 0;
}
/* Extended Key Usage (RFC 5280 §4.2.1.12). Server-usable if EKU is absent, or
* present and lists id-kp-serverAuth or anyExtendedKeyUsage. Returns 1 if
* usable as a TLS server cert, 0 otherwise. */
int wo_x509_eku_serverauth_ok(const uint8_t *cert_der, size_t cert_len) {
x509_cert c;
if (x509_parse(cert_der, cert_len, &c) != 0) return 0;
const uint8_t *v; size_t vl;
int f = x509_find_ext(&c, OID_EKU, sizeof OID_EKU, &v, &vl);
if (f < 0) return 0;
if (f == 0) return 1; /* absent -> allowed */
der seq, d = { v, v + vl };
if (der_into(&d, 0x30, &seq) < 0) return 0; /* SEQUENCE OF OID */
while (seq.p < seq.end) {
const uint8_t *ko; size_t kol;
if (der_tlv(&seq, &ko, &kol) != 0x06) return 0;
if (oid_eq(ko, kol, OID_EKU_SERVER_AUTH, sizeof OID_EKU_SERVER_AUTH) ||
oid_eq(ko, kol, OID_EKU_ANY, sizeof OID_EKU_ANY))
return 1;
}
return 0; /* present, no serverAuth */
}
/* Case-insensitive match of a presented dNSName pattern against a hostname,
* with a single left-most "*" wildcard (RFC 6125 §6.4.3): "*.example.com"

View file

@ -84,6 +84,14 @@ int wo_x509_check_validity(const uint8_t *cert_der, size_t cert_len,
* left-most wildcard). 1 match, 0 otherwise (no SAN => 0; no CN fallback). */
int wo_x509_check_host(const uint8_t *cert_der, size_t cert_len,
const char *hostname, size_t hostlen);
/* basicConstraints: *is_ca set from cA (absent extension => 0); when a
* pathLenConstraint is present, *has_pathlen=1 and *pathlen its value. 0 ok,
* -1 malformed. (rv2 9 F3c decision 6) */
int wo_x509_basic_constraints(const uint8_t *cert_der, size_t cert_len,
int *is_ca, int *has_pathlen, int *pathlen);
/* Extended Key Usage: 1 if usable as a TLS server cert (EKU absent, or lists
* serverAuth / anyExtendedKeyUsage), 0 otherwise. (rv2 9 F3c decision 6) */
int wo_x509_eku_serverauth_ok(const uint8_t *cert_der, size_t cert_len);
int wo_builtin_crypto(wo_vm *vm, uint64_t *R, uint32_t ins, const char **msg);

View file

@ -624,25 +624,47 @@ int wo_tls_verify_chain(const uint8_t *const *certs, const size_t *cert_lens,
const char *host, size_t hostlen, const char now14[14]) {
if (n_certs == 0 || n_anchors == 0) return 0;
/* leaf hostname (SAN) must match. */
/* leaf hostname (SAN) must match, and the leaf must be usable as a server
* cert (decision 6: EKU serverAuth, or no EKU). */
if (host && !wo_x509_check_host(certs[0], cert_lens[0], host, hostlen))
return 0;
if (!wo_x509_eku_serverauth_ok(certs[0], cert_lens[0]))
return 0;
/* every cert must be temporally valid. */
for (size_t i = 0; i < n_certs; i++)
if (!wo_x509_check_validity(certs[i], cert_lens[i], now14)) return 0;
/* every issuer the server sent (certs[1..]) must be a CA (decision 6:
* basicConstraints CA:TRUE, and its pathLenConstraint must cover the number
* of intermediates below it). This is what stops a leaf masquerading as a
* CA. Index i issues cert i-1; the intermediates strictly below it (above
* the leaf) are indices 1..i-1, i.e. (i-1) of them. */
for (size_t i = 1; i < n_certs; i++) {
int is_ca, has_pl, pl;
if (wo_x509_basic_constraints(certs[i], cert_lens[i], &is_ca, &has_pl, &pl) != 0)
return 0;
if (!is_ca) return 0;
if (has_pl && pl < (int)(i - 1)) return 0;
}
/* each cert is signed by the next one the server sent. */
for (size_t i = 0; i + 1 < n_certs; i++)
if (!wo_x509_verify_one(certs[i], cert_lens[i], certs[i + 1], cert_lens[i + 1]))
return 0;
/* the chain top must chain to a trust anchor: either it is one verbatim, or
* an anchor signed it. */
* an anchor (which must itself be a CA) signed it. When an anchor signs the
* top, its pathLenConstraint must cover all (n_certs-1) intermediates. */
const uint8_t *top = certs[n_certs - 1]; size_t toplen = cert_lens[n_certs - 1];
for (size_t a = 0; a < n_anchors; a++) {
if (toplen == anchor_lens[a] && memcmp(top, anchors[a], toplen) == 0)
return 1; /* server sent the root */
int is_ca, has_pl, pl;
if (wo_x509_basic_constraints(anchors[a], anchor_lens[a], &is_ca, &has_pl, &pl) != 0)
continue;
if (!is_ca) continue; /* anchor not a CA */
if (has_pl && pl < (int)(n_certs - 1)) continue; /* pathLen too short */
if (wo_x509_verify_one(top, toplen, anchors[a], anchor_lens[a]))
return 1; /* anchor signed the top */
}

View file

@ -1,67 +1,122 @@
#!/usr/bin/env python3
"""Generate two cert chains (RSA and EC P-256) for the wo_x509 KAT.
Emits C hex byte arrays: RSA CA + RSA leaf, EC CA + EC leaf."""
"""Generate the wo_x509 KAT certificate vectors.
Two real chains (RSA CA+leaf, EC P-256 CA+leaf) for signature/SPKI/validity/SAN,
a wildcard-SAN leaf for hostname matching, and the phase-6 (decision 6) negatives:
a leaf whose EKU is clientAuth-only, a leaf with EKU serverAuth, a non-CA
intermediate, and a leaf issued under that non-CA intermediate.
Regenerate with: python3 runtime/test/gen_x509.py > runtime/test/x509_vectors.h
"""
import datetime
from cryptography import x509
from cryptography.x509.oid import NameOID
from cryptography.x509.oid import NameOID, ExtendedKeyUsageOID
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import rsa, ec, padding
from cryptography.hazmat.primitives.asymmetric import rsa, ec
from cryptography.hazmat.primitives.serialization import Encoding
NB = datetime.datetime(2020, 1, 1)
NA = datetime.datetime(2030, 1, 1)
def mkname(cn):
return x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, cn)])
def selfsigned(key, cn, hashalg, sanhost=None):
b = (x509.CertificateBuilder()
.subject_name(mkname(cn)).issuer_name(mkname(cn))
.public_key(key.public_key())
.serial_number(x509.random_serial_number())
.not_valid_before(NB).not_valid_after(NA)
.add_extension(x509.BasicConstraints(ca=True, path_length=None), True))
if sanhost:
b = b.add_extension(x509.SubjectAlternativeName([x509.DNSName(sanhost)]), False)
return b.sign(key, hashalg)
def leafcert(leafkey, cakey, ca_cert, cn, hashalg, sanhost):
def base(subject, issuer, pubkey):
return (x509.CertificateBuilder()
.subject_name(mkname(subject)).issuer_name(mkname(issuer))
.public_key(pubkey)
.serial_number(x509.random_serial_number())
.not_valid_before(NB).not_valid_after(NA))
def selfsigned(key, cn, ca=True):
b = base(cn, cn, key.public_key()).add_extension(
x509.BasicConstraints(ca=ca, path_length=None), True)
return b.sign(key, hashes.SHA256())
def leafcert(leafkey, cakey, ca_cert, cn, sanhost, eku=None):
b = (x509.CertificateBuilder()
.subject_name(mkname(cn)).issuer_name(ca_cert.subject)
.public_key(leafkey.public_key())
.serial_number(x509.random_serial_number())
.not_valid_before(NB).not_valid_after(NA)
.add_extension(x509.SubjectAlternativeName([x509.DNSName(sanhost)]), False)
.sign(cakey, hashalg))
.add_extension(x509.SubjectAlternativeName([x509.DNSName(sanhost)]), False))
if eku:
b = b.add_extension(x509.ExtendedKeyUsage(eku), False)
return b.sign(cakey, hashes.SHA256())
def cbytes(name, der):
out = "static const uint8_t %s[] = {" % name
def intermediate(intkey, cakey, ca_cert, cn, ca):
"""An intermediate signed by ca; ca flag sets basicConstraints."""
return (x509.CertificateBuilder()
.subject_name(mkname(cn)).issuer_name(ca_cert.subject)
.public_key(intkey.public_key())
.serial_number(x509.random_serial_number())
.not_valid_before(NB).not_valid_after(NA)
.add_extension(x509.BasicConstraints(ca=ca, path_length=None), True)
.sign(cakey, hashes.SHA256()))
def cbytes(name, der, note=""):
out = ("/* %s */\n" % note if note else "") + "static const uint8_t %s[] = {" % name
for i, b in enumerate(der):
if i % 12 == 0:
out += "\n "
out += "0x%02x," % b
out += "\n};\n"
return out
return out + "\n};\n"
# RSA chain
def der(c):
return c.public_bytes(Encoding.DER)
# --- RSA chain ---
rsa_ca_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
rsa_ca = selfsigned(rsa_ca_key, "wo-rsa-ca", hashes.SHA256())
rsa_ca = selfsigned(rsa_ca_key, "wo-rsa-ca")
rsa_leaf_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
rsa_leaf = leafcert(rsa_leaf_key, rsa_ca_key, rsa_ca, "leaf.example.com",
hashes.SHA256(), "leaf.example.com")
rsa_leaf = leafcert(rsa_leaf_key, rsa_ca_key, rsa_ca, "leaf.example.com", "leaf.example.com")
# EC chain
# --- EC chain ---
ec_ca_key = ec.generate_private_key(ec.SECP256R1())
ec_ca = selfsigned(ec_ca_key, "wo-ec-ca", hashes.SHA256())
ec_ca = selfsigned(ec_ca_key, "wo-ec-ca")
ec_leaf_key = ec.generate_private_key(ec.SECP256R1())
ec_leaf = leafcert(ec_leaf_key, ec_ca_key, ec_ca, "leaf.example.org",
hashes.SHA256(), "leaf.example.org")
ec_leaf = leafcert(ec_leaf_key, ec_ca_key, ec_ca, "leaf.example.org", "leaf.example.org")
print("/* Generated by scratchpad/gen_x509.py — python cryptography %s.\n"
" * Two real chains: RSA CA+leaf (SHA256withRSA), EC P-256 CA+leaf\n"
" * (ecdsa-with-SHA256). Vectors for the wo_x509 phase-E KAT. */" %
# --- wildcard-SAN leaf (self-signed EC, SAN *.example.com) ---
wild_key = ec.generate_private_key(ec.SECP256R1())
wild_leaf = (base("wild", "wild", wild_key.public_key())
.add_extension(x509.SubjectAlternativeName([x509.DNSName("*.example.com")]), False)
.sign(wild_key, hashes.SHA256()))
# --- decision-6 negatives (all signed by rsa_ca so signatures verify) ---
# leaf whose EKU is clientAuth only -> must be rejected as a server cert
eku_client_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
leaf_eku_client = leafcert(eku_client_key, rsa_ca_key, rsa_ca, "leaf.example.com",
"leaf.example.com", eku=[ExtendedKeyUsageOID.CLIENT_AUTH])
# leaf with EKU serverAuth -> must be accepted
eku_server_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
leaf_eku_server = leafcert(eku_server_key, rsa_ca_key, rsa_ca, "leaf.example.com",
"leaf.example.com", eku=[ExtendedKeyUsageOID.SERVER_AUTH])
# non-CA intermediate, and a leaf issued under it -> chain must be rejected
noca_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
noca_mid = intermediate(noca_key, rsa_ca_key, rsa_ca, "wo-noca-mid", ca=False)
under_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
leaf_under_noca = leafcert(under_key, noca_key, noca_mid, "leaf.example.com", "leaf.example.com")
print("/* Generated by runtime/test/gen_x509.py — python cryptography %s.\n"
" * RSA + EC chains, a wildcard-SAN leaf, and decision-6 negatives\n"
" * (EKU clientAuth-only, EKU serverAuth, a non-CA intermediate + a\n"
" * leaf issued under it). Vectors for the wo_x509 KATs. */" %
__import__("cryptography").__version__)
print(cbytes("kat_rsa_ca", rsa_ca.public_bytes(Encoding.DER)))
print(cbytes("kat_rsa_leaf", rsa_leaf.public_bytes(Encoding.DER)))
print(cbytes("kat_ec_ca", ec_ca.public_bytes(Encoding.DER)))
print(cbytes("kat_ec_leaf", ec_leaf.public_bytes(Encoding.DER)))
print(cbytes("kat_rsa_ca", der(rsa_ca)))
print(cbytes("kat_rsa_leaf", der(rsa_leaf)))
print(cbytes("kat_ec_ca", der(ec_ca)))
print(cbytes("kat_ec_leaf", der(ec_leaf)))
print(cbytes("kat_wild_leaf", der(wild_leaf), "wildcard-SAN leaf (*.example.com)"))
print(cbytes("kat_leaf_eku_client", der(leaf_eku_client), "EKU clientAuth only -> reject as server"))
print(cbytes("kat_leaf_eku_server", der(leaf_eku_server), "EKU serverAuth -> accept"))
print(cbytes("kat_noca_mid", der(noca_mid), "intermediate with basicConstraints CA:FALSE"))
print(cbytes("kat_leaf_under_noca", der(leaf_under_noca), "leaf issued under the non-CA intermediate"))

View file

@ -440,5 +440,20 @@ int main(void) {
#undef HOST
}
/* basicConstraints + EKU extractors (rv2 9 F3c decision 6). */
{
int is_ca, has_pl, pl;
T_CHECK(wo_x509_basic_constraints(kat_rsa_ca, sizeof kat_rsa_ca, &is_ca, &has_pl, &pl) == 0);
T_CHECK(is_ca == 1); /* CA:TRUE */
T_CHECK(wo_x509_basic_constraints(kat_rsa_leaf, sizeof kat_rsa_leaf, &is_ca, &has_pl, &pl) == 0);
T_CHECK(is_ca == 0); /* leaf: not a CA */
T_CHECK(wo_x509_basic_constraints(kat_noca_mid, sizeof kat_noca_mid, &is_ca, &has_pl, &pl) == 0);
T_CHECK(is_ca == 0); /* CA:FALSE intermediate */
T_CHECK(wo_x509_eku_serverauth_ok(kat_rsa_leaf, sizeof kat_rsa_leaf) == 1); /* no EKU -> ok */
T_CHECK(wo_x509_eku_serverauth_ok(kat_leaf_eku_server, sizeof kat_leaf_eku_server) == 1);
T_CHECK(wo_x509_eku_serverauth_ok(kat_leaf_eku_client, sizeof kat_leaf_eku_client) == 0); /* clientAuth only */
}
return t_report("test_crypto");
}

View file

@ -358,6 +358,24 @@ int main(void) {
/* no anchors -> never trusted */
T_CHECK(wo_tls_verify_chain(leaf1, leaf1n, 1, NULL, NULL, 0,
"leaf.example.com", 16, NOW) == 0);
/* decision 6 — EKU: a leaf with EKU serverAuth is accepted; one with
* clientAuth-only is rejected even though its signature is valid. */
const uint8_t *ekuS[] = { kat_leaf_eku_server };
size_t ekuSn[] = { sizeof kat_leaf_eku_server };
T_CHECK(wo_tls_verify_chain(ekuS, ekuSn, 1, rsa_anchor, rsa_anchor_n, 1,
"leaf.example.com", 16, NOW) == 1);
const uint8_t *ekuC[] = { kat_leaf_eku_client };
size_t ekuCn[] = { sizeof kat_leaf_eku_client };
T_CHECK(wo_tls_verify_chain(ekuC, ekuCn, 1, rsa_anchor, rsa_anchor_n, 1,
"leaf.example.com", 16, NOW) == 0);
/* decision 6 — basicConstraints: a leaf issued under a non-CA
* intermediate is rejected, though every signature verifies. */
const uint8_t *nocaChain[] = { kat_leaf_under_noca, kat_noca_mid };
size_t nocaChainN[] = { sizeof kat_leaf_under_noca, sizeof kat_noca_mid };
T_CHECK(wo_tls_verify_chain(nocaChain, nocaChainN, 2, rsa_anchor, rsa_anchor_n, 1,
"leaf.example.com", 16, NOW) == 0);
}
return t_report("test_tls");

View file

@ -1,10 +1,11 @@
/* Generated by scratchpad/gen_x509.py — python cryptography 41.0.7.
* Two real chains: RSA CA+leaf (SHA256withRSA), EC P-256 CA+leaf
* (ecdsa-with-SHA256). Vectors for the wo_x509 phase-E KAT. */
/* Generated by runtime/test/gen_x509.py — python cryptography 41.0.7.
* RSA + EC chains, a wildcard-SAN leaf, and decision-6 negatives
* (EKU clientAuth-only, EKU serverAuth, a non-CA intermediate + a
* leaf issued under it). Vectors for the wo_x509 KATs. */
static const uint8_t kat_rsa_ca[] = {
0x30,0x82,0x02,0xc9,0x30,0x82,0x01,0xb1,0xa0,0x03,0x02,0x01,
0x02,0x02,0x14,0x30,0x0b,0xd4,0x57,0x1a,0xd0,0xc8,0x0f,0xe9,
0x12,0xb3,0x16,0x63,0x7a,0x5c,0xc3,0xe9,0xb0,0xfa,0x6e,0x30,
0x02,0x02,0x14,0x31,0xf8,0xc1,0x48,0x5b,0x9a,0xe1,0xf5,0x81,
0xf9,0xbf,0xb6,0x3b,0x43,0xe4,0x5b,0x04,0x16,0x5c,0x9b,0x30,
0x0d,0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,0x0b,
0x05,0x00,0x30,0x14,0x31,0x12,0x30,0x10,0x06,0x03,0x55,0x04,
0x03,0x0c,0x09,0x77,0x6f,0x2d,0x72,0x73,0x61,0x2d,0x63,0x61,
@ -15,59 +16,59 @@ static const uint8_t kat_rsa_ca[] = {
0x72,0x73,0x61,0x2d,0x63,0x61,0x30,0x82,0x01,0x22,0x30,0x0d,
0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,0x01,0x05,
0x00,0x03,0x82,0x01,0x0f,0x00,0x30,0x82,0x01,0x0a,0x02,0x82,
0x01,0x01,0x00,0xbd,0x1a,0x09,0xfd,0x87,0xdb,0xfc,0xe6,0x45,
0xcb,0x1f,0x6b,0xbf,0x6e,0x83,0xbb,0x76,0x9c,0x0e,0x0d,0xeb,
0x95,0x58,0x7a,0x7a,0x4c,0xd5,0x16,0xf8,0x2d,0x52,0xe9,0xb9,
0xe0,0x71,0xdd,0xc9,0x65,0x01,0x5a,0x06,0x9c,0x29,0x9d,0x1f,
0xe2,0x32,0x12,0x99,0x57,0xc0,0xb9,0x5c,0x0d,0x0c,0x60,0x72,
0xe1,0x6d,0x45,0x23,0x22,0xed,0x6a,0x45,0x16,0x55,0x75,0x69,
0xfd,0x7e,0x0b,0xa3,0x6e,0xfd,0xb1,0x24,0x35,0x77,0xa4,0xde,
0x54,0x0f,0xb5,0xeb,0xc9,0x13,0xad,0x1b,0x15,0x58,0x75,0xde,
0xb6,0xb7,0x57,0x19,0x54,0x11,0x19,0xa5,0x72,0x09,0xf1,0x06,
0xdf,0x24,0xba,0x9a,0x74,0x3b,0x3d,0x8e,0xa6,0xa4,0xd7,0x52,
0xd3,0x32,0xd4,0x21,0xad,0xec,0xb7,0xce,0x9b,0xef,0x11,0x44,
0x84,0x67,0x5c,0x8e,0x0e,0xae,0xc9,0x26,0x01,0x75,0x18,0x52,
0x63,0x86,0x9b,0x31,0x89,0xdd,0x8f,0x06,0x96,0x07,0xd2,0x5b,
0x8d,0x1a,0xc1,0x33,0x43,0x53,0x59,0xde,0x45,0xfb,0xb0,0x83,
0x67,0xb8,0x63,0x6d,0x34,0x2e,0x87,0x4a,0xe4,0x70,0x03,0x9f,
0x24,0x46,0x86,0x8e,0x0e,0x55,0xa6,0x27,0xea,0xf1,0x03,0x84,
0x8e,0xbc,0x49,0xfc,0x92,0x0b,0x7f,0xf7,0x9a,0xb4,0x87,0xc1,
0x01,0x7c,0x64,0xd6,0x0f,0xe3,0x4e,0xcd,0x39,0xe2,0xb3,0xcb,
0xb1,0x33,0x4b,0xbe,0x98,0x78,0x49,0xb3,0x9b,0x08,0x73,0x20,
0x9e,0x4a,0xdc,0x3d,0x16,0xb6,0xb1,0x9f,0xc6,0xe3,0x1c,0x8a,
0xfc,0xaa,0x17,0x68,0x41,0x58,0x9d,0x84,0x00,0xc9,0x67,0x57,
0x9b,0xc7,0x01,0x3e,0x63,0x5b,0x4d,0x02,0x03,0x01,0x00,0x01,
0x01,0x01,0x00,0xb7,0x29,0xff,0x2b,0x89,0xbf,0x23,0x8b,0x35,
0x90,0xea,0x4c,0x60,0xe6,0xdf,0xfc,0xad,0x7f,0x44,0x23,0x5b,
0xdf,0xd3,0x47,0x32,0x1d,0xdf,0x2a,0x7a,0xa7,0xba,0x2c,0xa9,
0xbf,0x57,0x38,0xeb,0xcd,0x30,0x4a,0x11,0x07,0x53,0x7e,0x59,
0x7e,0x49,0x55,0xa0,0xfa,0x85,0x46,0x22,0x06,0x3c,0xe5,0x5d,
0x38,0x3a,0x09,0x16,0x13,0xf4,0x40,0x01,0xf0,0x88,0xaf,0xc7,
0x31,0xe1,0x43,0xe4,0x4a,0x27,0x96,0x34,0x97,0x70,0x4d,0xf6,
0x10,0x16,0xaa,0x93,0x8a,0xcc,0xd7,0x28,0x66,0x0a,0x93,0x24,
0xca,0x76,0x7d,0x34,0xb4,0xfc,0xbf,0x75,0xcd,0x01,0xcc,0xdf,
0x01,0x8a,0x18,0x4f,0xf8,0x03,0x60,0x88,0x1c,0x20,0x58,0xed,
0x2f,0xa9,0x49,0x76,0xe7,0x03,0x3a,0xdc,0x3f,0x96,0x9b,0x47,
0x9f,0xe1,0xfe,0xcf,0x98,0x06,0xf5,0x93,0x2b,0x06,0x72,0x65,
0x95,0xf4,0x55,0xe9,0x18,0x3e,0x61,0xc6,0x69,0x71,0x12,0x22,
0xdc,0xdd,0x85,0xf6,0x3c,0x37,0x43,0x4b,0xde,0x1f,0x1e,0x98,
0xe7,0x87,0x22,0xcf,0x93,0x66,0x8d,0x28,0x09,0x65,0xf1,0x41,
0xe6,0xc9,0x77,0x16,0x88,0x9c,0x58,0x27,0x90,0x7b,0x1a,0x42,
0x30,0x93,0xd0,0x6d,0x57,0xd7,0xe2,0xf0,0xbb,0x14,0xc9,0xf0,
0x7b,0x3e,0x1d,0xa3,0xf2,0x1a,0xb2,0x66,0xd7,0x5a,0x68,0x46,
0x00,0x9c,0xe6,0xa1,0x5a,0xb3,0x66,0x1f,0x60,0xe6,0x47,0x3b,
0xc3,0x1f,0x23,0xa3,0xea,0x12,0x0e,0x77,0xfe,0xc3,0xfb,0x3f,
0x86,0x41,0xf1,0x52,0xf9,0x22,0x7c,0x4c,0xb5,0x71,0xe5,0xf9,
0x87,0x83,0x4c,0xca,0x3e,0x47,0x1d,0x02,0x03,0x01,0x00,0x01,
0xa3,0x13,0x30,0x11,0x30,0x0f,0x06,0x03,0x55,0x1d,0x13,0x01,
0x01,0xff,0x04,0x05,0x30,0x03,0x01,0x01,0xff,0x30,0x0d,0x06,
0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,0x0b,0x05,0x00,
0x03,0x82,0x01,0x01,0x00,0x9d,0x80,0x33,0xbe,0xf2,0x17,0x6b,
0x3d,0xb2,0x70,0xa3,0x5a,0x0e,0xc1,0xc8,0x8f,0xa2,0x08,0x1e,
0x57,0x60,0x4e,0x4d,0xfe,0x8c,0xab,0x13,0x03,0x47,0x9d,0x28,
0x51,0x9e,0x16,0x0e,0x48,0xdf,0xa2,0x55,0xf9,0x20,0x8f,0x58,
0xb6,0x4d,0x35,0x05,0x2e,0x01,0x46,0x35,0xf8,0x9a,0x4c,0x28,
0xad,0x28,0x6a,0x26,0x0e,0x42,0xba,0x7b,0x32,0xbb,0x04,0x9d,
0x23,0xec,0xea,0x14,0xb3,0x1f,0x77,0x28,0x76,0x74,0x74,0x97,
0x96,0x87,0x2c,0xeb,0x6f,0xb8,0xf5,0x1d,0x21,0x0e,0xe6,0x98,
0x41,0x72,0x8c,0x21,0x87,0xc9,0xc4,0x76,0x86,0x9f,0xea,0x96,
0x5f,0x74,0xea,0x0e,0x78,0x39,0xf9,0x8c,0x4b,0xc0,0x96,0xb3,
0xce,0x12,0x3b,0x80,0xf4,0x08,0xee,0x07,0xf0,0x96,0x9a,0x51,
0xe7,0x26,0xfb,0x6a,0x62,0x00,0x55,0x76,0xa4,0x1b,0x71,0xf0,
0x82,0x44,0x47,0x6d,0x28,0x3e,0x01,0xf7,0x03,0x64,0x59,0xae,
0xfc,0xc3,0x40,0x9e,0x36,0x60,0x04,0x68,0x7a,0xb8,0xcf,0x23,
0x0b,0x68,0x8e,0x1d,0xd4,0xd2,0xbe,0xc4,0xb1,0xbd,0x26,0x9a,
0x62,0x8c,0x38,0x67,0xd5,0x06,0x3b,0x64,0x6a,0x29,0x18,0x3d,
0x97,0x16,0x51,0x77,0x99,0xac,0x15,0x23,0x15,0xce,0x8e,0xe1,
0x04,0xcf,0xe3,0x83,0xc6,0xca,0xaf,0x49,0x37,0x31,0x31,0xfc,
0x4f,0x2b,0xe6,0xd7,0xd8,0xcf,0xbf,0x13,0x26,0xba,0x63,0x3d,
0x56,0xce,0xde,0x16,0x2c,0x06,0x47,0xf5,0xaa,0x30,0x3a,0xb1,
0x27,0x9d,0x7a,0xa9,0xeb,0x6f,0xd4,0x6b,0x1b,0x3d,0x6e,0x3c,
0x3d,0x54,0xa3,0x4e,0x1d,0xe7,0x0b,0xc4,0x04,
0x03,0x82,0x01,0x01,0x00,0x5c,0x1e,0x34,0x30,0x5b,0x66,0x83,
0xaf,0x90,0x86,0xae,0x58,0x54,0xed,0xb7,0xd1,0x9b,0x53,0x38,
0x53,0x61,0x95,0x23,0x6c,0xd9,0x09,0xb0,0xc2,0x59,0x11,0x02,
0x65,0xcd,0x89,0x01,0x22,0x97,0x74,0xfc,0x67,0xbe,0x4a,0x41,
0xa0,0xd3,0x94,0xe8,0x43,0x15,0x09,0x45,0x53,0x0c,0x89,0xb9,
0x44,0x94,0xdc,0xf8,0xd3,0x2b,0xb0,0x24,0xcc,0xa0,0xce,0x27,
0x05,0x80,0x85,0xd0,0x7c,0x9c,0xdf,0xeb,0xc2,0xc9,0x90,0x92,
0xcc,0x2b,0x50,0xd8,0xff,0xa7,0x1a,0xe7,0xc4,0x1a,0xd7,0x50,
0xbc,0xb2,0xbd,0xb0,0xcc,0x44,0x19,0x66,0xfa,0x2e,0x3e,0x0c,
0x56,0x93,0x83,0x94,0xac,0x61,0x4e,0x8c,0x62,0x13,0x98,0x1e,
0x9b,0x71,0x04,0x61,0x5f,0x90,0xf0,0x7f,0x7a,0x71,0x30,0x33,
0xee,0x44,0x10,0xdc,0xb8,0xa8,0x69,0x0f,0x81,0xb2,0x7d,0x25,
0xc4,0x6d,0x33,0x13,0xce,0xd0,0x8b,0x71,0x33,0x04,0x2f,0x43,
0x2b,0xa2,0xe0,0x89,0x44,0x82,0xfa,0xbd,0x39,0xbe,0x57,0xcd,
0xc7,0x2b,0xb4,0xd3,0xc9,0x78,0x49,0x1c,0x03,0x2b,0x87,0x00,
0xdb,0xf4,0x45,0x3b,0x53,0x91,0xf0,0xe9,0xc5,0x94,0xe0,0x9f,
0xd3,0xb3,0x4f,0x43,0xed,0x73,0x2a,0xc7,0xcd,0xff,0xa6,0xc2,
0xcc,0xef,0xcd,0x78,0x80,0x5f,0x79,0xa1,0xe5,0x87,0x23,0x62,
0xa9,0x60,0x47,0x3b,0xd9,0xd4,0xf9,0xe4,0xc2,0xe2,0xc8,0x9d,
0xee,0x6d,0xd5,0x46,0x47,0xe0,0x23,0x25,0x8a,0xf0,0x5a,0xc2,
0xf2,0x54,0xd7,0x60,0x05,0x53,0x24,0x28,0x85,0x14,0x29,0x10,
0xa1,0x8f,0x03,0xc4,0xd3,0xd5,0xe2,0xe5,0xb8,
};
static const uint8_t kat_rsa_leaf[] = {
0x30,0x82,0x02,0xdc,0x30,0x82,0x01,0xc4,0xa0,0x03,0x02,0x01,
0x02,0x02,0x14,0x54,0x5e,0x84,0x52,0x6c,0xc6,0x6c,0x8c,0xd2,
0x5e,0x65,0x87,0x03,0xeb,0x62,0x96,0x80,0x26,0x7f,0x9a,0x30,
0x02,0x02,0x14,0x55,0x77,0x0f,0x2e,0x3f,0x5c,0x1a,0x95,0x93,
0x27,0xd0,0x37,0x2b,0x6a,0x28,0xbe,0x99,0x6b,0xce,0x8f,0x30,
0x0d,0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,0x0b,
0x05,0x00,0x30,0x14,0x31,0x12,0x30,0x10,0x06,0x03,0x55,0x04,
0x03,0x0c,0x09,0x77,0x6f,0x2d,0x72,0x73,0x61,0x2d,0x63,0x61,
@ -78,61 +79,61 @@ static const uint8_t kat_rsa_leaf[] = {
0x66,0x2e,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x2e,0x63,0x6f,
0x6d,0x30,0x82,0x01,0x22,0x30,0x0d,0x06,0x09,0x2a,0x86,0x48,
0x86,0xf7,0x0d,0x01,0x01,0x01,0x05,0x00,0x03,0x82,0x01,0x0f,
0x00,0x30,0x82,0x01,0x0a,0x02,0x82,0x01,0x01,0x00,0xd7,0x4f,
0x77,0x85,0xd8,0x35,0x2d,0x2c,0xc4,0x6e,0xd2,0x34,0xfe,0xcb,
0x46,0x8d,0xc1,0xb0,0x75,0xff,0x48,0xff,0x06,0x26,0x78,0x6b,
0xf5,0x71,0x42,0x74,0x12,0x89,0x2f,0x73,0xbb,0x11,0xc4,0x6a,
0xa1,0xc4,0x3e,0x24,0xb6,0x91,0xe7,0xe1,0x77,0xfa,0xe8,0xac,
0xd3,0xae,0x5b,0x72,0x3d,0x41,0xc1,0xe7,0x5d,0x8d,0xe9,0xc5,
0x1d,0xcd,0x43,0x9b,0xa3,0xc4,0x9e,0x5e,0x69,0x55,0x11,0x6d,
0x3a,0xa2,0x31,0x3b,0xcc,0xcf,0xa6,0x83,0x3c,0x21,0x46,0x64,
0x83,0xc4,0x25,0xb4,0xa2,0x52,0xb5,0xbe,0x86,0xaf,0xbc,0x64,
0xb2,0x92,0x56,0x49,0xc4,0x77,0x80,0x59,0xfd,0x44,0x62,0x79,
0xa3,0x04,0xdd,0x3c,0x5a,0xa8,0xe1,0x83,0x6e,0xae,0x50,0x5a,
0xf2,0x0f,0x37,0xbc,0xcc,0x7b,0x7b,0x95,0x6b,0x32,0xa2,0x21,
0x6b,0xd8,0x30,0x11,0xfd,0xa9,0x8c,0xbf,0xa4,0xb5,0xc3,0xb0,
0xe6,0x76,0x16,0x4a,0xac,0x1d,0x5b,0x38,0x4e,0xd5,0xc4,0xe5,
0x8e,0x6e,0x7d,0x05,0x9f,0x12,0xb9,0x36,0x38,0xe3,0x8f,0xfe,
0x4b,0x1e,0x48,0x49,0x73,0x80,0x74,0x5e,0xe3,0x0e,0xe1,0x20,
0x8f,0xb2,0xed,0xdf,0xe3,0x81,0x2b,0x29,0xab,0x22,0xdc,0x00,
0x35,0xf2,0xc0,0x22,0xd9,0xfd,0xc5,0x25,0xa3,0x6d,0x54,0x88,
0x50,0x77,0x73,0xff,0x95,0x1a,0x70,0x93,0x2d,0x89,0x59,0xb5,
0x83,0x49,0x6d,0x55,0x2b,0x34,0x08,0x83,0x0e,0xd6,0x3c,0x7a,
0x2a,0x42,0x22,0xe8,0x6d,0x9d,0x68,0x2d,0x06,0xfc,0x6c,0xf8,
0x36,0x49,0xa1,0x8a,0x43,0x2f,0x88,0x59,0x14,0x31,0x95,0x8f,
0xa4,0x85,0x02,0x03,0x01,0x00,0x01,0xa3,0x1f,0x30,0x1d,0x30,
0x00,0x30,0x82,0x01,0x0a,0x02,0x82,0x01,0x01,0x00,0x8c,0x99,
0xbc,0xab,0x40,0xf5,0xdb,0xd8,0x44,0x9f,0xa8,0xec,0x3d,0x28,
0xf1,0x37,0x64,0xd9,0x19,0x6c,0xe0,0x71,0xa9,0xda,0x02,0xb7,
0x99,0xa3,0x23,0xa1,0x78,0x59,0x02,0x72,0x30,0x91,0x27,0x0d,
0x60,0x32,0x3a,0x2f,0xc5,0x4d,0x2d,0xf2,0xfd,0x60,0xb5,0xfe,
0x9c,0xb5,0x96,0xbd,0xfe,0x8d,0xb7,0xd4,0x0e,0x31,0xed,0x87,
0x92,0x37,0xb3,0xbd,0x11,0xda,0x43,0xc4,0xc0,0xe8,0xee,0x42,
0x4a,0x92,0xb6,0x3f,0x8b,0x2d,0xde,0x4d,0xa6,0x5e,0xfd,0x2a,
0x37,0x70,0x59,0x93,0xe9,0xe0,0xca,0x1a,0xa7,0xa6,0xea,0xc6,
0x66,0xae,0x6e,0xba,0x43,0x30,0x28,0x6c,0x25,0x97,0xe7,0x71,
0x8a,0xc6,0x5f,0xb3,0x1c,0x31,0x4c,0x77,0x0d,0xac,0xd3,0xae,
0xa6,0x6f,0x7f,0x9f,0x19,0xda,0xc5,0x1a,0xb2,0x11,0x04,0xb4,
0xb5,0x8f,0x0a,0x47,0x2d,0x27,0x63,0xa5,0x3f,0xf9,0x65,0x21,
0xa8,0xc8,0x35,0xa7,0xdc,0xcd,0x17,0xa8,0x53,0xe0,0xfb,0x89,
0x39,0xa9,0x67,0x36,0x3f,0x35,0xc7,0x49,0x54,0xa1,0xc9,0x58,
0xec,0x9f,0x50,0x9d,0xeb,0x1d,0xcd,0x66,0x9c,0x41,0x8d,0xbf,
0x05,0xbb,0x95,0x77,0xdf,0x0a,0xf7,0x18,0xc5,0x3c,0xba,0xc3,
0x68,0xd4,0x04,0xcf,0xbe,0xc6,0x30,0xef,0x79,0xac,0x42,0xd0,
0x89,0x42,0xc9,0x27,0x9f,0x04,0xac,0xd8,0x18,0xa7,0x00,0x2e,
0x3b,0x6a,0x7a,0x91,0x9c,0xee,0x3b,0xd8,0x26,0xc8,0x96,0xc0,
0xdd,0xe9,0x69,0x91,0x0a,0x24,0x9e,0x0d,0x1b,0x01,0x0e,0x2f,
0xe2,0x47,0x35,0x16,0x24,0x04,0xc2,0x7e,0xcb,0x62,0x5d,0x23,
0xc8,0xd7,0x02,0x03,0x01,0x00,0x01,0xa3,0x1f,0x30,0x1d,0x30,
0x1b,0x06,0x03,0x55,0x1d,0x11,0x04,0x14,0x30,0x12,0x82,0x10,
0x6c,0x65,0x61,0x66,0x2e,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,
0x2e,0x63,0x6f,0x6d,0x30,0x0d,0x06,0x09,0x2a,0x86,0x48,0x86,
0xf7,0x0d,0x01,0x01,0x0b,0x05,0x00,0x03,0x82,0x01,0x01,0x00,
0xb5,0xb0,0xfb,0xf6,0xb6,0x5c,0x1c,0xfa,0xcc,0xf9,0xcb,0x81,
0xc0,0xa6,0x12,0x5f,0xe7,0xb4,0x12,0x31,0x22,0x93,0xd8,0xcd,
0x98,0xc9,0x7a,0xbe,0xeb,0x1f,0x95,0x42,0x59,0x1c,0x38,0xe9,
0x0a,0x44,0x5d,0x85,0x92,0x9e,0xbc,0xdf,0x51,0x72,0x2c,0xe8,
0xbb,0xd8,0x55,0x16,0xcf,0xd6,0xe1,0xed,0x39,0x91,0x44,0x91,
0xc7,0x9e,0xa7,0x53,0x0a,0xe2,0x60,0x57,0xdb,0xee,0x9e,0xd4,
0xa5,0x75,0x59,0x92,0xa3,0xb1,0xb3,0xfc,0xaf,0x35,0x32,0xe0,
0xba,0xec,0xff,0xd5,0x4a,0x44,0x33,0x63,0xb8,0xbc,0x27,0x16,
0x4e,0xb7,0x5e,0xaa,0xb3,0xa9,0xb2,0x06,0x14,0x4f,0xa1,0x65,
0xc4,0x8e,0x0f,0x4a,0x46,0x2f,0xbb,0xed,0xb0,0x73,0xd6,0x8d,
0x96,0x23,0x92,0xbe,0xe8,0x55,0xac,0x6a,0xbc,0xb7,0x70,0xbd,
0x64,0xa5,0xe4,0xf4,0xf0,0x1a,0xd8,0xba,0xf1,0x4f,0x8e,0x8b,
0x64,0x6f,0x4e,0xf1,0x60,0xe5,0xd3,0x5a,0x4f,0x9c,0xd8,0x01,
0x72,0xc8,0x5e,0x70,0x7f,0x13,0xf0,0x0c,0x94,0x27,0x65,0x3e,
0xe0,0x07,0x02,0x4a,0x14,0x67,0x02,0x9d,0xbc,0x38,0xc7,0x9b,
0xf0,0x70,0xf5,0x87,0x2e,0x1b,0xaf,0xe1,0x81,0xeb,0x20,0xac,
0xd1,0x34,0x0e,0x20,0x42,0xa4,0xe7,0xeb,0x0a,0x75,0x3d,0x94,
0x48,0x48,0x69,0x81,0xf8,0x1f,0x36,0x0a,0xdf,0xd5,0xd8,0xec,
0x1d,0x76,0xa3,0xda,0x02,0xad,0xe0,0x31,0xa1,0xa0,0x4e,0xe8,
0xe7,0x67,0xdf,0x1b,0x95,0x93,0x2d,0x01,0x5b,0x4a,0x5b,0xd6,
0x60,0xdc,0xbf,0x96,0x09,0x28,0x0c,0x91,0xe0,0x09,0x71,0xfd,
0xf7,0x24,0x40,0xd3,
0x89,0xfa,0x37,0x92,0x69,0x02,0xad,0xad,0x6c,0x7f,0xa1,0xd3,
0x0a,0x0d,0x3d,0xf8,0x02,0xe9,0x31,0xbb,0x8d,0x6b,0x30,0x33,
0xa1,0x7a,0xd0,0x26,0xb7,0x8a,0x18,0xcd,0xa7,0xaf,0x48,0x10,
0x1a,0xa3,0x2d,0x7f,0x8e,0x9f,0x89,0x0b,0xf0,0xc1,0x03,0xc7,
0x29,0x6e,0xd5,0xf3,0x49,0x5b,0xfc,0xfd,0xe4,0x1f,0xf4,0x1d,
0x5a,0xa9,0x0b,0xef,0x0e,0x05,0x60,0x93,0x94,0xa3,0x95,0x51,
0xb6,0x9e,0xf6,0x40,0x13,0x37,0x0b,0xdc,0xa5,0xf9,0xee,0x90,
0xdb,0xe3,0xe1,0x9c,0x74,0x45,0x84,0xa6,0x54,0x1a,0x64,0x09,
0x62,0x6a,0xb7,0xe9,0x26,0x2a,0x23,0xcc,0x9d,0xd8,0xd6,0xc9,
0x4d,0x46,0xd5,0xa7,0x95,0xad,0xf4,0x8c,0xc9,0xcc,0x91,0x65,
0x1b,0x29,0xa7,0xa1,0x98,0x70,0x14,0x26,0xc9,0x36,0xe9,0xe3,
0xfe,0x6a,0x54,0x0e,0x42,0xa2,0x88,0x24,0xbb,0x37,0xd0,0xf6,
0xff,0x21,0xc8,0xdc,0xa8,0x85,0x9f,0x95,0xf4,0xa7,0x72,0x18,
0x74,0xb8,0x73,0x31,0xb2,0x25,0xec,0xb5,0xec,0x19,0x08,0x9e,
0x6d,0xaa,0x86,0x17,0xb7,0xdf,0x2c,0xb3,0x0b,0xab,0x25,0x57,
0x89,0xf3,0xb1,0xf1,0x75,0xa0,0x99,0x03,0xe1,0xa2,0xb6,0x93,
0xaf,0x4d,0xc3,0x76,0x2e,0x59,0x12,0x50,0xd1,0xbb,0xae,0x1b,
0x37,0x6a,0x35,0xab,0x40,0x6e,0x45,0xb5,0x1b,0xc8,0xb7,0x9a,
0x44,0x9f,0x4a,0x21,0xf6,0x09,0x4b,0x08,0xac,0xd7,0x38,0x96,
0xe7,0xb5,0xf5,0x52,0xce,0xde,0xed,0xcd,0xcb,0xae,0x2c,0x76,
0xef,0x5e,0x5a,0x52,0x5c,0xbe,0x22,0x43,0x50,0xf7,0xa7,0xcf,
0xd4,0xd6,0xfb,0x35,
};
static const uint8_t kat_ec_ca[] = {
0x30,0x82,0x01,0x3a,0x30,0x81,0xe1,0xa0,0x03,0x02,0x01,0x02,
0x02,0x14,0x15,0x18,0x99,0x87,0xb5,0xee,0xa4,0x33,0x55,0x4f,
0x83,0x91,0x2d,0xdd,0xa7,0x30,0x19,0xa9,0xfa,0x12,0x30,0x0a,
0x30,0x82,0x01,0x39,0x30,0x81,0xe1,0xa0,0x03,0x02,0x01,0x02,
0x02,0x14,0x6d,0xeb,0x5e,0x17,0xc5,0xcd,0x71,0x0e,0xc5,0x53,
0x39,0xe9,0xde,0x2e,0xe1,0xc6,0x3c,0x1b,0x31,0xc1,0x30,0x0a,
0x06,0x08,0x2a,0x86,0x48,0xce,0x3d,0x04,0x03,0x02,0x30,0x13,
0x31,0x11,0x30,0x0f,0x06,0x03,0x55,0x04,0x03,0x0c,0x08,0x77,
0x6f,0x2d,0x65,0x63,0x2d,0x63,0x61,0x30,0x1e,0x17,0x0d,0x32,
@ -142,27 +143,27 @@ static const uint8_t kat_ec_ca[] = {
0x04,0x03,0x0c,0x08,0x77,0x6f,0x2d,0x65,0x63,0x2d,0x63,0x61,
0x30,0x59,0x30,0x13,0x06,0x07,0x2a,0x86,0x48,0xce,0x3d,0x02,
0x01,0x06,0x08,0x2a,0x86,0x48,0xce,0x3d,0x03,0x01,0x07,0x03,
0x42,0x00,0x04,0x0b,0xfc,0x3f,0x30,0x5a,0x4d,0x6a,0x2c,0x7f,
0x37,0xab,0x50,0x56,0xc7,0xf5,0xcd,0x44,0x07,0xb8,0xbf,0xd0,
0xe6,0xff,0x3e,0x3d,0x50,0x13,0xcf,0xbc,0x2b,0x1b,0xff,0xde,
0xaf,0x80,0x84,0x99,0x6d,0xc2,0x1e,0x46,0x7e,0x16,0x0a,0x2d,
0x9e,0x13,0xd9,0xfb,0x35,0x33,0x4b,0x59,0x35,0x16,0x96,0x9d,
0x35,0x9f,0x96,0x7f,0x79,0x07,0xb1,0xa3,0x13,0x30,0x11,0x30,
0x42,0x00,0x04,0x54,0xa0,0xe9,0x81,0xcf,0x9b,0x05,0xed,0x76,
0x2d,0x77,0xc7,0x84,0x0f,0xb6,0xfa,0x2e,0x65,0x87,0x65,0xb3,
0x25,0x0a,0xdb,0x22,0x77,0xe5,0x40,0xcc,0xf6,0x71,0x23,0x63,
0x1c,0xcd,0x69,0x40,0x26,0x70,0xec,0xfd,0x73,0xc6,0x9d,0xba,
0xfa,0xb1,0x39,0x9f,0x65,0x8b,0x0b,0xda,0xad,0x27,0xd5,0x0a,
0x0d,0x2e,0x14,0x76,0x7c,0x5a,0x57,0xa3,0x13,0x30,0x11,0x30,
0x0f,0x06,0x03,0x55,0x1d,0x13,0x01,0x01,0xff,0x04,0x05,0x30,
0x03,0x01,0x01,0xff,0x30,0x0a,0x06,0x08,0x2a,0x86,0x48,0xce,
0x3d,0x04,0x03,0x02,0x03,0x48,0x00,0x30,0x45,0x02,0x21,0x00,
0xf8,0x45,0x9e,0x09,0xb9,0xe7,0xcd,0xe8,0x06,0xe9,0xd9,0x59,
0xcc,0x32,0x38,0x82,0xd6,0x84,0x07,0x95,0xc5,0x2a,0x17,0x03,
0x51,0xd8,0xb8,0xa0,0xd9,0x49,0x5c,0x90,0x02,0x20,0x36,0x9a,
0x8a,0x32,0x27,0xe5,0x47,0xf1,0x7c,0x06,0xb1,0xd1,0x5f,0xc7,
0xe1,0x00,0x68,0xe4,0x80,0xe1,0x14,0xea,0xbb,0x57,0x60,0xfc,
0xfa,0xb5,0xd2,0xe0,0x5d,0xcb,
0x3d,0x04,0x03,0x02,0x03,0x47,0x00,0x30,0x44,0x02,0x20,0x7a,
0xb6,0x32,0xc6,0x2f,0xcd,0x45,0x2d,0x53,0xa9,0xf3,0x3d,0x7a,
0x43,0xde,0x0e,0xcd,0x65,0xf2,0xf3,0x4a,0x31,0x51,0xdb,0xc4,
0x40,0x5d,0x15,0x03,0x2a,0xd5,0x6c,0x02,0x20,0x41,0x49,0x24,
0xa2,0x09,0xa1,0x70,0xef,0x8d,0x62,0xb4,0xb9,0x32,0xd6,0x03,
0x27,0x74,0xdb,0x9c,0x24,0x12,0x0f,0x97,0x92,0x38,0x2c,0xbc,
0x18,0xd6,0x09,0xf8,0x55,
};
static const uint8_t kat_ec_leaf[] = {
0x30,0x82,0x01,0x4e,0x30,0x81,0xf5,0xa0,0x03,0x02,0x01,0x02,
0x02,0x14,0x21,0xcc,0xa6,0xdd,0x2d,0x8a,0xb5,0xf6,0xf6,0x5e,
0x26,0x25,0x9d,0x7f,0xef,0x1b,0xf5,0xe7,0xc7,0x97,0x30,0x0a,
0x30,0x82,0x01,0x4f,0x30,0x81,0xf5,0xa0,0x03,0x02,0x01,0x02,
0x02,0x14,0x59,0x4f,0x09,0x91,0xb7,0x80,0xac,0x50,0x56,0xa9,
0x4d,0x27,0x88,0x8e,0x6a,0xe2,0x08,0x33,0x46,0xd7,0x30,0x0a,
0x06,0x08,0x2a,0x86,0x48,0xce,0x3d,0x04,0x03,0x02,0x30,0x13,
0x31,0x11,0x30,0x0f,0x06,0x03,0x55,0x04,0x03,0x0c,0x08,0x77,
0x6f,0x2d,0x65,0x63,0x2d,0x63,0x61,0x30,0x1e,0x17,0x0d,0x32,
@ -172,31 +173,30 @@ static const uint8_t kat_ec_leaf[] = {
0x04,0x03,0x0c,0x10,0x6c,0x65,0x61,0x66,0x2e,0x65,0x78,0x61,
0x6d,0x70,0x6c,0x65,0x2e,0x6f,0x72,0x67,0x30,0x59,0x30,0x13,
0x06,0x07,0x2a,0x86,0x48,0xce,0x3d,0x02,0x01,0x06,0x08,0x2a,
0x86,0x48,0xce,0x3d,0x03,0x01,0x07,0x03,0x42,0x00,0x04,0xc5,
0xb1,0x2b,0x08,0x10,0xdf,0x26,0x4a,0xd8,0x1d,0x2f,0x43,0x89,
0xca,0xf5,0x8e,0x8a,0x0e,0xdd,0x39,0xbd,0x8e,0xe4,0x75,0x8e,
0x84,0x9a,0x77,0xd4,0xc5,0x51,0x16,0x46,0x9a,0x22,0x0b,0x2f,
0x0e,0x17,0xc7,0x56,0x3c,0xfe,0x38,0xd1,0xd4,0xc4,0x60,0xef,
0x87,0xb1,0x4a,0x34,0x34,0xc5,0xa8,0x2c,0x42,0x31,0xde,0xfb,
0x0c,0x0d,0x29,0xa3,0x1f,0x30,0x1d,0x30,0x1b,0x06,0x03,0x55,
0x86,0x48,0xce,0x3d,0x03,0x01,0x07,0x03,0x42,0x00,0x04,0xbf,
0x93,0x92,0xeb,0x65,0xfe,0xda,0x7d,0x92,0xed,0xe9,0x4f,0x93,
0x24,0xe1,0x38,0xfe,0x87,0x4b,0x0c,0x8c,0xf0,0x44,0xe4,0x95,
0x22,0x73,0x9a,0xdd,0x81,0x80,0xe4,0x7b,0x30,0x1a,0xae,0xa1,
0xfc,0xda,0xd3,0x40,0xc2,0x18,0xb0,0x8f,0x0e,0x77,0xf6,0xfe,
0x2e,0xb9,0x5c,0xc0,0x96,0xc1,0x90,0xda,0x14,0x2c,0x45,0x5f,
0x37,0x22,0xbd,0xa3,0x1f,0x30,0x1d,0x30,0x1b,0x06,0x03,0x55,
0x1d,0x11,0x04,0x14,0x30,0x12,0x82,0x10,0x6c,0x65,0x61,0x66,
0x2e,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x2e,0x6f,0x72,0x67,
0x30,0x0a,0x06,0x08,0x2a,0x86,0x48,0xce,0x3d,0x04,0x03,0x02,
0x03,0x48,0x00,0x30,0x45,0x02,0x20,0x08,0x96,0x01,0xfd,0x5e,
0x88,0x5d,0x9e,0x0a,0x6d,0xbd,0xcf,0xb7,0xe0,0x3f,0xc3,0xc4,
0xf1,0x6b,0x40,0xc9,0x7c,0x10,0x3f,0xdd,0x83,0x4b,0xca,0x5a,
0x60,0xdd,0x36,0x02,0x21,0x00,0x85,0x01,0x87,0x86,0xa5,0x6d,
0x05,0xc9,0x6f,0x42,0xb5,0xdf,0x7a,0xbb,0x32,0x06,0x08,0x75,
0x40,0x32,0xc2,0x33,0xe4,0x62,0xe5,0xd7,0x9c,0x39,0xee,0xd3,
0xc1,0x1c,
0x03,0x49,0x00,0x30,0x46,0x02,0x21,0x00,0xc0,0xd3,0x31,0x65,
0xef,0x46,0x0f,0x4e,0x58,0x29,0xd9,0x8f,0x9f,0x7c,0x30,0x22,
0x82,0x25,0x43,0x74,0xbd,0xe1,0xb0,0x42,0x88,0xf9,0xd5,0x91,
0x25,0x95,0x1b,0x44,0x02,0x21,0x00,0xd0,0x49,0x08,0x53,0x2a,
0x64,0x7b,0xac,0x5b,0xe0,0xad,0x4b,0xe5,0x76,0xc3,0x18,0x48,
0x5d,0x67,0x5e,0xe8,0x72,0x94,0x0f,0xf2,0x72,0x40,0x3f,0xa7,
0x40,0x52,0x28,
};
/* wildcard-SAN leaf (*.example.com) for the hostname-match KAT */
/* wildcard-SAN leaf (*.example.com) */
static const uint8_t kat_wild_leaf[] = {
0x30,0x82,0x01,0x3a,0x30,0x81,0xe2,0xa0,0x03,0x02,0x01,0x02,
0x02,0x14,0x7e,0x22,0xf7,0xef,0x7a,0x6b,0x37,0xb4,0x70,0xeb,
0x2b,0xb6,0x91,0xae,0xa1,0xe5,0x34,0x8c,0x4b,0x3c,0x30,0x0a,
0x30,0x82,0x01,0x3b,0x30,0x81,0xe2,0xa0,0x03,0x02,0x01,0x02,
0x02,0x14,0x58,0x16,0x66,0x46,0x0e,0xb4,0xd8,0xad,0x91,0xe0,
0x8a,0x7a,0x9c,0x02,0x22,0x49,0x79,0xd6,0x0a,0x97,0x30,0x0a,
0x06,0x08,0x2a,0x86,0x48,0xce,0x3d,0x04,0x03,0x02,0x30,0x0f,
0x31,0x0d,0x30,0x0b,0x06,0x03,0x55,0x04,0x03,0x0c,0x04,0x77,
0x69,0x6c,0x64,0x30,0x1e,0x17,0x0d,0x32,0x30,0x30,0x31,0x30,
@ -205,20 +205,287 @@ static const uint8_t kat_wild_leaf[] = {
0x0f,0x31,0x0d,0x30,0x0b,0x06,0x03,0x55,0x04,0x03,0x0c,0x04,
0x77,0x69,0x6c,0x64,0x30,0x59,0x30,0x13,0x06,0x07,0x2a,0x86,
0x48,0xce,0x3d,0x02,0x01,0x06,0x08,0x2a,0x86,0x48,0xce,0x3d,
0x03,0x01,0x07,0x03,0x42,0x00,0x04,0xf5,0x4c,0xa6,0x77,0x22,
0x89,0x33,0xab,0x6c,0x84,0xd0,0x0a,0x2c,0x16,0x68,0x1e,0x3f,
0xb4,0x44,0xe9,0x69,0x71,0x2a,0x1b,0x79,0xd3,0xa9,0x40,0xcb,
0xc3,0x4f,0xd8,0x29,0x7c,0x85,0xd3,0xf9,0x9e,0x9c,0x42,0x8c,
0x99,0x2e,0xee,0x93,0x26,0xfe,0x9e,0xd0,0x9b,0x75,0x19,0x7a,
0x1a,0xc9,0x2a,0x12,0x8d,0x9d,0x19,0xb9,0x43,0x31,0x0c,0xa3,
0x03,0x01,0x07,0x03,0x42,0x00,0x04,0x4f,0xe9,0xf4,0xe6,0x8f,
0x1c,0x1a,0x31,0xb9,0xc9,0x02,0x5f,0x86,0x60,0x34,0x44,0x4a,
0x4f,0x20,0x00,0xac,0x1d,0xfd,0x4b,0x77,0x08,0x38,0xb0,0xe6,
0xd5,0x17,0xf7,0xd3,0x8a,0x8e,0x2d,0xd3,0xf1,0xa9,0xd9,0x16,
0x9b,0x6b,0x4b,0x77,0xdc,0xc1,0xd1,0x3f,0x4e,0x21,0x8c,0x2b,
0x23,0x3b,0x0c,0x11,0x62,0xb2,0xd6,0x5a,0x41,0xaa,0xbd,0xa3,
0x1c,0x30,0x1a,0x30,0x18,0x06,0x03,0x55,0x1d,0x11,0x04,0x11,
0x30,0x0f,0x82,0x0d,0x2a,0x2e,0x65,0x78,0x61,0x6d,0x70,0x6c,
0x65,0x2e,0x63,0x6f,0x6d,0x30,0x0a,0x06,0x08,0x2a,0x86,0x48,
0xce,0x3d,0x04,0x03,0x02,0x03,0x47,0x00,0x30,0x44,0x02,0x20,
0x44,0x88,0xdd,0xd7,0x3b,0x8b,0xe8,0xaf,0xd5,0xc0,0xf0,0xc3,
0x86,0xc2,0xf8,0xfa,0x6c,0x23,0x0c,0xdd,0x17,0xcc,0x13,0xb4,
0xe7,0xa3,0x01,0x92,0xce,0xe3,0x9f,0xf6,0x02,0x20,0x11,0x8d,
0x50,0xab,0xde,0x45,0xb0,0xf8,0x34,0x6f,0xbd,0xa6,0x28,0xd3,
0x4f,0x23,0x67,0x58,0xb0,0x41,0x6e,0x31,0xcf,0x59,0xad,0x5b,
0xef,0x49,0x24,0x3e,0x92,0xa3,
0xce,0x3d,0x04,0x03,0x02,0x03,0x48,0x00,0x30,0x45,0x02,0x21,
0x00,0xfc,0x16,0x8c,0xc4,0x4e,0x11,0x2b,0x04,0xe5,0x48,0x9e,
0x55,0x86,0x02,0x3d,0x9f,0x44,0x71,0xf2,0x05,0x17,0x03,0x78,
0x59,0x11,0x21,0x5a,0xf2,0xa4,0x33,0x77,0x03,0x02,0x20,0x71,
0x26,0x9e,0x5b,0xc1,0x0c,0xaf,0x8c,0x9a,0x73,0x7a,0xa0,0x95,
0xab,0x3a,0x5b,0x30,0x3a,0x72,0x10,0x60,0x42,0x46,0x45,0x96,
0xad,0x8b,0xce,0xfd,0xf1,0x7d,0x5f,
};
/* EKU clientAuth only -> reject as server */
static const uint8_t kat_leaf_eku_client[] = {
0x30,0x82,0x02,0xf1,0x30,0x82,0x01,0xd9,0xa0,0x03,0x02,0x01,
0x02,0x02,0x14,0x47,0xc7,0xab,0xfa,0x4c,0xe6,0xcf,0xc3,0x90,
0xb9,0xef,0x21,0x94,0x33,0x7b,0x6b,0x26,0x2b,0x40,0x3e,0x30,
0x0d,0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,0x0b,
0x05,0x00,0x30,0x14,0x31,0x12,0x30,0x10,0x06,0x03,0x55,0x04,
0x03,0x0c,0x09,0x77,0x6f,0x2d,0x72,0x73,0x61,0x2d,0x63,0x61,
0x30,0x1e,0x17,0x0d,0x32,0x30,0x30,0x31,0x30,0x31,0x30,0x30,
0x30,0x30,0x30,0x30,0x5a,0x17,0x0d,0x33,0x30,0x30,0x31,0x30,
0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x5a,0x30,0x1b,0x31,0x19,
0x30,0x17,0x06,0x03,0x55,0x04,0x03,0x0c,0x10,0x6c,0x65,0x61,
0x66,0x2e,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x2e,0x63,0x6f,
0x6d,0x30,0x82,0x01,0x22,0x30,0x0d,0x06,0x09,0x2a,0x86,0x48,
0x86,0xf7,0x0d,0x01,0x01,0x01,0x05,0x00,0x03,0x82,0x01,0x0f,
0x00,0x30,0x82,0x01,0x0a,0x02,0x82,0x01,0x01,0x00,0xa8,0x81,
0xf1,0x0e,0xdf,0x5e,0x52,0xc5,0x50,0x9d,0x35,0xeb,0xdd,0x6e,
0x1b,0xae,0xc1,0x07,0x79,0x4c,0x4e,0xb5,0xf8,0x88,0x7c,0xbd,
0x16,0x5d,0x41,0x23,0x58,0x98,0x1b,0xa8,0xde,0x35,0x4e,0xbf,
0xe0,0x65,0x6b,0x4d,0x29,0xa4,0xb5,0xbc,0x82,0xb6,0x79,0x7b,
0xc8,0x36,0x1c,0x4d,0x7b,0xcd,0x40,0x94,0x52,0x32,0xba,0x15,
0x1d,0x75,0xcb,0x12,0x70,0xa2,0x8c,0x52,0xd2,0xf3,0xa6,0xed,
0x51,0xc0,0x22,0x19,0xc5,0x17,0x90,0xe1,0x78,0x83,0x16,0x96,
0x42,0xb8,0xc6,0x51,0xca,0xec,0x7b,0x6d,0x81,0x85,0x44,0x41,
0xbc,0xa5,0x4b,0x19,0xda,0xe2,0x4d,0x45,0xaf,0x4a,0x45,0x2b,
0xda,0x36,0x1d,0x7b,0x59,0x8c,0xa5,0xe8,0xd0,0x2e,0xd3,0x96,
0x57,0x13,0x48,0x98,0xd0,0x70,0xf8,0x99,0xa1,0x81,0xee,0x29,
0x95,0xea,0xad,0xba,0xcc,0xb6,0x43,0x14,0x7b,0xf8,0x6b,0xb4,
0xfb,0x5a,0x02,0x6c,0x97,0x95,0x3c,0xf6,0xf9,0x50,0xdf,0x7a,
0xdc,0x0a,0x59,0x17,0xf8,0x73,0x33,0x5f,0x4a,0xd0,0x25,0x6d,
0x11,0xb2,0x58,0x52,0x76,0xaa,0xf0,0x8e,0x75,0x97,0xbb,0xc1,
0x76,0xd9,0xfe,0xa9,0xe9,0xd9,0x89,0xb9,0x35,0xdd,0x25,0xc8,
0x27,0x89,0xa4,0x5b,0x46,0x34,0x08,0xe0,0x87,0xc1,0x3d,0xaa,
0x6f,0xe5,0xcb,0xc6,0x30,0x30,0x5c,0xcf,0x24,0x8c,0x9c,0x47,
0x4f,0x29,0x45,0x53,0x1b,0xed,0xb2,0xcf,0x90,0x92,0xcb,0xfa,
0xf4,0x15,0x41,0x4e,0x16,0x69,0xbd,0x0e,0xcd,0x5a,0x15,0x26,
0xa4,0x32,0x26,0xbb,0xce,0x09,0x94,0xd6,0x86,0x93,0xf1,0xcf,
0xef,0x61,0x02,0x03,0x01,0x00,0x01,0xa3,0x34,0x30,0x32,0x30,
0x1b,0x06,0x03,0x55,0x1d,0x11,0x04,0x14,0x30,0x12,0x82,0x10,
0x6c,0x65,0x61,0x66,0x2e,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,
0x2e,0x63,0x6f,0x6d,0x30,0x13,0x06,0x03,0x55,0x1d,0x25,0x04,
0x0c,0x30,0x0a,0x06,0x08,0x2b,0x06,0x01,0x05,0x05,0x07,0x03,
0x02,0x30,0x0d,0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,
0x01,0x0b,0x05,0x00,0x03,0x82,0x01,0x01,0x00,0x95,0xe3,0x4c,
0xd2,0x69,0x63,0x3a,0x51,0x69,0x28,0xb8,0xeb,0x88,0x69,0x00,
0xb4,0x12,0xc0,0x49,0xa6,0x93,0x31,0xea,0xdb,0x57,0x3f,0x76,
0xf6,0x43,0x6d,0x9f,0xe9,0x95,0x36,0xd6,0x8d,0x67,0x1b,0x69,
0x30,0x9b,0x0f,0x62,0x42,0x28,0x2e,0x6f,0x80,0xa3,0xd9,0xbd,
0x9d,0xbd,0x22,0x7d,0x49,0x5d,0x3a,0x98,0x0c,0x16,0x63,0x00,
0x63,0x00,0xd5,0x97,0xf6,0x1d,0x10,0xed,0xa8,0xb3,0x40,0x86,
0x5c,0xcf,0x0f,0x78,0x4a,0xce,0x95,0x1b,0x13,0x7c,0x3f,0x73,
0x2a,0x38,0x08,0xd0,0xb3,0x6f,0x64,0x79,0xbd,0x1c,0x36,0xee,
0x56,0xff,0xfa,0xf8,0xf3,0xe1,0xb4,0x7c,0xab,0x27,0x16,0x98,
0x19,0x1d,0x82,0xb4,0xe0,0x07,0xfd,0x10,0x06,0xa6,0x0b,0xa5,
0x0a,0x77,0x5a,0xec,0xd8,0xc3,0x61,0xde,0xfc,0x64,0x26,0x05,
0xe9,0x2c,0x83,0xec,0x88,0x30,0x36,0xd5,0x59,0xf4,0x35,0x8c,
0x74,0x7b,0xde,0xab,0x21,0xd5,0x35,0xaf,0x73,0x8c,0x3d,0x1c,
0x89,0xb7,0x7e,0x82,0xfb,0xeb,0xff,0x55,0x6d,0x77,0x30,0xb6,
0xae,0x0f,0x80,0xfe,0xf0,0x11,0x3d,0x97,0x19,0x3d,0x2c,0x77,
0x2b,0x87,0x91,0xe2,0x67,0x94,0x33,0x4f,0x00,0x94,0xb1,0xd3,
0x1a,0xeb,0x82,0x8d,0x67,0xea,0xf2,0xbe,0xb6,0x43,0x5c,0x64,
0x62,0x27,0x88,0xa4,0x58,0xbc,0x39,0x5d,0xd3,0x3b,0x38,0x97,
0xc7,0x24,0xea,0xc5,0x63,0x47,0xab,0x0c,0xa4,0xc8,0xf0,0x70,
0x5e,0x7f,0x49,0x71,0xb3,0xdc,0x95,0x0a,0xcd,0xbf,0xc8,0x46,
0xdf,0x81,0x5a,0xdf,0x8f,0x85,0x10,0x3d,0x22,0x3b,0x1a,0xf6,
0x40,
};
/* EKU serverAuth -> accept */
static const uint8_t kat_leaf_eku_server[] = {
0x30,0x82,0x02,0xf1,0x30,0x82,0x01,0xd9,0xa0,0x03,0x02,0x01,
0x02,0x02,0x14,0x7c,0x5d,0x5b,0x29,0x2a,0xdf,0x2c,0x34,0x3b,
0x2e,0x5b,0x9a,0x0e,0x38,0x03,0x93,0xaa,0x2a,0x7f,0xbc,0x30,
0x0d,0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,0x0b,
0x05,0x00,0x30,0x14,0x31,0x12,0x30,0x10,0x06,0x03,0x55,0x04,
0x03,0x0c,0x09,0x77,0x6f,0x2d,0x72,0x73,0x61,0x2d,0x63,0x61,
0x30,0x1e,0x17,0x0d,0x32,0x30,0x30,0x31,0x30,0x31,0x30,0x30,
0x30,0x30,0x30,0x30,0x5a,0x17,0x0d,0x33,0x30,0x30,0x31,0x30,
0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x5a,0x30,0x1b,0x31,0x19,
0x30,0x17,0x06,0x03,0x55,0x04,0x03,0x0c,0x10,0x6c,0x65,0x61,
0x66,0x2e,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x2e,0x63,0x6f,
0x6d,0x30,0x82,0x01,0x22,0x30,0x0d,0x06,0x09,0x2a,0x86,0x48,
0x86,0xf7,0x0d,0x01,0x01,0x01,0x05,0x00,0x03,0x82,0x01,0x0f,
0x00,0x30,0x82,0x01,0x0a,0x02,0x82,0x01,0x01,0x00,0xa0,0xce,
0xf7,0x51,0xa1,0x8d,0x86,0x39,0xab,0x32,0x91,0x97,0x59,0xca,
0xe9,0x8d,0x92,0x5f,0xb0,0xe4,0xf0,0x96,0x8e,0x07,0x91,0xf6,
0xe2,0x8e,0xf7,0xc4,0xdf,0x3e,0x52,0xed,0x0f,0x9e,0x47,0xc8,
0xde,0xfa,0x98,0xcf,0x88,0x9f,0x0d,0x06,0x13,0x4d,0xe2,0x1b,
0xb2,0x02,0xb4,0x1b,0x01,0x15,0xa1,0x35,0xc1,0x68,0x60,0x3f,
0x8d,0x3e,0xc8,0x69,0xf8,0x16,0x9f,0xa0,0xe8,0x19,0x63,0xbd,
0x6e,0xb9,0x13,0x7e,0xa5,0x5d,0x81,0xa3,0x4a,0x17,0xd2,0x12,
0x2d,0xbb,0xa2,0x9c,0xae,0xf3,0x8c,0x5d,0x00,0xf3,0x69,0x6d,
0x9f,0x52,0x2f,0x1d,0xc7,0x54,0xf1,0xd1,0xbc,0xe6,0xc7,0x1f,
0x1e,0x0b,0xc2,0x9e,0x67,0x62,0xaa,0xa9,0xff,0xf1,0xea,0xaa,
0x6c,0x76,0x64,0xc8,0xea,0x91,0xfd,0xc6,0x67,0xfe,0x53,0xcb,
0xdb,0x38,0x99,0x8a,0xe7,0x46,0xce,0xba,0x24,0xfc,0xfb,0x3f,
0x62,0x53,0xab,0xb1,0x5a,0xa2,0x10,0x87,0x98,0x85,0x04,0x05,
0x96,0x73,0x26,0x4a,0xbb,0x48,0xec,0xfe,0x30,0xf5,0x59,0xcf,
0x98,0xfe,0xc3,0x2d,0x55,0xcb,0xde,0xeb,0x1b,0x77,0x58,0x0f,
0xbc,0x1b,0x8c,0x5f,0x9a,0x2d,0xab,0x9c,0x94,0xec,0x63,0xbc,
0xba,0xdc,0xfa,0xdb,0x70,0xa4,0x80,0x77,0x1d,0x27,0x7f,0x8c,
0xc0,0x05,0xea,0x28,0x29,0xbc,0x02,0xd0,0xc9,0x62,0x3a,0x70,
0x68,0x40,0x91,0xa4,0x3e,0xa3,0xc3,0xcf,0x78,0x4a,0x03,0xd1,
0x2b,0xb7,0x5f,0x09,0x4a,0x61,0x66,0x7d,0x16,0xa6,0xd7,0x2f,
0x88,0xdf,0x12,0x58,0x4b,0x8f,0xd7,0x19,0x73,0x62,0x7b,0xb0,
0xfe,0xa1,0x02,0x03,0x01,0x00,0x01,0xa3,0x34,0x30,0x32,0x30,
0x1b,0x06,0x03,0x55,0x1d,0x11,0x04,0x14,0x30,0x12,0x82,0x10,
0x6c,0x65,0x61,0x66,0x2e,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,
0x2e,0x63,0x6f,0x6d,0x30,0x13,0x06,0x03,0x55,0x1d,0x25,0x04,
0x0c,0x30,0x0a,0x06,0x08,0x2b,0x06,0x01,0x05,0x05,0x07,0x03,
0x01,0x30,0x0d,0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,
0x01,0x0b,0x05,0x00,0x03,0x82,0x01,0x01,0x00,0x3e,0x35,0x60,
0x48,0x47,0xa6,0x6e,0x9e,0xb2,0x13,0x76,0x50,0xdb,0x48,0xb3,
0x51,0xc0,0x40,0xe1,0x43,0xe3,0xdd,0x1d,0x2f,0xe6,0x23,0xfe,
0x17,0xea,0x4d,0x53,0x17,0x39,0x54,0xc2,0xd5,0xdf,0x42,0xe3,
0x7e,0x41,0xcc,0x5e,0xf7,0x84,0x8a,0xfc,0xcf,0xa1,0xc5,0x2c,
0xba,0x75,0x01,0x09,0x7c,0x9c,0x15,0x19,0xfa,0x69,0x7a,0x4b,
0x58,0x12,0xcb,0xa1,0xc8,0x6f,0x10,0xf9,0xb9,0x76,0x13,0x07,
0xcd,0x28,0x4f,0x43,0x38,0x88,0xe7,0xa3,0xd9,0xef,0xcf,0xab,
0xef,0x8a,0x00,0x81,0x67,0xdd,0x6b,0x34,0xe0,0xad,0x40,0x05,
0x31,0xa8,0xf3,0xf6,0x01,0xda,0xc0,0xf3,0x01,0x63,0x8f,0xf7,
0xf2,0x89,0xbf,0x04,0xb4,0xa2,0xa2,0x96,0x92,0x4c,0x8b,0x48,
0x23,0x08,0xee,0x39,0x65,0xa4,0xb7,0x03,0xb1,0x84,0x03,0x56,
0xd0,0x15,0x54,0x41,0x6e,0x67,0xf7,0x1c,0x00,0x61,0xb3,0xd3,
0xe8,0x6b,0x8f,0xb1,0xe7,0xa9,0x60,0x55,0xa7,0x57,0x7a,0xa0,
0xac,0x2f,0xfd,0xcd,0xcd,0x10,0x34,0xf3,0x0f,0xff,0xe1,0x21,
0xa8,0x9e,0xd6,0xd6,0x41,0xb2,0x5b,0xbd,0x76,0x01,0xe8,0x45,
0x90,0x0d,0xec,0xf1,0xc9,0x9b,0x1d,0x06,0xf5,0x61,0xf3,0x8f,
0x31,0xce,0xc2,0x86,0xa4,0xb5,0x36,0xef,0x90,0x7f,0x82,0x44,
0xef,0x30,0x5e,0x71,0x2e,0x53,0xb2,0xa1,0xcc,0x0e,0xc6,0x1f,
0x74,0xa5,0x54,0x7c,0x63,0x41,0xb8,0xb2,0x66,0x13,0x88,0x12,
0xb0,0xf5,0x8c,0x3a,0x9d,0xaa,0xb0,0xdd,0xd9,0x24,0xcf,0xa1,
0xa5,0xc4,0x58,0x14,0x9e,0x2b,0x3f,0x6c,0xc5,0xeb,0x6d,0x83,
0x27,
};
/* intermediate with basicConstraints CA:FALSE */
static const uint8_t kat_noca_mid[] = {
0x30,0x82,0x02,0xc8,0x30,0x82,0x01,0xb0,0xa0,0x03,0x02,0x01,
0x02,0x02,0x14,0x18,0x4a,0x73,0x07,0xf4,0x7a,0xfc,0xce,0xd0,
0x88,0x50,0x52,0x92,0x04,0x31,0x1b,0x6a,0x9f,0xbe,0x8d,0x30,
0x0d,0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,0x0b,
0x05,0x00,0x30,0x14,0x31,0x12,0x30,0x10,0x06,0x03,0x55,0x04,
0x03,0x0c,0x09,0x77,0x6f,0x2d,0x72,0x73,0x61,0x2d,0x63,0x61,
0x30,0x1e,0x17,0x0d,0x32,0x30,0x30,0x31,0x30,0x31,0x30,0x30,
0x30,0x30,0x30,0x30,0x5a,0x17,0x0d,0x33,0x30,0x30,0x31,0x30,
0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x5a,0x30,0x16,0x31,0x14,
0x30,0x12,0x06,0x03,0x55,0x04,0x03,0x0c,0x0b,0x77,0x6f,0x2d,
0x6e,0x6f,0x63,0x61,0x2d,0x6d,0x69,0x64,0x30,0x82,0x01,0x22,
0x30,0x0d,0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,
0x01,0x05,0x00,0x03,0x82,0x01,0x0f,0x00,0x30,0x82,0x01,0x0a,
0x02,0x82,0x01,0x01,0x00,0xa4,0xe1,0x0c,0xe6,0x7a,0xf9,0x21,
0x44,0xfd,0x40,0x66,0xaf,0x51,0x42,0x51,0x71,0x1a,0x37,0x34,
0xf3,0xfb,0x73,0x7f,0x7e,0x52,0xeb,0x9b,0xb9,0x8a,0x1c,0x0f,
0xcf,0x5e,0x20,0x83,0x0f,0x77,0x14,0xf1,0xd6,0x04,0x75,0xc6,
0x15,0x6b,0xdd,0x41,0x68,0xe5,0x9a,0x8e,0x22,0xd6,0xf7,0xf7,
0x5d,0x8e,0xd3,0x32,0xed,0x2f,0x28,0x85,0xe0,0xf2,0xcd,0x5c,
0x0d,0x9f,0x0f,0x86,0x41,0x11,0xee,0xc6,0xa6,0x30,0xad,0x76,
0xa1,0x60,0x0c,0x7e,0x37,0xae,0x68,0x76,0xe7,0x8b,0x7b,0x06,
0xc5,0x48,0xe9,0x75,0x79,0x58,0xe9,0x3c,0x1b,0x63,0xd9,0xc4,
0x7a,0x4d,0xa9,0x3e,0xd6,0x83,0x5e,0xa9,0xc5,0x5b,0x34,0x62,
0xbb,0xb5,0x96,0xfa,0xf7,0x53,0x18,0xa7,0xea,0x6e,0x66,0x9e,
0x88,0x56,0xf8,0x66,0xcd,0x7c,0x73,0xb1,0x40,0x03,0xde,0xe0,
0xbf,0x77,0xf3,0xb5,0x85,0x3f,0xd1,0x20,0x4c,0x50,0x5b,0x1a,
0xeb,0x05,0x15,0x68,0xe8,0x34,0x0d,0x33,0xb8,0xdd,0x54,0x09,
0xc8,0x09,0xad,0x48,0xcd,0x1a,0x7a,0xea,0x91,0x19,0x92,0x41,
0xac,0x4f,0x78,0xb1,0x12,0x7f,0x7d,0xf4,0x53,0xc9,0xe2,0x2c,
0x2b,0x06,0xcc,0x4e,0x67,0x7b,0x9a,0xba,0x8e,0xb0,0x99,0xc7,
0x6b,0x6f,0x81,0xd5,0x63,0x80,0x61,0x08,0xfb,0x84,0x0f,0x25,
0xdd,0xd7,0x01,0x5c,0xd5,0xb8,0x16,0x97,0x76,0xfe,0xd5,0x99,
0xdb,0x2b,0x17,0xaa,0xfb,0xd6,0x29,0x89,0xce,0xbd,0x85,0x18,
0x7d,0xf8,0xad,0xb0,0x5b,0x06,0x6d,0xf5,0x8e,0xac,0xe6,0x2f,
0xde,0x05,0x5a,0x1e,0x2a,0x24,0xfe,0xa0,0xc5,0x02,0x03,0x01,
0x00,0x01,0xa3,0x10,0x30,0x0e,0x30,0x0c,0x06,0x03,0x55,0x1d,
0x13,0x01,0x01,0xff,0x04,0x02,0x30,0x00,0x30,0x0d,0x06,0x09,
0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,0x0b,0x05,0x00,0x03,
0x82,0x01,0x01,0x00,0x04,0xb6,0x84,0xae,0x51,0x55,0xb3,0xba,
0x34,0x9d,0x7f,0x59,0x03,0xea,0xc4,0x37,0x89,0x21,0x72,0x78,
0x99,0xaa,0x03,0xf1,0xe0,0xb1,0x17,0x94,0xfa,0xee,0xc4,0xfe,
0x11,0xfe,0x85,0x8b,0x94,0xbe,0x0c,0x66,0x98,0x2c,0x6d,0xb2,
0xba,0x02,0xe6,0xdc,0xf9,0x68,0x1a,0x8b,0xb0,0x92,0x83,0xa9,
0x0b,0x63,0x0e,0x9f,0x17,0x59,0x68,0xc3,0x42,0x81,0x2b,0x05,
0x78,0xb9,0x7e,0x1d,0xc4,0x19,0x06,0xc2,0x66,0x37,0x74,0xb2,
0x71,0x30,0xf6,0xe5,0x1e,0x4f,0x3d,0xa3,0x27,0x6b,0x38,0x2d,
0x51,0xc9,0xf1,0x66,0x70,0x37,0xa9,0x52,0x53,0x68,0x93,0xcd,
0xaf,0xb6,0x7f,0xc4,0x04,0x9c,0x27,0xc0,0x48,0x25,0xca,0x43,
0xe0,0x39,0x2e,0x6e,0x37,0x3a,0x48,0xe1,0xd6,0x6b,0xf8,0x40,
0xc1,0xd8,0x56,0xce,0xef,0xfe,0x0f,0x1f,0x38,0x71,0x42,0xe9,
0xd2,0x5d,0xd8,0x6b,0xa5,0xd1,0xf9,0x57,0x7d,0xb8,0xf3,0xce,
0x9e,0xd4,0x60,0x01,0x19,0xc8,0x31,0x51,0x41,0xca,0xc2,0xc3,
0x72,0xc2,0xf4,0x66,0x60,0x85,0xb1,0xdf,0x0d,0x3e,0x05,0x09,
0x23,0xa4,0x18,0x46,0xb2,0x4e,0x6c,0x36,0x9a,0x8c,0xb4,0x0c,
0x5b,0xe1,0xd9,0x60,0xd9,0x94,0xba,0x05,0xa8,0x1e,0xcd,0x20,
0x21,0xde,0x38,0xc5,0x01,0xc0,0x02,0xd4,0x42,0xa3,0x53,0x9f,
0x9d,0x60,0xbd,0x4d,0x8d,0x19,0x51,0x98,0xa4,0xed,0x1a,0x89,
0x5f,0x33,0xb7,0xee,0x2c,0x8a,0x90,0xaf,0x62,0xbf,0xc1,0x78,
0xfa,0xf8,0x4d,0xbd,0x00,0xce,0x45,0x66,0xcc,0x35,0xca,0xbf,
0x18,0x2f,0xef,0x45,0xe5,0x32,0xae,0x28,
};
/* leaf issued under the non-CA intermediate */
static const uint8_t kat_leaf_under_noca[] = {
0x30,0x82,0x02,0xde,0x30,0x82,0x01,0xc6,0xa0,0x03,0x02,0x01,
0x02,0x02,0x14,0x4a,0x0c,0x58,0x36,0x2f,0x46,0x58,0x6f,0x00,
0x42,0x47,0x71,0x33,0xd4,0xae,0x5b,0x66,0x9b,0x4c,0xd1,0x30,
0x0d,0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,0x0b,
0x05,0x00,0x30,0x16,0x31,0x14,0x30,0x12,0x06,0x03,0x55,0x04,
0x03,0x0c,0x0b,0x77,0x6f,0x2d,0x6e,0x6f,0x63,0x61,0x2d,0x6d,
0x69,0x64,0x30,0x1e,0x17,0x0d,0x32,0x30,0x30,0x31,0x30,0x31,
0x30,0x30,0x30,0x30,0x30,0x30,0x5a,0x17,0x0d,0x33,0x30,0x30,
0x31,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x5a,0x30,0x1b,
0x31,0x19,0x30,0x17,0x06,0x03,0x55,0x04,0x03,0x0c,0x10,0x6c,
0x65,0x61,0x66,0x2e,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x2e,
0x63,0x6f,0x6d,0x30,0x82,0x01,0x22,0x30,0x0d,0x06,0x09,0x2a,
0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,0x01,0x05,0x00,0x03,0x82,
0x01,0x0f,0x00,0x30,0x82,0x01,0x0a,0x02,0x82,0x01,0x01,0x00,
0x9d,0x71,0x21,0x4d,0xd0,0x70,0x18,0xda,0xb9,0x0f,0x51,0x87,
0x25,0x3d,0x14,0x0e,0x6b,0xa8,0x0d,0x0f,0xb7,0x3a,0xa7,0x65,
0x36,0xe4,0x92,0x46,0x7a,0x76,0x97,0x3b,0x1b,0xcd,0x8f,0xd1,
0xcb,0x0f,0x1d,0x66,0x21,0x34,0x0d,0xf6,0x51,0xa6,0xef,0x9f,
0x62,0xd6,0x6b,0x11,0x1b,0xa0,0x67,0x83,0xe9,0x1a,0xaa,0xc2,
0x29,0x0d,0x53,0x07,0x7f,0x2d,0xe2,0x87,0x9f,0xdd,0x24,0x40,
0xcc,0xab,0x33,0xda,0x27,0x60,0xef,0x55,0x21,0x97,0xc0,0xc6,
0x6e,0xe1,0xd3,0x99,0x75,0x4e,0x2c,0xf7,0xcd,0x88,0xe5,0xc5,
0x8c,0xbe,0x16,0x03,0x20,0xd1,0xa7,0x32,0x16,0xc9,0x9a,0x3b,
0xbd,0xc5,0x4d,0x14,0xd9,0x50,0x99,0x1b,0xe7,0x57,0x8c,0x65,
0xc4,0x4c,0xfa,0x30,0x4e,0x36,0xd5,0xf6,0x50,0x48,0x48,0xc0,
0xbb,0x9e,0xc5,0x2d,0x55,0xe2,0x9a,0xb8,0x6f,0xe8,0x27,0x7d,
0x80,0xd2,0xbb,0xa5,0xc0,0xd9,0x24,0x14,0xe2,0x77,0x1f,0x8d,
0x2b,0x44,0x03,0x73,0xcb,0x83,0xaf,0x52,0x23,0xb1,0x76,0x27,
0x7c,0x11,0x1b,0x66,0x05,0x2d,0x29,0x05,0x3f,0x47,0xfb,0x27,
0xdd,0x09,0xad,0x3f,0xf5,0x18,0xac,0x07,0x89,0x6b,0xf4,0xb1,
0xe5,0xe3,0xf6,0x95,0x20,0x24,0x23,0xfb,0x9c,0xd8,0x74,0x55,
0xf4,0x53,0x22,0xa9,0x30,0xcb,0x33,0x64,0x45,0xd9,0xe0,0xa1,
0x2d,0x3f,0x90,0xf3,0x86,0x14,0x6b,0x41,0x5b,0x94,0xf6,0x84,
0xf0,0x2f,0xec,0x35,0x91,0x83,0x60,0xc6,0x56,0x88,0x71,0xeb,
0xa5,0x67,0x3d,0x2e,0xe6,0x8f,0xee,0xe8,0x75,0x3d,0x97,0x23,
0x51,0xf7,0x25,0x27,0x02,0x03,0x01,0x00,0x01,0xa3,0x1f,0x30,
0x1d,0x30,0x1b,0x06,0x03,0x55,0x1d,0x11,0x04,0x14,0x30,0x12,
0x82,0x10,0x6c,0x65,0x61,0x66,0x2e,0x65,0x78,0x61,0x6d,0x70,
0x6c,0x65,0x2e,0x63,0x6f,0x6d,0x30,0x0d,0x06,0x09,0x2a,0x86,
0x48,0x86,0xf7,0x0d,0x01,0x01,0x0b,0x05,0x00,0x03,0x82,0x01,
0x01,0x00,0x92,0xc7,0x1d,0x0f,0xd4,0x7c,0x18,0xb9,0x3c,0xcc,
0x76,0xa4,0xf7,0xc6,0x36,0x0e,0xfb,0x13,0x87,0xa2,0xe8,0xd8,
0x8e,0x62,0xff,0x9c,0x74,0xd3,0x54,0x49,0x7d,0x84,0x9d,0x62,
0xfe,0x5d,0x32,0x99,0x04,0x04,0xdd,0xc6,0x61,0x25,0x42,0xad,
0x76,0x12,0xd2,0xd8,0x7a,0x48,0x4d,0xc6,0x8c,0x04,0xbe,0xd3,
0xca,0x26,0x10,0x6c,0x39,0xdc,0x9a,0x9b,0x80,0xc6,0xae,0x6b,
0xb9,0x3d,0x5b,0x21,0x3d,0xbb,0x14,0x5f,0xbb,0x25,0x6c,0x98,
0xbe,0x8e,0x8a,0x51,0x08,0x88,0xb0,0xaf,0x41,0x55,0x84,0x09,
0x0f,0xb1,0x14,0xbf,0xf3,0xfc,0x15,0xc8,0xb8,0x5a,0x65,0xdf,
0x39,0xc6,0xdf,0x20,0x79,0xd5,0x51,0xc5,0x48,0x90,0xc7,0xde,
0xcd,0x22,0x70,0x93,0x3d,0x89,0x10,0x83,0x50,0x28,0x05,0xbe,
0x18,0xe1,0xe7,0xa3,0x3a,0x89,0xf5,0xb9,0x9d,0xf1,0x2e,0x9e,
0xae,0x0d,0x3a,0xa8,0x9c,0xbf,0xcf,0x61,0xb2,0x94,0x19,0x42,
0xde,0x51,0x6d,0x0d,0x29,0xcf,0x82,0x32,0xb1,0xab,0x03,0x31,
0x77,0x7e,0x9f,0x0c,0x77,0x8d,0x83,0xf7,0x42,0x1a,0xdc,0x35,
0xf8,0x5a,0xe0,0x6a,0xf3,0x78,0xd9,0xb6,0x75,0x1e,0x35,0xff,
0x7b,0xdd,0x42,0x8f,0xe6,0x20,0x31,0x3d,0x7b,0x49,0xc6,0x7a,
0xcc,0x49,0x1e,0x76,0x46,0xc7,0xf9,0x57,0x4f,0xd6,0x6e,0x80,
0x57,0x5f,0x7c,0x02,0x32,0xb2,0xad,0x9f,0xbd,0x48,0x73,0xcb,
0x75,0xff,0x6c,0xb6,0x2e,0x80,0x3e,0x64,0x05,0xd0,0x48,0x63,
0xb4,0x38,0xaa,0xc0,0xb5,0x6e,0x42,0xf4,0x51,0xb6,0x4d,0x49,
0x13,0xea,0x85,0x46,0xf6,0xa1,
};