Skip to content

Commit

Permalink
Added two new PKCS#8 test cases (#12333)
Browse files Browse the repository at this point in the history
* Added two new PKCS#8 test cases

* Added two more testcases

* Spelling
  • Loading branch information
alex authored Jan 24, 2025
1 parent 269321a commit 45381b4
Show file tree
Hide file tree
Showing 6 changed files with 165 additions and 1 deletion.
9 changes: 8 additions & 1 deletion docs/development/test-vectors.rst
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,14 @@ Custom asymmetric vectors
optional).
* ``asymmetric/PKCS8/ec-invalid-version.pem`` - A PKCS8 encoded EC key with an
invalid elliptic curve version field.

* ``asymmetric/PKCS8/enc-rsa-3des.pem`` - A PKCS8 encoded RSA key encrypted
with 3DES, with the password "password".
* ``asymmetric/PKCS8/enc-unknown-algorithm.pem`` - A PKCS8 encoded key with an
unknown encryption algorithm.
* ``asymmetric/PKCS8/enc-unknown-pbkdf2-prf.pem`` - A PKCS8 encoded key
encrypted using PBKDF2 with an unknown PRF.
* ``asymmetric/PKCS8/enc-unknown-kdf.pem`` - A PKCS8 encoded key encrypted
using an unknown KDF.

Key exchange
~~~~~~~~~~~~
Expand Down
37 changes: 37 additions & 0 deletions tests/hazmat/primitives/test_serialization.py
Original file line number Diff line number Diff line change
Expand Up @@ -424,6 +424,43 @@ def test_load_pkcs8_private_key_unknown_oid(self):
with pytest.raises(ValueError):
load_der_private_key(data, password=None)

@pytest.mark.skip_fips(reason="3DES is not FIPS")
def test_load_pkcs8_private_key_3des_encryption(self):
key = load_vectors_from_file(
os.path.join("asymmetric", "PKCS8", "enc-rsa-3des.pem"),
lambda f: load_pem_private_key(f.read(), password=b"password"),
mode="rb",
)
assert isinstance(key, rsa.RSAPrivateKey)
assert key.key_size == 2048

def test_load_pkcs8_private_key_unknown_encryption_algorithm(self):
data = load_vectors_from_file(
os.path.join("asymmetric", "PKCS8", "enc-unknown-algorithm.pem"),
lambda f: f.read(),
mode="rb",
)
with pytest.raises(ValueError):
load_pem_private_key(data, password=b"password")

def test_load_pkcs8_private_key_unknown_pbkdf2_prf(self):
data = load_vectors_from_file(
os.path.join("asymmetric", "PKCS8", "enc-unknown-pbkdf2-prf.pem"),
lambda f: f.read(),
mode="rb",
)
with pytest.raises(ValueError):
load_pem_private_key(data, password=b"password")

def test_load_pkcs8_private_key_unknown_kdf(self):
data = load_vectors_from_file(
os.path.join("asymmetric", "PKCS8", "enc-unknown-kdf.pem"),
lambda f: f.read(),
mode="rb",
)
with pytest.raises(ValueError):
load_pem_private_key(data, password=b"password")


class TestPEMSerialization:
@pytest.mark.parametrize(
Expand Down
30 changes: 30 additions & 0 deletions vectors/cryptography_vectors/asymmetric/PKCS8/enc-rsa-3des.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQI9fSurwMcOA4CAggA
MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECKALBF48zvQnBIIEyKDIy72IMJoZ
4q7LsG0dCSa8oGI/CtAnC9YqRlDj+paWoGKDUkzxnMloUbJkpQlTEYRHXp0xKtdP
IcCjWFqWeQjsaJUlwILNLiliVpbyW/0PLmNQmRSfvLhlZ77rRk08DyLU0mcW2zRX
DuKHuxGhdlmte7EKsNf8czch9hDXqrCLqxlzr86K0pwT40W1r32TgQdX68edluoj
acggWuEzeTTKy1BKkVtlCq63dflgRfSo0as+dYX38wxzC6O6hxKpax277ijoJZHc
QsXxi/zREa+gtVOq9D6Vz5E+MmmIIAzVrXsFe1Uj4wYb3XUSO6WnJ9GlrixqWeu3
9lkOZOEKyyDgIY+twn06kyZBspKnXvQMMPjeiSSeaqI9LA0qpvRsxuWCxyTJ2YZI
s+xab8j5g5RKOmrt1bGtLl66tcrGNP9jYC5pjMNl6fz3c8+oxC0Bun4q+yOA9QzG
4GaiA834x+9wtsEBSjlMB5AMwYH+1ODo6Q+VUAWH1qBvCm/gQT2mvSgcrz6bcGJI
gimfzl/IbqVuVkWl7yFqNN/renE47pvy34Dbymb0FBK/5Gb1FImno3CcAkCuaEJ1
sWdx2Ej0Ezit8v1iJN2q29xlD7MrxB0uPvklUPRlD9RVcDJ15GwBPA8ugN/Fjj50
2BiMJ2/uqBoEnAjMyStINArS5PWL6gthIXenVJ4w0wegBciCsGo4G7UFQ0z/w2Je
7NJ8TjwKdTYJdAfgO5Rr8u6j0ybn72T/+QJfjugNLufRx4sakvPZR90/AFb2YX+L
kgCVS3ySOfom9p5JcxdnI8omelBIi1Qa9xwPKMPaV6oYkqBVjmcDDZocC6qN15PD
jCrgGryV3Fsn5OLYTB+EQDLNqmo+qd1O0pNY2THwD/DGGlx6VhmeQnWdt534g5lo
clQOmLXEeUWIb2u5PanakqNpY5mBQcOJ88/RS+oGAjTGU0e3I1zLb6EN/Ftndjv1
sfEh+HMwHxIWxdnJb6z6m73XJr4z30VGN8e+f1lC8c9SJ9aTQ/9vH3bsaXLW6GFY
DBisBg2/+vMwRSG9PkYrp1p6rGAhwbaofnZE5zApT7PFEX2RVNPU7lgXn84ycRHw
gZ89Mpa9zShL4T1PS8BrKwS7AH/se7ofKW/s8Z9SgngTWj0Efd4hZmn/EenVHBWf
kjAkvKIgGE8FJF1QlmU5dHDFhRiUGXIaB1rYAcwwuwB06fxRqEL3pU6jkHSru3ry
sYaY/cfpd5D5PT+FlxkzAPH1iiC3knXpcotWpJ2iQshsw9ifwg/vVJB0n20+Rxeu
XTgwiT+X5mJNAQUCj6aExWUg+D5gPnJPwFmzAWBGKWrvwI+vI6zIv4MJywzU+Ei8
1lU5rezPovAbGSTwUBPDydhORua0P8tVT8KPMmPJhza6IORTPpzdEOCXCOH17CWg
VWKjYvEul8CdNh4O3CJDU4lN8yn6RXCBPK4NKDea17GCIEBgnOnpFny+jdfNT+Ce
9aNh8ah61vbPag9EM2okmBlbnpkhUO+x8K8prZHZE7qRgUbmn1cJwIP6pNN/263q
S2uKZMnoaT65BaQh9wpgSvWmDup3/lGG/C2+m0k087QBVHMSfpTK9WcZ94BbzoeR
S9rWCU2k/woEUOv3hssY5w==
-----END ENCRYPTED PRIVATE KEY-----
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFIDBSBgkqhkiG9w0BBQ0wRTApBgkqhkiG9w0BBQwwHAQI9fSurwMcOA4CAggA
MAwGCCqGSIb3DQIJBQAwGAYMKoZIhvcNAwcXgkEDBAigCwRePM70JwSCBMigyMu9
iDCaGeKuy7BtHQkmvKBiPwrQJwvWKkZQ4/qWlqBig1JM8ZzJaFGyZKUJUxGER16d
MSrXTyHAo1halnkI7GiVJcCCzS4pYlaW8lv9Dy5jUJkUn7y4ZWe+60ZNPA8i1NJn
Fts0Vw7ih7sRoXZZrXuxCrDX/HM3IfYQ16qwi6sZc6/OitKcE+NFta99k4EHV+vH
nZbqI2nIIFrhM3k0ystQSpFbZQqut3X5YEX0qNGrPnWF9/MMcwujuocSqWsdu+4o
6CWR3ELF8Yv80RGvoLVTqvQ+lc+RPjJpiCAM1a17BXtVI+MGG911EjulpyfRpa4s
alnrt/ZZDmThCssg4CGPrcJ9OpMmQbKSp170DDD43okknmqiPSwNKqb0bMblgsck
ydmGSLPsWm/I+YOUSjpq7dWxrS5eurXKxjT/Y2AuaYzDZen893PPqMQtAbp+Kvsj
gPUMxuBmogPN+MfvcLbBAUo5TAeQDMGB/tTg6OkPlVAFh9agbwpv4EE9pr0oHK8+
m3BiSIIpn85fyG6lblZFpe8hajTf63pxOO6b8t+A28pm9BQSv+Rm9RSJp6NwnAJA
rmhCdbFncdhI9BM4rfL9YiTdqtvcZQ+zK8QdLj75JVD0ZQ/UVXAydeRsATwPLoDf
xY4+dNgYjCdv7qgaBJwIzMkrSDQK0uT1i+oLYSF3p1SeMNMHoAXIgrBqOBu1BUNM
/8NiXuzSfE48CnU2CXQH4DuUa/Luo9Mm5+9k//kCX47oDS7n0ceLGpLz2UfdPwBW
9mF/i5IAlUt8kjn6JvaeSXMXZyPKJnpQSItUGvccDyjD2leqGJKgVY5nAw2aHAuq
jdeTw4wq4Bq8ldxbJ+Ti2EwfhEAyzapqPqndTtKTWNkx8A/wxhpcelYZnkJ1nbed
+IOZaHJUDpi1xHlFiG9ruT2p2pKjaWOZgUHDifPP0UvqBgI0xlNHtyNcy2+hDfxb
Z3Y79bHxIfhzMB8SFsXZyW+s+pu91ya+M99FRjfHvn9ZQvHPUifWk0P/bx927Gly
1uhhWAwYrAYNv/rzMEUhvT5GK6daeqxgIcG2qH52ROcwKU+zxRF9kVTT1O5YF5/O
MnER8IGfPTKWvc0oS+E9T0vAaysEuwB/7Hu6Hylv7PGfUoJ4E1o9BH3eIWZp/xHp
1RwVn5IwJLyiIBhPBSRdUJZlOXRwxYUYlBlyGgda2AHMMLsAdOn8UahC96VOo5B0
q7t68rGGmP3H6XeQ+T0/hZcZMwDx9Yogt5J16XKLVqSdokLIbMPYn8IP71SQdJ9t
PkcXrl04MIk/l+ZiTQEFAo+mhMVlIPg+YD5yT8BZswFgRilq78CPryOsyL+DCcsM
1PhIvNZVOa3sz6LwGxkk8FATw8nYTkbmtD/LVU/CjzJjyYc2uiDkUz6c3RDglwjh
9ewloFVio2LxLpfAnTYeDtwiQ1OJTfMp+kVwgTyuDSg3mtexgiBAYJzp6RZ8vo3X
zU/gnvWjYfGoetb2z2oPRDNqJJgZW56ZIVDvsfCvKa2R2RO6kYFG5p9XCcCD+qTT
f9ut6ktrimTJ6Gk+uQWkIfcKYEr1pg7qd/5RhvwtvptJNPO0AVRzEn6UyvVnGfeA
W86HkUva1glNpP8KBFDr94bLGOc=
-----END ENCRYPTED PRIVATE KEY-----
30 changes: 30 additions & 0 deletions vectors/cryptography_vectors/asymmetric/PKCS8/enc-unknown-kdf.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFIDBSBgkqhkiG9w0BBQ0wRTAtBg0qhkiG9w0BBQyCQYJBMBwECPX0rq8DHDgO
AgIIADAMBggqhkiG9w0CCQUAMBQGCCqGSIb3DQMHBAigCwRePM70JwSCBMigyMu9
iDCaGeKuy7BtHQkmvKBiPwrQJwvWKkZQ4/qWlqBig1JM8ZzJaFGyZKUJUxGER16d
MSrXTyHAo1halnkI7GiVJcCCzS4pYlaW8lv9Dy5jUJkUn7y4ZWe+60ZNPA8i1NJn
Fts0Vw7ih7sRoXZZrXuxCrDX/HM3IfYQ16qwi6sZc6/OitKcE+NFta99k4EHV+vH
nZbqI2nIIFrhM3k0ystQSpFbZQqut3X5YEX0qNGrPnWF9/MMcwujuocSqWsdu+4o
6CWR3ELF8Yv80RGvoLVTqvQ+lc+RPjJpiCAM1a17BXtVI+MGG911EjulpyfRpa4s
alnrt/ZZDmThCssg4CGPrcJ9OpMmQbKSp170DDD43okknmqiPSwNKqb0bMblgsck
ydmGSLPsWm/I+YOUSjpq7dWxrS5eurXKxjT/Y2AuaYzDZen893PPqMQtAbp+Kvsj
gPUMxuBmogPN+MfvcLbBAUo5TAeQDMGB/tTg6OkPlVAFh9agbwpv4EE9pr0oHK8+
m3BiSIIpn85fyG6lblZFpe8hajTf63pxOO6b8t+A28pm9BQSv+Rm9RSJp6NwnAJA
rmhCdbFncdhI9BM4rfL9YiTdqtvcZQ+zK8QdLj75JVD0ZQ/UVXAydeRsATwPLoDf
xY4+dNgYjCdv7qgaBJwIzMkrSDQK0uT1i+oLYSF3p1SeMNMHoAXIgrBqOBu1BUNM
/8NiXuzSfE48CnU2CXQH4DuUa/Luo9Mm5+9k//kCX47oDS7n0ceLGpLz2UfdPwBW
9mF/i5IAlUt8kjn6JvaeSXMXZyPKJnpQSItUGvccDyjD2leqGJKgVY5nAw2aHAuq
jdeTw4wq4Bq8ldxbJ+Ti2EwfhEAyzapqPqndTtKTWNkx8A/wxhpcelYZnkJ1nbed
+IOZaHJUDpi1xHlFiG9ruT2p2pKjaWOZgUHDifPP0UvqBgI0xlNHtyNcy2+hDfxb
Z3Y79bHxIfhzMB8SFsXZyW+s+pu91ya+M99FRjfHvn9ZQvHPUifWk0P/bx927Gly
1uhhWAwYrAYNv/rzMEUhvT5GK6daeqxgIcG2qH52ROcwKU+zxRF9kVTT1O5YF5/O
MnER8IGfPTKWvc0oS+E9T0vAaysEuwB/7Hu6Hylv7PGfUoJ4E1o9BH3eIWZp/xHp
1RwVn5IwJLyiIBhPBSRdUJZlOXRwxYUYlBlyGgda2AHMMLsAdOn8UahC96VOo5B0
q7t68rGGmP3H6XeQ+T0/hZcZMwDx9Yogt5J16XKLVqSdokLIbMPYn8IP71SQdJ9t
PkcXrl04MIk/l+ZiTQEFAo+mhMVlIPg+YD5yT8BZswFgRilq78CPryOsyL+DCcsM
1PhIvNZVOa3sz6LwGxkk8FATw8nYTkbmtD/LVU/CjzJjyYc2uiDkUz6c3RDglwjh
9ewloFVio2LxLpfAnTYeDtwiQ1OJTfMp+kVwgTyuDSg3mtexgiBAYJzp6RZ8vo3X
zU/gnvWjYfGoetb2z2oPRDNqJJgZW56ZIVDvsfCvKa2R2RO6kYFG5p9XCcCD+qTT
f9ut6ktrimTJ6Gk+uQWkIfcKYEr1pg7qd/5RhvwtvptJNPO0AVRzEn6UyvVnGfeA
W86HkUva1glNpP8KBFDr94bLGOc=
-----END ENCRYPTED PRIVATE KEY-----
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFIDBSBgkqhkiG9w0BBQ0wRTAtBgkqhkiG9w0BBQwwIAQI9fSurwMcOA4CAggA
MBAGDCqGSIb3DQIJgVWCQQUAMBQGCCqGSIb3DQMHBAigCwRePM70JwSCBMigyMu9
iDCaGeKuy7BtHQkmvKBiPwrQJwvWKkZQ4/qWlqBig1JM8ZzJaFGyZKUJUxGER16d
MSrXTyHAo1halnkI7GiVJcCCzS4pYlaW8lv9Dy5jUJkUn7y4ZWe+60ZNPA8i1NJn
Fts0Vw7ih7sRoXZZrXuxCrDX/HM3IfYQ16qwi6sZc6/OitKcE+NFta99k4EHV+vH
nZbqI2nIIFrhM3k0ystQSpFbZQqut3X5YEX0qNGrPnWF9/MMcwujuocSqWsdu+4o
6CWR3ELF8Yv80RGvoLVTqvQ+lc+RPjJpiCAM1a17BXtVI+MGG911EjulpyfRpa4s
alnrt/ZZDmThCssg4CGPrcJ9OpMmQbKSp170DDD43okknmqiPSwNKqb0bMblgsck
ydmGSLPsWm/I+YOUSjpq7dWxrS5eurXKxjT/Y2AuaYzDZen893PPqMQtAbp+Kvsj
gPUMxuBmogPN+MfvcLbBAUo5TAeQDMGB/tTg6OkPlVAFh9agbwpv4EE9pr0oHK8+
m3BiSIIpn85fyG6lblZFpe8hajTf63pxOO6b8t+A28pm9BQSv+Rm9RSJp6NwnAJA
rmhCdbFncdhI9BM4rfL9YiTdqtvcZQ+zK8QdLj75JVD0ZQ/UVXAydeRsATwPLoDf
xY4+dNgYjCdv7qgaBJwIzMkrSDQK0uT1i+oLYSF3p1SeMNMHoAXIgrBqOBu1BUNM
/8NiXuzSfE48CnU2CXQH4DuUa/Luo9Mm5+9k//kCX47oDS7n0ceLGpLz2UfdPwBW
9mF/i5IAlUt8kjn6JvaeSXMXZyPKJnpQSItUGvccDyjD2leqGJKgVY5nAw2aHAuq
jdeTw4wq4Bq8ldxbJ+Ti2EwfhEAyzapqPqndTtKTWNkx8A/wxhpcelYZnkJ1nbed
+IOZaHJUDpi1xHlFiG9ruT2p2pKjaWOZgUHDifPP0UvqBgI0xlNHtyNcy2+hDfxb
Z3Y79bHxIfhzMB8SFsXZyW+s+pu91ya+M99FRjfHvn9ZQvHPUifWk0P/bx927Gly
1uhhWAwYrAYNv/rzMEUhvT5GK6daeqxgIcG2qH52ROcwKU+zxRF9kVTT1O5YF5/O
MnER8IGfPTKWvc0oS+E9T0vAaysEuwB/7Hu6Hylv7PGfUoJ4E1o9BH3eIWZp/xHp
1RwVn5IwJLyiIBhPBSRdUJZlOXRwxYUYlBlyGgda2AHMMLsAdOn8UahC96VOo5B0
q7t68rGGmP3H6XeQ+T0/hZcZMwDx9Yogt5J16XKLVqSdokLIbMPYn8IP71SQdJ9t
PkcXrl04MIk/l+ZiTQEFAo+mhMVlIPg+YD5yT8BZswFgRilq78CPryOsyL+DCcsM
1PhIvNZVOa3sz6LwGxkk8FATw8nYTkbmtD/LVU/CjzJjyYc2uiDkUz6c3RDglwjh
9ewloFVio2LxLpfAnTYeDtwiQ1OJTfMp+kVwgTyuDSg3mtexgiBAYJzp6RZ8vo3X
zU/gnvWjYfGoetb2z2oPRDNqJJgZW56ZIVDvsfCvKa2R2RO6kYFG5p9XCcCD+qTT
f9ut6ktrimTJ6Gk+uQWkIfcKYEr1pg7qd/5RhvwtvptJNPO0AVRzEn6UyvVnGfeA
W86HkUva1glNpP8KBFDr94bLGOc=
-----END ENCRYPTED PRIVATE KEY-----

0 comments on commit 45381b4

Please sign in to comment.