// 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 }