aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2014-09-24 21:48:46 -0500
committerPaul Kehrer <paul.l.kehrer@gmail.com>2014-09-24 21:48:46 -0500
commitcede72d984190fed405122836574a747c43ab7e2 (patch)
tree3d29cd952af6e08a81d4b5695d6e0eb1fdd626f0
parent506f65b47f52377b0144669cfb41835762b25bb4 (diff)
parent7289496d8534645c8bf00b0a90b485e6fcf30bbb (diff)
downloadcryptography-cede72d984190fed405122836574a747c43ab7e2.tar.gz
cryptography-cede72d984190fed405122836574a747c43ab7e2.tar.bz2
cryptography-cede72d984190fed405122836574a747c43ab7e2.zip
Merge pull request #1341 from michael-hart/ec_vectors
Test Vector changes
-rw-r--r--docs/development/test-vectors.rst32
-rw-r--r--docs/spelling_wordlist.txt7
-rw-r--r--tests/hazmat/primitives/test_serialization.py18
-rw-r--r--vectors/cryptography_vectors/asymmetric/PEM_Serialization/README.txt10
-rw-r--r--vectors/cryptography_vectors/asymmetric/PEM_Serialization/dsa_private_key.pem23
-rw-r--r--vectors/cryptography_vectors/asymmetric/PEM_Serialization/dsa_public_key.pem20
-rw-r--r--vectors/cryptography_vectors/asymmetric/PEM_Serialization/dsaparam.pem14
-rw-r--r--vectors/cryptography_vectors/asymmetric/PEM_Serialization/rsa_private_key.pem30
-rw-r--r--vectors/cryptography_vectors/asymmetric/PEM_Serialization/rsa_public_key.pem9
-rw-r--r--vectors/cryptography_vectors/asymmetric/PKCS8/enc-rsa-pkcs8.pem (renamed from vectors/cryptography_vectors/asymmetric/PKCS8/encpkcs8.pem)0
-rw-r--r--vectors/cryptography_vectors/asymmetric/PKCS8/enc2-rsa-pkcs8.pem (renamed from vectors/cryptography_vectors/asymmetric/PKCS8/enc2pkcs8.pem)0
-rw-r--r--vectors/cryptography_vectors/asymmetric/PKCS8/unenc-dsa-pkcs8.pub.pem12
-rw-r--r--vectors/cryptography_vectors/asymmetric/PKCS8/unenc-rsa-pkcs8.pem (renamed from vectors/cryptography_vectors/asymmetric/PKCS8/unencpkcs8.pem)0
-rw-r--r--vectors/cryptography_vectors/asymmetric/PKCS8/unenc-rsa-pkcs8.pub.pem6
14 files changed, 166 insertions, 15 deletions
diff --git a/docs/development/test-vectors.rst b/docs/development/test-vectors.rst
index 2682d37e..e9ab6123 100644
--- a/docs/development/test-vectors.rst
+++ b/docs/development/test-vectors.rst
@@ -29,7 +29,7 @@ Asymmetric ciphers
* OpenSSL PEM DSA serialization vectors from the `GnuTLS example keys`_.
* PKCS #8 PEM serialization vectors from
- * GnuTLS: `encpkcs8.pem`_, `enc2pkcs8.pem`_, `unencpkcs8.pem`_,
+ * GnuTLS: `enc-rsa-pkcs8.pem`_, `enc2-rsa-pkcs8.pem`_, `unenc-rsa-pkcs8.pem`_,
`pkcs12_s2k_pem.c`_.
* `Botan's ECC private keys`_.
@@ -99,7 +99,29 @@ Creating test vectors
---------------------
When official vectors are unavailable ``cryptography`` may choose to build
-its own using existing vectors as source material. Current custom vectors:
+its own using existing vectors as source material.
+
+Current custom vectors
+~~~~~~~~~~~~~~~~~~~~~~
+
+* ec_private_key.pem - Contains an Elliptic Curve key generated by OpenSSL
+ from the curve secp256r1.
+* ec_private_key_encrypted.pem - Contains the same Elliptic Curve key as
+ ec_private_key.pem, except that it is encrypted with AES-256 with the
+ password "123456".
+* ec_public_key.pem - Contains the public key corresponding to
+ ec_private_key.pem, generated using OpenSSL.
+* rsa_private_key.pem - Contains an RSA 2048 bit key generated using
+ OpenSSL, protected by the secret "123456" with DES3 encryption.
+* rsa_public_key.pem - Contains an RSA 2048 bit public generated using
+ OpenSSL from rsa_private_key.pem.
+* dsaparam.pem - Contains 2048-bit DSA parameters generated using OpenSSL;
+ contains no keys.
+* dsa_private_key.pem - Contains a DSA 2048 bit key generated using
+ OpenSSL from the parameters in dsaparam.pem, protected by the secret
+ "123456" with DES3 encryption.
+* dsa_public_key.pem - Contains a DSA 2048 bit key generated using OpenSSL
+ from dsa_private_key.pem.
.. toctree::
:maxdepth: 1
@@ -135,9 +157,9 @@ header format (substituting the correct information):
.. _`errata`: http://www.rfc-editor.org/errata_search.php?rfc=6238
.. _`OpenSSL example key`: http://git.openssl.org/gitweb/?p=openssl.git;a=blob;f=test/testrsa.pem;h=aad21067a8f7cb93a52a511eb9162fd83be39135;hb=66e8211c0b1347970096e04b18aa52567c325200
.. _`GnuTLS key parsing tests`: https://gitorious.org/gnutls/gnutls/commit/f16ef39ef0303b02d7fa590a37820440c466ce8d
-.. _`encpkcs8.pem`: https://gitorious.org/gnutls/gnutls/source/f8d943b38bf74eaaa11d396112daf43cb8aa82ae:tests/pkcs8-decode/encpkcs8.pem
-.. _`enc2pkcs8.pem`: https://gitorious.org/gnutls/gnutls/source/f8d943b38bf74eaaa11d396112daf43cb8aa82ae:tests/pkcs8-decode/enc2pkcs8.pem
-.. _`unencpkcs8.pem`: https://gitorious.org/gnutls/gnutls/source/f8d943b38bf74eaaa11d396112daf43cb8aa82ae:tests/pkcs8-decode/unencpkcs8.pem
+.. _`enc-rsa-pkcs8.pem`: https://gitorious.org/gnutls/gnutls/source/f8d943b38bf74eaaa11d396112daf43cb8aa82ae:tests/pkcs8-decode/encpkcs8.pem
+.. _`enc2-rsa-pkcs8.pem`: https://gitorious.org/gnutls/gnutls/source/f8d943b38bf74eaaa11d396112daf43cb8aa82ae:tests/pkcs8-decode/enc2pkcs8.pem
+.. _`unenc-rsa-pkcs8.pem`: https://gitorious.org/gnutls/gnutls/source/f8d943b38bf74eaaa11d396112daf43cb8aa82ae:tests/pkcs8-decode/unencpkcs8.pem
.. _`pkcs12_s2k_pem.c`: https://gitorious.org/gnutls/gnutls/source/f8d943b38bf74eaaa11d396112daf43cb8aa82ae:tests/pkcs12_s2k_pem.c
.. _`Botan's ECC private keys`: https://github.com/randombit/botan/tree/4917f26a2b154e841cd27c1bcecdd41d2bdeb6ce/src/tests/data/ecc
.. _`GnuTLS example keys`: https://gitorious.org/gnutls/gnutls/commit/ad2061deafdd7db78fd405f9d143b0a7c579da7b
diff --git a/docs/spelling_wordlist.txt b/docs/spelling_wordlist.txt
index b16026f6..47be985f 100644
--- a/docs/spelling_wordlist.txt
+++ b/docs/spelling_wordlist.txt
@@ -20,6 +20,9 @@ decrypting
deserialize
deserialized
Docstrings
+dsa
+dsaparam
+ec
fernet
Fernet
hazmat
@@ -33,12 +36,16 @@ Lange
metadata
namespace
namespaces
+pem
pickleable
plaintext
preprocessor
preprocessors
pseudorandom
pyOpenSSL
+rsa
+secp
+secp256r1
Schneier
scrypt
Solaris
diff --git a/tests/hazmat/primitives/test_serialization.py b/tests/hazmat/primitives/test_serialization.py
index 7c912a92..d369e8f4 100644
--- a/tests/hazmat/primitives/test_serialization.py
+++ b/tests/hazmat/primitives/test_serialization.py
@@ -298,9 +298,9 @@ class TestPKCS8Serialization(object):
@pytest.mark.parametrize(
("key_file", "password"),
[
- ("unencpkcs8.pem", None),
- ("encpkcs8.pem", b"foobar"),
- ("enc2pkcs8.pem", b"baz"),
+ ("unenc-rsa-pkcs8.pem", None),
+ ("enc-rsa-pkcs8.pem", b"foobar"),
+ ("enc2-rsa-pkcs8.pem", b"baz"),
("pkcs12_s2k_pem-X_9607.pem", b"123456"),
("pkcs12_s2k_pem-X_9671.pem", b"123456"),
("pkcs12_s2k_pem-X_9925.pem", b"123456"),
@@ -349,7 +349,7 @@ class TestPKCS8Serialization(object):
def test_unused_password(self, backend):
key_file = os.path.join(
- "asymmetric", "PKCS8", "unencpkcs8.pem")
+ "asymmetric", "PKCS8", "unenc-rsa-pkcs8.pem")
password = b"this password will not be used"
with pytest.raises(TypeError):
@@ -362,7 +362,7 @@ class TestPKCS8Serialization(object):
def test_wrong_password(self, backend):
key_file = os.path.join(
- "asymmetric", "PKCS8", "encpkcs8.pem")
+ "asymmetric", "PKCS8", "enc-rsa-pkcs8.pem")
password = b"this password is wrong"
with pytest.raises(ValueError):
@@ -378,7 +378,7 @@ class TestPKCS8Serialization(object):
key_file = os.path.join(
"asymmetric",
"PKCS8",
- "encpkcs8.pem"
+ "enc-rsa-pkcs8.pem"
)
with pytest.raises(TypeError):
@@ -403,7 +403,7 @@ class TestPKCS8Serialization(object):
)
def test_corrupt_format(self, backend):
- # unencpkcs8.pem with a bunch of data missing.
+ # unenc-rsa-pkcs8.pem with a bunch of data missing.
key_data = textwrap.dedent("""\
-----BEGIN PRIVATE KEY-----
MIICdQIBADALBgkqhkiG9w0BAQEEggJhMIICXQIBAAKBgQC7JHoJfg6yNzLMOWet
@@ -433,7 +433,7 @@ class TestPKCS8Serialization(object):
)
def test_encrypted_corrupt_format(self, backend):
- # encpkcs8.pem with some bits flipped.
+ # enc-rsa-pkcs8.pem with some bits flipped.
key_data = textwrap.dedent("""\
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIICojAcBgoqhkiG9w0BDAEDMA4ECHK0M0+QuEL9AgIBIcSCAoDRq+KRY+0XP0tO
@@ -469,7 +469,7 @@ class TestPKCS8Serialization(object):
def test_key1_pem_encrypted_values(self, backend):
pkey = load_vectors_from_file(
os.path.join(
- "asymmetric", "PKCS8", "encpkcs8.pem"),
+ "asymmetric", "PKCS8", "enc-rsa-pkcs8.pem"),
lambda pemfile: load_pem_pkcs8_private_key(
pemfile.read().encode(), b"foobar", backend
)
diff --git a/vectors/cryptography_vectors/asymmetric/PEM_Serialization/README.txt b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/README.txt
index 97879f5c..6963d2b5 100644
--- a/vectors/cryptography_vectors/asymmetric/PEM_Serialization/README.txt
+++ b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/README.txt
@@ -4,4 +4,12 @@ Contains
1. ec_private_key.pem - Contains an Elliptic Curve key generated using OpenSSL, from the curve secp256r1.
2. ec_private_key_encrypted.pem - Contains the same Elliptic Curve key as ec_private_key.pem, except that
- it is encrypted with AES-256 with the password "123456". \ No newline at end of file
+ it is encrypted with AES-256 with the password "123456".
+3. ec_public_key.pem - Contains the public key corresponding to ec_private_key.pem, generated using OpenSSL.
+4. rsa_private_key.pem - Contains an RSA 2048 bit key generated using OpenSSL, protected by the secret
+ "123456" with DES3 encryption.
+5. rsa_public_key.pem - Contains an RSA 2048 bit public generated using OpenSSL from rsa_private_key.pem.
+6. dsaparam.pem - Contains 2048-bit DSA parameters generated using OpenSSL; contains no keys.
+7. dsa_private_key.pem - Contains a DSA 2048 bit key generated using OpenSSL from the parameters in
+ dsaparam.pem, protected by the secret "123456" with DES3 encryption.
+8. dsa_public_key.pem - Contains a DSA 2048 bit key generated using OpenSSL from dsa_private_key.pem. \ No newline at end of file
diff --git a/vectors/cryptography_vectors/asymmetric/PEM_Serialization/dsa_private_key.pem b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/dsa_private_key.pem
new file mode 100644
index 00000000..73438aaf
--- /dev/null
+++ b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/dsa_private_key.pem
@@ -0,0 +1,23 @@
+-----BEGIN DSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,8E6909ECE41ABC19
+
+Yc/v41zZCE8uICy9f13iDFtSUL0HGv4y6LVg9kCYDwANU778dvIoC2f71swaC3Dr
+jxoh5Nl9KPavTVyEXyVrAhHkYsh0jRGv6MQlTP8SDSYa1aa8q03sp8K9X1FiRpga
+wpFMYk3OIzLn2SGgEi98oo5rAXxjbzNXQCLXCyCJXIaVM+zcvK6bBwv94wVOdeFt
+LgVz00ULio+fWsYjCigoCVb7ruPWnlZWOwvyYB2iQSlcEXZke4W14oXPlarmL8ma
+ivJ6Tg/lbwFZJHqpBfeAYIVj5o8qnwfYb69nPTnsaPTzPMFwQteHqc5Ck3XV5Szi
+FIVHTpziRWnnWH3aujjM4qyINed8M5sukUgiIk32LKuA3Z+xRjNDcSauUhpzwXAb
+EHQ8R36Drs/GZTQLidDdrHTUSmek7e4avE0uaDyLLEvJivcM79lcFcsXrR2mwkds
+wf7IlH0B8/t2qpRKzlE3cSFvIpUilPY3TN6uDPuXfEWHWwNlY3PNxf6V3FmOu9sw
+g9lbFHofxTemC3s9U+hJUzfUJyLTuObx14SirixWE8nvyHF4gdEDHtariYRpWtYs
+ASelUaaVsyArDNeh5CrqOAE1mEtOaqzJXvpjewYtyrCjGUD26Rt5TxHBQb0UJQBg
+1A2ouUEpuXzlOtLFfKVqG+JfhMITuZiSvlHBsHRKy/f1OmEeYay7h3mJ13G5gbc5
+epsIUIIyFOe/BQmurVHIaW33bYfcBUOrXh24KZn1O1/OBLBQufAJnrncYgIim6TQ
+MKwz8xt/vowzTYVre8CwL/d0Vcazehbkb/oQN9B2+Tq5KJUhDMbp5pCEB6dmtULQ
+tL6XFjm/86ydZ5Rr/w+cIh4XWw4rRN5BJEjfDwsle0lnrddW5g/aS8v3RymMiGGR
+1fwHg1PxKmmuPM0S2NgMGSRXHXTe5XImKD+mDvKCwVOXBCgieevqPfamUc6qkqbc
+uXCwcQ6LlvfAgPgaLb/QrpMkMtviY6g0NRWI9oaMJW3OQOeZGxcX7FWv4mcziKF8
+uQ86X14XYOF302b2LsFJG5+S0nrY3x6OiUDq8MHrSKikZmDIrHGeG8dawByK2HeU
+8XYf6yTYt/JGPohVX6cXWJDL7A0bSklY
+-----END DSA PRIVATE KEY-----
diff --git a/vectors/cryptography_vectors/asymmetric/PEM_Serialization/dsa_public_key.pem b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/dsa_public_key.pem
new file mode 100644
index 00000000..3111fd1c
--- /dev/null
+++ b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/dsa_public_key.pem
@@ -0,0 +1,20 @@
+-----BEGIN PUBLIC KEY-----
+MIIDOjCCAi0GByqGSM44BAEwggIgAoIBAQCdup+OF+LpxHgQA7uLqHHssTpNNri+
+jF08raJImzJWAuQ4M/O0SoZuAoaHfeiGEVXvUm8+VLmOyp76S7e89oWOEAOeu7Ss
+C+KAihw6fCIHqbkuLbw+lr+QHogUoXrw6lfqHx/ipzRSqdcXFgCpfFXG6kq1dD6u
+xgROwEKhJwTdcxfzslHNuapcdYJkELt+On+Md7ugUk/pyoZMdCDJI0n96zspjFV3
+kuVlYFzqx8pxNZWQVfiTuVJ3P5d+u8EWbJ6MOvDPYnl2Ta2fKylKJMyTQdd0b5kn
+fdaVFLlH99AOlBscxKJVVT+ip/ZpLoKQdguKjj8IATY9NroVjDi31hHPAhUA9Xiw
+8nJriOJbS9yr8RaVob8lgEECggEAYU1COMEI9J6Cy8mt9ephOlo6zP/FwqP6g9QT
+PksRwyfWS1PxciShQaItRp0YCW9px8iDGTHtSIKBBjIGwv4/WvsqpBUdIFfFYvH7
+TCyycLiqVXag4wV5CXPipZCQwcQNI22rtrONT7R2P35kOXTRKRtZNi2/Q9/S0rn1
+x8LcWsFawFc3cnJSu5HAHZv22yIxBX7yPzwAng33GoZ+9SIVgHT90t2IzERH13eA
+WHiLmNlmF/zcTFYIUlyY3qdsQmH5RfItCqSE9/fnPQcx3jyZ3IJ/P794gRh5/z/b
+fx1DYwRrxKu1ZjPTWbcijXzb5bMBqzd5URziYcTs4WqukqzTLAOCAQUAAoIBAB8G
+85B5Z/xdBZhjCQJ9YyvfJRlhm6aIuir4vqD8xp9uQQtPzG8I1hDncBlgNm4TwaZE
+lJZDMQusk2zDh3FqVxiuFElvKUwkG+9jW3VRtLRHKHMlYcBOgZVcoUwIpUQk/ZMM
+L8NCId9/ofkRwV1N3oxksw7z7wB+0N6lCOxqoeMHG06kCPPb6drfus/Q81SjD8rP
+mN1m8NrnV0A+AQbszLyl6n1C1XRbsdtSb8AcPMfsnki+8iJPnJNymI+3lnzG0eHj
+3EK2euOA9R69pKsSWgZbobS3Emgj90KBjAIv8HcVauAQwe3m5s9E63R+2WjOGGKt
+kp5HvqNS90ur/hL65K8=
+-----END PUBLIC KEY-----
diff --git a/vectors/cryptography_vectors/asymmetric/PEM_Serialization/dsaparam.pem b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/dsaparam.pem
new file mode 100644
index 00000000..d256c86e
--- /dev/null
+++ b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/dsaparam.pem
@@ -0,0 +1,14 @@
+-----BEGIN DSA PARAMETERS-----
+MIICIAKCAQEAnbqfjhfi6cR4EAO7i6hx7LE6TTa4voxdPK2iSJsyVgLkODPztEqG
+bgKGh33ohhFV71JvPlS5jsqe+ku3vPaFjhADnru0rAvigIocOnwiB6m5Li28Ppa/
+kB6IFKF68OpX6h8f4qc0UqnXFxYAqXxVxupKtXQ+rsYETsBCoScE3XMX87JRzbmq
+XHWCZBC7fjp/jHe7oFJP6cqGTHQgySNJ/es7KYxVd5LlZWBc6sfKcTWVkFX4k7lS
+dz+XfrvBFmyejDrwz2J5dk2tnyspSiTMk0HXdG+ZJ33WlRS5R/fQDpQbHMSiVVU/
+oqf2aS6CkHYLio4/CAE2PTa6FYw4t9YRzwIVAPV4sPJya4jiW0vcq/EWlaG/JYBB
+AoIBAGFNQjjBCPSegsvJrfXqYTpaOsz/xcKj+oPUEz5LEcMn1ktT8XIkoUGiLUad
+GAlvacfIgxkx7UiCgQYyBsL+P1r7KqQVHSBXxWLx+0wssnC4qlV2oOMFeQlz4qWQ
+kMHEDSNtq7azjU+0dj9+ZDl00SkbWTYtv0Pf0tK59cfC3FrBWsBXN3JyUruRwB2b
+9tsiMQV+8j88AJ4N9xqGfvUiFYB0/dLdiMxER9d3gFh4i5jZZhf83ExWCFJcmN6n
+bEJh+UXyLQqkhPf35z0HMd48mdyCfz+/eIEYef8/238dQ2MEa8SrtWYz01m3Io18
+2+WzAas3eVEc4mHE7OFqrpKs0yw=
+-----END DSA PARAMETERS-----
diff --git a/vectors/cryptography_vectors/asymmetric/PEM_Serialization/rsa_private_key.pem b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/rsa_private_key.pem
new file mode 100644
index 00000000..dbef6744
--- /dev/null
+++ b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/rsa_private_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,B4B3C8C536E57CBE
+
+B8Lq1K/wcOr4JMspWrX3zCX14WAp3xgHsKAB4XfuCuju/HQZoWXtok1xoi5e2Ovw
+ENA99Jvb2yvBdDUfOlp1L1L+By3q+SwcdeNuEKjwGFG6MY2uZaVtLSiAFXf1N8PL
+id7FMRGPIxpTtXKMhfAq4luRb0BgKh7+ZvM7LkxkRxF7M1XVQPGhrU0OfxX9VODe
+YFH1q47os5JzHRcrRaFx6sn30e79ij2gRjzMVFuAX07n+yw3qeyNQNYdmDNP7iCZ
+x//0iN0NboTI81coNlxx7TL4bYwgESt1c2i/TCfLITjKgEny7MKqU1/jTrOJWu85
+PiK/ojaD1EMx9xxVgBCioQJVG/Jm9y+XhtGFAJUShzzsabX7KuANKRn3fgUN+yZS
+yp8hmD+R5gQHJk/8+zZ6/Imv8W/G+7fPZuSMgWeWtDReCkfzgnyIdjaIp3Pdp5yN
+WLLWADI4tHmNUqIzY7T25gVfg0P2tgQNzn3WzHxq4SfZN9Aw57woi8eSRpLBEn+C
+JjqwTxtFQ14ynG6GPsBaDcAduchmJPL7e9PuAfFyLJuM8sU8QyB2oir1M/qYFhTC
+ClXw2yylYjAy8TFw1L3UZA4hfAflINjYUY8pgAtTAjxeD/9PhiKSoMEX8Q/8Npti
+1Db5RpAClIEdB6nPywj6BzC+6El3dSGaCV0sTQ42LD+S3QH8VCwTB2AuKq7zyuD6
+wEQopcbIOGHSir875vYLmWLmqR9MCWZtKj/dWfTIQpBsPsI2ssZn/MptNqyEN9TW
+GfnWoTuzoziCS5YmEq7Mh98fwP9Krb0abo3fFvu6CY3dhvvoxPaXahyAxBfpKArB
+9nOf3gzHGReWNiFUtNZlvueYrC5CnblFzKaKB+81Imjw6RXM3QtuzbZ71zp+reL8
+JeiwE/mriwuGbxTJx5gwQX48zA5PJ342CCrl7jMeIos5KXmYkWoU5hEuGM3tK4Lx
+VAoGqcd/a4cWHuLWub8fbhFkIDcxFaMF8yQi0r2LOmvMOsv3RVpyfgJ07z5b9X1B
+w76CYkjGqgr0EdU40VTPtNhtHq7rrJSzGbapRsFUpvqgnkEwUSdbY6bRknLETmfo
+H3dPf2XQwXXPDMZTW54QsmQ9WjundqOFI2YsH6dCX/kmZK0IJVBpikL8SuM/ZJLK
+LcYJcrNGetENEKKl6hDwTTIsG1y3gx6y3wPzBkyJ2DtMx9dPoCqYhPHsIGc/td0/
+r4Ix9TWVLIl3MKq3z+/Hszd7jOnrkflfmKeA0DgJlqVJsuxP75pbdiKS/hCKRf8D
+AFJLvt6JSGBnz9ZZCB4KrjpHK/k+X7p8Y65uc/aX5BLu8vyRqFduhg98GVXJmD7k
+0ggXnqqFnies6SpnQ45cjfKSGDx/NjY0AwoGPH8n8CL6ZagU6K1utfHIMrqKkJME
+F6KcPHWrQkECojLdMoDInnRirdRb/FcAadWBSPrf+6Nln4ilbBJIi8W/yzeM/WFj
+UKKNjk4W26PGnNO6+TO5h1EpocDI4fx6UYIMmFjnyaLdLrSn1/SzuLL6I7pYZ0Um
+8qI4aWjP9RiUvGYJirfAUjL5Vp9w4+osf1sGiioe0GH/1WVuHeQ93A==
+-----END RSA PRIVATE KEY-----
diff --git a/vectors/cryptography_vectors/asymmetric/PEM_Serialization/rsa_public_key.pem b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/rsa_public_key.pem
new file mode 100644
index 00000000..6d06afe0
--- /dev/null
+++ b/vectors/cryptography_vectors/asymmetric/PEM_Serialization/rsa_public_key.pem
@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnR4AZ+tgWYql+S3MaTQ6
+zeIO1fKzFIoau9Q0zGuv/1oCAewXwxeDSSxw+/Z3GL1NpuuS9CpbR5EQ3d71bD0v
+0G+Sf+mShSl0oljG7YqnNSPzKl+EQ3/KE+eEButcwas6KGof2BA4bFNCw/fPbuhk
+u/d8sIIEgdzBMiGRMdW33uci3rsdOenMZQA7uWsM/q/pu85YLAVOxq6wlUCzP4FM
+Tw/RKzayrPkn3Jfbqcy1aM2HDlFVx24vaN+RRbPSnVoQbo5EQYkUMXE8WmadSyHl
+pXGRnWsJSV9AdGyDrbU+6tcFwcIwnW22jb/OJy8swHdqKGkuR1kQ0XqokK1yGKFZ
+8wIDAQAB
+-----END PUBLIC KEY-----
diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/encpkcs8.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/enc-rsa-pkcs8.pem
index 69417b85..69417b85 100644
--- a/vectors/cryptography_vectors/asymmetric/PKCS8/encpkcs8.pem
+++ b/vectors/cryptography_vectors/asymmetric/PKCS8/enc-rsa-pkcs8.pem
diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/enc2pkcs8.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/enc2-rsa-pkcs8.pem
index 4ec8ddc1..4ec8ddc1 100644
--- a/vectors/cryptography_vectors/asymmetric/PKCS8/enc2pkcs8.pem
+++ b/vectors/cryptography_vectors/asymmetric/PKCS8/enc2-rsa-pkcs8.pem
diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/unenc-dsa-pkcs8.pub.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/unenc-dsa-pkcs8.pub.pem
new file mode 100644
index 00000000..26128de4
--- /dev/null
+++ b/vectors/cryptography_vectors/asymmetric/PKCS8/unenc-dsa-pkcs8.pub.pem
@@ -0,0 +1,12 @@
+-----BEGIN PUBLIC KEY-----
+MIIBtzCCASwGByqGSM44BAEwggEfAoGBAKoJMMwUWCUiHK/6KKwolBlqJ4M95ewh
+JweRaJQgd3Si57I4sNNvGySZosJYUIPrAUMpJEGNhn+qIS3RBx1NzrJ4J5StOTzA
+ik1K2n9o1ug5pfzTS05ALYLLioy0D+wxkRv5vTYLA0yqy0xelHmSVzyekAmcGw8F
+lAyr5dLeSaFnAhUArcDoabNvCsATpoH99NSJnWmCBFECgYEAjGtFia+lOk0QSL/D
+RtHzhsp1UhzPct2qJRKGiA7hMgH/SIkLv8M9ebrK7HHnp3hQe9XxpmQi45QVvgPn
+EUG6Mk9bkxMZKRgsiKn6QGKDYGbOvnS1xmkMfRARBsJAq369VOTjMB/Qhs5q2ski
++ycTorCIfLoTubxozlz/8kHNMkYDgYQAAoGAKyYOqX3GoSrpMsZA5989j/BKigWg
+Mk+NXxsj8V+hcP8/QgYRJO/yWGyxG0moLc3BuQ/GqE+xAQnLZ9tdLalxrq8Xvl43
+KEVj5MZNnl/ISAJYsxnw3inVTYNQcNnih5FNd9+BSR9EI7YtqYTrP0XrKin86l2u
+UlrGq2vM4Ev99bY=
+-----END PUBLIC KEY-----
diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/unencpkcs8.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/unenc-rsa-pkcs8.pem
index 794dfd7e..794dfd7e 100644
--- a/vectors/cryptography_vectors/asymmetric/PKCS8/unencpkcs8.pem
+++ b/vectors/cryptography_vectors/asymmetric/PKCS8/unenc-rsa-pkcs8.pem
diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/unenc-rsa-pkcs8.pub.pem b/vectors/cryptography_vectors/asymmetric/PKCS8/unenc-rsa-pkcs8.pub.pem
new file mode 100644
index 00000000..3de1a9e8
--- /dev/null
+++ b/vectors/cryptography_vectors/asymmetric/PKCS8/unenc-rsa-pkcs8.pub.pem
@@ -0,0 +1,6 @@
+-----BEGIN PUBLIC KEY-----
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7JHoJfg6yNzLMOWet8Z49a4KD
+0dCspMAYvo2YAMB7/wdEycocujbhJ2n/seONi+5XqTqqFkM5VBl8rmkkFPZk/7x0
+xmdsTPECSWnHK+HhoaNDFPR3j8jQhVo1laxiqcEhAHegi5cwtFosuJAvSKAFKEvy
+D43si00DQnXWrYHAEQIDAQAB
+-----END PUBLIC KEY-----