Source file src/crypto/tls/certificates_test.go

     1  // Code generated by certificates_generator_test.go; DO NOT EDIT.
     2  // To regenerate, run: go generate
     3  
     4  package tls
     5  
     6  import "crypto/x509"
     7  
     8  var (
     9  	// Self-signed RSA 2048 root CA, CN=Root.
    10  	testRootCert = parseTestCert(testRootCertPEM, testRootKeyPEM)
    11  
    12  	// Self-signed RSA 2048 root CA, CN=Client Root.
    13  	testClientRootCert = parseTestCert(testClientRootCertPEM, testClientRootKeyPEM)
    14  
    15  	// ECDSA P-256 server leaf, SAN=test.golang.example, issued by Root.
    16  	testECDSAP256Cert = parseTestCert(testECDSAP256CertPEM, testECDSAP256KeyPEM)
    17  
    18  	// RSA 2048 server leaf, SAN=test.golang.example, issued by Root.
    19  	testRSA2048Cert = parseTestCert(testRSA2048CertPEM, testRSA2048KeyPEM)
    20  
    21  	// ECDSA P-384 server leaf, SAN=test.golang.example, issued by Root.
    22  	testECDSAP384Cert = parseTestCert(testECDSAP384CertPEM, testECDSAP384KeyPEM)
    23  
    24  	// ECDSA P-521 server leaf, SAN=test.golang.example, issued by Root.
    25  	testECDSAP521Cert = parseTestCert(testECDSAP521CertPEM, testECDSAP521KeyPEM)
    26  
    27  	// Ed25519 server leaf, SAN=test.golang.example, issued by Root.
    28  	testEd25519Cert = parseTestCert(testEd25519CertPEM, testEd25519KeyPEM)
    29  
    30  	// RSA 2048 server leaf, SAN=test.golang.example, issued by Root.
    31  	// Signature algorithm is SHA512WithRSAPSS (rsaEncryption SPKI, rsassaPss signature).
    32  	testRSAPSSCert = parseTestCert(testRSAPSSCertPEM, testRSAPSSKeyPEM)
    33  
    34  	// RSA 1024 server leaf, SAN=test.golang.example, issued by Root.
    35  	// Key is too small for rsa_pss_rsae_sha512; used by TestHandshakeServerRSAPSS.
    36  	testRSA1024Cert = parseTestCert(testRSA1024CertPEM, testRSA1024KeyPEM)
    37  
    38  	// RSA 512 server leaf, SAN=test.golang.example, issued by Root.
    39  	// Key is too small for any rsa_pss_rsae_*; used by TestKeyTooSmallForRSAPSS.
    40  	testRSA512Cert = parseTestCert(testRSA512CertPEM, testRSA512KeyPEM)
    41  
    42  	// ECDSA P-256 server leaf, SAN=different.example.com, issued by Root.
    43  	testSNICert = parseTestCert(testSNICertPEM, testSNIKeyPEM)
    44  
    45  	// RSA 2048 client leaf, SAN=test.golang.example, issued by Client Root.
    46  	testClientRSA2048Cert = parseTestCert(testClientRSA2048CertPEM, testClientRSA2048KeyPEM)
    47  
    48  	// ECDSA P-256 client leaf, SAN=test.golang.example, issued by Client Root.
    49  	testClientECDSAP256Cert = parseTestCert(testClientECDSAP256CertPEM, testClientECDSAP256KeyPEM)
    50  
    51  	// Ed25519 client leaf, SAN=test.golang.example, issued by Client Root.
    52  	testClientEd25519Cert = parseTestCert(testClientEd25519CertPEM, testClientEd25519KeyPEM)
    53  
    54  	// RSA 2048 client leaf, SAN=test.golang.example, issued by Client Root.
    55  	// Signature algorithm is SHA512WithRSAPSS (rsaEncryption SPKI, rsassaPss signature).
    56  	testClientRSAPSSCert = parseTestCert(testClientRSAPSSCertPEM, testClientRSAPSSKeyPEM)
    57  
    58  	// x509.CertPool containing testRootCert.
    59  	testRootCertPool = newTestCertPool(testRootCertPEM)
    60  	// x509.CertPool containing testClientRootCert.
    61  	testClientRootCertPool = newTestCertPool(testClientRootCertPEM)
    62  )
    63  
    64  const testRootCertPEM = `
    65  -----BEGIN CERTIFICATE-----
    66  MIIC2zCCAcOgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
    67  MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowDzENMAsGA1UEAxMEUm9v
    68  dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMmvg91HhTlfaXcjKwqY
    69  G35v928fjA9m4NOeJsH+stqIDoQJeCwimlKwZ0uSmNgABZHhVl4qhcavP0mXBVhG
    70  wOAyKkZNYX5CP2Thhw8d0OFJpeP9kxDSFHev0Fa7XUGlBWQk7Zbmad72Agx+Oe6f
    71  RUSVt2pmpAIEzRRtQJpqO6cwtXvHH1KA2XKLBK2zLup7V32N3fQC21WjX9dZhOa+
    72  Y1fqyF10V+ugHbcLQJxbso0hvnhLMLW3DNrZdoL6NaXUVG7UeweIbZ9z3oITOEVk
    73  iEBKGbtvGd58UnFfwnecO30utOp+kaJoYLMme6w/elQ0WV+G+AysJGKFCAWRb13q
    74  4HcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgIEMA8GA1UdEwEB/wQFMAMBAf8wHQYD
    75  VR0OBBYEFMghBhPWIX5rQ3No+FB3KfrcDBEaMA0GCSqGSIb3DQEBCwUAA4IBAQAs
    76  aHAaPhMaHULTTn62b1/dpgxLLge+iVNyCaJmi4ic/XnkSZV3ZsZp8dvoQZPR2vmU
    77  BQLr3nqEMqpVvEnsPhAYJoEAYEUNkSMdiT2rKp3eLF/pt03qSfrPjyg+LTnyRMYU
    78  zzocbEqDHPH0NvBdQdWBCGqMIYulR02TEKKEqamuYMiFFQq2VaFS06rTIa4jOOwU
    79  VRBVcjqzTs3W+TKXEgT7VuGQmW6OndRHG5iQdnlpv2tFBSiNT65IwzxLfLXr7POY
    80  Js7Ja+lM2GRWzWSp5RZdCFs/6N4HzF911PrOzuTd6mE/jaGERCKyC+SEcUHo4PFH
    81  US9Fl9vXoWO16TbQsw3D
    82  -----END CERTIFICATE-----`
    83  
    84  const testRootKeyPEM = `
    85  -----BEGIN TESTING KEY-----
    86  MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJr4PdR4U5X2l3
    87  IysKmBt+b/dvH4wPZuDTnibB/rLaiA6ECXgsIppSsGdLkpjYAAWR4VZeKoXGrz9J
    88  lwVYRsDgMipGTWF+Qj9k4YcPHdDhSaXj/ZMQ0hR3r9BWu11BpQVkJO2W5mne9gIM
    89  fjnun0VElbdqZqQCBM0UbUCaajunMLV7xx9SgNlyiwStsy7qe1d9jd30AttVo1/X
    90  WYTmvmNX6shddFfroB23C0CcW7KNIb54SzC1twza2XaC+jWl1FRu1HsHiG2fc96C
    91  EzhFZIhAShm7bxnefFJxX8J3nDt9LrTqfpGiaGCzJnusP3pUNFlfhvgMrCRihQgF
    92  kW9d6uB3AgMBAAECggEAAyyjhy6SfrotN0ZS7ZpCSIWrn9CfzDhCzqHdG02OdBkT
    93  HWnmvc8XnbiQD6TxiejKLacdzGKf82YbuWVKnL6UV5MCjlO2dp3FUKmqDgdam8kk
    94  dsetcmTUFKQsQ8k0KQ3XXWGlaawbu3okwxyTfdl85hzzI5YU+8Emly03CJcmdDWt
    95  Yq8VZJnicXZJKhpSNrn9rZGYtY3mRb3SHF4ZYTnQZVfUPoCcEtXUY0NTjHCsLS2G
    96  C3C6HpqLrriInHQ7wlazkozpxspVxXMUrRhvqDwNRvO+OjLF1o0uGar1F3WD1Vy6
    97  PTw5JoNcxRHJW9uuN7dsuPYdYVy2MNWWQV2ztlSH2QKBgQDySEUE5O1S2oEGI504
    98  3ctVYVkUQYwxTImaH7vn+Pul2793pWNboTHu3+2n76gF7/4b5VwWOoeKQ5Ztn4KX
    99  omYgsq0Qn58xuPN9r/0oA5bWbx930JblCvmAVjnnJMNvfC1qv4Yoz0on8aoxrClW
   100  6WEcjn+EOAusIN5ybnxZztyhDwKBgQDVGtJfAS0D9smvBk34xIovI/SwGM/N/Kse
   101  pNNoO8QTMWkXToBGwlOSdmU+ZOwbVxomHpfaPnbKnyZpT3cRZncI3GvVMqX2Fy6S
   102  Kkl/pgRqdrL2z2ueGV6sLAKM6zRNtaqmIO2kVGr2wZh5vVDQjMpxNhRlsJ4ZULiO
   103  KAgJBIJ6GQKBgQC9iBOWFJAjNJOifdHMXpVmIVVSJ0TIfBtY2mJgwcH6qcFKk7L6
   104  R0uMltiPe0dx/aBHqlEzgm3tl5nh/9plTMGf6qbATl52wzyXokjkOIqTDTMMw7yH
   105  SOKNpuZ9D6FjYT0WOOV2n1JflQmS+h8Mwl0Zvc+7WyymZsAdvJjCmLS3uQKBgGJt
   106  lwkmg+I21ISwxsbGEIUheFz1uNWNhIQM4VBdenza741CRuFn1C3r3WtqNduS6ZL9
   107  wmmdPETuKVGu0HIK/6PqGyxHznvRzULZoUUCKzv5Q0PYHf7R/PZNBYiNAoV6CS3e
   108  O6UREK6UUJa6KF+LB94uelFVuFA9BmEygDOaD6HRAoGAFPH5t8MJBfcSFn+fCEn4
   109  07Fzd0Kbd1BFQVb1BODSULnZHgEr+mFuraHvhAckXv9dQqWgfgAeL7PuXbQKwDCs
   110  na3Xe84REd24dWz97Xw7aBSTYyIkmH1cZMT+04/5WjKqR/LLLCIVCTpcRdjyJvlL
   111  t1WXdk/pn9qUzJ+lbWLWK8M=
   112  -----END TESTING KEY-----`
   113  
   114  const testClientRootCertPEM = `
   115  -----BEGIN CERTIFICATE-----
   116  MIIC6TCCAdGgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtDbGll
   117  bnQgUm9vdDAeFw0xNjA3MTIxNzMyMDlaFw0xNzAxMjgxNzMyMDlaMBYxFDASBgNV
   118  BAMTC0NsaWVudCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
   119  rjkvgogt5oCTTJq07XGumWrLAGsr/9c8ZuS1HNMCflb4D8CsqFSUUHWVh7C5T0AW
   120  K/O3B9VDCiw/NT5VWqLLvcFpOwFQz9nRHGPZYfk/KRQiQYwio8Kd48CL0wgSh5pM
   121  Y0zvhLsNxv3ezJqWNlRz8SDkVA551A83s8DqTt3YFmAA0odQMp+EH7e6AolbO75A
   122  TtUa6G4A2ywA+vSoQ+g6ccqIbTmRCKKvrTlAXOZ5Oe1vk1FyBIK0rpo7vimfUU11
   123  sbZ0gGbbPFfybDSp0BIUUNNSTZbfsENz51aJwR2AmszhkP5b5M7aljdVxCAylkjM
   124  G8ICiwcaZVcCxk3Me1/syQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAgQwDwYDVR0T
   125  AQH/BAUwAwEB/zAdBgNVHQ4EFgQUEXNuRxhdpiEaG0xhJjnI+17pdCQwDQYJKoZI
   126  hvcNAQELBQADggEBAHJyN8rYdY9dRT5oUfkci3SYn/q+uiguNotK8NH4qmM83Tdm
   127  Ekpk1iM8K4JXLhK4AxnhDEAz4jhiSJjbl8RvEODRlc4/03bHa/JQJJjBIR27oQLl
   128  OW+GTZNL0wyM5D8rqHPDr3PAfTEDDhCjfp+VQRaNs0uTLrJD3QAoSCSxfLptk0uW
   129  ZcL7u715Ns1IbacEue3ZWkqI1pwrpMHaGigV6qsMWKJvbVqu7I+XdtW6/EK1drEv
   130  3wk1sOmqK5oLy8sulgJ+oUHxoSsBPIRWYcdkqQZeyRf85iX1vIWqHm6eoMfYijzH
   131  RtP3e2dpiCGsatBcFp06TQXe1TUsw0xULmKESkk=
   132  -----END CERTIFICATE-----`
   133  
   134  const testClientRootKeyPEM = `
   135  -----BEGIN TESTING KEY-----
   136  MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCuOS+CiC3mgJNM
   137  mrTtca6ZassAayv/1zxm5LUc0wJ+VvgPwKyoVJRQdZWHsLlPQBYr87cH1UMKLD81
   138  PlVaosu9wWk7AVDP2dEcY9lh+T8pFCJBjCKjwp3jwIvTCBKHmkxjTO+Euw3G/d7M
   139  mpY2VHPxIORUDnnUDzezwOpO3dgWYADSh1Ayn4Qft7oCiVs7vkBO1RrobgDbLAD6
   140  9KhD6DpxyohtOZEIoq+tOUBc5nk57W+TUXIEgrSumju+KZ9RTXWxtnSAZts8V/Js
   141  NKnQEhRQ01JNlt+wQ3PnVonBHYCazOGQ/lvkztqWN1XEIDKWSMwbwgKLBxplVwLG
   142  Tcx7X+zJAgMBAAECggEAIos7oI/EPBUHv7NYBtFYy1n5lKRrRa+lLgiQYX30G10+
   143  k48CHOEiRB7ATnZrk6tTChVpV8AA6hoyUSoCDfXD3GSmKvkcjw2y0MR6dFrRW2F+
   144  1kzFDH+4wxDpGGdcFy9wkGrPfduBxJAPFjXbbTvK/kclhoYVQUbgJj+spYUGhI7i
   145  CTAg3rE/HpxFdSpkK4LDAx00TOY3Yaz86RkKXziKempCIVnpLiVJ7H8cT//KQ86X
   146  rQSLbd1dqWbK7thOQi8ncsD2WEo0tjNoj+oqPAmmxTLM4ex5yGjK2bOUWXwjziNs
   147  aOv6GHCfObdbBx7/UXFwUIejRiD3EAPFjz16LqPYFQKBgQDGWeKYklGhv+UXxqdl
   148  iTjlh4thE24Bsva6sxcQrgtP0S9ZyqK3/D6oPc219g87IK40ZGc10HAykU9kTmhY
   149  uqphXOKhsUUKRmKYb9pECiMqw1lR0YyQYldzWTL+QtzX1BMWyILisfqG3dh8ih3T
   150  v9BdgOWsbMJhkDJShIiSOvHMZQKBgQDg3BnN4w8Q/Bz23uldm33kc5+TJaQPsDd4
   151  MQr9IlP5yILIFEw9TQVCxiXyE4DiA54611v65XRZEmnR2oAReEE91VgI+2EsuZyf
   152  bi+iL/JamuB129qjm3k1hEFXeKrkLeF2z4IJ2FffVvAAOGXwzIQwQHanR/xOn/Go
   153  Dl6mmZ2+lQKBgAJP8fBNZF46WnVYf4MTgnJKjjlnfJTQfUfX5qDvJnqbua2WSydR
   154  7XkQn2FLqQnLa7x4nytlbqloQECvGVBPfMT9zDaOVnu0LloQk77PT3GkLVpi0vyr
   155  6NETbSDBrsllU4OkesIhyQXheDCbe5WIWul8IzFLY0i34Z5MpTrvLPpxAoGAAJqW
   156  tybU84a5zS/sEIRKYkKtOwfu2NvwSjJXhTaCYzlWoJLtYXzDdtpxX6UNw42e7ymE
   157  5beYCGU0Q4wCrAlWo4PfKKcEK8qT0RnKpvTaAcRItghRHf9c4/fm9QUt8E7vPBJy
   158  lvQtyDvDiTydiXgDIt4Jc4mN8+gaDgl715ayBcECgYBdAeBE1ouvZHsNgStO5WVA
   159  JHT3S8zf5wtUKqXfhQntQ1kd1F1epRj04ow9zTRsxyW4nC6ALRDY5HJ6xSZR+UEB
   160  ejB34PlrIQt7n6uW5UYsCtbnMP2syg4tO3NLL5t2ZuIJQXpZX9JeyYYp3B5XR95N
   161  AKPqm1mhD4P35csdrn7rQg==
   162  -----END TESTING KEY-----`
   163  
   164  const testECDSAP256CertPEM = `
   165  -----BEGIN CERTIFICATE-----
   166  MIICSzCCATOgAwIBAgIBAzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
   167  MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowFjEUMBIGA1UEAxMLRUNE
   168  U0EgUC0yNTYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS9dZlr1XMmgtrhblTa
   169  hJ5JRmrd8xXydAesNdvvF3TkJj/OguGHsn+JU097Ehn7XvZCFaUaJJHTMCgv73ZI
   170  Wt4Mo3YwdDAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYD
   171  VR0TAQH/BAIwADAfBgNVHSMEGDAWgBTIIQYT1iF+a0NzaPhQdyn63AwRGjAeBgNV
   172  HREEFzAVghN0ZXN0LmdvbGFuZy5leGFtcGxlMA0GCSqGSIb3DQEBCwUAA4IBAQCu
   173  nQ+Ay3bv3aGQ8ln16WkENHPv86heUdavb74Ij7ihfYFUhGZZCESa3uY9DpBCA4TG
   174  4O3NUO9A5NHxOdi+dkvgFCpbw2ZMh/Q+repCPVUadQ6vSn0XCpHowrY9vf9ZUJa1
   175  RYILmPs1zg8Uinkk8jZiL2ZaRUxE7UcGAFDhEnKAU5bwNZ1qVPjPvzn9k23LaSeZ
   176  2fT79JvR6s+Dn6o3dKBEo2Ain6VCcRuPXGc84LhXzjx6mt3W/w0475flaDsWuhui
   177  +WP4UprhBFIIbmQUHDGsZWgwPF3+niKsWPgdmeBewsSt5XSKqAhd/bkBOCWPvp1M
   178  VwJpdknLbM89X1sHqDaa
   179  -----END CERTIFICATE-----`
   180  
   181  const testECDSAP256KeyPEM = `
   182  -----BEGIN TESTING KEY-----
   183  MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgB4u8mljMa3oBNFGF
   184  nsxjyt0kIECav5As173/6SRrI02hRANCAAS9dZlr1XMmgtrhblTahJ5JRmrd8xXy
   185  dAesNdvvF3TkJj/OguGHsn+JU097Ehn7XvZCFaUaJJHTMCgv73ZIWt4M
   186  -----END TESTING KEY-----`
   187  
   188  const testRSA2048CertPEM = `
   189  -----BEGIN CERTIFICATE-----
   190  MIIDEzCCAfugAwIBAgIBBDANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
   191  MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowEzERMA8GA1UEAxMIUlNB
   192  IDIwNDgwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkrgMsWRYjVakp
   193  9ycq+iHT+ab4IGOypOB+n8akx1ZgDQYK4s/28TwVqhGOOPKs1HRl82x+lD/MgLnR
   194  FY8rUkIPYIkOhU0yprFM4tSIvDs6fDLZyyUKZCU1J/RiNQlpfwSCw338/MFG17h8
   195  3I4pElDnyQLJhpG1jb85Pi/4Zin5TFaIc0J/cBPItGNWNIXaL0iI2FKJ6nORXOYc
   196  XTjoNfC1MlQVYC0OxbuHlT4x5MeldAGPMi7YXiPpminBXlI6ZgZj5GEtDXUnLrMm
   197  gxCpSplbKOYV+qPOJqkT6m4chxROSKrshrnoQH6zkQ4WXpJR52vdsN22Kjkk1fpI
   198  d4ime/s3AgMBAAGjdjB0MA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEF
   199  BQcDATAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFMghBhPWIX5rQ3No+FB3Kfrc
   200  DBEaMB4GA1UdEQQXMBWCE3Rlc3QuZ29sYW5nLmV4YW1wbGUwDQYJKoZIhvcNAQEL
   201  BQADggEBAAgeUB8EIZVzF12CfbK/YRuA7Vz0iBZa1WTxRS9gHFUwBa6uHjw6kXrE
   202  KmO9THDCtf4+BronnUWw432ax7t3AgQlPUBDTgBE62X+xr+u/V0fgeYuEdlH1w+f
   203  ex439hy87v0Mc/pSr1hCjy9+PkV9bIRIu+AeDxMD0AJ5C0hd9y2axb4gDG7SW28P
   204  A2o6qcj8AWKsJeaBFDjHkAX8qW65LEXwapjiee+0kREGIntF0lmZq+DHQICgv6+U
   205  VrzpH364lmIfWTiu2b5ouCv+MZeStt78Y3MkIw5jpfe/P3J4vTop4cmDwqQDH011
   206  n6JziaM/dzjYvLMtbmf0nh4oOauForY=
   207  -----END CERTIFICATE-----`
   208  
   209  const testRSA2048KeyPEM = `
   210  -----BEGIN TESTING KEY-----
   211  MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDkrgMsWRYjVakp
   212  9ycq+iHT+ab4IGOypOB+n8akx1ZgDQYK4s/28TwVqhGOOPKs1HRl82x+lD/MgLnR
   213  FY8rUkIPYIkOhU0yprFM4tSIvDs6fDLZyyUKZCU1J/RiNQlpfwSCw338/MFG17h8
   214  3I4pElDnyQLJhpG1jb85Pi/4Zin5TFaIc0J/cBPItGNWNIXaL0iI2FKJ6nORXOYc
   215  XTjoNfC1MlQVYC0OxbuHlT4x5MeldAGPMi7YXiPpminBXlI6ZgZj5GEtDXUnLrMm
   216  gxCpSplbKOYV+qPOJqkT6m4chxROSKrshrnoQH6zkQ4WXpJR52vdsN22Kjkk1fpI
   217  d4ime/s3AgMBAAECggEACI4XVvdkdb2BGYLQbPktRen6oARpvYefwtzzWi1xJnZP
   218  KDpvH4TLvKZqI/ESWjOM+eRSjTOBuxERVFMftZmibbTXgR5z/RzjWEYfsV6+tA6I
   219  +yRwbTJtCCS5ZrB80BlUKMLdS4j2f25szZKVaLN/08wKAKedtFKjOW06YU6aCEfv
   220  J7KSGC6sx3CudU0lavNJw3KB8QMz6RiD82Wu9AMUbwBURqAgL/+kDTPZxtpdLS1f
   221  +ISdsI/Z7DrQvgZeBdN0yJrULs5XNXDXopDxNSzoVIKykHX7CAvolpgG0NRowdDu
   222  I9tfbdPhdxvKb0L5Z0FdJ2oHl1N9bVLWjMOVpL7Q8QKBgQD7hRVga1dGj32fTSpH
   223  Src36H54Mex6F8bPopJ+absWFARXCvpKhUDYFccr9NBVb55H0BE5ZsP4Jby4r2h8
   224  76uNJm3JqxSXUzZOu4wkZX4scj3jCmBAfhGHJBFGj3/oRMsvsIvvzJcSmUs8eDhQ
   225  ftXj8abXEFGprhhJ3FSHJmkNQwKBgQDowMd6oUbx8Ser0CQQYEr/48YutsX7WK+q
   226  FHSnnYWwk7wo6Szzz36SbIxN3eLPxEp05BOSc8jryR/o8UpbbqGy2Nk9JX/cV7ZW
   227  L7x/dACpLsSjQgbwULoWPIo7lB3EwnmQi54BUnhUJYLYJNvePGZvUKncLwySoJhM
   228  hzNkICCg/QKBgC8VHodKELBYs/9aBowJ5HpGv0Xosoe4Y7MCj8GyMR9U5+sTVv8U
   229  KqtIiFwmG8mid1KiFFdWcWDGT6mSzFB23PozM2II8HXTUdszKGy3wwK27/bMPnBU
   230  KRvPGJzIx/zGw/JNbiSZe74zi+3p40DOPWPKHJ0tpNvKhylsYTZbblbZAoGAODzU
   231  Ngof1TeaiUYKYLaTiI6lhQX+gkOkdijpItLJyad4kD3+8Y4SHBkEMZBKTD82alXt
   232  cLZvNqFrB2K9v6fUhB0nKEIWScwbr2lrVzRVMIuvUW8TtB8dR2ArWkfohXEj5EwH
   233  ynP9xP8nRUhqo6Dec0j/Mcdgd1E8W0lTnn6ww5UCgYEAixPtaa24gRNXDEhJHt/h
   234  NHnla924ttUh6l5cSDFfEk+hEQjwIavg8wvf7lsVNpLMQk2piAM3HYCwx51CY48P
   235  tYxA+eH0IdI68FYdGBaa4WVEipRz350OH/mxkgH/DayAIz51J/IYjqX1KM8asw74
   236  51ALpcbHoVs8oQtRKt4fBmk=
   237  -----END TESTING KEY-----`
   238  
   239  const testECDSAP384CertPEM = `
   240  -----BEGIN CERTIFICATE-----
   241  MIICaDCCAVCgAwIBAgIBBTANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
   242  MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowFjEUMBIGA1UEAxMLRUNE
   243  U0EgUC0zODQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQHr6c+jKVgUjIxV4DSYp0P
   244  GO1UzOKqdG9pU5rsTfL3qdwqhiHqthA3r2pzDYD3U1KQ5OBbPUn6oqTOtnGwm/qB
   245  LNjKmG8BHso1DN0tDwkuvEsjrjwI1fccT/n2LBapeIKjdjB0MA4GA1UdDwEB/wQE
   246  AwIHgDATBgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8EAjAAMB8GA1UdIwQY
   247  MBaAFMghBhPWIX5rQ3No+FB3KfrcDBEaMB4GA1UdEQQXMBWCE3Rlc3QuZ29sYW5n
   248  LmV4YW1wbGUwDQYJKoZIhvcNAQELBQADggEBAF2ToAYsdiR+hQ+G/9iNr8QSHZJA
   249  K5Nf1aEzLeDhsfokJs+3yExnc/P2DSSo5qWIgyOZ2aCY2jpc4GtxwBW+FTDzqApk
   250  gDNBksqw7Zc/HhpP9ou1qilgLzBGgVpFDq3yeiCHIZBgzL1TteqqjsYMybH25X6q
   251  cy6hWBljfejfhRPd7NIDOWPjxdO2v+fU+PQoQzJPhfp7TwMxMEMNaDx2EbOY59hw
   252  LlpIVGzrDJTrq+jQyPGuV4nEKk4/JvC41/ccc2OInGu+fGnRxUeYeyIGQqHYby60
   253  MrD8DF5Erq1RJNodGpMIyPgWdQbeHSZ9fCg6+mYtiW/o/Et6sIEnSyqxpqc=
   254  -----END CERTIFICATE-----`
   255  
   256  const testECDSAP384KeyPEM = `
   257  -----BEGIN TESTING KEY-----
   258  MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDCL/DaTbyfSdvi56FP8
   259  KZsRsxukTkN8tJ1LGJIhgXoWdo130jZEV/MCTGHusfBtM7ahZANiAAQHr6c+jKVg
   260  UjIxV4DSYp0PGO1UzOKqdG9pU5rsTfL3qdwqhiHqthA3r2pzDYD3U1KQ5OBbPUn6
   261  oqTOtnGwm/qBLNjKmG8BHso1DN0tDwkuvEsjrjwI1fccT/n2LBapeII=
   262  -----END TESTING KEY-----`
   263  
   264  const testECDSAP521CertPEM = `
   265  -----BEGIN CERTIFICATE-----
   266  MIICjjCCAXagAwIBAgIBBjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
   267  MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowFjEUMBIGA1UEAxMLRUNE
   268  U0EgUC01MjEwgZswEAYHKoZIzj0CAQYFK4EEACMDgYYABAEMLkvszWdMsq+lflV8
   269  3KdY6DhglnXL5gJO9jb1XOC0c+tFMSooS44NXQRIToAadfzJUTewGUL+VkQXlPl6
   270  keDmLADx4yOsffDeSribamkEK8K++qMeFHMvgwZEaN/OfgYMLKLyahSjwJoiHY5m
   271  C9cnNvP+u5fAkk8KUWX7PC7DsG6feqN2MHQwDgYDVR0PAQH/BAQDAgeAMBMGA1Ud
   272  JQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUyCEGE9Yh
   273  fmtDc2j4UHcp+twMERowHgYDVR0RBBcwFYITdGVzdC5nb2xhbmcuZXhhbXBsZTAN
   274  BgkqhkiG9w0BAQsFAAOCAQEAAzAXcKOwI3m9culoq0YKRqJP4vsYsK1J0dVZxN95
   275  grGk+3BI/rArCjTZLd+LHHTuDtmcUfdgE5oHu6DGJ+t3lxCClKiR0NY4E6NU7wsL
   276  4mCbig5UIEFxQeCbjxwztCZadNIoQSB3BaAe5Fz1NlwDXMS0rX89psViIOaDZ0K5
   277  d3h2Vce5ZKSKqzdGtNb/hgO54ygE8hg4tjhL8hIvR2NMZyjEvVZYbxzZknQNBgTY
   278  /tyx/80Z8pKtau4jAn1GlQ/KJZm8Sg60YvL+WPouAil9brK3mF6PhG519rk/HnXe
   279  YWgQEvYUPuolNurFdxgX39m7HmWJVvnbEICsH1IWVkJhww==
   280  -----END CERTIFICATE-----`
   281  
   282  const testECDSAP521KeyPEM = `
   283  -----BEGIN TESTING KEY-----
   284  MIHuAgEAMBAGByqGSM49AgEGBSuBBAAjBIHWMIHTAgEBBEIA8/P1h6fuUKfoQoLL
   285  EuDvoSmVZBssO1WUYanDHgjVb6fmLNFY9/0rump23QDTU6kyRhpstFKrZxGPDMF1
   286  wOF3QuqhgYkDgYYABAEMLkvszWdMsq+lflV83KdY6DhglnXL5gJO9jb1XOC0c+tF
   287  MSooS44NXQRIToAadfzJUTewGUL+VkQXlPl6keDmLADx4yOsffDeSribamkEK8K+
   288  +qMeFHMvgwZEaN/OfgYMLKLyahSjwJoiHY5mC9cnNvP+u5fAkk8KUWX7PC7DsG6f
   289  eg==
   290  -----END TESTING KEY-----`
   291  
   292  const testEd25519CertPEM = `
   293  -----BEGIN CERTIFICATE-----
   294  MIICGDCCAQCgAwIBAgIBBzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
   295  MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowEjEQMA4GA1UEAxMHRWQy
   296  NTUxOTAqMAUGAytlcAMhAFYe5dPUD+RLtPOKFJ0N/HzD2WuxG/wKWC76DF5Ahyjl
   297  o3YwdDAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0T
   298  AQH/BAIwADAfBgNVHSMEGDAWgBTIIQYT1iF+a0NzaPhQdyn63AwRGjAeBgNVHREE
   299  FzAVghN0ZXN0LmdvbGFuZy5leGFtcGxlMA0GCSqGSIb3DQEBCwUAA4IBAQA9V3RC
   300  sJpWNDPG+em2o1SYsFvnNnP4PJ1I13OhXkJPbH5Q/Ro7QfDWoK8v5xDri5T4Na8m
   301  1OX1aaUQU5s20+/Z5z0LFjTzLSStbmzZ1JviVwgRwroA5OUf6dPKyn/nIeNQqffA
   302  079PbJQErPocp/X4Cuw1t2B5Kzq1fpzCB99PJW/QCl11UcHYNqQ4/Rmnlzec1lT9
   303  rtN5xo/UFoH5XdiVaEnCABzIH4PqPJRJgHuEDWe26enLsGYCev+nsPLWwgcgrSPF
   304  gnNJK1aFF8kHFxVnrKdETQzm3/+1n0fEJOH/OuSMbAurW+m0eq+12M4CsjAGhjxZ
   305  S1jLk5ArvL0Zox11
   306  -----END CERTIFICATE-----`
   307  
   308  const testEd25519KeyPEM = `
   309  -----BEGIN TESTING KEY-----
   310  MC4CAQAwBQYDK2VwBCIEIDehsY6HTvsJId7lcQkPbTJPZtfuzzOY0ufnZsXiVwX0
   311  -----END TESTING KEY-----`
   312  
   313  const testRSAPSSCertPEM = `
   314  -----BEGIN CERTIFICATE-----
   315  MIIDejCCAi6gAwIBAgIBCDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAwUA
   316  oRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAwUAogMCAUAwDzENMAsGA1UEAxME
   317  Um9vdDAeFw0xNjA3MTIxNzMyMDlaFw0xNzAxMjgxNzMyMDlaMBIxEDAOBgNVBAMT
   318  B1JTQS1QU1MwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGG/4RlVQv
   319  LnHGynuHsM/ff9PTd6mxt31ZyvB+1TEdTnz3YIbn9gDPkt2nNK4qHLI6oPmzwytK
   320  jpitEP+nJ4EgdFUOlE6WQX779CQVETBaijkRFRD9EwziD5cZXtswL002v39JAc6o
   321  BuJ0RGN6IJwu6FPk198o5mR1JaK6BFvYE/W8tu5eTAIw7oLwkE7/0L8dyAtMnZ16
   322  icESeuFLvnGV/NYqNTH1XbO47ORRnp6E7EdZMdhQIOrnS69uDXBhNXPxeSfF6b00
   323  X98OCHA/4iZjOGyYwVpFvW5a46ChTo2hJKRtbsgACx9s1p++D6J7WTgVCI78N+vX
   324  7incQlsd1ZtBAgMBAAGjdjB0MA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggr
   325  BgEFBQcDATAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFMghBhPWIX5rQ3No+FB3
   326  KfrcDBEaMB4GA1UdEQQXMBWCE3Rlc3QuZ29sYW5nLmV4YW1wbGUwQQYJKoZIhvcN
   327  AQEKMDSgDzANBglghkgBZQMEAgMFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQME
   328  AgMFAKIDAgFAA4IBAQCb46iLsWMUqJSeLlT7yUuuYFIWlXEamM+ZkOTUXvC5rzOq
   329  Mem1YbHaApGqynw0X+jrG2EC0GDKjgUTiVNtk4HnsCBKnEQ0Ew6XDC3+fCy71oky
   330  assPVr60mpq+iT5wnss4a8woAeCtIwIH5pfUBUU+kqX8HvQFbaTwMNJe7oyo9jRC
   331  esXo4f7TL51ETA+ZueqFLU5DslYMjENxQyilh1lLFrcBYOrL4Ja03PQ0q3zJDhMv
   332  wHTuyKJ1HJ67+8aTmTb0G/zmq3coc9HUTptgy2iTIVSdwAYNN9S77Vb3C2tAY9GZ
   333  EdbK1bsoMtPvAsdUsLqb15ILgmhL0SrNV6lCHtmL
   334  -----END CERTIFICATE-----`
   335  
   336  const testRSAPSSKeyPEM = `
   337  -----BEGIN TESTING KEY-----
   338  MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDGG/4RlVQvLnHG
   339  ynuHsM/ff9PTd6mxt31ZyvB+1TEdTnz3YIbn9gDPkt2nNK4qHLI6oPmzwytKjpit
   340  EP+nJ4EgdFUOlE6WQX779CQVETBaijkRFRD9EwziD5cZXtswL002v39JAc6oBuJ0
   341  RGN6IJwu6FPk198o5mR1JaK6BFvYE/W8tu5eTAIw7oLwkE7/0L8dyAtMnZ16icES
   342  euFLvnGV/NYqNTH1XbO47ORRnp6E7EdZMdhQIOrnS69uDXBhNXPxeSfF6b00X98O
   343  CHA/4iZjOGyYwVpFvW5a46ChTo2hJKRtbsgACx9s1p++D6J7WTgVCI78N+vX7inc
   344  Qlsd1ZtBAgMBAAECggEAEVagVxoeZs22C/urMY4+NzWZDKwvqBvixuHNyA/xDztQ
   345  ERd73x/G5OPZ7dkcuBdQWvS9PegiKRGPV7BB67d3o+dCjXbZ5OkhC7yLjuN0+6uW
   346  wIG7Pab17PAH3aLRZKdzJsw+P92+YDLQDXRxz128xZc0RnZFM+9sEdukIQsiHahE
   347  H97Qx1rLcksvCXSGzJYZ6O+loasCgWNNrdyqgOvmR4ATImYHX7lDvCVUEHOotKSs
   348  Y9fUoQUs4Ooc9pRlQ+3kDYyXjxaEhY6/0jzgdr/8cCUD90JWjQ21m2Ke0zBjOTgN
   349  JIeXvIipfck49T9ZAfsqia8EZoZTdMHATNrk7AST1QKBgQDlG6wm/A8HfmHienW7
   350  uWAKcDQmpY7WpaL7F8JVVlzfEBn5s1vDpPohRhqccilfoyDKaBy8Vax3TZKRvfin
   351  FbYDVKAilTq+0pLU0ru0iRZ1t2NnfAo8ZJcbT5uHsEf580hlAqpsrZpMTZPhU5U8
   352  HRG77/uUPwaUVDmiYf38tWzA3QKBgQDdXNuSz3Yg9GBQfwy9M8Qc1k1cIWZcJIAp
   353  HJH9iGStLyN4vuDwdjsjEo7JiifVv4imTdRtVq9qWK7YRqHl/XwSKYLi3B/JMCWB
   354  togvil3MALECBTEPjq4IdY1hOI/WHuyUA5mZJLJ0l9YtBwMvx4aVRK5xwq7+cml9
   355  D/dpBerLtQKBgQCcE3v1muUKL9izFsW5uxFoSwPcCBEEvRYIhCkJRapC848egkdT
   356  QsJ7hGyAg20YD+M4wDBDRQIWzCu7SXVpLesu3amxpYO9l2obvevNk05Ppzz6tI+s
   357  kMI4AsVrbHW8GzYISgabvrBMptTFPdF+gDciltwGI+FxjucsbiE+1MFfqQKBgH6u
   358  AlZc9YxcbbYDT0YDluqt1W2xC4QVu2ZLnFyMLplRjaovCklyT9t9Zkt+DdfsGYaa
   359  qcO8xPxGLiFFIqeczeES8n1jXalkLUKzM/KI666wgpvWXsI5c+0RYMxPczklT1xR
   360  Rxh2AM5qij4QcklolONdf7tIn56r2SSh+4OVyE21AoGAfyh7R4Aav6HoqVhYebBp
   361  P1woELziAUZcBj6s8MOJrpwftnDzSB0g849JZjd5QBQREY3TGKV0mO41zWB7oo7P
   362  dlCJYKMUj4c99/wCiAj0dRetM8MxqqvMMXYLxdXB1fJgEefkPw3phMQTje7L4DRB
   363  VKQIwE/j/jUCaREu2Zh7FW4=
   364  -----END TESTING KEY-----`
   365  
   366  const testRSA1024CertPEM = `
   367  -----BEGIN CERTIFICATE-----
   368  MIICjzCCAXegAwIBAgIBCTANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
   369  MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowEzERMA8GA1UEAxMIUlNB
   370  IDEwMjQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANs/JRcBqvbSn/lx+Rt7
   371  V/E5lOSgIwPRZTO6M2y/7j0BbRkiRgl/3N/pmW5zxQ+NYg5QB0aeYrQ1xDnPTe5Y
   372  PI24cBq58N1pSneZr+KM4fp9/l13ZrweNkOzd5Mmurzd1m32ShyxtmHrwe7NQV6F
   373  /RMWLHhHMypfK+untwfHjuRPAgMBAAGjdjB0MA4GA1UdDwEB/wQEAwIHgDATBgNV
   374  HSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFMghBhPW
   375  IX5rQ3No+FB3KfrcDBEaMB4GA1UdEQQXMBWCE3Rlc3QuZ29sYW5nLmV4YW1wbGUw
   376  DQYJKoZIhvcNAQELBQADggEBAAnjkK72QX1944AppqMLw//F18wTvv9a0oh4keac
   377  g3p7SP7C4aljOX7Udv1deovoJv+y2az4VRz2y/tVgVedhL3p173QffSln/YoEeFT
   378  z3/CgXo158AMHdBcM7kiItfVV7WMqxS52CeuX3Mr7CxzGbndGcWw+Ux2+CWlxaqv
   379  7gPWMNGiZJiHnbfYgtJ/Ux2LqRFZ+gONHADs6tKo7xLa5Vd2gzaZrp75UA8nkOgX
   380  I7Z4kOrtYGoUgFYzc7LBK8UN5NZbs4F2lrfesm5boP6745Dslbt4QibJgkdwgmDv
   381  5xwNg2i3w5E5C3oP0P/TI5JVa9aaEDV9GNoBdHoiumYTTt8=
   382  -----END CERTIFICATE-----`
   383  
   384  const testRSA1024KeyPEM = `
   385  -----BEGIN TESTING KEY-----
   386  MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBANs/JRcBqvbSn/lx
   387  +Rt7V/E5lOSgIwPRZTO6M2y/7j0BbRkiRgl/3N/pmW5zxQ+NYg5QB0aeYrQ1xDnP
   388  Te5YPI24cBq58N1pSneZr+KM4fp9/l13ZrweNkOzd5Mmurzd1m32ShyxtmHrwe7N
   389  QV6F/RMWLHhHMypfK+untwfHjuRPAgMBAAECgYAEL88CAvakUv5aEZqbsz3JLfvR
   390  Z9tzUbbYh4g+3eVrRdEzBywGN2pc3kWfTdeoBd+m/VE+QH0LCvHN1s8aq5WwaBX/
   391  Dxt8THCWL614OFKW32rMqfrbKSc2eVjL8TDe8xLOjBBthW/hJ0t8M6qlkAWuOOxf
   392  Kvkvo4XaXSmtVxHX7QJBAPFHkIjBCmmsTMRG8Gq/XNqSYvWlPdygh4h43W4ARCxN
   393  gp0fZAyHoCcSKisJRW7lbocybuhuwU+SCHoUkqGAr1MCQQDon3VonKqdQCYTJ04F
   394  VP+eX/7Y/oYhMFosk3bS2OvefAH6XGkZ5rw1rLNRWUqOzy4z1BK1hznEH0e2rYDB
   395  /aOVAkAdl69sdnC2gUFxGVpHXW0gCbBFfJzXwICfBmPyJ+o0nNUWPFFjEAdeg2XU
   396  nXB8p3sk7dSYgW0IO1r6zicl08itAkEAj2nfpIMR3Kiz0JMm0rq4bReZsoYYg1Wg
   397  AmNXml4J7LxfK87VLRbHaf/y/XAjOzAXt/RDJI8d2f++4qzM+Mw6kQJAMRSaXW3+
   398  YvNVgLLvZlerVvFcN6nBweiQxxO/IiNHRMr6YHHzDqFWTkXhGLXllAAOYt0y6G+R
   399  NkIDYZn2WDHWLw==
   400  -----END TESTING KEY-----`
   401  
   402  const testRSA512CertPEM = `
   403  -----BEGIN CERTIFICATE-----
   404  MIICSjCCATKgAwIBAgIBCjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
   405  MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowEjEQMA4GA1UEAxMHUlNB
   406  IDUxMjBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDIRxnTSVsGi0+ghNABVB1yCR1p
   407  7VD+udOWRkJKKRqVYe6UT7B3VKZiD+S8qzVmFis2xfuZ4IONrXOzYYL1HAJ/AgMB
   408  AAGjdjB0MA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDATAMBgNV
   409  HRMBAf8EAjAAMB8GA1UdIwQYMBaAFMghBhPWIX5rQ3No+FB3KfrcDBEaMB4GA1Ud
   410  EQQXMBWCE3Rlc3QuZ29sYW5nLmV4YW1wbGUwDQYJKoZIhvcNAQELBQADggEBADzR
   411  lznTzLetqyKR+mXUrnQbkELjbudjzCkHNPKv0vxzHkqtlJYF6v9aySAuBm4p2dU3
   412  5J+Pnmcom37uuRdYQG1jjJiN5a4O8nKYRQ+H+GSJTe7aRT04jd6Q9NZSGcbKuaEI
   413  rT9BdnyqVv77/A4a+4tDZR8POCeB27UpzC03iJQYn8zUx2mGMIJAALvA+DnC5mMW
   414  ed/JPwqa1CBdXvwtP/lusFpMhiYWM5cWb24RVbE2bK6586YOkSDOqZRQ99vcv6o0
   415  l1k3qNdhroS+qSbEQ4WFHtDnjDZOIg3IGUbVm3ACQyXFwpJMNr7F6Sdkb44tTs6S
   416  QlDy9XnSkXatsgSwAyo=
   417  -----END CERTIFICATE-----`
   418  
   419  const testRSA512KeyPEM = `
   420  -----BEGIN TESTING KEY-----
   421  MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAyEcZ00lbBotPoITQ
   422  AVQdcgkdae1Q/rnTlkZCSikalWHulE+wd1SmYg/kvKs1ZhYrNsX7meCDja1zs2GC
   423  9RwCfwIDAQABAkA2IB0HIHKEtL6ay3npegGRMYxs9bFnffIEUU2V/EDOcNNg3Niu
   424  kyr5/f9WSxfzUAEurHeMulTJoIilu1+x70hlAiEA/UB5UBcxKwF/HE4YkdmgZe+F
   425  lDc9e2BR8FDFisB6/PsCIQDKc3drx+Ivjpn/8BhXTG4S8ZalnvRiqpTPyrSxqK/R
   426  TQIhAIoR5pHFsyaxMC2sXjTWI16v0XHXFAv5nXKZdrmI6wSVAiB/B8itJnS0ZoQW
   427  5e5ACMMgu9pM/dpWdrZ9U7Hhr/jyGQIhAOuVBcwqFKC+QUh5FiVjWGZw1nSbjJNA
   428  4dsEckX2ysJ2
   429  -----END TESTING KEY-----`
   430  
   431  const testSNICertPEM = `
   432  -----BEGIN CERTIFICATE-----
   433  MIICVzCCAT+gAwIBAgIBCzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRSb290
   434  MB4XDTE2MDcxMjE3MzIwOVoXDTE3MDEyODE3MzIwOVowIDEeMBwGA1UEAxMVZGlm
   435  ZmVyZW50LmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5dCd
   436  gbt7rpOpqnc4uy2iSZ19dW6bKrFoJ9Or+pD2O47ZHpZcp9ckaJnE9LSfZQBWQvl8
   437  gKQiHcPnbG9a4DFCqKN4MHYwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsG
   438  AQUFBwMBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUyCEGE9YhfmtDc2j4UHcp
   439  +twMERowIAYDVR0RBBkwF4IVZGlmZmVyZW50LmV4YW1wbGUuY29tMA0GCSqGSIb3
   440  DQEBCwUAA4IBAQC7xKlz92vEX0gIvf2uVJRO70oDd0Vm1qeqFTXH3slUundmtPxD
   441  9UwENbgQHD+w47g62ZQ35Fx7GOQHW+YgW5f9JLmcNvZ0brElYLggAZFslzic08AS
   442  Pg2KDKUAUsPhyxw38tSa8RQatql2RtjUynrtEYX2enJcFCdDWKd+zeMu3uBOgsTU
   443  2UehsFoUV4RGsqiahRflTuEV6fCQGOOea96xEdxYDYEXUPdTGnAk4hm07/3P1xN3
   444  ot6BNI2pA8bxoOs/gctlQNuVKIHmbV38GyFDMU2umqOCgQwKHxaQ415Eh+TPUeYU
   445  bE9+HU83VYt1mE/lmyb4w1WqSPd6+pJJi2Eo
   446  -----END CERTIFICATE-----`
   447  
   448  const testSNIKeyPEM = `
   449  -----BEGIN TESTING KEY-----
   450  MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg2TNUbp3GTmOdLExt
   451  XJ1nVXVhvfE+nYjlG7HYpdxDaOKhRANCAATl0J2Bu3uuk6mqdzi7LaJJnX11bpsq
   452  sWgn06v6kPY7jtkellyn1yRomcT0tJ9lAFZC+XyApCIdw+dsb1rgMUKo
   453  -----END TESTING KEY-----`
   454  
   455  const testClientRSA2048CertPEM = `
   456  -----BEGIN CERTIFICATE-----
   457  MIIDJTCCAg2gAwIBAgIBDDANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtDbGll
   458  bnQgUm9vdDAeFw0xNjA3MTIxNzMyMDlaFw0xNzAxMjgxNzMyMDlaMB4xHDAaBgNV
   459  BAMTE2NsaWVudEF1dGggUlNBIDIwNDgwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
   460  ggEKAoIBAQDsBErzJLpTQ4ugNsigS1xz5kZ4usEzLVvlasvRhpRhVej79uqu68ri
   461  p8IET/ftCdQqscO0aLWr03Gs4A4OdNTDKz7yQVhrhaJJ4kwOxXZEtqgfjJiQP7sM
   462  1MAX068FZkUFgcaUsIr8tqntkRWadq2ysAFT0P9QS/2F4br6GywZkjCAyEzifzKx
   463  7wRwWTh5WqaWJ1EqaaZi9biox0jGS4KXcaTbkFoLgBGjFW+oMMxb28qXxJeO81BW
   464  wHz0J15YWUnp3aitQ/rjWV3+JQ9q6EASuBkMxXqhco4i0MwpQTRi21MbkDccgqld
   465  te837Ap98z/VHN1yjP0ak8SDhuqweAGxAgMBAAGjdjB0MA4GA1UdDwEB/wQEAwIH
   466  gDATBgNVHSUEDDAKBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaA
   467  FBFzbkcYXaYhGhtMYSY5yPte6XQkMB4GA1UdEQQXMBWCE3Rlc3QuZ29sYW5nLmV4
   468  YW1wbGUwDQYJKoZIhvcNAQELBQADggEBAEMFtQ7FkFmLDXNe3xlmYUu5UcVCaIik
   469  QE1c5RK10WEm1ar4lXbzW3QPMis7dQbUpRv+AdBS3L4yIIZGpET+N6X4OXSZXFjA
   470  eZvjmq4nkZJeUPGDhlzm4wybw13dEJIoMPEBsCp+5bfgAOcHkHxLWeQNPHIRzW2x
   471  gMrzJBalAuF+YcWJf8g9KcwLB0+lvjc+gUwtXTAIViLcfxoGr804WkJ1gG0shAfG
   472  WosRlhFS3OwfljlPDmACQAVqL48AeDUPgkZQZKbA4tVjOlpfwdjrp3o+mi4NeYvJ
   473  u2+Z1JpxrEtMRU5K3ws02cfR6YDV5a/lUFij/qLJi90oyOOP0aAsf60=
   474  -----END CERTIFICATE-----`
   475  
   476  const testClientRSA2048KeyPEM = `
   477  -----BEGIN TESTING KEY-----
   478  MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDsBErzJLpTQ4ug
   479  NsigS1xz5kZ4usEzLVvlasvRhpRhVej79uqu68rip8IET/ftCdQqscO0aLWr03Gs
   480  4A4OdNTDKz7yQVhrhaJJ4kwOxXZEtqgfjJiQP7sM1MAX068FZkUFgcaUsIr8tqnt
   481  kRWadq2ysAFT0P9QS/2F4br6GywZkjCAyEzifzKx7wRwWTh5WqaWJ1EqaaZi9bio
   482  x0jGS4KXcaTbkFoLgBGjFW+oMMxb28qXxJeO81BWwHz0J15YWUnp3aitQ/rjWV3+
   483  JQ9q6EASuBkMxXqhco4i0MwpQTRi21MbkDccgqldte837Ap98z/VHN1yjP0ak8SD
   484  huqweAGxAgMBAAECggEAJc0ANhYlU42ncMcldersCVIR6mc651f19nYW492SqU5J
   485  rQVcjByO16N3wxoNwuTGmvnyttPoePc6Jy6RgcY7h3DHOaS2pS33kq7QcLM2oIXC
   486  wp7RlpTmgAUZKRfJ2esJ1fp1lD38XMJiz/5jP+SPKGXhKIv6QGGTXtyLBmDQvN1q
   487  5L+za0fda7jeDrtu3rLKgwHEOapWMeH8+V2dhd6xLlxWwrj64B3Jn8WX1hkgIZ+m
   488  9NwMR2cJC+UdDpDa5LeOoYbrXHkbRxOH5mrAUeGWBSUxxBQda75Sz9za6jMwJqnx
   489  UqIvGzvut83w5skoFP7iM6CyT2MuWvX0GydNUkIYEwKBgQD/UwoQ/1+FbSE7N8hQ
   490  WLTuv7JKM2IJdSFLQj+Yzo0/wwswqCMuq+db8uv4NfPPO6JPcraWHUpd18WGKXEp
   491  FTI2HulBWLpqw6bD3zE4a0Bol5kiQ969Kd82fN4UP06/thxg3mujGTVLbSRRexWK
   492  6rXb2rrkVfQxJXKuUjGSnMKM1wKBgQDspCyXJs8Hh9eoIn6AsLKQ582daSHupsep
   493  xF1mQIoUUYQF0Hx7vsualyVLHUrANUPxJqoOSTo1uemjAs8MoNtQ+6JTLN6KZm5A
   494  kMKtiLM++4lTs1UD7jwTrvruRplEvd1fODdT2ON+v9wk6JpI8J0/PFIx4y9n0x+S
   495  rAZfcObMtwKBgDrq25DOjSlJ5Hg4yBWaUq4hODAdKUtLZxJpyCknyLpk9KkWs3+q
   496  lWnHZaJSON+iQDMbIn0DZ0y+ZMsvtvgm9v48JdE5e1L1sP7T+xSs0yEPknuws65t
   497  AiAdslVzwmVEzcmgqa/qOj0cg1v2DiOPQ8Xm9GeKWh4ZKRyGxP+zAsXjAoGBAJWF
   498  EkubENrAQUoSKX4kp18Zp/ha0j7ZkHS7BwyxoM0/yDxoRA9oOXt/Hug8JNwXi8tW
   499  U8LdD/OceXwvLSXciVa8+A633hDysZ0IGonNQvx7sIR7Xi8ymzEQsapWX0do8/PT
   500  MFpBQ1T14yJK+hk2NxUahxDQbEacxmlFWm15h8s3AoGBAKajlsx7B9VCfaqzjU53
   501  CzMHz3hoszC/+HPBT82s/BGCyXRV0jQeA4T9bp7LPs+eY+cZ4N6OGQ70uK+3076x
   502  gAAWi9aEA6kbNdknWDb5KO6vuTN+f3zZ3YpeP8ifAektv7sIbpurM/69VdPVUwEH
   503  TJXn9YjuZYTmpBrk5KtDEYUh
   504  -----END TESTING KEY-----`
   505  
   506  const testClientECDSAP256CertPEM = `
   507  -----BEGIN CERTIFICATE-----
   508  MIICXTCCAUWgAwIBAgIBDTANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtDbGll
   509  bnQgUm9vdDAeFw0xNjA3MTIxNzMyMDlaFw0xNzAxMjgxNzMyMDlaMCExHzAdBgNV
   510  BAMTFmNsaWVudEF1dGggRUNEU0EgUC0yNTYwWTATBgcqhkjOPQIBBggqhkjOPQMB
   511  BwNCAASDWYW9MxCCKZnZaUjaf/hL4QD2i874rm2R1U5I1O47WZeul/Y6J2422O0z
   512  3r/xuqlqhYOp8P5yoo6YR/XwXA1eo3YwdDAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0l
   513  BAwwCgYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBQRc25HGF2m
   514  IRobTGEmOcj7Xul0JDAeBgNVHREEFzAVghN0ZXN0LmdvbGFuZy5leGFtcGxlMA0G
   515  CSqGSIb3DQEBCwUAA4IBAQBaI1xV46tLs+TLAQerTUzvBTZmPvs+kziXHHmuC6jx
   516  q7ZOs9h+DpJDFArKSrAfM9vjzO08vvX8b/doc00KdvN/bQkMA0BQlg6X8g3H8S5V
   517  uUGDdAiWGN3NGQbB5fYI5XYNAVoGTOtBjEIGSd0Ty4kX1C5dUkO27QkX0AFo/F4c
   518  LqqAl7QZUXhhGctZ11z+GSJ7cCgEqCOPlcVyG9mX0d7NcoDaNUDFVpORSY/plLJ9
   519  h1exVocKmOWmodVygR9F7rVKGkNJyu0nFc/Zt9qCZ7rLPF7rEXOdk9ahswRXsW6y
   520  kGuCyxJjcWMqvlsXRqoKX4VIEnr8IBfN3z1q8KHbdW9f
   521  -----END CERTIFICATE-----`
   522  
   523  const testClientECDSAP256KeyPEM = `
   524  -----BEGIN TESTING KEY-----
   525  MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgoCm3FG8lQ9/Sy062
   526  erOhhh6UhBhurb1pyTFfLcn9kV+hRANCAASDWYW9MxCCKZnZaUjaf/hL4QD2i874
   527  rm2R1U5I1O47WZeul/Y6J2422O0z3r/xuqlqhYOp8P5yoo6YR/XwXA1e
   528  -----END TESTING KEY-----`
   529  
   530  const testClientEd25519CertPEM = `
   531  -----BEGIN CERTIFICATE-----
   532  MIICKjCCARKgAwIBAgIBDjANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtDbGll
   533  bnQgUm9vdDAeFw0xNjA3MTIxNzMyMDlaFw0xNzAxMjgxNzMyMDlaMB0xGzAZBgNV
   534  BAMTEmNsaWVudEF1dGggRWQyNTUxOTAqMAUGAytlcAMhAJWTDErnPfxfZDEmCvWk
   535  Xl9fKxG/U4KP1v21Rx1XwNVHo3YwdDAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0lBAww
   536  CgYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBQRc25HGF2mIRob
   537  TGEmOcj7Xul0JDAeBgNVHREEFzAVghN0ZXN0LmdvbGFuZy5leGFtcGxlMA0GCSqG
   538  SIb3DQEBCwUAA4IBAQBnn5ZTqWKjSM5WRHyyBWL+kb5syhzZlOLunjqb7oPjhqIf
   539  akRypE3IaHLkMZctvDbkMlPEfkpBhIG9pvLnf3/Y7iuvMZJsHQomHfBn46TtX/Zv
   540  cRNjYQz1kBgIHmjEoxmgmMjyqcHcaGvxEf+ot8qJbhr3OqFOybwx3N0NITbGvNwc
   541  WX8V1exg//f0ezn+VrMKs0c0fSFgJz/7IooNEuB5qpnNp9jbklfUw8B4BhiuDfx7
   542  cNk1e9cYz1vRjYnPxYPc/TcfEpOA3xKoM53+L5qRVfvzuQe3pfy6uKOauF0AOE6p
   543  Vbiw6DoJb36H/yulheD1PWcEB7BakpgYbto1Tnet
   544  -----END CERTIFICATE-----`
   545  
   546  const testClientEd25519KeyPEM = `
   547  -----BEGIN TESTING KEY-----
   548  MC4CAQAwBQYDK2VwBCIEINmF+fxP1U+/SJ0ujrdEM4bffoMfzJSs+xw9VN1BmSBB
   549  -----END TESTING KEY-----`
   550  
   551  const testClientRSAPSSCertPEM = `
   552  -----BEGIN CERTIFICATE-----
   553  MIIDjDCCAkCgAwIBAgIBDzBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAwUA
   554  oRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAwUAogMCAUAwFjEUMBIGA1UEAxML
   555  Q2xpZW50IFJvb3QwHhcNMTYwNzEyMTczMjA5WhcNMTcwMTI4MTczMjA5WjAdMRsw
   556  GQYDVQQDExJjbGllbnRBdXRoIFJTQS1QU1MwggEiMA0GCSqGSIb3DQEBAQUAA4IB
   557  DwAwggEKAoIBAQCr9HTdPKgp8OzGrWHAdvJKtvomYL6MuXI7lcReWU76dIwoP4fg
   558  jxO0T1/4kjFmhFNlt8N8sU7QNiPconHOuaPRNHKAD8dxceQHXteh2RI/FBPWfax/
   559  Oepj8sBhDaJITgv+sqPJXS4oonDCVWPCe9JJntQOd4B/W97dJaYeQzEhHN7OKegW
   560  qbc6/PzUQtstcqfwztwW4ukfDo05m7vdJ3hkYRfs/+ryX0tHqJUtuptQ5i/ttazP
   561  5RGTdg2t4/JDcEcLAt+ue1h2VsLV1ybtmrqo2GKT5D1RaEk1P2s6klAEQ/VxAiDB
   562  SnPQuL/nPKKvlxOvCInC25iEKjFiVOSuHbn9AgMBAAGjdjB0MA4GA1UdDwEB/wQE
   563  AwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQY
   564  MBaAFBFzbkcYXaYhGhtMYSY5yPte6XQkMB4GA1UdEQQXMBWCE3Rlc3QuZ29sYW5n
   565  LmV4YW1wbGUwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgMFAKEcMBoGCSqG
   566  SIb3DQEBCDANBglghkgBZQMEAgMFAKIDAgFAA4IBAQABrT3Yg/StetX89IRCAykP
   567  b7mIg3C/+5fVb2qA5WvF/S38zbFr0o27xdizOyeH8mP3DTSEaxJVTRvm/CJoWCM9
   568  UNljoLp/n8JPIJ3QDx8Hy4XBSIP3IgPoaqyLMezhFwnjyb+t5eRakTSUarlT2ssE
   569  GGPTTbM2FX7TBqyaOhMH+LNSsm7YQFoYWU1A5HQ7mLkYxlQXYhiRG0+flTPGuSbA
   570  UJs4c20upw+Bl+O/fACowK4/eHtHAgKshufLIIaI6p4YCdDMZeRsbXQmGC8asv+l
   571  EFd6ADn7vFps1e66aaExreM7qnfNdnttWOvHs9kzcASzn5RIlseguJVW65rHwWa/
   572  -----END CERTIFICATE-----`
   573  
   574  const testClientRSAPSSKeyPEM = `
   575  -----BEGIN TESTING KEY-----
   576  MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCr9HTdPKgp8OzG
   577  rWHAdvJKtvomYL6MuXI7lcReWU76dIwoP4fgjxO0T1/4kjFmhFNlt8N8sU7QNiPc
   578  onHOuaPRNHKAD8dxceQHXteh2RI/FBPWfax/Oepj8sBhDaJITgv+sqPJXS4oonDC
   579  VWPCe9JJntQOd4B/W97dJaYeQzEhHN7OKegWqbc6/PzUQtstcqfwztwW4ukfDo05
   580  m7vdJ3hkYRfs/+ryX0tHqJUtuptQ5i/ttazP5RGTdg2t4/JDcEcLAt+ue1h2VsLV
   581  1ybtmrqo2GKT5D1RaEk1P2s6klAEQ/VxAiDBSnPQuL/nPKKvlxOvCInC25iEKjFi
   582  VOSuHbn9AgMBAAECggEABFYzVVOrwEUKGUrZo1Q/15g/4yEymEavP02PaO6/lTiR
   583  XIyy1VXE1WatrbP0++T19bCGnsaZzYDNpjydk+BhzCUShzEx4nLqh8oOgULOsqZD
   584  utFE43+KYXA60sFlUjjPru7ovquAMZIPng/i86gSSjBWILHgXOkfZYkgl6flQ9rv
   585  NiK2t/bbC0ciayZ+fKJaei2kS7uMuB9tQwV065uvORwYf9mXJX59xAq4xuTVfFK2
   586  OlekWJgFzf/zIX2VDu93948iNgdyJpMTVOaJZctfXbXdy7tjh9/tFQyep9JYF/Wu
   587  TdkNt0f7KEwmSSAy/HwcIhzCznVglhGVOaNzyMbsSQKBgQDR1qVbkxmlIn+k1xTz
   588  TvtOW03Uk3N5qDUi4g9sMBJed5CXZxcAkl+WCuMw9+7OI5rkLVNCBOQf7c0gk85k
   589  Gu7jXzPoIZRxa6fEqdpuVfqgFxc+27zdBB75+QQghAEv9dHW9IM4AqgImnP6EHiK
   590  ctXmajfUDhOKlEVAZjwq8fstSQKBgQDRyFgM0MLNOKeUxI88n/jWw5ovv5282Ttx
   591  oStY75TEbhPl/P5z5CHduAuPCHus5+AhqzthZMr3k2AIdLZpBaUFICo6sM2RDgJv
   592  hwJ5rHBOEifvYGYgHaqNZtr5+zA0RqRCuYbOXM9oGCp17DBVX10wTRRIYtO9wxNe
   593  aC+VN2nrFQKBgFXG7pV+jk8oyRDzMwc61BP10t0A4YVrszztN+y7weaH7b1WUNrU
   594  +un0zWZpE1+Ewn5f4Nbt9OrwZJfak9XsBJdBhZBwmaO7pDsKS9Yqo2bpyYDShmO6
   595  mYcJuhwomeunCv5ZuYId496QdLRWI1BFHRcxeFzg3DAb6CspH5NWk5yxAoGBALEd
   596  B5HSUxV2xq2oghI6MZoIzM2RZriBY1mdK/7LT3vEQBKF1cK8kgciksew7tHddvKW
   597  Ie0pbt81UvfwqezjMh6wuFaS3Quhm1bT0rgtaSfQ1lyYs8Bbq5n0g95YP6tzFM2s
   598  226xFv8YoAitX2VEvWXBPeWbYo+s+lZTehDuFwO9AoGAD6n29mfkAtGeU7rdyoug
   599  C+lmDFi1Oquz9sS4GMhzg+NsSxYly+QzV65EyIVvJBUgV66hbpnU/hq7fbQE8/Vr
   600  jxrfmmrMaIXhnSWAXeBn6Gz+VAgRhfiZpP5/4YS8rPV1d8pOfuQGuP+zDmke1nLC
   601  sZpT/jzJuZsUkbuLREQbZGQ=
   602  -----END TESTING KEY-----`
   603  
   604  func parseTestCert(certPEM, keyPEM string) Certificate {
   605  	tlsCert, err := X509KeyPair([]byte(certPEM), []byte(testingKey(keyPEM)))
   606  	if err != nil {
   607  		panic(err)
   608  	}
   609  	return tlsCert
   610  }
   611  
   612  func newTestCertPool(certPEM string) *x509.CertPool {
   613  	pool := x509.NewCertPool()
   614  	if !pool.AppendCertsFromPEM([]byte(certPEM)) {
   615  		panic("failed to parse certificate for pool")
   616  	}
   617  	return pool
   618  }
   619  

View as plain text