[glib-networking/mcatanzaro/readable-private-key] WIP: tls: make private-key and private-key-pem properties readable




commit d25205abaef816ad2c31607581850033f778ab31
Author: Michael Catanzaro <mcatanzaro redhat com>
Date:   Thu Jun 10 19:27:31 2021 -0500

    WIP: tls: make private-key and private-key-pem properties readable
    
    This implements glib!2087, allowing applications to read the private-key
    and private-key-pem properties, but only if the key is backed by memory
    and not something like a PKCS #11 smartcard.

 tls/gnutls/gtlscertificate-gnutls.c         |  86 +++++++++++++----
 tls/openssl/gtlscertificate-openssl.c       |  79 +++++++++++++++-
 tls/tests/certificate.c                     |  78 +++++++++++++++
 tls/tests/connection.c                      |   2 +-
 tls/tests/files/ca-alternative.pem          |  34 +++----
 tls/tests/files/ca-key.pem                  |  50 +++++-----
 tls/tests/files/ca-roots-bad.pem            |  36 +++----
 tls/tests/files/ca-roots.pem                |  36 +++----
 tls/tests/files/ca.pem                      |  36 +++----
 tls/tests/files/chain.pem                   |  96 +++++++++----------
 tls/tests/files/client-and-key.pem          |  80 ++++++++--------
 tls/tests/files/client-csr.pem              |  17 ++++
 tls/tests/files/client-future.pem           |  26 ++---
 tls/tests/files/client-key.pem              |  50 +++++-----
 tls/tests/files/client-past.pem             |  26 ++---
 tls/tests/files/client.pem                  |  30 +++---
 tls/tests/files/client2-and-key.pem         |  80 ++++++++--------
 tls/tests/files/client2-csr.pem             |  17 ++++
 tls/tests/files/client2-key.pem             |  50 +++++-----
 tls/tests/files/client2.pem                 |  30 +++---
 tls/tests/files/create-files.sh             |   4 +
 tls/tests/files/intermediate-ca-csr.pem     |  28 +++---
 tls/tests/files/intermediate-ca-key.pem     |  50 +++++-----
 tls/tests/files/intermediate-ca.pem         |  34 +++----
 tls/tests/files/non-ca.pem                  | 142 ++++++++++++++--------------
 tls/tests/files/old-ca-key.pem              |  50 +++++-----
 tls/tests/files/old-ca.pem                  |  38 ++++----
 tls/tests/files/root-ca-csr.pem             |  28 +++---
 tls/tests/files/server-and-key.pem          |  80 ++++++++--------
 tls/tests/files/server-csr.pem              |  17 ++++
 tls/tests/files/server-intermediate-csr.pem |  24 ++---
 tls/tests/files/server-intermediate-key.pem |  50 +++++-----
 tls/tests/files/server-intermediate.pem     |  26 ++---
 tls/tests/files/server-key-pkcs8.der        | Bin 0 -> 1218 bytes
 tls/tests/files/server-key-pkcs8.pem        |  28 ++++++
 tls/tests/files/server-key.der              | Bin 1190 -> 1192 bytes
 tls/tests/files/server-key.pem              |  50 +++++-----
 tls/tests/files/server-self.pem             |  30 +++---
 tls/tests/files/server.der                  | Bin 920 -> 920 bytes
 tls/tests/files/server.pem                  |  30 +++---
 40 files changed, 969 insertions(+), 679 deletions(-)
---
diff --git a/tls/gnutls/gtlscertificate-gnutls.c b/tls/gnutls/gtlscertificate-gnutls.c
index 62d586a..606326d 100644
--- a/tls/gnutls/gtlscertificate-gnutls.c
+++ b/tls/gnutls/gtlscertificate-gnutls.c
@@ -86,6 +86,45 @@ g_tls_certificate_gnutls_finalize (GObject *object)
   G_OBJECT_CLASS (g_tls_certificate_gnutls_parent_class)->finalize (object);
 }
 
+static void
+export_privkey (GTlsCertificateGnutls  *gnutls,
+                gnutls_x509_crt_fmt_t   format,
+                void                  **output_data,
+                size_t                 *output_size)
+{
+  gnutls_x509_privkey_t x509_privkey;
+  int status;
+
+  if (!gnutls->key)
+    goto err;
+
+  status = gnutls_privkey_export_x509 (gnutls->key, &x509_privkey);
+  if (status != 0)
+    goto err;
+
+  *output_size = 0;
+  status = gnutls_x509_privkey_export_pkcs8 (x509_privkey,
+                                             format,
+                                             NULL, GNUTLS_PKCS_PLAIN,
+                                             NULL, output_size);
+  if (status != GNUTLS_E_SHORT_MEMORY_BUFFER)
+    goto err;
+
+  *output_data = g_malloc (*output_size);
+  status = gnutls_x509_privkey_export_pkcs8 (x509_privkey,
+                                             format,
+                                             NULL, GNUTLS_PKCS_PLAIN,
+                                             *output_data, output_size);
+  if (status == 0)
+    return;
+
+  g_free (*output_data);
+
+err:
+  *output_data = NULL;
+  *output_size = 0;
+}
+
 static void
 g_tls_certificate_gnutls_get_property (GObject    *object,
                                        guint       prop_id,
@@ -93,8 +132,9 @@ g_tls_certificate_gnutls_get_property (GObject    *object,
                                        GParamSpec *pspec)
 {
   GTlsCertificateGnutls *gnutls = G_TLS_CERTIFICATE_GNUTLS (object);
-  GByteArray *certificate;
-  char *certificate_pem;
+  GByteArray *byte_array;
+  char *pem;
+  guint8 *der;
   int status;
   size_t size;
 
@@ -106,21 +146,21 @@ g_tls_certificate_gnutls_get_property (GObject    *object,
                                        GNUTLS_X509_FMT_DER,
                                        NULL, &size);
       if (status != GNUTLS_E_SHORT_MEMORY_BUFFER)
-        certificate = NULL;
+        byte_array = NULL;
       else
         {
-          certificate = g_byte_array_sized_new (size);
-          certificate->len = size;
+          byte_array = g_byte_array_sized_new (size);
+          byte_array->len = size;
           status = gnutls_x509_crt_export (gnutls->cert,
                                            GNUTLS_X509_FMT_DER,
-                                           certificate->data, &size);
+                                           byte_array->data, &size);
           if (status != 0)
             {
-              g_byte_array_free (certificate, TRUE);
-              certificate = NULL;
+              g_byte_array_free (byte_array, TRUE);
+              byte_array = NULL;
             }
         }
-      g_value_take_boxed (value, certificate);
+      g_value_take_boxed (value, byte_array);
       break;
 
     case PROP_CERTIFICATE_PEM:
@@ -129,20 +169,32 @@ g_tls_certificate_gnutls_get_property (GObject    *object,
                                        GNUTLS_X509_FMT_PEM,
                                        NULL, &size);
       if (status != GNUTLS_E_SHORT_MEMORY_BUFFER)
-        certificate_pem = NULL;
+        pem = NULL;
       else
         {
-          certificate_pem = g_malloc (size);
+          pem = g_malloc (size);
           status = gnutls_x509_crt_export (gnutls->cert,
                                            GNUTLS_X509_FMT_PEM,
-                                           certificate_pem, &size);
+                                           pem, &size);
           if (status != 0)
-            {
-              g_free (certificate_pem);
-              certificate_pem = NULL;
-            }
+            g_clear_pointer (&pem, g_free);
         }
-      g_value_take_string (value, certificate_pem);
+      g_value_take_string (value, pem);
+      break;
+
+    case PROP_PRIVATE_KEY:
+      export_privkey (gnutls, GNUTLS_X509_FMT_DER, (void **)&der, &size);
+      if (size > 0 && size <= G_MAXUINT)
+        {
+          byte_array = g_byte_array_new_take (der, size);
+          g_value_take_boxed (value, byte_array);
+        }
+      break;
+
+    case PROP_PRIVATE_KEY_PEM:
+      export_privkey (gnutls, GNUTLS_X509_FMT_PEM, (void **)&pem, &size);
+      if (size > 0)
+        g_value_take_string (value, pem);
       break;
 
     case PROP_ISSUER:
diff --git a/tls/openssl/gtlscertificate-openssl.c b/tls/openssl/gtlscertificate-openssl.c
index 2fa9695..3407007 100644
--- a/tls/openssl/gtlscertificate-openssl.c
+++ b/tls/openssl/gtlscertificate-openssl.c
@@ -81,6 +81,69 @@ g_tls_certificate_openssl_finalize (GObject *object)
   G_OBJECT_CLASS (g_tls_certificate_openssl_parent_class)->finalize (object);
 }
 
+static void
+export_privkey_to_der (GTlsCertificateOpenssl  *openssl,
+                       guint8                 **output_data,
+                       long                    *output_size)
+{
+  PKCS8_PRIV_KEY_INFO *pkcs8;
+  BIO *bio = NULL;
+  const guint8 *data;
+
+  if (!openssl->key)
+    goto err;
+
+  pkcs8 = EVP_PKEY2PKCS8 (openssl->key);
+  if (!pkcs8)
+    goto err;
+
+  bio = BIO_new (BIO_s_mem ());
+  if (i2d_PKCS8_PRIV_KEY_INFO_bio (bio, pkcs8) == 0)
+    goto err;
+
+  *output_size = BIO_get_mem_data (bio, (char **)&data);
+  if (*output_size <= 0)
+    goto err;
+
+  *output_data = g_malloc (*output_size);
+  memcpy (*output_data, data, *output_size);
+  return;
+
+err:
+  if (bio)
+    BIO_free_all (bio);
+  *output_data = NULL;
+  *output_size = 0;
+}
+
+static char *
+export_privkey_to_pem (GTlsCertificateOpenssl *openssl)
+{
+  int ret;
+  BIO *bio = NULL;
+  const char *data = NULL;
+  char *result = NULL;
+
+  if (!openssl->key)
+    return NULL;
+
+  bio = BIO_new (BIO_s_mem ());
+  ret = PEM_write_bio_PKCS8PrivateKey (bio, openssl->key, NULL, NULL, 0, NULL, NULL);
+  if (ret == 0)
+    goto out;
+
+  ret = BIO_write (bio, "\0", 1);
+  if (ret != 1)
+    goto out;
+
+  BIO_get_mem_data (bio, (char **)&data);
+  result = g_strdup (data);
+
+out:
+  BIO_free_all (bio);
+  return result;
+}
+
 static void
 g_tls_certificate_openssl_get_property (GObject    *object,
                                         guint       prop_id,
@@ -91,8 +154,9 @@ g_tls_certificate_openssl_get_property (GObject    *object,
   GByteArray *certificate;
   guint8 *data;
   BIO *bio;
+  GByteArray *byte_array;
   char *certificate_pem;
-  int size;
+  long size;
 
   switch (prop_id)
     {
@@ -130,6 +194,19 @@ g_tls_certificate_openssl_get_property (GObject    *object,
         }
       break;
 
+    case PROP_PRIVATE_KEY:
+      export_privkey_to_der (openssl, &data, &size);
+      if (size > 0 && (gint64)size <= G_MAXUINT)
+        {
+          byte_array = g_byte_array_new_take (data, size);
+          g_value_take_boxed (value, byte_array);
+        }
+      break;
+
+    case PROP_PRIVATE_KEY_PEM:
+      g_value_take_string (value, export_privkey_to_pem (openssl));
+      break;
+
     case PROP_ISSUER:
       g_value_set_object (value, openssl->issuer);
       break;
diff --git a/tls/tests/certificate.c b/tls/tests/certificate.c
index 921f29e..91d64b1 100644
--- a/tls/tests/certificate.c
+++ b/tls/tests/certificate.c
@@ -65,7 +65,10 @@ typedef struct {
   GByteArray *cert_der;
   gchar *key_pem;
   gsize key_pem_length;
+  gchar *key_pem_pkcs8;
+  gsize key_pem_pkcs8_length;
   GByteArray *key_der;
+  GByteArray *key_der_pkcs8;
 } TestCertificate;
 
 static void
@@ -94,6 +97,10 @@ setup_certificate (TestCertificate *test, gconstpointer data)
                        &test->key_pem_length, &error);
   g_assert_no_error (error);
 
+  g_file_get_contents (tls_test_file_path ("server-key-pkcs8.pem"), &test->key_pem_pkcs8,
+                       &test->key_pem_pkcs8_length, &error);
+  g_assert_no_error (error);
+
   g_file_get_contents (tls_test_file_path ("server-key.der"),
                        &contents, &length, &error);
   g_assert_no_error (error);
@@ -101,6 +108,14 @@ setup_certificate (TestCertificate *test, gconstpointer data)
   test->key_der = g_byte_array_new ();
   g_byte_array_append (test->key_der, (guint8 *)contents, length);
   g_free (contents);
+
+  g_file_get_contents (tls_test_file_path ("server-key-pkcs8.der"),
+                       &contents, &length, &error);
+  g_assert_no_error (error);
+
+  test->key_der_pkcs8 = g_byte_array_new ();
+  g_byte_array_append (test->key_der_pkcs8, (guint8 *)contents, length);
+  g_free (contents);
 }
 
 static void
@@ -111,7 +126,9 @@ teardown_certificate (TestCertificate *test,
   g_byte_array_free (test->cert_der, TRUE);
 
   g_free (test->key_pem);
+  g_free (test->key_pem_pkcs8);
   g_byte_array_free (test->key_der, TRUE);
+  g_byte_array_free (test->key_der_pkcs8, TRUE);
 }
 
 static void
@@ -267,6 +284,63 @@ test_create_certificate_pkcs11 (TestCertificate *test,
 #endif
 }
 
+static void
+test_private_key (TestCertificate *test,
+                  gconstpointer    data)
+{
+  GTlsCertificate *cert;
+  GByteArray *der;
+  char *pem;
+  GError *error = NULL;
+
+  cert = g_tls_certificate_new_from_file (tls_test_file_path ("server-and-key.pem"), &error);
+  g_assert_no_error (error);
+  g_assert_true (G_IS_TLS_CERTIFICATE (cert));
+
+  g_object_get (cert,
+                "private-key", &der,
+                "private-key-pem", &pem,
+                NULL);
+  g_assert_cmpmem (der->data, der->len, test->key_der_pkcs8->data, test->key_der_pkcs8->len);
+  g_assert_cmpstr (pem, ==, test->key_pem_pkcs8);
+
+  g_byte_array_unref (der);
+  g_free (pem);
+  g_object_unref (cert);
+}
+
+static void
+test_private_key_pkcs11 (TestCertificate *test,
+                         gconstpointer    data)
+{
+#if !defined (BACKEND_IS_GNUTLS)
+  g_test_skip ("This backend does not support PKCS #11");
+#else
+  GTlsCertificate *cert;
+  GByteArray *der;
+  char *pem;
+  GError *error = NULL;
+
+  cert = g_initable_new (test->cert_gtype, NULL, &error,
+                         "pkcs11-uri", 
"pkcs11:model=mock;token=Mock%20Certificate;object=Mock%20Certificate",
+                         NULL);
+  g_assert_no_error (error);
+  g_assert_true (G_IS_TLS_CERTIFICATE (cert));
+
+  /* Cannot access private key because the GTlsCertificate only knows its
+   * PKCS #11 handle. It doesn't actually have the private key in memory.
+   */
+  g_object_get (cert,
+                "private-key", &der,
+                "private-key-pem", &pem,
+                NULL);
+  g_assert_null (der);
+  g_assert_null (pem);
+
+  g_object_unref (cert);
+#endif
+}
+
 static void
 test_create_certificate_chain (void)
 {
@@ -613,6 +687,10 @@ main (int   argc,
               setup_certificate, test_create_certificate_with_garbage_input, teardown_certificate);
   g_test_add ("/tls/" BACKEND "/certificate/pkcs11", TestCertificate, NULL,
               setup_certificate, test_create_certificate_pkcs11, teardown_certificate);
+  g_test_add ("/tls/" BACKEND "/certificate/private-key", TestCertificate, NULL,
+              setup_certificate, test_private_key, teardown_certificate);
+  g_test_add ("/tls/" BACKEND "/certificate/private-key-pkcs11", TestCertificate, NULL,
+              setup_certificate, test_private_key_pkcs11, teardown_certificate);
 
   g_test_add_func ("/tls/" BACKEND "/certificate/create-chain", test_create_certificate_chain);
   g_test_add_func ("/tls/" BACKEND "/certificate/create-no-chain", test_create_certificate_no_chain);
diff --git a/tls/tests/connection.c b/tls/tests/connection.c
index 475285d..2537ced 100644
--- a/tls/tests/connection.c
+++ b/tls/tests/connection.c
@@ -2635,7 +2635,7 @@ test_connection_binding_match_tls_unique (TestConnection *test,
  * please make sure the string below matches the output of
  * openssl x509 -outform der -in files/server.pem | openssl sha256 -binary | base64
  **/
-#define SERVER_CERT_DIGEST_B64 "kGOeAZnSeNtf5yzBZzUhbKFpW9qsPV+lIB/4t96OV+E="
+#define SERVER_CERT_DIGEST_B64 "84UyyAeH0nwpcbGCbMZiAnU/UP/g3l65n5gBKDAGGxI="
 static void
 test_connection_binding_match_tls_server_end_point (TestConnection *test,
                                                     gconstpointer   data)
diff --git a/tls/tests/files/ca-alternative.pem b/tls/tests/files/ca-alternative.pem
index 3793a1a..3c70067 100644
--- a/tls/tests/files/ca-alternative.pem
+++ b/tls/tests/files/ca-alternative.pem
@@ -3,27 +3,27 @@ MIIFAjCCA+qgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBnzETMBEGCgmSJomT8ixk
 ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxLDAqBgNVBAsMI09sZCBV
 bnRydXN0ZWQgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSIwIAYDVQQDDBlvbmNlLndh
 cy5hLmNhLmV4YW1wbGUuY29tMR0wGwYJKoZIhvcNAQkBFg5jYUBleGFtcGxlLmNv
-bTAgFw0yMDEwMTIxNzQ5NDRaGA8yMDUwMTAwNTE3NDk0NFowgYYxEzARBgoJkiaJ
+bTAgFw0yMTA2MTAyMzM4NTlaGA8yMDUxMDYwMzIzMzg1OVowgYYxEzARBgoJkiaJ
 k/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFNUExFMR4wHAYDVQQLDBVD
 ZXJ0aWZpY2F0ZSBBdXRob3JpdHkxFzAVBgNVBAMMDmNhLmV4YW1wbGUuY29tMR0w
 GwYJKoZIhvcNAQkBFg5jYUBleGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBAKWFJia5M5GJSnjxTbIW/h5Rl0/uS7jek4Rfk5fsy+2lxPk6
-/a+rdVXNHtLKmF8ouG8QocYr+MQNvGedhqSv8L+ViZXlz/zh/DMk5mzQUOSi5yrj
-jQbOJ8oeEAK2mXF42x4mNiNmBdUsavnaemXAoCX2f05wci0sGDS1fxUyGMV5Bay3
-2YCrFVyhfYUKbs9ItpMuyngIfBOVH7wa9N+XQuQIvT/ZZ2x/0PgbQWv+JFmIfMV4
-KuIZXuJYM0zmoLQEjgF1kdOpyoLot4u1EmgqceZakTTRZvst4rAZqib6F5lBgsZm
-4ige4KAQjGfJlVjiPBiAo/KyJjeu/d0iwLNdsHcCAwEAAaOCAVwwggFYMB0GA1Ud
-DgQWBBSLcFF+Oi4WrdNajz7wc6U4i2X3OzCB3wYDVR0jBIHXMIHUgBQJPzDGBIUp
-4KIn7BhZJbgPBpUEe6GBpaSBojCBnzETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUG
+ggEPADCCAQoCggEBAL1BbHsj/VMqC/OwaRJLIgfMcYrLHjZL0QUkXzohuo0gqvE1
+pcbch7c0BsRmUc06PUaX4QSFtbBgdgBWXx9s7bPdPANj640WWihvPGb2/jN4qCQZ
+XY15GITs6c3DlF55wG2f2Em9q73borp2ZtHwn8T2pjJVDLNyvsNclz9Hxy7iNtLg
+NEwm7+HfpYljVxMUxzkACZ0M1Tn3wf3pKH4D1Bz0d4SswEsUd0/Dyxo3XIB9+N6+
+p34wo9p++O0TtRzfBSMhYtvH789yD06EC1Ci/id+cVwnhCeo0rG5mAOcHZgtp5RX
+k7fPuHKmFwccuKZvdlcjB+OTKGczT7dxwTZEUp8CAwEAAaOCAVwwggFYMB0GA1Ud
+DgQWBBRQOF6Z1qO4oMHq2kSzjiDm9kh0AjCB3wYDVR0jBIHXMIHUgBSQteaZ9OoG
+P/woJzTfbUd4KkntqKGBpaSBojCBnzETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUG
 CgmSJomT8ixkARkWB0VYQU1QTEUxLDAqBgNVBAsMI09sZCBVbnRydXN0ZWQgQ2Vy
 dGlmaWNhdGUgQXV0aG9yaXR5MSIwIAYDVQQDDBlvbmNlLndhcy5hLmNhLmV4YW1w
-bGUuY29tMR0wGwYJKoZIhvcNAQkBFg5jYUBleGFtcGxlLmNvbYIUJMXPCPBYU7Ju
-V+eZvzCqQcLy6H8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwGQYD
+bGUuY29tMR0wGwYJKoZIhvcNAQkBFg5jYUBleGFtcGxlLmNvbYIUT0ZuqS3GYxNL
+XPUfTCpGF9MdpyswDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwGQYD
 VR0RBBIwEIEOY2FAZXhhbXBsZS5jb20wGQYDVR0SBBIwEIEOY2FAZXhhbXBsZS5j
-b20wDQYJKoZIhvcNAQELBQADggEBABSrlQqoWp6reJsOYmlxUbDQJ5OuqcZuKEkn
-gscxFXeprhDD7eJmD8qHqFmfgM8e/tbnQw1xSOBgYpifVQRSij+TBWrJpX7980e7
-FKLPI5oOS/3geInW3Rs3EzfpGK1fKNR8mtTZj4hb0FnMpFXgiTYmRAeqQf3PCRge
-5Is8VP8eTtnzLi8gK8i8A97SOWyuqy/dzIz0UPthc0qvq5u7LR8sJZ901kWjBazq
-0KbZ/pyUrmLHaa07q8aU5Z1FPSH5l2PmtXtSfTvHBn8onG1LYF0WhjZ0qxsGvuRR
-9JX4dzGE2D8ub9f7B+ouF9hS6FIFujBNelk9dyirIgx+994qhPU=
+b20wDQYJKoZIhvcNAQELBQADggEBAG3gt5Ev4tenoIio+c0VE6iUZonMxYLU7EZ2
+MvcUAts5c19u+XD8HO6JUvdn2tG8XbIkD3u6+qlZ+IV4dQCScmDWpUK/rswpOVBs
+T1ZmpdWVqt2XSfw7SkzXi8CvNmdwPwvNpzLDFupwYxWdpClhnUdSYBKO9gXaYvNy
+KktmOt1vHtdkV3H3fSVUmrA0aON07ey7iKnT67BXnAoZQSFoQSxE9IZF+Bcacwbj
+KZLDVAPIq3HXirPpBEKAbgpTq9+yQzHVNTIXWpoGSaG7WLFBoAfKZgsgo6KSYX3S
+74Q8SQgA3cDhmwzBb5/GNW3Qbn/hVgHBO6lkeRwSjbcYaIiGRFw=
 -----END CERTIFICATE-----
diff --git a/tls/tests/files/ca-key.pem b/tls/tests/files/ca-key.pem
index 1a42c34..b6823d6 100644
--- a/tls/tests/files/ca-key.pem
+++ b/tls/tests/files/ca-key.pem
@@ -1,27 +1,27 @@
 -----BEGIN RSA PRIVATE KEY-----
-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
+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
 -----END RSA PRIVATE KEY-----
diff --git a/tls/tests/files/ca-roots-bad.pem b/tls/tests/files/ca-roots-bad.pem
index 1cceb7a..a5a5a6c 100644
--- a/tls/tests/files/ca-roots-bad.pem
+++ b/tls/tests/files/ca-roots-bad.pem
@@ -1,31 +1,31 @@
 -----BEGIN CERTIFICATE-----
-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
+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
-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
+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
-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
+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
-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
+bGUuY29tghQk1yZyXpu/SEN1m3GMqLKXciDO5DAPBgNVHRMBAf8EBTADAQH/MA4G
 A1UdDwEB/wQEAwIBBjAZBgNVHREEEjAQgQ5jYUBleGFtcGxlLmNvbTAZBgNVHRIE
-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
-MbJ0cWIRVg==
+EjAQgQ5jYUBleGFtcGxlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAXsT7fVgTUxfr
+d5biXTAR1iP+TieFYECgsk2kxt8kkfnfF93Vf3AojtKmh98EAiVVKgmLjhTQF9l+
+dNtg2K+HS1fhC1GQandc5wUPR0Wp0CbpRSZwVKejuxajzNvp72E/uuvSnuN9+l+x
+JS+774LGRc1yeimjhLZdSW6GnmqVtVKZ6+GZgyzAoW7cGjOfKBx+S3cmluCUQAku
+wCmZDo+DqVSy0ufLwdxxe4iex+p0zwLWfp/8RvvSEGByn/IGIajmnM3op4H0jYJH
+M8Y85rnMnLnbU++5iU5AjPsMFBHEGAcGHjK2QqTfN8Z4pgu1ahz2phTNIba8bV/m
+H2Kcj00tbQ==
 -----END CERTIFICATE-----
 -----BEGIN CERTIFICATE-----
 MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290
diff --git a/tls/tests/files/ca-roots.pem b/tls/tests/files/ca-roots.pem
index 0d2d24c..f4505b4 100644
--- a/tls/tests/files/ca-roots.pem
+++ b/tls/tests/files/ca-roots.pem
@@ -1,33 +1,33 @@
 These are some CA certificates
 
 -----BEGIN CERTIFICATE-----
-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
+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
-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
+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
-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
+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
-bGUuY29tghQ+s67jByiORo59Mf4YWphlAh5esDAPBgNVHRMBAf8EBTADAQH/MA4G
+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
-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
-MbJ0cWIRVg==
+EjAQgQ5jYUBleGFtcGxlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAXsT7fVgTUxfr
+d5biXTAR1iP+TieFYECgsk2kxt8kkfnfF93Vf3AojtKmh98EAiVVKgmLjhTQF9l+
+dNtg2K+HS1fhC1GQandc5wUPR0Wp0CbpRSZwVKejuxajzNvp72E/uuvSnuN9+l+x
+JS+774LGRc1yeimjhLZdSW6GnmqVtVKZ6+GZgyzAoW7cGjOfKBx+S3cmluCUQAku
+wCmZDo+DqVSy0ufLwdxxe4iex+p0zwLWfp/8RvvSEGByn/IGIajmnM3op4H0jYJH
+M8Y85rnMnLnbU++5iU5AjPsMFBHEGAcGHjK2QqTfN8Z4pgu1ahz2phTNIba8bV/m
+H2Kcj00tbQ==
 -----END CERTIFICATE-----
 
 GLib shouldn't care about this comment
diff --git a/tls/tests/files/ca.pem b/tls/tests/files/ca.pem
index d5747af..3a3785f 100644
--- a/tls/tests/files/ca.pem
+++ b/tls/tests/files/ca.pem
@@ -1,29 +1,29 @@
 -----BEGIN CERTIFICATE-----
-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
+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
-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
+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
-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
+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
-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
+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
-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
-MbJ0cWIRVg==
+EjAQgQ5jYUBleGFtcGxlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAXsT7fVgTUxfr
+d5biXTAR1iP+TieFYECgsk2kxt8kkfnfF93Vf3AojtKmh98EAiVVKgmLjhTQF9l+
+dNtg2K+HS1fhC1GQandc5wUPR0Wp0CbpRSZwVKejuxajzNvp72E/uuvSnuN9+l+x
+JS+774LGRc1yeimjhLZdSW6GnmqVtVKZ6+GZgyzAoW7cGjOfKBx+S3cmluCUQAku
+wCmZDo+DqVSy0ufLwdxxe4iex+p0zwLWfp/8RvvSEGByn/IGIajmnM3op4H0jYJH
+M8Y85rnMnLnbU++5iU5AjPsMFBHEGAcGHjK2QqTfN8Z4pgu1ahz2phTNIba8bV/m
+H2Kcj00tbQ==
 -----END CERTIFICATE-----
diff --git a/tls/tests/files/chain.pem b/tls/tests/files/chain.pem
index 95c96e4..b0bf901 100644
--- a/tls/tests/files/chain.pem
+++ b/tls/tests/files/chain.pem
@@ -3,78 +3,78 @@ MIIDuzCCAqOgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBrTETMBEGCgmSJomT8ixk
 ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxKzApBgNVBAsMIkludGVy
 bWVkaWF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxJDAiBgNVBAMMG2ludGVybWVk
 aWF0ZS1jYS5leGFtcGxlLmNvbTEqMCgGCSqGSIb3DQEJARYbaW50ZXJtZWRpYXRl
-LWNhQGV4YW1wbGUuY29tMB4XDTIwMTAxMjE3NDk1MVoXDTQ1MTAwNjE3NDk1MVow
+LWNhQGV4YW1wbGUuY29tMB4XDTIxMDYxMDIzMzkxMloXDTQ2MDYwNDIzMzkxMlow
 SzETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUx
 GzAZBgNVBAMMEnNlcnZlci5leGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBAN4t3FBzYQk48Bzm7S9JiZqmWVY/FagC9aim8foydtzXXcXj
-IEWc6AChko8FhLJAp5ZJCxm7MbYc5pZfyGgecBawG13fKYoPo+59dUJAw8xkENKC
-i57K0fsfwZf4v0SqawmYUj9AtIsy8Q6xTRfVHA+Pj2qbNNTMIUzgIg3b7TpGnhjN
-DlxYzXLPThiKD8Vm+SrXOm8W+hCpIivyGDNWCxTo1MHj2UUmHPGHfwZXCJ9dt8sc
-QTV1B0TeTJ3Xm/w+aAzUfbdlkCufsk6nLsj+gYMRkGGsYo/GmAv4/PPUop+yNK6V
-LL1nNgp0hP+VwvGU2cpn6BRBmpUu5xHrXkHjU+ECAwEAAaNHMEUwCQYDVR0TBAIw
+ggEPADCCAQoCggEBAKaRoBEvmktpxV+gX10QnkfonkCYdrXp6Pdgwy7nm8XP8PdY
+CpGbzc6XW9tX6KTM/MSISGSz4glnh4dK7hSbA9w86iO7s5S4Wfsy6Frdkfk5kQa7
+cuzXmNe/GAiUWAa/hTeiy2H6S7Vs9dLN/OdCN3wkx/a5gFnAFs/nfK0wkkSkq+qU
+c9N38qxh73ByQ+hwWqQenvV6WdUG6dMCWW+GiReM2A0k/9EBgGNi6zMMQykVKdMa
+ZFchFog7RFkm+92Cf4HxZvJD3vhGUTiDo+kZ3q9rh3Q9OIUERfAywUf6gduLGyL5
+9F0urI3cCPjPXPkKQcXz2wnVBBk4wBGfAQhxpQsCAwEAAaNHMEUwCQYDVR0TBAIw
 ADATBgNVHSUEDDAKBggrBgEFBQcDATAjBgNVHREEHDAahwTAqAEWghJzZXJ2ZXIu
-ZXhhbXBsZS5jb20wDQYJKoZIhvcNAQELBQADggEBAHxnwEN8Xr9TUrHefXPdcDU2
-yd4F3u4bPL4RSSRFIKdqrAaHK0wnzLoF3HneUjKzU/l36kNHBa7dUo8Q2SGd3V4d
-zDR0uT9uUdsZVwmUbAcZs1Z9d1vPMWDqS1zwBKYtLTw2Z7sl9xaLYhxLZSyf1Pxe
-aC8+gNaqJ25aKAbDSMNCyF32vRy4OYy7Hi8Itexkva6XMlF4H4gSXs4QZP9WGhp7
-6YRdcy6Z6lJfkJ9SW6nsoNJvbYGOGbxHg9brxWJV8T7cFBQQVvZKasydS6+6IK/2
-/+n38vEog/7hGQ85iOsu0xOcdkKl/SIj1ckJtGAVif2kbCSzugSafA2jRELyiI0=
+ZXhhbXBsZS5jb20wDQYJKoZIhvcNAQELBQADggEBACDND9sBatFK8AG8Tkelofty
+pgm1cwTfawm7McVx24Pktc/XjJ/L/N2xo9ZQmpZH6j5IhZSiVLz8iFhev75vcJ0B
+WbRweU079HV0/J7sNuMBNkIJB7NL0wUJSSfMOnhpKPExTHxWopmCRpGut0igYx78
+GxBSpneEH5Oel7BBZrsu3L4ujzyyTRIdqyKqJ/IE7im9RDE70ktdopA9lRFuNiFf
+HCx1gdpBNgFzBQskhiF1XGf3JmkGP84iFR10BEc63Ab2v1jyTMh6sf4f0FEiUXIq
+rp23rUCVwBGjHHSKrtI4HbaAMi0UgfYuKvw7ImyS3Pck8Sxhwed6rbJfaA5ICnY=
 -----END CERTIFICATE-----
 -----BEGIN CERTIFICATE-----
 MIIFAjCCA+qgAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBhjETMBEGCgmSJomT8ixk
 ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsMFUNlcnRp
 ZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOY2EuZXhhbXBsZS5jb20xHTAbBgkq
-hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTIwMTAxMjE3NDk1MVoXDTQ1MTAw
-NjE3NDk1MVowga0xEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZ
+hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTIxMDYxMDIzMzkxMloXDTQ2MDYw
+NDIzMzkxMlowga0xEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZ
 FgdFWEFNUExFMSswKQYDVQQLDCJJbnRlcm1lZGlhdGUgQ2VydGlmaWNhdGUgQXV0
 aG9yaXR5MSQwIgYDVQQDDBtpbnRlcm1lZGlhdGUtY2EuZXhhbXBsZS5jb20xKjAo
 BgkqhkiG9w0BCQEWG2ludGVybWVkaWF0ZS1jYUBleGFtcGxlLmNvbTCCASIwDQYJ
-KoZIhvcNAQEBBQADggEPADCCAQoCggEBANEiR6aaGVdhIBCTJDbB0KBjAYu1f5on
-K3d+meKkp/K5V2DeatnupjqEkK8qEzzl8a81YblGg/k0mghDQMA+Rm9POPVNugUw
-uOlzlfOshVuNRVGMh+Svu7Sa8y++eMiQnWYk3nQETGa0C+4Lwx/khIfXJ4QQ0SWE
-3RDkNLS052zRXeyTsOnvFRtnLw3Z4rQWJrdJtvcHIL534jEsR8B/6sheYm3uL+Nu
-pH+NdiWnqWFglrvObG4Diyki1A7u1SHIBMwdc1sHu7yDrKsrTijqPbQpdRrip3jH
-RAMjH+KFzeUaJR8hlnIUgwctdw6kgG7OfQPq1hWtfpI8mJ4CFhux3/cCAwEAAaOC
-AVAwggFMMB0GA1UdDgQWBBRwLIOiczD2pbLEqglbtvsAlJFwtjCBxgYDVR0jBIG+
-MIG7gBSLcFF+Oi4WrdNajz7wc6U4i2X3O6GBjKSBiTCBhjETMBEGCgmSJomT8ixk
+KoZIhvcNAQEBBQADggEPADCCAQoCggEBALsubRO/TkL3AS5+wzYtjLBDHfGETRiI
+wsl1JfWm+7EOmcfT/SElLJE6z4T9LVQQcycTN+jrO/QW+AzYl336VrZLnOPm4ju4
+IOwnPZaajjJX9LYks9bCUGMum6q90zLJr9KmxlKVxIC0Bc418J77QAMp3dC8lVay
+4NusTan0W1o55ipd6rw4VtlcV+QbBRWilwh6X4+Gl/lfmllqjfIT0Qk/r3dR4tYw
+nS5kmaBiEXzTi4V84o/mbr8YHCQOKlGiKhy4J1wrAI4sJKUWEBafTbPZcP4zfq4I
+JJtKx4L/yO7KovGCNLsdr0XIJ5WhQXczoa9/8tcBMfpw4x8VBUUKFoECAwEAAaOC
+AVAwggFMMB0GA1UdDgQWBBT1FBWBa0YSfQgZGywHzY83zP/0cTCBxgYDVR0jBIG+
+MIG7gBRQOF6Z1qO4oMHq2kSzjiDm9kh0AqGBjKSBiTCBhjETMBEGCgmSJomT8ixk
 ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsMFUNlcnRp
 ZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOY2EuZXhhbXBsZS5jb20xHTAbBgkq
-hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tghQ+s67jByiORo59Mf4YWphlAh5esDAP
+hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tghQk1yZyXpu/SEN1m3GMqLKXciDO5DAP
 BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAmBgNVHREEHzAdgRtpbnRl
 cm1lZGlhdGUtY2FAZXhhbXBsZS5jb20wGQYDVR0SBBIwEIEOY2FAZXhhbXBsZS5j
-b20wDQYJKoZIhvcNAQELBQADggEBADb+0KoGV/ZzUQ2moJnOQQRUL9HLtG9OC8Hh
-MZhGO0IhpwOkiT1Jy05n1tXu6x+XC3XI8WmzP6uuuNGmWoq38+AdtofPDXKnnLBN
-L3WU+JGI2cZ9eBv/yv1QeFxPFR9IuVMXc+Pt+2TVoV2ancDeH31GKqkktPO2G50g
-1F8AxaAV/PYIFQVGxH2+Cra3HKOcGWk7qHZBUh/Llvy+UWL6oa2MPBPmawNFq0Jm
-pIIO7SJzIieGTZL/X9GDOyGA4q9onvIJ2NHekIflYDG7hu440rG2evrnkjg63sBA
-QWp62b4ftpTxkvg1aLN92ciNVnajHv6Zc6HP1dBClWI26Hu8TRI=
+b20wDQYJKoZIhvcNAQELBQADggEBAHWS+/zPkH34q4uN8L1EvIvDI06f4OkgfSCe
+dDSUCMKS5kUx0Z8K0v/QWIEsxC/dq4ibLIQIpH3aAkJlBBGvWTDyWR5Z/rkWVvUO
+TIFFbKlWc8ItxzwFI4z6QnVlju0+cO2og3hWHKVet93rUeSOKTVST1/2mKmnsuno
+1312W4yxMcy1UF2x6+3l9QnmLN9nLnpQTDxunGPbxxip+FbqaNeVg63eg2Yw8nX0
++pe5cgeKCTwmOMCIwwUOCO7teIvju9KcjBuWrYu61Bihg6uIHdf/m/mjD/ajHi1W
+U/ddSys6Lj7mwi7BczXktw6ovDULJ7toR+oM7Vrfa6J2do7rcrE=
 -----END CERTIFICATE-----
 -----BEGIN CERTIFICATE-----
-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
+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
-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
+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
-AQoCggEBAKWFJia5M5GJSnjxTbIW/h5Rl0/uS7jek4Rfk5fsy+2lxPk6/a+rdVXN
-HtLKmF8ouG8QocYr+MQNvGedhqSv8L+ViZXlz/zh/DMk5mzQUOSi5yrjjQbOJ8oe
-EAK2mXF42x4mNiNmBdUsavnaemXAoCX2f05wci0sGDS1fxUyGMV5Bay32YCrFVyh
-fYUKbs9ItpMuyngIfBOVH7wa9N+XQuQIvT/ZZ2x/0PgbQWv+JFmIfMV4KuIZXuJY
-M0zmoLQEjgF1kdOpyoLot4u1EmgqceZakTTRZvst4rAZqib6F5lBgsZm4ige4KAQ
-jGfJlVjiPBiAo/KyJjeu/d0iwLNdsHcCAwEAAaOCAUMwggE/MB0GA1UdDgQWBBSL
-cFF+Oi4WrdNajz7wc6U4i2X3OzCBxgYDVR0jBIG+MIG7gBSLcFF+Oi4WrdNajz7w
-c6U4i2X3O6GBjKSBiTCBhjETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT
+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
-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
+bGUuY29tghQk1yZyXpu/SEN1m3GMqLKXciDO5DAPBgNVHRMBAf8EBTADAQH/MA4G
 A1UdDwEB/wQEAwIBBjAZBgNVHREEEjAQgQ5jYUBleGFtcGxlLmNvbTAZBgNVHRIE
-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
-MbJ0cWIRVg==
+EjAQgQ5jYUBleGFtcGxlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAXsT7fVgTUxfr
+d5biXTAR1iP+TieFYECgsk2kxt8kkfnfF93Vf3AojtKmh98EAiVVKgmLjhTQF9l+
+dNtg2K+HS1fhC1GQandc5wUPR0Wp0CbpRSZwVKejuxajzNvp72E/uuvSnuN9+l+x
+JS+774LGRc1yeimjhLZdSW6GnmqVtVKZ6+GZgyzAoW7cGjOfKBx+S3cmluCUQAku
+wCmZDo+DqVSy0ufLwdxxe4iex+p0zwLWfp/8RvvSEGByn/IGIajmnM3op4H0jYJH
+M8Y85rnMnLnbU++5iU5AjPsMFBHEGAcGHjK2QqTfN8Z4pgu1ahz2phTNIba8bV/m
+H2Kcj00tbQ==
 -----END CERTIFICATE-----
diff --git a/tls/tests/files/client-and-key.pem b/tls/tests/files/client-and-key.pem
index 1565e9d..4691742 100644
--- a/tls/tests/files/client-and-key.pem
+++ b/tls/tests/files/client-and-key.pem
@@ -2,47 +2,47 @@
 MIIDXTCCAkUCAQMwDQYJKoZIhvcNAQELBQAwgYYxEzARBgoJkiaJk/IsZAEZFgND
 T00xFzAVBgoJkiaJk/IsZAEZFgdFWEFNUExFMR4wHAYDVQQLDBVDZXJ0aWZpY2F0
 ZSBBdXRob3JpdHkxFzAVBgNVBAMMDmNhLmV4YW1wbGUuY29tMR0wGwYJKoZIhvcN
-AQkBFg5jYUBleGFtcGxlLmNvbTAeFw0yMDEwMTIxNzQ5NDVaFw00NTEwMDYxNzQ5
-NDVaMGIxEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFN
+AQkBFg5jYUBleGFtcGxlLmNvbTAeFw0yMTA2MTAyMzM4NTlaFw00NjA2MDQyMzM4
+NTlaMGIxEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFN
 UExFMQ8wDQYDVQQDDAZDbGllbnQxITAfBgkqhkiG9w0BCQEWEmNsaWVudEBleGFt
-cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALB/QctPIfpb
-onzUr4bxSANLsAWPoLyE8a1h2WUz2NJxtSjk0Ch531bGtlXxIMzGeUgJ0WwUh15L
-BJxm6vHcVVar1iV3JUf0XW4Wk0cYmpS36PXa9m0pQAXgzanbh5m5FWnGpO4QZS7d
-O7YYmbVO7lwIkT3B7dw3gCeMeyqSJbgXnBRB7zVff/lW/r0zJ1MF3AZHpDP17CHK
-175MBha29DqfsHkfqQga0eIR9vTqSBwe+m717pLgDoc23SgfHfsI+8F09uT+GEoy
-7Gr1CvT8mCkOHyg8yDIm0h7Az1hjvUPGW7P9PoYBCcto0OjcOPwTFVL8dgX8b6v+
-tOEvQEKIbfcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAnpAITVJnj3JO0K8qk0H6
-0QkygDKnt1WDjRLEWui/oGKGjJOkuiREXWB8l7UM6VrP38xKALdusGX6wj6/9JsO
-H/wGP89YFM8YiP2YXlG9I/7mMNPV6QPai5tW+mYrfrRmqq8Y177Q8HBfNtW8ZXFi
-CsE6GM2fb/lUUSdn3DT7mUMwXcEtIOHKpa7/N2sdbifpNJdnmKzYRJHwIBgdfIj6
-pl6u4baDKiFTClTky+YHuuppGy8cs/ZrXi/b0nyWyZ/Z+cRke9DyWB+QqMPtF1Id
-kvu15eweJB4HbrmSkvA2IpuNIJQy6AQm67FKxiEjP8ksq5RW67CbHM1OZSeTKF4Y
-mQ==
+cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu+CqO3KpAj
+xCOxzXt6gSPVAvbQ2HOFW6rlS1CIYqJqn2GwcVchsOyBQbGmthVo5nGNGbjRCFk6
+MgMWF8eXD7Rpm0t8Qu+OH95q1WHoGf8RTihtth+Sui4HXVS1hD1UmFmnr9fwDm5x
+RbJNiJXHkRJz2gJxkZkbJA962S4cpoBwkxQNt3sW3v7Y4Jx1qCU/Q8Pldc7zsp76
+/eKtavvHp3KbUfa4YWXdOBLlsPxRq3szydmPIpfpWA7cUGsCXSxtlCzAA93dK9TS
+3MF/bhAj3+yNObkSuf54tb+g2qdXPEQ4Ac//iPuVM6VP4W8k3fbyTdZeSI7vdtTJ
+fuEcbKYzHbMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAEN8XZwrjwXPOAJQLCYIn
+615fruXiP2Am5LB0w/H2Nq9uGCJ20Yue74IxCoyrGRPPiH9gUN8Co+HMEB+RUHKI
+6LKckmXjl/yPMrW+WQ9OA3Gnfld07r60v1JCFNpn5v7GFb+hBC47VLNsFmg3Gj3i
+pUBE6gQuswr2IpTVdh3gMhQowAVSTFPuJMB0kDYdwMGkPzDwWQo7mP3ZPOzzmcMm
+UfeSCYKBlnjvoBqCCBguzak6VGYfrJBhf/Dts1Do49w4GYgb5dQf+CKGYfOgb9Td
+GN9BQgUddrmTxAeLHBc3vN3G8qx+zFOXqseXdR6nLiOXp6gSaZlvxpE9cWNLKAJ2
+RQ==
 -----END CERTIFICATE-----
 -----BEGIN RSA PRIVATE KEY-----
-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
+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
 -----END RSA PRIVATE KEY-----
diff --git a/tls/tests/files/client-csr.pem b/tls/tests/files/client-csr.pem
new file mode 100644
index 0000000..599363f
--- /dev/null
+++ b/tls/tests/files/client-csr.pem
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICpzCCAY8CAQAwYjETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixk
+ARkWB0VYQU1QTEUxDzANBgNVBAMMBkNsaWVudDEhMB8GCSqGSIb3DQEJARYSY2xp
+ZW50QGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
+q74Ko7cqkCPEI7HNe3qBI9UC9tDYc4VbquVLUIhiomqfYbBxVyGw7IFBsaa2FWjm
+cY0ZuNEIWToyAxYXx5cPtGmbS3xC744f3mrVYegZ/xFOKG22H5K6LgddVLWEPVSY
+Waev1/AObnFFsk2IlceREnPaAnGRmRskD3rZLhymgHCTFA23exbe/tjgnHWoJT9D
+w+V1zvOynvr94q1q+8encptR9rhhZd04EuWw/FGrezPJ2Y8il+lYDtxQawJdLG2U
+LMAD3d0r1NLcwX9uECPf7I05uRK5/ni1v6Dap1c8RDgBz/+I+5UzpU/hbyTd9vJN
+1l5Iju921Ml+4RxspjMdswIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBABmFYCgg
+ltrpaQbMIvjeyWE6DCo1IAjw1S/NelUqtCEQdldA2rGF6yxrMTbPwKlySuq+Wc5q
+EVUuoDZgJSPKshyHKwFwB9/eK4ERf14lkiKY975ob6tCUCLf882lamuP7uAhd/IX
+9DvrDWN5A9wMSDWn+2XEJ/VyNuJQ7FD+QLPlR1cFw1VgECqncijX0YP35emGKNDd
+NoSRi/1vhkrDKZjLheGJX5gzMdqwCjWAS4yKAwpfQW2aSToAE/boEaVLOQVfCTW8
+Ce4A5LNGVVkzd0qTEP3dg0O3ch9nRY2xv/73hKdvaUfdPake8/4IgD3gbyhADmH6
+ykJfCg+P8/rQcIc=
+-----END CERTIFICATE REQUEST-----
diff --git a/tls/tests/files/client-future.pem b/tls/tests/files/client-future.pem
index eb149fe..51b343d 100644
--- a/tls/tests/files/client-future.pem
+++ b/tls/tests/files/client-future.pem
@@ -7,17 +7,17 @@ ZSBBdXRob3JpdHkxFzAVBgNVBAMMDmNhLmV4YW1wbGUuY29tMR0wGwYJKoZIhvcN
 AQkBFg5jYUBleGFtcGxlLmNvbTAiGA8yMDYwMDcxNzIzMDAwMFoYDzIwNjEwNzE3
 MjMwMDAwWjBiMRMwEQYKCZImiZPyLGQBGRYDQ09NMRcwFQYKCZImiZPyLGQBGRYH
 RVhBTVBMRTEPMA0GA1UEAwwGQ2xpZW50MSEwHwYJKoZIhvcNAQkBFhJjbGllbnRA
-ZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCwf0HL
-TyH6W6J81K+G8UgDS7AFj6C8hPGtYdllM9jScbUo5NAoed9WxrZV8SDMxnlICdFs
-FIdeSwScZurx3FVWq9YldyVH9F1uFpNHGJqUt+j12vZtKUAF4M2p24eZuRVpxqTu
-EGUu3Tu2GJm1Tu5cCJE9we3cN4AnjHsqkiW4F5wUQe81X3/5Vv69MydTBdwGR6Qz
-9ewhyte+TAYWtvQ6n7B5H6kIGtHiEfb06kgcHvpu9e6S4A6HNt0oHx37CPvBdPbk
-/hhKMuxq9Qr0/JgpDh8oPMgyJtIewM9YY71Dxluz/T6GAQnLaNDo3Dj8ExVS/HYF
-/G+r/rThL0BCiG33AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAKSDFn8ZZ3jeGauc
-xAz66UKVJq4TmY07OcN0TnU0CGn9k4ZdcHxHDQ+kIUsAYZprDPLY02uTGxP925fn
-RwlbTEyQML1be6e082yrmv0Z6rjgv05BnPr7iNIoAQA+W71jNBuHBoFVZpmPnpFY
-zPh4hEb6zLzicb7gXzZvXM1sapCJWqlfSW3tWOv45CfgEje9iYqN3UoueCcQMGXl
-gaqWipLmlgD6qu/EZ+FfxmHkv5eWMb7KYbvJXgaF7PaT2FgrCrybB+RO1RjIMsnD
-OaRnlfBr9Zue4cJMAVHjRg/jxirYiTnz63pirKQvBZ4g8eLIUO3WCDUVFxjhThgR
-uMedPw0=
+ZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrvgqj
+tyqQI8Qjsc17eoEj1QL20NhzhVuq5UtQiGKiap9hsHFXIbDsgUGxprYVaOZxjRm4
+0QhZOjIDFhfHlw+0aZtLfELvjh/eatVh6Bn/EU4obbYfkrouB11UtYQ9VJhZp6/X
+8A5ucUWyTYiVx5ESc9oCcZGZGyQPetkuHKaAcJMUDbd7Ft7+2OCcdaglP0PD5XXO
+87Ke+v3irWr7x6dym1H2uGFl3TgS5bD8Uat7M8nZjyKX6VgO3FBrAl0sbZQswAPd
+3SvU0tzBf24QI9/sjTm5Ern+eLW/oNqnVzxEOAHP/4j7lTOlT+FvJN328k3WXkiO
+73bUyX7hHGymMx2zAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAApkLCJDT8Hfuf4d
+xMk87LfWeqoX/eX6lgN+80/I0AvOTm8qXUQGFPOK6/w+Q1KA0H1XYDKrOwb0YiLq
+5atIym/28G4d0brnJY857me4luPEi93sFUcB+2EG9+s3GYZwvQ/bJakeV22kAEjl
+ytGoRTNFMdw1JRdOUE7CqugQYP+ZgeQbIacp0eSJaRDOMp1mnsprD2He0s3WCHVg
+hCkKx17goLBXAaj3M228x9dwds6w07j0ydnfeCwje0aECOCb4EjI59Cr8NKUD9WA
+HbbzgGpfG83CAnMUHHrCrsT/0kQXllKfdkya5kPIBdkaLL89QQzz2vdEUa8X45uh
+wVBjO7I=
 -----END CERTIFICATE-----
diff --git a/tls/tests/files/client-key.pem b/tls/tests/files/client-key.pem
index e048c82..8d8ecd7 100644
--- a/tls/tests/files/client-key.pem
+++ b/tls/tests/files/client-key.pem
@@ -1,27 +1,27 @@
 -----BEGIN RSA PRIVATE KEY-----
-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
+MIIEowIBAAKCAQEAq74Ko7cqkCPEI7HNe3qBI9UC9tDYc4VbquVLUIhiomqfYbBx
+VyGw7IFBsaa2FWjmcY0ZuNEIWToyAxYXx5cPtGmbS3xC744f3mrVYegZ/xFOKG22
+H5K6LgddVLWEPVSYWaev1/AObnFFsk2IlceREnPaAnGRmRskD3rZLhymgHCTFA23
+exbe/tjgnHWoJT9Dw+V1zvOynvr94q1q+8encptR9rhhZd04EuWw/FGrezPJ2Y8i
+l+lYDtxQawJdLG2ULMAD3d0r1NLcwX9uECPf7I05uRK5/ni1v6Dap1c8RDgBz/+I
++5UzpU/hbyTd9vJN1l5Iju921Ml+4RxspjMdswIDAQABAoIBAAwUqCbwAXx2J5vj
+K/MdoOvmVfkKo88seFBDJNMbZOTL3z497RsV8Z4RUY+vjGthH6SpKkAH5DBymYYC
+DdYqWB52t0fOC99R/gflN/FVJE7+5qKNZRw/c/0842HMCutNghH8a7Ai4MEAEskC
+DzOKADhuEc3OM1GzyQuVtqU5urSaGQI+a2NOXGRHsScY8NaMwxwR0opXuL9FQRzc
+gc/h0KkEAQjwk4nDDD7k7tHieYGBR9TauurUEiRwtb5kSu7usuRz5GI046PGgHTj
++D7BJM3D9T5SjA1/GMV6r0a1QFv4iTi4k9kQ/vzJN0xnfq4q8rpvRbCpyCpvnjQC
+xNLakOECgYEA5K60lUCMLXGlDVU2wL+4CYB66g71jBSFJAkQ+EG2vlxcJWeiFAvE
+CTzp+b74FJzW/5iXUFDlorEzUjf3ot4oKOVfrQFbEMqT6FzsiVjUdjW2uaVe8t9Y
+QTcaLNKCkL9lKqmEqmd7/FPm+/40s1sWNJJeOsfiEknYFSIgPiiodFkCgYEAwEIP
+2kZwf97wqetHyuG4AMwxpdcwvBZmR+gudV7ndDPdGkrOFbDOU31mkvzckPvAHfza
+9Sz4jFrygaL9xVgQrIUVb7vlZ4aEd5eHKzNmwrx1tV8gJ4WS8jl6wNtaqeVmCytE
+TlPbdk2C4VpZK/XXYmEZQhd9vgwfBkEYyhxI0OsCgYEAs1tW5Qy4JNhSVK+1/t0f
+ccxkGvlamuBpQEcgGSYpNwpndyrd0w0bVweAl1GxbzFH6zX5z5NzV/PVRbIBtqq5
+IsIsFRvQGc5YzVE8b8jM8l3Uj6xlWOXVaWjXTbpZjz+eECTemWwKsW/45UGOgfF5
+7Ae0gjPNWvyxznlygm4PGRkCgYBnVprivh3V/WTqUDakjDK06wx8kW/2iSus1tWx
+7LMHuKDNcwvWiNQ9+BdcRmHf5BFdjP277tIhzviuSYeRvUYpFNdy2VHzFVC6X04e
+IGDJpza1qE3GMHvNiqu6Ya0XyN/SfQ0X9ObvbbY9nqxzfo6oqHxFFA9YSXebiv3i
+FNXmxQKBgAYO+D/gcUwOXVzW41A0lktHRNhIh26vZ2VhCEIdg0dwpOyGyls00QLi
+g4QoW64awD+C2ZYfnhz+JDRgzMn42PpGOWfVKdMKZ9UWwV8GxwiU/jRdwvzHZsV3
+ynTD2iLyedn2DVu2oKeCSyTZIjv6E2j8+mYwILlzDLvfMj8gf2el
 -----END RSA PRIVATE KEY-----
diff --git a/tls/tests/files/client-past.pem b/tls/tests/files/client-past.pem
index 66ae45e..f6d1ec4 100644
--- a/tls/tests/files/client-past.pem
+++ b/tls/tests/files/client-past.pem
@@ -7,17 +7,17 @@ ZSBBdXRob3JpdHkxFzAVBgNVBAMMDmNhLmV4YW1wbGUuY29tMR0wGwYJKoZIhvcN
 AQkBFg5jYUBleGFtcGxlLmNvbTAeFw0wMDA3MTcyMzAwMDBaFw0wMTA3MTcyMzAw
 MDBaMGIxEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFN
 UExFMQ8wDQYDVQQDDAZDbGllbnQxITAfBgkqhkiG9w0BCQEWEmNsaWVudEBleGFt
-cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALB/QctPIfpb
-onzUr4bxSANLsAWPoLyE8a1h2WUz2NJxtSjk0Ch531bGtlXxIMzGeUgJ0WwUh15L
-BJxm6vHcVVar1iV3JUf0XW4Wk0cYmpS36PXa9m0pQAXgzanbh5m5FWnGpO4QZS7d
-O7YYmbVO7lwIkT3B7dw3gCeMeyqSJbgXnBRB7zVff/lW/r0zJ1MF3AZHpDP17CHK
-175MBha29DqfsHkfqQga0eIR9vTqSBwe+m717pLgDoc23SgfHfsI+8F09uT+GEoy
-7Gr1CvT8mCkOHyg8yDIm0h7Az1hjvUPGW7P9PoYBCcto0OjcOPwTFVL8dgX8b6v+
-tOEvQEKIbfcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAgNa0nsEXn2Wdhzwkyhuk
-DvGsoDU8HIXP3hCC8+RIOZlL/rnSF55vizzInXqvkVDnJZ/X3L77v8KWVt7oRtZi
-6bXHpdi8B3JiY5djqVMJuYIHVXNUXL9GcvOqQGQ3c2TIUMGlpAvrppPVKPrqgV/7
-oBj9MFLT/bWQjzKkV5xit6ccrn7I1ncgAUjmUh+p1LbUqU0260oZLDVKlX5Ac9ua
-conXHEqLKcwJgyaANTMb6k9y2nksZIjDD6SFVjyQ8y6f/vc16y+URHBMGz4baNiR
-6OlBcSgjxj/fg0/95nmWS0INA3GV16hXV6tLoSuGLP9z5w8mSYhU7MYiYXn65foE
-mA==
+cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu+CqO3KpAj
+xCOxzXt6gSPVAvbQ2HOFW6rlS1CIYqJqn2GwcVchsOyBQbGmthVo5nGNGbjRCFk6
+MgMWF8eXD7Rpm0t8Qu+OH95q1WHoGf8RTihtth+Sui4HXVS1hD1UmFmnr9fwDm5x
+RbJNiJXHkRJz2gJxkZkbJA962S4cpoBwkxQNt3sW3v7Y4Jx1qCU/Q8Pldc7zsp76
+/eKtavvHp3KbUfa4YWXdOBLlsPxRq3szydmPIpfpWA7cUGsCXSxtlCzAA93dK9TS
+3MF/bhAj3+yNObkSuf54tb+g2qdXPEQ4Ac//iPuVM6VP4W8k3fbyTdZeSI7vdtTJ
+fuEcbKYzHbMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAWncXfVN8THjr7/MA5B5m
+fuZS8PEC4FcFjI3cELc47u5+A5vJmVyNgQXsxvSytf02onDAFj6rmpmBxRQP1s7a
+8YstdshIrcZmW/TzrQrLMp+Kw/ln0yKQeTwH2jWQ56s0k1uepHy+JYDaBZDoXcut
+Xmlee2kghEvhlIbJuzIzYQ3SmxrdaQ9Hsoj58obkdq74wok7qP3ZSQMTOR+Dc/xh
+CntlJJTvD+boij0TKqz3OJ6qJmHqUfZmlGPEo9mttHcNsugt2sCV1WzoBgRMUAba
+SvjsgMCZ3vBoYZwv4/WBAEeXP4X5xECw9YqF0I2DaQllex3f2zDDj9ZObxZ1FhJH
+sg==
 -----END CERTIFICATE-----
diff --git a/tls/tests/files/client.pem b/tls/tests/files/client.pem
index 2551a6e..c7f2782 100644
--- a/tls/tests/files/client.pem
+++ b/tls/tests/files/client.pem
@@ -2,20 +2,20 @@
 MIIDXTCCAkUCAQMwDQYJKoZIhvcNAQELBQAwgYYxEzARBgoJkiaJk/IsZAEZFgND
 T00xFzAVBgoJkiaJk/IsZAEZFgdFWEFNUExFMR4wHAYDVQQLDBVDZXJ0aWZpY2F0
 ZSBBdXRob3JpdHkxFzAVBgNVBAMMDmNhLmV4YW1wbGUuY29tMR0wGwYJKoZIhvcN
-AQkBFg5jYUBleGFtcGxlLmNvbTAeFw0yMDEwMTIxNzQ5NDVaFw00NTEwMDYxNzQ5
-NDVaMGIxEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFN
+AQkBFg5jYUBleGFtcGxlLmNvbTAeFw0yMTA2MTAyMzM4NTlaFw00NjA2MDQyMzM4
+NTlaMGIxEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFN
 UExFMQ8wDQYDVQQDDAZDbGllbnQxITAfBgkqhkiG9w0BCQEWEmNsaWVudEBleGFt
-cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALB/QctPIfpb
-onzUr4bxSANLsAWPoLyE8a1h2WUz2NJxtSjk0Ch531bGtlXxIMzGeUgJ0WwUh15L
-BJxm6vHcVVar1iV3JUf0XW4Wk0cYmpS36PXa9m0pQAXgzanbh5m5FWnGpO4QZS7d
-O7YYmbVO7lwIkT3B7dw3gCeMeyqSJbgXnBRB7zVff/lW/r0zJ1MF3AZHpDP17CHK
-175MBha29DqfsHkfqQga0eIR9vTqSBwe+m717pLgDoc23SgfHfsI+8F09uT+GEoy
-7Gr1CvT8mCkOHyg8yDIm0h7Az1hjvUPGW7P9PoYBCcto0OjcOPwTFVL8dgX8b6v+
-tOEvQEKIbfcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAnpAITVJnj3JO0K8qk0H6
-0QkygDKnt1WDjRLEWui/oGKGjJOkuiREXWB8l7UM6VrP38xKALdusGX6wj6/9JsO
-H/wGP89YFM8YiP2YXlG9I/7mMNPV6QPai5tW+mYrfrRmqq8Y177Q8HBfNtW8ZXFi
-CsE6GM2fb/lUUSdn3DT7mUMwXcEtIOHKpa7/N2sdbifpNJdnmKzYRJHwIBgdfIj6
-pl6u4baDKiFTClTky+YHuuppGy8cs/ZrXi/b0nyWyZ/Z+cRke9DyWB+QqMPtF1Id
-kvu15eweJB4HbrmSkvA2IpuNIJQy6AQm67FKxiEjP8ksq5RW67CbHM1OZSeTKF4Y
-mQ==
+cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu+CqO3KpAj
+xCOxzXt6gSPVAvbQ2HOFW6rlS1CIYqJqn2GwcVchsOyBQbGmthVo5nGNGbjRCFk6
+MgMWF8eXD7Rpm0t8Qu+OH95q1WHoGf8RTihtth+Sui4HXVS1hD1UmFmnr9fwDm5x
+RbJNiJXHkRJz2gJxkZkbJA962S4cpoBwkxQNt3sW3v7Y4Jx1qCU/Q8Pldc7zsp76
+/eKtavvHp3KbUfa4YWXdOBLlsPxRq3szydmPIpfpWA7cUGsCXSxtlCzAA93dK9TS
+3MF/bhAj3+yNObkSuf54tb+g2qdXPEQ4Ac//iPuVM6VP4W8k3fbyTdZeSI7vdtTJ
+fuEcbKYzHbMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAEN8XZwrjwXPOAJQLCYIn
+615fruXiP2Am5LB0w/H2Nq9uGCJ20Yue74IxCoyrGRPPiH9gUN8Co+HMEB+RUHKI
+6LKckmXjl/yPMrW+WQ9OA3Gnfld07r60v1JCFNpn5v7GFb+hBC47VLNsFmg3Gj3i
+pUBE6gQuswr2IpTVdh3gMhQowAVSTFPuJMB0kDYdwMGkPzDwWQo7mP3ZPOzzmcMm
+UfeSCYKBlnjvoBqCCBguzak6VGYfrJBhf/Dts1Do49w4GYgb5dQf+CKGYfOgb9Td
+GN9BQgUddrmTxAeLHBc3vN3G8qx+zFOXqseXdR6nLiOXp6gSaZlvxpE9cWNLKAJ2
+RQ==
 -----END CERTIFICATE-----
diff --git a/tls/tests/files/client2-and-key.pem b/tls/tests/files/client2-and-key.pem
index 987369c..47cdcb8 100644
--- a/tls/tests/files/client2-and-key.pem
+++ b/tls/tests/files/client2-and-key.pem
@@ -2,47 +2,47 @@
 MIIDXTCCAkUCAQYwDQYJKoZIhvcNAQELBQAwgYYxEzARBgoJkiaJk/IsZAEZFgND
 T00xFzAVBgoJkiaJk/IsZAEZFgdFWEFNUExFMR4wHAYDVQQLDBVDZXJ0aWZpY2F0
 ZSBBdXRob3JpdHkxFzAVBgNVBAMMDmNhLmV4YW1wbGUuY29tMR0wGwYJKoZIhvcN
-AQkBFg5jYUBleGFtcGxlLmNvbTAeFw0yMDEwMTIxNzQ5NTFaFw00NTEwMDYxNzQ5
-NTFaMGIxEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFN
+AQkBFg5jYUBleGFtcGxlLmNvbTAeFw0yMTA2MTAyMzM5MTJaFw00NjA2MDQyMzM5
+MTJaMGIxEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFN
 UExFMQ8wDQYDVQQDDAZDbGllbnQxITAfBgkqhkiG9w0BCQEWEmNsaWVudEBleGFt
-cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVdmmU1KY3o
-MIgJbckUfm7uy/2Ba/60NeZDAWz2oZSZeiA65u7D0w0DYKceOf2btUY6pX9R7xuH
-jbh8ztV2xR93qqJRy2R/JhsW1XHgftWKLrbxUJ9KFN8xyUtECSROICyaaBl577h7
-hP0ifmCuW6+NJ8FQgfzwuWMseT5y2u01tUPHmF2SqEMvorVfoVUYjsdl56jWxlJ5
-v8D7htZbAwfU0XY3XjdMeCOg1/cy7RKMc+wVeVWAQFfHEqqmYAJBGtpMnHWJTXdq
-Omqp2poNEFgLzXdJIT/XjrxKGXKe9sMhSw4oL3lIAvxkjGEiXOqTRUU3ZuYKKJNk
-4SOABmG1T2cCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAbjwRNYbPFq3BXdtRUldW
-56gKwSDd0K/nwSg3lRz89wTQJ4ql3s6CfD9QoTCiq3TcMnOi8lHug+9R2KDRu+CZ
-bCF2gh79TH+kgjDUwVp6lNMu9abVy6QfYnY6BGbhDQp82SdOSKN2/+q0g1aZmGzt
-GYAgP2uPvub9eTbq4fT6xNxctdM7pYFWibECBnw0yailolX+Y7dw2SbQ/8iTFmVQ
-CN6btbpR6PdnF0Ja7mnnVk5GNJh28bbPLvI399PvUJrqlsvcfN5VMVB9IfpQUx9Z
-39hl55qnABIVjWTK/CWIehjpy4306RCe6ug4Szqt61INqeODfPpntRSCGCR3/6uo
-pw==
+cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPRViXdhsRI3
+nfxXUynUm76wIxcoKiVHXIUPQYOFN4DjHe98s0EHNQY8Xrwp+ZvyXmVMht4S3iHt
+MFxMIyZCN+gS5HKsRNuj1+smSlMMtlPEVN6D6QoXlaPCn/5AnoSLq74V3A0Tbmpu
+FP0z4Eynx6xqv14h9HVuXQvy/07gklT9iuZJpAbB6qGlmI9C/UR75c+ZG/Nhb9Q6
+nII8F4RUPYfDtmtyCW13slI3suaUlY4OQBJg60tmucVO9XHJ/3cjk1IXQZ7Ll/y+
+n3DOjeRAQoPiCy/sWWsFzd4w1DlxmlDfGM8PMnmoTW0fYhC5hjoxDPtaBFknOCpA
+8NTExC1OPgkCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAcaetPI/Pnqqdr3zRqXaP
+cu/+lL5KdZiKFJWSkmFAgJ7XzGC/zEAWIfkIAe1ZpQSPkDkGhGmDML/AhSjkkPxT
+OFiQghI7mIaS3LJMyZsD2NyK9vP4zt0mgb7hExqG0EuczMoshJIO2GpUV9LIySnh
+59X7Spat59t7dUUSLJEa2gArGpAAyyi70F8YCbsTBEgpS1G/ir80xCGe20B1kDmx
+pnYI+rqNYPBlpqbYue1nlbKymvvKGke5UanHgO2+PNYzWDchv8Wu1ZJu+JlvpHiZ
+tmDAN2iLZ/e/m8fyKVpdjq2zgvtY1nr2vUhSKrnLXu6/dVraJ1LqMTjDWDEH+CKY
+mQ==
 -----END CERTIFICATE-----
 -----BEGIN RSA PRIVATE KEY-----
-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
+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
 -----END RSA PRIVATE KEY-----
diff --git a/tls/tests/files/client2-csr.pem b/tls/tests/files/client2-csr.pem
new file mode 100644
index 0000000..35e44ea
--- /dev/null
+++ b/tls/tests/files/client2-csr.pem
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICpzCCAY8CAQAwYjETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixk
+ARkWB0VYQU1QTEUxDzANBgNVBAMMBkNsaWVudDEhMB8GCSqGSIb3DQEJARYSY2xp
+ZW50QGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
+9FWJd2GxEjed/FdTKdSbvrAjFygqJUdchQ9Bg4U3gOMd73yzQQc1BjxevCn5m/Je
+ZUyG3hLeIe0wXEwjJkI36BLkcqxE26PX6yZKUwy2U8RU3oPpCheVo8Kf/kCehIur
+vhXcDRNuam4U/TPgTKfHrGq/XiH0dW5dC/L/TuCSVP2K5kmkBsHqoaWYj0L9RHvl
+z5kb82Fv1DqcgjwXhFQ9h8O2a3IJbXeyUjey5pSVjg5AEmDrS2a5xU71ccn/dyOT
+UhdBnsuX/L6fcM6N5EBCg+ILL+xZawXN3jDUOXGaUN8Yzw8yeahNbR9iELmGOjEM
++1oEWSc4KkDw1MTELU4+CQIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAFoG87Kg
+GvtIxbqdoR80uSu9RTUtjKYpFCETJcjdmPUz3felyR3QdQRB7aDaLrADscxGXf0F
+Y5EyN9b4X/xbHhE78iijBcHyiC+EmCVnnAcKgZWnvEigQ1z694NZpUBTKgnhSSLL
+5KoxyO2LST8yynUdrp0A1wBcrFzfX2IXHMz5e3dqdpZms8pe9aE6haqBen8YYcEu
+5Lt8bfh/rpZNCsCi+yOPmaE/BhKJU5wx1yQDFLP52xrUKzOZbaLqeFSC1sC3E+Ko
+u+2Oshyrgs9+z5Vk0QZVlQZEYwgw1XCyzRdRytaNzjKbrwrBybMMl2e/aIbSK4LE
+tZ6YXagepxK2FgY=
+-----END CERTIFICATE REQUEST-----
diff --git a/tls/tests/files/client2-key.pem b/tls/tests/files/client2-key.pem
index 987c866..1061377 100644
--- a/tls/tests/files/client2-key.pem
+++ b/tls/tests/files/client2-key.pem
@@ -1,27 +1,27 @@
 -----BEGIN RSA PRIVATE KEY-----
-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
+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
 -----END RSA PRIVATE KEY-----
diff --git a/tls/tests/files/client2.pem b/tls/tests/files/client2.pem
index b034024..7829740 100644
--- a/tls/tests/files/client2.pem
+++ b/tls/tests/files/client2.pem
@@ -2,20 +2,20 @@
 MIIDXTCCAkUCAQYwDQYJKoZIhvcNAQELBQAwgYYxEzARBgoJkiaJk/IsZAEZFgND
 T00xFzAVBgoJkiaJk/IsZAEZFgdFWEFNUExFMR4wHAYDVQQLDBVDZXJ0aWZpY2F0
 ZSBBdXRob3JpdHkxFzAVBgNVBAMMDmNhLmV4YW1wbGUuY29tMR0wGwYJKoZIhvcN
-AQkBFg5jYUBleGFtcGxlLmNvbTAeFw0yMDEwMTIxNzQ5NTFaFw00NTEwMDYxNzQ5
-NTFaMGIxEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFN
+AQkBFg5jYUBleGFtcGxlLmNvbTAeFw0yMTA2MTAyMzM5MTJaFw00NjA2MDQyMzM5
+MTJaMGIxEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFN
 UExFMQ8wDQYDVQQDDAZDbGllbnQxITAfBgkqhkiG9w0BCQEWEmNsaWVudEBleGFt
-cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVdmmU1KY3o
-MIgJbckUfm7uy/2Ba/60NeZDAWz2oZSZeiA65u7D0w0DYKceOf2btUY6pX9R7xuH
-jbh8ztV2xR93qqJRy2R/JhsW1XHgftWKLrbxUJ9KFN8xyUtECSROICyaaBl577h7
-hP0ifmCuW6+NJ8FQgfzwuWMseT5y2u01tUPHmF2SqEMvorVfoVUYjsdl56jWxlJ5
-v8D7htZbAwfU0XY3XjdMeCOg1/cy7RKMc+wVeVWAQFfHEqqmYAJBGtpMnHWJTXdq
-Omqp2poNEFgLzXdJIT/XjrxKGXKe9sMhSw4oL3lIAvxkjGEiXOqTRUU3ZuYKKJNk
-4SOABmG1T2cCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAbjwRNYbPFq3BXdtRUldW
-56gKwSDd0K/nwSg3lRz89wTQJ4ql3s6CfD9QoTCiq3TcMnOi8lHug+9R2KDRu+CZ
-bCF2gh79TH+kgjDUwVp6lNMu9abVy6QfYnY6BGbhDQp82SdOSKN2/+q0g1aZmGzt
-GYAgP2uPvub9eTbq4fT6xNxctdM7pYFWibECBnw0yailolX+Y7dw2SbQ/8iTFmVQ
-CN6btbpR6PdnF0Ja7mnnVk5GNJh28bbPLvI399PvUJrqlsvcfN5VMVB9IfpQUx9Z
-39hl55qnABIVjWTK/CWIehjpy4306RCe6ug4Szqt61INqeODfPpntRSCGCR3/6uo
-pw==
+cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPRViXdhsRI3
+nfxXUynUm76wIxcoKiVHXIUPQYOFN4DjHe98s0EHNQY8Xrwp+ZvyXmVMht4S3iHt
+MFxMIyZCN+gS5HKsRNuj1+smSlMMtlPEVN6D6QoXlaPCn/5AnoSLq74V3A0Tbmpu
+FP0z4Eynx6xqv14h9HVuXQvy/07gklT9iuZJpAbB6qGlmI9C/UR75c+ZG/Nhb9Q6
+nII8F4RUPYfDtmtyCW13slI3suaUlY4OQBJg60tmucVO9XHJ/3cjk1IXQZ7Ll/y+
+n3DOjeRAQoPiCy/sWWsFzd4w1DlxmlDfGM8PMnmoTW0fYhC5hjoxDPtaBFknOCpA
+8NTExC1OPgkCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAcaetPI/Pnqqdr3zRqXaP
+cu/+lL5KdZiKFJWSkmFAgJ7XzGC/zEAWIfkIAe1ZpQSPkDkGhGmDML/AhSjkkPxT
+OFiQghI7mIaS3LJMyZsD2NyK9vP4zt0mgb7hExqG0EuczMoshJIO2GpUV9LIySnh
+59X7Spat59t7dUUSLJEa2gArGpAAyyi70F8YCbsTBEgpS1G/ir80xCGe20B1kDmx
+pnYI+rqNYPBlpqbYue1nlbKymvvKGke5UanHgO2+PNYzWDchv8Wu1ZJu+JlvpHiZ
+tmDAN2iLZ/e/m8fyKVpdjq2zgvtY1nr2vUhSKrnLXu6/dVraJ1LqMTjDWDEH+CKY
+mQ==
 -----END CERTIFICATE-----
diff --git a/tls/tests/files/create-files.sh b/tls/tests/files/create-files.sh
index a313963..14bfa04 100755
--- a/tls/tests/files/create-files.sh
+++ b/tls/tests/files/create-files.sh
@@ -92,6 +92,10 @@ openssl x509 -in server.pem -outform DER -out server.der
 msg "Converting server private key from PEM to DER"
 openssl rsa -in server-key.pem -outform DER -out server-key.der
 
+msg "Converting server private key to PKCS #8"
+openssl pkcs8 -topk8 -in server-key.pem -outform PEM -nocrypt -out server-key-pkcs8.pem
+openssl pkcs8 -topk8 -in server-key.pem -outform DER -nocrypt -out server-key-pkcs8.der
+
 #######################################################################
 ### Server (self-signed)
 #######################################################################
diff --git a/tls/tests/files/intermediate-ca-csr.pem b/tls/tests/files/intermediate-ca-csr.pem
index 0557eed..285cde8 100644
--- a/tls/tests/files/intermediate-ca-csr.pem
+++ b/tls/tests/files/intermediate-ca-csr.pem
@@ -3,18 +3,18 @@ MIIDRDCCAiwCAQAwga0xEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/Is
 ZAEZFgdFWEFNUExFMSswKQYDVQQLDCJJbnRlcm1lZGlhdGUgQ2VydGlmaWNhdGUg
 QXV0aG9yaXR5MSQwIgYDVQQDDBtpbnRlcm1lZGlhdGUtY2EuZXhhbXBsZS5jb20x
 KjAoBgkqhkiG9w0BCQEWG2ludGVybWVkaWF0ZS1jYUBleGFtcGxlLmNvbTCCASIw
-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANEiR6aaGVdhIBCTJDbB0KBjAYu1
-f5onK3d+meKkp/K5V2DeatnupjqEkK8qEzzl8a81YblGg/k0mghDQMA+Rm9POPVN
-ugUwuOlzlfOshVuNRVGMh+Svu7Sa8y++eMiQnWYk3nQETGa0C+4Lwx/khIfXJ4QQ
-0SWE3RDkNLS052zRXeyTsOnvFRtnLw3Z4rQWJrdJtvcHIL534jEsR8B/6sheYm3u
-L+NupH+NdiWnqWFglrvObG4Diyki1A7u1SHIBMwdc1sHu7yDrKsrTijqPbQpdRri
-p3jHRAMjH+KFzeUaJR8hlnIUgwctdw6kgG7OfQPq1hWtfpI8mJ4CFhux3/cCAwEA
-AaBRME8GCSqGSIb3DQEJDjFCMEAwHQYDVR0OBBYEFHAsg6JzMPalssSqCVu2+wCU
-kXC2MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
-CwUAA4IBAQCP/tVVv0ry4qsvp237Tufq0FRF8iCxdDedPjPyqkTvS60GoU0N3oK7
-/kwJ7BtV6cuPekDmp8gdc3vQ7dkDs0F4rlgnQdYgizDmRyfX+a9PHxqc6uF90qwK
-OcNzGacuqyf4RFMEbVXAGnr2HJCqZPZrD2H5wfKIVkdJwKB6L8x4ZMMCh9MBrYs6
-+GekbOKFGnJsBbwK/dttT/wAydNwbm7I9ICNlm/nREti4IjvDtChUik+nVPiBRdx
-KA0JF0xeCXQMT/yqsXNTka797tGVS84e+DBv6l7a9jvkU/RlsKwYlOvmSNzuwT3E
-wgfVrzE/4yQ24iuzaoSC7VEeNb8WhQFq
+DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALsubRO/TkL3AS5+wzYtjLBDHfGE
+TRiIwsl1JfWm+7EOmcfT/SElLJE6z4T9LVQQcycTN+jrO/QW+AzYl336VrZLnOPm
+4ju4IOwnPZaajjJX9LYks9bCUGMum6q90zLJr9KmxlKVxIC0Bc418J77QAMp3dC8
+lVay4NusTan0W1o55ipd6rw4VtlcV+QbBRWilwh6X4+Gl/lfmllqjfIT0Qk/r3dR
+4tYwnS5kmaBiEXzTi4V84o/mbr8YHCQOKlGiKhy4J1wrAI4sJKUWEBafTbPZcP4z
+fq4IJJtKx4L/yO7KovGCNLsdr0XIJ5WhQXczoa9/8tcBMfpw4x8VBUUKFoECAwEA
+AaBRME8GCSqGSIb3DQEJDjFCMEAwHQYDVR0OBBYEFPUUFYFrRhJ9CBkbLAfNjzfM
+//RxMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
+CwUAA4IBAQAweno4JYqTnQKcpeBVrYkYwuvaIZfxcuQiV4igwzDQbSjDCCCPiXV3
+zXGvKMOJNTS6gvevrngQYgbAd36e9uCrE8M6NdgRVsC7ifaxPK6a4guAErj0WZIA
+JE72TO1ylyhHjXtPu94pGnBj3yG3drLMAJtruJNpND5ZhJLTxBdN1VSDapD0O/4u
+s951S6Ru8Exw14QpbVb4qenYmhyyUpzICh9pQVAtZkT5vXtql4HYcVfj4uq95dRB
+EOxaVANlGWRGwrTG4AZV7GyWnyDG/JX0M6/AQaERNab6+H8JIDL3a0mYlOuBZSSa
+8aTklyGc9pDGSv2yf3RKeSm7tAxTBe2x
 -----END CERTIFICATE REQUEST-----
diff --git a/tls/tests/files/intermediate-ca-key.pem b/tls/tests/files/intermediate-ca-key.pem
index 28f2407..4abb498 100644
--- a/tls/tests/files/intermediate-ca-key.pem
+++ b/tls/tests/files/intermediate-ca-key.pem
@@ -1,27 +1,27 @@
 -----BEGIN RSA PRIVATE KEY-----
-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
+MIIEogIBAAKCAQEAuy5tE79OQvcBLn7DNi2MsEMd8YRNGIjCyXUl9ab7sQ6Zx9P9
+ISUskTrPhP0tVBBzJxM36Os79Bb4DNiXffpWtkuc4+biO7gg7Cc9lpqOMlf0tiSz
+1sJQYy6bqr3TMsmv0qbGUpXEgLQFzjXwnvtAAynd0LyVVrLg26xNqfRbWjnmKl3q
+vDhW2VxX5BsFFaKXCHpfj4aX+V+aWWqN8hPRCT+vd1Hi1jCdLmSZoGIRfNOLhXzi
+j+ZuvxgcJA4qUaIqHLgnXCsAjiwkpRYQFp9Ns9lw/jN+rggkm0rHgv/I7sqi8YI0
+ux2vRcgnlaFBdzOhr3/y1wEx+nDjHxUFRQoWgQIDAQABAoIBAGENwHb1waGNK2qt
+RZDI62LVWihJXiQzfTQx7t3BmE2E8Y2gSGawPLyMzt7421D0OpDvMRUvK2Xzpuga
+QeqLK/zXleDBbVpjrYZlDlURjFtkKblrrGfVVxMmLobIaEK0OtsxqDFYAIxvS3dR
+lpMIWXeKdL3vmkta8qZUX+yYi+lqqYJPw4fu8zl/na6B5Mx9gcZKdUmcE9L4CGyk
+yzSH8kPA9stvJO/9UxMi4ekm00JXpy8AdW2oV92AKqiBv3RNwm2Rs/W7eeHIVA+t
+oFBoHVOTBh/m7uOQyLiru1sKx2o0sRL7Asl6VK6p/GQGSxTsgB2tJEkpOJwbrjDC
+S+vnLMECgYEA9X2vh8ALSrKJY5vGHv7iKGCUHGfath8eZcG6XImoFhMNOanf/1rt
+oa7gOKmfxGMF6hnKO88H9+GNv3kqWxjOaSVBm6b7wDh/5qragDRX8Abk/CqpRx7M
+y4Kamzv5lFU3S2pppN04oOneiPYpegMuOmyYb6vnq+eGHNEynHPsxukCgYEAwzG6
+/dk1dCwqpOwlWg79YJO5AOVwyvMzGXtBNXVikiteIOFqvnH4gSnnxPzPe178Mw5E
+wVTFUhhPXXA80cph9d9v9wNs7KgiXtbN7ODxLP7lPZ7ZbVaYtcWJQvhsyY/0Thcu
+8EdEQdvhlLGLHfuVkQLnf2Ja4S7bazoa4FgCw9kCgYAmKpU4qL3Yris4BkbmGMB2
+gJVmWSsit3HVZiogKvKsA+hBd8yweaWKRpLrnEuPj8minMHZTJWzjyinhSH1qcSl
+ijpKBcsMFnykExoHZpvpYFkHb2aD/SDf3v1Edy2VRy5ilje4fwBH3DRR3NuT8Zyl
+Tq7gZbyN+F/caRXSRx+fyQKBgAfwu/Sbo2sIaOuwl4xkU7ZcDAiXTNFUt11wACUW
+k13y2a9ovBjnNf67H6yJxD72jDfferiKpERErOXWLQMzwmxoHHvl7cZqyIsnHdVn
+CSiVbenlzl5+SVQLpxvMU1CXxI5wrv4jSAmN0k1kM46Sr3Dot1YdQCks6Mwh3voF
+WodxAoGAVluswOPAfh570jetitPE829dgYkjRrArg//NcJwyLCCk0ah1sJlAtiUA
+VZn7LzOmbKyoTQi1eiR+EAJorndLrh0nZcU2TWP+Y3IerHrgzNZRthoaAGxy4xf8
+7/vPGBNugpWR6eeNB3VH4DYyKnuLPa87QkVk0sZ6quzVewBUy/4=
 -----END RSA PRIVATE KEY-----
diff --git a/tls/tests/files/intermediate-ca.pem b/tls/tests/files/intermediate-ca.pem
index c5829fe..c9456c5 100644
--- a/tls/tests/files/intermediate-ca.pem
+++ b/tls/tests/files/intermediate-ca.pem
@@ -2,28 +2,28 @@
 MIIFAjCCA+qgAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBhjETMBEGCgmSJomT8ixk
 ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsMFUNlcnRp
 ZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOY2EuZXhhbXBsZS5jb20xHTAbBgkq
-hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTIwMTAxMjE3NDk1MVoXDTQ1MTAw
-NjE3NDk1MVowga0xEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZ
+hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTIxMDYxMDIzMzkxMloXDTQ2MDYw
+NDIzMzkxMlowga0xEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZ
 FgdFWEFNUExFMSswKQYDVQQLDCJJbnRlcm1lZGlhdGUgQ2VydGlmaWNhdGUgQXV0
 aG9yaXR5MSQwIgYDVQQDDBtpbnRlcm1lZGlhdGUtY2EuZXhhbXBsZS5jb20xKjAo
 BgkqhkiG9w0BCQEWG2ludGVybWVkaWF0ZS1jYUBleGFtcGxlLmNvbTCCASIwDQYJ
-KoZIhvcNAQEBBQADggEPADCCAQoCggEBANEiR6aaGVdhIBCTJDbB0KBjAYu1f5on
-K3d+meKkp/K5V2DeatnupjqEkK8qEzzl8a81YblGg/k0mghDQMA+Rm9POPVNugUw
-uOlzlfOshVuNRVGMh+Svu7Sa8y++eMiQnWYk3nQETGa0C+4Lwx/khIfXJ4QQ0SWE
-3RDkNLS052zRXeyTsOnvFRtnLw3Z4rQWJrdJtvcHIL534jEsR8B/6sheYm3uL+Nu
-pH+NdiWnqWFglrvObG4Diyki1A7u1SHIBMwdc1sHu7yDrKsrTijqPbQpdRrip3jH
-RAMjH+KFzeUaJR8hlnIUgwctdw6kgG7OfQPq1hWtfpI8mJ4CFhux3/cCAwEAAaOC
-AVAwggFMMB0GA1UdDgQWBBRwLIOiczD2pbLEqglbtvsAlJFwtjCBxgYDVR0jBIG+
-MIG7gBSLcFF+Oi4WrdNajz7wc6U4i2X3O6GBjKSBiTCBhjETMBEGCgmSJomT8ixk
+KoZIhvcNAQEBBQADggEPADCCAQoCggEBALsubRO/TkL3AS5+wzYtjLBDHfGETRiI
+wsl1JfWm+7EOmcfT/SElLJE6z4T9LVQQcycTN+jrO/QW+AzYl336VrZLnOPm4ju4
+IOwnPZaajjJX9LYks9bCUGMum6q90zLJr9KmxlKVxIC0Bc418J77QAMp3dC8lVay
+4NusTan0W1o55ipd6rw4VtlcV+QbBRWilwh6X4+Gl/lfmllqjfIT0Qk/r3dR4tYw
+nS5kmaBiEXzTi4V84o/mbr8YHCQOKlGiKhy4J1wrAI4sJKUWEBafTbPZcP4zfq4I
+JJtKx4L/yO7KovGCNLsdr0XIJ5WhQXczoa9/8tcBMfpw4x8VBUUKFoECAwEAAaOC
+AVAwggFMMB0GA1UdDgQWBBT1FBWBa0YSfQgZGywHzY83zP/0cTCBxgYDVR0jBIG+
+MIG7gBRQOF6Z1qO4oMHq2kSzjiDm9kh0AqGBjKSBiTCBhjETMBEGCgmSJomT8ixk
 ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsMFUNlcnRp
 ZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOY2EuZXhhbXBsZS5jb20xHTAbBgkq
-hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tghQ+s67jByiORo59Mf4YWphlAh5esDAP
+hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tghQk1yZyXpu/SEN1m3GMqLKXciDO5DAP
 BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAmBgNVHREEHzAdgRtpbnRl
 cm1lZGlhdGUtY2FAZXhhbXBsZS5jb20wGQYDVR0SBBIwEIEOY2FAZXhhbXBsZS5j
-b20wDQYJKoZIhvcNAQELBQADggEBADb+0KoGV/ZzUQ2moJnOQQRUL9HLtG9OC8Hh
-MZhGO0IhpwOkiT1Jy05n1tXu6x+XC3XI8WmzP6uuuNGmWoq38+AdtofPDXKnnLBN
-L3WU+JGI2cZ9eBv/yv1QeFxPFR9IuVMXc+Pt+2TVoV2ancDeH31GKqkktPO2G50g
-1F8AxaAV/PYIFQVGxH2+Cra3HKOcGWk7qHZBUh/Llvy+UWL6oa2MPBPmawNFq0Jm
-pIIO7SJzIieGTZL/X9GDOyGA4q9onvIJ2NHekIflYDG7hu440rG2evrnkjg63sBA
-QWp62b4ftpTxkvg1aLN92ciNVnajHv6Zc6HP1dBClWI26Hu8TRI=
+b20wDQYJKoZIhvcNAQELBQADggEBAHWS+/zPkH34q4uN8L1EvIvDI06f4OkgfSCe
+dDSUCMKS5kUx0Z8K0v/QWIEsxC/dq4ibLIQIpH3aAkJlBBGvWTDyWR5Z/rkWVvUO
+TIFFbKlWc8ItxzwFI4z6QnVlju0+cO2og3hWHKVet93rUeSOKTVST1/2mKmnsuno
+1312W4yxMcy1UF2x6+3l9QnmLN9nLnpQTDxunGPbxxip+FbqaNeVg63eg2Yw8nX0
++pe5cgeKCTwmOMCIwwUOCO7teIvju9KcjBuWrYu61Bihg6uIHdf/m/mjD/ajHi1W
+U/ddSys6Lj7mwi7BczXktw6ovDULJ7toR+oM7Vrfa6J2do7rcrE=
 -----END CERTIFICATE-----
diff --git a/tls/tests/files/non-ca.pem b/tls/tests/files/non-ca.pem
index e08453c..b1bde15 100644
--- a/tls/tests/files/non-ca.pem
+++ b/tls/tests/files/non-ca.pem
@@ -3,22 +3,22 @@ client.pem:
 MIIDXTCCAkUCAQMwDQYJKoZIhvcNAQELBQAwgYYxEzARBgoJkiaJk/IsZAEZFgND
 T00xFzAVBgoJkiaJk/IsZAEZFgdFWEFNUExFMR4wHAYDVQQLDBVDZXJ0aWZpY2F0
 ZSBBdXRob3JpdHkxFzAVBgNVBAMMDmNhLmV4YW1wbGUuY29tMR0wGwYJKoZIhvcN
-AQkBFg5jYUBleGFtcGxlLmNvbTAeFw0yMDEwMTIxNzQ5NDVaFw00NTEwMDYxNzQ5
-NDVaMGIxEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFN
+AQkBFg5jYUBleGFtcGxlLmNvbTAeFw0yMTA2MTAyMzM4NTlaFw00NjA2MDQyMzM4
+NTlaMGIxEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFN
 UExFMQ8wDQYDVQQDDAZDbGllbnQxITAfBgkqhkiG9w0BCQEWEmNsaWVudEBleGFt
-cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALB/QctPIfpb
-onzUr4bxSANLsAWPoLyE8a1h2WUz2NJxtSjk0Ch531bGtlXxIMzGeUgJ0WwUh15L
-BJxm6vHcVVar1iV3JUf0XW4Wk0cYmpS36PXa9m0pQAXgzanbh5m5FWnGpO4QZS7d
-O7YYmbVO7lwIkT3B7dw3gCeMeyqSJbgXnBRB7zVff/lW/r0zJ1MF3AZHpDP17CHK
-175MBha29DqfsHkfqQga0eIR9vTqSBwe+m717pLgDoc23SgfHfsI+8F09uT+GEoy
-7Gr1CvT8mCkOHyg8yDIm0h7Az1hjvUPGW7P9PoYBCcto0OjcOPwTFVL8dgX8b6v+
-tOEvQEKIbfcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAnpAITVJnj3JO0K8qk0H6
-0QkygDKnt1WDjRLEWui/oGKGjJOkuiREXWB8l7UM6VrP38xKALdusGX6wj6/9JsO
-H/wGP89YFM8YiP2YXlG9I/7mMNPV6QPai5tW+mYrfrRmqq8Y177Q8HBfNtW8ZXFi
-CsE6GM2fb/lUUSdn3DT7mUMwXcEtIOHKpa7/N2sdbifpNJdnmKzYRJHwIBgdfIj6
-pl6u4baDKiFTClTky+YHuuppGy8cs/ZrXi/b0nyWyZ/Z+cRke9DyWB+QqMPtF1Id
-kvu15eweJB4HbrmSkvA2IpuNIJQy6AQm67FKxiEjP8ksq5RW67CbHM1OZSeTKF4Y
-mQ==
+cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu+CqO3KpAj
+xCOxzXt6gSPVAvbQ2HOFW6rlS1CIYqJqn2GwcVchsOyBQbGmthVo5nGNGbjRCFk6
+MgMWF8eXD7Rpm0t8Qu+OH95q1WHoGf8RTihtth+Sui4HXVS1hD1UmFmnr9fwDm5x
+RbJNiJXHkRJz2gJxkZkbJA962S4cpoBwkxQNt3sW3v7Y4Jx1qCU/Q8Pldc7zsp76
+/eKtavvHp3KbUfa4YWXdOBLlsPxRq3szydmPIpfpWA7cUGsCXSxtlCzAA93dK9TS
+3MF/bhAj3+yNObkSuf54tb+g2qdXPEQ4Ac//iPuVM6VP4W8k3fbyTdZeSI7vdtTJ
+fuEcbKYzHbMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAEN8XZwrjwXPOAJQLCYIn
+615fruXiP2Am5LB0w/H2Nq9uGCJ20Yue74IxCoyrGRPPiH9gUN8Co+HMEB+RUHKI
+6LKckmXjl/yPMrW+WQ9OA3Gnfld07r60v1JCFNpn5v7GFb+hBC47VLNsFmg3Gj3i
+pUBE6gQuswr2IpTVdh3gMhQowAVSTFPuJMB0kDYdwMGkPzDwWQo7mP3ZPOzzmcMm
+UfeSCYKBlnjvoBqCCBguzak6VGYfrJBhf/Dts1Do49w4GYgb5dQf+CKGYfOgb9Td
+GN9BQgUddrmTxAeLHBc3vN3G8qx+zFOXqseXdR6nLiOXp6gSaZlvxpE9cWNLKAJ2
+RQ==
 -----END CERTIFICATE-----
 
 client-future.pem:
@@ -31,19 +31,19 @@ ZSBBdXRob3JpdHkxFzAVBgNVBAMMDmNhLmV4YW1wbGUuY29tMR0wGwYJKoZIhvcN
 AQkBFg5jYUBleGFtcGxlLmNvbTAiGA8yMDYwMDcxNzIzMDAwMFoYDzIwNjEwNzE3
 MjMwMDAwWjBiMRMwEQYKCZImiZPyLGQBGRYDQ09NMRcwFQYKCZImiZPyLGQBGRYH
 RVhBTVBMRTEPMA0GA1UEAwwGQ2xpZW50MSEwHwYJKoZIhvcNAQkBFhJjbGllbnRA
-ZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCwf0HL
-TyH6W6J81K+G8UgDS7AFj6C8hPGtYdllM9jScbUo5NAoed9WxrZV8SDMxnlICdFs
-FIdeSwScZurx3FVWq9YldyVH9F1uFpNHGJqUt+j12vZtKUAF4M2p24eZuRVpxqTu
-EGUu3Tu2GJm1Tu5cCJE9we3cN4AnjHsqkiW4F5wUQe81X3/5Vv69MydTBdwGR6Qz
-9ewhyte+TAYWtvQ6n7B5H6kIGtHiEfb06kgcHvpu9e6S4A6HNt0oHx37CPvBdPbk
-/hhKMuxq9Qr0/JgpDh8oPMgyJtIewM9YY71Dxluz/T6GAQnLaNDo3Dj8ExVS/HYF
-/G+r/rThL0BCiG33AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAKSDFn8ZZ3jeGauc
-xAz66UKVJq4TmY07OcN0TnU0CGn9k4ZdcHxHDQ+kIUsAYZprDPLY02uTGxP925fn
-RwlbTEyQML1be6e082yrmv0Z6rjgv05BnPr7iNIoAQA+W71jNBuHBoFVZpmPnpFY
-zPh4hEb6zLzicb7gXzZvXM1sapCJWqlfSW3tWOv45CfgEje9iYqN3UoueCcQMGXl
-gaqWipLmlgD6qu/EZ+FfxmHkv5eWMb7KYbvJXgaF7PaT2FgrCrybB+RO1RjIMsnD
-OaRnlfBr9Zue4cJMAVHjRg/jxirYiTnz63pirKQvBZ4g8eLIUO3WCDUVFxjhThgR
-uMedPw0=
+ZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrvgqj
+tyqQI8Qjsc17eoEj1QL20NhzhVuq5UtQiGKiap9hsHFXIbDsgUGxprYVaOZxjRm4
+0QhZOjIDFhfHlw+0aZtLfELvjh/eatVh6Bn/EU4obbYfkrouB11UtYQ9VJhZp6/X
+8A5ucUWyTYiVx5ESc9oCcZGZGyQPetkuHKaAcJMUDbd7Ft7+2OCcdaglP0PD5XXO
+87Ke+v3irWr7x6dym1H2uGFl3TgS5bD8Uat7M8nZjyKX6VgO3FBrAl0sbZQswAPd
+3SvU0tzBf24QI9/sjTm5Ern+eLW/oNqnVzxEOAHP/4j7lTOlT+FvJN328k3WXkiO
+73bUyX7hHGymMx2zAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAApkLCJDT8Hfuf4d
+xMk87LfWeqoX/eX6lgN+80/I0AvOTm8qXUQGFPOK6/w+Q1KA0H1XYDKrOwb0YiLq
+5atIym/28G4d0brnJY857me4luPEi93sFUcB+2EG9+s3GYZwvQ/bJakeV22kAEjl
+ytGoRTNFMdw1JRdOUE7CqugQYP+ZgeQbIacp0eSJaRDOMp1mnsprD2He0s3WCHVg
+hCkKx17goLBXAaj3M228x9dwds6w07j0ydnfeCwje0aECOCb4EjI59Cr8NKUD9WA
+HbbzgGpfG83CAnMUHHrCrsT/0kQXllKfdkya5kPIBdkaLL89QQzz2vdEUa8X45uh
+wVBjO7I=
 -----END CERTIFICATE-----
 
 client-past.pem:
@@ -56,19 +56,19 @@ ZSBBdXRob3JpdHkxFzAVBgNVBAMMDmNhLmV4YW1wbGUuY29tMR0wGwYJKoZIhvcN
 AQkBFg5jYUBleGFtcGxlLmNvbTAeFw0wMDA3MTcyMzAwMDBaFw0wMTA3MTcyMzAw
 MDBaMGIxEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFN
 UExFMQ8wDQYDVQQDDAZDbGllbnQxITAfBgkqhkiG9w0BCQEWEmNsaWVudEBleGFt
-cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALB/QctPIfpb
-onzUr4bxSANLsAWPoLyE8a1h2WUz2NJxtSjk0Ch531bGtlXxIMzGeUgJ0WwUh15L
-BJxm6vHcVVar1iV3JUf0XW4Wk0cYmpS36PXa9m0pQAXgzanbh5m5FWnGpO4QZS7d
-O7YYmbVO7lwIkT3B7dw3gCeMeyqSJbgXnBRB7zVff/lW/r0zJ1MF3AZHpDP17CHK
-175MBha29DqfsHkfqQga0eIR9vTqSBwe+m717pLgDoc23SgfHfsI+8F09uT+GEoy
-7Gr1CvT8mCkOHyg8yDIm0h7Az1hjvUPGW7P9PoYBCcto0OjcOPwTFVL8dgX8b6v+
-tOEvQEKIbfcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAgNa0nsEXn2Wdhzwkyhuk
-DvGsoDU8HIXP3hCC8+RIOZlL/rnSF55vizzInXqvkVDnJZ/X3L77v8KWVt7oRtZi
-6bXHpdi8B3JiY5djqVMJuYIHVXNUXL9GcvOqQGQ3c2TIUMGlpAvrppPVKPrqgV/7
-oBj9MFLT/bWQjzKkV5xit6ccrn7I1ncgAUjmUh+p1LbUqU0260oZLDVKlX5Ac9ua
-conXHEqLKcwJgyaANTMb6k9y2nksZIjDD6SFVjyQ8y6f/vc16y+URHBMGz4baNiR
-6OlBcSgjxj/fg0/95nmWS0INA3GV16hXV6tLoSuGLP9z5w8mSYhU7MYiYXn65foE
-mA==
+cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu+CqO3KpAj
+xCOxzXt6gSPVAvbQ2HOFW6rlS1CIYqJqn2GwcVchsOyBQbGmthVo5nGNGbjRCFk6
+MgMWF8eXD7Rpm0t8Qu+OH95q1WHoGf8RTihtth+Sui4HXVS1hD1UmFmnr9fwDm5x
+RbJNiJXHkRJz2gJxkZkbJA962S4cpoBwkxQNt3sW3v7Y4Jx1qCU/Q8Pldc7zsp76
+/eKtavvHp3KbUfa4YWXdOBLlsPxRq3szydmPIpfpWA7cUGsCXSxtlCzAA93dK9TS
+3MF/bhAj3+yNObkSuf54tb+g2qdXPEQ4Ac//iPuVM6VP4W8k3fbyTdZeSI7vdtTJ
+fuEcbKYzHbMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAWncXfVN8THjr7/MA5B5m
+fuZS8PEC4FcFjI3cELc47u5+A5vJmVyNgQXsxvSytf02onDAFj6rmpmBxRQP1s7a
+8YstdshIrcZmW/TzrQrLMp+Kw/ln0yKQeTwH2jWQ56s0k1uepHy+JYDaBZDoXcut
+Xmlee2kghEvhlIbJuzIzYQ3SmxrdaQ9Hsoj58obkdq74wok7qP3ZSQMTOR+Dc/xh
+CntlJJTvD+boij0TKqz3OJ6qJmHqUfZmlGPEo9mttHcNsugt2sCV1WzoBgRMUAba
+SvjsgMCZ3vBoYZwv4/WBAEeXP4X5xECw9YqF0I2DaQllex3f2zDDj9ZObxZ1FhJH
+sg==
 -----END CERTIFICATE-----
 
 server.pem:
@@ -76,42 +76,42 @@ server.pem:
 MIIDlDCCAnygAwIBAgIBAjANBgkqhkiG9w0BAQsFADCBhjETMBEGCgmSJomT8ixk
 ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsMFUNlcnRp
 ZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOY2EuZXhhbXBsZS5jb20xHTAbBgkq
-hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTIwMTAxMjE3NDk0NFoXDTQ1MTAw
-NjE3NDk0NFowSzETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkW
+hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTIxMDYxMDIzMzg1OVoXDTQ2MDYw
+NDIzMzg1OVowSzETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkW
 B0VYQU1QTEUxGzAZBgNVBAMMEnNlcnZlci5leGFtcGxlLmNvbTCCASIwDQYJKoZI
-hvcNAQEBBQADggEPADCCAQoCggEBANFcFiZ4ymgxJ9zzPc2q9R36m4dEVXmsYSx/
-fk6uXLMZ7S8eFIDRdM/THTLeZamIlWUsPBFigoxlOy/9j3sWR+0r4Ejba7nSlWmM
-o0MkoHgCsVndWtefQzncEbLLkZ1gz2dwjJFVSnaEGSrfdT4Sz5WtCmOX1L06J9fV
-ZQhdvHV8iPOlh1hSHTbkUP6hnsSA/2X5tGrgk3FaAqydTKX/vQbn5Uc+ygIrZCGQ
-t4etXkyXi6EMI6RNRoogYcV36ef8wYHfoxX/ou5fsUPI1ltgc57PCk5EsF1QMWkx
-cW85DZhInU8md7cZivf9MBlP7iwyWe9qISh+GSpfRs+mP1jVlvcCAwEAAaNHMEUw
+hvcNAQEBBQADggEPADCCAQoCggEBANozh1k5/KiHEZDP8gLDgfycpnKXIKZh9Vv7
+k6OEJIwDwrkNXZaFljF7SrCjqUiAdml064+MXObnYbaanmMUapUBJYxRXH6C5scl
+PIBabqipvdYbpYPp7bItY9JwXQ8waqXDEu2ZVF/j3Cvr7mtTnT4FGJ4d1xaNBJmd
+Geg2dA78J4cKZZVAX7fEE+zf92kF/Ljx8r82OAnSr5CH10L/Il7m4gm412nOWCk2
+ns24Oi9WFVBgB/MgJUlfQCDVnkBELZZXK1p/T9q3r2eYxmwgwfTYxh80M9E61lZ6
+l2vI/unk7Hh3Op6btWWM7Z+tg+clovPo+BkZjkTEROZ5wV/8Hh8CAwEAAaNHMEUw
 CQYDVR0TBAIwADATBgNVHSUEDDAKBggrBgEFBQcDATAjBgNVHREEHDAahwTAqAEK
-ghJzZXJ2ZXIuZXhhbXBsZS5jb20wDQYJKoZIhvcNAQELBQADggEBAB94wSkKZiW+
-lYf/FBsDpfXEhVNyKSJUs6OxwDPi94Ye9a9ANImUVbLyQG3vYNyJX23mqh/KR//b
-IfO78aUXvbyyejrR4l55nKlEvd+9gcOhfId/xgYdSF/i0mEVKL2W1Z+pj7WY6Izc
-hHUg9SaLYMLRYhQ7C8mB0Ocu7A1svN8J47YKWunaWkToQgIqXDn6naoE4vbv7JO3
-xZEFeMiBsCc8W3dabGxBznBrrBbOckwb9G858IOpKV7RVCGFbGm5zcpMUN4/8Nyg
-hHcmfCdLL3qojamfJ2YiVrkhXSeoT1MS/5xX9fORgHfO/R1+Iv/jZYgw+qub468V
-TXVlrWigIps=
+ghJzZXJ2ZXIuZXhhbXBsZS5jb20wDQYJKoZIhvcNAQELBQADggEBAERPGHhAIt0F
+Vt0VSqQf5SW719rmhyPwbpw2IzRE78sODrJekhjVx3MVDaXuOZ7CfuhR/cV87SBC
+m593v+Y/0Dhbc4KvEHQzzCbBgpi49aPlH9g+dHhkhAzr/oI1+5QH3U+eeqm6dq7i
+u/io8FLvo8thJPf6JH2OJ4q6WdXwkIG3uTQAgyLGKOfoSakLofrcTZlXmAA2rViB
+1LZrTu/Rl0drOuZx+NoSq/4FXtHQ+pRQ5WSyjZyAR7dQZ72KKMkCFAvVZcwjPjJF
+GG867nll+A2LSC6lAQavfnAu05TGfbcBLARuGPoa/f1Xw0w7Fxatja/kgVAQi6J1
+64eUVueRJqk=
 -----END CERTIFICATE-----
 
 server-self.pem:
 -----BEGIN CERTIFICATE-----
-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
+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
-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
+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
-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
+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
 -----END CERTIFICATE-----
diff --git a/tls/tests/files/old-ca-key.pem b/tls/tests/files/old-ca-key.pem
index 1db5abf..25c14a9 100644
--- a/tls/tests/files/old-ca-key.pem
+++ b/tls/tests/files/old-ca-key.pem
@@ -1,27 +1,27 @@
 -----BEGIN RSA PRIVATE KEY-----
-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
+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
 -----END RSA PRIVATE KEY-----
diff --git a/tls/tests/files/old-ca.pem b/tls/tests/files/old-ca.pem
index cb498da..356fcd0 100644
--- a/tls/tests/files/old-ca.pem
+++ b/tls/tests/files/old-ca.pem
@@ -1,30 +1,30 @@
 -----BEGIN CERTIFICATE-----
-MIIFLjCCBBagAwIBAgIUJMXPCPBYU7JuV+eZvzCqQcLy6H8wDQYJKoZIhvcNAQEL
+MIIFLjCCBBagAwIBAgIUT0ZuqS3GYxNLXPUfTCpGF9MdpyswDQYJKoZIhvcNAQEL
 BQAwgZ8xEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFN
 UExFMSwwKgYDVQQLDCNPbGQgVW50cnVzdGVkIENlcnRpZmljYXRlIEF1dGhvcml0
 eTEiMCAGA1UEAwwZb25jZS53YXMuYS5jYS5leGFtcGxlLmNvbTEdMBsGCSqGSIb3
-DQEJARYOY2FAZXhhbXBsZS5jb20wIBcNMjAxMDEyMTc0OTQ0WhgPMjA1MDEwMDUx
-NzQ5NDRaMIGfMRMwEQYKCZImiZPyLGQBGRYDQ09NMRcwFQYKCZImiZPyLGQBGRYH
+DQEJARYOY2FAZXhhbXBsZS5jb20wIBcNMjEwNjEwMjMzODU5WhgPMjA1MTA2MDMy
+MzM4NTlaMIGfMRMwEQYKCZImiZPyLGQBGRYDQ09NMRcwFQYKCZImiZPyLGQBGRYH
 RVhBTVBMRTEsMCoGA1UECwwjT2xkIFVudHJ1c3RlZCBDZXJ0aWZpY2F0ZSBBdXRo
 b3JpdHkxIjAgBgNVBAMMGW9uY2Uud2FzLmEuY2EuZXhhbXBsZS5jb20xHTAbBgkq
 hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
-MIIBCgKCAQEAuEDVnakqhymgXTkKnf/ahFRD/Ou+JIHX6EJMYeeTRRuFemCfW0NK
-8opOTjivBe8sv9ApcAe5P99HcDxkBqEsnb92JozKMswwUGoKwnJ8UaRaLFkVffP/
-suz9/r/WJre/SnDZv6iOuhmCz3Xe1E+zZ70IsbCdkhk568KHvArDWQhzygqHtaVX
-/PLV2lcMS0GXA4nlNJZ6zF3NwPp9VDFut95BlhGXHo/g1h5W1lzR5QgPBxgciXX3
-n8HHbUUl2xNhWhrhYPh0TW/FR5YzciEMWC3C+UqG0ln6vPwXO+bMEEkc2zYN86fb
-M8Da2NrzbA1OAqoRpICOHhlwR0Lo94G56QIDAQABo4IBXDCCAVgwHQYDVR0OBBYE
-FAk/MMYEhSngoifsGFkluA8GlQR7MIHfBgNVHSMEgdcwgdSAFAk/MMYEhSngoifs
-GFkluA8GlQR7oYGlpIGiMIGfMRMwEQYKCZImiZPyLGQBGRYDQ09NMRcwFQYKCZIm
+MIIBCgKCAQEA/O77xh2La0/uiAxQmVjQS9fqC/UmxQuFou1EQJq3Cr1AC5nNUCVW
+RC7GvppcHUEynp7X7zAxkxHpx8vaMBCwyGlQy/2zYk4z8aVdgETPCiO3SCYvT75y
+9hn04L93Ja+PG69NC997QgXuN0oTWtvis6GYcnT9xbxxTcGIphAAzwCa9oDBlNe/
+qbjjZDSteJUty6J/YdrLYZLQOPYhr548BezAGztUqQueKadjfxa5ONNq4HCb9OlC
+mzDaPsUFpd6ki0Q+nKLtdcLpJTQqnFiriq2bTDEhA8AaelNPVwwzB9hVwyStXz+Z
+oP/pAEnbpCOJCj66vRa3kd79CTVy7MiutwIDAQABo4IBXDCCAVgwHQYDVR0OBBYE
+FJC15pn06gY//CgnNN9tR3gqSe2oMIHfBgNVHSMEgdcwgdSAFJC15pn06gY//Cgn
+NN9tR3gqSe2ooYGlpIGiMIGfMRMwEQYKCZImiZPyLGQBGRYDQ09NMRcwFQYKCZIm
 iZPyLGQBGRYHRVhBTVBMRTEsMCoGA1UECwwjT2xkIFVudHJ1c3RlZCBDZXJ0aWZp
 Y2F0ZSBBdXRob3JpdHkxIjAgBgNVBAMMGW9uY2Uud2FzLmEuY2EuZXhhbXBsZS5j
-b20xHTAbBgkqhkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tghQkxc8I8FhTsm5X55m/
-MKpBwvLofzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAZBgNVHREE
+b20xHTAbBgkqhkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tghRPRm6pLcZjE0tc9R9M
+KkYX0x2nKzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAZBgNVHREE
 EjAQgQ5jYUBleGFtcGxlLmNvbTAZBgNVHRIEEjAQgQ5jYUBleGFtcGxlLmNvbTAN
-BgkqhkiG9w0BAQsFAAOCAQEAtOFK+XTv2hm1XqBItwo3nCC/I8zBOrN9nNFUYeBS
-rtMIMmMTje4JUg6M2x0PyFVhDAZSmmhgJHKiZT3BpLaeHSBoMJFhVEKcCZffXefW
-E7IB409LUdinPNGis88KTTlx976NngbWVJQrnzWfxGbsAXumM2wi8sByNPZoY/Db
-rqPuJSw2flFE0oS3cvm8udS3yrEDMWwMVTrzmj4/Mo//tKpXaxf7GfGjy6LYWrqh
-1TSeqZubqfz0awTkkePErmtrhmk0h0wEomyT5KiJHusIjPHBYPpv93vr7Kdu3/YJ
-vIDwbJgiGKUbQ9ei9WZj64KVgczPQX2/lNXALp85s86Kfg==
+BgkqhkiG9w0BAQsFAAOCAQEALR+QV/q8c3U02wNuBfvXvxxtQ4YH25cLzqcolamn
+aZTKSh9n9CGwNxzpXE9pIWp2OrSe3RMQMCIC5IXNudCkZPF4RZLNuwEpQG4k/6wE
+qMU/MvuqGOwinrgyoeA3EvZLB796HWJMHPW9vl8htH5v+U4IbWnva2NtxjJntWSK
+nr3AJfYjPB8judwBtzIzSJRbrLqtIq1BTUqfxTiYfb7hTGyL+EE65rVstmPY43l4
+Qie66BsB1m0R8jtAJGMHeqvmzYzWQTZP6tSIB1/jn6zQo9QVMctJyCx6chEKsNkD
+/ammBWcC116eEpwTWH5oyYKz4D+B25qgyFuTYhsvTF8Uow==
 -----END CERTIFICATE-----
diff --git a/tls/tests/files/root-ca-csr.pem b/tls/tests/files/root-ca-csr.pem
index 9ca15dc..95d2189 100644
--- a/tls/tests/files/root-ca-csr.pem
+++ b/tls/tests/files/root-ca-csr.pem
@@ -2,18 +2,18 @@
 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
-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
+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
 -----END CERTIFICATE REQUEST-----
diff --git a/tls/tests/files/server-and-key.pem b/tls/tests/files/server-and-key.pem
index f8dbed6..6b4ead6 100644
--- a/tls/tests/files/server-and-key.pem
+++ b/tls/tests/files/server-and-key.pem
@@ -2,48 +2,48 @@
 MIIDlDCCAnygAwIBAgIBAjANBgkqhkiG9w0BAQsFADCBhjETMBEGCgmSJomT8ixk
 ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsMFUNlcnRp
 ZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOY2EuZXhhbXBsZS5jb20xHTAbBgkq
-hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTIwMTAxMjE3NDk0NFoXDTQ1MTAw
-NjE3NDk0NFowSzETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkW
+hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTIxMDYxMDIzMzg1OVoXDTQ2MDYw
+NDIzMzg1OVowSzETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkW
 B0VYQU1QTEUxGzAZBgNVBAMMEnNlcnZlci5leGFtcGxlLmNvbTCCASIwDQYJKoZI
-hvcNAQEBBQADggEPADCCAQoCggEBANFcFiZ4ymgxJ9zzPc2q9R36m4dEVXmsYSx/
-fk6uXLMZ7S8eFIDRdM/THTLeZamIlWUsPBFigoxlOy/9j3sWR+0r4Ejba7nSlWmM
-o0MkoHgCsVndWtefQzncEbLLkZ1gz2dwjJFVSnaEGSrfdT4Sz5WtCmOX1L06J9fV
-ZQhdvHV8iPOlh1hSHTbkUP6hnsSA/2X5tGrgk3FaAqydTKX/vQbn5Uc+ygIrZCGQ
-t4etXkyXi6EMI6RNRoogYcV36ef8wYHfoxX/ou5fsUPI1ltgc57PCk5EsF1QMWkx
-cW85DZhInU8md7cZivf9MBlP7iwyWe9qISh+GSpfRs+mP1jVlvcCAwEAAaNHMEUw
+hvcNAQEBBQADggEPADCCAQoCggEBANozh1k5/KiHEZDP8gLDgfycpnKXIKZh9Vv7
+k6OEJIwDwrkNXZaFljF7SrCjqUiAdml064+MXObnYbaanmMUapUBJYxRXH6C5scl
+PIBabqipvdYbpYPp7bItY9JwXQ8waqXDEu2ZVF/j3Cvr7mtTnT4FGJ4d1xaNBJmd
+Geg2dA78J4cKZZVAX7fEE+zf92kF/Ljx8r82OAnSr5CH10L/Il7m4gm412nOWCk2
+ns24Oi9WFVBgB/MgJUlfQCDVnkBELZZXK1p/T9q3r2eYxmwgwfTYxh80M9E61lZ6
+l2vI/unk7Hh3Op6btWWM7Z+tg+clovPo+BkZjkTEROZ5wV/8Hh8CAwEAAaNHMEUw
 CQYDVR0TBAIwADATBgNVHSUEDDAKBggrBgEFBQcDATAjBgNVHREEHDAahwTAqAEK
-ghJzZXJ2ZXIuZXhhbXBsZS5jb20wDQYJKoZIhvcNAQELBQADggEBAB94wSkKZiW+
-lYf/FBsDpfXEhVNyKSJUs6OxwDPi94Ye9a9ANImUVbLyQG3vYNyJX23mqh/KR//b
-IfO78aUXvbyyejrR4l55nKlEvd+9gcOhfId/xgYdSF/i0mEVKL2W1Z+pj7WY6Izc
-hHUg9SaLYMLRYhQ7C8mB0Ocu7A1svN8J47YKWunaWkToQgIqXDn6naoE4vbv7JO3
-xZEFeMiBsCc8W3dabGxBznBrrBbOckwb9G858IOpKV7RVCGFbGm5zcpMUN4/8Nyg
-hHcmfCdLL3qojamfJ2YiVrkhXSeoT1MS/5xX9fORgHfO/R1+Iv/jZYgw+qub468V
-TXVlrWigIps=
+ghJzZXJ2ZXIuZXhhbXBsZS5jb20wDQYJKoZIhvcNAQELBQADggEBAERPGHhAIt0F
+Vt0VSqQf5SW719rmhyPwbpw2IzRE78sODrJekhjVx3MVDaXuOZ7CfuhR/cV87SBC
+m593v+Y/0Dhbc4KvEHQzzCbBgpi49aPlH9g+dHhkhAzr/oI1+5QH3U+eeqm6dq7i
+u/io8FLvo8thJPf6JH2OJ4q6WdXwkIG3uTQAgyLGKOfoSakLofrcTZlXmAA2rViB
+1LZrTu/Rl0drOuZx+NoSq/4FXtHQ+pRQ5WSyjZyAR7dQZ72KKMkCFAvVZcwjPjJF
+GG867nll+A2LSC6lAQavfnAu05TGfbcBLARuGPoa/f1Xw0w7Fxatja/kgVAQi6J1
+64eUVueRJqk=
 -----END CERTIFICATE-----
 -----BEGIN RSA PRIVATE KEY-----
-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
+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
 -----END RSA PRIVATE KEY-----
diff --git a/tls/tests/files/server-csr.pem b/tls/tests/files/server-csr.pem
new file mode 100644
index 0000000..c623d5c
--- /dev/null
+++ b/tls/tests/files/server-csr.pem
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICwTCCAakCAQAwSzETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixk
+ARkWB0VYQU1QTEUxGzAZBgNVBAMMEnNlcnZlci5leGFtcGxlLmNvbTCCASIwDQYJ
+KoZIhvcNAQEBBQADggEPADCCAQoCggEBANozh1k5/KiHEZDP8gLDgfycpnKXIKZh
+9Vv7k6OEJIwDwrkNXZaFljF7SrCjqUiAdml064+MXObnYbaanmMUapUBJYxRXH6C
+5sclPIBabqipvdYbpYPp7bItY9JwXQ8waqXDEu2ZVF/j3Cvr7mtTnT4FGJ4d1xaN
+BJmdGeg2dA78J4cKZZVAX7fEE+zf92kF/Ljx8r82OAnSr5CH10L/Il7m4gm412nO
+WCk2ns24Oi9WFVBgB/MgJUlfQCDVnkBELZZXK1p/T9q3r2eYxmwgwfTYxh80M9E6
+1lZ6l2vI/unk7Hh3Op6btWWM7Z+tg+clovPo+BkZjkTEROZ5wV/8Hh8CAwEAAaAx
+MC8GCSqGSIb3DQEJDjEiMCAwCQYDVR0TBAIwADATBgNVHSUEDDAKBggrBgEFBQcD
+ATANBgkqhkiG9w0BAQsFAAOCAQEACQI/hQchKPsm+GdQqrPQlKs60pUUtjlR3tw3
+nFFWVqPuWnwxbZrpFa28wvn9CNtCaMvsMHsSY1c2GfUJuI90/n49J/UBifoxWj/5
+gNJ81Fvc7Pp3Cwk0xv3Hryr45C3mniofeMmk+5etHOdjzcLrdY2SFWLQMMKZdiYY
+k39lAMZzTEXK6ZJmxNh7BC4eiZ4kbQHgrT3ScgzWSMfVCwHlvGqM2C1ASDb3ptKt
+icfGB7inTNtz4qp3v0O9wzt5DF5vAVK7SAESyRxbUlmcH8GNv0U2R2FGxEHZyh11
+aHULg2/yBYtyTpvs6WAxx2QrUgL6Gd3tD1Z+Uh/xBDs/DREilw==
+-----END CERTIFICATE REQUEST-----
diff --git a/tls/tests/files/server-intermediate-csr.pem b/tls/tests/files/server-intermediate-csr.pem
index 07e86c2..52dc690 100644
--- a/tls/tests/files/server-intermediate-csr.pem
+++ b/tls/tests/files/server-intermediate-csr.pem
@@ -1,17 +1,17 @@
 -----BEGIN CERTIFICATE REQUEST-----
 MIICwTCCAakCAQAwSzETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixk
 ARkWB0VYQU1QTEUxGzAZBgNVBAMMEnNlcnZlci5leGFtcGxlLmNvbTCCASIwDQYJ
-KoZIhvcNAQEBBQADggEPADCCAQoCggEBAN4t3FBzYQk48Bzm7S9JiZqmWVY/FagC
-9aim8foydtzXXcXjIEWc6AChko8FhLJAp5ZJCxm7MbYc5pZfyGgecBawG13fKYoP
-o+59dUJAw8xkENKCi57K0fsfwZf4v0SqawmYUj9AtIsy8Q6xTRfVHA+Pj2qbNNTM
-IUzgIg3b7TpGnhjNDlxYzXLPThiKD8Vm+SrXOm8W+hCpIivyGDNWCxTo1MHj2UUm
-HPGHfwZXCJ9dt8scQTV1B0TeTJ3Xm/w+aAzUfbdlkCufsk6nLsj+gYMRkGGsYo/G
-mAv4/PPUop+yNK6VLL1nNgp0hP+VwvGU2cpn6BRBmpUu5xHrXkHjU+ECAwEAAaAx
+KoZIhvcNAQEBBQADggEPADCCAQoCggEBAKaRoBEvmktpxV+gX10QnkfonkCYdrXp
+6Pdgwy7nm8XP8PdYCpGbzc6XW9tX6KTM/MSISGSz4glnh4dK7hSbA9w86iO7s5S4
+Wfsy6Frdkfk5kQa7cuzXmNe/GAiUWAa/hTeiy2H6S7Vs9dLN/OdCN3wkx/a5gFnA
+Fs/nfK0wkkSkq+qUc9N38qxh73ByQ+hwWqQenvV6WdUG6dMCWW+GiReM2A0k/9EB
+gGNi6zMMQykVKdMaZFchFog7RFkm+92Cf4HxZvJD3vhGUTiDo+kZ3q9rh3Q9OIUE
+RfAywUf6gduLGyL59F0urI3cCPjPXPkKQcXz2wnVBBk4wBGfAQhxpQsCAwEAAaAx
 MC8GCSqGSIb3DQEJDjEiMCAwCQYDVR0TBAIwADATBgNVHSUEDDAKBggrBgEFBQcD
-ATANBgkqhkiG9w0BAQsFAAOCAQEAGWiCCA7ksG6NgBhTRKQikJ7mxzzSdEfrd6ow
-WmzG48Cuc/QF6Qhrs/EX0qvU76oWTh2zeogL49PxYf9JGHGkERUDWgin6EmCKRHJ
-JK5+gpKxyNnXeINi5I9JUaE2Twi/4kviGeqhmi8ej0n32YIfruHQ4bEfx6wdVa37
-ymZQFimk2HdDmmPxMr7TlGcBbJ+3rgOfl/EGhrogFwBKf55EITRz0QGKFX4DpR+9
-sgEAzICgYV8BHvgYYdcgPqDjOGIPSPG7ntHZZr8f66dl1om1s94t6rz23fabmC3g
-WHYRENSLiEJR+0dvsn4fR6Yo1fj0o4YntmR83O6H7Sa7iZgw3A==
+ATANBgkqhkiG9w0BAQsFAAOCAQEAQd1BgS2sQoBoJYPSxCDqHGbDl9rzfJoTrAzS
+lHEex9UQOrkuoP4k/DjBYsnu9+3d1CU7kpPn8Kp0WElAIa4i0v4syBQ5ZKRH+iIE
+hGjhQjZaM2VGiU/7e5miwEQ9c5Oa7vDMFVw5FB1du0xZMPOzPQ6ONv3lkaVANRfg
+D+KFOJLSLIdcoSkj3YOfXc8joOgCTrYYm1W0MV8bnVDA5CBfH83uAiW1+RXVLPAu
+llouS9wL0SW3EHn4id+DvbmsmNkeuR5awcHgblJETHVjlRpxivGfqtjWX+aV7FyH
+8VoqsZJcxxYFcOG9hdXfMo0iT9f9Vs80xCtv9lx3ovkpAmYJvw==
 -----END CERTIFICATE REQUEST-----
diff --git a/tls/tests/files/server-intermediate-key.pem b/tls/tests/files/server-intermediate-key.pem
index 3356bcd..764bfb2 100644
--- a/tls/tests/files/server-intermediate-key.pem
+++ b/tls/tests/files/server-intermediate-key.pem
@@ -1,27 +1,27 @@
 -----BEGIN RSA PRIVATE KEY-----
-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
+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
 -----END RSA PRIVATE KEY-----
diff --git a/tls/tests/files/server-intermediate.pem b/tls/tests/files/server-intermediate.pem
index c2aad3f..ef97032 100644
--- a/tls/tests/files/server-intermediate.pem
+++ b/tls/tests/files/server-intermediate.pem
@@ -3,20 +3,20 @@ MIIDuzCCAqOgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBrTETMBEGCgmSJomT8ixk
 ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxKzApBgNVBAsMIkludGVy
 bWVkaWF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxJDAiBgNVBAMMG2ludGVybWVk
 aWF0ZS1jYS5leGFtcGxlLmNvbTEqMCgGCSqGSIb3DQEJARYbaW50ZXJtZWRpYXRl
-LWNhQGV4YW1wbGUuY29tMB4XDTIwMTAxMjE3NDk1MVoXDTQ1MTAwNjE3NDk1MVow
+LWNhQGV4YW1wbGUuY29tMB4XDTIxMDYxMDIzMzkxMloXDTQ2MDYwNDIzMzkxMlow
 SzETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUx
 GzAZBgNVBAMMEnNlcnZlci5leGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBAN4t3FBzYQk48Bzm7S9JiZqmWVY/FagC9aim8foydtzXXcXj
-IEWc6AChko8FhLJAp5ZJCxm7MbYc5pZfyGgecBawG13fKYoPo+59dUJAw8xkENKC
-i57K0fsfwZf4v0SqawmYUj9AtIsy8Q6xTRfVHA+Pj2qbNNTMIUzgIg3b7TpGnhjN
-DlxYzXLPThiKD8Vm+SrXOm8W+hCpIivyGDNWCxTo1MHj2UUmHPGHfwZXCJ9dt8sc
-QTV1B0TeTJ3Xm/w+aAzUfbdlkCufsk6nLsj+gYMRkGGsYo/GmAv4/PPUop+yNK6V
-LL1nNgp0hP+VwvGU2cpn6BRBmpUu5xHrXkHjU+ECAwEAAaNHMEUwCQYDVR0TBAIw
+ggEPADCCAQoCggEBAKaRoBEvmktpxV+gX10QnkfonkCYdrXp6Pdgwy7nm8XP8PdY
+CpGbzc6XW9tX6KTM/MSISGSz4glnh4dK7hSbA9w86iO7s5S4Wfsy6Frdkfk5kQa7
+cuzXmNe/GAiUWAa/hTeiy2H6S7Vs9dLN/OdCN3wkx/a5gFnAFs/nfK0wkkSkq+qU
+c9N38qxh73ByQ+hwWqQenvV6WdUG6dMCWW+GiReM2A0k/9EBgGNi6zMMQykVKdMa
+ZFchFog7RFkm+92Cf4HxZvJD3vhGUTiDo+kZ3q9rh3Q9OIUERfAywUf6gduLGyL5
+9F0urI3cCPjPXPkKQcXz2wnVBBk4wBGfAQhxpQsCAwEAAaNHMEUwCQYDVR0TBAIw
 ADATBgNVHSUEDDAKBggrBgEFBQcDATAjBgNVHREEHDAahwTAqAEWghJzZXJ2ZXIu
-ZXhhbXBsZS5jb20wDQYJKoZIhvcNAQELBQADggEBAHxnwEN8Xr9TUrHefXPdcDU2
-yd4F3u4bPL4RSSRFIKdqrAaHK0wnzLoF3HneUjKzU/l36kNHBa7dUo8Q2SGd3V4d
-zDR0uT9uUdsZVwmUbAcZs1Z9d1vPMWDqS1zwBKYtLTw2Z7sl9xaLYhxLZSyf1Pxe
-aC8+gNaqJ25aKAbDSMNCyF32vRy4OYy7Hi8Itexkva6XMlF4H4gSXs4QZP9WGhp7
-6YRdcy6Z6lJfkJ9SW6nsoNJvbYGOGbxHg9brxWJV8T7cFBQQVvZKasydS6+6IK/2
-/+n38vEog/7hGQ85iOsu0xOcdkKl/SIj1ckJtGAVif2kbCSzugSafA2jRELyiI0=
+ZXhhbXBsZS5jb20wDQYJKoZIhvcNAQELBQADggEBACDND9sBatFK8AG8Tkelofty
+pgm1cwTfawm7McVx24Pktc/XjJ/L/N2xo9ZQmpZH6j5IhZSiVLz8iFhev75vcJ0B
+WbRweU079HV0/J7sNuMBNkIJB7NL0wUJSSfMOnhpKPExTHxWopmCRpGut0igYx78
+GxBSpneEH5Oel7BBZrsu3L4ujzyyTRIdqyKqJ/IE7im9RDE70ktdopA9lRFuNiFf
+HCx1gdpBNgFzBQskhiF1XGf3JmkGP84iFR10BEc63Ab2v1jyTMh6sf4f0FEiUXIq
+rp23rUCVwBGjHHSKrtI4HbaAMi0UgfYuKvw7ImyS3Pck8Sxhwed6rbJfaA5ICnY=
 -----END CERTIFICATE-----
diff --git a/tls/tests/files/server-key-pkcs8.der b/tls/tests/files/server-key-pkcs8.der
new file mode 100644
index 0000000..7632f3e
Binary files /dev/null and b/tls/tests/files/server-key-pkcs8.der differ
diff --git a/tls/tests/files/server-key-pkcs8.pem b/tls/tests/files/server-key-pkcs8.pem
new file mode 100644
index 0000000..08c5f72
--- /dev/null
+++ b/tls/tests/files/server-key-pkcs8.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDaM4dZOfyohxGQ
+z/ICw4H8nKZylyCmYfVb+5OjhCSMA8K5DV2WhZYxe0qwo6lIgHZpdOuPjFzm52G2
+mp5jFGqVASWMUVx+gubHJTyAWm6oqb3WG6WD6e2yLWPScF0PMGqlwxLtmVRf49wr
+6+5rU50+BRieHdcWjQSZnRnoNnQO/CeHCmWVQF+3xBPs3/dpBfy48fK/NjgJ0q+Q
+h9dC/yJe5uIJuNdpzlgpNp7NuDovVhVQYAfzICVJX0Ag1Z5ARC2WVytaf0/at69n
+mMZsIMH02MYfNDPROtZWepdryP7p5Ox4dzqem7VljO2frYPnJaLz6PgZGY5ExETm
+ecFf/B4fAgMBAAECggEBAMmYE/N+3IzDhZoaVQjyonTGMg3qzLKMDIk4LJZFLxLh
+IpWf4JiBwVrkAwShoHQoo74Y1M3iK671lVSFE9KMeVBDJ/K09NS5kgfpwjT/1/8i
+HA7lqgzvIrmcr/4r6/5tiAqv6Rv1rnuNZMx7hOJJ9Rvoz26+OQtPrDFUcSwWqzFv
+Vz1NB8Qa1dZGlTccdhu20klC4UxB4U5BKbBhw55JJdAPbblPy4IHBirJpvz1SVN+
+TzOkOxcB8OJtdWibnVj1qGIJTdT2Qm4me20a1lLmRbqltJviSrppeLCeU5+00I9M
+KggxMgM+AvWYC/if7bM62n3GUgiJR2WEcVq9Ma5kMAECgYEA777BldFB9ZDt0mIg
+mult7hUz9T/IOd3UF2mo5orT7ZkuUdrc+Wg6AmUv43kGp4AyJoHc1ckWG6fAPyzW
+e/pBomTuIiY+pfVv1Wviy+L4CERD4lDBt14jG6NJJk9Vdzt92+q3VAuZ3RgbSUR2
+hydcUTXn3XnX03kLW1X5hypMyAECgYEA6P7WP/vtbUeqWcCwf8E6vLjeYOA5a3XZ
+4yMSfOOyYw802qSisWfshXvHgeqgCLwJiNygvOzvsYtFQuR1bKzQMgsIw/CxfFQ1
+5898LRYtN4+y4dAEJnDm2WP4Guxx58QQTzCSia3vY5HTxnkoZBSRWKO9qyOpwVQx
+mcGehwz/5h8CgYAUUUQyoCNI3llpROuidTndvWpD1H3xeX0p5shrkURYlGy6fyPO
+9yhDX7PpQS5xL4oQfVzruTjoaxT9xZz/sLuzOX584mTYx64MljIIOVnvyWk/Wryv
+/4hWJUZjusFxc1c9Ne0HcFw/wnU9hlHNLmbCcyENQfAqec2elfCppcoQAQKBgHJH
+C662Ue2XiOYcrHT8wWJvCiNZ1s/uLcBKI3c99vC/NJ1IwsNgxZFy9Je0DGo8UDDg
+hbYkQCxEsuPsSevTlwn0f4gbNfJVG1tnWPCEQAlQYdx/uolgNtnJPpd2ASg78gPl
+PvpoZVHg5I4kPrtXmzJunUijZU99jBZt8OMsbRbhAoGBAKIrS3PI5oaJFm9Jx27I
+cYDZlLtWw2Ff2Yq2AzCJSUQFuRSBgyb4ELytMed9CUhGqUmX4LyXLAk9XRo/cY9M
+hKEviHAaKzciSVau/IJS44E3+DriVKuEFjW4soKpA0TGU+BAdgE2HNeloaJtHB4h
+fd9urdAaV7fsFINpXEXW8Hb4
+-----END PRIVATE KEY-----
diff --git a/tls/tests/files/server-key.der b/tls/tests/files/server-key.der
index 781d7a8..c3b2462 100644
Binary files a/tls/tests/files/server-key.der and b/tls/tests/files/server-key.der differ
diff --git a/tls/tests/files/server-key.pem b/tls/tests/files/server-key.pem
index 7fd2413..6586514 100644
--- a/tls/tests/files/server-key.pem
+++ b/tls/tests/files/server-key.pem
@@ -1,27 +1,27 @@
 -----BEGIN RSA PRIVATE KEY-----
-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
+MIIEpAIBAAKCAQEA2jOHWTn8qIcRkM/yAsOB/JymcpcgpmH1W/uTo4QkjAPCuQ1d
+loWWMXtKsKOpSIB2aXTrj4xc5udhtpqeYxRqlQEljFFcfoLmxyU8gFpuqKm91hul
+g+ntsi1j0nBdDzBqpcMS7ZlUX+PcK+vua1OdPgUYnh3XFo0EmZ0Z6DZ0Dvwnhwpl
+lUBft8QT7N/3aQX8uPHyvzY4CdKvkIfXQv8iXubiCbjXac5YKTaezbg6L1YVUGAH
+8yAlSV9AINWeQEQtllcrWn9P2revZ5jGbCDB9NjGHzQz0TrWVnqXa8j+6eTseHc6
+npu1ZYztn62D5yWi8+j4GRmORMRE5nnBX/weHwIDAQABAoIBAQDJmBPzftyMw4Wa
+GlUI8qJ0xjIN6syyjAyJOCyWRS8S4SKVn+CYgcFa5AMEoaB0KKO+GNTN4iuu9ZVU
+hRPSjHlQQyfytPTUuZIH6cI0/9f/IhwO5aoM7yK5nK/+K+v+bYgKr+kb9a57jWTM
+e4TiSfUb6M9uvjkLT6wxVHEsFqsxb1c9TQfEGtXWRpU3HHYbttJJQuFMQeFOQSmw
+YcOeSSXQD225T8uCBwYqyab89UlTfk8zpDsXAfDibXVom51Y9ahiCU3U9kJuJntt
+GtZS5kW6pbSb4kq6aXiwnlOftNCPTCoIMTIDPgL1mAv4n+2zOtp9xlIIiUdlhHFa
+vTGuZDABAoGBAO++wZXRQfWQ7dJiIJrpbe4VM/U/yDnd1BdpqOaK0+2ZLlHa3Plo
+OgJlL+N5BqeAMiaB3NXJFhunwD8s1nv6QaJk7iImPqX1b9Vr4svi+AhEQ+JQwbde
+IxujSSZPVXc7fdvqt1QLmd0YG0lEdocnXFE1591519N5C1tV+YcqTMgBAoGBAOj+
+1j/77W1HqlnAsH/BOry43mDgOWt12eMjEnzjsmMPNNqkorFn7IV7x4HqoAi8CYjc
+oLzs77GLRULkdWys0DILCMPwsXxUNefPfC0WLTePsuHQBCZw5tlj+BrscefEEE8w
+komt72OR08Z5KGQUkVijvasjqcFUMZnBnocM/+YfAoGAFFFEMqAjSN5ZaUTronU5
+3b1qQ9R98Xl9KebIa5FEWJRsun8jzvcoQ1+z6UEucS+KEH1c67k46GsU/cWc/7C7
+szl+fOJk2MeuDJYyCDlZ78lpP1q8r/+IViVGY7rBcXNXPTXtB3BcP8J1PYZRzS5m
+wnMhDUHwKnnNnpXwqaXKEAECgYByRwuutlHtl4jmHKx0/MFibwojWdbP7i3ASiN3
+PfbwvzSdSMLDYMWRcvSXtAxqPFAw4IW2JEAsRLLj7Enr05cJ9H+IGzXyVRtbZ1jw
+hEAJUGHcf7qJYDbZyT6XdgEoO/ID5T76aGVR4OSOJD67V5sybp1Io2VPfYwWbfDj
+LG0W4QKBgQCiK0tzyOaGiRZvScduyHGA2ZS7VsNhX9mKtgMwiUlEBbkUgYMm+BC8
+rTHnfQlIRqlJl+C8lywJPV0aP3GPTIShL4hwGis3IklWrvyCUuOBN/g64lSrhBY1
+uLKCqQNExlPgQHYBNhzXpaGibRweIX3fbq3QGle37BSDaVxF1vB2+A==
 -----END RSA PRIVATE KEY-----
diff --git a/tls/tests/files/server-self.pem b/tls/tests/files/server-self.pem
index d203ceb..af75e2c 100644
--- a/tls/tests/files/server-self.pem
+++ b/tls/tests/files/server-self.pem
@@ -1,19 +1,19 @@
 -----BEGIN CERTIFICATE-----
-MIIDHTCCAgUCFF+c5XZhrI5ZN0TBpIskizePiZwbMA0GCSqGSIb3DQEBCwUAMEsx
+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
-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
+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
-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
+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
 -----END CERTIFICATE-----
diff --git a/tls/tests/files/server.der b/tls/tests/files/server.der
index 0113337..0f6a465 100644
Binary files a/tls/tests/files/server.der and b/tls/tests/files/server.der differ
diff --git a/tls/tests/files/server.pem b/tls/tests/files/server.pem
index 44b49a8..4a1d1de 100644
--- a/tls/tests/files/server.pem
+++ b/tls/tests/files/server.pem
@@ -2,21 +2,21 @@
 MIIDlDCCAnygAwIBAgIBAjANBgkqhkiG9w0BAQsFADCBhjETMBEGCgmSJomT8ixk
 ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsMFUNlcnRp
 ZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOY2EuZXhhbXBsZS5jb20xHTAbBgkq
-hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTIwMTAxMjE3NDk0NFoXDTQ1MTAw
-NjE3NDk0NFowSzETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkW
+hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTIxMDYxMDIzMzg1OVoXDTQ2MDYw
+NDIzMzg1OVowSzETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkW
 B0VYQU1QTEUxGzAZBgNVBAMMEnNlcnZlci5leGFtcGxlLmNvbTCCASIwDQYJKoZI
-hvcNAQEBBQADggEPADCCAQoCggEBANFcFiZ4ymgxJ9zzPc2q9R36m4dEVXmsYSx/
-fk6uXLMZ7S8eFIDRdM/THTLeZamIlWUsPBFigoxlOy/9j3sWR+0r4Ejba7nSlWmM
-o0MkoHgCsVndWtefQzncEbLLkZ1gz2dwjJFVSnaEGSrfdT4Sz5WtCmOX1L06J9fV
-ZQhdvHV8iPOlh1hSHTbkUP6hnsSA/2X5tGrgk3FaAqydTKX/vQbn5Uc+ygIrZCGQ
-t4etXkyXi6EMI6RNRoogYcV36ef8wYHfoxX/ou5fsUPI1ltgc57PCk5EsF1QMWkx
-cW85DZhInU8md7cZivf9MBlP7iwyWe9qISh+GSpfRs+mP1jVlvcCAwEAAaNHMEUw
+hvcNAQEBBQADggEPADCCAQoCggEBANozh1k5/KiHEZDP8gLDgfycpnKXIKZh9Vv7
+k6OEJIwDwrkNXZaFljF7SrCjqUiAdml064+MXObnYbaanmMUapUBJYxRXH6C5scl
+PIBabqipvdYbpYPp7bItY9JwXQ8waqXDEu2ZVF/j3Cvr7mtTnT4FGJ4d1xaNBJmd
+Geg2dA78J4cKZZVAX7fEE+zf92kF/Ljx8r82OAnSr5CH10L/Il7m4gm412nOWCk2
+ns24Oi9WFVBgB/MgJUlfQCDVnkBELZZXK1p/T9q3r2eYxmwgwfTYxh80M9E61lZ6
+l2vI/unk7Hh3Op6btWWM7Z+tg+clovPo+BkZjkTEROZ5wV/8Hh8CAwEAAaNHMEUw
 CQYDVR0TBAIwADATBgNVHSUEDDAKBggrBgEFBQcDATAjBgNVHREEHDAahwTAqAEK
-ghJzZXJ2ZXIuZXhhbXBsZS5jb20wDQYJKoZIhvcNAQELBQADggEBAB94wSkKZiW+
-lYf/FBsDpfXEhVNyKSJUs6OxwDPi94Ye9a9ANImUVbLyQG3vYNyJX23mqh/KR//b
-IfO78aUXvbyyejrR4l55nKlEvd+9gcOhfId/xgYdSF/i0mEVKL2W1Z+pj7WY6Izc
-hHUg9SaLYMLRYhQ7C8mB0Ocu7A1svN8J47YKWunaWkToQgIqXDn6naoE4vbv7JO3
-xZEFeMiBsCc8W3dabGxBznBrrBbOckwb9G858IOpKV7RVCGFbGm5zcpMUN4/8Nyg
-hHcmfCdLL3qojamfJ2YiVrkhXSeoT1MS/5xX9fORgHfO/R1+Iv/jZYgw+qub468V
-TXVlrWigIps=
+ghJzZXJ2ZXIuZXhhbXBsZS5jb20wDQYJKoZIhvcNAQELBQADggEBAERPGHhAIt0F
+Vt0VSqQf5SW719rmhyPwbpw2IzRE78sODrJekhjVx3MVDaXuOZ7CfuhR/cV87SBC
+m593v+Y/0Dhbc4KvEHQzzCbBgpi49aPlH9g+dHhkhAzr/oI1+5QH3U+eeqm6dq7i
+u/io8FLvo8thJPf6JH2OJ4q6WdXwkIG3uTQAgyLGKOfoSakLofrcTZlXmAA2rViB
+1LZrTu/Rl0drOuZx+NoSq/4FXtHQ+pRQ5WSyjZyAR7dQZ72KKMkCFAvVZcwjPjJF
+GG867nll+A2LSC6lAQavfnAu05TGfbcBLARuGPoa/f1Xw0w7Fxatja/kgVAQi6J1
+64eUVueRJqk=
 -----END CERTIFICATE-----


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]