summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--crypto/crypto.csproj204
-rw-r--r--crypto/test/UnitTests.csproj66
-rw-r--r--crypto/test/data/tls/README.txt189
-rw-r--r--crypto/test/data/tls/ca.tmpl2
-rw-r--r--crypto/test/data/tls/client_agree.tmpl4
-rw-r--r--crypto/test/data/tls/client_enc.tmpl (renamed from crypto/test/data/tls/client.tmpl)1
-rw-r--r--crypto/test/data/tls/client_sign.tmpl4
-rw-r--r--crypto/test/data/tls/server_agree.tmpl4
-rw-r--r--crypto/test/data/tls/server_enc.tmpl (renamed from crypto/test/data/tls/server.tmpl)1
-rw-r--r--crypto/test/data/tls/server_sign.tmpl4
-rw-r--r--crypto/test/data/tls/x509-ca-dsa.pem26
-rw-r--r--crypto/test/data/tls/x509-ca-ecdsa.pem11
-rw-r--r--crypto/test/data/tls/x509-ca-ed25519.pem9
-rw-r--r--crypto/test/data/tls/x509-ca-ed448.pem11
-rw-r--r--crypto/test/data/tls/x509-ca-key-dsa.pem15
-rw-r--r--crypto/test/data/tls/x509-ca-key-ecdsa.pem6
-rw-r--r--crypto/test/data/tls/x509-ca-key-ed25519.pem25
-rw-r--r--crypto/test/data/tls/x509-ca-key-ed448.pem28
-rw-r--r--crypto/test/data/tls/x509-ca-key-rsa.pem28
-rw-r--r--crypto/test/data/tls/x509-ca-key-rsa_pss_256.pem138
-rw-r--r--crypto/test/data/tls/x509-ca-key-rsa_pss_384.pem138
-rw-r--r--crypto/test/data/tls/x509-ca-key-rsa_pss_512.pem138
-rw-r--r--crypto/test/data/tls/x509-ca-key.pem32
-rw-r--r--crypto/test/data/tls/x509-ca-rsa.pem19
-rw-r--r--crypto/test/data/tls/x509-ca-rsa_pss_256.pem22
-rw-r--r--crypto/test/data/tls/x509-ca-rsa_pss_384.pem22
-rw-r--r--crypto/test/data/tls/x509-ca-rsa_pss_512.pem22
-rw-r--r--crypto/test/data/tls/x509-ca.pem21
-rw-r--r--crypto/test/data/tls/x509-client-dsa.pem55
-rw-r--r--crypto/test/data/tls/x509-client-ecdh.pem12
-rw-r--r--crypto/test/data/tls/x509-client-ecdsa.pem25
-rw-r--r--crypto/test/data/tls/x509-client-ed25519.pem11
-rw-r--r--crypto/test/data/tls/x509-client-ed448.pem12
-rw-r--r--crypto/test/data/tls/x509-client-key-dsa.pem26
-rw-r--r--crypto/test/data/tls/x509-client-key-ecdh.pem6
-rw-r--r--crypto/test/data/tls/x509-client-key-ecdsa.pem8
-rw-r--r--crypto/test/data/tls/x509-client-key-ed25519.pem25
-rw-r--r--crypto/test/data/tls/x509-client-key-ed448.pem28
-rw-r--r--crypto/test/data/tls/x509-client-key-rsa.pem28
-rw-r--r--crypto/test/data/tls/x509-client-key-rsa_pss_256.pem138
-rw-r--r--crypto/test/data/tls/x509-client-key-rsa_pss_384.pem138
-rw-r--r--crypto/test/data/tls/x509-client-key-rsa_pss_512.pem138
-rw-r--r--crypto/test/data/tls/x509-client-key.pem32
-rw-r--r--crypto/test/data/tls/x509-client-rsa.pem20
-rw-r--r--crypto/test/data/tls/x509-client-rsa_pss_256.pem23
-rw-r--r--crypto/test/data/tls/x509-client-rsa_pss_384.pem23
-rw-r--r--crypto/test/data/tls/x509-client-rsa_pss_512.pem23
-rw-r--r--crypto/test/data/tls/x509-client.pem22
-rw-r--r--crypto/test/data/tls/x509-server-dsa.pem55
-rw-r--r--crypto/test/data/tls/x509-server-ecdh.pem12
-rw-r--r--crypto/test/data/tls/x509-server-ecdsa.pem25
-rw-r--r--crypto/test/data/tls/x509-server-ed25519.pem11
-rw-r--r--crypto/test/data/tls/x509-server-ed448.pem12
-rw-r--r--crypto/test/data/tls/x509-server-key-dsa.pem26
-rw-r--r--crypto/test/data/tls/x509-server-key-ecdh.pem6
-rw-r--r--crypto/test/data/tls/x509-server-key-ecdsa.pem8
-rw-r--r--crypto/test/data/tls/x509-server-key-ed25519.pem25
-rw-r--r--crypto/test/data/tls/x509-server-key-ed448.pem28
-rw-r--r--crypto/test/data/tls/x509-server-key-rsa-enc.pem28
-rw-r--r--crypto/test/data/tls/x509-server-key-rsa-sign.pem28
-rw-r--r--crypto/test/data/tls/x509-server-key-rsa_pss_256.pem138
-rw-r--r--crypto/test/data/tls/x509-server-key-rsa_pss_384.pem138
-rw-r--r--crypto/test/data/tls/x509-server-key-rsa_pss_512.pem138
-rw-r--r--crypto/test/data/tls/x509-server-key.pem32
-rw-r--r--crypto/test/data/tls/x509-server-rsa-enc.pem20
-rw-r--r--crypto/test/data/tls/x509-server-rsa-sign.pem20
-rw-r--r--crypto/test/data/tls/x509-server-rsa_pss_256.pem23
-rw-r--r--crypto/test/data/tls/x509-server-rsa_pss_384.pem23
-rw-r--r--crypto/test/data/tls/x509-server-rsa_pss_512.pem23
-rw-r--r--crypto/test/data/tls/x509-server.pem22
-rw-r--r--crypto/test/src/crypto/tls/test/MockDtlsClient.cs5
-rw-r--r--crypto/test/src/crypto/tls/test/MockDtlsServer.cs11
-rw-r--r--crypto/test/src/crypto/tls/test/MockPskTlsServer.cs4
-rw-r--r--crypto/test/src/crypto/tls/test/MockSrpTlsServer.cs10
-rw-r--r--crypto/test/src/crypto/tls/test/MockTlsClient.cs5
-rw-r--r--crypto/test/src/crypto/tls/test/MockTlsServer.cs11
-rw-r--r--crypto/test/src/crypto/tls/test/TlsTestClientImpl.cs12
-rw-r--r--crypto/test/src/crypto/tls/test/TlsTestServerImpl.cs29
-rw-r--r--crypto/test/src/crypto/tls/test/TlsTestUtilities.cs5
79 files changed, 2564 insertions, 352 deletions
diff --git a/crypto/crypto.csproj b/crypto/crypto.csproj
index 374482709..ca67f3487 100644
--- a/crypto/crypto.csproj
+++ b/crypto/crypto.csproj
@@ -11608,15 +11608,99 @@
                     BuildAction = "EmbeddedResource"
                 />
                 <File
-                    RelPath = "test\data\tls\x509-ca.pem"
+                    RelPath = "test\data\tls\ca.tmpl"
+                    BuildAction = "None"
+                />
+                <File
+                    RelPath = "test\data\tls\client_agree.tmpl"
+                    BuildAction = "None"
+                />
+                <File
+                    RelPath = "test\data\tls\client_enc.tmpl"
+                    BuildAction = "None"
+                />
+                <File
+                    RelPath = "test\data\tls\client_sign.tmpl"
+                    BuildAction = "None"
+                />
+                <File
+                    RelPath = "test\data\tls\README.txt"
+                    BuildAction = "None"
+                />
+                <File
+                    RelPath = "test\data\tls\server_agree.tmpl"
+                    BuildAction = "None"
+                />
+                <File
+                    RelPath = "test\data\tls\server_enc.tmpl"
+                    BuildAction = "None"
+                />
+                <File
+                    RelPath = "test\data\tls\server_sign.tmpl"
+                    BuildAction = "None"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-ca-dsa.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-ca-ecdsa.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-ca-ed25519.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-ca-ed448.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-ca-key-dsa.pem"
                     BuildAction = "EmbeddedResource"
                 />
                 <File
-                    RelPath = "test\data\tls\x509-ca-key.pem"
+                    RelPath = "test\data\tls\x509-ca-key-ecdsa.pem"
                     BuildAction = "EmbeddedResource"
                 />
                 <File
-                    RelPath = "test\data\tls\x509-client.pem"
+                    RelPath = "test\data\tls\x509-ca-key-ed25519.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-ca-key-ed448.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-ca-key-rsa.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-ca-key-rsa_pss_256.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-ca-key-rsa_pss_384.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-ca-key-rsa_pss_512.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-ca-rsa.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-ca-rsa_pss_256.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-ca-rsa_pss_384.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-ca-rsa_pss_512.pem"
                     BuildAction = "EmbeddedResource"
                 />
                 <File
@@ -11624,11 +11708,19 @@
                     BuildAction = "EmbeddedResource"
                 />
                 <File
+                    RelPath = "test\data\tls\x509-client-ecdh.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
                     RelPath = "test\data\tls\x509-client-ecdsa.pem"
                     BuildAction = "EmbeddedResource"
                 />
                 <File
-                    RelPath = "test\data\tls\x509-client-key.pem"
+                    RelPath = "test\data\tls\x509-client-ed25519.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-client-ed448.pem"
                     BuildAction = "EmbeddedResource"
                 />
                 <File
@@ -11636,11 +11728,51 @@
                     BuildAction = "EmbeddedResource"
                 />
                 <File
+                    RelPath = "test\data\tls\x509-client-key-ecdh.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
                     RelPath = "test\data\tls\x509-client-key-ecdsa.pem"
                     BuildAction = "EmbeddedResource"
                 />
                 <File
-                    RelPath = "test\data\tls\x509-server.pem"
+                    RelPath = "test\data\tls\x509-client-key-ed25519.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-client-key-ed448.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-client-key-rsa.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-client-key-rsa_pss_256.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-client-key-rsa_pss_384.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-client-key-rsa_pss_512.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-client-rsa.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-client-rsa_pss_256.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-client-rsa_pss_384.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-client-rsa_pss_512.pem"
                     BuildAction = "EmbeddedResource"
                 />
                 <File
@@ -11648,11 +11780,19 @@
                     BuildAction = "EmbeddedResource"
                 />
                 <File
+                    RelPath = "test\data\tls\x509-server-ecdh.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
                     RelPath = "test\data\tls\x509-server-ecdsa.pem"
                     BuildAction = "EmbeddedResource"
                 />
                 <File
-                    RelPath = "test\data\tls\x509-server-key.pem"
+                    RelPath = "test\data\tls\x509-server-ed25519.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-server-ed448.pem"
                     BuildAction = "EmbeddedResource"
                 />
                 <File
@@ -11660,10 +11800,62 @@
                     BuildAction = "EmbeddedResource"
                 />
                 <File
+                    RelPath = "test\data\tls\x509-server-key-ecdh.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
                     RelPath = "test\data\tls\x509-server-key-ecdsa.pem"
                     BuildAction = "EmbeddedResource"
                 />
                 <File
+                    RelPath = "test\data\tls\x509-server-key-ed25519.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-server-key-ed448.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-server-key-rsa-enc.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-server-key-rsa-sign.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-server-key-rsa_pss_256.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-server-key-rsa_pss_384.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-server-key-rsa_pss_512.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-server-rsa-enc.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-server-rsa-sign.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-server-rsa_pss_256.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-server-rsa_pss_384.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "test\data\tls\x509-server-rsa_pss_512.pem"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
                     RelPath = "test\data\tls\keystores\client_store.dsa"
                     BuildAction = "EmbeddedResource"
                 />
diff --git a/crypto/test/UnitTests.csproj b/crypto/test/UnitTests.csproj
index 58737f9ce..404eb6ca1 100644
--- a/crypto/test/UnitTests.csproj
+++ b/crypto/test/UnitTests.csproj
@@ -1327,24 +1327,68 @@
     <EmbeddedResource Include="data\rsa3\self-testcase-L.pem" />
     <EmbeddedResource Include="data\rsa3\testcases.README" />
     <EmbeddedResource Include="data\scrypt\TestVectors.txt" />
-    <EmbeddedResource Include="data\tls\README.txt" />
-    <EmbeddedResource Include="data\tls\ca.tmpl" />
-    <EmbeddedResource Include="data\tls\client.tmpl" />
-    <EmbeddedResource Include="data\tls\server.tmpl" />
-    <EmbeddedResource Include="data\tls\x509-ca-key.pem" />
-    <EmbeddedResource Include="data\tls\x509-ca.pem" />
+    <None Include="data\tls\ca.tmpl" />
+    <None Include="data\tls\client_agree.tmpl" />
+    <None Include="data\tls\client_enc.tmpl" />
+    <None Include="data\tls\client_sign.tmpl" />
+    <None Include="data\tls\README.txt" />
+    <None Include="data\tls\server_agree.tmpl" />
+    <None Include="data\tls\server_enc.tmpl" />
+    <None Include="data\tls\server_sign.tmpl" />
+    <EmbeddedResource Include="data\tls\x509-ca-dsa.pem" />
+    <EmbeddedResource Include="data\tls\x509-ca-ecdsa.pem" />
+    <EmbeddedResource Include="data\tls\x509-ca-ed25519.pem" />
+    <EmbeddedResource Include="data\tls\x509-ca-ed448.pem" />
+    <EmbeddedResource Include="data\tls\x509-ca-key-dsa.pem" />
+    <EmbeddedResource Include="data\tls\x509-ca-key-ecdsa.pem" />
+    <EmbeddedResource Include="data\tls\x509-ca-key-ed25519.pem" />
+    <EmbeddedResource Include="data\tls\x509-ca-key-ed448.pem" />
+    <EmbeddedResource Include="data\tls\x509-ca-key-rsa.pem" />
+    <EmbeddedResource Include="data\tls\x509-ca-key-rsa_pss_256.pem" />
+    <EmbeddedResource Include="data\tls\x509-ca-key-rsa_pss_384.pem" />
+    <EmbeddedResource Include="data\tls\x509-ca-key-rsa_pss_512.pem" />
+    <EmbeddedResource Include="data\tls\x509-ca-rsa.pem" />
+    <EmbeddedResource Include="data\tls\x509-ca-rsa_pss_256.pem" />
+    <EmbeddedResource Include="data\tls\x509-ca-rsa_pss_384.pem" />
+    <EmbeddedResource Include="data\tls\x509-ca-rsa_pss_512.pem" />
     <EmbeddedResource Include="data\tls\x509-client-dsa.pem" />
+    <EmbeddedResource Include="data\tls\x509-client-ecdh.pem" />
     <EmbeddedResource Include="data\tls\x509-client-ecdsa.pem" />
-    <EmbeddedResource Include="data\tls\x509-client-key.pem" />
+    <EmbeddedResource Include="data\tls\x509-client-ed25519.pem" />
+    <EmbeddedResource Include="data\tls\x509-client-ed448.pem" />
     <EmbeddedResource Include="data\tls\x509-client-key-dsa.pem" />
+    <EmbeddedResource Include="data\tls\x509-client-key-ecdh.pem" />
     <EmbeddedResource Include="data\tls\x509-client-key-ecdsa.pem" />
-    <EmbeddedResource Include="data\tls\x509-client.pem" />
+    <EmbeddedResource Include="data\tls\x509-client-key-ed25519.pem" />
+    <EmbeddedResource Include="data\tls\x509-client-key-ed448.pem" />
+    <EmbeddedResource Include="data\tls\x509-client-key-rsa.pem" />
+    <EmbeddedResource Include="data\tls\x509-client-key-rsa_pss_256.pem" />
+    <EmbeddedResource Include="data\tls\x509-client-key-rsa_pss_384.pem" />
+    <EmbeddedResource Include="data\tls\x509-client-key-rsa_pss_512.pem" />
+    <EmbeddedResource Include="data\tls\x509-client-rsa.pem" />
+    <EmbeddedResource Include="data\tls\x509-client-rsa_pss_256.pem" />
+    <EmbeddedResource Include="data\tls\x509-client-rsa_pss_384.pem" />
+    <EmbeddedResource Include="data\tls\x509-client-rsa_pss_512.pem" />
     <EmbeddedResource Include="data\tls\x509-server-dsa.pem" />
+    <EmbeddedResource Include="data\tls\x509-server-ecdh.pem" />
     <EmbeddedResource Include="data\tls\x509-server-ecdsa.pem" />
-    <EmbeddedResource Include="data\tls\x509-server-key.pem" />
+    <EmbeddedResource Include="data\tls\x509-server-ed25519.pem" />
+    <EmbeddedResource Include="data\tls\x509-server-ed448.pem" />
     <EmbeddedResource Include="data\tls\x509-server-key-dsa.pem" />
+    <EmbeddedResource Include="data\tls\x509-server-key-ecdh.pem" />
     <EmbeddedResource Include="data\tls\x509-server-key-ecdsa.pem" />
-    <EmbeddedResource Include="data\tls\x509-server.pem" />
+    <EmbeddedResource Include="data\tls\x509-server-key-ed25519.pem" />
+    <EmbeddedResource Include="data\tls\x509-server-key-ed448.pem" />
+    <EmbeddedResource Include="data\tls\x509-server-key-rsa-enc.pem" />
+    <EmbeddedResource Include="data\tls\x509-server-key-rsa-sign.pem" />
+    <EmbeddedResource Include="data\tls\x509-server-key-rsa_pss_256.pem" />
+    <EmbeddedResource Include="data\tls\x509-server-key-rsa_pss_384.pem" />
+    <EmbeddedResource Include="data\tls\x509-server-key-rsa_pss_512.pem" />
+    <EmbeddedResource Include="data\tls\x509-server-rsa-enc.pem" />
+    <EmbeddedResource Include="data\tls\x509-server-rsa-sign.pem" />
+    <EmbeddedResource Include="data\tls\x509-server-rsa_pss_256.pem" />
+    <EmbeddedResource Include="data\tls\x509-server-rsa_pss_384.pem" />
+    <EmbeddedResource Include="data\tls\x509-server-rsa_pss_512.pem" />
     <EmbeddedResource Include="data\tls\keystores\client_store.dsa" />
     <EmbeddedResource Include="data\tls\keystores\client_store.rsa" />
     <EmbeddedResource Include="data\tls\keystores\server_store.dsa" />
@@ -1353,4 +1397,4 @@
   <ItemGroup>
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/crypto/test/data/tls/README.txt b/crypto/test/data/tls/README.txt
index 2f456ed68..538325645 100644
--- a/crypto/test/data/tls/README.txt
+++ b/crypto/test/data/tls/README.txt
@@ -1,8 +1,181 @@
-The key and certificate .pem files here were generated using GnuTLS certtool and the accompanying template files:
-
-    certtool --generate-privkey > x509-ca-key.pem
-    certtool --generate-privkey > x509-client-key.pem
-    certtool --generate-privkey > x509-server-key.pem
-    certtool --generate-self-signed --load-privkey x509-ca-key.pem --template ca.tmpl --outfile x509-ca.pem
-    certtool --generate-certificate --load-privkey x509-client-key.pem --load-ca-certificate x509-ca.pem --load-ca-privkey x509-ca-key.pem --template client.tmpl --outfile x509-client.pem
-    certtool --generate-certificate --load-privkey x509-server-key.pem --load-ca-certificate x509-ca.pem --load-ca-privkey x509-ca-key.pem --template server.tmpl --outfile x509-server.pem
+# The key and certificate .pem files here were generated using GnuTLS certtool and the accompanying
+# template files. (Note that the ed25519 files needed GnuTLS 3.6+, 3.6.12+ for ed448)
+
+# CA (signing) credentials:
+
+    certtool --generate-privkey --outfile x509-ca-key-dsa.pem \
+        --pkcs8 --password '' --dsa --bits 2048
+    certtool --generate-self-signed --template ca.tmpl --outfile x509-ca-dsa.pem \
+        --load-privkey x509-ca-key-dsa.pem --hash sha256
+
+    certtool --generate-privkey --outfile x509-ca-key-ecdsa.pem \
+        --pkcs8 --password '' --ecdsa --curve secp256r1
+    certtool --generate-self-signed --template ca.tmpl --outfile x509-ca-ecdsa.pem \
+        --load-privkey x509-ca-key-ecdsa.pem --hash sha256
+
+    certtool --generate-privkey --outfile x509-ca-key-ed25519.pem \
+        --pkcs8 --password '' --key-type=ed25519
+    certtool --generate-self-signed --template ca.tmpl --outfile x509-ca-ed25519.pem \
+        --load-privkey x509-ca-key-ed25519.pem
+
+    certtool --generate-privkey --outfile x509-ca-key-ed448.pem \
+        --pkcs8 --password '' --key-type=ed448
+    certtool --generate-self-signed --template ca.tmpl --outfile x509-ca-ed448.pem \
+        --load-privkey x509-ca-key-ed448.pem
+
+    certtool --generate-privkey --outfile x509-ca-key-rsa.pem \
+        --pkcs8 --password '' --rsa --bits 2048
+    certtool --generate-self-signed --template ca.tmpl --outfile x509-ca-rsa.pem \
+        --load-privkey x509-ca-key-rsa.pem --hash sha256
+
+    certtool --generate-privkey --outfile x509-ca-key-rsa_pss_256.pem \
+        --pkcs8 --password '' --key-type='rsa-pss' --bits=2048 --hash=sha256 --salt-size=32
+    certtool --generate-self-signed --template ca.tmpl --outfile x509-ca-rsa_pss_256.pem \
+        --load-privkey x509-ca-key-rsa_pss_256.pem
+
+    certtool --generate-privkey --outfile x509-ca-key-rsa_pss_384.pem \
+        --pkcs8 --password '' --key-type='rsa-pss' --bits=2048 --hash=sha384 --salt-size=48
+    certtool --generate-self-signed --template ca.tmpl --outfile x509-ca-rsa_pss_384.pem \
+        --load-privkey x509-ca-key-rsa_pss_384.pem
+
+    certtool --generate-privkey --outfile x509-ca-key-rsa_pss_512.pem \
+        --pkcs8 --password '' --key-type='rsa-pss' --bits=2048 --hash=sha512 --salt-size=64
+    certtool --generate-self-signed --template ca.tmpl --outfile x509-ca-rsa_pss_512.pem \
+        --load-privkey x509-ca-key-rsa_pss_512.pem
+
+# Client agreement credentials:
+
+    certtool --generate-privkey --outfile x509-client-key-ecdh.pem \
+        --pkcs8 --password '' --ecc --curve secp256r1
+    certtool --generate-certificate --template client_agree.tmpl --outfile x509-client-ecdh.pem \
+        --load-privkey x509-client-key-ecdh.pem --hash sha256 \
+        --load-ca-privkey x509-ca-key-ecdsa.pem --load-ca-certificate x509-ca-ecdsa.pem
+
+# Client signing credentials:
+
+    certtool --generate-privkey --outfile x509-client-key-dsa.pem \
+        --pkcs8 --password '' --dsa --bits 2048
+    certtool --generate-certificate --template client_sign.tmpl --outfile x509-client-dsa.pem \
+        --load-privkey x509-client-key-dsa.pem --hash sha256 \
+        --load-ca-privkey x509-ca-key-dsa.pem --load-ca-certificate x509-ca-dsa.pem
+
+    certtool --generate-privkey --outfile x509-client-key-ecdsa.pem \
+        --pkcs8 --password '' --ecdsa --curve secp256r1
+    certtool --generate-certificate --template client_sign.tmpl --outfile x509-client-ecdsa.pem \
+        --load-privkey x509-client-key-ecdsa.pem --hash sha256 \
+        --load-ca-privkey x509-ca-key-ecdsa.pem --load-ca-certificate x509-ca-ecdsa.pem
+
+    certtool --generate-privkey --outfile x509-client-key-ed25519.pem \
+        --pkcs8 --password '' --key-type=ed25519
+    certtool --generate-certificate --template client_sign.tmpl --outfile x509-client-ed25519.pem \
+        --load-privkey x509-client-key-ed25519.pem \
+        --load-ca-privkey x509-ca-key-ed25519.pem --load-ca-certificate x509-ca-ed25519.pem
+
+    certtool --generate-privkey --outfile x509-client-key-ed448.pem \
+        --pkcs8 --password '' --key-type=ed448
+    certtool --generate-certificate --template client_sign.tmpl --outfile x509-client-ed448.pem \
+        --load-privkey x509-client-key-ed448.pem \
+        --load-ca-privkey x509-ca-key-ed448.pem --load-ca-certificate x509-ca-ed448.pem
+
+    certtool --generate-privkey --outfile x509-client-key-rsa.pem \
+        --pkcs8 --password '' --rsa --bits 2048
+    certtool --generate-certificate --template client_sign.tmpl --outfile x509-client-rsa.pem \
+        --load-privkey x509-client-key-rsa.pem --hash sha256 \
+        --load-ca-privkey x509-ca-key-rsa.pem --load-ca-certificate x509-ca-rsa.pem
+
+    certtool --generate-privkey --outfile x509-client-key-rsa_pss_256.pem \
+        --pkcs8 --password '' --key-type='rsa-pss' --bits=2048 --hash=sha256 --salt-size=32
+    certtool --generate-certificate --template client_sign.tmpl \
+        --outfile x509-client-rsa_pss_256.pem \
+        --load-privkey x509-client-key-rsa_pss_256.pem \
+        --load-ca-privkey x509-ca-key-rsa_pss_256.pem \
+        --load-ca-certificate x509-ca-rsa_pss_256.pem
+
+    certtool --generate-privkey --outfile x509-client-key-rsa_pss_384.pem \
+        --pkcs8 --password '' --key-type='rsa-pss' --bits=2048 --hash=sha384 --salt-size=48
+    certtool --generate-certificate --template client_sign.tmpl \
+        --outfile x509-client-rsa_pss_384.pem \
+        --load-privkey x509-client-key-rsa_pss_384.pem \
+        --load-ca-privkey x509-ca-key-rsa_pss_384.pem \
+        --load-ca-certificate x509-ca-rsa_pss_384.pem
+
+    certtool --generate-privkey --outfile x509-client-key-rsa_pss_512.pem \
+        --pkcs8 --password '' --key-type='rsa-pss' --bits=2048 --hash=sha512 --salt-size=64
+    certtool --generate-certificate --template client_sign.tmpl \
+        --outfile x509-client-rsa_pss_512.pem \
+        --load-privkey x509-client-key-rsa_pss_512.pem \
+        --load-ca-privkey x509-ca-key-rsa_pss_512.pem \
+        --load-ca-certificate x509-ca-rsa_pss_512.pem
+
+# Server agreement credentials:
+
+    certtool --generate-privkey --outfile x509-server-key-ecdh.pem \
+        --pkcs8 --password '' --ecc --curve secp256r1
+    certtool --generate-certificate --template server_agree.tmpl --outfile x509-server-ecdh.pem \
+        --load-privkey x509-server-key-ecdh.pem --hash sha256 \
+        --load-ca-privkey x509-ca-key-ecdsa.pem --load-ca-certificate x509-ca-ecdsa.pem
+
+# Server encryption credentials:
+
+    certtool --generate-privkey --outfile x509-server-key-rsa-enc.pem \
+        --pkcs8 --password '' --rsa --bits 2048
+    certtool --generate-certificate --outfile x509-server-rsa-enc.pem \
+        --load-privkey x509-server-key-rsa-enc.pem --template server_enc.tmpl \
+        --load-ca-privkey x509-ca-key-rsa.pem --load-ca-certificate x509-ca-rsa.pem \
+        --hash sha256
+
+# Server signing credentials:
+
+    certtool --generate-privkey --outfile x509-server-key-dsa.pem \
+        --pkcs8 --password '' --dsa --bits 2048
+    certtool --generate-certificate --template server_sign.tmpl --outfile x509-server-dsa.pem \
+        --load-privkey x509-server-key-dsa.pem --hash sha256 \
+        --load-ca-privkey x509-ca-key-dsa.pem --load-ca-certificate x509-ca-dsa.pem
+
+    certtool --generate-privkey --outfile x509-server-key-ecdsa.pem \
+        --pkcs8 --password '' --ecdsa --curve secp256r1
+    certtool --generate-certificate --template server_sign.tmpl --outfile x509-server-ecdsa.pem \
+        --load-privkey x509-server-key-ecdsa.pem --hash sha256 \
+        --load-ca-privkey x509-ca-key-ecdsa.pem --load-ca-certificate x509-ca-ecdsa.pem
+
+    certtool --generate-privkey --outfile x509-server-key-ed25519.pem \
+        --pkcs8 --password '' --key-type=ed25519
+    certtool --generate-certificate --template server_sign.tmpl --outfile x509-server-ed25519.pem \
+        --load-privkey x509-server-key-ed25519.pem \
+        --load-ca-privkey x509-ca-key-ed25519.pem --load-ca-certificate x509-ca-ed25519.pem
+
+    certtool --generate-privkey --outfile x509-server-key-ed448.pem \
+        --pkcs8 --password '' --key-type=ed448
+    certtool --generate-certificate --template server_sign.tmpl --outfile x509-server-ed448.pem \
+        --load-privkey x509-server-key-ed448.pem \
+        --load-ca-privkey x509-ca-key-ed448.pem --load-ca-certificate x509-ca-ed448.pem
+
+    certtool --generate-privkey --outfile x509-server-key-rsa-sign.pem \
+        --pkcs8 --password '' --rsa --bits 2048
+    certtool --generate-certificate --template server_sign.tmpl --outfile x509-server-rsa-sign.pem \
+        --load-privkey x509-server-key-rsa-sign.pem --hash sha256 \
+        --load-ca-privkey x509-ca-key-rsa.pem --load-ca-certificate x509-ca-rsa.pem
+
+    certtool --generate-privkey --outfile x509-server-key-rsa_pss_256.pem \
+        --pkcs8 --password '' --key-type='rsa-pss' --bits=2048 --hash=sha256 --salt-size=32
+    certtool --generate-certificate --template server_sign.tmpl \
+        --outfile x509-server-rsa_pss_256.pem \
+        --load-privkey x509-server-key-rsa_pss_256.pem \
+        --load-ca-privkey x509-ca-key-rsa_pss_256.pem \
+        --load-ca-certificate x509-ca-rsa_pss_256.pem
+
+    certtool --generate-privkey --outfile x509-server-key-rsa_pss_384.pem \
+        --pkcs8 --password '' --key-type='rsa-pss' --bits=2048 --hash=sha384 --salt-size=48
+    certtool --generate-certificate --template server_sign.tmpl \
+        --outfile x509-server-rsa_pss_384.pem \
+        --load-privkey x509-server-key-rsa_pss_384.pem \
+        --load-ca-privkey x509-ca-key-rsa_pss_384.pem \
+        --load-ca-certificate x509-ca-rsa_pss_384.pem
+
+    certtool --generate-privkey --outfile x509-server-key-rsa_pss_512.pem \
+        --pkcs8 --password '' --key-type='rsa-pss' --bits=2048 --hash=sha512 --salt-size=64
+    certtool --generate-certificate --template server_sign.tmpl \
+        --outfile x509-server-rsa_pss_512.pem \
+        --load-privkey x509-server-key-rsa_pss_512.pem \
+        --load-ca-privkey x509-ca-key-rsa_pss_512.pem \
+        --load-ca-certificate x509-ca-rsa_pss_512.pem
diff --git a/crypto/test/data/tls/ca.tmpl b/crypto/test/data/tls/ca.tmpl
index 44319d2de..72e41e69e 100644
--- a/crypto/test/data/tls/ca.tmpl
+++ b/crypto/test/data/tls/ca.tmpl
@@ -1,4 +1,4 @@
 cn = BouncyCastle TLS Test CA
 ca
 cert_signing_key
-expiration_days = 7300
+expiration_days = 7301
diff --git a/crypto/test/data/tls/client_agree.tmpl b/crypto/test/data/tls/client_agree.tmpl
new file mode 100644
index 000000000..171804188
--- /dev/null
+++ b/crypto/test/data/tls/client_agree.tmpl
@@ -0,0 +1,4 @@
+cn = BouncyCastle Test Client
+tls_www_client
+key_agreement
+expiration_days = 7300
diff --git a/crypto/test/data/tls/client.tmpl b/crypto/test/data/tls/client_enc.tmpl
index f7f7e08a5..1a6f2efd8 100644
--- a/crypto/test/data/tls/client.tmpl
+++ b/crypto/test/data/tls/client_enc.tmpl
@@ -1,5 +1,4 @@
 cn = BouncyCastle Test Client
 tls_www_client
 encryption_key
-signing_key
 expiration_days = 7300
diff --git a/crypto/test/data/tls/client_sign.tmpl b/crypto/test/data/tls/client_sign.tmpl
new file mode 100644
index 000000000..5a320b111
--- /dev/null
+++ b/crypto/test/data/tls/client_sign.tmpl
@@ -0,0 +1,4 @@
+cn = BouncyCastle Test Client
+tls_www_client
+signing_key
+expiration_days = 7300
diff --git a/crypto/test/data/tls/server_agree.tmpl b/crypto/test/data/tls/server_agree.tmpl
new file mode 100644
index 000000000..44f12f650
--- /dev/null
+++ b/crypto/test/data/tls/server_agree.tmpl
@@ -0,0 +1,4 @@
+cn = BouncyCastle Test Server
+tls_www_server
+key_agreement
+expiration_days = 7300
diff --git a/crypto/test/data/tls/server.tmpl b/crypto/test/data/tls/server_enc.tmpl
index e406c48b4..4bfc58e07 100644
--- a/crypto/test/data/tls/server.tmpl
+++ b/crypto/test/data/tls/server_enc.tmpl
@@ -1,5 +1,4 @@
 cn = BouncyCastle Test Server
 tls_www_server
 encryption_key
-signing_key
 expiration_days = 7300
diff --git a/crypto/test/data/tls/server_sign.tmpl b/crypto/test/data/tls/server_sign.tmpl
new file mode 100644
index 000000000..1d12addab
--- /dev/null
+++ b/crypto/test/data/tls/server_sign.tmpl
@@ -0,0 +1,4 @@
+cn = BouncyCastle Test Server
+tls_www_server
+signing_key
+expiration_days = 7300
diff --git a/crypto/test/data/tls/x509-ca-dsa.pem b/crypto/test/data/tls/x509-ca-dsa.pem
new file mode 100644
index 000000000..d9cb013a2
--- /dev/null
+++ b/crypto/test/data/tls/x509-ca-dsa.pem
@@ -0,0 +1,26 @@
+-----BEGIN CERTIFICATE-----
+MIIEdDCCBBqgAwIBAgIMWYGU7zZX3YAzRZ8VMAsGCWCGSAFlAwQDAjAjMSEwHwYD
+VQQDExhCb3VuY3lDYXN0bGUgVExTIFRlc3QgQ0EwHhcNMTcwODAyMDkwMTM1WhcN
+MzcwNzI5MDkwMTM1WjAjMSEwHwYDVQQDExhCb3VuY3lDYXN0bGUgVExTIFRlc3Qg
+Q0EwggNHMIICOQYHKoZIzjgEATCCAiwCggEBAO5dNk+YfyPOeIK54F9Wg6Zl5+cu
+80tSk1fZBSQE1nFBblnGifl39LTmwkHL7XNZmUUFtrScY7Qlk0/cRsEqsl647fAy
+XNhqpZAOMPJs4NBx6nzQvKlprxU9JYO5kvTIoJNBR4GCUDxX/DWLffFqvwbBmrZ3
+BgNAHhAHj/wDm0sfxKDXHgfUwmVJgBOne7xwh86SJJojw+MN33ILuSfNFePv2AeQ
+kw+bY93tPpouyfskyBLdWs7DeGXmjftFSmpS68j36RAL0+4QZVwDyX/aIwK1bxAH
+XLgRnono7NfGxzqlPiQXfb5ewUmZPyjJ3P06WMU3kgj6ZMoyfmJOHCSwjAECIQCg
+NiET6OM1ljsc4tvOXtDSyXXqQ4YtRT5o41Gal8kv+QKCAQAbvM2Az1+PzOhrySA5
+PATwWWDMIXlxFx3U1gXIczu4lGGRaoVzfmSGsDZ6A/0j+/ZtmpjGH3B+jb0Rab0n
+yZBDUzK+39w+YI7s+K6yGkKlSuyhpB/UokDP0h5Pf6MEVAU2bIcuuWTLMJmleWLw
+zHKJTjUDnrC6txeVAbsW+O4l04jMHLTZMXg2OTk9urUtJzeJNkEEMNA8sv7h+yrA
+oX2FqvhfDg/oLdfwXQULkKJc/ec6IQaXrtHm+oYwDQxsr9ap4FlET1nz91MMAXon
+hB2Yfl7dRKJtKMUKGWGbCliTnJAPUHI1URltnEg387G/YbnnEBUnZlNBJeDrpZFg
++v2ZA4IBBgACggEBAJQi1dv4plwRKrP2fU/76FLcx++60cA4oajNm0f4Vyyaz2xF
+7hPiFNj2H0nLNJAtPtdn/wC7KHNWmDx0OiUFIseAqPPoQvfaSrFun1F2iUJhlrKU
+FOJ3RC2URoD+M7IbR1SXAyuWOVenhoYyky1mausApUhUjoLO3mMOyBDdXMGWMq7p
+SHfyziAnySzwZ2bwOrVz4XL41w4cPbjdEzd4MLIfpPaqqW43y4MNlgLLspm9vBO5
+6Fbq9c0bDUa18jkSi7DU7uH43S9tq3HrPQh127XZ5SstNPU2uV0o+ZXAS8V9sBOM
+LGZMjkiQ8bozYtUVAlhLFBnzMB/BOCWxe2yJGSyjQzBBMA8GA1UdEwEB/wQFMAMB
+Af8wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUAOVmarDrz1YtyjvnX4C9cDcX
+lagwCwYJYIZIAWUDBAMCA0cAMEQCIFEz1ogza6zKwImQS9tKVlPNjU4QSDEfPjZP
+aSwIVMCyAiB+TcGoJvBEAdkzIeQQDdQLldrR+tO/WbayMeqPZHG6ww==
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-ca-ecdsa.pem b/crypto/test/data/tls/x509-ca-ecdsa.pem
new file mode 100644
index 000000000..019ada270
--- /dev/null
+++ b/crypto/test/data/tls/x509-ca-ecdsa.pem
@@ -0,0 +1,11 @@
+-----BEGIN CERTIFICATE-----
+MIIBgzCCASmgAwIBAgIMWYGU7zek17Bcz64zMAoGCCqGSM49BAMCMCMxITAfBgNV
+BAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBDQTAeFw0xNzA4MDIwOTAxMzVaFw0z
+NzA3MjkwOTAxMzVaMCMxITAfBgNVBAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBD
+QTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDOjvFecZj9RsxsIZSygfmv/GX9M
+oJkQeMk+sI6QRVv7YbzL7QUxKa4gRb2x2e3iKPi+Mi2x2wGAPJajJO6nj8ujQzBB
+MA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQU0ma/
+FGcW5gGlL//B26Xmj0JISecwCgYIKoZIzj0EAwIDSAAwRQIhAJPFYIENHNONgDNy
+1565P/2N0TMAkcENL2zyCEDnYVG4AiBiA3BuThR1Rgnvn1qRGaivzoIiMvDVRQb7
+p76OkZ8Igw==
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-ca-ed25519.pem b/crypto/test/data/tls/x509-ca-ed25519.pem
new file mode 100644
index 000000000..c117a2649
--- /dev/null
+++ b/crypto/test/data/tls/x509-ca-ed25519.pem
@@ -0,0 +1,9 @@
+-----BEGIN CERTIFICATE-----
+MIIBSjCB/aADAgECAhQ4EsBmtAbEpUqx/8m96XRPinrybTAFBgMrZXAwIzEhMB8G
+A1UEAxMYQm91bmN5Q2FzdGxlIFRMUyBUZXN0IENBMB4XDTE4MDgyMzA5Mjk0N1oX
+DTM4MDgxOTA5Mjk0N1owIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxlIFRMUyBUZXN0
+IENBMCowBQYDK2VwAyEA8ZleePPCqzYeCARxwHP10sYfQhcCQ4YXjyOxrb53I0qj
+QzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQU
+6nm+PvoHITBuh26gdYBbNqOczWYwBQYDK2VwA0EAoUgBYkz0bcLAC+kTmbwE05ga
+u2SmQtPaiXGykqY+3RhoZVthxQyEzWT0N5KJ322l6mjs0CZRat0ai4hR1Yj7BA==
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-ca-ed448.pem b/crypto/test/data/tls/x509-ca-ed448.pem
new file mode 100644
index 000000000..e72fcc6d9
--- /dev/null
+++ b/crypto/test/data/tls/x509-ca-ed448.pem
@@ -0,0 +1,11 @@
+-----BEGIN CERTIFICATE-----
+MIIBljCCARagAwIBAgIUWxqMqdy/tO71K3Iz4GYJiWrc42wwBQYDK2VxMCMxITAf
+BgNVBAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBDQTAeFw0yMDAyMTMwNzMzMDJa
+Fw00MDAyMDkwNzMzMDJaMCMxITAfBgNVBAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVz
+dCBDQTBDMAUGAytlcQM6AKSetNrq+LCrx62FFnDlmUG/gZUa6LkaIHnfVM3w7/Wl
+c1RONMpgGRUeNMqM8YBlgDzUrHjVkHfOAKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAP
+BgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBS+BSv++BEWlTJ53q6rwnDLVnR5JTAF
+BgMrZXEDcwCFAtJNOZDtSYHm/Mf/L2PEbXNDDNrieJGWbixz/QXYoXjNBFB0D521
+IGH0o6Gdh0ZaQvdktpXc9wDs9xAbzh/w6+hLROTj8UvxyvPuZbGgVYH/tvE++NH/
+H0EQMi0FnLI/iBGv/bEPm8VJ1e24qEiEAAA=
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-ca-key-dsa.pem b/crypto/test/data/tls/x509-ca-key-dsa.pem
new file mode 100644
index 000000000..4c378da7a
--- /dev/null
+++ b/crypto/test/data/tls/x509-ca-key-dsa.pem
@@ -0,0 +1,15 @@
+-----BEGIN PRIVATE KEY-----
+MIICZQIBADCCAjkGByqGSM44BAEwggIsAoIBAQDuXTZPmH8jzniCueBfVoOmZefn
+LvNLUpNX2QUkBNZxQW5Zxon5d/S05sJBy+1zWZlFBba0nGO0JZNP3EbBKrJeuO3w
+MlzYaqWQDjDybODQcep80Lypaa8VPSWDuZL0yKCTQUeBglA8V/w1i33xar8GwZq2
+dwYDQB4QB4/8A5tLH8Sg1x4H1MJlSYATp3u8cIfOkiSaI8PjDd9yC7knzRXj79gH
+kJMPm2Pd7T6aLsn7JMgS3VrOw3hl5o37RUpqUuvI9+kQC9PuEGVcA8l/2iMCtW8Q
+B1y4EZ6J6OzXxsc6pT4kF32+XsFJmT8oydz9OljFN5II+mTKMn5iThwksIwBAiEA
+oDYhE+jjNZY7HOLbzl7Q0sl16kOGLUU+aONRmpfJL/kCggEAG7zNgM9fj8zoa8kg
+OTwE8FlgzCF5cRcd1NYFyHM7uJRhkWqFc35khrA2egP9I/v2bZqYxh9wfo29EWm9
+J8mQQ1Myvt/cPmCO7PiushpCpUrsoaQf1KJAz9IeT3+jBFQFNmyHLrlkyzCZpXli
+8MxyiU41A56wurcXlQG7FvjuJdOIzBy02TF4Njk5Pbq1LSc3iTZBBDDQPLL+4fsq
+wKF9har4Xw4P6C3X8F0FC5CiXP3nOiEGl67R5vqGMA0MbK/WqeBZRE9Z8/dTDAF6
+J4QdmH5e3USibSjFChlhmwpYk5yQD1ByNVEZbZxIN/Oxv2G55xAVJ2ZTQSXg66WR
+YPr9mQQjAiEAnZYHGZPTcKWTzPTfMa5UQkZgqKU1jqyOOWWtHc50fPE=
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-ca-key-ecdsa.pem b/crypto/test/data/tls/x509-ca-key-ecdsa.pem
new file mode 100644
index 000000000..42132d48f
--- /dev/null
+++ b/crypto/test/data/tls/x509-ca-key-ecdsa.pem
@@ -0,0 +1,6 @@
+-----BEGIN PRIVATE KEY-----
+MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgXP0gFZhM/8/F0imI
+9EPD/er+bEFS8m2nY9JzJlricXigCgYIKoZIzj0DAQehRANCAAQzo7xXnGY/UbMb
+CGUsoH5r/xl/TKCZEHjJPrCOkEVb+2G8y+0FMSmuIEW9sdnt4ij4vjItsdsBgDyW
+oyTup4/L
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-ca-key-ed25519.pem b/crypto/test/data/tls/x509-ca-key-ed25519.pem
new file mode 100644
index 000000000..027bb835e
--- /dev/null
+++ b/crypto/test/data/tls/x509-ca-key-ed25519.pem
@@ -0,0 +1,25 @@
+Public Key Info:
+	Public Key Algorithm: EdDSA (Ed25519)
+	Key Security Level: High (256 bits)
+
+curve:	Ed25519
+private key:
+	a9:19:76:8a:f7:cf:95:c7:e3:94:3c:ce:3c:71:59:44
+	89:08:34:e5:49:0b:0a:44:56:d6:1d:05:f4:af:5d:85
+	
+
+x:
+	f1:99:5e:78:f3:c2:ab:36:1e:08:04:71:c0:73:f5:d2
+	c6:1f:42:17:02:43:86:17:8f:23:b1:ad:be:77:23:4a
+	
+
+
+Public Key PIN:
+	pin-sha256:XFgN/8/bw68mn6K+U4zDmMa+HSGjXI0bejzTOxFQf0U=
+Public Key ID:
+	sha256:5c580dffcfdbc3af269fa2be538cc398c6be1d21a35c8d1b7a3cd33b11507f45
+	sha1:ea79be3efa0721306e876ea075805b36a39ccd66
+
+-----BEGIN PRIVATE KEY-----
+MC4CAQAwBQYDK2VwBCIEIKkZdor3z5XH45Q8zjxxWUSJCDTlSQsKRFbWHQX0r12F
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-ca-key-ed448.pem b/crypto/test/data/tls/x509-ca-key-ed448.pem
new file mode 100644
index 000000000..697428973
--- /dev/null
+++ b/crypto/test/data/tls/x509-ca-key-ed448.pem
@@ -0,0 +1,28 @@
+Public Key Info:
+	Public Key Algorithm: EdDSA (Ed448)
+	Key Security Level: Ultra (456 bits)
+
+curve:	Ed448
+private key:
+	d8:36:a1:a6:12:8b:25:7a:86:eb:8a:b2:93:4a:71:df
+	44:b7:9e:be:59:09:61:58:43:d2:3f:80:04:59:7b:37
+	89:cc:d9:6b:84:26:ae:b9:75:3c:b7:6d:eb:4b:c9:d8
+	36:94:5e:63:44:7b:7f:4b:e0:
+
+x:
+	a4:9e:b4:da:ea:f8:b0:ab:c7:ad:85:16:70:e5:99:41
+	bf:81:95:1a:e8:b9:1a:20:79:df:54:cd:f0:ef:f5:a5
+	73:54:4e:34:ca:60:19:15:1e:34:ca:8c:f1:80:65:80
+	3c:d4:ac:78:d5:90:77:ce:00:
+
+
+Public Key PIN:
+	pin-sha256:fnp0p/r6DXkqUgGSXDJih9BAOy/+ImGTT5dCbfH6H4w=
+Public Key ID:
+	sha256:7e7a74a7fafa0d792a5201925c326287d0403b2ffe2261934f97426df1fa1f8c
+	sha1:be052bfef81116953279deaeabc270cb56747925
+
+-----BEGIN PRIVATE KEY-----
+MEcCAQAwBQYDK2VxBDsEOdg2oaYSiyV6huuKspNKcd9Et56+WQlhWEPSP4AEWXs3
+iczZa4Qmrrl1PLdt60vJ2DaUXmNEe39L4A==
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-ca-key-rsa.pem b/crypto/test/data/tls/x509-ca-key-rsa.pem
new file mode 100644
index 000000000..9b51726a1
--- /dev/null
+++ b/crypto/test/data/tls/x509-ca-key-rsa.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDjLlJpiydqUOH2
+IxH7iI9dUzJxvHaknGqXP8lPcxwg5+Q0CRjmv1+Y2KCV+JNj215OW23JNnGguCe/
+xlkboBnOCnDlSLQJp8W1cyarabHUa1VL086nL2kmTRxIElj+91ppQAl+sSB0cgba
+/j8KYoO93mZDlXBjrG7FpYn31UNH9H8/wBrGIeSFgTZSHwTlsDhAQyWr5bGK1RgM
+NTLl8ZJ8m7I1xUashTTxOkoXd1t3rXqPhTr0LMqKZl+hXD/hDmhUMUkO8kfsTbK3
+gssYuNIT37MDuk4oTfYS3VbdwvjhwycNsEdsTPksLFvB7uIxIttbmpEJfOOs/l3Y
+FaPg9793AgMBAAECggEBANR2XtacMFmKmTijZc7y0Pk7tKKP2flq23jmS7QE+FqB
+5HcRxvsOIS6F8fEvz1AFObZYZV1XkH75mxsMOgvO+DMsqpaUHuQkxo9CyPhoWcpK
+MzQ+Ozc57MHIPdndZuPUmvZx0C9vIeYlOeoW+wgQSBsK4mL0YG6nNdWcUmK4TTr9
+V62ZvqDYoZjtTsAoLkUVJAgByN3XNzc70RQKN5OyCC8iib0JpLEeLdOkGgxWE7/n
+KNLZ/9tbK9O4Mn3BWwZsTt8Hve0m/G9CbjlriEz9PYRBEg+JP6FmQIB5l0mjyRMQ
+F5uRqiZt6r1uUGwUifNDOqNyJzSolj32u+OG3m8/6qkCgYEA+Tof5Wtuq9Oc5zCF
+oVzm3cT1DZy3kJdGZWlMekLC9NMXhnA2huuNkln8Ph2qRx5pxmomRvX8ThaHNUdg
+IRjzUomTQ0IWPkn+7TT6CmeSIEOoT4Tyw/xVvBHKm/yHKxHsCkcSIzt1cXS1SGU7
+Dfsy2C+FBjkcW6UBHkNKUMxce/0CgYEA6VrShFfora0fUOibaas/YG7XnqQzFyvw
+mcBpqAbUXTneFdyssZDyfmQpE44KCywfPczz+34zIRkjnBX6mLyWx5rINE0KpOBK
+uwS2ob1g6J1x6I6btBzIhhgR+Zj9zxhD5f+jYmmBCU3yTvWMXL4c5YsaWvlG8doq
+bNo40cQykYMCgYEAmK8pV03n8VClMWWimGbn8Tl2v64hL23d7McD2WsJMSAZq30X
+irTIeL60MAHQjd1uA+aIKLUOq3BVySg/FkfI2en61BuqsOJ4US5BeRpWhXmtpXnX
+mIYAqEVmEQY2cQZ7yxgbXoZQvv83CHEsKraYQaVrI5Ldcq+17apf3vw0NKkCgYBH
+u6WPDT73dIp14qszlnLLAAfEOpGCA/3YJa/U+RR6+/jrG4TyqK4CcGO4ISexO4T3
+CHPP0YGCISozJwZ7wS1QeqIkgbJN8KzIRLCnk4GgwBVt+bifa2Gw5uFPqtoKuVjV
+8PmWnPwPkih0YUMel0pmvZYCdTJ70ibMg2CICxnIZQKBgQC7aMgcL5ORB/8fgOdy
+g0at1fmz5kKKbv0Z9cmk7trKW67NDM5kwVyFdUuc5Vp7alkRyW4SZPtwpOG+d5Xt
+M0DM77Qvom+sIYq5C5eSHPU6py2Ipn5HZzkHRnAM8qw3OrL6+iFklQUKEBXeqVEq
+6MfsH8P1/RIRfvcOMhPrNEzpTg==
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-ca-key-rsa_pss_256.pem b/crypto/test/data/tls/x509-ca-key-rsa_pss_256.pem
new file mode 100644
index 000000000..9243a1e32
--- /dev/null
+++ b/crypto/test/data/tls/x509-ca-key-rsa_pss_256.pem
@@ -0,0 +1,138 @@
+Public Key Info:
+	Public Key Algorithm: RSA-PSS
+		Hash Algorithm: SHA256
+		Salt Length: 32
+	Key Security Level: Medium (2048 bits)
+
+modulus:
+	00:b7:b4:9a:4d:2d:3f:08:b8:1e:55:d6:b0:b2:b7:d0
+	33:cc:bb:de:56:24:04:1d:73:ac:6a:32:db:af:26:4f
+	ef:b1:d6:10:90:79:dc:89:ac:60:e3:94:54:19:04:54
+	17:ea:18:0e:d9:46:be:60:9f:e6:33:ff:6e:60:6a:35
+	c6:2d:dd:06:82:d5:80:c9:88:07:2f:27:4b:04:13:ba
+	4b:69:92:ce:bc:00:be:42:2c:e2:35:8d:60:11:66:3c
+	24:f8:3a:13:ad:49:e7:12:ca:c6:2a:52:84:ed:3d:7d
+	1e:06:de:a4:64:d6:17:14:b1:19:63:a0:e1:7c:49:d3
+	41:73:29:f8:b5:75:e0:93:fa:e3:df:3b:82:77:5e:83
+	cb:da:52:26:eb:c3:20:13:11:6d:e9:aa:a5:d7:b6:c3
+	a1:a5:04:fa:6e:ee:4f:39:52:4d:18:f9:ab:87:4a:4e
+	d9:34:a7:c4:df:f5:1b:b6:57:71:7f:c3:c8:4f:2c:00
+	c0:6e:e8:74:35:e2:71:1f:ef:c6:c1:62:7a:65:e7:c9
+	c7:42:14:5f:16:c1:ab:4d:32:e5:e2:7c:38:a2:21:02
+	69:a3:81:f4:c8:78:48:58:0a:5d:99:85:f5:e6:2a:37
+	be:23:e5:ff:15:ba:39:42:ac:9d:d0:11:7e:e4:2b:55
+	db:
+
+public exponent:
+	01:00:01:
+
+private exponent:
+	00:9a:2e:3e:02:e0:22:b3:52:b4:43:1e:f9:16:46:27
+	bc:11:ec:eb:62:28:c0:3b:67:c6:21:2b:a6:2d:8e:5e
+	30:b2:75:13:59:ee:ad:25:ef:43:32:3e:5f:86:cf:97
+	34:ab:08:9e:0d:c5:ce:2a:92:89:46:c2:ef:04:84:9f
+	b5:40:f0:ec:72:0a:77:18:ad:ce:39:c9:24:b0:bb:4d
+	f3:d5:1b:9d:df:34:50:7a:81:e9:29:41:0a:8c:0f:de
+	12:b9:33:25:28:9f:8a:0c:bf:9b:2a:12:2f:f6:5d:51
+	11:4e:7a:b6:46:db:58:6b:c9:67:a1:b2:79:0d:33:78
+	d5:5d:69:38:91:d9:f0:37:28:da:67:56:96:dd:77:d4
+	f0:cd:33:9a:a3:7d:cc:6a:5c:44:c1:bd:e3:d3:34:71
+	70:b1:ed:67:56:cc:02:28:3b:e2:2b:6d:d0:eb:69:9b
+	e5:d9:27:e8:fc:2a:03:14:e1:f7:76:3f:b7:a7:87:1c
+	78:84:9e:17:60:71:84:b7:67:83:c5:41:27:40:18:96
+	3c:c5:13:9f:ff:fd:3f:ac:30:cd:e5:f7:b5:cb:ac:16
+	39:85:05:c1:59:46:ce:df:e8:67:9a:a2:56:88:73:a8
+	34:23:b2:54:2d:18:2c:c9:16:0c:d0:f6:46:55:9f:2a
+	01:
+
+prime1:
+	00:e1:11:b3:58:64:b9:77:3c:b9:f2:95:df:bb:0b:66
+	f6:81:31:03:22:cb:eb:5a:a9:38:63:31:ff:f2:75:46
+	9a:dd:be:a7:d0:d4:c8:30:18:bf:6f:bf:c0:01:ba:27
+	0e:34:b2:7f:75:f0:aa:05:69:71:68:03:41:9b:47:5b
+	6a:7b:89:ef:f4:e0:84:c0:01:67:5c:46:c6:29:40:3d
+	55:15:48:d6:19:e9:22:d2:fd:88:1d:f6:cd:7e:9c:04
+	c6:b0:d7:3d:1d:ea:42:44:8c:10:a8:6c:8a:d2:70:6d
+	b6:fb:9b:1f:ce:d9:ec:3e:1a:3f:ee:02:17:e3:37:74
+	9b:
+
+prime2:
+	00:d0:f3:a9:3a:80:a3:ac:1f:e9:d8:29:f4:2f:1a:7c
+	d6:61:77:c8:82:cb:fa:64:a0:ce:ef:ec:5c:e9:97:a0
+	1d:28:a6:49:5d:34:59:92:96:c1:b2:c2:14:f5:02:a2
+	2e:b9:ab:df:a7:79:e6:b3:fa:5c:3e:bd:50:b2:e4:c1
+	ee:d3:b5:5d:38:a4:f6:d0:81:8a:e1:5a:45:da:19:06
+	a3:fa:6a:84:8f:04:f4:56:2a:00:13:2b:76:8d:c1:c8
+	d4:eb:42:c0:02:d5:c5:b4:83:7f:36:32:27:93:fc:49
+	11:f4:a3:4d:7d:bd:03:61:e7:40:28:15:10:ad:8f:97
+	c1:
+
+coefficient:
+	00:d6:d9:e8:05:2e:4f:3c:27:59:e4:3a:5a:1a:15:59
+	0c:b7:fd:fa:23:ad:c1:64:07:e4:22:ae:35:9b:ac:e8
+	95:34:46:be:38:ba:99:07:4b:52:0f:f2:f9:cd:32:e7
+	99:2d:66:15:f1:f3:51:b5:4e:4a:d5:49:8f:a3:97:43
+	ad:60:31:c7:c7:a7:4a:e0:2f:07:fe:40:24:22:5a:4e
+	76:ee:ef:df:95:85:e4:5a:81:7a:ab:61:e9:da:51:7e
+	2f:dd:d7:83:46:b2:76:13:ef:18:3a:64:45:31:e1:4f
+	af:6e:f0:6e:34:d2:cf:59:e3:ee:88:f2:22:1e:c8:06
+	f6:
+
+exp1:
+	00:96:25:00:c7:cf:2a:0a:e9:70:02:ed:08:bb:f6:f7
+	51:2b:0e:4f:51:3f:48:5a:ca:d8:db:13:d7:f3:1f:59
+	62:a6:db:31:88:96:ea:95:6b:6d:0a:57:98:f7:8d:ff
+	cf:f2:47:c1:d0:24:24:c8:47:77:68:34:03:e8:5a:ca
+	19:57:20:c5:fb:4e:6c:40:ca:ae:f1:58:25:8a:0f:58
+	db:11:bf:ed:54:8b:ba:b7:96:7a:df:c2:6d:84:31:00
+	de:ab:ca:6a:f3:31:fb:d3:4e:bd:2e:1e:7a:dd:b8:32
+	f9:07:10:8d:3f:a9:11:78:bc:7a:39:85:1b:fa:70:5c
+	51:
+
+exp2:
+	42:c5:ca:cb:8e:36:3f:98:07:33:73:dc:bb:7c:bc:6e
+	09:c1:ac:8a:d7:c2:51:8b:ed:f5:4f:d4:35:35:a6:0e
+	0b:62:70:49:5f:a4:4c:2a:ef:05:3f:ee:50:89:a1:e8
+	4a:9f:39:1e:9c:de:f3:9e:cb:01:a5:9f:f7:3b:11:1a
+	4f:ff:42:26:0a:d9:70:b2:24:fe:74:c9:a3:b3:a1:a2
+	9f:30:90:e1:df:54:71:80:84:7b:9b:c5:0b:f1:e4:4a
+	de:4f:7b:6a:ac:83:bc:76:d5:1d:2d:93:e6:3f:95:de
+	2e:0e:4d:82:23:f7:c3:be:91:8a:fd:88:51:de:74:41
+	
+
+
+Public Key PIN:
+	pin-sha256:O4J2O7fbEdphitrCWZG7Jyi8t5S4daRsB8YQZknFYWk=
+Public Key ID:
+	sha256:3b82763bb7db11da618adac25991bb2728bcb794b875a46c07c6106649c56169
+	sha1:211a88b6de03c00180aadb708899a68f17ceaa6c
+
+-----BEGIN PRIVATE KEY-----
+MIIE7wIBADA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3
+DQEBCDALBglghkgBZQMEAgGiAwIBIASCBKkwggSlAgEAAoIBAQC3tJpNLT8IuB5V
+1rCyt9AzzLveViQEHXOsajLbryZP77HWEJB53ImsYOOUVBkEVBfqGA7ZRr5gn+Yz
+/25gajXGLd0GgtWAyYgHLydLBBO6S2mSzrwAvkIs4jWNYBFmPCT4OhOtSecSysYq
+UoTtPX0eBt6kZNYXFLEZY6DhfEnTQXMp+LV14JP64987gndeg8vaUibrwyATEW3p
+qqXXtsOhpQT6bu5POVJNGPmrh0pO2TSnxN/1G7ZXcX/DyE8sAMBu6HQ14nEf78bB
+Ynpl58nHQhRfFsGrTTLl4nw4oiECaaOB9Mh4SFgKXZmF9eYqN74j5f8VujlCrJ3Q
+EX7kK1XbAgMBAAECggEBAJouPgLgIrNStEMe+RZGJ7wR7OtiKMA7Z8YhK6Ytjl4w
+snUTWe6tJe9DMj5fhs+XNKsIng3FziqSiUbC7wSEn7VA8OxyCncYrc45ySSwu03z
+1Rud3zRQeoHpKUEKjA/eErkzJSifigy/myoSL/ZdURFOerZG21hryWehsnkNM3jV
+XWk4kdnwNyjaZ1aW3XfU8M0zmqN9zGpcRMG949M0cXCx7WdWzAIoO+IrbdDraZvl
+2Sfo/CoDFOH3dj+3p4cceISeF2BxhLdng8VBJ0AYljzFE5///T+sMM3l97XLrBY5
+hQXBWUbO3+hnmqJWiHOoNCOyVC0YLMkWDND2RlWfKgECgYEA4RGzWGS5dzy58pXf
+uwtm9oExAyLL61qpOGMx//J1RprdvqfQ1MgwGL9vv8ABuicONLJ/dfCqBWlxaANB
+m0dbanuJ7/TghMABZ1xGxilAPVUVSNYZ6SLS/Ygd9s1+nATGsNc9HepCRIwQqGyK
+0nBttvubH87Z7D4aP+4CF+M3dJsCgYEA0POpOoCjrB/p2Cn0Lxp81mF3yILL+mSg
+zu/sXOmXoB0opkldNFmSlsGywhT1AqIuuavfp3nms/pcPr1QsuTB7tO1XTik9tCB
+iuFaRdoZBqP6aoSPBPRWKgATK3aNwcjU60LAAtXFtIN/NjInk/xJEfSjTX29A2Hn
+QCgVEK2Pl8ECgYEAliUAx88qCulwAu0Iu/b3USsOT1E/SFrK2NsT1/MfWWKm2zGI
+luqVa20KV5j3jf/P8kfB0CQkyEd3aDQD6FrKGVcgxftObEDKrvFYJYoPWNsRv+1U
+i7q3lnrfwm2EMQDeq8pq8zH70069Lh563bgy+QcQjT+pEXi8ejmFG/pwXFECgYBC
+xcrLjjY/mAczc9y7fLxuCcGsitfCUYvt9U/UNTWmDgticElfpEwq7wU/7lCJoehK
+nzkenN7znssBpZ/3OxEaT/9CJgrZcLIk/nTJo7Ohop8wkOHfVHGAhHubxQvx5Ere
+T3tqrIO8dtUdLZPmP5XeLg5NgiP3w76Riv2IUd50QQKBgQDW2egFLk88J1nkOloa
+FVkMt/36I63BZAfkIq41m6zolTRGvji6mQdLUg/y+c0y55ktZhXx81G1TkrVSY+j
+l0OtYDHHx6dK4C8H/kAkIlpOdu7v35WF5FqBeqth6dpRfi/d14NGsnYT7xg6ZEUx
+4U+vbvBuNNLPWePuiPIiHsgG9g==
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-ca-key-rsa_pss_384.pem b/crypto/test/data/tls/x509-ca-key-rsa_pss_384.pem
new file mode 100644
index 000000000..b83a1059c
--- /dev/null
+++ b/crypto/test/data/tls/x509-ca-key-rsa_pss_384.pem
@@ -0,0 +1,138 @@
+Public Key Info:
+	Public Key Algorithm: RSA-PSS
+		Hash Algorithm: SHA384
+		Salt Length: 48
+	Key Security Level: Medium (2048 bits)
+
+modulus:
+	00:ee:6d:c0:c9:44:dd:94:f8:40:af:9a:f4:43:3e:78
+	45:61:5f:6a:15:23:42:f4:f8:a0:c2:eb:6a:0a:ae:0c
+	43:a7:dc:e9:ac:ce:42:c4:c8:f5:4c:de:6c:52:4b:e5
+	d3:2b:42:b8:f9:e5:5c:5f:5c:53:2f:0f:f7:f5:3d:04
+	ed:2b:50:c9:ab:6b:74:2d:4b:42:71:57:7a:04:83:38
+	97:fa:5b:22:4a:14:d2:0d:dd:5c:66:c9:25:7d:e3:ff
+	05:84:02:ea:3c:82:97:45:0f:7c:b3:71:8e:7f:31:8d
+	b5:eb:5e:b6:0d:91:9b:5d:51:bc:f7:e2:81:a2:5f:46
+	35:cf:9e:64:c4:3c:65:63:f6:ff:15:b0:e7:11:49:fa
+	c1:cc:d9:54:9b:f8:13:3d:95:ce:f4:7f:58:66:23:cd
+	bc:11:af:e1:3f:af:d8:5e:16:85:cd:7d:b7:7f:59:fa
+	ff:29:e6:ef:4f:6e:6b:ef:b0:91:ef:81:63:6f:b2:0c
+	2b:47:a6:21:f7:1f:4b:fb:1d:e7:6f:f8:6f:0e:6a:8f
+	8a:54:5f:4b:a2:6d:36:20:bb:ba:11:87:06:f3:8d:95
+	6a:10:b7:27:8e:1d:02:b4:ce:1e:c2:09:73:c4:b6:5d
+	c7:5f:e2:26:bd:4f:cd:7a:b0:c5:c0:d6:82:1f:d4:2e
+	59:
+
+public exponent:
+	01:00:01:
+
+private exponent:
+	6a:cf:72:10:f8:2f:c7:9f:9a:e2:d0:28:e2:c2:e6:80
+	36:49:d7:2d:16:f9:d4:e2:58:aa:59:69:cc:d5:01:9b
+	81:64:9e:ae:12:4c:a8:f9:59:a2:90:f5:b7:bc:56:7d
+	ce:20:7a:db:40:1b:ac:80:a0:a7:31:a1:24:14:ac:d3
+	4e:97:47:70:ea:97:45:ff:34:09:b0:65:72:06:12:e1
+	4a:7f:6f:11:fe:d7:c6:ec:46:8b:a9:4a:89:66:0d:05
+	bc:88:cd:c4:43:c0:5e:68:bc:b5:6a:86:aa:86:59:74
+	88:b7:8a:18:f4:04:c4:be:6c:48:24:09:6c:e2:ff:81
+	18:5f:a8:85:db:79:b0:14:66:1c:fb:f7:8f:a8:29:79
+	83:79:aa:65:45:05:5a:0f:03:30:e5:75:43:23:23:e1
+	eb:09:5d:e6:be:0a:10:bd:34:4a:02:d5:60:f6:51:90
+	30:b5:2d:95:37:0e:aa:fb:8e:f3:4f:b4:2f:54:a4:c1
+	8c:a8:5a:46:0c:85:f0:d5:94:d0:ee:71:a2:c6:d7:b0
+	de:81:04:66:43:4c:10:ba:ba:ec:91:57:93:bd:74:4f
+	d4:ea:96:3b:53:a1:0c:0f:be:7d:70:9c:c2:ae:b2:13
+	4b:2b:c3:c9:8a:56:12:a0:ab:55:e4:4e:90:df:0c:01
+	
+
+prime1:
+	00:f8:f5:75:8a:5e:fb:0f:2a:09:42:dc:eb:1e:0d:c9
+	97:6f:30:c9:55:28:af:15:4e:4a:db:9e:cd:17:6a:7f
+	d1:be:1e:53:2b:79:d9:83:de:96:c9:9b:1f:7e:93:ce
+	02:f3:fb:9d:56:a2:19:cf:f2:d0:f2:3b:80:5f:b5:7b
+	cb:df:d6:26:fb:e8:ba:2b:db:e5:c1:47:98:1d:2e:57
+	5d:26:19:72:2f:48:77:00:1d:8d:72:f6:48:68:97:62
+	0f:5d:30:e0:95:a4:00:34:e4:77:b9:47:81:30:63:48
+	29:64:a0:2f:4f:c0:42:4b:bb:a2:60:7b:ba:e4:79:6b
+	81:
+
+prime2:
+	00:f5:2c:0d:7a:8c:17:59:ac:95:20:ca:29:3e:45:23
+	23:6f:25:fe:a3:56:df:23:74:47:cd:38:47:a3:4d:06
+	0e:66:7a:9f:74:cc:86:3e:86:e3:c8:4b:45:09:93:2b
+	81:d3:fc:56:a2:29:b3:52:4d:f1:45:69:e2:d3:a3:b1
+	4e:1a:25:bd:1a:6c:2b:57:8a:93:11:b9:e9:6d:11:43
+	2c:aa:22:e9:20:10:bf:e4:fe:a6:c5:30:ec:42:5a:5c
+	d9:3d:1d:e9:18:7e:10:5b:9d:59:cd:7f:7e:51:5c:c8
+	65:63:8b:4a:54:e8:c1:fa:5c:e9:36:23:20:20:87:0e
+	d9:
+
+coefficient:
+	00:9f:a9:37:76:c0:24:33:8e:18:92:c5:4c:1e:05:fd
+	82:39:d9:40:4d:15:95:7e:92:59:44:1a:99:81:4b:0f
+	16:e0:16:99:23:45:91:04:76:f0:98:d7:f5:92:e4:af
+	39:3b:6f:49:0b:8f:22:02:aa:3a:da:72:04:9c:a4:cb
+	11:1a:44:f4:47:19:ed:a0:9c:94:58:06:cd:ca:b1:ff
+	48:7f:bf:2e:23:66:63:0e:cd:0b:a5:43:ee:23:75:32
+	d5:93:08:23:51:e3:9e:d2:82:be:9b:c4:6d:53:a9:50
+	66:74:af:11:dd:f2:d5:a6:9f:6e:ca:11:ac:6d:a6:ca
+	0b:
+
+exp1:
+	00:ba:47:87:9c:72:77:2e:20:88:ef:73:b7:a5:34:31
+	cb:d2:91:d1:83:9b:be:6d:95:b8:63:5e:0e:1d:60:3d
+	a5:a5:b8:b1:08:8d:d2:d8:5d:db:bb:9c:0b:53:bd:aa
+	5f:01:4a:1a:af:30:f9:59:64:59:3d:76:92:16:8b:07
+	c7:43:83:cc:85:9e:dc:76:66:c2:21:fd:bc:ee:d0:b6
+	e3:e6:d7:11:5e:19:bd:98:e3:83:ec:2a:25:81:c5:0b
+	c5:6d:38:5e:42:f9:84:82:0f:15:1a:18:4b:ac:f6:0c
+	8f:94:50:5b:36:34:28:26:dc:8d:a1:dd:d2:b8:93:b5
+	81:
+
+exp2:
+	5c:07:25:28:12:dd:d0:f3:4f:26:f7:bb:73:7c:50:2c
+	44:d4:66:38:b9:ab:18:8b:d5:47:db:10:48:e3:e8:9a
+	0f:2d:88:1d:37:88:4c:80:25:90:51:70:a0:9f:75:7d
+	4e:2d:31:f7:bc:df:6a:cd:86:fb:1f:3b:dd:65:5c:70
+	8c:b0:0d:c3:95:46:cf:9d:5c:87:12:d9:e3:ee:ce:e0
+	3d:1c:cd:95:13:b4:74:28:82:41:12:94:1c:73:fe:d6
+	2c:72:c5:c4:43:cd:b0:15:e8:57:92:bb:bf:9e:ac:3a
+	22:9b:6e:53:60:eb:2f:27:21:03:09:3c:4d:f9:64:41
+	
+
+
+Public Key PIN:
+	pin-sha256:wv5nADHzPA1LzmxBzNO9BTLNYGb9g0W8L55XearJ5C8=
+Public Key ID:
+	sha256:c2fe670031f33c0d4bce6c41ccd3bd0532cd6066fd8345bc2f9e5779aac9e42f
+	sha1:a9f05d6f61a0f001e874b25a7ed411431c2a89e7
+
+-----BEGIN PRIVATE KEY-----
+MIIE7gIBADA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAqEaMBgGCSqGSIb3
+DQEBCDALBglghkgBZQMEAgKiAwIBMASCBKgwggSkAgEAAoIBAQDubcDJRN2U+ECv
+mvRDPnhFYV9qFSNC9PigwutqCq4MQ6fc6azOQsTI9UzebFJL5dMrQrj55VxfXFMv
+D/f1PQTtK1DJq2t0LUtCcVd6BIM4l/pbIkoU0g3dXGbJJX3j/wWEAuo8gpdFD3yz
+cY5/MY216162DZGbXVG89+KBol9GNc+eZMQ8ZWP2/xWw5xFJ+sHM2VSb+BM9lc70
+f1hmI828Ea/hP6/YXhaFzX23f1n6/ynm709ua++wke+BY2+yDCtHpiH3H0v7Hedv
++G8Oao+KVF9Lom02ILu6EYcG842VahC3J44dArTOHsIJc8S2Xcdf4ia9T816sMXA
+1oIf1C5ZAgMBAAECggEAas9yEPgvx5+a4tAo4sLmgDZJ1y0W+dTiWKpZaczVAZuB
+ZJ6uEkyo+VmikPW3vFZ9ziB620AbrICgpzGhJBSs006XR3Dql0X/NAmwZXIGEuFK
+f28R/tfG7EaLqUqJZg0FvIjNxEPAXmi8tWqGqoZZdIi3ihj0BMS+bEgkCWzi/4EY
+X6iF23mwFGYc+/ePqCl5g3mqZUUFWg8DMOV1QyMj4esJXea+ChC9NEoC1WD2UZAw
+tS2VNw6q+47zT7QvVKTBjKhaRgyF8NWU0O5xosbXsN6BBGZDTBC6uuyRV5O9dE/U
+6pY7U6EMD759cJzCrrITSyvDyYpWEqCrVeROkN8MAQKBgQD49XWKXvsPKglC3Ose
+DcmXbzDJVSivFU5K257NF2p/0b4eUyt52YPelsmbH36TzgLz+51WohnP8tDyO4Bf
+tXvL39Ym++i6K9vlwUeYHS5XXSYZci9IdwAdjXL2SGiXYg9dMOCVpAA05He5R4Ew
+Y0gpZKAvT8BCS7uiYHu65HlrgQKBgQD1LA16jBdZrJUgyik+RSMjbyX+o1bfI3RH
+zThHo00GDmZ6n3TMhj6G48hLRQmTK4HT/FaiKbNSTfFFaeLTo7FOGiW9GmwrV4qT
+EbnpbRFDLKoi6SAQv+T+psUw7EJaXNk9HekYfhBbnVnNf35RXMhlY4tKVOjB+lzp
+NiMgIIcO2QKBgQC6R4eccncuIIjvc7elNDHL0pHRg5u+bZW4Y14OHWA9paW4sQiN
+0thd27ucC1O9ql8BShqvMPlZZFk9dpIWiwfHQ4PMhZ7cdmbCIf287tC24+bXEV4Z
+vZjjg+wqJYHFC8VtOF5C+YSCDxUaGEus9gyPlFBbNjQoJtyNod3SuJO1gQKBgFwH
+JSgS3dDzTyb3u3N8UCxE1GY4uasYi9VH2xBI4+iaDy2IHTeITIAlkFFwoJ91fU4t
+Mfe832rNhvsfO91lXHCMsA3DlUbPnVyHEtnj7s7gPRzNlRO0dCiCQRKUHHP+1ixy
+xcRDzbAV6FeSu7+erDoim25TYOsvJyEDCTxN+WRBAoGBAJ+pN3bAJDOOGJLFTB4F
+/YI52UBNFZV+kllEGpmBSw8W4BaZI0WRBHbwmNf1kuSvOTtvSQuPIgKqOtpyBJyk
+yxEaRPRHGe2gnJRYBs3Ksf9If78uI2ZjDs0LpUPuI3Uy1ZMII1HjntKCvpvEbVOp
+UGZ0rxHd8tWmn27KEaxtpsoL
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-ca-key-rsa_pss_512.pem b/crypto/test/data/tls/x509-ca-key-rsa_pss_512.pem
new file mode 100644
index 000000000..1bd1bcfc9
--- /dev/null
+++ b/crypto/test/data/tls/x509-ca-key-rsa_pss_512.pem
@@ -0,0 +1,138 @@
+Public Key Info:
+	Public Key Algorithm: RSA-PSS
+		Hash Algorithm: SHA512
+		Salt Length: 64
+	Key Security Level: Medium (2048 bits)
+
+modulus:
+	00:ea:1f:fc:30:5f:ff:19:db:9a:30:46:1b:fa:34:de
+	6b:56:44:ff:a1:06:d1:5c:6a:a7:b9:f8:7d:ac:bc:0f
+	2b:9c:d8:9b:90:2d:31:a0:41:c7:74:73:01:ba:ea:e4
+	c6:9e:bf:9b:41:62:07:54:b4:53:cb:a2:d7:8b:df:3a
+	a4:6d:b6:95:71:32:21:ee:3c:9a:9d:9b:9b:4d:d5:ef
+	d3:70:84:ba:c2:0e:a7:2f:07:aa:29:69:20:46:f8:da
+	87:49:e0:cf:00:d3:c0:26:a0:71:35:00:06:45:56:56
+	8f:93:60:75:42:f5:78:61:ee:ad:fb:d2:38:de:79:2d
+	9b:5b:07:e6:2b:be:b5:a8:a7:95:df:9f:2a:1a:9f:62
+	55:26:35:53:88:33:8c:1c:f9:93:e6:ea:45:39:3c:09
+	7a:e1:4a:41:de:a6:38:fd:56:e4:d5:0d:ee:ff:28:81
+	dc:b0:ca:a9:84:42:5f:7a:68:72:32:1e:05:4f:07:36
+	58:71:76:a4:c8:b3:d2:18:3e:c8:3d:7b:2e:18:44:8c
+	dc:df:b4:53:54:72:ee:78:11:68:94:92:f6:de:41:5b
+	1c:e8:dc:1b:41:fe:8f:b4:7d:8d:59:56:ed:07:96:20
+	bd:0b:18:cb:3f:40:d3:02:62:7a:50:2e:52:66:68:ab
+	a1:
+
+public exponent:
+	01:00:01:
+
+private exponent:
+	33:87:46:a1:fe:fe:ce:5a:1e:dd:71:10:c7:48:cb:8b
+	24:39:9b:69:7d:6e:a6:c0:72:99:e3:af:05:4d:7e:a9
+	42:a4:09:d8:f9:99:6a:84:0f:b9:f9:75:f0:05:b2:c4
+	64:3c:17:97:94:53:b8:b8:d7:98:82:06:9e:aa:4a:e5
+	d5:9f:d1:d4:50:0c:57:ba:ce:ec:d1:4a:a5:1e:e8:e1
+	c8:69:ee:10:b7:d8:e3:e8:f3:f2:99:48:99:56:3c:02
+	7a:a8:17:e7:3e:b3:93:cc:cc:1d:b6:1b:ab:37:0d:66
+	1c:31:a6:9d:4e:19:68:b4:77:66:6d:26:47:10:b4:90
+	88:f9:af:65:d3:16:07:f2:6b:59:6e:ba:03:20:ba:a5
+	80:87:75:ae:92:42:bd:64:e1:5a:48:7b:73:33:c3:70
+	74:cc:14:05:c0:d2:42:01:7f:82:4e:e0:8b:f9:2b:12
+	4d:71:4f:55:86:fd:28:0a:8f:a6:ad:66:32:4b:5e:f3
+	22:58:b1:09:51:1f:77:b5:d8:76:e9:80:ea:25:24:09
+	2d:70:ef:5d:89:20:7d:49:4b:52:c1:26:36:c4:c3:95
+	38:80:ef:6d:15:43:5e:dc:bd:5e:06:56:42:6a:59:00
+	13:e3:99:3f:b1:c0:a6:e3:d5:fc:72:38:d1:ea:0d:61
+	
+
+prime1:
+	00:f1:54:7d:6d:25:84:c2:37:16:bc:18:04:8b:a2:5e
+	09:bd:cc:98:4c:44:ef:8a:9f:b4:6a:72:ac:cf:c8:2f
+	b4:6b:a6:fd:e9:df:6e:98:42:6c:b4:95:b5:72:21:e0
+	21:e9:71:99:c6:8a:66:f5:06:96:35:9f:15:87:46:7a
+	66:cd:3d:ba:1e:96:28:35:ab:fd:07:fd:ab:11:31:50
+	93:a6:6c:67:5e:dd:b6:a9:87:f0:9c:c6:46:cb:7d:83
+	5e:58:c6:16:81:03:64:f5:c6:01:a6:e2:54:7c:be:93
+	65:02:66:89:86:e8:c8:56:bd:cb:d0:bc:7e:df:cb:9c
+	f7:
+
+prime2:
+	00:f8:5b:5f:19:24:20:60:41:4c:86:07:70:c7:2a:7d
+	dd:98:bc:f5:e8:ba:c3:7b:5b:2c:50:b3:fa:be:17:04
+	27:6e:75:3f:61:4f:3d:11:aa:f2:73:6a:f8:2f:da:59
+	65:b8:60:13:74:0e:d1:7e:01:07:d6:7e:fd:fb:f9:ca
+	4f:9c:e9:c5:49:62:a7:99:36:ed:0f:1e:86:cb:e6:d3
+	87:d0:2c:93:3e:d6:b5:59:a6:b4:f3:2d:38:85:dc:ca
+	5c:cd:e1:e9:3e:69:c4:04:25:5e:12:16:86:7f:30:3b
+	84:63:80:78:77:d4:45:dd:f7:f0:cc:d2:b5:7e:53:ce
+	27:
+
+coefficient:
+	54:6b:6a:51:c7:7e:e2:d9:0b:b8:7e:ea:c8:1b:1b:a8
+	97:06:67:87:da:6a:f7:b2:15:7c:ae:91:4a:46:4a:bd
+	79:3b:3a:d7:80:c6:95:2d:e7:92:97:76:cf:24:04:09
+	e3:5c:11:68:77:0a:67:21:5a:82:57:80:d1:66:42:d5
+	a7:03:1a:20:56:90:c2:e6:97:31:21:3e:a0:4f:41:43
+	f8:07:41:92:48:39:ac:1c:8d:c1:a6:0d:be:5d:45:96
+	65:4b:b7:31:0c:c8:2d:f0:72:ca:ba:0e:f0:5a:7c:1a
+	7e:23:20:98:1e:c0:55:72:f2:18:b3:22:de:ec:47:21
+	
+
+exp1:
+	00:90:e0:d8:2b:9e:4a:85:0d:ed:68:1e:43:1c:50:ed
+	83:8b:9e:38:10:11:92:7c:f6:43:a9:64:0e:ba:ee:c3
+	34:dd:2b:f3:63:63:ef:51:19:0f:89:9a:16:c3:dd:f2
+	60:69:74:f9:8c:67:aa:47:8f:1c:be:34:33:08:73:17
+	28:80:2e:7e:7d:be:47:85:71:2b:06:91:13:11:cf:39
+	40:6a:b8:c9:95:fa:24:9e:c2:2d:80:f0:c7:af:82:3a
+	4b:79:9f:f2:02:a1:b7:0a:95:44:88:9b:77:7d:2c:2b
+	f0:87:f0:66:bf:c7:1f:fe:73:12:d8:cd:50:9d:a9:ef
+	21:
+
+exp2:
+	2f:9e:a5:6f:56:a3:f6:90:ce:b1:6c:3f:cd:90:72:2d
+	c9:19:82:35:2b:8a:4b:de:c1:72:7f:ef:f5:fe:c7:c7
+	1f:c0:cf:74:43:13:3c:8e:00:8a:ec:d9:c5:a3:22:3d
+	04:cb:37:2f:ab:9f:b3:7f:53:17:67:a6:1f:68:57:c8
+	48:17:f2:c2:0d:6e:81:4c:2c:cc:17:58:55:44:5f:0e
+	cd:75:9e:8e:0f:f1:19:cd:83:28:95:65:1f:15:a4:9f
+	82:c2:6c:4c:91:4f:0a:54:77:e3:13:fa:99:ec:8f:9c
+	e4:cf:3f:4a:0a:a3:92:d9:f5:8b:f0:62:e8:63:fd:45
+	
+
+
+Public Key PIN:
+	pin-sha256:rS98yeSr3aoarf12o4jbIXeADc53+k2lu/+TB71kG0w=
+Public Key ID:
+	sha256:ad2f7cc9e4abddaa1aadfd76a388db2177800dce77fa4da5bbff9307bd641b4c
+	sha1:a558e1b80dd69fbc34e5e83dd8fa0ca583b1c045
+
+-----BEGIN PRIVATE KEY-----
+MIIE7QIBADA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3
+DQEBCDALBglghkgBZQMEAgOiAwIBQASCBKcwggSjAgEAAoIBAQDqH/wwX/8Z25ow
+Rhv6NN5rVkT/oQbRXGqnufh9rLwPK5zYm5AtMaBBx3RzAbrq5Maev5tBYgdUtFPL
+oteL3zqkbbaVcTIh7jyanZubTdXv03CEusIOpy8HqilpIEb42odJ4M8A08AmoHE1
+AAZFVlaPk2B1QvV4Ye6t+9I43nktm1sH5iu+tainld+fKhqfYlUmNVOIM4wc+ZPm
+6kU5PAl64UpB3qY4/Vbk1Q3u/yiB3LDKqYRCX3pocjIeBU8HNlhxdqTIs9IYPsg9
+ey4YRIzc37RTVHLueBFolJL23kFbHOjcG0H+j7R9jVlW7QeWIL0LGMs/QNMCYnpQ
+LlJmaKuhAgMBAAECggEAM4dGof7+zloe3XEQx0jLiyQ5m2l9bqbAcpnjrwVNfqlC
+pAnY+ZlqhA+5+XXwBbLEZDwXl5RTuLjXmIIGnqpK5dWf0dRQDFe6zuzRSqUe6OHI
+ae4Qt9jj6PPymUiZVjwCeqgX5z6zk8zMHbYbqzcNZhwxpp1OGWi0d2ZtJkcQtJCI
++a9l0xYH8mtZbroDILqlgId1rpJCvWThWkh7czPDcHTMFAXA0kIBf4JO4Iv5KxJN
+cU9Vhv0oCo+mrWYyS17zIlixCVEfd7XYdumA6iUkCS1w712JIH1JS1LBJjbEw5U4
+gO9tFUNe3L1eBlZCalkAE+OZP7HApuPV/HI40eoNYQKBgQDxVH1tJYTCNxa8GASL
+ol4JvcyYTETvip+0anKsz8gvtGum/enfbphCbLSVtXIh4CHpcZnGimb1BpY1nxWH
+RnpmzT26HpYoNav9B/2rETFQk6ZsZ17dtqmH8JzGRst9g15YxhaBA2T1xgGm4lR8
+vpNlAmaJhujIVr3L0Lx+38uc9wKBgQD4W18ZJCBgQUyGB3DHKn3dmLz16LrDe1ss
+ULP6vhcEJ251P2FPPRGq8nNq+C/aWWW4YBN0DtF+AQfWfv37+cpPnOnFSWKnmTbt
+Dx6Gy+bTh9Askz7WtVmmtPMtOIXcylzN4ek+acQEJV4SFoZ/MDuEY4B4d9RF3ffw
+zNK1flPOJwKBgQCQ4NgrnkqFDe1oHkMcUO2Di544EBGSfPZDqWQOuu7DNN0r82Nj
+71EZD4maFsPd8mBpdPmMZ6pHjxy+NDMIcxcogC5+fb5HhXErBpETEc85QGq4yZX6
+JJ7CLYDwx6+COkt5n/ICobcKlUSIm3d9LCvwh/Bmv8cf/nMS2M1QnanvIQKBgC+e
+pW9Wo/aQzrFsP82Qci3JGYI1K4pL3sFyf+/1/sfHH8DPdEMTPI4AiuzZxaMiPQTL
+Ny+rn7N/Uxdnph9oV8hIF/LCDW6BTCzMF1hVRF8OzXWejg/xGc2DKJVlHxWkn4LC
+bEyRTwpUd+MT+pnsj5zkzz9KCqOS2fWL8GLoY/1FAoGAVGtqUcd+4tkLuH7qyBsb
+qJcGZ4faaveyFXyukUpGSr15OzrXgMaVLeeSl3bPJAQJ41wRaHcKZyFagleA0WZC
+1acDGiBWkMLmlzEhPqBPQUP4B0GSSDmsHI3Bpg2+XUWWZUu3MQzILfByyroO8Fp8
+Gn4jIJgewFVy8hizIt7sRyE=
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-ca-key.pem b/crypto/test/data/tls/x509-ca-key.pem
deleted file mode 100644
index b9144d2ba..000000000
--- a/crypto/test/data/tls/x509-ca-key.pem
+++ /dev/null
@@ -1,32 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIFegIBAAKCATEAzIc3nB+Rux7seSPAeH7Q2CkHwRKRgZRQdmL259ySG7RKZ2N7
-rSaJFhnW02OaF5/GpkkWRT/WSZQQz6wMqKf/1H7idANZ9sA4hR1HDzHNQ4Ou7h+O
-Hxom+fbZzleGtMOMRdfBVYDx/vtlcv2WP1Y0gCHzHVN5854dae+OHbBI06o+HriY
-3MvQgr6VuwNItGbl87ZJDWb3FZ7JAq77hyrIQGaD6HbSFtRuunr2UAhkCCRy8gEg
-In0BXtXPFZSfFOGec0HiXtug4zEReSK2CVpeNyBWKw3xQuMfvRJ1SnRNoPeQ/Zk5
-FgMF/P8uXlszwY+7mri3XN+gj3yXJ+kNLIRsTG5/jo9v5qxfHKvYVwXtHLkSx/Be
-5OsBsc1c8eMIszMrAiiaF2FZxMPQD97kmalzQwIDAQABAoIBMCCrbJ+R5LD+Cd8j
-wye8IgHqiTmMN2p6VWFDrOrGWcmhF81sn6G907c7CLdFY/oSuc7FQpBsglRzGT2t
-iWwbQbXLUBggkkCO3bhYP98ry6eAI54Xs5eWPCmWBkkmbqGgfAnf98V/o6gLYgi8
-fEEWX6vOlcsrvVbDp9vMZGgA85u+cs5sxXC8rEwQw1FW/0hfCKt62i+7hbY8bgCK
-AuWV3y4B8gLxMNybvTKzeUcVhG2Bs8ZzdfP9auVILEsp6CjoqlW1QPsOJ6cJSVek
-3P7k8UyY++IpajMJZ0RxD5+MgqNvrU+F9fdk0W+z8ZW/FFncmtBS/xLAxg9lCicR
-qoiRGy4y/t8vKqtbMmqgev2JxSYYbE7AXD0Pp51hTRKAFASo6VdPh2/LBdXEU3uw
-4cXszskCgZkA3rdK8gg8/wMXjznff/Z3a6K0c5KPGGd+SK/Q4KwND6C0ca9JouVv
-PZ4qbqT++Ye1a5R3S5BSwCx13pNVmVicQQ4xQTCedaaTyhcNu3sClrK5uM4F1G7g
-p5RmUFPZFWODrFpqF39wwjGaUY229+JDI++c3hUfoSNQkLqKwwu0Z4aH/0UIDMy2
-5AbX4/QMvOdosTPDDBa/9rcCgZkA6xgXtiGl4PJ7bBCAtpEZ436qFjJOnhrBoxoP
-iK9wtp5alTrGYj9a0omia2Eg+JVDR2CkSsb5/98phaR0JY9dLFrk60a02YUhQAL8
-unkD0mBBRTuKejl/I31t2OTzUZOqfm7ggL6Jwy4BUkPmQbcKJg9CRs7vjF3lGmBd
-EPGQi+Dj1FnBMBnqWQ5zP2kjMNQ0uHWaHlWTO9UCgZgBnTx60pp2krQqApZfHA8z
-hYNfTxGgcKeWqUePSU/y7AxCwq1688TBopLWKHX8owIqnHHc51fiMrBMA69cJCtF
-wW+T9GFBowpxLYeY80RKiVMVRtD+ACu6qzWuoVzybb03k5QvRWowziE7NBa+ZzJr
-YUI2zdpj1Ziw49k7nqsZEP2NWRe82AL/VhlceplZCShWGHTycnvDswKBmCNkKx2m
-DxzAJEhua5IQYf9XcC+LPz6Z9JCjObdwAd3cFPLmODtOIlQTmDnmE1qYzdoO+Gyx
-a61TYSLXUQzeej5VKKUqrcsZOZozWOyRjzu6ddkAT6Z6xWMIXOMMBH1BZ6dE9dMr
-2/1gDZ7ezekSrxpvraCPQoy1Depcm2YTl5kXL/Ul1elx3U+u1zaykzOknpMuURdD
-9rhJAoGYX90aFh+SHKIc0nLBPCZA1dvvB6Nvwvynyr6pHDYFNZvsNBAqYQpLYgdY
-QRiGIHeUJgdDfuQADaTQy0t7fWuWE1orvK9ywrdXCo9KlstMmSInZ5LlF54wtgpw
-ivt7YjT1ewzxBJz67NdDVDLrOAo32ZTJ/iKUHoqXZGcCCWAtENzv9vRvcSJLIMYt
-bUtLF3QhyUCj7/ASc+Q=
------END RSA PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-ca-rsa.pem b/crypto/test/data/tls/x509-ca-rsa.pem
new file mode 100644
index 000000000..ffda4f2e4
--- /dev/null
+++ b/crypto/test/data/tls/x509-ca-rsa.pem
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDDzCCAfegAwIBAgIMWYGU7zoymvg+Z63iMA0GCSqGSIb3DQEBCwUAMCMxITAf
+BgNVBAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBDQTAeFw0xNzA4MDIwOTAxMzVa
+Fw0zNzA3MjkwOTAxMzVaMCMxITAfBgNVBAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVz
+dCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOMuUmmLJ2pQ4fYj
+EfuIj11TMnG8dqScapc/yU9zHCDn5DQJGOa/X5jYoJX4k2PbXk5bbck2caC4J7/G
+WRugGc4KcOVItAmnxbVzJqtpsdRrVUvTzqcvaSZNHEgSWP73WmlACX6xIHRyBtr+
+Pwpig73eZkOVcGOsbsWliffVQ0f0fz/AGsYh5IWBNlIfBOWwOEBDJavlsYrVGAw1
+MuXxknybsjXFRqyFNPE6Shd3W3eteo+FOvQsyopmX6FcP+EOaFQxSQ7yR+xNsreC
+yxi40hPfswO6TihN9hLdVt3C+OHDJw2wR2xM+SwsW8Hu4jEi21uakQl846z+XdgV
+o+D3v3cCAwEAAaNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwQA
+MB0GA1UdDgQWBBQrQlWadXqqzBV+2iw7BZXrvFHaQjANBgkqhkiG9w0BAQsFAAOC
+AQEArUVXn2oI5hgSkDwDrhQFijHBT3d37SX0eji//lkLPTHSEXHv+6kAoxVKmSnG
+hAAxuLKxtAjNlXi4FAxSpQPX17/199JHUd/Ue63Tetc8DfaFc6MaFNxWkNrY6LUX
+bEhbI/vB1kBu7sc8SW7N694WSpe/OmD/lB6GYW6ZV68hrTB0gfmfB6SfcGbQ69ss
+YUsNU7Yo1GZnJTz0FZzybjx/T85NnVvpfVqjjaGRFeSva9GAU+5uO5DdbSpbkCcw
+6QFFfvcJ7VD6qFqtLG1TfcdOuCaUB8cmDhDtTB/Ax96wGdJvp6ca3YaboZag9HOZ
+4csuzHIJQyd5HT6xLbUBeskgWw==
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-ca-rsa_pss_256.pem b/crypto/test/data/tls/x509-ca-rsa_pss_256.pem
new file mode 100644
index 000000000..0e5966a77
--- /dev/null
+++ b/crypto/test/data/tls/x509-ca-rsa_pss_256.pem
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDpzCCAl+gAwIBAgIUIyISxx5PRQREJEmN08CNp74twmcwPQYJKoZIhvcNAQEK
+MDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMC
+ASAwIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxlIFRMUyBUZXN0IENBMB4XDTE4MTAy
+NDA2MDY0MloXDTM4MTAyMDA2MDY0MlowIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxl
+IFRMUyBUZXN0IENBMIIBUjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa
+MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIAOCAQ8AMIIBCgKCAQEAt7Sa
+TS0/CLgeVdawsrfQM8y73lYkBB1zrGoy268mT++x1hCQedyJrGDjlFQZBFQX6hgO
+2Ua+YJ/mM/9uYGo1xi3dBoLVgMmIBy8nSwQTuktpks68AL5CLOI1jWARZjwk+DoT
+rUnnEsrGKlKE7T19HgbepGTWFxSxGWOg4XxJ00FzKfi1deCT+uPfO4J3XoPL2lIm
+68MgExFt6aql17bDoaUE+m7uTzlSTRj5q4dKTtk0p8Tf9Ru2V3F/w8hPLADAbuh0
+NeJxH+/GwWJ6ZefJx0IUXxbBq00y5eJ8OKIhAmmjgfTIeEhYCl2ZhfXmKje+I+X/
+Fbo5Qqyd0BF+5CtV2wIDAQABo0MwQTAPBgNVHRMBAf8EBTADAQH/MA8GA1UdDwEB
+/wQFAwMHBAAwHQYDVR0OBBYEFCEaiLbeA8ABgKrbcIiZpo8XzqpsMD0GCSqGSIb3
+DQEBCjAwoA0wCwYJYIZIAWUDBAIBoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFlAwQC
+AaIDAgEgA4IBAQCpl2XsRpIAR5cD0YRWOg2hNg1+oMNAj1wtuBOiaD84doN07sFl
+ta3lnweoA1rZZNLtAOUu5Fs7FwetzhuA5+iHVRAU8qqoSojP5fZgTriOFK/7rEUu
+ZTxL1IzXEuiQO2iCkTXslg5HP5QAsYV4iqGe6erSAgzD5tP2mpgQJudUiuvCdWGz
+lgroWjDAklQHIXITCrLgnMieYIbILZXXMZLfIrMfZOPCd7IDPTjb8/k1j3N4Wuld
+qZWSPeNhuUUTKniXy4GVBE1obMDyBRarR4jkeeKdsuYbdf0oSTMK/rcuZMrZfjAR
+uH3sqZ1Ovw4rbYzjk/ET4QlolFnFexgZ5QcH
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-ca-rsa_pss_384.pem b/crypto/test/data/tls/x509-ca-rsa_pss_384.pem
new file mode 100644
index 000000000..5e8bb8900
--- /dev/null
+++ b/crypto/test/data/tls/x509-ca-rsa_pss_384.pem
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDpzCCAl+gAwIBAgIUWplyXkxgG/630tCmc0xgpFKshNYwPQYJKoZIhvcNAQEK
+MDCgDTALBglghkgBZQMEAgKhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAICogMC
+ATAwIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxlIFRMUyBUZXN0IENBMB4XDTE4MTAy
+NDA2MDY0MloXDTM4MTAyMDA2MDY0MlowIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxl
+IFRMUyBUZXN0IENBMIIBUjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAqEa
+MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgKiAwIBMAOCAQ8AMIIBCgKCAQEA7m3A
+yUTdlPhAr5r0Qz54RWFfahUjQvT4oMLragquDEOn3OmszkLEyPVM3mxSS+XTK0K4
++eVcX1xTLw/39T0E7StQyatrdC1LQnFXegSDOJf6WyJKFNIN3VxmySV94/8FhALq
+PIKXRQ98s3GOfzGNtetetg2Rm11RvPfigaJfRjXPnmTEPGVj9v8VsOcRSfrBzNlU
+m/gTPZXO9H9YZiPNvBGv4T+v2F4Whc19t39Z+v8p5u9PbmvvsJHvgWNvsgwrR6Yh
+9x9L+x3nb/hvDmqPilRfS6JtNiC7uhGHBvONlWoQtyeOHQK0zh7CCXPEtl3HX+Im
+vU/NerDFwNaCH9QuWQIDAQABo0MwQTAPBgNVHRMBAf8EBTADAQH/MA8GA1UdDwEB
+/wQFAwMHBAAwHQYDVR0OBBYEFKnwXW9hoPAB6HSyWn7UEUMcKonnMD0GCSqGSIb3
+DQEBCjAwoA0wCwYJYIZIAWUDBAICoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFlAwQC
+AqIDAgEwA4IBAQAwyVTh4HCTN1FnLLY3iUSEWHNqYNCdAmP/qMYDgwZAdS3hRHEt
+9mE0a0/52bYEY9QMol4eGIGKjiXuxZpJKjK2WBgnUvyV7fEDcKy8UqB+ULFGNRxR
+9tR3MRMSFrQl+W6q2ABPwmqvAtJHSiIRA30ZuwxSyX4ulzxThRYnkfp2eSKKHp2x
+J6xUEnN5vnoXvpa1sFccKorPITF0r8OWzIi+GGzHz4Wq0Fqov4TOhnU/u6Xqw0xX
+CXshQ0pN6+XWT0Ea0OuZk1/cKy2nyk+oHSmo/HhKJ8lGc3P2dLgCV9jjbM2WYCHs
+O2rKlDWMxkd1Zx/I0ZzUI3Km+Qb8a+88KOtg
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-ca-rsa_pss_512.pem b/crypto/test/data/tls/x509-ca-rsa_pss_512.pem
new file mode 100644
index 000000000..690d25654
--- /dev/null
+++ b/crypto/test/data/tls/x509-ca-rsa_pss_512.pem
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDpzCCAl+gAwIBAgIUJ6gfVYLgx1UAxuxNNmuo6mUQP/gwPQYJKoZIhvcNAQEK
+MDCgDTALBglghkgBZQMEAgOhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIDogMC
+AUAwIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxlIFRMUyBUZXN0IENBMB4XDTE4MTAy
+NDA2MDY0M1oXDTM4MTAyMDA2MDY0M1owIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxl
+IFRMUyBUZXN0IENBMIIBUjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6Ea
+MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAQ8AMIIBCgKCAQEA6h/8
+MF//GduaMEYb+jTea1ZE/6EG0Vxqp7n4fay8Dyuc2JuQLTGgQcd0cwG66uTGnr+b
+QWIHVLRTy6LXi986pG22lXEyIe48mp2bm03V79NwhLrCDqcvB6opaSBG+NqHSeDP
+ANPAJqBxNQAGRVZWj5NgdUL1eGHurfvSON55LZtbB+YrvrWop5Xfnyoan2JVJjVT
+iDOMHPmT5upFOTwJeuFKQd6mOP1W5NUN7v8ogdywyqmEQl96aHIyHgVPBzZYcXak
+yLPSGD7IPXsuGESM3N+0U1Ry7ngRaJSS9t5BWxzo3BtB/o+0fY1ZVu0HliC9CxjL
+P0DTAmJ6UC5SZmiroQIDAQABo0MwQTAPBgNVHRMBAf8EBTADAQH/MA8GA1UdDwEB
+/wQFAwMHBAAwHQYDVR0OBBYEFKVY4bgN1p+8NOXoPdj6DKWDscBFMD0GCSqGSIb3
+DQEBCjAwoA0wCwYJYIZIAWUDBAIDoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFlAwQC
+A6IDAgFAA4IBAQAIi+3zyTk8NR5w5a109GHz4wpACxafirJkr6wkAIzzU95OKLiw
+fogX/ECW9UaIfJMHrnEADhKcMSRd7HcNpDg/E8GKr4IhtbkFhNjAjE10Ham6fLzw
+SgvN34QpDT6iVP83Cx+SzlSDQLjq4es8diZXP39C0T2a9iskDXMF+ZcaZMwd1TLe
+MI7HMIiLCoyVP7LOI39e6E0ho0W0FRrMtZuXIIvZjwkb+SGhAmlJiATmpLmtzuoK
+oI/UE1gNglJFjA6HWHStHd7hEJrtGHNa061G130kOFGIJhGf8fHiGaWvWYfZ5/jc
+egUo5t7rA6wg6KPwA2JjH2jxUp3NUzTRzV72
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-ca.pem b/crypto/test/data/tls/x509-ca.pem
deleted file mode 100644
index 1639512b8..000000000
--- a/crypto/test/data/tls/x509-ca.pem
+++ /dev/null
@@ -1,21 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDZzCCAh+gAwIBAgIEUqKcyzANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDExhC
-b3VuY3lDYXN0bGUgVExTIFRlc3QgQ0EwHhcNMTMxMjA3MDM1ODAzWhcNMzMxMjAy
-MDM1ODAzWjAjMSEwHwYDVQQDExhCb3VuY3lDYXN0bGUgVExTIFRlc3QgQ0EwggFS
-MA0GCSqGSIb3DQEBAQUAA4IBPwAwggE6AoIBMQDMhzecH5G7Hux5I8B4ftDYKQfB
-EpGBlFB2Yvbn3JIbtEpnY3utJokWGdbTY5oXn8amSRZFP9ZJlBDPrAyop//UfuJ0
-A1n2wDiFHUcPMc1Dg67uH44fGib59tnOV4a0w4xF18FVgPH++2Vy/ZY/VjSAIfMd
-U3nznh1p744dsEjTqj4euJjcy9CCvpW7A0i0ZuXztkkNZvcVnskCrvuHKshAZoPo
-dtIW1G66evZQCGQIJHLyASAifQFe1c8VlJ8U4Z5zQeJe26DjMRF5IrYJWl43IFYr
-DfFC4x+9EnVKdE2g95D9mTkWAwX8/y5eWzPBj7uauLdc36CPfJcn6Q0shGxMbn+O
-j2/mrF8cq9hXBe0cuRLH8F7k6wGxzVzx4wizMysCKJoXYVnEw9AP3uSZqXNDAgMB
-AAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4E
-FgQU9mOvr6Pi7+4O5bKxRihqeCkyHukwDQYJKoZIhvcNAQELBQADggExAKyMiFmj
-YxzjXpQBD5dvRI7xZn79vH3lo13XRBXj/sbPXDXWIv21iLfutXn/RGGsq8piPXHG
-5UY3cpZR6gOq6QO1dJ91K0ViAJBFQdkhhtfbhqGY4jvj0vGO6zenG/WrjH26nCT7
-8S4L6ZoF6Y0EfQXluP50vEitTaZ6x/rung9h2JQ8rYKiRRVCA+tgBWK/CNhQ9LXy
-k3GU0mKLik0AkEFS17C0NWePIPEs/Kxv9iTEFacAN9wVHjZcMYnYtWaPNX0LWV8s
-2V2DMJxrmgCEcoXgJxlyEmvyqwpjB+2AiIQVIuWcwPqgBQoKHThT2zJcXV+bMhMs
-6cGvaIdvPxttduQsP349GcmUIlV6zFJq+HcMjfa8hZNIkuGBpUzdRQnu1+vYTkwz
-eVOPEIBZLzg9e2k=
------END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-client-dsa.pem b/crypto/test/data/tls/x509-client-dsa.pem
index 91d9e4415..782fe4ef9 100644
--- a/crypto/test/data/tls/x509-client-dsa.pem
+++ b/crypto/test/data/tls/x509-client-dsa.pem
@@ -1,32 +1,27 @@
 -----BEGIN CERTIFICATE-----
-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
+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
 -----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-client-ecdh.pem b/crypto/test/data/tls/x509-client-ecdh.pem
new file mode 100644
index 000000000..a3b1b346b
--- /dev/null
+++ b/crypto/test/data/tls/x509-client-ecdh.pem
@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE-----
+MIIBtTCCAVygAwIBAgIMWYGU7ztLkMAhmmRDMAoGCCqGSM49BAMCMCMxITAfBgNV
+BAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBDQTAeFw0xNzA4MDIwOTAxMzVaFw0z
+NzA3MjgwOTAxMzVaMCMxITAfBgNVBAMTGEJvdW5jeUNhc3RsZSBUZXN0IENsaWVu
+dDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLRekMsBjYf7GXhy7ZqnX9lAvXyL
+sC9VfMUIcfGNluSN2C3O9fjqN5FMary/eU49ij6L2mRUjZz6kQK0ZM68pL6jdjB0
+MAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUD
+AweIADAdBgNVHQ4EFgQU7ZRZoI8czdH0szeb+t3EwaXNUG8wHwYDVR0jBBgwFoAU
+0ma/FGcW5gGlL//B26Xmj0JISecwCgYIKoZIzj0EAwIDRwAwRAIgVij5xSPQrUgo
+VsbOgVdLGLJeiHo065dtdt87PSCJtusCID+c1QShYOgBkI/Bv3gotVhTP4mtjhp2
+2v442jTclSfT
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-client-ecdsa.pem b/crypto/test/data/tls/x509-client-ecdsa.pem
index fd8bc845b..261db1ce0 100644
--- a/crypto/test/data/tls/x509-client-ecdsa.pem
+++ b/crypto/test/data/tls/x509-client-ecdsa.pem
@@ -1,17 +1,12 @@
 -----BEGIN CERTIFICATE-----
-MIICqzCCAWOgAwIBAgIMVOBhzQE9XhiRAUXpMA0GCSqGSIb3DQEBCwUAMCMxITAf
-BgNVBAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBDQTAiGA8yMDE1MDIxNTA5MDcy
-NVoYDzIwMzUwMjEwMDkwNzI1WjAjMSEwHwYDVQQDExhCb3VuY3lDYXN0bGUgVGVz
-dCBDbGllbnQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASWdahP6F9xwnD6eABg
-2AwifyDDCw5jy5hGe+Lnvyjok/zdkw2n8lWCFdhInFC7mRcGS7aduF7dykv9C9oU
-mY17o3YwdDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMCMA8GA1Ud
-DwEB/wQFAwMHgAAwHQYDVR0OBBYEFAg1z6i+u89U0RQrH9ApFWIklZrpMB8GA1Ud
-IwQYMBaAFPZjr6+j4u/uDuWysUYoangpMh7pMA0GCSqGSIb3DQEBCwUAA4IBMQCL
-RJIeoOlVOcseShihLd3OU7NU3tGeLDnEcwPOAPYsDN1c7V/zROTD/0W0nhSVdRfB
-AyxjjDjq3J/MTf1DrouEynoAU8SZL5OnxbceX74U2WsSaJU0PAaw9zTOaKoOuTET
-EVs/OMx00XXhZcu+lPFAKT3YNJKO1Rm7Sy4vnY4jnsuRsk9+D6E3CmDSnKQC/g90
-/0djrDTYpL9Lyd5zzekZPpzX7YgNfmq2X04521+3ahfq4bBMC8GRdAuon2h2FwFX
-+aH9cjHHDgxPt5pHkg3Uk+Cl6KhVb2ilS0uYd4XaMPXOUOUOxRpmQ3/7YhNgyyaL
-IOP+fWkbOiFbUTDaOcbBo9y8gvy7+sXuGF5k4nHXNs46Ew1gThQPFtZjqgdiEi+A
-5hYd5P2j0V9L9LprzM79
+MIIBtTCCAVygAwIBAgIMWYGU8A09KQDW+svJMAoGCCqGSM49BAMCMCMxITAfBgNV
+BAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBDQTAeFw0xNzA4MDIwOTAxMzZaFw0z
+NzA3MjgwOTAxMzZaMCMxITAfBgNVBAMTGEJvdW5jeUNhc3RsZSBUZXN0IENsaWVu
+dDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLenUtWqfkGp0iFncfdsvBsfaXHv
+Ne5gV7U/zUO0OQ71V1c8WpOx9f0rhpOSCN9GCqQNL3yd+nWf+pu40JMMrZKjdjB0
+MAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUD
+AweAADAdBgNVHQ4EFgQUtK5VEuBZJUDbU8gN9dleZeXDf2swHwYDVR0jBBgwFoAU
+0ma/FGcW5gGlL//B26Xmj0JISecwCgYIKoZIzj0EAwIDRwAwRAIgNnj/nlAbCd0R
+fCG6n5s5Sdsh4dR7KRhncCj8wjGYZMYCICUXU05FIr3bM9bELX2We3rv1ookK9rC
+7ZVjCgt7YbHi
 -----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-client-ed25519.pem b/crypto/test/data/tls/x509-client-ed25519.pem
new file mode 100644
index 000000000..e419a7b32
--- /dev/null
+++ b/crypto/test/data/tls/x509-client-ed25519.pem
@@ -0,0 +1,11 @@
+-----BEGIN CERTIFICATE-----
+MIIBfjCCATCgAwIBAgIUO1XUdvEupfCQwrrPHXE28BoO+TswBQYDK2VwMCMxITAf
+BgNVBAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBDQTAeFw0xODA4MjMwOTI5NDda
+Fw0zODA4MTgwOTI5NDdaMCMxITAfBgNVBAMTGEJvdW5jeUNhc3RsZSBUZXN0IENs
+aWVudDAqMAUGAytlcAMhAJe53GEkXEVP7L7FbVZ1BCGvvIZac+6k41CncucJ3BJ2
+o3YwdDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMCMA8GA1UdDwEB
+/wQFAwMHgAAwHQYDVR0OBBYEFNo2OYJ4FLTBdu5lozbqL2aAXsqzMB8GA1UdIwQY
+MBaAFOp5vj76ByEwboduoHWAWzajnM1mMAUGAytlcANBAJrgAof3yetck8DDLNTG
+dwLQdCNjEg5/xgvKVcTPuUC4rirgCoYtPY36lfPhd0v5Ev8v1Jjrxshyi/yVCsLb
+mQ8=
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-client-ed448.pem b/crypto/test/data/tls/x509-client-ed448.pem
new file mode 100644
index 000000000..e7442fce5
--- /dev/null
+++ b/crypto/test/data/tls/x509-client-ed448.pem
@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE-----
+MIIByTCCAUmgAwIBAgIUbl3fESW+2UIW9SzaxnhuhiGygLIwBQYDK2VxMCMxITAf
+BgNVBAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBDQTAeFw0yMDAyMTMwNzMzMDJa
+Fw00MDAyMDgwNzMzMDJaMCMxITAfBgNVBAMTGEJvdW5jeUNhc3RsZSBUZXN0IENs
+aWVudDBDMAUGAytlcQM6AFbp8qV7nVhmDWZUsXTfqU8aOaP4XSmGUnKqdlQPR5O4
+3lMlUukbrclV5v5+b4Z8Qy4Abe+PZU+AgKN2MHQwDAYDVR0TAQH/BAIwADATBgNV
+HSUEDDAKBggrBgEFBQcDAjAPBgNVHQ8BAf8EBQMDB4AAMB0GA1UdDgQWBBSlCh5L
+f6BeaHQxiEe5B9ZjbbCKODAfBgNVHSMEGDAWgBS+BSv++BEWlTJ53q6rwnDLVnR5
+JTAFBgMrZXEDcwAC3Tugpa+pS0ExsLdh/6GsVAVvhYICLc+tWGExM+f3gzFU7yvO
+uM7xwRR78ItbQyRkfLeL+6GYGgDzhjwQ6XzilwGibLtGuooLAMo3uOgW8N4mQslf
+GqEW2V3VocPjmNYanAMJnTd68t5Wc0ow153cNgA=
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-client-key-dsa.pem b/crypto/test/data/tls/x509-client-key-dsa.pem
index e4e9632c7..fd1a45b90 100644
--- a/crypto/test/data/tls/x509-client-key-dsa.pem
+++ b/crypto/test/data/tls/x509-client-key-dsa.pem
@@ -1,15 +1,15 @@
 -----BEGIN PRIVATE KEY-----
-MIICZQIBADCCAjoGByqGSM44BAEwggItAoIBAQD72WVbGG6lMxeQKuSQlBibYPfh
-4K2m/9hfL5xCrGClrShWOAQmpSG4W2f3uFTwBFdUpVfxoJrZD1azrrU4atN4/3qP
-fLfNr4rJpLOkjLqTaMjoj6g2fh8jRGRSEFfVK/9Q/7TwUBqw+xW4eSTpikDwqKOO
-rfV3JX5vvLvG1CIRUFeCyJLoOWAZtifMMuRXmkWJ6NfuB6eeN6A+kpDrRWiQqdOZ
-34jUbWmcvy169tlJ0oIBvTP87oPrtwYtke9EyORSau08GB3wJW3rGywYx0B7xPeV
-pRcStWKL5s4gS33sOUQpWd5II+390i/91nkctorbUGjm8Fdu2TY+Hp2AA6pJAiEA
-7Df4zPZkuVA5jzUUelm8to7yUGx3ZusjKpRYiF1QBAkCggEBAM1a5w3TOpD01QC1
-iTWAtu/cSBDBE4piRj9/aN2FzCRZcqBMxWGpiT53mJWKWOIxn7nrQvoxZx6Lg4r7
-Y3X/7wHPqIOI2q6ODXGgwo8z2QU0Lr29HBYZUm1WbIrdSDL/7M7SVHT3HUCpxj/j
-X4goQQ4fCy7JL7lXnxImtCMf8cHSu+uM1Z/aMYj+RNrCjDGJ5xaFcpGylFuN7Djj
-Xvj9szhd1UyDlJ4LM3DQyibF6xSmfjLRPRbynbmlwZndMvT2re4xQqHa8tdu5gXi
-GTim/Yd2DGQn+7UARaV+qPCV+C7cPYVUSLLKYGq5YtytfFpjkfuqbwMycSMcYmA2
-6NTxzAIEIgIgC6eNrpVR96umhuvIbLz6sy2YwlGFpkK+LLJOL2GmQ4g=
+MIICZAIBADCCAjkGByqGSM44BAEwggIsAoIBAQDSMzcgZrdKvsO/W8j3F1jeRExv
+NODiRWITgHVJeYL/dAAqH756I5i2jrtgJ28BFFTJVecQXXrmpz5dBEph/shaA8MM
+AN7jYT7rWfdWJpeTz6ZLOPBY/CFfDJ56ftCxgtVIPSIHl5D0qxptWiCYzDbyt8XO
+6jBiPGni//6RUqB+Lzb0aovkM2QVvxWl3lnUb5E9HNWAAr3ZdK5xd0j24u25+OXH
+hhhHp6unRY22WRtXvm2cs3fP1BjtNQS2cX7RtCIllqiotQZT9S4HPC8lCK82viHt
+Wry5NI247oYULGHm6b5zvOLoQznWr6cZxwqnBJvLBJUXLSBWGNcQdzw92xvBAiEA
+iKV4o3I9czbJ3Ee66EhzXnq+Qd3NTfdhdoUy3nWG88ECggEAezwqxRd7u6Cav+uB
+C/BDJZ7/Nb4Fp3rf1Mec82NjhHbQzjkeGJ61l3LP67I4qP25R03/wnjF96U1VfBh
+N39AuPh8eplm/qJC+1IBD5np/HRhw//8p93usGARu2qnfA7QZInJoHfXipWPsYG8
+MKwzfHc/UWyfaADl28wEsNRry22elFrDE2e1lqAGyzn/tIH4gPnkYwvcdB22jdIy
+8s7UCYRL1qhkspzX5AdsaKUbaMmAr7RFQ7UBAvR+j7SBvaCsosCwLVTpm4+qX9f1
+d2SSRD4hXyg/Ah3EvGfOyVzG406JSH9QPvwY5/hSjkts3SEPqwDhXabVMlOvAlpA
+Fera2wQiAiAFTXpu+duj6u8P3wMsd7fOOStBEV6hPUh+RLdOjGslXw==
 -----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-client-key-ecdh.pem b/crypto/test/data/tls/x509-client-key-ecdh.pem
new file mode 100644
index 000000000..2a28a9f10
--- /dev/null
+++ b/crypto/test/data/tls/x509-client-key-ecdh.pem
@@ -0,0 +1,6 @@
+-----BEGIN PRIVATE KEY-----
+MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgAuAT+3hSra1qS+XA
+iAUT+W6MSZ2rnoeQGjFe6FX7z8qgCgYIKoZIzj0DAQehRANCAAS0XpDLAY2H+xl4
+cu2ap1/ZQL18i7AvVXzFCHHxjZbkjdgtzvX46jeRTGq8v3lOPYo+i9pkVI2c+pEC
+tGTOvKS+
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-client-key-ecdsa.pem b/crypto/test/data/tls/x509-client-key-ecdsa.pem
index 89232e303..d9aceb301 100644
--- a/crypto/test/data/tls/x509-client-key-ecdsa.pem
+++ b/crypto/test/data/tls/x509-client-key-ecdsa.pem
@@ -1,6 +1,6 @@
 -----BEGIN PRIVATE KEY-----
-MIGUAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHoweAIBAQQhANLHM3ugk0ZTEYNx
-uKn3ytAv71M61ChZAjWdC9nW1U7zoAoGCCqGSM49AwEHoUQDQgAElnWoT+hfccJw
-+ngAYNgMIn8gwwsOY8uYRnvi578o6JP83ZMNp/JVghXYSJxQu5kXBku2nbhe3cpL
-/QvaFJmNew==
+MIGUAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHoweAIBAQQhAJxpy2FD0ePz3c9j
+6fVPTSpHAmdiRIqnskVP0PjiBAEvoAoGCCqGSM49AwEHoUQDQgAEt6dS1ap+QanS
+IWdx92y8Gx9pce817mBXtT/NQ7Q5DvVXVzxak7H1/SuGk5II30YKpA0vfJ36dZ/6
+m7jQkwytkg==
 -----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-client-key-ed25519.pem b/crypto/test/data/tls/x509-client-key-ed25519.pem
new file mode 100644
index 000000000..a08f3c44a
--- /dev/null
+++ b/crypto/test/data/tls/x509-client-key-ed25519.pem
@@ -0,0 +1,25 @@
+Public Key Info:
+	Public Key Algorithm: EdDSA (Ed25519)
+	Key Security Level: High (256 bits)
+
+curve:	Ed25519
+private key:
+	b6:9d:94:c8:9d:c9:7a:5d:b3:58:92:af:67:8e:c2:bd
+	63:c1:81:55:3d:b2:5c:e0:c8:91:f1:40:34:5a:6d:b9
+	
+
+x:
+	97:b9:dc:61:24:5c:45:4f:ec:be:c5:6d:56:75:04:21
+	af:bc:86:5a:73:ee:a4:e3:50:a7:72:e7:09:dc:12:76
+	
+
+
+Public Key PIN:
+	pin-sha256:aWaJiTGI21SUAEt2VgTiRGAnczFMD8axA/4hrKMpfno=
+Public Key ID:
+	sha256:696689893188db5494004b765604e244602773314c0fc6b103fe21aca3297e7a
+	sha1:da3639827814b4c176ee65a336ea2f66805ecab3
+
+-----BEGIN PRIVATE KEY-----
+MC4CAQAwBQYDK2VwBCIEILadlMidyXpds1iSr2eOwr1jwYFVPbJc4MiR8UA0Wm25
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-client-key-ed448.pem b/crypto/test/data/tls/x509-client-key-ed448.pem
new file mode 100644
index 000000000..be3c8638b
--- /dev/null
+++ b/crypto/test/data/tls/x509-client-key-ed448.pem
@@ -0,0 +1,28 @@
+Public Key Info:
+	Public Key Algorithm: EdDSA (Ed448)
+	Key Security Level: Ultra (456 bits)
+
+curve:	Ed448
+private key:
+	b1:9c:73:a3:54:a0:33:05:b1:b0:ad:6f:1f:c0:ad:14
+	db:d4:55:bb:eb:fa:d4:33:8c:e5:bc:68:03:d1:ca:25
+	19:75:0f:94:4f:e3:fd:3a:62:b5:77:23:d7:b0:d6:75
+	92:9c:98:86:2a:08:c5:b2:6e:
+
+x:
+	56:e9:f2:a5:7b:9d:58:66:0d:66:54:b1:74:df:a9:4f
+	1a:39:a3:f8:5d:29:86:52:72:aa:76:54:0f:47:93:b8
+	de:53:25:52:e9:1b:ad:c9:55:e6:fe:7e:6f:86:7c:43
+	2e:00:6d:ef:8f:65:4f:80:80:
+
+
+Public Key PIN:
+	pin-sha256:4r2UflhSms9yYj4SMc7tE9lkFxXR/ziPw1bhZGfI/qw=
+Public Key ID:
+	sha256:e2bd947e58529acf72623e1231ceed13d9641715d1ff388fc356e16467c8feac
+	sha1:a50a1e4b7fa05e6874318847b907d6636db08a38
+
+-----BEGIN PRIVATE KEY-----
+MEcCAQAwBQYDK2VxBDsEObGcc6NUoDMFsbCtbx/ArRTb1FW76/rUM4zlvGgD0col
+GXUPlE/j/TpitXcj17DWdZKcmIYqCMWybg==
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-client-key-rsa.pem b/crypto/test/data/tls/x509-client-key-rsa.pem
new file mode 100644
index 000000000..d2d19bf0e
--- /dev/null
+++ b/crypto/test/data/tls/x509-client-key-rsa.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDP8Yo5l5ez1W2c
+EgROodwNqRLL+ALvOorSEuKm+xiTbzmdqcMdtvwDhq/yb7GBhpzrFcUOt5hPcQc9
+pYz7Khg4UHiw+wqbV2QHMGGupNs+kvdUndBgjToD7hYlyhV7fUovNrjQeNq+5Bxt
+OHsZmO7ilHTKdSMVG2eO5XgZk+1uSOuZStmnMZM0Sum3TxK5zRs2beLf5OhNDqMH
++hJVH9FL4bF9LaxQfTvMrwnIqgEKBlMO29cs1gPW1otQEFD4MefHhjK0YEF3xZ7r
+hnnx6lPv5wFQLeaRx1NBqgdPY3L9ZSUkKQzLQgWubbKK1b8vDookicdebSMjTrVX
+HPcv6B93AgMBAAECggEAQZZe0cGFwNwdoW9xWlflL43Xduw4CLq/VHlOcfqbCs23
+L4p/F11C6d3Omzotk7wgvGl2aSjxaoUtEn2oFQR29TQ0jSXxd4O98iKJfOtUl80F
+I/RO6FVDKkArTioKUpP3FSM+ccrcu/75FF4PPcil+GN43u7JbPvi0wh/tBmbdwAJ
+aK2wskjaJAbQz8lnIEVZkz3uYLc32BD2FoCC+HyIPAYFbryus1m+TsXWVk3rDKst
+85x4jadS7g3a1OvsDXqj8lHlom9dlxcMqTtSaJr1XJgMwztnc0FVuMOqs0MZpa2U
+Mu/0EJQYLW98a1bDkXbLtbXjx2gWpO64gZqQn6aYAQKBgQDfgA2xVv7nmVuOkojJ
+rJTS4muPG1BhXY7/MD13eopmjPk8rpVZt97RHfMHp3CCzuQVy9g398kBvCBtO9Ba
+3/ab9ZrNMN3Rwm7vwUa4TBOvN17bRSeIPUenJJ42SDM2fmN4m8c91iiSyb9AVPmk
+zSksQYtZr/8m9mQ0VOguzOxcAQKBgQDuLmDFSYDl4DO4cOZANpDYk1MkCtrW37xM
+IUS6vnPFkRg3t57Og9tddj81VoMNeakGRvWmcDA1yuVdo52pqjlSXzQuSYAh7ZTC
+KMzesLt1uilXQW2MNNvmZMjltgkHMiuY1cIvQLFC0o4AI5DLR5+5/w/lm/Qe9pfU
+++B3XVVbdwKBgF5Yfu86ixYW/bg8kTOY/6XZ4I+jdxXy2ZdNtNTHzL6nidqc0/zw
+ikV6QAoeG3eMgGnXB+nwVlC+Km4SDs0dt8t0LSmrFCgkzJG24/SOYMzZMdib46k2
+PRYIdiTx63R4e+MA12V6DtyP/4TXmh6AYH4HGRz+F1ZKMliI8w42gRwBAoGAN9sG
+dJ21LbNzTZikVoC1XSTHhZdKFMPpO409ufF54uYQ4Ngd1N5VLkjRr+d22k0il0dC
+ymJa2/KV8WyyR5yUzr1m1kgEVXCKxzGcQcj+XTBoC39belrXCuOtvTkASwC3+qJ+
+ZGhuaXZJOL0ecp18Vrj6+GSnTi+UEa1zyWpI3ycCgYAxJgHa3CGaGqbdzgkRTnWd
+FMptvqaNd4POyy/TJ1Jf0ydZwgRpRMZTv8hJKZHh4lUkSOF6bE0qDhrxzUjpI9GT
+SGYYX27pfVThoM421S7bvgVmneeLSz1S50Hg0jawHA2ixjne/7kQcMjQzYjjMfDy
+FgVOrBIQnpUddGEpu1z5pw==
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-client-key-rsa_pss_256.pem b/crypto/test/data/tls/x509-client-key-rsa_pss_256.pem
new file mode 100644
index 000000000..86f66f7d2
--- /dev/null
+++ b/crypto/test/data/tls/x509-client-key-rsa_pss_256.pem
@@ -0,0 +1,138 @@
+Public Key Info:
+	Public Key Algorithm: RSA-PSS
+		Hash Algorithm: SHA256
+		Salt Length: 32
+	Key Security Level: Medium (2048 bits)
+
+modulus:
+	00:d7:7a:3a:01:8b:5e:59:0f:10:7d:95:5c:ce:c6:ea
+	c8:29:2e:75:6e:fe:6c:f9:83:d5:3e:72:6c:fc:56:95
+	43:d4:62:34:df:05:7c:b3:b3:a6:4a:37:ca:b6:e0:23
+	44:19:fc:2c:ea:cf:fc:f9:26:1a:ac:5a:8d:83:f8:4f
+	d9:0b:ae:fc:e9:9d:75:37:2d:a4:93:02:5d:69:10:df
+	b7:7a:4c:b6:05:64:73:46:45:b2:fe:a4:b3:33:9e:68
+	6b:14:35:8e:ee:df:bb:e0:77:23:76:b8:6e:fd:fc:f2
+	dd:02:59:5e:dc:a1:b3:5d:93:c6:2c:e2:4a:85:21:7f
+	ca:59:36:e8:77:dd:fe:cd:fe:f6:b0:96:fe:14:6a:5c
+	68:4c:cf:bc:fd:fe:ec:e3:2f:51:10:cf:46:db:1d:3a
+	3d:cd:87:ec:67:4a:7d:20:5e:79:6c:ea:d3:24:d3:82
+	05:bc:d9:79:e5:cd:df:6a:bb:62:9b:20:b3:35:34:61
+	ae:69:a9:ab:b9:b6:27:ac:7b:33:f5:be:df:9a:b4:12
+	68:06:55:79:b3:ba:52:f0:91:90:69:b1:f1:5a:11:e3
+	8b:de:dd:f1:99:ca:5a:ad:87:ba:65:52:27:a6:07:12
+	60:10:24:93:4b:df:12:db:49:0f:fc:21:ff:9f:e6:92
+	75:
+
+public exponent:
+	01:00:01:
+
+private exponent:
+	3f:9d:f9:84:3d:36:84:ca:ba:ce:a9:0b:76:8d:2a:02
+	20:8e:73:e3:6a:40:98:46:40:ee:27:f0:5f:6b:dc:b3
+	e2:ff:7f:a6:9c:c3:1d:77:1b:d0:6b:ba:70:d5:a9:f3
+	d0:4c:30:a2:be:f7:6c:43:c0:ba:44:1d:e5:e9:a9:01
+	66:be:aa:32:fa:e7:01:7c:7b:4b:5f:f6:5e:2f:ba:2d
+	3c:71:6b:88:1a:09:22:a5:2f:5c:99:19:c3:52:b0:77
+	74:c6:ff:45:2d:4f:15:cd:76:ed:f5:33:e7:cf:07:91
+	12:c1:7a:0d:5f:bc:4a:13:77:fe:06:6d:83:f2:c8:fc
+	55:3b:f2:3f:9d:48:4b:b5:1b:22:ad:a5:7f:c6:29:b0
+	05:b8:e2:82:5c:b9:66:48:8e:05:d1:5a:ea:3d:63:c7
+	94:81:0e:c3:0a:33:d2:a8:a5:2f:a2:83:26:59:19:1b
+	89:bc:8d:02:e1:c7:0c:53:64:6b:a2:d1:8b:ef:70:d6
+	d5:94:bb:df:5b:49:4b:a5:cf:d4:df:0c:0c:ac:ed:8a
+	39:61:b8:15:cb:64:b6:02:6f:21:e2:46:d6:c9:d1:d8
+	62:ca:1b:f6:3f:3b:74:c0:5a:ca:cb:a5:c5:aa:80:89
+	e2:66:a8:7a:57:61:5e:5d:e3:0c:b2:4f:48:01:18:21
+	
+
+prime1:
+	00:e8:cf:45:ff:39:35:03:62:2f:2a:63:b6:14:95:22
+	e7:30:6f:a1:d3:65:f1:8c:0e:13:a3:67:a2:1a:86:24
+	70:1c:97:64:15:9b:12:1b:59:66:de:05:42:6e:fe:ee
+	77:a0:bd:1e:8c:5b:de:45:c7:4b:05:ff:ce:39:45:ee
+	96:15:4b:96:df:b3:20:62:0c:90:bd:f8:1d:0a:ac:83
+	47:34:cb:63:0e:cf:1a:b9:20:62:59:1c:7b:a2:52:b0
+	4d:d7:c3:d5:90:32:9a:a5:3f:26:d6:66:f9:45:16:7d
+	a4:4f:2e:4d:87:4c:d3:8b:b4:00:5e:d8:5b:29:cc:a3
+	3d:
+
+prime2:
+	00:ec:f0:f9:c9:43:a9:c5:fd:56:bc:57:d2:6d:18:9d
+	90:bb:17:74:19:80:1f:e2:21:b9:b6:13:6b:b5:02:62
+	b3:51:97:4d:29:dc:85:ee:bf:15:98:f8:21:78:00:0f
+	3d:78:94:23:27:2f:52:a8:35:82:02:73:44:21:07:c6
+	ab:61:fc:d1:1f:67:8f:43:5a:33:fd:ee:fe:d8:5c:a1
+	1e:b0:7d:6f:0b:6f:d6:47:25:1d:71:5f:b8:77:2f:8f
+	4c:6a:0f:8e:03:ce:f3:cd:dc:02:fc:21:c6:ce:10:07
+	0d:ee:1f:d1:82:94:21:41:10:9a:76:62:80:cc:f1:3f
+	99:
+
+coefficient:
+	4b:89:17:37:c2:77:4d:99:ec:95:4d:d7:7f:c7:0b:8a
+	fc:67:ee:59:0d:66:7d:5c:33:36:6d:90:00:6e:3b:d4
+	79:9e:94:05:61:e6:e5:8d:f9:70:3d:7b:4d:be:7d:7f
+	0f:ef:e8:e3:93:1e:42:da:d1:9f:12:6b:51:d9:7c:ef
+	5b:c6:f1:e9:ab:9f:87:6f:d6:eb:29:4d:51:2b:f9:0d
+	b7:e5:96:fb:c9:4a:21:a4:b0:4a:af:b3:2b:3c:41:45
+	19:d5:3d:cb:fe:15:4a:f7:a4:52:e6:d6:0c:c9:cc:5b
+	62:fd:b0:1d:ed:98:13:0f:9a:27:92:5e:a8:6b:bc:b8
+	
+
+exp1:
+	00:8a:f6:c6:32:5d:24:5e:bb:a9:a9:a4:d1:17:a2:19
+	ae:64:04:0e:55:50:21:89:57:11:b3:d4:f5:36:dd:e1
+	3c:26:64:db:71:e6:19:3d:c7:f4:96:0c:0f:a6:8f:77
+	2a:63:00:e0:0e:29:fc:18:2c:a8:84:91:37:b8:8a:1c
+	aa:eb:55:2e:5e:a2:de:6e:88:4f:91:85:5b:58:76:b6
+	f9:b6:f2:bc:53:27:9e:2c:e8:be:ab:b0:4b:c0:0d:99
+	7d:2d:90:90:96:bd:0e:00:1b:1d:04:97:7c:ad:17:8a
+	b1:9c:2d:e8:4b:1d:b9:9c:47:3a:7d:62:a9:af:de:9d
+	85:
+
+exp2:
+	6c:52:0a:4f:b9:b0:3e:c4:7f:c7:a0:fa:a1:47:74:99
+	3a:ff:10:e3:ab:90:67:e7:f5:27:c9:1f:1f:64:54:cd
+	17:ca:ec:ca:eb:77:0b:5b:ae:3a:fd:8d:07:78:37:7f
+	69:c5:87:80:9d:80:d3:47:8b:05:25:bf:0a:be:ac:53
+	a3:7b:59:fb:5a:73:c3:5d:d4:91:0d:96:d2:41:1e:a3
+	92:19:f6:0f:2b:74:b1:97:c5:2b:14:90:97:64:55:c5
+	a0:63:36:10:85:a7:2e:00:9c:18:ba:34:51:f6:3f:d3
+	5d:7e:8c:60:7e:e9:e8:fd:f7:2f:91:fe:c2:32:b4:59
+	
+
+
+Public Key PIN:
+	pin-sha256:V1OZkBgmgMWlbg+RZ0Dx3sw/b4WHbrN4NHttN6QbsGM=
+Public Key ID:
+	sha256:57539990182680c5a56e0f916740f1decc3f6f85876eb378347b6d37a41bb063
+	sha1:028b616b894849cbca9103fcf919fdda20ca101e
+
+-----BEGIN PRIVATE KEY-----
+MIIE7QIBADA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3
+DQEBCDALBglghkgBZQMEAgGiAwIBIASCBKcwggSjAgEAAoIBAQDXejoBi15ZDxB9
+lVzOxurIKS51bv5s+YPVPnJs/FaVQ9RiNN8FfLOzpko3yrbgI0QZ/Czqz/z5Jhqs
+Wo2D+E/ZC6786Z11Ny2kkwJdaRDft3pMtgVkc0ZFsv6kszOeaGsUNY7u37vgdyN2
+uG79/PLdAlle3KGzXZPGLOJKhSF/ylk26Hfd/s3+9rCW/hRqXGhMz7z9/uzjL1EQ
+z0bbHTo9zYfsZ0p9IF55bOrTJNOCBbzZeeXN32q7YpsgszU0Ya5pqau5tiesezP1
+vt+atBJoBlV5s7pS8JGQabHxWhHji97d8ZnKWq2HumVSJ6YHEmAQJJNL3xLbSQ/8
+If+f5pJ1AgMBAAECggEAP535hD02hMq6zqkLdo0qAiCOc+NqQJhGQO4n8F9r3LPi
+/3+mnMMddxvQa7pw1anz0Ewwor73bEPAukQd5empAWa+qjL65wF8e0tf9l4vui08
+cWuIGgkipS9cmRnDUrB3dMb/RS1PFc127fUz588HkRLBeg1fvEoTd/4GbYPyyPxV
+O/I/nUhLtRsiraV/ximwBbjigly5ZkiOBdFa6j1jx5SBDsMKM9KopS+igyZZGRuJ
+vI0C4ccMU2RrotGL73DW1ZS731tJS6XP1N8MDKztijlhuBXLZLYCbyHiRtbJ0dhi
+yhv2Pzt0wFrKy6XFqoCJ4maoeldhXl3jDLJPSAEYIQKBgQDoz0X/OTUDYi8qY7YU
+lSLnMG+h02XxjA4To2eiGoYkcByXZBWbEhtZZt4FQm7+7negvR6MW95Fx0sF/845
+Re6WFUuW37MgYgyQvfgdCqyDRzTLYw7PGrkgYlkce6JSsE3Xw9WQMpqlPybWZvlF
+Fn2kTy5Nh0zTi7QAXthbKcyjPQKBgQDs8PnJQ6nF/Va8V9JtGJ2Quxd0GYAf4iG5
+thNrtQJis1GXTSnche6/FZj4IXgADz14lCMnL1KoNYICc0QhB8arYfzRH2ePQ1oz
+/e7+2FyhHrB9bwtv1kclHXFfuHcvj0xqD44DzvPN3AL8IcbOEAcN7h/RgpQhQRCa
+dmKAzPE/mQKBgQCK9sYyXSReu6mppNEXohmuZAQOVVAhiVcRs9T1Nt3hPCZk23Hm
+GT3H9JYMD6aPdypjAOAOKfwYLKiEkTe4ihyq61UuXqLebohPkYVbWHa2+bbyvFMn
+nizovquwS8ANmX0tkJCWvQ4AGx0El3ytF4qxnC3oSx25nEc6fWKpr96dhQKBgGxS
+Ck+5sD7Ef8eg+qFHdJk6/xDjq5Bn5/UnyR8fZFTNF8rsyut3C1uuOv2NB3g3f2nF
+h4CdgNNHiwUlvwq+rFOje1n7WnPDXdSRDZbSQR6jkhn2Dyt0sZfFKxSQl2RVxaBj
+NhCFpy4AnBi6NFH2P9Ndfoxgfuno/fcvkf7CMrRZAoGAS4kXN8J3TZnslU3Xf8cL
+ivxn7lkNZn1cMzZtkABuO9R5npQFYebljflwPXtNvn1/D+/o45MeQtrRnxJrUdl8
+71vG8emrn4dv1uspTVEr+Q235Zb7yUohpLBKr7MrPEFFGdU9y/4VSvekUubWDMnM
+W2L9sB3tmBMPmieSXqhrvLg=
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-client-key-rsa_pss_384.pem b/crypto/test/data/tls/x509-client-key-rsa_pss_384.pem
new file mode 100644
index 000000000..5cdedc5ad
--- /dev/null
+++ b/crypto/test/data/tls/x509-client-key-rsa_pss_384.pem
@@ -0,0 +1,138 @@
+Public Key Info:
+	Public Key Algorithm: RSA-PSS
+		Hash Algorithm: SHA384
+		Salt Length: 48
+	Key Security Level: Medium (2048 bits)
+
+modulus:
+	00:dd:07:da:a8:65:55:09:ee:be:0b:c6:9d:95:05:28
+	f6:d6:0b:d6:dd:31:7f:e9:b4:3c:53:0b:2d:ef:f1:bf
+	92:13:14:9f:09:11:08:a1:d4:49:ff:8a:51:5e:45:62
+	e0:63:7e:9d:18:68:bd:93:fe:42:a5:46:de:5b:06:d6
+	90:28:98:10:fd:ef:5d:0b:f9:a4:7c:f9:ce:68:2a:6c
+	5d:78:5a:11:a7:d3:77:3a:49:c9:01:73:80:40:50:56
+	df:1e:e6:21:d7:7b:9b:14:0b:00:fc:09:f7:97:9a:39
+	50:6d:ea:e9:c1:b1:47:ca:1a:c5:49:79:8e:42:2a:74
+	e9:51:81:14:07:f2:51:59:72:b1:de:5a:09:72:de:77
+	90:62:e0:f7:96:64:07:7f:6d:83:c0:ed:82:6f:61:20
+	65:2a:09:ef:bd:8a:66:74:4c:2a:60:63:b9:91:6f:f7
+	55:aa:bd:d4:a0:a1:d5:a2:2f:20:8f:f8:19:45:60:93
+	ba:19:2d:b4:eb:cf:8c:ea:1d:3b:2e:1f:99:82:66:79
+	cb:c8:1b:1c:b2:a9:1d:bd:67:a0:39:e4:a2:59:14:67
+	69:0e:62:45:53:e2:8b:63:9f:38:cf:c0:dd:d1:c6:76
+	b8:a2:87:78:08:31:38:28:e9:cc:25:98:69:fa:20:c8
+	f1:
+
+public exponent:
+	01:00:01:
+
+private exponent:
+	54:12:88:b9:44:d1:f3:d5:3b:b4:7e:f7:b1:97:24:dd
+	be:cd:02:0d:60:a6:a6:de:47:93:ce:cc:ca:57:c9:e6
+	66:1b:91:e2:80:f8:27:95:f8:0f:9b:2d:18:0e:8c:6d
+	8d:6a:bb:96:6d:40:ae:ea:27:af:76:25:5d:ba:5c:22
+	b9:4e:1e:28:78:c3:8b:aa:89:46:80:3e:62:a0:c0:57
+	4d:4f:f5:27:40:e8:38:e3:97:f1:55:5d:93:18:fb:f2
+	22:6e:a6:b0:af:f3:6c:cc:42:b3:9b:96:f1:b3:57:d9
+	9f:f5:9a:b4:72:1a:3c:65:b2:65:20:37:5c:33:8a:03
+	ff:ee:a7:73:42:38:40:0f:3e:af:73:c0:38:b0:21:c0
+	24:30:04:85:d5:01:0e:4e:4b:98:db:19:fb:88:39:de
+	c1:b0:ca:94:1a:f6:be:8d:c3:bb:b7:10:34:6f:53:c3
+	77:b8:ed:f2:b1:66:8f:f6:6e:a8:b4:d2:70:51:8c:b2
+	27:59:5e:01:9e:7e:b2:4d:a4:2a:7a:09:2f:cb:e7:f7
+	d8:dd:a1:f7:97:61:cb:17:2c:5f:02:19:84:1c:54:c8
+	31:e3:50:b0:26:26:4f:7a:d9:c0:fe:4e:7b:b6:7d:b5
+	bb:86:d9:67:10:47:7d:62:7b:e4:b4:9a:5e:c9:aa:01
+	
+
+prime1:
+	00:dd:5c:98:01:6c:e3:b1:f0:37:8b:d1:37:78:77:9b
+	1a:f2:26:c2:b5:8a:58:9b:f0:f2:bb:cc:66:23:ea:8a
+	9c:50:62:e6:d6:ea:11:ba:f3:ee:84:fd:9d:45:3e:ca
+	55:65:11:46:46:1e:03:58:23:54:44:03:d9:85:50:43
+	ac:97:27:bf:e1:5e:a9:17:a9:43:cf:e4:6e:d3:09:0c
+	6c:11:74:8c:7d:dd:ed:be:96:bb:5b:d3:b9:c1:83:b3
+	a3:70:52:d4:74:1c:d5:78:31:73:2b:1b:c0:dc:28:f8
+	51:55:4a:cf:16:b3:03:b1:58:d2:b7:df:bc:cb:6f:5f
+	bd:
+
+prime2:
+	00:ff:9e:00:1d:18:dd:09:08:e6:20:10:b5:ea:c9:d5
+	b8:17:2c:ce:c7:9c:d1:08:22:95:e0:41:1f:59:3e:2b
+	91:07:80:21:7f:61:73:ae:74:24:c1:7d:a6:33:e0:e8
+	20:07:ed:e4:fd:d9:55:65:ae:7b:76:a3:c9:10:35:26
+	47:78:0b:d1:45:a1:31:dc:d7:a3:52:17:24:ff:55:4b
+	d0:c0:9e:12:73:f5:51:d1:89:ab:75:6a:0b:08:b7:8d
+	9a:d3:d6:3b:c3:ee:e3:0c:47:8e:7a:01:4c:57:d2:cc
+	7d:b7:bf:3d:02:cf:8e:0a:b0:43:4b:b4:15:d0:aa:17
+	45:
+
+coefficient:
+	00:d2:c8:fc:3a:8c:28:d3:15:6f:0b:7b:51:7f:a9:8b
+	3c:f5:ed:f5:6b:d1:d7:e4:e9:c8:46:16:80:1c:f8:78
+	fc:10:bf:55:13:67:5a:a2:e6:2b:51:86:ca:d1:53:20
+	1e:e4:f8:82:ca:cd:4a:56:ba:bc:7a:dc:16:ba:16:43
+	ca:66:21:f2:73:1b:ca:de:60:95:d1:b8:7b:ad:e1:1d
+	d5:48:2f:87:83:40:00:a4:ea:ac:2e:4b:a6:c8:b1:4a
+	90:16:aa:e5:9c:91:a9:ee:57:ec:5d:13:b6:6d:bc:a6
+	ef:b9:1b:b5:7c:44:21:24:06:c7:08:97:16:57:22:5f
+	d3:
+
+exp1:
+	35:1f:b3:9b:23:f6:c1:0d:55:47:48:be:77:3a:bd:0e
+	8a:6e:a2:eb:ce:77:d5:74:cd:cc:24:11:9f:2c:fa:76
+	e9:13:d3:32:60:9a:40:b3:a9:da:60:c3:0d:8b:34:23
+	aa:4d:aa:ff:c8:d4:24:a2:d5:e6:3c:c6:47:28:2c:15
+	8f:71:0a:ab:9b:7c:19:21:96:14:9e:4d:ba:77:c1:73
+	6d:fc:fa:7a:7a:78:43:f5:08:a1:d0:fe:13:62:f8:09
+	91:3b:4f:a1:4e:0a:2c:fe:31:15:77:63:a1:72:73:a5
+	91:42:92:d0:6f:c5:c3:19:fd:f8:02:c9:dc:48:ae:41
+	
+
+exp2:
+	00:b4:33:35:8f:4d:ac:dd:26:a9:dc:a7:0b:28:06:bb
+	a4:b8:a9:bc:e8:59:b3:be:d1:6a:e9:19:df:b8:b1:2c
+	53:64:7f:3e:9e:27:1c:3f:3a:df:82:8c:4a:b3:bd:f4
+	c6:47:f0:bc:82:fc:48:c8:92:f5:b4:d0:87:f8:e6:0f
+	23:49:0c:c3:ae:1b:92:24:46:dc:7b:0d:97:e6:6c:c2
+	32:da:e7:54:c8:ec:83:8e:7d:48:23:50:eb:90:6c:9d
+	e6:2d:3a:95:0d:6e:86:1f:6c:fe:93:22:01:28:d4:91
+	96:7b:07:d5:41:fb:01:fe:a4:fd:fc:0b:6b:69:9b:cf
+	25:
+
+
+Public Key PIN:
+	pin-sha256:KV163ICyMOUr6z/cxe1yQ1x2GIwCrmZAG9iOyW244lg=
+Public Key ID:
+	sha256:295d7adc80b230e52beb3fdcc5ed72435c76188c02ae66401bd88ec96db8e258
+	sha1:0c3cb2bad4f2115a013b50d9cb9f7ddf183e6012
+
+-----BEGIN PRIVATE KEY-----
+MIIE7gIBADA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAqEaMBgGCSqGSIb3
+DQEBCDALBglghkgBZQMEAgKiAwIBMASCBKgwggSkAgEAAoIBAQDdB9qoZVUJ7r4L
+xp2VBSj21gvW3TF/6bQ8Uwst7/G/khMUnwkRCKHUSf+KUV5FYuBjfp0YaL2T/kKl
+Rt5bBtaQKJgQ/e9dC/mkfPnOaCpsXXhaEafTdzpJyQFzgEBQVt8e5iHXe5sUCwD8
+CfeXmjlQberpwbFHyhrFSXmOQip06VGBFAfyUVlysd5aCXLed5Bi4PeWZAd/bYPA
+7YJvYSBlKgnvvYpmdEwqYGO5kW/3Vaq91KCh1aIvII/4GUVgk7oZLbTrz4zqHTsu
+H5mCZnnLyBscsqkdvWegOeSiWRRnaQ5iRVPii2OfOM/A3dHGdriih3gIMTgo6cwl
+mGn6IMjxAgMBAAECggEAVBKIuUTR89U7tH73sZck3b7NAg1gpqbeR5POzMpXyeZm
+G5HigPgnlfgPmy0YDoxtjWq7lm1Aruonr3YlXbpcIrlOHih4w4uqiUaAPmKgwFdN
+T/UnQOg445fxVV2TGPvyIm6msK/zbMxCs5uW8bNX2Z/1mrRyGjxlsmUgN1wzigP/
+7qdzQjhADz6vc8A4sCHAJDAEhdUBDk5LmNsZ+4g53sGwypQa9r6Nw7u3EDRvU8N3
+uO3ysWaP9m6otNJwUYyyJ1leAZ5+sk2kKnoJL8vn99jdofeXYcsXLF8CGYQcVMgx
+41CwJiZPetnA/k57tn21u4bZZxBHfWJ75LSaXsmqAQKBgQDdXJgBbOOx8DeL0Td4
+d5sa8ibCtYpYm/Dyu8xmI+qKnFBi5tbqEbrz7oT9nUU+ylVlEUZGHgNYI1REA9mF
+UEOslye/4V6pF6lDz+Ru0wkMbBF0jH3d7b6Wu1vTucGDs6NwUtR0HNV4MXMrG8Dc
+KPhRVUrPFrMDsVjSt9+8y29fvQKBgQD/ngAdGN0JCOYgELXqydW4FyzOx5zRCCKV
+4EEfWT4rkQeAIX9hc650JMF9pjPg6CAH7eT92VVlrnt2o8kQNSZHeAvRRaEx3Nej
+Uhck/1VL0MCeEnP1UdGJq3VqCwi3jZrT1jvD7uMMR456AUxX0sx9t789As+OCrBD
+S7QV0KoXRQKBgDUfs5sj9sENVUdIvnc6vQ6KbqLrznfVdM3MJBGfLPp26RPTMmCa
+QLOp2mDDDYs0I6pNqv/I1CSi1eY8xkcoLBWPcQqrm3wZIZYUnk26d8Fzbfz6enp4
+Q/UIodD+E2L4CZE7T6FOCiz+MRV3Y6Fyc6WRQpLQb8XDGf34AsncSK5BAoGBALQz
+NY9NrN0mqdynCygGu6S4qbzoWbO+0WrpGd+4sSxTZH8+niccPzrfgoxKs730xkfw
+vIL8SMiS9bTQh/jmDyNJDMOuG5IkRtx7DZfmbMIy2udUyOyDjn1II1DrkGyd5i06
+lQ1uhh9s/pMiASjUkZZ7B9VB+wH+pP38C2tpm88lAoGBANLI/DqMKNMVbwt7UX+p
+izz17fVr0dfk6chGFoAc+Hj8EL9VE2daouYrUYbK0VMgHuT4gsrNSla6vHrcFroW
+Q8pmIfJzG8reYJXRuHut4R3VSC+Hg0AApOqsLkumyLFKkBaq5ZyRqe5X7F0Ttm28
+pu+5G7V8RCEkBscIlxZXIl/T
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-client-key-rsa_pss_512.pem b/crypto/test/data/tls/x509-client-key-rsa_pss_512.pem
new file mode 100644
index 000000000..82ab5d95b
--- /dev/null
+++ b/crypto/test/data/tls/x509-client-key-rsa_pss_512.pem
@@ -0,0 +1,138 @@
+Public Key Info:
+	Public Key Algorithm: RSA-PSS
+		Hash Algorithm: SHA512
+		Salt Length: 64
+	Key Security Level: Medium (2048 bits)
+
+modulus:
+	00:d4:ed:b5:a7:85:5a:ba:9c:02:b8:fc:02:46:1e:e3
+	6c:54:34:72:3c:fc:56:eb:0b:ad:9d:95:83:a3:09:15
+	9d:f1:e7:1a:93:21:3e:b5:b3:64:7f:98:83:97:a2:b7
+	ca:02:c4:48:a2:55:3f:29:b8:b1:87:61:6d:72:5f:7a
+	9f:20:69:f4:82:2c:7e:48:0d:d6:57:40:92:2c:13:9f
+	e5:44:75:d4:ad:41:f6:c9:f4:74:c4:31:14:dd:44:8c
+	ec:25:5b:4f:07:51:bc:4e:21:bd:47:c9:e8:56:b2:1e
+	f1:5d:e0:56:36:c8:18:18:86:71:41:bb:c2:3c:06:ca
+	e4:71:f2:cd:ec:9f:09:a0:05:6e:b4:d9:32:65:53:9b
+	5a:7a:b9:a2:30:7a:cd:06:a6:47:3f:f4:05:9e:87:b7
+	2f:b2:e0:fc:63:c5:ec:2c:19:ed:32:ad:ee:71:9c:37
+	d1:34:f3:aa:1a:ba:ed:cf:40:28:82:43:11:54:83:74
+	42:db:70:f7:58:12:c5:11:af:1a:05:26:24:ef:81:8a
+	26:ee:2c:f3:8a:c4:2c:0c:47:cc:76:2b:7a:ce:e0:bb
+	80:d2:d0:5e:c8:8f:1d:03:c5:4c:47:1b:7b:90:c4:d3
+	0b:9f:8b:6e:29:bd:ab:25:cd:aa:1e:ad:72:19:02:c0
+	11:
+
+public exponent:
+	01:00:01:
+
+private exponent:
+	01:23:1b:db:3f:2d:12:de:0e:6d:aa:7a:e0:a0:fd:99
+	f0:81:2f:33:00:2d:fe:a7:5b:50:02:22:67:d6:7e:95
+	0f:5b:aa:9a:aa:8c:c9:2f:a2:13:c4:5e:bf:8a:90:ec
+	b5:43:13:18:3a:d8:51:82:b8:ff:fe:17:35:8b:28:fe
+	7c:8f:d4:4c:75:ac:5e:fa:23:f0:e7:59:60:7e:e2:55
+	b9:1d:df:fa:e4:e5:4a:82:d1:b4:d2:86:48:00:3b:b8
+	6f:22:a3:b3:68:4e:57:24:7a:fc:4d:29:be:7c:c9:09
+	84:f4:d3:c1:0b:24:85:cd:02:01:d5:dc:dd:b1:33:98
+	2e:3c:e5:7c:69:e2:e7:e4:02:83:b5:e8:d0:05:c5:cd
+	5b:8e:72:f7:ee:b2:d4:11:15:85:b3:b3:4f:ac:cf:77
+	81:73:68:a9:70:fc:b3:94:24:f9:77:f5:38:4f:af:ab
+	cb:4e:7f:c2:79:76:87:f9:0f:a3:3b:5c:95:61:64:11
+	3a:40:98:28:51:86:48:11:41:30:e2:1a:94:94:06:d0
+	0a:15:de:19:13:9f:f3:06:b8:03:68:8f:87:b2:3a:4f
+	f3:75:bc:f7:5a:e4:1e:b4:49:29:09:da:57:e4:43:ea
+	96:bd:74:e3:f3:38:5a:bd:b3:da:cc:09:99:f6:09:19
+	
+
+prime1:
+	00:f0:d9:0a:ee:11:50:da:c9:01:1f:5c:3d:c8:82:3b
+	1c:0c:27:17:80:69:fa:d1:9d:ca:d2:7f:12:90:e9:a8
+	e5:36:f0:b7:8f:8e:90:f0:0a:78:53:0f:93:51:f0:f4
+	72:a3:1a:de:ea:0f:5e:8f:84:c3:57:39:38:93:73:cf
+	94:6e:1a:56:ef:36:d9:22:39:75:76:5b:4e:f6:54:e7
+	02:32:9f:54:5f:1b:02:37:50:f0:49:1b:e0:e6:d1:bd
+	b8:07:9b:7f:15:fd:ea:53:08:59:e8:17:66:d5:10:e4
+	a2:f1:3e:c3:c8:7e:68:a2:a1:5f:04:f1:7b:a6:c5:3c
+	73:
+
+prime2:
+	00:e2:53:03:dd:5d:f1:fc:27:a6:d7:01:b1:5e:f3:26
+	5d:9e:fc:f2:45:85:4b:10:86:97:a5:9d:2b:19:3b:35
+	8e:91:36:67:50:d0:da:16:de:c7:13:99:76:b8:9b:2f
+	44:fc:6b:c3:29:ec:a7:11:38:05:de:3d:2e:85:1a:49
+	88:28:b6:e0:1b:8f:6a:0a:21:56:ec:ee:56:34:b5:20
+	e6:a2:c0:b0:08:c1:48:13:60:e3:65:b1:4a:b9:6c:9b
+	a4:63:92:2f:5a:e6:6d:80:2a:c2:97:53:87:05:dd:08
+	1d:98:52:c9:88:a9:d3:5d:18:d7:2b:5e:0c:63:e0:94
+	6b:
+
+coefficient:
+	00:8e:60:92:ac:a2:02:d9:67:c7:c5:70:13:d2:b6:2f
+	5d:b2:a1:68:0e:46:db:33:f6:8a:a4:bd:06:07:db:5b
+	39:62:14:e6:81:95:32:ca:89:b7:dd:87:60:bd:98:33
+	5d:a8:21:25:d9:64:fb:5f:52:a5:28:e8:05:e2:7b:5d
+	43:ae:fd:d2:98:fe:20:9e:4e:65:96:11:c4:ae:91:a7
+	36:cb:3d:8d:fe:29:7c:91:bf:8b:45:17:f6:7c:29:41
+	1a:4b:87:85:c2:95:96:d5:8d:c7:5b:7a:29:6e:c3:6a
+	c6:6f:38:55:f7:9f:aa:27:c4:a7:18:8c:42:f1:b2:94
+	9d:
+
+exp1:
+	7c:76:ed:9b:11:ff:c2:d0:d5:6f:ab:6f:92:4b:1a:d8
+	e7:be:db:fa:54:ca:75:c1:21:ab:9e:57:ad:e3:d2:90
+	81:cf:ec:4c:97:d4:76:f8:32:2e:5a:82:3b:7a:56:19
+	58:08:ee:e1:ee:87:63:8b:ac:97:4a:ce:de:04:9f:65
+	89:70:bb:34:6c:17:d2:03:f7:9b:ee:9b:e3:d9:04:78
+	b2:48:7c:85:99:a3:8f:8a:98:62:6f:b1:ce:16:de:00
+	58:8e:17:22:fa:51:3a:0f:ba:c6:a2:31:56:32:a0:b5
+	44:0e:b7:86:c9:2c:b1:be:cb:27:f6:d3:7b:df:b9:d9
+	
+
+exp2:
+	32:88:88:9f:5f:bf:8d:26:a9:58:ee:76:d5:15:83:66
+	79:fe:4e:75:f9:5a:16:59:86:f8:a2:8c:21:f9:17:6f
+	3a:bb:23:fc:66:75:9b:8f:a8:71:96:dd:6c:40:b2:20
+	3c:20:2f:96:67:d1:b1:c5:89:81:e2:b5:45:60:e6:34
+	31:ab:0b:84:fb:d3:98:69:73:48:39:bb:23:cf:a1:85
+	fd:a6:fa:67:2a:08:d6:d2:d6:53:39:6f:ce:d1:12:3b
+	75:44:09:b0:c9:2c:7f:e6:8c:46:4f:8f:21:5f:05:d5
+	dd:d1:f6:4f:be:63:84:30:ec:b2:31:30:a1:08:5e:fb
+	
+
+
+Public Key PIN:
+	pin-sha256:xZynWKbgc/clJ1vmaUuUrDqVNLkKBsbEVke+Uj4T30M=
+Public Key ID:
+	sha256:c59ca758a6e073f725275be6694b94ac3a9534b90a06c6c45647be523e13df43
+	sha1:c19f5569864001b25aad7ff9de9d200574d2b257
+
+-----BEGIN PRIVATE KEY-----
+MIIE7QIBADA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3
+DQEBCDALBglghkgBZQMEAgOiAwIBQASCBKcwggSjAgEAAoIBAQDU7bWnhVq6nAK4
+/AJGHuNsVDRyPPxW6wutnZWDowkVnfHnGpMhPrWzZH+Yg5eit8oCxEiiVT8puLGH
+YW1yX3qfIGn0gix+SA3WV0CSLBOf5UR11K1B9sn0dMQxFN1EjOwlW08HUbxOIb1H
+yehWsh7xXeBWNsgYGIZxQbvCPAbK5HHyzeyfCaAFbrTZMmVTm1p6uaIwes0Gpkc/
+9AWeh7cvsuD8Y8XsLBntMq3ucZw30TTzqhq67c9AKIJDEVSDdELbcPdYEsURrxoF
+JiTvgYom7izzisQsDEfMdit6zuC7gNLQXsiPHQPFTEcbe5DE0wufi24pvaslzaoe
+rXIZAsARAgMBAAECggEAASMb2z8tEt4Obap64KD9mfCBLzMALf6nW1ACImfWfpUP
+W6qaqozJL6ITxF6/ipDstUMTGDrYUYK4//4XNYso/nyP1Ex1rF76I/DnWWB+4lW5
+Hd/65OVKgtG00oZIADu4byKjs2hOVyR6/E0pvnzJCYT008ELJIXNAgHV3N2xM5gu
+POV8aeLn5AKDtejQBcXNW45y9+6y1BEVhbOzT6zPd4FzaKlw/LOUJPl39ThPr6vL
+Tn/CeXaH+Q+jO1yVYWQROkCYKFGGSBFBMOIalJQG0AoV3hkTn/MGuANoj4eyOk/z
+dbz3WuQetEkpCdpX5EPqlr104/M4Wr2z2swJmfYJGQKBgQDw2QruEVDayQEfXD3I
+gjscDCcXgGn60Z3K0n8SkOmo5Tbwt4+OkPAKeFMPk1Hw9HKjGt7qD16PhMNXOTiT
+c8+UbhpW7zbZIjl1dltO9lTnAjKfVF8bAjdQ8Ekb4ObRvbgHm38V/epTCFnoF2bV
+EOSi8T7DyH5ooqFfBPF7psU8cwKBgQDiUwPdXfH8J6bXAbFe8yZdnvzyRYVLEIaX
+pZ0rGTs1jpE2Z1DQ2hbexxOZdribL0T8a8Mp7KcROAXePS6FGkmIKLbgG49qCiFW
+7O5WNLUg5qLAsAjBSBNg42WxSrlsm6Rjki9a5m2AKsKXU4cF3QgdmFLJiKnTXRjX
+K14MY+CUawKBgHx27ZsR/8LQ1W+rb5JLGtjnvtv6VMp1wSGrnlet49KQgc/sTJfU
+dvgyLlqCO3pWGVgI7uHuh2OLrJdKzt4En2WJcLs0bBfSA/eb7pvj2QR4skh8hZmj
+j4qYYm+xzhbeAFiOFyL6UToPusaiMVYyoLVEDreGySyxvssn9tN737nZAoGAMoiI
+n1+/jSapWO521RWDZnn+TnX5WhZZhviijCH5F286uyP8ZnWbj6hxlt1sQLIgPCAv
+lmfRscWJgeK1RWDmNDGrC4T705hpc0g5uyPPoYX9pvpnKgjW0tZTOW/O0RI7dUQJ
+sMksf+aMRk+PIV8F1d3R9k++Y4Qw7LIxMKEIXvsCgYEAjmCSrKIC2WfHxXAT0rYv
+XbKhaA5G2zP2iqS9BgfbWzliFOaBlTLKibfdh2C9mDNdqCEl2WT7X1KlKOgF4ntd
+Q6790pj+IJ5OZZYRxK6RpzbLPY3+KXyRv4tFF/Z8KUEaS4eFwpWW1Y3HW3opbsNq
+xm84VfefqifEpxiMQvGylJ0=
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-client-key.pem b/crypto/test/data/tls/x509-client-key.pem
deleted file mode 100644
index 386711f9a..000000000
--- a/crypto/test/data/tls/x509-client-key.pem
+++ /dev/null
@@ -1,32 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIFewIBAAKCATEA2HMtdpNQ+bHX26BW/haQL42XQKpZb71KRCtUnYVZbYNTriRc
-t9NIs+Ifm7clUH/hLTNE3xYHoBhG/quXl1NwJT7rq4vBZ2m2iHhV3GkV8mhfbIAn
-7Uw64ehw+US/CvvNccX8gA9aCjNqRdqXEcWGwKRoW0D0kEoSXzctCqdo5h0mwcPR
-+DVVMwQiFDXS+LkqhL3eF2WsebQhuFiMNi+QShO6vgWIelGvj7kjmEVttEOsRDUx
-HAVtv7kMjmsi7QAyesLmyyFt7RF6BLYZZvVbjyz+Augr+MXmY2noH/ExkKfrhaLv
-dql3qEA1xKNFxi7LLJ8BU1P9jJ1So7nYX4P8Cely6oq/Gee1bPdhLK61K+R/wf9i
-L70krkxud7hmIlmvf0Ma0dHH3HM6dvjYaZ5/JwIDAQABAoIBMCdNzuEbwhX9Tcmj
-VXihJ0CDUQZciI4KTNyRE7Xg24rP0JesIav9sVN8yamQebWi6wQ2rZhm2y6eifG/
-vfCsJY6V3NyTLaT2JL+mPk0eRe51NnKw2M81yvFvsGgLLDe13qn8viuQ3hRBHtid
-Z1ZCTIRZtltvsZkr4icpEURAfwNeIsYHpW6RXK29X+TUm0Ev+oENKzGLdGTK06Xk
-6RRV7a34BIdg+7qVWL4ROzKPHKIrHw/Jmg+775UekvkGfos8Cd2eseHJROhAIje1
-WQTvDzOfx3PiUW9RW9/CKUXNeRtWJVhUG8lfqdKejn1+8CxPzwqgNRJbpGvCFa0R
-oDQ7+3l9ELdcA+sv9Qp2OFXIhagzXlGcC4SwMQrBiz6oK5dDqb7VEjE2igOGrRUZ
-i+7G3lECgZkA2qztgn6CbUhvLEXtiUr1EwX6ZHiB1ZVWjGo8cGmS2wI4/z48Ogln
-IvxnfAF7y9PYdHuNFkwbzFVRRdToLSw0bjkZVVzRodEJexvsK8LJQu2LycKOPO0n
-TLuWmr030wuZyU8ebrfuvdM7qDSSzrUc28+BUkPGiWAQ4lybqppoXtgXFeOLrDvn
-vp4OTkJmphM4eOSn8aPQSHECgZkA/WUAmT+/l+y6q6xo8WqEbvIkVzSfrSG3oXCd
-V40oNhEPHRRDWugq19mkBOMdFWEabAKaZTl1lLfijvs0fN2RIcARVAYrg2IlJvj4
-20/muERs3yM7tX7MgFCAdApgTGBToDy2O2ANdOhgG9KCcmf1D9ZKGnum7WhQHQaD
-3RV+S9LRhVyiIbeQzJxv8ejAaQVJPe99vez+TRcCgZgkLRuVzQwSvDr4HhFv9yCY
-JxMHcBA6n1wUGrco+a474SBAybD5APk5BnywPSaXz9ItYwsyNyEaKrspTFGkt31t
-BrE0OAjONmDVJwdpLe5Rzi6kEDWryqgHv7jonIkRtweYECi+tFsguENUTm5DGB9Q
-FgIU8/VyYJwqdpuiG61Mk38uNdizg62REWDYfY+xxdg/18QY67rXYQKBmGG/UaDM
-T5tKjaPlyUG/hkDKFayyNxpxVEXpjDiW0jkxEXR1OZpazxQe97+O4Mw7fhbGVkrQ
-BISO/s2LJ+83BWJQlh6klqqC9LP4/P6U7vqMIrdc/w5/UGH7K+IXkphD3F6GrQFw
-hyBe95wj84Awi/9E+acHphgU0jqwJbPmM6cKNxrL5hs9lZToj+Jwl7CrglprBUV7
-o4mXAoGZAJZ5BBXWeXf161K/n1hQY9dFLSYHjgv4sZMkDqyNhDpdW9HqJ2XEuscG
-Gf7vaCMEV+iOHFKYBS6XMcRXg+R7VOPRvPBNwQXf1ImcQzTVlerWHwMW+y0NAubd
-IIzAXPMzjcOBBiac2wg3cvBTQE29XJ/hy4Rk6qz/oWaIinYStCelCr1FR/Vw5HzE
-/SYmOzdAkWM9bv3Mp/g2
------END RSA PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-client-rsa.pem b/crypto/test/data/tls/x509-client-rsa.pem
new file mode 100644
index 000000000..d49498959
--- /dev/null
+++ b/crypto/test/data/tls/x509-client-rsa.pem
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDQjCCAiqgAwIBAgIMWYGU8BDBJ3AgFnsvMA0GCSqGSIb3DQEBCwUAMCMxITAf
+BgNVBAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBDQTAeFw0xNzA4MDIwOTAxMzZa
+Fw0zNzA3MjgwOTAxMzZaMCMxITAfBgNVBAMTGEJvdW5jeUNhc3RsZSBUZXN0IENs
+aWVudDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM/xijmXl7PVbZwS
+BE6h3A2pEsv4Au86itIS4qb7GJNvOZ2pwx22/AOGr/JvsYGGnOsVxQ63mE9xBz2l
+jPsqGDhQeLD7CptXZAcwYa6k2z6S91Sd0GCNOgPuFiXKFXt9Si82uNB42r7kHG04
+exmY7uKUdMp1IxUbZ47leBmT7W5I65lK2acxkzRK6bdPErnNGzZt4t/k6E0Oowf6
+ElUf0UvhsX0trFB9O8yvCciqAQoGUw7b1yzWA9bWi1AQUPgx58eGMrRgQXfFnuuG
+efHqU+/nAVAt5pHHU0GqB09jcv1lJSQpDMtCBa5tsorVvy8OiiSJx15tIyNOtVcc
+9y/oH3cCAwEAAaN2MHQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcD
+AjAPBgNVHQ8BAf8EBQMDB4AAMB0GA1UdDgQWBBSoiZsEL0tgug7IyLHTI1fA+tNH
+OjAfBgNVHSMEGDAWgBQrQlWadXqqzBV+2iw7BZXrvFHaQjANBgkqhkiG9w0BAQsF
+AAOCAQEAx3E9wM3ASFrxZ8Zw/036WHeJUjgOL+W9TM4Y4GZpQDkyMqKxs3pmyqcU
+xuXWV+SmTCkOAvrH/kWhmgDxSs3eGrGBsRPEZcUolcedDWqPJpy0qZH6mv3Ge0+v
+V+YOcd0qSVHaLpR1LQHrDnatASaVVRF4Ohk2IRSvjzYYJ158D3+erB79Txt4kqK2
+oDMp59uI2K4VwNiXeuWQgolaoKTEtPSrjuuKzetrwLN8ajii5rkiOKyuKlkZ2SyE
+BYp/ye1hzmqXRHNrObbfMmggwimrShYWUSwHp0/gKMEhen+yqd9C2KEVj7dqm+oL
+Jo+TGr6L77LBgZ5r7vfzj4tzL877mg==
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-client-rsa_pss_256.pem b/crypto/test/data/tls/x509-client-rsa_pss_256.pem
new file mode 100644
index 000000000..77ec9737d
--- /dev/null
+++ b/crypto/test/data/tls/x509-client-rsa_pss_256.pem
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIID2jCCApKgAwIBAgIUej61CoI5BANd5v/ceHNxIOtR8d0wPQYJKoZIhvcNAQEK
+MDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMC
+ASAwIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxlIFRMUyBUZXN0IENBMB4XDTE4MTAy
+NDA2MDY0MloXDTM4MTAxOTA2MDY0MlowIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxl
+IFRlc3QgQ2xpZW50MIIBUjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa
+MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIAOCAQ8AMIIBCgKCAQEA13o6
+AYteWQ8QfZVczsbqyCkudW7+bPmD1T5ybPxWlUPUYjTfBXyzs6ZKN8q24CNEGfws
+6s/8+SYarFqNg/hP2Quu/OmddTctpJMCXWkQ37d6TLYFZHNGRbL+pLMznmhrFDWO
+7t+74Hcjdrhu/fzy3QJZXtyhs12TxiziSoUhf8pZNuh33f7N/vawlv4UalxoTM+8
+/f7s4y9REM9G2x06Pc2H7GdKfSBeeWzq0yTTggW82Xnlzd9qu2KbILM1NGGuaamr
+ubYnrHsz9b7fmrQSaAZVebO6UvCRkGmx8VoR44ve3fGZylqth7plUiemBxJgECST
+S98S20kP/CH/n+aSdQIDAQABo3YwdDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoG
+CCsGAQUFBwMCMA8GA1UdDwEB/wQFAwMHgAAwHQYDVR0OBBYEFAKLYWuJSEnLypED
+/PkZ/dogyhAeMB8GA1UdIwQYMBaAFCEaiLbeA8ABgKrbcIiZpo8XzqpsMD0GCSqG
+SIb3DQEBCjAwoA0wCwYJYIZIAWUDBAIBoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFl
+AwQCAaIDAgEgA4IBAQCFjsx2JQ+AtT2AD7harhhhuCH8ah9hTLz1n+ynkmq1lmYP
+JCudOJfgWjMFlSv1ptzkvOst+Ig2BCCJrwX1akMX1cMsR/eoDUxxkqREU/irEYPj
+ePvVk0+bd6C4+nCvs/J0bv5P/16z2NLmAq8BUidi4ULPyzVn/+nAAUpAVlYi/mHP
+RQCy8UMj2ENACc4LIP1tek9cp+t5JMjsv2ogy+SPCXtq7VTMAFrckrALv9b1QLE6
+J06bp7+Q7GIkn0gTm+Z5AaddHH1ZDjqpYFcngx7wVuQCbZwTqnVJx5nQrKz+HQYt
+87KWIhR2nbtygp2oZESXQg9huH395f/h+foYArPG
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-client-rsa_pss_384.pem b/crypto/test/data/tls/x509-client-rsa_pss_384.pem
new file mode 100644
index 000000000..dda273d85
--- /dev/null
+++ b/crypto/test/data/tls/x509-client-rsa_pss_384.pem
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIID2jCCApKgAwIBAgIUbdDLDIxL8QBkB4RFPZ3TaeInTUcwPQYJKoZIhvcNAQEK
+MDCgDTALBglghkgBZQMEAgKhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAICogMC
+ATAwIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxlIFRMUyBUZXN0IENBMB4XDTE4MTAy
+NDA2MDY0MloXDTM4MTAxOTA2MDY0MlowIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxl
+IFRlc3QgQ2xpZW50MIIBUjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAqEa
+MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgKiAwIBMAOCAQ8AMIIBCgKCAQEA3Qfa
+qGVVCe6+C8adlQUo9tYL1t0xf+m0PFMLLe/xv5ITFJ8JEQih1En/ilFeRWLgY36d
+GGi9k/5CpUbeWwbWkCiYEP3vXQv5pHz5zmgqbF14WhGn03c6SckBc4BAUFbfHuYh
+13ubFAsA/An3l5o5UG3q6cGxR8oaxUl5jkIqdOlRgRQH8lFZcrHeWgly3neQYuD3
+lmQHf22DwO2Cb2EgZSoJ772KZnRMKmBjuZFv91WqvdSgodWiLyCP+BlFYJO6GS20
+68+M6h07Lh+ZgmZ5y8gbHLKpHb1noDnkolkUZ2kOYkVT4otjnzjPwN3Rxna4ood4
+CDE4KOnMJZhp+iDI8QIDAQABo3YwdDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoG
+CCsGAQUFBwMCMA8GA1UdDwEB/wQFAwMHgAAwHQYDVR0OBBYEFAw8srrU8hFaATtQ
+2cuffd8YPmASMB8GA1UdIwQYMBaAFKnwXW9hoPAB6HSyWn7UEUMcKonnMD0GCSqG
+SIb3DQEBCjAwoA0wCwYJYIZIAWUDBAICoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFl
+AwQCAqIDAgEwA4IBAQAHS+4AoR5A0sNaCrhuB8rfDfI+kcO0SqwT98d5QTJnsiqu
+/2OHecJbN7nkYKh9K+8ccWVCWncWV1dFP1fVnCibFpAF+750wLhSpb/RVfm8Gd8F
+CLuZNC6i9w7ssQzus7SpBx2viY615zxRJ6kdhGhPSxc98tPAHkdkdWGWq0R8Q3u9
+hP/mj/oAxskhvF/Lofwk5uyYSNIcZ9w3YPmb70OUWDH1yreF7s0J3hOPZZiC7ZA4
+Nao6UPpwKk1IdZix63xHFwCN21AtQIHoL/aRcVSlHlol5VOgaWbetb1BTBqEoKux
+s4hJIMFIslA++GDX/qj7JrYr+FJTOqFF2B+Rm7wO
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-client-rsa_pss_512.pem b/crypto/test/data/tls/x509-client-rsa_pss_512.pem
new file mode 100644
index 000000000..2bc13ae96
--- /dev/null
+++ b/crypto/test/data/tls/x509-client-rsa_pss_512.pem
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIID2jCCApKgAwIBAgIUWlbiagMGpRhGjEwawdwRz964ObEwPQYJKoZIhvcNAQEK
+MDCgDTALBglghkgBZQMEAgOhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIDogMC
+AUAwIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxlIFRMUyBUZXN0IENBMB4XDTE4MTAy
+NDA2MDY0M1oXDTM4MTAxOTA2MDY0M1owIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxl
+IFRlc3QgQ2xpZW50MIIBUjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6Ea
+MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAQ8AMIIBCgKCAQEA1O21
+p4VaupwCuPwCRh7jbFQ0cjz8VusLrZ2Vg6MJFZ3x5xqTIT61s2R/mIOXorfKAsRI
+olU/Kbixh2Ftcl96nyBp9IIsfkgN1ldAkiwTn+VEddStQfbJ9HTEMRTdRIzsJVtP
+B1G8TiG9R8noVrIe8V3gVjbIGBiGcUG7wjwGyuRx8s3snwmgBW602TJlU5taermi
+MHrNBqZHP/QFnoe3L7Lg/GPF7CwZ7TKt7nGcN9E086oauu3PQCiCQxFUg3RC23D3
+WBLFEa8aBSYk74GKJu4s84rELAxHzHYres7gu4DS0F7Ijx0DxUxHG3uQxNMLn4tu
+Kb2rJc2qHq1yGQLAEQIDAQABo3YwdDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoG
+CCsGAQUFBwMCMA8GA1UdDwEB/wQFAwMHgAAwHQYDVR0OBBYEFMGfVWmGQAGyWq1/
++d6dIAV00rJXMB8GA1UdIwQYMBaAFKVY4bgN1p+8NOXoPdj6DKWDscBFMD0GCSqG
+SIb3DQEBCjAwoA0wCwYJYIZIAWUDBAIDoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFl
+AwQCA6IDAgFAA4IBAQBm9QAlG/xd8O6/TgJwnxmjKcSNhWgFHz4yY2uSMRP51VR/
+SzoXIY3drTWz3fuXSxbjAcVSlfmSX3KMVm1M6IKOw37PwUD8C5oVpLEY/NpwTjfb
+WS5RR0XpAi2JJhPa9vJEO8PMdDV5C07u3fs5QvysNPZqJJvn+i2rU44JTeeJzBf8
+hesUVx4m+16C4cdU80prTnq9QYnZi08vIJ0iW0czxrsRikcqAnb+FEsrnbl1t3Wy
+PcdYUq7SkQ3B3pnreOMRnRGGP0dq4YOPto6nKD2h70TQ2rH2JhSlDy7aPNx9jUKO
+dwz0hfct7G7Wyoz2U+rI7ulHt3Mck4DyOam+TMEJ
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-client.pem b/crypto/test/data/tls/x509-client.pem
deleted file mode 100644
index 4f2341995..000000000
--- a/crypto/test/data/tls/x509-client.pem
+++ /dev/null
@@ -1,22 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDmjCCAlKgAwIBAgIEUqKc2jANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDExhC
-b3VuY3lDYXN0bGUgVExTIFRlc3QgQ0EwHhcNMTMxMjA3MDM1ODE4WhcNMzMxMjAy
-MDM1ODE4WjAjMSEwHwYDVQQDExhCb3VuY3lDYXN0bGUgVGVzdCBDbGllbnQwggFS
-MA0GCSqGSIb3DQEBAQUAA4IBPwAwggE6AoIBMQDYcy12k1D5sdfboFb+FpAvjZdA
-qllvvUpEK1SdhVltg1OuJFy300iz4h+btyVQf+EtM0TfFgegGEb+q5eXU3AlPuur
-i8FnabaIeFXcaRXyaF9sgCftTDrh6HD5RL8K+81xxfyAD1oKM2pF2pcRxYbApGhb
-QPSQShJfNy0Kp2jmHSbBw9H4NVUzBCIUNdL4uSqEvd4XZax5tCG4WIw2L5BKE7q+
-BYh6Ua+PuSOYRW20Q6xENTEcBW2/uQyOayLtADJ6wubLIW3tEXoEthlm9VuPLP4C
-6Cv4xeZjaegf8TGQp+uFou92qXeoQDXEo0XGLsssnwFTU/2MnVKjudhfg/wJ6XLq
-ir8Z57Vs92EsrrUr5H/B/2IvvSSuTG53uGYiWa9/QxrR0cfcczp2+Nhpnn8nAgMB
-AAGjdjB0MAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0P
-AQH/BAUDAwegADAdBgNVHQ4EFgQU+vZUEQX5t+SGCe44YgvMmiMm8NkwHwYDVR0j
-BBgwFoAU9mOvr6Pi7+4O5bKxRihqeCkyHukwDQYJKoZIhvcNAQELBQADggExAI17
-s7teVt0hE9Zp40++AkK1k3/z7CCFsg+yS8+1VgFx5mU5XgNZMMgaASo1PCd9ZxFF
-QPXJ18MT4YjI6kWIC5RZspsTCwCq7jyg8bw36MHTNFUTYgfgMbhWPrUHRuOq0iG4
-+wJVR6lXuHz/yaqMVNiy4yxBero7+zYiPZ+PKjEcvQxfcG+dIgptR6plNkFeZipT
-VCsSrit6iuStqmR7Jpj3nxPkR+g8aAfPCeiCxrSLNJFBj5J5AGSfkBzgjF5IE/z+
-tOgcmlFwtwOAIdRn/FUr7g1FFZh+Wy7AiB7qU4EcoW1HpcXJuRuKDrTzFH7L88zu
-nrv8n9XJSMDxdnP6kNwIv89HmYJWxtToO68PsATiGA6DiUUPk+FqIHqP0kgXXMSc
-ODFGSlXqh4ocvtA4APE=
------END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-server-dsa.pem b/crypto/test/data/tls/x509-server-dsa.pem
index 1078dbcbc..029d88ac2 100644
--- a/crypto/test/data/tls/x509-server-dsa.pem
+++ b/crypto/test/data/tls/x509-server-dsa.pem
@@ -1,32 +1,27 @@
 -----BEGIN CERTIFICATE-----
-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
+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
 -----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-server-ecdh.pem b/crypto/test/data/tls/x509-server-ecdh.pem
new file mode 100644
index 000000000..7c8f04435
--- /dev/null
+++ b/crypto/test/data/tls/x509-server-ecdh.pem
@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE-----
+MIIBtjCCAVygAwIBAgIMWYGU8BHdfIBy0aZkMAoGCCqGSM49BAMCMCMxITAfBgNV
+BAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBDQTAeFw0xNzA4MDIwOTAxMzZaFw0z
+NzA3MjgwOTAxMzZaMCMxITAfBgNVBAMTGEJvdW5jeUNhc3RsZSBUZXN0IFNlcnZl
+cjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLWCgejCbKGDGpoTzBtYGeQt3OSZ
+B3aPwiAaQog3VfsSsERXWAiUdogMibtR4lLl6s9QbWDorQWXhejIUi7woY2jdjB0
+MAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0PAQH/BAUD
+AweIADAdBgNVHQ4EFgQU0L5LXF6oiQE1eNyzRztmBOoHiR0wHwYDVR0jBBgwFoAU
+0ma/FGcW5gGlL//B26Xmj0JISecwCgYIKoZIzj0EAwIDSAAwRQIhAM6F/DDKK7H9
+HbkqCcUsxTCTakQ1wcAkkRDMCI/lKLxCAiAUjBMndyVRzNlY6h4+2NP0A3RT2Q87
+2mnmiPSuW9Q4iw==
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-server-ecdsa.pem b/crypto/test/data/tls/x509-server-ecdsa.pem
index 221fce99a..ffaa81e9f 100644
--- a/crypto/test/data/tls/x509-server-ecdsa.pem
+++ b/crypto/test/data/tls/x509-server-ecdsa.pem
@@ -1,17 +1,12 @@
 -----BEGIN CERTIFICATE-----
-MIICqzCCAWOgAwIBAgIMVOBhgRR/e3iAhKcbMA0GCSqGSIb3DQEBCwUAMCMxITAf
-BgNVBAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBDQTAiGA8yMDE1MDIxNTA5MDYw
-OVoYDzIwMzUwMjEwMDkwNjA5WjAjMSEwHwYDVQQDExhCb3VuY3lDYXN0bGUgVGVz
-dCBTZXJ2ZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQzME1njDHqizStYiqf
-xC45McfdqtcDFCsyik7g7JwwGBzDI3WTP5stb8gLHwGARqkaTIDr/wau+N12bIxp
-Tj6Co3YwdDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1Ud
-DwEB/wQFAwMHgAAwHQYDVR0OBBYEFOaifCD845nra+asxN59LzV1LlkxMB8GA1Ud
-IwQYMBaAFPZjr6+j4u/uDuWysUYoangpMh7pMA0GCSqGSIb3DQEBCwUAA4IBMQCc
-wMTPTd/82sDeJkN6B8M2AFfLf/0uw01/2I/UQp2rJCJu1Yps9S1foHz939o4qJA3
-+kieb3eVE8rcMQHMv42hagj09LmYY1Unzdu8xJDMq7gDIph72Fjy5YFqb9je79C4
-JPOadGsAsG9OY9DxTKsHyiX3Mqztx1hUQ0mNiAyaFEDGus+ZhSGMdHj0uR1LqZL9
-9OgszZY0UomZfhwnPg2sHumdh+13RZ38w33b43LpCcyu7v05szquqJ8lnol8j10r
-6sH1xXZmb6OJIXZeHTnX5Dv1z0/R8qyG3gyVU7sP+8KVk529Q/YjIJ8YEV1LSERW
-9cKbI+8DMxVE/z01gd0YLqpPcDSfzGUTww+lMWyGQ+KDUD2bC2O4LbZhzT+ZxCPN
-+mw+T5KV78wcG02PThMf
+MIIBtjCCAVygAwIBAgIMWYGU8C5XSABmYVGJMAoGCCqGSM49BAMCMCMxITAfBgNV
+BAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBDQTAeFw0xNzA4MDIwOTAxMzZaFw0z
+NzA3MjgwOTAxMzZaMCMxITAfBgNVBAMTGEJvdW5jeUNhc3RsZSBUZXN0IFNlcnZl
+cjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKzro1Qhiu2IrXTK1X9xZ20T0eL0
+vxwmwTGcr7EvI9kRnhXDsV5Har9CmzInfIcOhL9VlS4K2WUhxNMuLYr5EIKjdjB0
+MAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0PAQH/BAUD
+AweAADAdBgNVHQ4EFgQUNjGYYKninT7GGg2A3pGsO2xPByIwHwYDVR0jBBgwFoAU
+0ma/FGcW5gGlL//B26Xmj0JISecwCgYIKoZIzj0EAwIDSAAwRQIgWYw3r0KqlS60
+h4RON2Ycq7oH2qxf+b9mWaehP8sebHoCIQDJyu+qUegmitkVqbenVV2ypPL7x2nP
+qvghAKPod/72bg==
 -----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-server-ed25519.pem b/crypto/test/data/tls/x509-server-ed25519.pem
new file mode 100644
index 000000000..df3a379c4
--- /dev/null
+++ b/crypto/test/data/tls/x509-server-ed25519.pem
@@ -0,0 +1,11 @@
+-----BEGIN CERTIFICATE-----
+MIIBfjCCATCgAwIBAgIUEOZLZhsVbmqCJUugm0oRFrWPO8swBQYDK2VwMCMxITAf
+BgNVBAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBDQTAeFw0xODA4MjMwOTI5NDda
+Fw0zODA4MTgwOTI5NDdaMCMxITAfBgNVBAMTGEJvdW5jeUNhc3RsZSBUZXN0IFNl
+cnZlcjAqMAUGAytlcAMhAM2PquzCzWQdU5dEG7JMCCfvaaNyfRlcIhsCzF8RLWiw
+o3YwdDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1UdDwEB
+/wQFAwMHgAAwHQYDVR0OBBYEFFsSy04J6VkN2IiqBJKGV26iMRYyMB8GA1UdIwQY
+MBaAFOp5vj76ByEwboduoHWAWzajnM1mMAUGAytlcANBAOhCpwpdClN4+DFhtwLf
+br8//ymNpCOf8W4vE4pZACueKIooh2S4WnbkFwBloOntxX+4TXnD06SBlpcmoQg2
+NwY=
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-server-ed448.pem b/crypto/test/data/tls/x509-server-ed448.pem
new file mode 100644
index 000000000..3ba371f66
--- /dev/null
+++ b/crypto/test/data/tls/x509-server-ed448.pem
@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE-----
+MIIByTCCAUmgAwIBAgIUdWna0n25+zzo6pW93hOpSKLfU0swBQYDK2VxMCMxITAf
+BgNVBAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBDQTAeFw0yMDAyMTMwNzMzMDJa
+Fw00MDAyMDgwNzMzMDJaMCMxITAfBgNVBAMTGEJvdW5jeUNhc3RsZSBUZXN0IFNl
+cnZlcjBDMAUGAytlcQM6AETFuJ7D3g4EgZnNVbPW3j81X6VpJane2pY04n8bzYcs
+kAvfb5lGogDBoczMsB9opnPMdSwZQs6CAKN2MHQwDAYDVR0TAQH/BAIwADATBgNV
+HSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB4AAMB0GA1UdDgQWBBTHz9U/
+S0PulhuJNX8vOdBOjnLCqjAfBgNVHSMEGDAWgBS+BSv++BEWlTJ53q6rwnDLVnR5
+JTAFBgMrZXEDcwAp/84ZggkOUHT0qCL/8a3Qmj6HyXeb8NNVyPNSbBgW6HVQsn9c
+wquAbara1d9VFJ+ucpSdQfYPs4DVfxADVcVfaunEGujBoL9U3q/9XIJ5IT70HL1O
++PUERelTyKywKQI8Y2YYKUH6UYsesLhcAQ8DBwA=
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-server-key-dsa.pem b/crypto/test/data/tls/x509-server-key-dsa.pem
index d6073b31f..73247089c 100644
--- a/crypto/test/data/tls/x509-server-key-dsa.pem
+++ b/crypto/test/data/tls/x509-server-key-dsa.pem
@@ -1,15 +1,15 @@
 -----BEGIN PRIVATE KEY-----
-MIICZAIBADCCAjkGByqGSM44BAEwggIsAoIBAQDW5Rnf6bmWFg75kjAsdAJ0EHG5
-o1IQdzDevP34ZChcAT1NUISUYkhFQxtW57FD+eRECg7Nb6Ykl4MvPT92k3GoKtDP
-rq6zfezD3iqARfLJOKOmsa7rKcQ+NTsioVuvDZ5OeBPt5hDwAUuMmKbLhIRX2mYT
-lF3QPWlBVpzze6KO0JSPhe5WvG5bs/BvI/NWjLBMIwXRCoPtjKdft9zVWiFhHoJ7
-p1RJG9LyXf1sC2WI/joJiuH5/6qiHUVyG43jVL6QLZJROTawEbMCNEV7l8lsT3wa
-0Em1pNw0L27lmxHklK4WGOu2G6TxgOUZ4PGsKcXV4b87Epk/XOgZay3xeiDdAiEA
-1rVh2jJpQFWVvadA5rI+9LDRycTmFpaowhMxe2sVd38CggEAIBWaI7l/55Xq4thP
-Qum/HEE6H+OiWXgHhtkr5PCPdXJyL9Il0x38s1i1gwGJ33rjJrfpzAOvwNSveGCN
-XbnN4moS2uVN3zgAliXRbS/wgBVcjbYe5Q3h21kxYzOR4AO+qc5gH7xbWaXCadQF
-GWQft3KCkq+mazGoLdR4aHnxsqOyZD6bMRohRCge/a15BYtABLEp23bhRHM64PAw
-XV5vf/8lEJ08NqaYXMC2berehKt1q6bt+uA5/oSXoKS3wOrjobUScPu8b+Y5AW7y
-MadTy2RJ9eqpjyjLNyJuEFGtruRdJy2FBh4tNYuTkp9FFp6JvBHA4rP9EAq5MgWo
-jGjZJAQiAiBhYRIk49XUmvOqUx953A+n8/KWUfyZyTHPkcIXBvW+Ig==
+MIICZAIBADCCAjkGByqGSM44BAEwggIsAoIBAQCiCeJrKoYTI/0LSEmYZqsGc8L8
+aPRuP8+s62g0Ts8LeCnwjPuCKZc2+eMYuIonwChY83oC9OuigGLmRLt3OaFPtbdl
+k1M+Fmg/xfI6QP6fP4jKe3fwI/qsB6CHsGZrRTezsk7yIDxVLcykocLAPxRsUMw2
+8FzrbEO+1hXS2uwftWYxQu++im8zc2RtIgpX2S9DcHimABo3ZCehigybCsJM1if8
+FdnynsPBs71ColFWpjDekF1cfMe6HRhEwbuRQdGz+MAiqp0Ci2q3x0bKcpwPKwjR
+xZluQjBg0Jvs2noaXICDp7CRPMW/Qu288xZpFsRMuQyZmD7ZyhAQ1s+l43ZlAiEA
+p09lv8ahLfrYseJOH/2v9A94u4msDXsMHHFG+AuUXGECggEALOLb9cgY6Rr7LKUa
+S68XQHCF4QngUAs6GDCOAhR95Uo6LVE+U99IdnwN6ot25tBoZ7gMO2tbNx++PTAC
+pj/UYLJB5HshaFliiea1as/ijgV0JIUQ5BjQ+YWHQYDKuWJ5w0OztA9OttQKLzzn
+sVEBVZdv+GyfxUQj2dzS+/dF8GTS9L/1xUw1NXi+QnEjsLBDU3wqT2vup5zuCvxr
+a0FeJgqWPHcLUAfZUwegbobjEOQZrviVWlWhgyD/KXdWV8T4PVkHGWPrBUc+c5Ig
+ZhbP/q2051Aui8eU97TARoVgu/lZiTXk93lc7zFO7YBhiBJbEAtf+cVOqc0QC+Py
+LYozdwQiAiAxcsCPJCsRaG0j1eDW0xomfipUvAM3Ws9MZ38R8fxQ/A==
 -----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-server-key-ecdh.pem b/crypto/test/data/tls/x509-server-key-ecdh.pem
new file mode 100644
index 000000000..669fc5cd0
--- /dev/null
+++ b/crypto/test/data/tls/x509-server-key-ecdh.pem
@@ -0,0 +1,6 @@
+-----BEGIN PRIVATE KEY-----
+MIGUAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHoweAIBAQQhAJsXqInsRDYS26zX
+d4tHYu+WKbw2gyrnMvDOamsRyZg5oAoGCCqGSM49AwEHoUQDQgAEtYKB6MJsoYMa
+mhPMG1gZ5C3c5JkHdo/CIBpCiDdV+xKwRFdYCJR2iAyJu1HiUuXqz1BtYOitBZeF
+6MhSLvChjQ==
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-server-key-ecdsa.pem b/crypto/test/data/tls/x509-server-key-ecdsa.pem
index 01fe38567..ca898da2f 100644
--- a/crypto/test/data/tls/x509-server-key-ecdsa.pem
+++ b/crypto/test/data/tls/x509-server-key-ecdsa.pem
@@ -1,6 +1,6 @@
 -----BEGIN PRIVATE KEY-----
-MIGUAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHoweAIBAQQhALoiXMjOXuPkNVT6
-g/8PnBmXj8wEvWXCyrpO+fh9EMTdoAoGCCqGSM49AwEHoUQDQgAEMzBNZ4wx6os0
-rWIqn8QuOTHH3arXAxQrMopO4OycMBgcwyN1kz+bLW/ICx8BgEapGkyA6/8Grvjd
-dmyMaU4+gg==
+MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgHJsLqw/ZeIlLMmMZ
+u+LqjbxD7OY2VhD055Icbpp5HBmgCgYIKoZIzj0DAQehRANCAASs66NUIYrtiK10
+ytV/cWdtE9Hi9L8cJsExnK+xLyPZEZ4Vw7FeR2q/QpsyJ3yHDoS/VZUuCtllIcTT
+Li2K+RCC
 -----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-server-key-ed25519.pem b/crypto/test/data/tls/x509-server-key-ed25519.pem
new file mode 100644
index 000000000..e1784c5ef
--- /dev/null
+++ b/crypto/test/data/tls/x509-server-key-ed25519.pem
@@ -0,0 +1,25 @@
+Public Key Info:
+	Public Key Algorithm: EdDSA (Ed25519)
+	Key Security Level: High (256 bits)
+
+curve:	Ed25519
+private key:
+	f8:32:a1:54:10:e9:b2:b2:31:10:9d:05:c0:3b:58:c5
+	1d:1b:7a:67:d1:53:5e:6b:58:fe:85:1f:4a:4e:71:13
+	
+
+x:
+	cd:8f:aa:ec:c2:cd:64:1d:53:97:44:1b:b2:4c:08:27
+	ef:69:a3:72:7d:19:5c:22:1b:02:cc:5f:11:2d:68:b0
+	
+
+
+Public Key PIN:
+	pin-sha256:tt5u5+ynOHjlD3uadUUmN2V5yZLekOkkwyyk8sZH7cI=
+Public Key ID:
+	sha256:b6de6ee7eca73878e50f7b9a754526376579c992de90e924c32ca4f2c647edc2
+	sha1:5b12cb4e09e9590dd888aa049286576ea2311632
+
+-----BEGIN PRIVATE KEY-----
+MC4CAQAwBQYDK2VwBCIEIPgyoVQQ6bKyMRCdBcA7WMUdG3pn0VNea1j+hR9KTnET
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-server-key-ed448.pem b/crypto/test/data/tls/x509-server-key-ed448.pem
new file mode 100644
index 000000000..382cdd618
--- /dev/null
+++ b/crypto/test/data/tls/x509-server-key-ed448.pem
@@ -0,0 +1,28 @@
+Public Key Info:
+	Public Key Algorithm: EdDSA (Ed448)
+	Key Security Level: Ultra (456 bits)
+
+curve:	Ed448
+private key:
+	af:0f:44:88:c8:11:f7:e4:87:19:b2:e5:f2:17:a4:e5
+	0a:69:78:ed:1c:34:f1:dd:8a:b1:c6:92:92:64:26:94
+	8f:46:45:af:b6:58:d5:b1:20:ce:5e:d6:b7:8e:48:e9
+	0e:14:a7:94:56:d5:14:c8:9d:
+
+x:
+	44:c5:b8:9e:c3:de:0e:04:81:99:cd:55:b3:d6:de:3f
+	35:5f:a5:69:25:a9:de:da:96:34:e2:7f:1b:cd:87:2c
+	90:0b:df:6f:99:46:a2:00:c1:a1:cc:cc:b0:1f:68:a6
+	73:cc:75:2c:19:42:ce:82:00:
+
+
+Public Key PIN:
+	pin-sha256:un7RlIHaUdVuKc7nlN4TlmbH42dUsl+RH5jeVUKSyiA=
+Public Key ID:
+	sha256:ba7ed19481da51d56e29cee794de139666c7e36754b25f911f98de554292ca20
+	sha1:c7cfd53f4b43ee961b89357f2f39d04e8e72c2aa
+
+-----BEGIN PRIVATE KEY-----
+MEcCAQAwBQYDK2VxBDsEOa8PRIjIEffkhxmy5fIXpOUKaXjtHDTx3YqxxpKSZCaU
+j0ZFr7ZY1bEgzl7Wt45I6Q4Up5RW1RTInQ==
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-server-key-rsa-enc.pem b/crypto/test/data/tls/x509-server-key-rsa-enc.pem
new file mode 100644
index 000000000..d1e835252
--- /dev/null
+++ b/crypto/test/data/tls/x509-server-key-rsa-enc.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC3mOPbXv2BWujn
+fNGxYw/JNbyW7qQTaKnZogE/aIh5m86hinj7agtV2UDsBXvaQSTrp8vXwKNr9IYX
+VLEvT5lM8mj+GDlJ1jhKbo1ODbZPY7b1q5e1RtMUhNX3GgZDevrLL0Tt/g912KD4
+U7vTsS2TQ35hXOQ6bknN9VWNhat0lQ/L60q2QofPdk9PydFZV9CxkoGvwV1BqiTp
+JiEloFAf3h07Gim/e3K6OlU2ci+Lb6/uvSDPiOIVYPBURmVjs49sLha2jDj51II4
+9KpPbJwNUT902VrvoRwhrWP8FxYO0QxG9J07IdsNLQLzVWBxz03qK3v+U/akO1QQ
+uyrWmw69AgMBAAECggEBAJd3t2RgddymV8fDHmyuQXPKtY//ybWJf7dhBI5/ezh4
+5nw3daBV2Iw29GzECW4CmKcig/W3pBuIXKga4yMZFGx7AUvASGM2LLKbilB+142f
+wm3j5wFTMQmYnb2C5u/9IbNHiCKgm7ipxAObcTYw0lzQLg+9Rz09h/43DSH4yX8f
+ov1ANiERjkjTMYfaoMbdVrik3MrzBx3lNa0wShS3WebdLIBGv1pk6U2b0bCVJUPP
+OJ9n9bs4+kzJBofDHad6N1UszQoHB+1xHthKC5YHyEbnkWlJoyiNWELcADCKYxWY
+lsbH1b6zUXlQ+/IYe7uD9Y9nOa/6kXwmyPGuFVBXGgECgYEAwMvMRVkFArycrgd1
+mmYyewuGKQyOonj6qlKDjpuZ829CPwZ7xEpSBNQcKn1vHW52IxJizVh5fHWG/8ga
+p2uVGdNUbtjlazrZXDm7xBEAYke+vxgrLHzwCvk3MxFF639nmN9khX+cceLkAaZm
+AEye8thr6IN7TVMt43E4G7Bd5OECgYEA88kWgFRvY7rB3oRnMEuLKaTIAdJM81Tt
+lQ3PQNTAdt9HenJE5E5y884xQsYCfmvkTGrd7bWHBzRgA0slJQExAaLBNrqm2evw
+AshQRVY2mR4TUuKadrWVDV6IF9IDeGZpCEmz1A0RY5M77l2jJ+pAd8Pd8wM07QLV
+KqjpDRLTCV0CgYA8xkGPPr+QnEo7pchRspOJLBnPiNDRsJc756Tm6HAAR/s3COEt
+AEyYjxCN6FqFiZOd/Ka+mnw5WocCzF5yljw7Ft4PzzmKstNf+icRaFaZpIohjQnX
+DU9R9juLUo+a69+JVipG1vJHCEHdr0mKIJ0ealChzAirWGQnxUHtoIwIoQKBgGH1
+JWN/ihrKymf9T/FqCYs8OVnyBRWpxKWmHOdyFbwuT+x1yhTrKOmqqsSoCAyAkgXa
+0z5XOOC+PO5V3aEW73g2y+iP68eZNKIJl6ek0t+H5D/j6ilVIYVzvL/Flbtle0Ln
+Sqkkbx5R5T0MxyicyjbVr3OckEHEZ59yq+Ki88XJAoGAIrVxwcg+b7FKvBhjrx68
+kBK0rFwTdcqq+82G5R5DGfK5nK9RON01aOM3ddZNy+q/xe5O0kzFPkEQhSsGXTJ2
++O0cBtTSrQ8hMZKHH6Ol4y6rWjDObmhNZR5ms76l5Fi3EzUKcLbTcl1NXlihanmU
+rmQcSs0PKSGpZdraqdH+YrU=
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-server-key-rsa-sign.pem b/crypto/test/data/tls/x509-server-key-rsa-sign.pem
new file mode 100644
index 000000000..975638e55
--- /dev/null
+++ b/crypto/test/data/tls/x509-server-key-rsa-sign.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC8Xwb2eeVqVUHg
+obVcnfjv7C7nhlZAZWFEbrJJXCwqnbYTOUEywVTDkNr7cVp2Q0h1iLz1Dwpz8UfC
+LD77DPAVKkI8o9nfQnL7jTYMCjCM1ANdG0Cz0OumnNU+zFP9gOEfscSTeWTqeAfl
+MBMDQHgFX0PV2V/h5JlQIyjyYkc5o3c6ALJUEdBecy9dYI5kvEk8GbiftjKVIdPV
+RnRyfiwdQjVX5xMcD6kd8HdU0D1C12Tdw8fn9Ftu4JgOBkYrTLS5bQJY72cxrevs
+YW8iiSYzJ0wVpcxRYj/4IKXD7PqtoVvYt7zwhOXjhnZGw51yYt2ogcWKUynkueMB
+nPzpE7+VAgMBAAECggEBAJDChltL+d3pfyLdor52OCRI4RLTzdzXDBTG7QQrbVWi
+tZW4Xj5fDIDuBRtOVTKlKj4Iww2gbWwEdBzoW84adzYMr7JiSMCmFC70qiA+hGj1
+VVBr7SFC4JW92LLV24XpURhGSMb8d20oqQicFUBeft3CBCOHVYQHZTqMip8an5nO
+jWPEcxgp2hU5R1BzliMtpwtP3yLN8UD281CEdKy/nG5AfyI882mLbpiFtr0gymhw
+CEqJd62vmK1mvSYDYA2QHy3ki9CxCNog0raQy/sOX4JtgCDhmy06FOOqzyo3LFcN
+I7Ng2D3R+d7tCEJ8A3C7Z/HbET0MsZDolVljBoNEMlECgYEA+Kznpbm0Vd0Oew9S
+5HRzXeZbCnc1fjTOhrtL8o+gyZsXiJQfDWUJ+Mlac2GFDK2FhQofnpfRHlyJRr0b
+PSMzPMEB2nj/7Im0LpOUBt2TD69zK8INHIyFmu76ARgqE/rwyuxv+fyqDgUmQShP
+8XC2joqejZchvvtX9REj6lQ650sCgYEAwetol/72hrrLNycaVntq7GMmLZCtqIc9
+YcLwQQVjFPkf2eiAHrsdZSnOUYXUJfvsRY4OZ7IkOQp0isU8FqED9CCoLwZ7B67c
+DPhUYN6JgIqsH3CuxE9q/5sYb+d8HM9450pk8JrKHJDbBE3nwftLcay5iudkArjw
+2hCi4CqzSJ8CgYAdqjKwGGkk3Qv/LiLLUgD5MKOnqfTdq1r/w5QZyXx60F+MUW8q
+3+TCovKBVR7UFlcZOc3v01iE8LEHmUOIlYxlMPkRoOGWzA6Mh9pev0vt0RZCIBIE
+V9cQVnXIb6OFYqga7P2mqrd2mLKpjy+KM9HzSyIC7gZ+i+lAON059PZZ5QKBgBbA
+UMgscK4D8l2pJ8zns/bB9zO3WriADXKP1XI7eJF4XQVK4uU4HM3Gpt8nrWk7clAC
+x6vg2aEbmerCEzewcm9M+Y5y2zJekJCw/e1TjpxXKLSTmt2LV8lfX/GZHhWfPdcd
+AlS8RGQvlpKdtUgr/ID8u9QRK8mp+xAKjaFxQRGPAoGBALIBTZMU/kmvnO0PrzVL
+eR3yojWI/+743kMFxPYfD2sPo/3Dd9qg8J7d1B6wu36vSP2rWVWVGShY6qxiDINi
+RnLHzQILuztRbWnxRijP19KtmQctfw7/QIyUMkJ/Ur1bU2JpCjnRdoDVudk8nLvp
+dAVR+0swGkDk8ffY+jwZ4gMM
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-server-key-rsa_pss_256.pem b/crypto/test/data/tls/x509-server-key-rsa_pss_256.pem
new file mode 100644
index 000000000..40f795a16
--- /dev/null
+++ b/crypto/test/data/tls/x509-server-key-rsa_pss_256.pem
@@ -0,0 +1,138 @@
+Public Key Info:
+	Public Key Algorithm: RSA-PSS
+		Hash Algorithm: SHA256
+		Salt Length: 32
+	Key Security Level: Medium (2048 bits)
+
+modulus:
+	00:a1:d4:bd:d5:9f:ca:7e:e5:d4:7f:49:52:78:33:d6
+	b0:2f:37:a4:a2:f8:4b:32:b5:ef:d5:29:9c:7d:2e:ac
+	69:b0:b1:1a:09:7d:f1:92:3a:ae:c4:d1:29:63:1b:5d
+	60:d3:4d:06:3f:bc:7f:46:c7:22:c2:98:e0:2c:32:fb
+	9a:94:f1:ea:b9:3b:37:4b:44:8b:bf:60:28:13:6b:e9
+	31:a6:0f:e2:3d:82:60:9d:28:8b:d4:63:7f:e1:06:cf
+	d6:81:a1:24:ef:b4:a5:3a:05:95:16:e5:c6:9d:e1:6e
+	31:56:92:13:16:c4:2b:53:20:73:57:96:9d:7a:4b:be
+	e8:f0:50:1a:55:18:1e:d9:69:f2:f6:b5:e5:3a:98:b6
+	77:7b:ff:30:74:9f:6d:81:55:50:b5:3e:81:8d:54:f6
+	cc:17:3d:1b:10:bf:69:77:09:d1:d8:be:79:11:ac:3b
+	be:19:69:5c:b1:50:4d:ba:04:09:98:74:7a:e3:96:48
+	4d:fc:67:7a:34:73:76:48:5e:41:05:61:5a:68:59:39
+	b3:86:aa:78:28:f4:a6:4a:db:6f:85:47:75:75:a2:24
+	e9:21:3f:18:c9:46:87:91:80:1a:f5:fa:ed:2b:ab:03
+	e8:ed:c3:dd:67:ad:46:eb:9b:7e:44:d2:5c:76:4b:3d
+	5f:
+
+public exponent:
+	01:00:01:
+
+private exponent:
+	69:92:00:19:18:f9:9f:98:cc:ec:10:68:05:54:43:ec
+	81:90:fa:0c:fa:8f:0b:d0:d6:59:27:a1:17:a4:d8:02
+	c6:aa:72:02:d9:2f:3b:26:9f:16:74:20:5c:af:e0:55
+	a6:e2:6b:7e:2e:b8:94:f2:99:81:7a:fb:5a:ba:13:9a
+	bf:29:a5:e7:1a:73:32:dd:cf:90:93:e8:f0:ea:87:a0
+	c4:e5:3d:c0:c4:89:c4:5c:4c:03:cc:b9:02:92:50:09
+	6e:5d:32:5c:51:6b:2c:13:b2:33:d2:c7:a3:fd:08:c6
+	94:e4:0c:21:e0:ed:26:78:57:e6:3e:b2:12:b2:d1:21
+	d8:93:90:f5:8f:2f:c8:97:6b:f0:e6:b0:2a:df:02:18
+	7e:ce:98:8b:63:0c:15:7c:21:39:f9:6c:e2:61:93:fc
+	49:36:cd:9d:29:d8:a4:ed:65:12:6d:11:72:f8:13:47
+	6d:8e:20:d7:9f:01:29:3b:8f:dc:d5:b8:f5:58:6f:c1
+	5c:8b:36:40:c5:80:9c:1e:4b:9f:03:55:b5:ff:1c:46
+	1f:e3:b0:12:0c:44:f0:91:07:41:20:08:6a:99:5c:f2
+	11:50:30:4b:4a:84:8e:03:87:89:4e:60:5f:69:01:94
+	5f:82:41:1c:dc:7d:34:f9:02:02:ee:e0:e7:59:63:c9
+	
+
+prime1:
+	00:c0:9b:4b:2f:d6:57:df:59:31:87:2a:4c:42:fa:4c
+	0c:f2:4d:17:07:90:9b:9c:db:8e:b4:aa:68:96:d1:16
+	01:27:92:e9:8a:26:d1:73:fd:68:21:c7:19:7c:46:f0
+	33:de:21:46:9c:0d:eb:84:8c:b9:6f:cb:47:d0:c5:b8
+	95:1a:e3:18:03:99:81:39:54:2f:c3:a1:14:74:c7:5f
+	82:2c:e8:b9:a9:7f:4c:ff:ac:a7:4f:7f:39:20:ee:3d
+	b1:0f:83:33:fa:76:57:68:4d:8b:99:24:69:d2:08:1b
+	1c:36:e7:c9:be:ea:db:1d:38:61:a4:4c:7a:44:e1:82
+	53:
+
+prime2:
+	00:d7:18:59:39:b2:de:4d:0b:58:69:8c:33:af:51:ee
+	c1:e2:3b:64:b6:36:dd:31:c5:9d:33:39:e2:88:c4:35
+	b0:93:8a:6a:b2:c2:8b:ca:c0:0b:21:94:69:90:ae:19
+	ab:7b:b8:48:eb:f3:27:3b:96:5c:17:1e:71:89:e7:c5
+	14:d8:d7:de:2b:89:1e:58:f4:4f:1a:95:a7:34:65:48
+	6a:94:f2:bb:33:3c:90:d6:99:4d:36:48:8f:0b:30:d9
+	5f:59:26:60:f0:97:8e:3e:d0:31:99:6f:93:c9:c4:ea
+	25:08:f9:48:2f:2a:77:57:93:03:d6:6a:22:fe:16:cf
+	45:
+
+coefficient:
+	5b:5d:58:5d:f8:be:1f:31:c4:e9:23:1e:34:41:60:1b
+	2d:57:2b:d7:3f:39:74:5f:fa:d6:71:4e:46:02:2d:1a
+	cc:51:d5:96:7b:d7:0c:f1:8a:a9:31:e7:61:bd:0c:31
+	31:e3:5c:27:32:0b:bd:4a:67:ad:c0:31:db:91:a4:96
+	b0:a4:9e:81:0e:75:2e:5f:0c:c5:9b:8e:4d:6c:b4:7e
+	2c:44:53:2d:b7:d7:82:20:ba:59:38:df:ec:99:8d:63
+	5f:e9:24:d1:8e:6e:e0:5b:fa:f2:12:16:75:ad:f3:a7
+	2d:fd:8f:55:5f:09:a3:42:4b:44:d2:c8:c8:41:7c:c8
+	
+
+exp1:
+	7f:cc:4a:e6:31:e5:da:67:d7:4a:25:51:b6:bb:57:8c
+	db:95:35:2b:aa:d2:e6:10:74:af:01:c7:26:13:13:f3
+	ae:2b:77:d4:58:0f:70:53:fb:2d:36:6b:7d:9f:a0:2f
+	fa:3a:c0:1c:39:cc:45:06:0e:e0:d3:d4:11:fd:af:8d
+	17:eb:08:fb:12:76:c0:f0:50:45:10:f3:7e:cc:ef:5d
+	73:a8:f3:d0:38:8c:81:b5:30:ca:b9:d2:d1:3b:e3:29
+	41:ee:bf:a5:77:b2:65:9d:d6:7b:c5:c2:85:3f:25:a5
+	e1:f4:88:53:aa:87:ba:ea:b7:37:0a:1b:b2:ea:a2:cb
+	
+
+exp2:
+	63:04:e8:7e:71:63:79:20:51:f1:35:03:ce:1f:ef:c3
+	fd:bb:cd:df:3c:5e:93:bd:1f:63:27:b0:ab:b9:77:e5
+	f3:e5:f2:bc:9c:66:f2:4d:7a:52:59:1a:47:ea:7e:12
+	bd:7f:d6:c2:18:4b:e5:58:90:c8:6b:d1:64:e4:f7:8b
+	63:4f:ed:0d:29:b0:78:ce:ef:63:93:a5:47:af:a0:a8
+	c0:2d:06:14:ce:3a:f7:2f:d7:a5:b7:bd:72:2f:68:c2
+	46:2e:2e:ce:53:56:be:7f:e5:75:77:32:17:de:b8:d3
+	97:cf:fa:75:0c:1d:a8:89:1b:69:27:af:38:3d:93:e9
+	
+
+
+Public Key PIN:
+	pin-sha256:KBIg1VxV9p1XXyGsX+MwqaE2DenjfwcmJzw2z8jOeT4=
+Public Key ID:
+	sha256:281220d55c55f69d575f21ac5fe330a9a1360de9e37f0726273c36cfc8ce793e
+	sha1:06c5f6d2f4f448fa67ba12fe955efbe15febd164
+
+-----BEGIN PRIVATE KEY-----
+MIIE7AIBADA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3
+DQEBCDALBglghkgBZQMEAgGiAwIBIASCBKYwggSiAgEAAoIBAQCh1L3Vn8p+5dR/
+SVJ4M9awLzekovhLMrXv1SmcfS6sabCxGgl98ZI6rsTRKWMbXWDTTQY/vH9GxyLC
+mOAsMvualPHquTs3S0SLv2AoE2vpMaYP4j2CYJ0oi9Rjf+EGz9aBoSTvtKU6BZUW
+5cad4W4xVpITFsQrUyBzV5adeku+6PBQGlUYHtlp8va15TqYtnd7/zB0n22BVVC1
+PoGNVPbMFz0bEL9pdwnR2L55Eaw7vhlpXLFQTboECZh0euOWSE38Z3o0c3ZIXkEF
+YVpoWTmzhqp4KPSmSttvhUd1daIk6SE/GMlGh5GAGvX67SurA+jtw91nrUbrm35E
+0lx2Sz1fAgMBAAECggEAaZIAGRj5n5jM7BBoBVRD7IGQ+gz6jwvQ1lknoRek2ALG
+qnIC2S87Jp8WdCBcr+BVpuJrfi64lPKZgXr7WroTmr8ppecaczLdz5CT6PDqh6DE
+5T3AxInEXEwDzLkCklAJbl0yXFFrLBOyM9LHo/0IxpTkDCHg7SZ4V+Y+shKy0SHY
+k5D1jy/Il2vw5rAq3wIYfs6Yi2MMFXwhOfls4mGT/Ek2zZ0p2KTtZRJtEXL4E0dt
+jiDXnwEpO4/c1bj1WG/BXIs2QMWAnB5LnwNVtf8cRh/jsBIMRPCRB0EgCGqZXPIR
+UDBLSoSOA4eJTmBfaQGUX4JBHNx9NPkCAu7g51ljyQKBgQDAm0sv1lffWTGHKkxC
++kwM8k0XB5CbnNuOtKpoltEWASeS6Yom0XP9aCHHGXxG8DPeIUacDeuEjLlvy0fQ
+xbiVGuMYA5mBOVQvw6EUdMdfgizoual/TP+sp09/OSDuPbEPgzP6dldoTYuZJGnS
+CBscNufJvurbHThhpEx6ROGCUwKBgQDXGFk5st5NC1hpjDOvUe7B4jtktjbdMcWd
+MzniiMQ1sJOKarLCi8rACyGUaZCuGat7uEjr8yc7llwXHnGJ58UU2NfeK4keWPRP
+GpWnNGVIapTyuzM8kNaZTTZIjwsw2V9ZJmDwl44+0DGZb5PJxOolCPlILyp3V5MD
+1moi/hbPRQKBgH/MSuYx5dpn10olUba7V4zblTUrqtLmEHSvAccmExPzrit31FgP
+cFP7LTZrfZ+gL/o6wBw5zEUGDuDT1BH9r40X6wj7EnbA8FBFEPN+zO9dc6jz0DiM
+gbUwyrnS0TvjKUHuv6V3smWd1nvFwoU/JaXh9IhTqoe66rc3Chuy6qLLAoGAYwTo
+fnFjeSBR8TUDzh/vw/27zd88XpO9H2MnsKu5d+Xz5fK8nGbyTXpSWRpH6n4SvX/W
+whhL5ViQyGvRZOT3i2NP7Q0psHjO72OTpUevoKjALQYUzjr3L9elt71yL2jCRi4u
+zlNWvn/ldXcyF96405fP+nUMHaiJG2knrzg9k+kCgYBbXVhd+L4fMcTpIx40QWAb
+LVcr1z85dF/61nFORgItGsxR1ZZ71wzxiqkx52G9DDEx41wnMgu9SmetwDHbkaSW
+sKSegQ51Ll8MxZuOTWy0fixEUy2314Igulk43+yZjWNf6STRjm7gW/ryEhZ1rfOn
+Lf2PVV8Jo0JLRNLIyEF8yA==
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-server-key-rsa_pss_384.pem b/crypto/test/data/tls/x509-server-key-rsa_pss_384.pem
new file mode 100644
index 000000000..49f5ca8c5
--- /dev/null
+++ b/crypto/test/data/tls/x509-server-key-rsa_pss_384.pem
@@ -0,0 +1,138 @@
+Public Key Info:
+	Public Key Algorithm: RSA-PSS
+		Hash Algorithm: SHA384
+		Salt Length: 48
+	Key Security Level: Medium (2048 bits)
+
+modulus:
+	00:e7:f5:99:8b:69:95:62:3a:54:80:b9:4c:21:a3:dc
+	50:b9:ac:8d:50:a4:98:ea:da:87:55:82:2c:c6:68:e4
+	36:6c:7a:b8:1e:21:db:e6:fa:1f:c2:54:3a:c0:8d:2d
+	94:ce:15:66:76:82:d3:27:39:ff:11:f8:19:99:95:6d
+	63:7e:35:3d:17:b6:2d:59:3f:c2:b4:b3:73:75:b8:b2
+	e7:9d:4d:7d:0d:98:e3:bb:da:e2:44:69:bd:15:52:0c
+	45:eb:24:70:5d:47:55:79:67:56:1e:4f:2f:d5:e2:8e
+	c2:96:db:5f:2b:6e:c5:cf:4f:20:61:6f:22:50:05:8c
+	e5:ef:5d:e2:bb:e9:af:79:9d:89:ec:19:b4:ed:7d:e7
+	f7:f7:20:b4:b0:7c:57:a2:c4:66:67:bb:e2:29:e3:9c
+	07:9c:b0:df:30:36:40:b2:45:12:ed:53:5d:75:4d:a6
+	04:e4:2f:db:92:96:94:be:cb:e8:ac:ee:8d:28:5d:95
+	a6:9f:9c:28:d3:c2:87:5e:7b:72:de:f1:ff:16:f8:49
+	e4:9d:de:e7:7a:20:23:69:a4:9f:68:b2:db:b0:fc:fb
+	c2:77:0d:41:0a:ff:66:02:ea:9e:6b:c3:09:dd:7c:bc
+	1f:47:66:66:8b:a3:72:e9:94:50:62:97:50:5a:5e:2e
+	d3:
+
+public exponent:
+	01:00:01:
+
+private exponent:
+	69:3a:96:ec:92:fa:8c:f4:4f:4f:92:40:42:66:96:d5
+	1c:56:76:49:66:52:65:00:bc:32:83:7a:92:8c:15:33
+	c7:64:a8:d0:2a:a6:1b:13:cf:82:96:39:8d:0e:be:e5
+	e9:d3:f5:86:bf:f4:d0:af:d3:d2:30:0e:55:09:5f:f5
+	a9:d4:b7:21:61:a9:12:fb:04:f6:7b:0e:5f:12:6a:3e
+	fe:b2:9f:8f:a2:93:75:ae:67:c5:87:7e:9b:04:7c:c2
+	df:58:c9:8c:d7:86:a4:2b:c7:fa:ba:0b:c6:69:20:40
+	90:b5:76:68:3a:b9:8c:41:a6:3b:ed:71:d0:81:a4:17
+	f2:a1:1d:b8:b4:6b:01:6d:a2:e7:9a:6e:9f:b5:a1:14
+	61:7c:66:50:dc:e8:27:67:55:36:50:cc:19:d4:c7:71
+	d5:8f:a7:5f:96:f1:74:90:a1:38:1c:8d:b6:37:04:23
+	81:70:24:29:62:b6:e4:85:8d:46:e9:4a:a0:26:12:0f
+	40:69:42:25:eb:18:0a:97:93:dc:50:12:85:ff:74:6d
+	71:31:d8:45:f8:94:74:ff:43:55:f6:fc:a3:ce:1e:cb
+	b9:d7:b8:2b:e5:c6:ab:d3:ab:77:60:9c:6b:4c:8e:c0
+	67:a2:37:41:a0:b8:ad:4a:bd:20:1c:29:c8:49:cc:69
+	
+
+prime1:
+	00:ed:49:8c:54:96:6b:fe:77:60:f1:93:dd:3d:bc:46
+	b2:ec:9e:35:20:cc:8f:63:55:66:90:a4:1e:e3:50:b1
+	51:a3:a7:8b:b1:81:cd:93:cf:0d:4a:ac:c0:a1:81:49
+	cb:71:0e:6b:4f:16:75:04:ae:89:53:c1:1d:ac:44:bc
+	ae:9d:85:85:e9:8c:aa:8e:b9:a8:3e:3d:86:28:b5:c3
+	da:35:98:67:70:5a:8b:1f:c2:18:ed:b0:6a:0c:74:b9
+	33:6b:08:e5:93:87:39:b0:44:79:5c:eb:4c:f0:f1:db
+	c1:41:76:b0:12:46:38:4f:bd:68:db:70:53:13:e8:5f
+	95:
+
+prime2:
+	00:fa:40:7d:45:ec:7b:68:68:31:02:9a:ef:b7:a4:35
+	a5:7d:d0:be:75:82:39:44:5f:31:98:4d:ff:3b:ec:76
+	ce:c3:32:f9:d4:ce:bc:be:4c:3a:72:2f:1d:f6:2c:85
+	0d:15:50:2e:14:19:bb:cc:b5:ad:6c:bc:59:3f:a0:ba
+	8b:82:e3:9d:36:93:40:b8:ec:d4:eb:15:59:da:ca:a7
+	10:1e:8e:de:22:c0:96:a5:cb:d3:37:37:4a:4b:58:aa
+	13:76:84:58:21:0b:be:8a:b7:c9:04:fd:d9:99:0e:0c
+	8a:28:52:50:23:9e:df:80:54:db:16:46:34:18:3b:da
+	c7:
+
+coefficient:
+	7e:b9:c8:22:2e:b4:07:cd:a1:11:43:4d:48:79:e6:86
+	a2:6d:3e:41:85:1e:01:3e:05:77:3d:88:2e:8c:a1:43
+	b1:5c:03:3c:d9:37:d8:48:06:fa:bf:de:3e:ad:33:63
+	b4:03:f7:84:02:26:22:95:66:03:1d:91:73:20:42:97
+	0e:5d:dd:37:1e:f3:60:80:1b:e4:19:0c:cb:75:bf:30
+	fd:38:73:67:9c:c2:68:4c:ff:70:cb:78:6c:b7:5a:1c
+	a3:a2:cb:a1:f1:f4:17:06:9b:53:96:c3:19:0f:36:98
+	1e:11:f9:ba:a6:cb:5d:d5:82:ae:43:4f:cd:9e:e3:66
+	
+
+exp1:
+	2e:c1:d9:67:29:a4:ea:25:b7:f2:a2:82:6c:11:d7:94
+	96:4f:ae:84:62:0a:b7:36:32:d9:b9:9d:64:89:98:07
+	50:4a:49:9a:96:cb:5d:9e:e5:2d:9b:d0:f1:82:3a:7a
+	5e:32:cb:2e:70:6c:6a:99:c1:f1:c1:12:09:ca:19:ac
+	06:da:32:c3:0c:b6:e7:1c:ea:6c:29:4f:70:62:30:cf
+	a4:d3:fd:3e:04:79:79:ae:93:9e:f2:ae:52:fa:05:2c
+	7e:a0:e8:2c:23:ef:58:2e:86:03:ab:52:24:00:64:9f
+	36:39:1f:04:da:d5:69:d1:17:02:76:a5:c8:3c:77:e9
+	
+
+exp2:
+	00:84:d4:6a:2a:0d:45:cb:bb:52:18:51:e8:df:8e:d7
+	b2:c9:bf:5c:f8:be:70:6b:2c:24:04:f5:91:7e:5b:1b
+	0c:d0:6b:64:54:62:8f:a8:6a:89:b3:45:f3:1f:51:ae
+	25:ad:a4:6b:70:db:df:e4:de:a1:f8:cf:58:87:ff:66
+	44:da:ea:b9:ed:d7:e7:48:c0:dc:9b:13:30:28:83:dc
+	7d:1f:db:31:69:3c:d4:39:98:a0:b9:f4:2d:09:25:3c
+	d1:2b:dd:3f:71:fa:eb:de:71:82:cf:95:76:44:59:42
+	aa:aa:90:56:5d:31:dc:ec:1f:1e:53:0a:5c:68:68:8c
+	cd:
+
+
+Public Key PIN:
+	pin-sha256:ehI/YLeqtW2fBULTjESCxxpNnhvQYw9LOVxfrWzyV/g=
+Public Key ID:
+	sha256:7a123f60b7aab56d9f0542d38c4482c71a4d9e1bd0630f4b395c5fad6cf257f8
+	sha1:7ec2c93bfa8195429459015e334ef8d5735430b0
+
+-----BEGIN PRIVATE KEY-----
+MIIE7QIBADA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAqEaMBgGCSqGSIb3
+DQEBCDALBglghkgBZQMEAgKiAwIBMASCBKcwggSjAgEAAoIBAQDn9ZmLaZViOlSA
+uUwho9xQuayNUKSY6tqHVYIsxmjkNmx6uB4h2+b6H8JUOsCNLZTOFWZ2gtMnOf8R
++BmZlW1jfjU9F7YtWT/CtLNzdbiy551NfQ2Y47va4kRpvRVSDEXrJHBdR1V5Z1Ye
+Ty/V4o7ClttfK27Fz08gYW8iUAWM5e9d4rvpr3mdiewZtO195/f3ILSwfFeixGZn
+u+Ip45wHnLDfMDZAskUS7VNddU2mBOQv25KWlL7L6KzujShdlaafnCjTwodee3Le
+8f8W+Enknd7neiAjaaSfaLLbsPz7wncNQQr/ZgLqnmvDCd18vB9HZmaLo3LplFBi
+l1BaXi7TAgMBAAECggEAaTqW7JL6jPRPT5JAQmaW1RxWdklmUmUAvDKDepKMFTPH
+ZKjQKqYbE8+CljmNDr7l6dP1hr/00K/T0jAOVQlf9anUtyFhqRL7BPZ7Dl8Saj7+
+sp+PopN1rmfFh36bBHzC31jJjNeGpCvH+roLxmkgQJC1dmg6uYxBpjvtcdCBpBfy
+oR24tGsBbaLnmm6ftaEUYXxmUNzoJ2dVNlDMGdTHcdWPp1+W8XSQoTgcjbY3BCOB
+cCQpYrbkhY1G6UqgJhIPQGlCJesYCpeT3FAShf90bXEx2EX4lHT/Q1X2/KPOHsu5
+17gr5car06t3YJxrTI7AZ6I3QaC4rUq9IBwpyEnMaQKBgQDtSYxUlmv+d2Dxk909
+vEay7J41IMyPY1VmkKQe41CxUaOni7GBzZPPDUqswKGBSctxDmtPFnUErolTwR2s
+RLyunYWF6YyqjrmoPj2GKLXD2jWYZ3Baix/CGO2wagx0uTNrCOWThzmwRHlc60zw
+8dvBQXawEkY4T71o23BTE+hflQKBgQD6QH1F7HtoaDECmu+3pDWlfdC+dYI5RF8x
+mE3/O+x2zsMy+dTOvL5MOnIvHfYshQ0VUC4UGbvMta1svFk/oLqLguOdNpNAuOzU
+6xVZ2sqnEB6O3iLAlqXL0zc3SktYqhN2hFghC76Kt8kE/dmZDgyKKFJQI57fgFTb
+FkY0GDvaxwKBgC7B2WcppOolt/KigmwR15SWT66EYgq3NjLZuZ1kiZgHUEpJmpbL
+XZ7lLZvQ8YI6el4yyy5wbGqZwfHBEgnKGawG2jLDDLbnHOpsKU9wYjDPpNP9PgR5
+ea6TnvKuUvoFLH6g6Cwj71guhgOrUiQAZJ82OR8E2tVp0RcCdqXIPHfpAoGBAITU
+aioNRcu7UhhR6N+O17LJv1z4vnBrLCQE9ZF+WxsM0GtkVGKPqGqJs0XzH1GuJa2k
+a3Db3+TeofjPWIf/ZkTa6rnt1+dIwNybEzAog9x9H9sxaTzUOZigufQtCSU80Svd
+P3H6695xgs+VdkRZQqqqkFZdMdzsHx5TClxoaIzNAoGAfrnIIi60B82hEUNNSHnm
+hqJtPkGFHgE+BXc9iC6MoUOxXAM82TfYSAb6v94+rTNjtAP3hAImIpVmAx2RcyBC
+lw5d3Tce82CAG+QZDMt1vzD9OHNnnMJoTP9wy3hst1oco6LLofH0FwabU5bDGQ82
+mB4R+bqmy13Vgq5DT82e42Y=
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-server-key-rsa_pss_512.pem b/crypto/test/data/tls/x509-server-key-rsa_pss_512.pem
new file mode 100644
index 000000000..923f6f92e
--- /dev/null
+++ b/crypto/test/data/tls/x509-server-key-rsa_pss_512.pem
@@ -0,0 +1,138 @@
+Public Key Info:
+	Public Key Algorithm: RSA-PSS
+		Hash Algorithm: SHA512
+		Salt Length: 64
+	Key Security Level: Medium (2048 bits)
+
+modulus:
+	00:c2:ce:73:69:95:63:26:85:bd:a0:23:25:5c:94:41
+	04:11:84:78:6c:c9:a3:47:13:47:3b:c4:fe:f3:27:6c
+	eb:d7:41:a9:4c:e3:15:40:b8:bd:99:02:df:93:a9:bf
+	07:de:a2:f1:d1:1e:49:39:2b:64:c7:5e:bb:c7:dd:30
+	07:3c:10:2c:c9:bd:d9:8f:1e:04:60:c1:92:72:44:e6
+	3c:6e:6d:7f:b7:6f:fa:ab:2f:e3:69:7b:0d:1c:31:d5
+	5e:dd:ab:99:0d:4e:80:69:53:3d:d3:63:04:1f:d6:83
+	fa:d7:04:c9:3f:75:9c:95:bd:45:34:39:1d:a0:1d:d7
+	06:8e:60:17:a3:94:8f:e9:30:1e:d2:ee:05:42:a4:08
+	86:b7:93:c2:5c:c2:5e:bc:c0:26:5e:98:56:c3:76:87
+	e9:9b:1a:3b:f6:bf:c1:6a:4f:f8:46:ba:0b:a8:3a:5e
+	bb:1d:af:e3:f3:9b:f1:b6:18:70:6d:af:30:62:5f:07
+	a9:ff:7b:a2:dd:5f:7e:ff:33:19:80:a2:d7:f9:9e:c5
+	a5:22:e7:79:3c:b7:ee:4a:33:c7:c4:72:e6:69:fd:ec
+	43:8b:85:86:07:95:15:b9:fe:ed:1c:12:38:ca:ed:cc
+	71:ef:9b:69:11:16:e5:1e:78:e0:b3:4d:4c:b4:79:ea
+	9f:
+
+public exponent:
+	01:00:01:
+
+private exponent:
+	00:84:ed:bb:73:60:ac:b7:ac:ab:28:8a:d3:03:c9:66
+	54:10:60:04:8c:b7:4a:e3:45:14:66:84:96:33:f5:c3
+	2d:6b:45:32:f1:74:43:1c:56:f3:89:65:9c:8a:76:5a
+	14:54:a7:7b:ba:e6:9f:b0:93:1b:c1:af:b3:13:3e:ab
+	77:44:55:05:3a:e4:81:80:57:4b:45:7a:d1:23:88:40
+	53:1c:47:3b:cf:40:6a:1c:46:21:37:e8:ef:99:3d:a8
+	0b:83:d7:84:28:c0:58:7f:86:7d:b9:b0:e7:2f:92:81
+	9c:b8:fc:5b:17:22:7a:26:f3:70:35:a2:83:c4:ae:97
+	fa:7e:c6:3f:d2:39:9b:fe:f1:e9:c6:d1:68:3e:ac:26
+	b4:69:27:c6:1f:50:fc:ab:32:bb:3c:90:13:7e:5c:c0
+	52:0c:34:5d:f7:bd:dd:84:ca:7c:c7:fe:91:8d:60:fe
+	d7:a7:e3:95:46:b2:ce:a1:4b:af:ba:81:e5:52:7c:68
+	65:5b:9c:84:a5:b6:44:0c:28:b7:c4:19:aa:f5:f7:06
+	35:ac:92:fe:1b:12:f9:17:8f:28:b7:d0:66:3b:a8:5e
+	91:6e:c1:06:65:69:97:4e:75:26:59:12:76:3a:3d:9e
+	ee:21:b4:df:1e:e5:c1:73:5f:cd:e7:4a:2b:66:d8:cc
+	81:
+
+prime1:
+	00:c8:9b:6c:7f:a0:08:ce:09:9b:2a:ea:f3:2c:62:d1
+	ec:1e:61:7f:da:d1:3a:38:a8:31:4c:57:fa:b9:1c:d8
+	27:fc:ff:d7:79:82:f1:3b:3a:b6:93:f3:61:c8:17:e2
+	73:c8:bc:66:ff:98:9d:5e:31:4f:6b:d5:98:d3:1a:eb
+	cc:30:ab:f6:ed:1b:62:a4:24:6c:cd:eb:20:9e:d8:52
+	8e:49:b9:47:11:97:2d:0c:89:6c:01:0a:f2:0e:6f:cf
+	57:57:7c:57:ce:06:4b:a2:d1:e4:97:91:b2:3b:ef:2a
+	38:d1:64:ea:6e:b0:57:c0:93:ed:d6:27:ba:dd:9e:53
+	0b:
+
+prime2:
+	00:f8:98:fc:b3:55:a0:27:40:a8:e2:62:3d:80:4b:13
+	10:1c:a7:22:af:3d:47:57:c4:34:8c:76:4e:95:d7:ff
+	e8:03:bb:cf:ac:9d:52:3a:c2:d0:91:5f:1c:1d:36:4a
+	7e:9d:6d:81:4a:6e:00:f8:96:85:a1:ab:3f:54:d2:03
+	ad:0e:d2:c8:c6:fc:b4:62:7e:ab:57:aa:b7:2c:6b:10
+	01:66:5d:ab:d0:5a:9e:02:5b:ad:e1:ab:be:6e:b4:b4
+	d1:61:d1:5f:19:22:5c:f5:4e:9e:bd:25:ab:94:a6:be
+	8c:a5:7a:2d:2f:f9:5f:55:d3:b8:d8:6d:e9:7c:b5:03
+	3d:
+
+coefficient:
+	7a:dc:e4:d8:ed:ce:71:72:63:b3:a8:4d:c0:1d:fa:a2
+	8a:c4:9f:77:1e:5a:e1:17:d3:1a:f8:20:32:54:30:a7
+	0d:69:40:92:d7:d6:43:bf:b5:83:7e:d5:19:44:bd:3c
+	8d:ff:31:ad:8b:bd:6d:ab:a7:34:d7:e3:75:57:02:85
+	8a:c0:78:2d:10:0f:6f:28:da:f7:22:69:40:f4:04:9f
+	a5:f9:e2:a9:0d:88:06:b4:f3:3c:5e:c6:8c:96:69:7e
+	f6:09:fa:9c:c6:87:de:a2:a5:9b:4d:22:2a:0b:27:7c
+	25:31:26:60:b6:6d:0f:97:6f:48:f2:bf:88:dc:f3:83
+	
+
+exp1:
+	1a:20:e4:48:db:37:4a:5e:c5:ef:19:1b:03:34:fb:d2
+	9d:42:65:bc:c2:73:aa:dd:7d:4e:4c:47:43:c5:16:02
+	5f:59:93:5f:28:46:f3:47:fa:6f:da:cb:69:9c:72:ca
+	51:e2:f8:27:62:61:5c:db:5f:54:d4:45:4b:79:be:2c
+	a2:4a:43:a7:2e:61:f2:af:2b:dc:c6:3b:41:75:3b:8b
+	7c:de:bc:fa:f5:8d:d0:8c:35:9d:0d:27:e9:e9:76:40
+	12:0d:08:02:b5:9f:34:5d:d2:40:4b:a1:c3:5c:ab:4b
+	2b:3a:d1:ae:09:19:e4:e3:5f:9e:fd:1d:c1:af:d5:71
+	
+
+exp2:
+	00:f0:6c:55:08:c3:a8:ee:0d:74:c7:ec:a6:fa:2a:a1
+	37:15:de:f6:86:70:47:4d:34:6e:75:e1:fd:42:a1:f1
+	d6:db:b5:89:b5:b1:38:d3:a7:91:ba:e6:36:f4:71:8b
+	3e:44:d6:a1:11:f0:ad:73:bd:6f:63:d9:90:98:61:bc
+	38:64:7b:aa:bd:f7:ac:25:0d:c8:7c:32:98:90:96:c2
+	95:f8:00:63:a8:4f:db:3d:00:99:7c:05:73:58:f1:df
+	66:18:aa:3a:c4:be:1d:15:09:82:2f:ff:fc:9e:f9:5c
+	93:fd:7d:d9:b1:ea:05:2f:a6:61:c0:bf:1b:ef:05:c9
+	29:
+
+
+Public Key PIN:
+	pin-sha256:ucGhof6fwEGIty3XlESZXFYnapJIa30Xc+yIYUtVbKY=
+Public Key ID:
+	sha256:b9c1a1a1fe9fc04188b72dd79444995c56276a92486b7d1773ec88614b556ca6
+	sha1:f0f7effab3260ffefd0c2c57c196d20d0fd4bd3b
+
+-----BEGIN PRIVATE KEY-----
+MIIE7gIBADA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3
+DQEBCDALBglghkgBZQMEAgOiAwIBQASCBKgwggSkAgEAAoIBAQDCznNplWMmhb2g
+IyVclEEEEYR4bMmjRxNHO8T+8yds69dBqUzjFUC4vZkC35OpvwfeovHRHkk5K2TH
+XrvH3TAHPBAsyb3Zjx4EYMGSckTmPG5tf7dv+qsv42l7DRwx1V7dq5kNToBpUz3T
+YwQf1oP61wTJP3Wclb1FNDkdoB3XBo5gF6OUj+kwHtLuBUKkCIa3k8Jcwl68wCZe
+mFbDdofpmxo79r/Bak/4RroLqDpeux2v4/Ob8bYYcG2vMGJfB6n/e6LdX37/MxmA
+otf5nsWlIud5PLfuSjPHxHLmaf3sQ4uFhgeVFbn+7RwSOMrtzHHvm2kRFuUeeOCz
+TUy0eeqfAgMBAAECggEBAITtu3NgrLesqyiK0wPJZlQQYASMt0rjRRRmhJYz9cMt
+a0Uy8XRDHFbziWWcinZaFFSne7rmn7CTG8GvsxM+q3dEVQU65IGAV0tFetEjiEBT
+HEc7z0BqHEYhN+jvmT2oC4PXhCjAWH+Gfbmw5y+SgZy4/FsXInom83A1ooPErpf6
+fsY/0jmb/vHpxtFoPqwmtGknxh9Q/KsyuzyQE35cwFIMNF33vd2EynzH/pGNYP7X
+p+OVRrLOoUuvuoHlUnxoZVuchKW2RAwot8QZqvX3BjWskv4bEvkXjyi30GY7qF6R
+bsEGZWmXTnUmWRJ2Oj2e7iG03x7lwXNfzedKK2bYzIECgYEAyJtsf6AIzgmbKurz
+LGLR7B5hf9rROjioMUxX+rkc2Cf8/9d5gvE7OraT82HIF+JzyLxm/5idXjFPa9WY
+0xrrzDCr9u0bYqQkbM3rIJ7YUo5JuUcRly0MiWwBCvIOb89XV3xXzgZLotHkl5Gy
+O+8qONFk6m6wV8CT7dYnut2eUwsCgYEA+Jj8s1WgJ0Co4mI9gEsTEBynIq89R1fE
+NIx2TpXX/+gDu8+snVI6wtCRXxwdNkp+nW2BSm4A+JaFoas/VNIDrQ7SyMb8tGJ+
+q1eqtyxrEAFmXavQWp4CW63hq75utLTRYdFfGSJc9U6evSWrlKa+jKV6LS/5X1XT
+uNht6Xy1Az0CgYAaIORI2zdKXsXvGRsDNPvSnUJlvMJzqt19TkxHQ8UWAl9Zk18o
+RvNH+m/ay2mccspR4vgnYmFc219U1EVLeb4sokpDpy5h8q8r3MY7QXU7i3zevPr1
+jdCMNZ0NJ+npdkASDQgCtZ80XdJAS6HDXKtLKzrRrgkZ5ONfnv0dwa/VcQKBgQDw
+bFUIw6juDXTH7Kb6KqE3Fd72hnBHTTRudeH9QqHx1tu1ibWxONOnkbrmNvRxiz5E
+1qER8K1zvW9j2ZCYYbw4ZHuqvfesJQ3IfDKYkJbClfgAY6hP2z0AmXwFc1jx32YY
+qjrEvh0VCYIv//ye+VyT/X3ZseoFL6ZhwL8b7wXJKQKBgHrc5NjtznFyY7OoTcAd
++qKKxJ93HlrhF9Ma+CAyVDCnDWlAktfWQ7+1g37VGUS9PI3/Ma2LvW2rpzTX43VX
+AoWKwHgtEA9vKNr3ImlA9ASfpfniqQ2IBrTzPF7GjJZpfvYJ+pzGh96ipZtNIioL
+J3wlMSZgtm0Pl29I8r+I3POD
+-----END PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-server-key.pem b/crypto/test/data/tls/x509-server-key.pem
deleted file mode 100644
index 894fbb999..000000000
--- a/crypto/test/data/tls/x509-server-key.pem
+++ /dev/null
@@ -1,32 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIFfAIBAAKCATEAsy/PN54P7ZkH23FHjtgZuzpyGa84+YZOM3snikem660o90Ws
-TquMMtXNeAQPGAFUpu2Qxo416ogolqqtTXYJz9qsp/eDvzlNCJN7HKb5Fg28HiCc
-dMx2AR03qlGkxI3WsCPxFsX83zrz8wZSvrO7jjS1/WfJW1vYme+kktYcg90+5pJ0
-5hEAIwFU/mh9KnVRVdnINCcCqdnwpA1fAPXLwqNYdRolaczaQFI1ml8YbOgCnefz
-uxeSt9qz/7TkBITVvBf3AH5fUG6UezNxma85o7b1P4QJNiWGA7uwh7iABpIR7795
-Fk8ebOSUD9lZ9iqo0CzXBDAiwJe3uzSLBITlF0xbyveH+ILj7sKpa0CkV+5yZ1Cm
-B426lluuBlYxbi2wfAgN8arfQtnTobl/m+ClrQIDAQABAoIBMAEZ6kKNFNbIeBqT
-24dTDIUsj+DCbGPsR86wsG5FOgFRa96K0qcAS53nBAXDynKFl6igJcXs4WfLiRnN
-QGcgob+cIgM6pT8rDnlZT/291pH9mD/MwnyHDwak7C7dGXrRojWQl1TGZqjJS0f5
-enaN5lUnXwROZqsxUYohFkmtj1dpjxTqUGZ0In1JdG2mDmunMgjkJ/UqtCp0QFCp
-xtd1u5/913RBFC+n/CJl1+TnNQ4WNDRtkHZfJpVp+dOldQr028CJU3C5u1JB9ped
-JK+dywUFlqH1Tdk2v5CQV5esvbFpXX7FIlHuId+JOwFyvkR5+7NmyQ2uAz/Yeg8K
-ItdRhNQCJpYPlPH9Yb1JooEhPYrQX6oz/q2R3qiFdtc1cMZW3KCtIALZk30lW/o+
-B4EiysECgZkA1cYcdgNKy5K1O/IOyhr1eYK2us738Z3A57gC1y+m58D02dzmwacg
-HKZI9Cz98L8yEyORkdxpg86xi+NIcdU15BXXioFgMI5ZSfNVBcO4rv8G/QCxEWDr
-gnXe7FYuLlOKBbVXx7fJ0IXRUVbUlH5ZqE2HlFbSdPJmlaKtbxxyT7xhhWkf/MuI
-hRn+MFvbXvC+JqL+FS141kECgZkA1pS74hc7H5blq0J51E8EDtgU5m770VlQKhbW
-Z1D0oXVfB19DD3SX4xu22/6XlKXLlQDx4ssxVw11VIkd9WhkIrqq4U644XL5xXmf
-PMsR+fG2o+Y7MY4TNy+4qcuOK17n6R2pxR4zQoVnZs/qL4s5jPKMsC76C4Udfxfh
-yup0eFEJ+jPQdWYWQ6uX3UF0rA5x0Tb200aKbG0CgZkAkwaoeHoXLR//yfTXOyWD
-g0jliGHkoabQEA681WcOsgJB5L1LcBETwuCS+G0hUj0NoaAq9FjVsTOtZPqyzqfH
-YtGq5rXIhFzDCFt1NHvCP4ljMwsQvVUdZSLQaVd0d6Q5H2fzsYa0JNiEeB7yIhcs
-btaz0tBL+ubkqzGxeuPjsvdrUyhUObd6c6DG9FeY7xlAjq43djVKEIECgZhITde9
-SDyo2UzMV1r72iAw7EimmPELSsADXqyiJZo4qXb64fOTyqK/aQBFwtTKxs8Bh076
-L6ORhLxrXsSUg7dyKFoaD0+mz/ovu1qXvolxIix7r8F0Yj5BUzgzJp7iKFmWqGMj
-Q5jcKl18PETZ/lzHDJexajLhHNqij6aKnFPgktX80+bDGEIaTUCf0kWBEGDzsUSc
-TmGoRQKBmQDVFQ6EAOXXNp2bMLZ78qnxmS+NZPijBDeVu1cXMYdRSBoldrtSHKUM
-NFjPfesz4IRbEePK5s0vgM88QCDaspy8aLj//gh9YuqijbHOfhvMUP6MqzU/jJN7
-MDAxcGbcoFqdWTP1HB9qeX91UNRwN+2/xfO6SrLbfTvG4v/sntr8YfVYya2EuAa9
-qLk0TB3QXaoHknsz7EhRnw==
------END RSA PRIVATE KEY-----
diff --git a/crypto/test/data/tls/x509-server-rsa-enc.pem b/crypto/test/data/tls/x509-server-rsa-enc.pem
new file mode 100644
index 000000000..bd4bee0a7
--- /dev/null
+++ b/crypto/test/data/tls/x509-server-rsa-enc.pem
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDQjCCAiqgAwIBAgIMWYGU8Ba6TGDaJ+vVMA0GCSqGSIb3DQEBCwUAMCMxITAf
+BgNVBAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBDQTAeFw0xNzA4MDIwOTAxMzZa
+Fw0zNzA3MjgwOTAxMzZaMCMxITAfBgNVBAMTGEJvdW5jeUNhc3RsZSBUZXN0IFNl
+cnZlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALeY49te/YFa6Od8
+0bFjD8k1vJbupBNoqdmiAT9oiHmbzqGKePtqC1XZQOwFe9pBJOuny9fAo2v0hhdU
+sS9PmUzyaP4YOUnWOEpujU4Ntk9jtvWrl7VG0xSE1fcaBkN6+ssvRO3+D3XYoPhT
+u9OxLZNDfmFc5DpuSc31VY2Fq3SVD8vrSrZCh892T0/J0VlX0LGSga/BXUGqJOkm
+ISWgUB/eHTsaKb97cro6VTZyL4tvr+69IM+I4hVg8FRGZWOzj2wuFraMOPnUgjj0
+qk9snA1RP3TZWu+hHCGtY/wXFg7RDEb0nTsh2w0tAvNVYHHPTeore/5T9qQ7VBC7
+KtabDr0CAwEAAaN2MHQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcD
+ATAPBgNVHQ8BAf8EBQMDByAAMB0GA1UdDgQWBBQwgymoaNHkuh20njTXz48/R+kl
+yDAfBgNVHSMEGDAWgBQrQlWadXqqzBV+2iw7BZXrvFHaQjANBgkqhkiG9w0BAQsF
+AAOCAQEA3kf9yAMYuPlBW2/y7UiKZGu6IVuxpmy+IFKeNIH6MNN9AsEHM1Yx4F1O
+c4UGHxEPoKj5k1cEjiNH4hcaAR/Gukq7efHtf98WGlEp8E8ctjkK6Eu3+hOLHQ01
+YjV76BOkWzOI6DwFYNa71Jae44A8QUFhdq3c874KwwX2VkKcfenb7SzfWn/93DpR
+L899PIzXWggADuRGb2S6L35DNk6sHQR8CwkT/HxZr/xqeAVP0qaXtkSPoPntVw6Z
+MIUFcmC7XbDuyo1Or3iCMgdsuqP88KWDqP7vF2Bu8deES4wQeIGBSl4e6kweesbY
+ASRKL9Qf3tPtKVGp0zvJbfSsOc+wig==
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-server-rsa-sign.pem b/crypto/test/data/tls/x509-server-rsa-sign.pem
new file mode 100644
index 000000000..09818af86
--- /dev/null
+++ b/crypto/test/data/tls/x509-server-rsa-sign.pem
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDQjCCAiqgAwIBAgIMWYGU8DJRSWC13gO8MA0GCSqGSIb3DQEBCwUAMCMxITAf
+BgNVBAMTGEJvdW5jeUNhc3RsZSBUTFMgVGVzdCBDQTAeFw0xNzA4MDIwOTAxMzZa
+Fw0zNzA3MjgwOTAxMzZaMCMxITAfBgNVBAMTGEJvdW5jeUNhc3RsZSBUZXN0IFNl
+cnZlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxfBvZ55WpVQeCh
+tVyd+O/sLueGVkBlYURusklcLCqdthM5QTLBVMOQ2vtxWnZDSHWIvPUPCnPxR8Is
+PvsM8BUqQjyj2d9CcvuNNgwKMIzUA10bQLPQ66ac1T7MU/2A4R+xxJN5ZOp4B+Uw
+EwNAeAVfQ9XZX+HkmVAjKPJiRzmjdzoAslQR0F5zL11gjmS8STwZuJ+2MpUh09VG
+dHJ+LB1CNVfnExwPqR3wd1TQPULXZN3Dx+f0W27gmA4GRitMtLltAljvZzGt6+xh
+byKJJjMnTBWlzFFiP/ggpcPs+q2hW9i3vPCE5eOGdkbDnXJi3aiBxYpTKeS54wGc
+/OkTv5UCAwEAAaN2MHQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcD
+ATAPBgNVHQ8BAf8EBQMDB4AAMB0GA1UdDgQWBBTXwO7kKzgzAOC9j607abavBMKy
+aTAfBgNVHSMEGDAWgBQrQlWadXqqzBV+2iw7BZXrvFHaQjANBgkqhkiG9w0BAQsF
+AAOCAQEAAYRsE0f2BkOlNWj1SNiwoWkw4Ic6WW1X43yh3L17c5hRLOGPupDngJBA
+EYTmsEfq26XX4mGlKXKgKZW2ijcrIQSkHEjkXHYdU+OI+4xufeNtGMYLijcwVKXM
+mmSe8ERWODdCfzDJSRdLx/NgLeWphMQLaym1TkK29lASyqIbCNATXGnMw3bcMLvU
+cXnjHtNU1tlYtVNCStvm2buy+vdVEGIsusqk+aetniEttBlQcPwuRMvbYmIDuRJP
+Bxsst/t32W+s8Eb2dqbSKm6TucOG5o7oXKH6l15d+ARRJJ3C3nODBvsYgSqg1Vtm
+7H0K9I4dLZoMUb4tWjSA9ckNU0nuKQ==
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-server-rsa_pss_256.pem b/crypto/test/data/tls/x509-server-rsa_pss_256.pem
new file mode 100644
index 000000000..0ebfa2e20
--- /dev/null
+++ b/crypto/test/data/tls/x509-server-rsa_pss_256.pem
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIID2jCCApKgAwIBAgIUODLkLENJ2mZJLwlk5OXY6ebyHp8wPQYJKoZIhvcNAQEK
+MDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMC
+ASAwIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxlIFRMUyBUZXN0IENBMB4XDTE4MTAy
+NDA2MDY0MloXDTM4MTAxOTA2MDY0MlowIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxl
+IFRlc3QgU2VydmVyMIIBUjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa
+MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIAOCAQ8AMIIBCgKCAQEAodS9
+1Z/KfuXUf0lSeDPWsC83pKL4SzK179UpnH0urGmwsRoJffGSOq7E0SljG11g000G
+P7x/RsciwpjgLDL7mpTx6rk7N0tEi79gKBNr6TGmD+I9gmCdKIvUY3/hBs/WgaEk
+77SlOgWVFuXGneFuMVaSExbEK1Mgc1eWnXpLvujwUBpVGB7ZafL2teU6mLZ3e/8w
+dJ9tgVVQtT6BjVT2zBc9GxC/aXcJ0di+eRGsO74ZaVyxUE26BAmYdHrjlkhN/Gd6
+NHN2SF5BBWFaaFk5s4aqeCj0pkrbb4VHdXWiJOkhPxjJRoeRgBr1+u0rqwPo7cPd
+Z61G65t+RNJcdks9XwIDAQABo3YwdDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoG
+CCsGAQUFBwMBMA8GA1UdDwEB/wQFAwMHgAAwHQYDVR0OBBYEFAbF9tL09Ej6Z7oS
+/pVe++Ff69FkMB8GA1UdIwQYMBaAFCEaiLbeA8ABgKrbcIiZpo8XzqpsMD0GCSqG
+SIb3DQEBCjAwoA0wCwYJYIZIAWUDBAIBoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFl
+AwQCAaIDAgEgA4IBAQBQJnvKt+zUFenmqBo8zGAUQdNYcIp5JhmTP2JbgWlNjTkj
+Tsc3i/rWKA0pxydWgQPL6VKBPiqFIQcuPEw6D9zQxRQpnOveRDTkDzcLbt/c5asO
+6TpHYqlSujeW7TEH0WLBg0uAHuRUclKYB1/2gSU0MUVtG/sZkh213vEx56F56iqx
+sXFDnt9pyu0tLE0nWWtY3dxGAYJpL1HGZ2ey//Tf0+lsS0t8iH0vAtUmssKJpA79
+76biXCHAVcL07O5jMwrF4v7ki/G7RQRQ+qrL03xBifAzKuczu4Ls++Wg7V4MUERj
+mpw4pbRBam9Sz3uwc1qA+Ul0TCHzMDAFWyMod0ND
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-server-rsa_pss_384.pem b/crypto/test/data/tls/x509-server-rsa_pss_384.pem
new file mode 100644
index 000000000..3506f48b2
--- /dev/null
+++ b/crypto/test/data/tls/x509-server-rsa_pss_384.pem
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIID2jCCApKgAwIBAgIUBSXp/i1JJIcj2ytjBNKJ0tbxKjYwPQYJKoZIhvcNAQEK
+MDCgDTALBglghkgBZQMEAgKhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAICogMC
+ATAwIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxlIFRMUyBUZXN0IENBMB4XDTE4MTAy
+NDA3NTY0OVoXDTM4MTAxOTA3NTY0OVowIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxl
+IFRlc3QgU2VydmVyMIIBUjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAqEa
+MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgKiAwIBMAOCAQ8AMIIBCgKCAQEA5/WZ
+i2mVYjpUgLlMIaPcULmsjVCkmOrah1WCLMZo5DZsergeIdvm+h/CVDrAjS2UzhVm
+doLTJzn/EfgZmZVtY341PRe2LVk/wrSzc3W4suedTX0NmOO72uJEab0VUgxF6yRw
+XUdVeWdWHk8v1eKOwpbbXytuxc9PIGFvIlAFjOXvXeK76a95nYnsGbTtfef39yC0
+sHxXosRmZ7viKeOcB5yw3zA2QLJFEu1TXXVNpgTkL9uSlpS+y+is7o0oXZWmn5wo
+08KHXnty3vH/FvhJ5J3e53ogI2mkn2iy27D8+8J3DUEK/2YC6p5rwwndfLwfR2Zm
+i6Ny6ZRQYpdQWl4u0wIDAQABo3YwdDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoG
+CCsGAQUFBwMBMA8GA1UdDwEB/wQFAwMHgAAwHQYDVR0OBBYEFH7CyTv6gZVClFkB
+XjNO+NVzVDCwMB8GA1UdIwQYMBaAFKnwXW9hoPAB6HSyWn7UEUMcKonnMD0GCSqG
+SIb3DQEBCjAwoA0wCwYJYIZIAWUDBAICoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFl
+AwQCAqIDAgEwA4IBAQAt1xrrBujilh2NVclsaRoqD+QJ7QhDdFVbS2zBJTVz7nds
+TMu9iU/dXAp2zdsmpXi3mKStgYWS1yjSdyKyBy4v7EwGx5qHrcnMzyfX2BelGDk7
+OYCXGaFweAqRUh8SchYA1+Dlwg7ub+SpGkDnA76LgBcHFoC7AMozLOeY6GNT4qdq
+64+jFvCFrDVC4xMvMB3+vwdlDIIyr9uY3z9Axw35IRPyVHJnyiLu/OIwD7Vw9A4n
+11WrUXZ2fvqJUcSvwqdHRAy1kj9LsagfEXatJ79ZC2En2XhEs+PHTgtqw5UdPk16
+dVIlgPTQ/Te+ttubJPsKOpgKj8YOiNtnEZdzpJUP
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-server-rsa_pss_512.pem b/crypto/test/data/tls/x509-server-rsa_pss_512.pem
new file mode 100644
index 000000000..51e323b43
--- /dev/null
+++ b/crypto/test/data/tls/x509-server-rsa_pss_512.pem
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIID2jCCApKgAwIBAgIUV12PGXPx0Jj7USRKsKNrWFqJRHEwPQYJKoZIhvcNAQEK
+MDCgDTALBglghkgBZQMEAgOhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIDogMC
+AUAwIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxlIFRMUyBUZXN0IENBMB4XDTE4MTAy
+NDA2MDY0M1oXDTM4MTAxOTA2MDY0M1owIzEhMB8GA1UEAxMYQm91bmN5Q2FzdGxl
+IFRlc3QgU2VydmVyMIIBUjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6Ea
+MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAQ8AMIIBCgKCAQEAws5z
+aZVjJoW9oCMlXJRBBBGEeGzJo0cTRzvE/vMnbOvXQalM4xVAuL2ZAt+Tqb8H3qLx
+0R5JOStkx167x90wBzwQLMm92Y8eBGDBknJE5jxubX+3b/qrL+Npew0cMdVe3auZ
+DU6AaVM902MEH9aD+tcEyT91nJW9RTQ5HaAd1waOYBejlI/pMB7S7gVCpAiGt5PC
+XMJevMAmXphWw3aH6ZsaO/a/wWpP+Ea6C6g6Xrsdr+Pzm/G2GHBtrzBiXwep/3ui
+3V9+/zMZgKLX+Z7FpSLneTy37kozx8Ry5mn97EOLhYYHlRW5/u0cEjjK7cxx75tp
+ERblHnjgs01MtHnqnwIDAQABo3YwdDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoG
+CCsGAQUFBwMBMA8GA1UdDwEB/wQFAwMHgAAwHQYDVR0OBBYEFPD37/qzJg/+/Qws
+V8GW0g0P1L07MB8GA1UdIwQYMBaAFKVY4bgN1p+8NOXoPdj6DKWDscBFMD0GCSqG
+SIb3DQEBCjAwoA0wCwYJYIZIAWUDBAIDoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFl
+AwQCA6IDAgFAA4IBAQCVRYStZNCUKNzu+kBiHBVJn5Dbu97s3jHBw0ACphUp+M75
+O1ohoT+ny3wgIJx4sN1Fc80cT24o1V48nI4nJTlgAhYyjYjaMilHpwLP4oLclQX8
+OUoyoTPIIRfP4UNRmxAtH+2eEGieO1QDsYyqsGKR9DeWme4t4dc/NTuZ8/E3UW9C
+m0VO0ev3m8ZGfWANRP0yyjnvke4I5awFur9ncGn3vwZYJLDlV9dwi3B68VUzt4Um
+jz4yhgCU+kOqID/HXgWUCosreQGN+KqungUlENOVvBV4sTfQpnaAJaKpT4zkEYMP
+sRkBrV12dCYh4NIpqDsnjSpWEuDlpT4F3hJx2BqU
+-----END CERTIFICATE-----
diff --git a/crypto/test/data/tls/x509-server.pem b/crypto/test/data/tls/x509-server.pem
deleted file mode 100644
index efc806967..000000000
--- a/crypto/test/data/tls/x509-server.pem
+++ /dev/null
@@ -1,22 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDmjCCAlKgAwIBAgIEUqKc4DANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDExhC
-b3VuY3lDYXN0bGUgVExTIFRlc3QgQ0EwHhcNMTMxMjA3MDM1ODI0WhcNMzMxMjAy
-MDM1ODI0WjAjMSEwHwYDVQQDExhCb3VuY3lDYXN0bGUgVGVzdCBTZXJ2ZXIwggFS
-MA0GCSqGSIb3DQEBAQUAA4IBPwAwggE6AoIBMQCzL883ng/tmQfbcUeO2Bm7OnIZ
-rzj5hk4zeyeKR6brrSj3RaxOq4wy1c14BA8YAVSm7ZDGjjXqiCiWqq1NdgnP2qyn
-94O/OU0Ik3scpvkWDbweIJx0zHYBHTeqUaTEjdawI/EWxfzfOvPzBlK+s7uONLX9
-Z8lbW9iZ76SS1hyD3T7mknTmEQAjAVT+aH0qdVFV2cg0JwKp2fCkDV8A9cvCo1h1
-GiVpzNpAUjWaXxhs6AKd5/O7F5K32rP/tOQEhNW8F/cAfl9QbpR7M3GZrzmjtvU/
-hAk2JYYDu7CHuIAGkhHvv3kWTx5s5JQP2Vn2KqjQLNcEMCLAl7e7NIsEhOUXTFvK
-94f4guPuwqlrQKRX7nJnUKYHjbqWW64GVjFuLbB8CA3xqt9C2dOhuX+b4KWtAgMB
-AAGjdjB0MAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0P
-AQH/BAUDAwegADAdBgNVHQ4EFgQUlILGBt8EzhYtlNrOPrhfwi0s6bkwHwYDVR0j
-BBgwFoAU9mOvr6Pi7+4O5bKxRihqeCkyHukwDQYJKoZIhvcNAQELBQADggExAMQd
-MLOlWKWJxh6IP7sRlWKjpWZyu43eSOfvEpVljW8VaRxJC8UdhpFxsXS6Ml7wEMUC
-BkVNHGMxho/GJMXUBV7OsQSv0et1o45bmkN+KKisSVReSgcj6Drp/BRcUcybPtcJ
-aDW1txh/suHWppVmtkIkZIF/3IR2qFekDdCLoluiEOvbNn3YjUnQLm6Eo0pBxgpb
-W5MF3/19UckP1sLrs5vFk1dtDBZ/agpI9I0psv+6OsjosvrdpjIPHjwmoZ+oYtKc
-4Q30vzLCVtGGyzXWBZ+Z6AbmZpJPDQtul522XKE2vE8GA3+X/RXVAZB8a86DWtzq
-J1O6D+KOyA9zwe1CO+VJ5fMkjSNXY6WDzEXqyKEBP8tkkvSByiM546CXtNDbEwBe
-PtYQf223mpK56XTFq4k=
------END CERTIFICATE-----
diff --git a/crypto/test/src/crypto/tls/test/MockDtlsClient.cs b/crypto/test/src/crypto/tls/test/MockDtlsClient.cs
index 51493fae1..43b987cc1 100644
--- a/crypto/test/src/crypto/tls/test/MockDtlsClient.cs
+++ b/crypto/test/src/crypto/tls/test/MockDtlsClient.cs
@@ -143,8 +143,9 @@ namespace Org.BouncyCastle.Crypto.Tls.Tests
                 if (certificateTypes == null || !Arrays.Contains(certificateTypes, ClientCertificateType.rsa_sign))
                     return null;
 
-                return TlsTestUtilities.LoadSignerCredentials(mContext, certificateRequest.SupportedSignatureAlgorithms,
-                    SignatureAlgorithm.rsa, "x509-client.pem", "x509-client-key.pem");
+                return TlsTestUtilities.LoadSignerCredentials(mContext,
+                    certificateRequest.SupportedSignatureAlgorithms, SignatureAlgorithm.rsa,
+                    new string[]{ "x509-client-rsa.pem", "x509-ca-rsa.pem" }, "x509-client-key-rsa.pem");
             }
         };
     }
diff --git a/crypto/test/src/crypto/tls/test/MockDtlsServer.cs b/crypto/test/src/crypto/tls/test/MockDtlsServer.cs
index 16e92b258..842cbba58 100644
--- a/crypto/test/src/crypto/tls/test/MockDtlsServer.cs
+++ b/crypto/test/src/crypto/tls/test/MockDtlsServer.cs
@@ -53,7 +53,7 @@ namespace Org.BouncyCastle.Crypto.Tls.Tests
             }
 
             IList certificateAuthorities = new ArrayList();
-            certificateAuthorities.Add(TlsTestUtilities.LoadCertificateResource("x509-ca.pem").Subject);
+            certificateAuthorities.Add(TlsTestUtilities.LoadCertificateResource("x509-ca-rsa.pem").Subject);
 
             return new CertificateRequest(certificateTypes, serverSigAlgs, certificateAuthorities);
         }
@@ -83,14 +83,15 @@ namespace Org.BouncyCastle.Crypto.Tls.Tests
 
         protected override TlsEncryptionCredentials GetRsaEncryptionCredentials()
         {
-            return TlsTestUtilities.LoadEncryptionCredentials(mContext, new string[] { "x509-server.pem", "x509-ca.pem" },
-                "x509-server-key.pem");
+            return TlsTestUtilities.LoadEncryptionCredentials(mContext,
+                new string[] { "x509-server-rsa-enc.pem", "x509-ca-rsa.pem" }, "x509-server-key-rsa-enc.pem");
         }
 
         protected override TlsSignerCredentials GetRsaSignerCredentials()
         {
-            return TlsTestUtilities.LoadSignerCredentials(mContext, mSupportedSignatureAlgorithms, SignatureAlgorithm.rsa,
-                "x509-server.pem", "x509-server-key.pem");
+            return TlsTestUtilities.LoadSignerCredentials(mContext, mSupportedSignatureAlgorithms,
+                SignatureAlgorithm.rsa, new string[]{ "x509-server-rsa-sign.pem", "x509-ca-rsa.pem" },
+                "x509-server-key-rsa-sign.pem");
         }
     }
 }
diff --git a/crypto/test/src/crypto/tls/test/MockPskTlsServer.cs b/crypto/test/src/crypto/tls/test/MockPskTlsServer.cs
index 79c5d6363..3a6860280 100644
--- a/crypto/test/src/crypto/tls/test/MockPskTlsServer.cs
+++ b/crypto/test/src/crypto/tls/test/MockPskTlsServer.cs
@@ -76,8 +76,8 @@ namespace Org.BouncyCastle.Crypto.Tls.Tests
 
         protected override TlsEncryptionCredentials GetRsaEncryptionCredentials()
         {
-            return TlsTestUtilities.LoadEncryptionCredentials(mContext, new string[]{"x509-server.pem", "x509-ca.pem"},
-                "x509-server-key.pem");
+            return TlsTestUtilities.LoadEncryptionCredentials(mContext,
+                new string[]{ "x509-server-rsa-enc.pem", "x509-ca-rsa.pem"}, "x509-server-key-rsa-enc.pem");
         }
 
         internal class MyIdentityManager
diff --git a/crypto/test/src/crypto/tls/test/MockSrpTlsServer.cs b/crypto/test/src/crypto/tls/test/MockSrpTlsServer.cs
index c15f63e0b..61a86d34e 100644
--- a/crypto/test/src/crypto/tls/test/MockSrpTlsServer.cs
+++ b/crypto/test/src/crypto/tls/test/MockSrpTlsServer.cs
@@ -78,14 +78,16 @@ namespace Org.BouncyCastle.Crypto.Tls.Tests
 
         protected override TlsSignerCredentials GetDsaSignerCredentials()
         {
-            return TlsTestUtilities.LoadSignerCredentials(mContext, mSupportedSignatureAlgorithms, SignatureAlgorithm.dsa,
-                "x509-server-dsa.pem", "x509-server-key-dsa.pem");
+            return TlsTestUtilities.LoadSignerCredentials(mContext, mSupportedSignatureAlgorithms,
+                SignatureAlgorithm.dsa, new string[] { "x509-server-dsa.pem", "x509-ca-dsa.pem" },
+                "x509-server-key-dsa.pem");
         }
 
         protected override TlsSignerCredentials GetRsaSignerCredentials()
         {
-            return TlsTestUtilities.LoadSignerCredentials(mContext, mSupportedSignatureAlgorithms, SignatureAlgorithm.rsa,
-                "x509-server.pem", "x509-server-key.pem");
+            return TlsTestUtilities.LoadSignerCredentials(mContext, mSupportedSignatureAlgorithms,
+                SignatureAlgorithm.rsa, new string[] { "x509-server-rsa-sign.pem", "x509-ca-rsa.pem" },
+                "x509-server-key-rsa-sign.pem");
         }
 
         internal class MyIdentityManager
diff --git a/crypto/test/src/crypto/tls/test/MockTlsClient.cs b/crypto/test/src/crypto/tls/test/MockTlsClient.cs
index f28236f0b..cdf727cc9 100644
--- a/crypto/test/src/crypto/tls/test/MockTlsClient.cs
+++ b/crypto/test/src/crypto/tls/test/MockTlsClient.cs
@@ -133,8 +133,9 @@ namespace Org.BouncyCastle.Crypto.Tls.Tests
                 if (certificateTypes == null || !Arrays.Contains(certificateTypes, ClientCertificateType.rsa_sign))
                     return null;
 
-                return TlsTestUtilities.LoadSignerCredentials(mContext, certificateRequest.SupportedSignatureAlgorithms,
-                    SignatureAlgorithm.rsa, "x509-client.pem", "x509-client-key.pem");
+                return TlsTestUtilities.LoadSignerCredentials(mContext,
+                    certificateRequest.SupportedSignatureAlgorithms, SignatureAlgorithm.rsa,
+                    new string[]{ "x509-client-rsa.pem", "x509-ca-rsa.pem" }, "x509-client-key-rsa.pem");
             }
         };
     }
diff --git a/crypto/test/src/crypto/tls/test/MockTlsServer.cs b/crypto/test/src/crypto/tls/test/MockTlsServer.cs
index f0a9be0a5..5911607bc 100644
--- a/crypto/test/src/crypto/tls/test/MockTlsServer.cs
+++ b/crypto/test/src/crypto/tls/test/MockTlsServer.cs
@@ -67,7 +67,7 @@ namespace Org.BouncyCastle.Crypto.Tls.Tests
             }
 
             IList certificateAuthorities = new ArrayList();
-            certificateAuthorities.Add(TlsTestUtilities.LoadCertificateResource("x509-ca.pem").Subject);
+            certificateAuthorities.Add(TlsTestUtilities.LoadCertificateResource("x509-ca-rsa.pem").Subject);
 
             return new CertificateRequest(certificateTypes, serverSigAlgs, certificateAuthorities);
         }
@@ -87,14 +87,15 @@ namespace Org.BouncyCastle.Crypto.Tls.Tests
 
         protected override TlsEncryptionCredentials GetRsaEncryptionCredentials()
         {
-            return TlsTestUtilities.LoadEncryptionCredentials(mContext, new string[]{ "x509-server.pem", "x509-ca.pem" },
-                "x509-server-key.pem");
+            return TlsTestUtilities.LoadEncryptionCredentials(mContext,
+                new string[]{ "x509-server-rsa-enc.pem", "x509-ca-rsa.pem" }, "x509-server-key-rsa-enc.pem");
         }
 
         protected override TlsSignerCredentials GetRsaSignerCredentials()
         {
-            return TlsTestUtilities.LoadSignerCredentials(mContext, mSupportedSignatureAlgorithms, SignatureAlgorithm.rsa,
-                "x509-server.pem", "x509-server-key.pem");
+            return TlsTestUtilities.LoadSignerCredentials(mContext, mSupportedSignatureAlgorithms,
+                SignatureAlgorithm.rsa, new string[]{ "x509-server-rsa-sign.pem", "x509-ca-rsa.pem" },
+                "x509-server-key-rsa-sign.pem");
         }
     }
 }
diff --git a/crypto/test/src/crypto/tls/test/TlsTestClientImpl.cs b/crypto/test/src/crypto/tls/test/TlsTestClientImpl.cs
index 864a0a5cc..ae1f632ba 100644
--- a/crypto/test/src/crypto/tls/test/TlsTestClientImpl.cs
+++ b/crypto/test/src/crypto/tls/test/TlsTestClientImpl.cs
@@ -180,9 +180,12 @@ namespace Org.BouncyCastle.Crypto.Tls.Tests
                 X509CertificateStructure[] chain = serverCertificate.GetCertificateList();
 
                 // TODO Cache test resources?
-                if (isEmpty || !(chain[0].Equals(TlsTestUtilities.LoadCertificateResource("x509-server.pem"))
-                    || chain[0].Equals(TlsTestUtilities.LoadCertificateResource("x509-server-dsa.pem"))
-                    || chain[0].Equals(TlsTestUtilities.LoadCertificateResource("x509-server-ecdsa.pem"))))
+                if (isEmpty || !(
+                    chain[0].Equals(TlsTestUtilities.LoadCertificateResource("x509-server-dsa.pem")) ||
+                    chain[0].Equals(TlsTestUtilities.LoadCertificateResource("x509-server-ecdsa.pem")) ||
+                    chain[0].Equals(TlsTestUtilities.LoadCertificateResource("x509-server-rsa-enc.pem")) ||
+                    chain[0].Equals(TlsTestUtilities.LoadCertificateResource("x509-server-rsa-sign.pem"))
+                ))
                 {
                     throw new TlsFatalAlert(AlertDescription.bad_certificate);
                 }
@@ -221,7 +224,8 @@ namespace Org.BouncyCastle.Crypto.Tls.Tests
                 }
 
                 TlsSignerCredentials signerCredentials = TlsTestUtilities.LoadSignerCredentials(mContext,
-                    supportedSigAlgs, SignatureAlgorithm.rsa, "x509-client.pem", "x509-client-key.pem");
+                    supportedSigAlgs, SignatureAlgorithm.rsa, new string[]{ "x509-client-rsa.pem", "x509-ca-rsa.pem" },
+                    "x509-client-key-rsa.pem");
 
                 if (mOuter.mConfig.clientAuth == TlsTestConfig.CLIENT_AUTH_VALID)
                 {
diff --git a/crypto/test/src/crypto/tls/test/TlsTestServerImpl.cs b/crypto/test/src/crypto/tls/test/TlsTestServerImpl.cs
index 9edd2e524..2587181a5 100644
--- a/crypto/test/src/crypto/tls/test/TlsTestServerImpl.cs
+++ b/crypto/test/src/crypto/tls/test/TlsTestServerImpl.cs
@@ -131,7 +131,7 @@ namespace Org.BouncyCastle.Crypto.Tls.Tests
             }
 
             IList certificateAuthorities = new ArrayList();
-            certificateAuthorities.Add(TlsTestUtilities.LoadCertificateResource("x509-ca.pem").Subject);
+            certificateAuthorities.Add(TlsTestUtilities.LoadCertificateResource("x509-ca-rsa.pem").Subject);
 
             return new CertificateRequest(certificateTypes, serverSigAlgs, certificateAuthorities);
         }
@@ -152,9 +152,11 @@ namespace Org.BouncyCastle.Crypto.Tls.Tests
             X509CertificateStructure[] chain = clientCertificate.GetCertificateList();
 
             // TODO Cache test resources?
-            if (!isEmpty && !(chain[0].Equals(TlsTestUtilities.LoadCertificateResource("x509-client.pem"))
-                || chain[0].Equals(TlsTestUtilities.LoadCertificateResource("x509-client-dsa.pem"))
-                || chain[0].Equals(TlsTestUtilities.LoadCertificateResource("x509-client-ecdsa.pem"))))
+            if (!isEmpty && !(
+                chain[0].Equals(TlsTestUtilities.LoadCertificateResource("x509-client-dsa.pem")) ||
+                chain[0].Equals(TlsTestUtilities.LoadCertificateResource("x509-client-ecdsa.pem")) ||
+                chain[0].Equals(TlsTestUtilities.LoadCertificateResource("x509-client-rsa.pem"))
+            ))
             {
                 throw new TlsFatalAlert(AlertDescription.bad_certificate);
             }
@@ -186,26 +188,29 @@ namespace Org.BouncyCastle.Crypto.Tls.Tests
 
         protected override TlsSignerCredentials GetDsaSignerCredentials()
         {
-            return TlsTestUtilities.LoadSignerCredentials(mContext, GetSupportedSignatureAlgorithms(), SignatureAlgorithm.dsa,
-                "x509-server-dsa.pem", "x509-server-key-dsa.pem");
+            return TlsTestUtilities.LoadSignerCredentials(mContext, GetSupportedSignatureAlgorithms(),
+                SignatureAlgorithm.dsa, new string[]{ "x509-server-dsa.pem", "x509-ca-dsa.pem" },
+                "x509-server-key-dsa.pem");
         }
 
         protected override TlsSignerCredentials GetECDsaSignerCredentials()
         {
-            return TlsTestUtilities.LoadSignerCredentials(mContext, GetSupportedSignatureAlgorithms(), SignatureAlgorithm.ecdsa,
-                "x509-server-ecdsa.pem", "x509-server-key-ecdsa.pem");
+            return TlsTestUtilities.LoadSignerCredentials(mContext, GetSupportedSignatureAlgorithms(),
+                SignatureAlgorithm.ecdsa, new string[]{ "x509-server-ecdsa.pem", "x509-ca-ecdsa.pem" },
+                "x509-server-key-ecdsa.pem");
         }
 
         protected override TlsEncryptionCredentials GetRsaEncryptionCredentials()
         {
-            return TlsTestUtilities.LoadEncryptionCredentials(mContext, new string[]{ "x509-server.pem", "x509-ca.pem" },
-                "x509-server-key.pem");
+            return TlsTestUtilities.LoadEncryptionCredentials(mContext,
+                new string[]{ "x509-server-rsa-enc.pem", "x509-ca-rsa.pem" }, "x509-server-key-rsa-enc.pem");
         }
 
         protected override TlsSignerCredentials GetRsaSignerCredentials()
         {
-            return TlsTestUtilities.LoadSignerCredentials(mContext, GetSupportedSignatureAlgorithms(), SignatureAlgorithm.rsa,
-                "x509-server.pem", "x509-server-key.pem");
+            return TlsTestUtilities.LoadSignerCredentials(mContext, GetSupportedSignatureAlgorithms(),
+                SignatureAlgorithm.rsa, new string[]{ "x509-server-rsa-sign.pem", "x509-ca-rsa.pem" },
+                "x509-server-key-rsa-sign.pem");
         }
 
         private static void SafeWriteLine(TextWriter output, object line)
diff --git a/crypto/test/src/crypto/tls/test/TlsTestUtilities.cs b/crypto/test/src/crypto/tls/test/TlsTestUtilities.cs
index a76858ce6..e339850a6 100644
--- a/crypto/test/src/crypto/tls/test/TlsTestUtilities.cs
+++ b/crypto/test/src/crypto/tls/test/TlsTestUtilities.cs
@@ -91,7 +91,7 @@ namespace Org.BouncyCastle.Crypto.Tls.Tests
         }
 
         internal static TlsSignerCredentials LoadSignerCredentials(TlsContext context, IList supportedSignatureAlgorithms,
-            byte signatureAlgorithm, string certResource, string keyResource)
+            byte signatureAlgorithm, string[] certResources, string keyResource)
         {
             /*
              * TODO Note that this code fails to provide default value for the client supported
@@ -114,8 +114,7 @@ namespace Org.BouncyCastle.Crypto.Tls.Tests
                     return null;
             }
 
-            return LoadSignerCredentials(context, new String[]{ certResource, "x509-ca.pem" },
-                keyResource, signatureAndHashAlgorithm);
+            return LoadSignerCredentials(context, certResources, keyResource, signatureAndHashAlgorithm);
         }
 
         internal static Certificate LoadCertificateChain(string[] resources)