// Code generated by certificates_generator_test.go; DO NOT EDIT.
// To regenerate, run: go generate

package tls

import (
	"crypto/ecdsa"
	"crypto/ed25519"
	"crypto/mldsa"
	"crypto/rsa"
	"crypto/x509"
	"encoding/pem"
)

var (
	// Self-signed RSA 2048 root CA, CN=Root.
	testRootCert = parseTestCert(testRootCertPEM, testRootKeyPEM)
	testRootKey  = testRootCert.PrivateKey.(*rsa.PrivateKey)

	// Self-signed RSA 2048 root CA, CN=Client Root.
	testClientRootCert = parseTestCert(testClientRootCertPEM, testClientRootKeyPEM)
	testClientRootKey  = testClientRootCert.PrivateKey.(*rsa.PrivateKey)

	// ECDSA P-256 server leaf, SAN=test.golang.example, issued by Root.
	testECDSAP256Cert = parseTestCert(testECDSAP256CertPEM, testECDSAP256KeyPEM)
	testECDSAP256Key  = testECDSAP256Cert.PrivateKey.(*ecdsa.PrivateKey)

	// RSA 2048 server leaf, SAN=test.golang.example, issued by Root.
	testRSA2048Cert = parseTestCert(testRSA2048CertPEM, testRSA2048KeyPEM)
	testRSA2048Key  = testRSA2048Cert.PrivateKey.(*rsa.PrivateKey)

	// ECDSA P-384 server leaf, SAN=test.golang.example, issued by Root.
	testECDSAP384Cert = parseTestCert(testECDSAP384CertPEM, testECDSAP384KeyPEM)
	testECDSAP384Key  = testECDSAP384Cert.PrivateKey.(*ecdsa.PrivateKey)

	// ECDSA P-521 server leaf, SAN=test.golang.example, issued by Root.
	testECDSAP521Cert = parseTestCert(testECDSAP521CertPEM, testECDSAP521KeyPEM)
	testECDSAP521Key  = testECDSAP521Cert.PrivateKey.(*ecdsa.PrivateKey)

	// Ed25519 server leaf, SAN=test.golang.example, issued by Root.
	testEd25519Cert = parseTestCert(testEd25519CertPEM, testEd25519KeyPEM)
	testEd25519Key  = testEd25519Cert.PrivateKey.(ed25519.PrivateKey)

	// RSA 2048 server leaf, SAN=test.golang.example, issued by Root.
	// Signature algorithm is SHA512WithRSAPSS (rsaEncryption SPKI, rsassaPss signature).
	testRSAPSSCert = parseTestCert(testRSAPSSCertPEM, testRSAPSSKeyPEM)
	testRSAPSSKey  = testRSAPSSCert.PrivateKey.(*rsa.PrivateKey)

	// RSA 1024 server leaf, SAN=test.golang.example, issued by Root.
	// Key is too small for rsa_pss_rsae_sha512; used by TestHandshakeServerRSAPSS.
	testRSA1024Cert = parseTestCert(testRSA1024CertPEM, testRSA1024KeyPEM)
	testRSA1024Key  = testRSA1024Cert.PrivateKey.(*rsa.PrivateKey)

	// RSA 512 server leaf, SAN=test.golang.example, issued by Root.
	// Key is too small for any rsa_pss_rsae_*; used by TestKeyTooSmallForRSAPSS.
	testRSA512Cert = parseTestCert(testRSA512CertPEM, testRSA512KeyPEM)
	testRSA512Key  = testRSA512Cert.PrivateKey.(*rsa.PrivateKey)

	// ECDSA P-256 server leaf, SAN=different.example.com, issued by Root.
	testSNICert = parseTestCert(testSNICertPEM, testSNIKeyPEM)
	testSNIKey  = testSNICert.PrivateKey.(*ecdsa.PrivateKey)

	// RSA 2048 client leaf, SAN=test.golang.example, issued by Client Root.
	testClientRSA2048Cert = parseTestCert(testClientRSA2048CertPEM, testClientRSA2048KeyPEM)
	testClientRSA2048Key  = testClientRSA2048Cert.PrivateKey.(*rsa.PrivateKey)

	// ECDSA P-256 client leaf, SAN=test.golang.example, issued by Client Root.
	testClientECDSAP256Cert = parseTestCert(testClientECDSAP256CertPEM, testClientECDSAP256KeyPEM)
	testClientECDSAP256Key  = testClientECDSAP256Cert.PrivateKey.(*ecdsa.PrivateKey)

	// Ed25519 client leaf, SAN=test.golang.example, issued by Client Root.
	testClientEd25519Cert = parseTestCert(testClientEd25519CertPEM, testClientEd25519KeyPEM)
	testClientEd25519Key  = testClientEd25519Cert.PrivateKey.(ed25519.PrivateKey)

	// RSA 2048 client leaf, SAN=test.golang.example, issued by Client Root.
	// Signature algorithm is SHA512WithRSAPSS (rsaEncryption SPKI, rsassaPss signature).
	testClientRSAPSSCert = parseTestCert(testClientRSAPSSCertPEM, testClientRSAPSSKeyPEM)
	testClientRSAPSSKey  = testClientRSAPSSCert.PrivateKey.(*rsa.PrivateKey)

	// ML-DSA-44 server leaf, SAN=test.golang.example, issued by Root.
	testMLDSA44Cert = parseTestCert(testMLDSA44CertPEM, testMLDSA44KeyPEM)
	testMLDSA44Key, _ = testMLDSA44Cert.PrivateKey.(*mldsa.PrivateKey)

	// ML-DSA-65 server leaf, SAN=test.golang.example, issued by Root.
	testMLDSA65Cert = parseTestCert(testMLDSA65CertPEM, testMLDSA65KeyPEM)
	testMLDSA65Key, _ = testMLDSA65Cert.PrivateKey.(*mldsa.PrivateKey)

	// ML-DSA-87 server leaf, SAN=test.golang.example, issued by Root.
	testMLDSA87Cert = parseTestCert(testMLDSA87CertPEM, testMLDSA87KeyPEM)
	testMLDSA87Key, _ = testMLDSA87Cert.PrivateKey.(*mldsa.PrivateKey)

	// ML-DSA-44 client leaf, SAN=test.golang.example, issued by Client Root.
	testClientMLDSA44Cert = parseTestCert(testClientMLDSA44CertPEM, testClientMLDSA44KeyPEM)
	testClientMLDSA44Key, _ = testClientMLDSA44Cert.PrivateKey.(*mldsa.PrivateKey)

	// ML-DSA-65 client leaf, SAN=test.golang.example, issued by Client Root.
	testClientMLDSA65Cert = parseTestCert(testClientMLDSA65CertPEM, testClientMLDSA65KeyPEM)
	testClientMLDSA65Key, _ = testClientMLDSA65Cert.PrivateKey.(*mldsa.PrivateKey)

	// ML-DSA-87 client leaf, SAN=test.golang.example, issued by Client Root.
	testClientMLDSA87Cert = parseTestCert(testClientMLDSA87CertPEM, testClientMLDSA87KeyPEM)
	testClientMLDSA87Key, _ = testClientMLDSA87Cert.PrivateKey.(*mldsa.PrivateKey)

	// x509.CertPool containing testRootCert.
	testRootCertPool = newTestCertPool(testRootCertPEM)
	// x509.CertPool containing testClientRootCert.
	testClientRootCertPool = newTestCertPool(testClientRootCertPEM)
)

const testRootCertPEM = `
-----BEGIN CERTIFICATE-----
MIIC2zCCAcOgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowDzENMAsGA1UEAxMEUm9v
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM2wRo+wzYg9F3bUW+my
2nmckAb+g091upuWNI58BE67ZwfCXXmYJNHiOm1KMp71OHupdKnSfQK85iTwC3lN
gzd+6WwyszLpIYg27xfqESRFIJXWPNOPbqKpxuBKQSxlHhv9ME6lMfnfJMhPQi/R
BDPE0+Ek4NlfRi/KE/uhnZaDQTAOH4tyi91xQHUQ6xYOuHcQUG1orbMSGjx1K/Nc
Hnav6Un8gX0lGiWfWUKDlkFIWLIv6yY3uPXFrczSFD0Sn+UBQMN6p9Rd53rpFUL/
COqxBGQMnJcPzYBl5B7/GsJe5nBZhbwpWv+8RuwkIZWUTymLz9yWHxXuv7sw05kH
21kCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgIEMA8GA1UdEwEB/wQFMAMBAf8wHQYD
VR0OBBYEFJvXswyhWcuczNyDMn8r+TB/92KlMA0GCSqGSIb3DQEBCwUAA4IBAQCZ
GZvxtbvzDGdicv9I1f/NPEYGPm+7Y6ayo+VyfnJ3DZ72SposbYtLqw6nodigkXP3
fuEVT4glCF2t0c1OdIROfEfZ1Cdp0kjQzDXgxiWjvjb8VR1ToLxnKbmRRLUTFZn0
EBuxMDLpPTBMUJOaFY2odmpPh6EwO3zzI8N/vjyPH6/nErQjmyJJcFjkazcE6kOU
O4I8LLU+bpn9qBJs/OmpO6cJusSsG2qpXERiGtL8xDWFxsejG7ViF/BrqKApFtLL
Y08Te33CDZbgWlhzxooGvisbQGSwagjI+AKJNZMe1FBUB0V8n2Qkjt8D19P7lhOS
YBi/DToTj5QnwqrOGwz2
-----END CERTIFICATE-----`

const testRootKeyPEM = `
-----BEGIN TESTING KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDNsEaPsM2IPRd2
1Fvpstp5nJAG/oNPdbqbljSOfAROu2cHwl15mCTR4jptSjKe9Th7qXSp0n0CvOYk
8At5TYM3fulsMrMy6SGINu8X6hEkRSCV1jzTj26iqcbgSkEsZR4b/TBOpTH53yTI
T0Iv0QQzxNPhJODZX0YvyhP7oZ2Wg0EwDh+LcovdcUB1EOsWDrh3EFBtaK2zEho8
dSvzXB52r+lJ/IF9JRoln1lCg5ZBSFiyL+smN7j1xa3M0hQ9Ep/lAUDDeqfUXed6
6RVC/wjqsQRkDJyXD82AZeQe/xrCXuZwWYW8KVr/vEbsJCGVlE8pi8/clh8V7r+7
MNOZB9tZAgMBAAECggEACAhz4QW/KSx1n6LwigJ9rNUz/Mnw1+gZpxzpJY1rX6XL
As8Q9oA+I+JJdN46duHN2GqIT1+UmUhGVrf3QsAHuWGf/SVHwVvAfwDiOpVeIQQA
H0n0KzEFWZ320eikffbfA6nSOqgR+RfBaH9L7vEjUGBGBBt8GpExfQlP2Xp43Jlm
vZRND+27afH+NFvEe+Mtq23t/ls4+JFfxWzecj8wsi+RRdbKDYD+Bms9sUguyD75
6SOFYaYu6lNM2hsXp4JoMDvxqffzl1y6pQ2LkMVk79bJLoGjaqZOi05/auXQcyoV
hmrfU03HJW6PWi9Mf+l8hOGtZQkaHqHATDo4qSahZwKBgQDZVZpUsFfHklNh1zsZ
0xPFpK8KiHUu2zizcTnnTGETsqribKGPc1MvVPhyAk3t/jKqz2KB7/uKab+2DzXO
QozrwPGHanWirzZnA5BMCNmy1Z0mOg90Z8H3L8TLraUa2R5cSNDJx2d7JeeYpq9C
LMbIjFNU7Frsm48iPkzd3z5tFwKBgQDySEUE5O1S2oEGI5043ctVYVkUQYwxTIma
H7vn+Pul2793pWNboTHu3+2n76gF7/4b5VwWOoeKQ5Ztn4KXomYgsq0Qn58xuPN9
r/0oA5bWbx930JblCvmAVjnnJMNvfC1qv4Yoz0on8aoxrClW6WEcjn+EOAusIN5y
bnxZztyhDwKBgDJkovBYI0JnL2ZUXaPTSZZeZSfwFBvVQQR6kI6NK0VB/FWcEqoM
d5FWBnWJC0DP3De29oRifNTPSGCSjktRKxPPHTHlAXnDXr3sGZ1HwBKzbUjb1ZGM
LXF/ZgZEMTBUf7GuQJtI3Tm0xEqk+6ZAc6c0wm3CkCKkvz+VaoVXqkXpAoGBAL2I
E5YUkCM0k6J90cxelWYhVVInRMh8G1jaYmDBwfqpwUqTsvpHS4yW2I97R3H9oEeq
UTOCbe2XmeH/2mVMwZ/qpsBOXnbDPJeiSOQ4ipMNMwzDvIdI4o2m5n0PoWNhPRY4
5XafUl+VCZL6HwzCXRm9z7tbLKZmwB28mMKYtLe5AoGAeRNa3d1K1AVGEfLQsPhp
0hoPI8oaQbicKh/4tERBERWzfQ7UQ2lieJzc3Fm7RvDklFbmpolal3mn6LifA9mL
vSxcmPEtSGpUDRnNsvUZrWAXKEta0eXfFXqm1if9C/aNszM6VR7p3vTR/Ui75SzV
l/fcuvGqmIBq+/aiuk0V85k=
-----END TESTING KEY-----`

const testClientRootCertPEM = `
-----BEGIN CERTIFICATE-----
MIIC6TCCAdGgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtDbGll
bnQgUm9vdDAeFw0xNjA3MTIxNzMyMDlaFw0xNzAxMjgxNzMyMDlaMBYxFDASBgNV
BAMTC0NsaWVudCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
tHQp8pbiZjHrwDrvOfsUjCuQPG1hPs+cSnDFupByxwdsuOFDOKs+lRJXeM/PgmM/
eZlkoj/xi58/Ge3P6BZ6IRrc/40DnFOKHqDCQ6MUjrBDIICNMZn4HMjlk6kxGBCY
HHBBi2dvfNPwQqOcTcEe/uaz++bNRDJdM6vbCOTDrWBoDz+wFcgek+G6MW1nLGT9
RiFiXdCdvC/uxtzoqgECo0OU6K2X/q8wCfmjHiO3loqWHD+2npLk2UzQjbRrHjR3
NUAPY99UqlVpLCYNgq+lv3XE03Nte3RRiwEYHZx/nzs2NajfzUXmfGTJ13WpkFx5
8t0HIpgZji+/Tc2jbH/3GQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAgQwDwYDVR0T
AQH/BAUwAwEB/zAdBgNVHQ4EFgQU/JzBQEJc5v4eLi5bw7iEj+2SM+gwDQYJKoZI
hvcNAQELBQADggEBAGMsUSXqrKUFc2N8o89DJ7dksv7mGzm1MJQE5biMkQgWGXCC
usCkWu1oZ/AZaPOpiQVAucH57aHUmhNJEpjNAgFjDjiQ5m3Ksa8ZBTYJ9ZqxXRsz
jNmR9x/5QPCjF+RLNhOZoN9RQkmwWZjvoHc6yuWtSMUIIOwlF/lFS0/AjJGRS2ys
Vmx7KkmMHHD29Kqy2UX9bJoR3af5a+x5FsgXB7V7HTSbKa15mjf4F7imrnesqxCz
XpEDQPl7aNmxlEgU56yZxEclRBByGVMS3FEmy7ooEKGJVptHlFNoJ23eDo1A99IR
HYl9O7aSb+fMeb9DpMZzbJrRquY3w8902npNdcQ=
-----END CERTIFICATE-----`

const testClientRootKeyPEM = `
-----BEGIN TESTING KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC0dCnyluJmMevA
Ou85+xSMK5A8bWE+z5xKcMW6kHLHB2y44UM4qz6VEld4z8+CYz95mWSiP/GLnz8Z
7c/oFnohGtz/jQOcU4oeoMJDoxSOsEMggI0xmfgcyOWTqTEYEJgccEGLZ2980/BC
o5xNwR7+5rP75s1EMl0zq9sI5MOtYGgPP7AVyB6T4boxbWcsZP1GIWJd0J28L+7G
3OiqAQKjQ5TorZf+rzAJ+aMeI7eWipYcP7aekuTZTNCNtGseNHc1QA9j31SqVWks
Jg2Cr6W/dcTTc217dFGLARgdnH+fOzY1qN/NReZ8ZMnXdamQXHny3QcimBmOL79N
zaNsf/cZAgMBAAECggEAAJ4WPZIxVz0ZCm901NlTwAmX8fLPsZBVOcUUew1qla6B
RwP2VEquF9+YGqxfBMjBQSBGQZ1W8xaM4HUzyk0UTKQoQaIrFf6vMPQvsxe8mC6X
ggixfqNStCFsO1Z+ESdJv2z8AkFM0NMtkwhxNav/yZwRaRB0Ihmz1woQVep0rbKR
jic/d9Pol1CWLup/mkmg4X6ksOJPEhVAd6IiKZ7fvKlnWsMCjh7N/YZvU2Q2yRUx
JeKcmdaL2rOmOyTkZZ9+QhLDPBVFV0mH9UoI0bCWtrKutsX8suACgUZk9mABhT02
0/zZirE3292WHgcHfCW4IW1ww/MFfb5g4ttTrtIk1QKBgQDCp9Qd0GsGjHlllDV2
+++t1n1KlmeuZaFsI1E67nkfrEf/MMNcB705wJER+kaMx5T3xkZd3SAjYO58mKqY
2zhGdmoWecEZM4uOTGjMhlIEJ126gl9n3i2Lmup0IrcJ1oNTqMjNmbsrnWR8ORJ+
TGdLCxpUVZzVTxMxsAVcuikGvwKBgQDtUpRetvoI1MXHBGrrc9owlGZYcrvmEgMJ
xj7Ph+pe+xOkDqpdioKYNMqyISwkPlSDD1+grGwngQdyFCHmopQkKlFQdvqsjwJW
QPrfjKi3DvoZdzEOsifUw1/xPY16lsvwiUy8fc3CPzTUi4qjpPT4QjfyEgYtr295
AkyxaSwQJwKBgQCFfC2b3GbocMB3BjG7zHzKS0JUOdwT3iHaVEXKEesB61TcDQaL
P8tlpUZWe7iRpfPkDhYHHDKD0F77Fn42oG5w85dAnnHq5EwZYxCi4KGxs4U0916R
jezRxYRt67h1iKM6ZY5+X6PY/u//t+uUrLRQ4+ZEWwlXxgg1lK24rvifZQKBgQCo
1Mmmg+dmpu+4gIUL0dRUIQ6aN61CpGey6Wy/uQJb5aR4XtKGT0ZOv6e/h2fetNTs
k+BE7sTWaa2BU582c0yOWeiVJL96SRaxg/K1XFyeNjJoMWod+VHqw78aYN6oamTV
TuffZGQfn1WXK1pKxsxbXMhuFrJ8h8T2wlMLFzX4mwKBgEym3OpWiNoV/SVLrnY1
dtWzXuNTephkEmJduCrlSZwSw0Al3SEnYteifulGsByz2Wo7V9KmWO3f4IYO1ytb
eTeoKLkW/MTPJLIvvSTr0PZKJe+lHXUT4RwSpwQop1BIHOBIBllZBTO5rH3Gt6Bp
zt6nFbDpM8JInOGfauB7REBw
-----END TESTING KEY-----`

const testECDSAP256CertPEM = `
-----BEGIN CERTIFICATE-----
MIICSzCCATOgAwIBAgIBAzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowFjEUMBIGA1UEAxMLRUNE
U0EgUC0yNTYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQs8c6oGxTAia5ZUHGi
OovLI1d/ymcyXy0i7fMVhDH3PiexxT24sBlMvj/E94W7l3fZLBeKGbyHlsqI6W5/
zcEyo3YwdDAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYD
VR0TAQH/BAIwADAfBgNVHSMEGDAWgBSb17MMoVnLnMzcgzJ/K/kwf/dipTAeBgNV
HREEFzAVghN0ZXN0LmdvbGFuZy5leGFtcGxlMA0GCSqGSIb3DQEBCwUAA4IBAQCG
tOjlNsxs6qOXR4aXQtzbbjpZ8watBiAl7taViA11ovNpn3tX8piOKm5dNc3ZdHiz
cVaSx2vyOeAaw0osF113t4Zok/dIPtX1FNdB3RdrgYyxCH7ELkquebUuQ2tyRFPc
QoTC+iZYgUI9QnEzXWsncsldlrdVe+Y0CKWeJfWx4EHWnRLOF6fbKPHvr6NQ2zE6
Q+jKPrFw8WxEhuV2MlCKvDGnM/a7AGyCayRa69LJS72jiLEeL9VO1M+8a20p0sSI
DOCljGp6fv9YbZUi97JveqFGsN1WfKDvS8AAYGURbtDgd0d38tecBEW7gutO9doW
Q01Fx8fkmwgu1LRrH9/t
-----END CERTIFICATE-----`

const testECDSAP256KeyPEM = `
-----BEGIN TESTING KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgC+OuWqep+DODweEt
dyL7aZlm4Ogw2vlStsG2EYJZPtGhRANCAAQs8c6oGxTAia5ZUHGiOovLI1d/ymcy
Xy0i7fMVhDH3PiexxT24sBlMvj/E94W7l3fZLBeKGbyHlsqI6W5/zcEy
-----END TESTING KEY-----`

const testRSA2048CertPEM = `
-----BEGIN CERTIFICATE-----
MIIDEzCCAfugAwIBAgIBBDANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowEzERMA8GA1UEAxMIUlNB
IDIwNDgwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDnZDxSKSE83zya
GLmeRowa8e2DpoXkA2waZz2fbkwB2SxJIFeaZeUET4PWu1o5AQP9hxWO1b6WDy4z
97GZSrcCc3N75zGRyXtToiTkmRd6jOs0UXojGNG2jC+sSokNNwkh5wCbOCZ/d5dE
hACCpqTCKmztYxrrZLdZgWCnhzJI94A3qN+EZRslaKIeTXuu0NPpEXKJHeqAxTNF
WD+l+AHL+vxcjfCXdFDa62ZExYgDQlq0y/pgLxsQ+uxqjJUoTf7lIjDOe1KbMl4j
dkZQ200jq2DAf0045qIbicglzPGRegRvLEkgK5UVwuPdTAD/2lEcD/YVcCVy+5vV
Z9Mn+GBRAgMBAAGjdjB0MA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEF
BQcDATAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFJvXswyhWcuczNyDMn8r+TB/
92KlMB4GA1UdEQQXMBWCE3Rlc3QuZ29sYW5nLmV4YW1wbGUwDQYJKoZIhvcNAQEL
BQADggEBAHt2xIoA+xoTM5nCG0yOl+E2A3MhqqZJJ/hf9aR9ClRwayTHA68oznI+
MH7MRT13GCZCIINiBJOYCUUYUJEHNkSKN07dVM46JqqYU5tD/tDZtoRuB8F9yC3f
UnBod8suwlB2/2xcC8/W9x8vAnMxGQrQMm0HOahFk2rOmP303lHm/VV+ku2K3pKB
haH3COqxAggKpfxSfoJG1IDNZl7fHYePq8fzBDo32l0R3RkywNLE9o4efCMJnBLQ
9XohLz4ODDm7iXAeB/wGSX/zheFzEnuWHTXu4PgZaqmlywYJ+ksFpHTQBe8Ezm2H
9QKL//ZtHkdAZErSOYyTA26RwR3oZxM=
-----END CERTIFICATE-----`

const testRSA2048KeyPEM = `
-----BEGIN TESTING KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDnZDxSKSE83zya
GLmeRowa8e2DpoXkA2waZz2fbkwB2SxJIFeaZeUET4PWu1o5AQP9hxWO1b6WDy4z
97GZSrcCc3N75zGRyXtToiTkmRd6jOs0UXojGNG2jC+sSokNNwkh5wCbOCZ/d5dE
hACCpqTCKmztYxrrZLdZgWCnhzJI94A3qN+EZRslaKIeTXuu0NPpEXKJHeqAxTNF
WD+l+AHL+vxcjfCXdFDa62ZExYgDQlq0y/pgLxsQ+uxqjJUoTf7lIjDOe1KbMl4j
dkZQ200jq2DAf0045qIbicglzPGRegRvLEkgK5UVwuPdTAD/2lEcD/YVcCVy+5vV
Z9Mn+GBRAgMBAAECggEAE1j/wYpGiQhM0RZhKuP7jLiO42kAnVdQlN1DZfnQftUR
uA7taZpnLaxCZKmSD93PChtfSOwEEsMJL3eLZjsSQLELm8rHNnPyN8TWheDBJFJK
dmZGVU9FdcM/VzjSQIR0uId6tv/ZGY5pMRBChKokxkbK3dyMCy5cNa6KOOfROLrZ
wxVk5CQJVlHQ9BgQxDaEwAAqS0DOl3NcwIL5TraDjpWOFyLdw72wlxac3b+imVhw
D1NFwo8BkDJfUTesoYkyHWNvhwsc2ludWqaqMPef6VJjjD+iAASwc6tWenEtzGLu
5rx62bpETdw/d4yHUS960yEcvdh2TjK6NwrCTdThOwKBgQDoW6J10UF61jXu0c+D
AFaWcMn6zkyeqIUIOdcAqiwBjH2yPhdDX2+GsG/NKesuGFY9I8sRoXDTdMIypCcY
1YFrRq3KvAT2SJgefdBkJwO+z3tFPEeopTzuSxvkOjsVLrINZaJUgp/n3b/tpOE4
GkQcUQwmLpv298/3RJ7CkzZd1wKBgQD+7222bDAF0uSns6BOlKU4pDxd0kPAdAmf
6avgL8MUvonFM28DDkuE2z/fcYUtm5R6sxVd+xq99yalSRZA2dmKkUs0zXCInorI
g8UJCoroQNlGYWWrrbDb906zMnZ/OsffqcZtIorvewY5dor2mWK5UMiQ1AgJsyS1
nsNBd0deFwKBgCvyINDdqd+8oeiwP+oL51R+soS//dfIEZkTr2lNxhLo6mEKw0WX
yDUWK58G/ZbzPWRE38RO31Lu80e2qjpVLywF6xq74shdxH+H1iELC/dLsInQs9De
p55+ECFjLgd8lGpaPZB0QCAPXZxpobsFpLoiTgTurcrQ5cFjdg9g3lhzAoGATcSM
G1H1dFFZHy9Uf6Qoopa3M4eo01SSew21OLZZNELLlDSUcMIzl1uqqGbg0YDcUnG+
2uR2y+xRBaq99xp9mh+oaXsiEQsMGw7XVGK67Q6bOTUM5sodYXyXrWJ/c2BjCH+p
4DDhYRyOUYkv6vnve8iA5m1H5m2XjS/ZMGdKhhECgYBLpqWEYX/K6uvIBHsgYMM5
3xqhIZ58kUGmhMjUb3bDZBavzvAVTI31vdxqP6SZwMrvaAVHkuDNlzn1hI+Kc4Ee
Jb0iJcXwlHxDP8FIGp0c1KPt/qURYJ0MUXDDhvieC3d6xIWKJPRgrJDKpoWRsMpV
dNY9JbuvPT3oPYDAZxGbtQ==
-----END TESTING KEY-----`

const testECDSAP384CertPEM = `
-----BEGIN CERTIFICATE-----
MIICaDCCAVCgAwIBAgIBBTANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowFjEUMBIGA1UEAxMLRUNE
U0EgUC0zODQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQW+hoMRTUTQqLkvYDm/Nl5
8rg4fh7Io65qWW2UUDuqmKEMF8fIkSeC/kjyni0ORYt/uWjeHxuJ++fsOQ5Q0+nG
i4vFFRE3flMPyXPziJD8MFDg5Qk0KE11dO19TfJnV9KjdjB0MA4GA1UdDwEB/wQE
AwIHgDATBgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8EAjAAMB8GA1UdIwQY
MBaAFJvXswyhWcuczNyDMn8r+TB/92KlMB4GA1UdEQQXMBWCE3Rlc3QuZ29sYW5n
LmV4YW1wbGUwDQYJKoZIhvcNAQELBQADggEBABtle/N0jXbIcsNXQbP9W98PciRP
l9NWLiXX3aS6vC8IqSdb0wuvc+F3ryo5/0DffAbypJLFvB6VPS9kthFVK58+SavY
PJr8FL9mut3IVIU9dfu7RvQrqUeYW5dgH8nnC2CdARdQd9BKEWbNwGynpXlINTH8
fP65lrmMWNXTlan9LCSgau7bCTbllPrur1tng73vEWDXVld7lW4brJvvBbEjN5Vc
s5w1NwRhcLuNXgkM4JRoM8Fe76cAq7Yyx0Q/jM0MkBcffV8OFs34cxpjV6T1/FHF
O3rtZDOGj+Sj2YC99qvSqxqx8ZSvFWLPOdjrYJNpNqLKlDWCQ/v5E7P6bBU=
-----END CERTIFICATE-----`

const testECDSAP384KeyPEM = `
-----BEGIN TESTING KEY-----
MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDBXLSRx9cjuLEM82jst
8JvLD3aH7aVWv92b2+Rk7Oby17jcKpT5IvcHeRzVcwV5M96hZANiAAQW+hoMRTUT
QqLkvYDm/Nl58rg4fh7Io65qWW2UUDuqmKEMF8fIkSeC/kjyni0ORYt/uWjeHxuJ
++fsOQ5Q0+nGi4vFFRE3flMPyXPziJD8MFDg5Qk0KE11dO19TfJnV9I=
-----END TESTING KEY-----`

const testECDSAP521CertPEM = `
-----BEGIN CERTIFICATE-----
MIICjjCCAXagAwIBAgIBBjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowFjEUMBIGA1UEAxMLRUNE
U0EgUC01MjEwgZswEAYHKoZIzj0CAQYFK4EEACMDgYYABAAhVpxsyr3MAFzfTH8v
7GQPwbQNkhkibnDMnwPiig4fOs+IWzqp98LkODi1FptQTTtjRkkbNAkczn0LWgtl
waXerQFZeZCAyu4BdWDPPxSUAIDX/cLLYwQS8ZjOu4v90pLZS5bxIfSKp1wwIeeb
WPPsdILcBMkEtonfqhsEHNWh53zJ6KN2MHQwDgYDVR0PAQH/BAQDAgeAMBMGA1Ud
JQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUm9ezDKFZ
y5zM3IMyfyv5MH/3YqUwHgYDVR0RBBcwFYITdGVzdC5nb2xhbmcuZXhhbXBsZTAN
BgkqhkiG9w0BAQsFAAOCAQEAlcs90Yzrw7TUXvBXGAYrrbrw0jH48USrvuE+2AIx
C/GRmFINMxfhU13yTP3BGtmHPgItVk3jcy/a+QCrDJxKMIHCs+2ohsfgaPfpWjhR
PK35Sq5iK/gfG+XhDOgwzSS1EXis2POO4ZuA8wm4UQNsHxuxIBTyjcsq7FT0aqLE
VYdEPB1eUKJyBLk1TfenetQx8BZbBUMLDjPvi65i8WpLRSv+ifHrB/yxJa4VySsb
2mi1oESMKsuFh/4ellxLa7dD8WW8oXzwOEVkUp8PQhxnS9ySJN7B8mF0wflwHlAT
XzB+ljAgTjcw+SZ3YjGjO2EwcPFPheAaDBxZoSdMEgfI5g==
-----END CERTIFICATE-----`

const testECDSAP521KeyPEM = `
-----BEGIN TESTING KEY-----
MIHuAgEAMBAGByqGSM49AgEGBSuBBAAjBIHWMIHTAgEBBEIAkCrpMZKv1oosRX6Y
PUSOiF/t5gCI06wjRO2QMYCYdEb1SqQZwla7bjV0QzM/eOGIwK/vcxJxIa3f4G+6
jJzVlBOhgYkDgYYABAAhVpxsyr3MAFzfTH8v7GQPwbQNkhkibnDMnwPiig4fOs+I
Wzqp98LkODi1FptQTTtjRkkbNAkczn0LWgtlwaXerQFZeZCAyu4BdWDPPxSUAIDX
/cLLYwQS8ZjOu4v90pLZS5bxIfSKp1wwIeebWPPsdILcBMkEtonfqhsEHNWh53zJ
6A==
-----END TESTING KEY-----`

const testEd25519CertPEM = `
-----BEGIN CERTIFICATE-----
MIICGDCCAQCgAwIBAgIBBzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowEjEQMA4GA1UEAxMHRWQy
NTUxOTAqMAUGAytlcAMhAMcwykGYfAC1Y8OupBRVz+goJ3CDE4HXi3u3EygPJela
o3YwdDAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0T
AQH/BAIwADAfBgNVHSMEGDAWgBSb17MMoVnLnMzcgzJ/K/kwf/dipTAeBgNVHREE
FzAVghN0ZXN0LmdvbGFuZy5leGFtcGxlMA0GCSqGSIb3DQEBCwUAA4IBAQC0gObJ
rXb2iSQ8yxmoulpZE0n8xfz4cQ2Ve7x8IhCDnY9CEH+GsbXSzjj+NBeXxm07s4XW
ioBLWEIi4oRT5zmu64XHqxdBS/zoX58Baa0t6IdY6jKaqscSToxXRCTq406T6yOR
6xXZzZpQcauZDxR8Pv+GBS0pFSMUgFfL72P3BQegdr6hVVP9dwnBt90qjoFkxq8q
iJKfOvt1Qpc0gN660QWZhEa8G3RhSLaUlvDIr7q9XqltMhZWxR+cVRyVdeXCKV40
l35bvJUGu7cNjOxOsg1C+aXSOeQxXeAs4+vYaMMG7cO59Q/f/tPbMVeqg9yVbiwJ
DwzOydNYV0NY+iZ0
-----END CERTIFICATE-----`

const testEd25519KeyPEM = `
-----BEGIN TESTING KEY-----
MC4CAQAwBQYDK2VwBCIEIO58qyJDz8ZYFKRCSqhCJLj7RM+XIZqvRgVecU1VeG27
-----END TESTING KEY-----`

const testRSAPSSCertPEM = `
-----BEGIN CERTIFICATE-----
MIIDejCCAi6gAwIBAgIBCDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAwUA
oRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAwUAogMCAUAwDzENMAsGA1UEAxME
Um9vdDAeFw0xNjA3MTIxNzMyMDlaFw0xNzAxMjgxNzMyMDlaMBIxEDAOBgNVBAMT
B1JTQS1QU1MwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCxyy3GKqLV
4Vkuda1PdARi79lV9ydf1OMmxoS0bSz6mBO58io7nQg1EVXpYhWE5OQ+bZa0qkRX
04w05WCGI7TYViNCjpT6EVFXqamp4evwoM7I+J4a7wX0H0zkckQqC8xDmp13rylh
gMiWBRJsoaNFuVkn5lwe62A3BAhvb0Qs2mtVdS20BMb480lnX3ihg3WtjiSZPYLc
gzSbWTowmVbIQaX+MFmjZa4EXKpiXXbPOcS5uGxWPy0jOSlo6tZp6sjHSz3/IwIZ
eHbr/81Slg+8Y9W9nIF47rjTXrx/OaBZPFOrIsS7oQc5p9qyU8fKViyTy5S2gN9X
T347jZjGHB7BAgMBAAGjdjB0MA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggr
BgEFBQcDATAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFJvXswyhWcuczNyDMn8r
+TB/92KlMB4GA1UdEQQXMBWCE3Rlc3QuZ29sYW5nLmV4YW1wbGUwQQYJKoZIhvcN
AQEKMDSgDzANBglghkgBZQMEAgMFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQME
AgMFAKIDAgFAA4IBAQBmsnhwZyp5lwe2CSJV8xR7ht3efhQaks1p/r7AVB0Bofh1
L0ZMJFsokotR1p6AP6NsAz/VudLS74e3HrOxCpNUBl3vE4+MLRlVfKcuGtYSPwXU
z1BWsl1sFRA0Os+/5eg8Sg7yRxCeC9HwnsT7OgzD522uXHWXi5q98EC8iij651rX
UlNtzLsaoH/7DQAY/IheKMweNUweCsWET7tVmVXDfa2YoM/PDT8e4UKMYo26qoXg
U8trHh6D2OlXaNgyvA3DSl2K0DLCWrm5nWGOf2xj/ohAnSAnzCVu6KrkwLqZCXbE
5Vq2N4xs4+qu6JDHPK91SzKewvXmrZYzTRMbfbcz
-----END CERTIFICATE-----`

const testRSAPSSKeyPEM = `
-----BEGIN TESTING KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCxyy3GKqLV4Vku
da1PdARi79lV9ydf1OMmxoS0bSz6mBO58io7nQg1EVXpYhWE5OQ+bZa0qkRX04w0
5WCGI7TYViNCjpT6EVFXqamp4evwoM7I+J4a7wX0H0zkckQqC8xDmp13rylhgMiW
BRJsoaNFuVkn5lwe62A3BAhvb0Qs2mtVdS20BMb480lnX3ihg3WtjiSZPYLcgzSb
WTowmVbIQaX+MFmjZa4EXKpiXXbPOcS5uGxWPy0jOSlo6tZp6sjHSz3/IwIZeHbr
/81Slg+8Y9W9nIF47rjTXrx/OaBZPFOrIsS7oQc5p9qyU8fKViyTy5S2gN9XT347
jZjGHB7BAgMBAAECggEAIx9KlxukGFFQj0uC5a+7EBpmmkNdXWKOTwInhAcPPB/f
wbtzmVwvm2Al0xlju+GFr0lx3JXIM3tgdrCbbVRPbO8zPvowtufF5GXpVNyDAgGa
Z/wpK5PtXqjyRSzHh3DWNMKt+c86Av9wYKZ22cvil6sCUE4DA76mvqeGzRCzbJKT
Dl4SWiGA4FS80y1AX2Br3I/A2zzjqpMK+7/VaU7CVYq9VyCoYVecWVy0esPwRM1V
kWLCv54jyjr3s5epvVtGq+iGk0pGZK/Hqo+D5qf559GcSdgSXCmU3040j8ynIeKU
JFNKw43WoMpZlbSiqlYYIUJyqmEaQ3HWGFqNLX0qCwKBgQDPCdyKo9XyipQNaBKK
bUerUhJFg1du3YhkJnaiHYfC04Am6AXFCYY2A7cJSjfYoANz+niZHOk2e3rrDeS3
bWbEXjar2mgpcXdr6/li2KdPVJDG03/tpY/E4m3MvGi39Fmgu0JUvRzSQCAikAnB
smZGi9dHxskhutQY2w7Q0CwoXwKBgQDb1tSB4QQCf0lAuZEtqkbRyGASPYAli76V
Hq90xAouBtPZRuiTZRZWQl+nQSEohDACm2SkGw36rofCL36stDkI7NQZXpSrajKw
Dd947/bT8i47i2sQpv1yu3YxrS3srylFTcDqnSYXKdFje1DZKIq3oAg74Agq1Ixe
9OTSlA+M3wKBgHxB2egnXk971lGZhY8o+RucXTT1F/OE58fbwdWYTZOjZkVzeYsB
JVijsCXWMmBD4O6pg9m5HUrCn0oVg5CHC2eNd9h6c4tz+w19iaZGi1u0UFPUOfJC
LGAo2WdIKL1G3Mf3u16qRXL2Y5L6ybBDxthOM31zk+E3hPYJ+wFd/zKXAoGBAKDb
ty85yMdS//S+U76IQ72o0rNGEQhoEpHmnBfiglhfYpAv1GpVo1yGwJsPiwWsg7zE
m4WAzl/JaUjrm9MfJESlliTiEgLDeEdeP1CstX0sTiv/vd23cuiKxtdekqYHHTm6
xRhm2MJGNRKH3wanJalrDdtR+Gfukq/AndZ/xEkdAoGASFRIZPwptqHvYqke+Ogc
73ItUBnlygxDAlQP+GtDxbUqLcyt0uW36ByUgsKsNf+Ac6avu7t1zbPTCSjJMvro
YKu8bWjW1ner4DGFjar1knweGi19l6pmEKiioWZu3xUA9wf8OMTZQeoPr1ZGFpqq
ziuOHGaqGcRjUMoAV9LB3eU=
-----END TESTING KEY-----`

const testRSA1024CertPEM = `
-----BEGIN CERTIFICATE-----
MIICjzCCAXegAwIBAgIBCTANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowEzERMA8GA1UEAxMIUlNB
IDEwMjQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMhieB5YJmZCj1aA8N3x
tgZjhn8hQv4lqIDbqOK8Tepl7Aj22NoIN6Y7KjnN0NuKDtHBi9IlAEBkG0j1+PiC
WcTyBlaIqg7RiYMJwMGdjsAEn3TjRdHm9LQuEkmUXu27kWkeLhBrv55bkFLQuDxW
qYBprN999cY4KVVGrObjjuXxAgMBAAGjdjB0MA4GA1UdDwEB/wQEAwIHgDATBgNV
HSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFJvXswyh
WcuczNyDMn8r+TB/92KlMB4GA1UdEQQXMBWCE3Rlc3QuZ29sYW5nLmV4YW1wbGUw
DQYJKoZIhvcNAQELBQADggEBAHtVCJt93gfFw8qmJD/Z4RK7rFWK63I36dgMe7Ot
RuW+B41KBAPMWv9xPKgUdpNcyIntXDd8iOre3pgdDy8wa9dGoYUOD/oU+qTI9Rkj
R9IN/IS3dZLgxG6xsFPeR/x5GokaphTrJa1ZnEyDRuPyA9dOJ4ufV2s3m3SSdjnj
oZUviRAtGBer5LPAqOO8cR467mJTPnofgVsGA496mDPUSoqt2WLhu7UaAu63Oeea
wDlq2TNHSJq38e2B44QKs/7cpwjaDEJs/F0TuvHz5smImTqdpE0FDOXB8mlfsggm
lD/N1JI6JTcJCdONY6BYpmvAcByOZX5SS6CmMv393cfeALQ=
-----END CERTIFICATE-----`

const testRSA1024KeyPEM = `
-----BEGIN TESTING KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMhieB5YJmZCj1aA
8N3xtgZjhn8hQv4lqIDbqOK8Tepl7Aj22NoIN6Y7KjnN0NuKDtHBi9IlAEBkG0j1
+PiCWcTyBlaIqg7RiYMJwMGdjsAEn3TjRdHm9LQuEkmUXu27kWkeLhBrv55bkFLQ
uDxWqYBprN999cY4KVVGrObjjuXxAgMBAAECgYAW04y+XClHpdZhMr/9cF7dXHIC
Ql44yD5pK1ySM4QmquSX4tKyB5SbRYsaWZUspQ3qHAOa9ScRrrWi+o4ZdPPXtQ3X
/N7A618bpi64hQ3/dy81BPPM2d0cSGCuPj9Fh1ZyHZMPan3On3F+XxgmnKg9HvgL
qfuQCthkoHcPP3XDdwJBAP5DK4Ry3TBIoSgOzmbS29QEf6qamj9uAU2VkXoZaHL3
5y85Pi2okKE5AnkzV7iPqs0bDiEHpx/8cexztLgh3j8CQQDJwQphlPhTQekOPmHY
MV8z7PVADC6hVoPHTTjMq5zjpckNav0WY/bu0c7STCskzSZpUN2wju237Comtjsn
OY/PAkEAvqa1GcJbMlozZOr9P0J6jRa2d8EnScp9daRiCfDFTfeuxM0iX3AWyp0J
ysGB1CT9yH+x73hii2xqLAdyieLzVwJAKJb2wLUY1J9BBQWV58nfDnJQ0QbiZsEi
F/m4QK0SDlavQUzSCCwqZNe/FV4PnALOBIgpYbkPqF4SCOHGutiAzwJAA0Ap41Sd
rLtE/ffaQ3YgDbqocqoAFs2k4pLDvsLQy9GrUYVowFUmR/qRssNvAvPX15IwgAZ0
TZnUz2zKW08PpA==
-----END TESTING KEY-----`

const testRSA512CertPEM = `
-----BEGIN CERTIFICATE-----
MIICSjCCATKgAwIBAgIBCjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowEjEQMA4GA1UEAxMHUlNB
IDUxMjBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQCw9M4C7+nAhnTre/8qu/6pJWGO
7l6Ggo88Z+9TKJxWToO1rWFYmJPPSv83QTLOmTA/Gt9HeXgFKX1Y5DIG8S8RAgMB
AAGjdjB0MA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDATAMBgNV
HRMBAf8EAjAAMB8GA1UdIwQYMBaAFJvXswyhWcuczNyDMn8r+TB/92KlMB4GA1Ud
EQQXMBWCE3Rlc3QuZ29sYW5nLmV4YW1wbGUwDQYJKoZIhvcNAQELBQADggEBAACj
0UlmFTWDzmC0EQQw5l3a/2TJrqgcXDa6dJbFrg7c1EPV2NIUtsD0HjaiYlPfLoY0
KUxGsnsZU2XO1IyJbmd0wkejPppajFCwue6HTxCdyQrMZqwVOxN439VWTdKIu0c9
qBaVBu70fBsx/IMru9EWyFaM0wUiKTUBKhFBPJdbBs/3gFb7X3Hgu7LC72mmoCiQ
IBRz1egnk8K80l/1N/ivdYEGJLWDx6CU/HD52o3qQN3yfrIHtmKTIBCiujxmndD5
bmK6D4zi672Aw2+LOY4VgOXCTOq370nWqYA3cPoDTqrpVvJkjoFAf8iVGBL+q5HK
zslptIKp6XNEDj55K1Q=
-----END CERTIFICATE-----`

const testRSA512KeyPEM = `
-----BEGIN TESTING KEY-----
MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAsPTOAu/pwIZ063v/
Krv+qSVhju5ehoKPPGfvUyicVk6Dta1hWJiTz0r/N0EyzpkwPxrfR3l4BSl9WOQy
BvEvEQIDAQABAkAbUXe6aVpPYBKNxiNC8Cnk6AHzJGaQYniFbVA7qNHV2uBjQziA
Tb7Y+bfM5e0W2Y7dPEPaQoTYU3tt4KPQNxPHAiEA3UgrA+pZ18e71KltU+Uh8pRn
4ecXtT/l3Rez3VRk4O8CIQDMuEnh9y1PTFsJI4zylypAhMEoM18jq9BkHRr7surv
/wIgT1U4VscGPt5U8QFtOM7FRPr/43W+gjTObF27FnbTU/ECIQC/COnI90NM0E/T
Q11vsyg2dKtavDV3sAkSoyZe4iLiOQIhAKIupYyWuRk6eb/PxvjrBRP4nFoLk6QT
MK8ETFwpSHaF
-----END TESTING KEY-----`

const testSNICertPEM = `
-----BEGIN CERTIFICATE-----
MIICVzCCAT+gAwIBAgIBCzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowIDEeMBwGA1UEAxMVZGlm
ZmVyZW50LmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEm9Ol
Csap98fLio4DU25+iimxUV7kTRDsMAnS66C3IW6OzzOaC5ATt+OVkjBvIe3gk6Mc
+zxEtcL02CLh+zSBX6N4MHYwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsG
AQUFBwMBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUm9ezDKFZy5zM3IMyfyv5
MH/3YqUwIAYDVR0RBBkwF4IVZGlmZmVyZW50LmV4YW1wbGUuY29tMA0GCSqGSIb3
DQEBCwUAA4IBAQBYSwKJ/fg2JmHmtgAK8jUgI1TVV4Q8GBim0VmUacLQk9hlhqgR
ydHDNLn7Kb7h1PjcsFj6FApNWXwgSxxSYLXnNz4FcDW/R0M3mRS7lcyXZ+J+Um2x
la3WT0aaxNCO4ZMZyT+M3QMTNBb3y+gBUDYUjebrotyqdH9tQhOI1dZYbYx0mFeY
ejT9rjjtGcmjUr5STMywAA5uPwXI2CsKSmekHrZj4/j+oGgTlKdDz80MTzCfYvew
hP5LcTDLWSp7YzPnl0n4QZikWq7sGuIqj3F6oXMeafV999yY/YyrDuzzIi6T5L85
yUHIDduLpiq/jNsdJKwpv0v7tIb06zznJN8j
-----END CERTIFICATE-----`

const testSNIKeyPEM = `
-----BEGIN TESTING KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgvBR2oS5IA3rsZoIP
bMD4+VFIKRur2iDcdqE1LAf++ZKhRANCAASb06UKxqn3x8uKjgNTbn6KKbFRXuRN
EOwwCdLroLchbo7PM5oLkBO345WSMG8h7eCToxz7PES1wvTYIuH7NIFf
-----END TESTING KEY-----`

const testClientRSA2048CertPEM = `
-----BEGIN CERTIFICATE-----
MIIDJTCCAg2gAwIBAgIBDDANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtDbGll
bnQgUm9vdDAeFw0xNjA3MTIxNzMyMDlaFw0xNzAxMjgxNzMyMDlaMB4xHDAaBgNV
BAMTE2NsaWVudEF1dGggUlNBIDIwNDgwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
ggEKAoIBAQDTwPTM06uYwgFYNxjT/KDJBWsEZ9kjjvxVhae6Zj/506+drJC7lqv1
jz4FBuTxrYkuhTEjFirp5++RuunZh5Hs0Hi+t29TEINMLokp/nsvKxXXzax1kKsX
SvY3jz62oPfCqSoVnnoNb6rUurt0AyDFEdhJxck5y0n6SR0PvleXBXAq37h7ugsg
IWnGG2nQ8PYsaTZ1b4w3j+C7Y0s4AXz4rnXzgOWnbRHAwsuItVVZ7W7offv+ddex
M6u4ZMPNDgyNoOiJaa8eZxC2yD6IdUJGCoaeIFZrCKc1fn0Qq7Ig+XuyO1GAHSDc
lP+5OsLNEB+K+N+kTeizIC2xc31DY5HxAgMBAAGjdjB0MA4GA1UdDwEB/wQEAwIH
gDATBgNVHSUEDDAKBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaA
FPycwUBCXOb+Hi4uW8O4hI/tkjPoMB4GA1UdEQQXMBWCE3Rlc3QuZ29sYW5nLmV4
YW1wbGUwDQYJKoZIhvcNAQELBQADggEBAJJcB7a0IdTPX8AxhazG78qmVwEtlP7i
z19HxFqnEmA//KQUuytAiqDzqqRAS8mmCBwWtUqGFtAZ1ig8EhIJYDTvEmtGvzDn
3A+WFHNY2TpZB9V51rJW1hk/CDv1HQ1q7twKX8LcDX0yybsmi9LlZMB1H6cLx3xK
yviUy4/V+7//b82N844aAPuQG+agzmE15KcPRG6xkGcV+beGVQhW65KZy/E0a5IP
dXezsYp2isetxgWZbhXyJ4Ikw1DAHj7YyAz3QxXoXTOcMX+ZUJjANOxzwdVSznCp
tdEpS3Pm7s+uMMIBidbVsc7ygJ9+ay6L7+7BN1nFj+bsf/k6yT8YcTk=
-----END CERTIFICATE-----`

const testClientRSA2048KeyPEM = `
-----BEGIN TESTING KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDTwPTM06uYwgFY
NxjT/KDJBWsEZ9kjjvxVhae6Zj/506+drJC7lqv1jz4FBuTxrYkuhTEjFirp5++R
uunZh5Hs0Hi+t29TEINMLokp/nsvKxXXzax1kKsXSvY3jz62oPfCqSoVnnoNb6rU
urt0AyDFEdhJxck5y0n6SR0PvleXBXAq37h7ugsgIWnGG2nQ8PYsaTZ1b4w3j+C7
Y0s4AXz4rnXzgOWnbRHAwsuItVVZ7W7offv+ddexM6u4ZMPNDgyNoOiJaa8eZxC2
yD6IdUJGCoaeIFZrCKc1fn0Qq7Ig+XuyO1GAHSDclP+5OsLNEB+K+N+kTeizIC2x
c31DY5HxAgMBAAECggEAMLy8m1gsqqAchx1HTaNbrmjc1MrCI3kJgvWcQT6/gtTC
GtxZA5QOSBqL/8QydZ2ncVmekaDMh8GmVjhbEoItiAADioHV0Zx/W81qLIwx9g1I
nb7s7rI5bscGHIuPt6Ec5WTiFs++79C/1O6VroH5zOHqkjA/vFmZ0U16ruD0cAGZ
JogryIheT1aAuJWhNzPEBF5u/Tvk6SOm7am3KqgnmU9REE8CMZgqJwZIqN9c0uX+
4K5WWm8cWCUqrvKax9xNMTNw2VV+n7Y8gtu0wc8JkH1tyTyGg6N2W4NtDItjynGw
F10aqxeolydX4mV97poudtJDOLlwPdDKlQ9OCamrMQKBgQDfXGs+PBYhuB4nHbN0
i7ANpfYOXDM6AlTKanQezVh99k6++x+OcWnk8DjhFE0wVacpC0k2ZDhLW3ChAlu1
KV8jJmhE/VRfx/KGzlUVx2faGAM1b1hRLLffhJTO94DAfV5L4mHOngg3v/Rh+FS2
FRY0ygYYkwwmSoo3uTTmroflhwKBgQDyslPaS8oVZthJh6UX4OaQisDDBW6FTxYF
HlkP90O9M9BMU6+1BRgWoSWEXiPBDKUDJ3QO+Yc5zDK8Khl01anNaJF3res4k0RV
42wsZO8Sg9qtU87hmahAeoFlmJVQ/Q42G4XXMeBwkMhHPJCB0j8TQ9I5rVEV2oy4
tGTS2SgqxwKBgAiQkagsQ6j9V2Kml+gDJzgOwhWg4XH6/udYF6XKt/b0h+Z42Kfs
n2Pg9j1jOuZ8klFXlnIYe7QgCHyUC5IxyO0fHuZuVFrr3tfed5LDN688NntJDrjm
HxLaEZ6yDOTUqdX9E0UJ+ESy/pr3G8BzpItXp84vbUrWluA2INornRhnAoGAVVnx
s2vD/hLVLcbOgL9PVrX1ZKCcZbWSgOpTWBIVeIyoTK+Bs5+/APZbQ1n4KQRRY/KU
FlAbBnCRxyrnGPerZ9nGjthTSOpBthLtEA/PJCvK0/oNX7myOjrbFue6W2kjflPf
lfasf+nrBWJ/T6ipFhVb8XzKb20U4EBQ1PYZ8jECgYBsh0pMTcd6rfBPlSo9Y2I2
a1yKoCm7QP0yfHcIwZPeKh5UDc3JMIIky5YXhWS+3E+3bjKAKJsmj3BPCJpPVyNV
CqvejnvM4YhGdRFRST9i3ABkZ52bXLSJycLMvoPTlrYqT9rpFZRu0SJdP1GYNFlw
R+ajuyCrDBqQKewlTjYuLw==
-----END TESTING KEY-----`

const testClientECDSAP256CertPEM = `
-----BEGIN CERTIFICATE-----
MIICXTCCAUWgAwIBAgIBDTANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtDbGll
bnQgUm9vdDAeFw0xNjA3MTIxNzMyMDlaFw0xNzAxMjgxNzMyMDlaMCExHzAdBgNV
BAMTFmNsaWVudEF1dGggRUNEU0EgUC0yNTYwWTATBgcqhkjOPQIBBggqhkjOPQMB
BwNCAAQF+g0W3NUmepkBbVZxAVwt03e6hsl640luKI8nDv4FNM/OPdKp3HCBP8jP
p7IRbrTvfCR3WLkmM1wbK1PIxnYlo3YwdDAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0l
BAwwCgYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBT8nMFAQlzm
/h4uLlvDuISP7ZIz6DAeBgNVHREEFzAVghN0ZXN0LmdvbGFuZy5leGFtcGxlMA0G
CSqGSIb3DQEBCwUAA4IBAQCEWnz/tPGunsdaOfu7yZuFPanBnlGCVfn9/phrojbE
LD1YNdorAxbvs0CPGYQRhITEn/AnYw+TXZuUTCbcaqWIqbDfjy4zdXKtCl1fvaNT
eLsoqG39II80xMJQvckAZ6AgCuzrGIrrJprlQ/AJo2pEcYHZEllxyAaSMROkpwgB
r/InqtRJkgr1ShrCVqmFHfklTkU3FClO6bwuvEoVu5cq3ephmbA40sVWfIRNqkAP
gYZU1aBQ5dFbuJ35UWbU0YBzrLdeBHk0N/xGLuvSANoZPjMgbRVEStiuu+SKzeqb
sB8aEEOtDQeFu0FrNX8rQdFTscQWd2vsnx7kFLF8VHbo
-----END CERTIFICATE-----`

const testClientECDSAP256KeyPEM = `
-----BEGIN TESTING KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgi4NDLrQA3dC7SzC2
wiBJTQNQeUKHc/iABmlUmVlELgKhRANCAAQF+g0W3NUmepkBbVZxAVwt03e6hsl6
40luKI8nDv4FNM/OPdKp3HCBP8jPp7IRbrTvfCR3WLkmM1wbK1PIxnYl
-----END TESTING KEY-----`

const testClientEd25519CertPEM = `
-----BEGIN CERTIFICATE-----
MIICKjCCARKgAwIBAgIBDjANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtDbGll
bnQgUm9vdDAeFw0xNjA3MTIxNzMyMDlaFw0xNzAxMjgxNzMyMDlaMB0xGzAZBgNV
BAMTEmNsaWVudEF1dGggRWQyNTUxOTAqMAUGAytlcAMhAGzJw5JrsKdUyHfuU/Ja
cxWmii5JNKYtSNM/OXVRXhzpo3YwdDAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0lBAww
CgYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBT8nMFAQlzm/h4u
LlvDuISP7ZIz6DAeBgNVHREEFzAVghN0ZXN0LmdvbGFuZy5leGFtcGxlMA0GCSqG
SIb3DQEBCwUAA4IBAQBqklZB4Bn5RgJJ6iyrS/k+AtNpC1xXEvDlqsqpMFQzvGCe
9c8YPQV0rWnRjNl6GG6rEf5Lf6t6eVlqEuzrtUYJyhbedhpd6OlMc8DW1YAzlQk7
VQAMQ591hp8f5xE2pLJbPi03RTLuQwailxDqc6VETIGmfYMp2gXCI+s7APlKI6RB
Z3MWzDHy5l8MS9lCOYtuUR+c7V8A301ngBuJxKxTJLgURaVfMhb0i9NwqZHTiMAc
F+/GDvrvxqDFthXQFMs4cbae10KpETxzEFp+olRZDhK/ObJiXt4W7a9blv+IzBT4
eAeTh0qxFif8SM9RpLui5tKMdVHzwG0JkNVDLO8f
-----END CERTIFICATE-----`

const testClientEd25519KeyPEM = `
-----BEGIN TESTING KEY-----
MC4CAQAwBQYDK2VwBCIEIAulgeirbJn3cMSajhuoAkmICIRkcSUfqYjHdlvvANIz
-----END TESTING KEY-----`

const testClientRSAPSSCertPEM = `
-----BEGIN CERTIFICATE-----
MIIDjDCCAkCgAwIBAgIBDzBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAwUA
oRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAwUAogMCAUAwFjEUMBIGA1UEAxML
Q2xpZW50IFJvb3QwHhcNMTYwNzEyMTczMjA5WhcNMTcwMTI4MTczMjA5WjAdMRsw
GQYDVQQDExJjbGllbnRBdXRoIFJTQS1QU1MwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQCkFli6h4zzf3qtbdqfA2yRAjIokwPj7o3c11KJ73+H43QyZENo
cTLhYHQ6k3bvlvCiEtDxkfZCwL/tlkZK6aeS7+kF/f91DxBtrPYnew1ZOcdcng21
gXZhrJW6wxmOFOVzyys6SKr1Jhv2tvbow4VDB4mR29myZoHNIU2WyX0HznpBV3bX
rqKGd4WzqLsWD2eDS0gOzCLCZ0AT1Eo4ElNSi04IQY+AjmRnC5Jl1om9dkymMi+t
AZcupw9pMFZtmVYLHrs5omC9jXeDflZbQY5HkW9WXjmNpnqPfZRzU3NKjIj9lRDu
LI9hesQMe/QFmaXTyhawaY4NZGmbHCedKj5hAgMBAAGjdjB0MA4GA1UdDwEB/wQE
AwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQY
MBaAFPycwUBCXOb+Hi4uW8O4hI/tkjPoMB4GA1UdEQQXMBWCE3Rlc3QuZ29sYW5n
LmV4YW1wbGUwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgMFAKEcMBoGCSqG
SIb3DQEBCDANBglghkgBZQMEAgMFAKIDAgFAA4IBAQCmnJmB3GnDgPUDDIJ6B6zt
zL9QwrEc9DMR5gkVlTRtLq6bA0cC47KvBIn+1WeJaVtrDXY8rmNt1zX1nJHV+tyY
KmwQ+qUWQOgBsteSa6xAAq3aevLgCkrZD703pq4GRGC3NcOPzaN44t+8CC1ydGqf
tDbDmzOVnGTVYvEbKlkpVWPBQxNe2rprwbwWHcwTsbJTh7htrVqfmT+nbCbmLtZK
Hfr984B9pHWRtaa/LeHqk1qQlKyEy10LPMFqQCxzterI1wljlznMqHIr69ItVu0j
2+lBMM6b7CB1erHIxEc8Omyo8BUjvPk54NvVW0rwnurIyS7N5cRdMmB1wQJ37fn1
-----END CERTIFICATE-----`

const testClientRSAPSSKeyPEM = `
-----BEGIN TESTING KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCkFli6h4zzf3qt
bdqfA2yRAjIokwPj7o3c11KJ73+H43QyZENocTLhYHQ6k3bvlvCiEtDxkfZCwL/t
lkZK6aeS7+kF/f91DxBtrPYnew1ZOcdcng21gXZhrJW6wxmOFOVzyys6SKr1Jhv2
tvbow4VDB4mR29myZoHNIU2WyX0HznpBV3bXrqKGd4WzqLsWD2eDS0gOzCLCZ0AT
1Eo4ElNSi04IQY+AjmRnC5Jl1om9dkymMi+tAZcupw9pMFZtmVYLHrs5omC9jXeD
flZbQY5HkW9WXjmNpnqPfZRzU3NKjIj9lRDuLI9hesQMe/QFmaXTyhawaY4NZGmb
HCedKj5hAgMBAAECggEALMFpnysEz4+4UuCRTmj9Lko2iymaWIvDRva2LShVlSd9
lJcTacPieGW6HhYFzVDSvqo6MoG49TkkwHWKI7m6etIUMY23pWKf/QI9u8QM/obL
cWAs5hJzSy3rQx8e88mQUjaaylFyy94Cp5b9HrzhtsgyBkY8iTP7eIt6YcQAZeXE
VOoSXau8Kvgc7/ta4wDDlZIhqswNQhiy9cxthN8/awS2satUVPdyJFyfrpEXrcO1
n5NzX9esgJlP12K89xBH4Ufp+JtyKZytkhsZGuMpiytD1rqeTXr7A2sBb0sWIvBo
+6GrT9Isc824k2d9uNrhK9fdvCwfLVwwlFnq7q6b7wKBgQDOPQWbRjG64IybHAEJ
dq6TN/OFRXJI/TlqbMLAewRx1u+QnQAP5ZyxdGtdyLWaTbxPWUSZXIBJ6mzHZzZ8
OFgpav/gHvpM/DTnDn4n4xP9x8z1DdDfEvsG9e60/0GH+abLEmkFO81GhmCCoDDv
INVRTN6Re2EMdj0ANb0ck8P4vwKBgQDLrbo/piqYe/zyvWbZVmbqISRfa1t32oEI
geu0LrYSqIZw7kJoaF8pgluFIeeKDQ306yCDq89IjQhUW2PGUZBxgor6WH88dnDX
6LMsSSD2dGYt2dBBPIwRCtFRi/b5h43NnTnwKgxU81To+uzDBm14pGDae493BYeq
dtCK1p9w3wKBgQCFHfQJdjRRF/EJiPjOX/Fsire/NMUAgZnWrJ7D2GNVC1OT9xJ8
MEuEas2GOi+lijlayhayGnefvhU6W89aPJADI9JGmhgbKssGvF8HZdWYf6c2IRXJ
dpnas1DBOOTWXHihKJ/qxd/IfqG6jqUnI/0sPb6HDqjkf0j+YrFOyb27RwKBgQCb
yjY7mQ3btHq18MlKVBxD2TXJBoTgF/G6YCW5nEEH5H9wwc1pruubBGqcWmKP5YxX
WcF09WWHSNimLYEToC+rov5KnoYz6SRHAWaK6SSdXksJpyDzxSwdnPieN0ChfF2q
eCho2sCz+atoyQVv5uq07IZolzoU/9XVPSwmBiPOYQKBgHRYoOQ1gX+fIcwq2zHY
sy4zhupKB2VMWvVtDFMXG3x+nSWEUiVees/hKiMuEWfEqcl7h3LmGEV/9AG3rIda
qvASpQH1VxVPrwcOX+fxGzCx/8X7RgT8Po+TRCuKagOzC+itp0HTXXWPUKrfuNYl
yuf7A8y3xgn3vqrcyh/WiGBh
-----END TESTING KEY-----`

const testMLDSA44CertPEM = `
-----BEGIN CERTIFICATE-----
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
TV7RjDlxyto=
-----END CERTIFICATE-----`

const testMLDSA44KeyPEM = `
-----BEGIN TESTING KEY-----
MDQCAQAwCwYJYIZIAWUDBAMRBCKAIM8a1fxYCblHvzo3x9uavfu/+Y7OUb5lYoJL
qnbwgtTV
-----END TESTING KEY-----`

const testMLDSA65CertPEM = `
-----BEGIN CERTIFICATE-----
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
vnMs873bjTTgS1lsz5g3MdhdthkClkRc
-----END CERTIFICATE-----`

const testMLDSA65KeyPEM = `
-----BEGIN TESTING KEY-----
MDQCAQAwCwYJYIZIAWUDBAMSBCKAIAWnF0iC4QjtrRkfxwmmacv+Zz2FF5IyXH/m
Qe9bIgL8
-----END TESTING KEY-----`

const testMLDSA87CertPEM = `
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----`

const testMLDSA87KeyPEM = `
-----BEGIN TESTING KEY-----
MDQCAQAwCwYJYIZIAWUDBAMTBCKAIMibSRsCWz+t11YGH79759TbujcY4yDPZTU3
vhOsKldo
-----END TESTING KEY-----`

const testClientMLDSA44CertPEM = `
-----BEGIN CERTIFICATE-----
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
TaNnHL/Q/SI2A5QGDWd9uuzK7J1CrOCeGY4=
-----END CERTIFICATE-----`

const testClientMLDSA44KeyPEM = `
-----BEGIN TESTING KEY-----
MDQCAQAwCwYJYIZIAWUDBAMRBCKAII5EEAujaF75iFHbh/5upbESvZaSqPcJEeCf
XmfBcXF+
-----END TESTING KEY-----`

const testClientMLDSA65CertPEM = `
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----`

const testClientMLDSA65KeyPEM = `
-----BEGIN TESTING KEY-----
MDQCAQAwCwYJYIZIAWUDBAMSBCKAIHc0sLE9IOj0qS/LdWJjcGOX4ZNAhipBMj/m
owTO9Efi
-----END TESTING KEY-----`

const testClientMLDSA87CertPEM = `
-----BEGIN CERTIFICATE-----
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
QbYB8toDANSqHg==
-----END CERTIFICATE-----`

const testClientMLDSA87KeyPEM = `
-----BEGIN TESTING KEY-----
MDQCAQAwCwYJYIZIAWUDBAMTBCKAIO0ApFYp+hPgm4FudJgWVsHWUOBP+IVRa1eF
To3lHU0g
-----END TESTING KEY-----`

func parseTestCert(certPEM, keyPEM string) Certificate {
	var cert Certificate
	block, _ := pem.Decode([]byte(certPEM))
	if block == nil {
		panic("failed to parse certificate PEM")
	}
	cert.Certificate = [][]byte{block.Bytes}
	cert.Leaf, _ = x509.ParseCertificate(block.Bytes)
	if cert.Leaf == nil {
		panic("failed to parse certificate")
	}
	// Don't parse the private key for ML-DSA certificates with FIPS 140-3 module v1.0.0.
	if cert.Leaf.PublicKeyAlgorithm != x509.UnknownPublicKeyAlgorithm {
		block, _ = pem.Decode([]byte(keyPEM))
		if block == nil {
			panic("failed to parse key PEM")
		}
		cert.PrivateKey, _ = x509.ParsePKCS8PrivateKey(block.Bytes)
		if cert.PrivateKey == nil {
			panic("failed to parse private key")
		}
	}
	return cert
}

func newTestCertPool(certPEM string) *x509.CertPool {
	pool := x509.NewCertPool()
	if !pool.AppendCertsFromPEM([]byte(certPEM)) {
		panic("failed to parse certificate for pool")
	}
	return pool
}
