diff --git a/docs/development/test-vectors.rst b/docs/development/test-vectors.rst index cb72181da..84fe83d48 100644 --- a/docs/development/test-vectors.rst +++ b/docs/development/test-vectors.rst @@ -189,6 +189,10 @@ Custom asymmetric vectors ``TEST(DSATest, NilpotentGenerator)``). * ``asymmetric/PKCS8/ec-invalid-private-scalar.pem`` - Contains a PKCS8 encoded PEM with a ``secp256r1`` OID and an invalid (very large) private scalar. +* ``asymmetric/PKCS8/invalid-version.der`` - Contains a PKCS8 encoded DER with + an invalid version field. +* ``asymmetric/PKCS8/unknown-oid.der`` - Contains a PKCS8 encoded DER with an + unknown OID. Key exchange diff --git a/tests/hazmat/primitives/test_serialization.py b/tests/hazmat/primitives/test_serialization.py index 32e0ded0e..2c6a39cbc 100644 --- a/tests/hazmat/primitives/test_serialization.py +++ b/tests/hazmat/primitives/test_serialization.py @@ -405,6 +405,25 @@ class TestDERSerialization: with pytest.raises(ValueError): load_der_parameters(param_data, backend) + @pytest.mark.xfail() + def test_load_pkcs8_private_key_invalid_version(self): + data = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "invalid-version.der"), + lambda f: f.read(), + mode="rb", + ) + with pytest.raises(ValueError): + load_der_private_key(data, password=None) + + def test_load_pkcs8_private_key_unknown_oid(self): + data = load_vectors_from_file( + os.path.join("asymmetric", "PKCS8", "unknown-oid.der"), + lambda f: f.read(), + mode="rb", + ) + with pytest.raises(ValueError): + load_der_private_key(data, password=None) + class TestPEMSerialization: @pytest.mark.parametrize( diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/invalid-version.der b/vectors/cryptography_vectors/asymmetric/PKCS8/invalid-version.der new file mode 100644 index 000000000..f3612258e Binary files /dev/null and b/vectors/cryptography_vectors/asymmetric/PKCS8/invalid-version.der differ diff --git a/vectors/cryptography_vectors/asymmetric/PKCS8/unknown-oid.der b/vectors/cryptography_vectors/asymmetric/PKCS8/unknown-oid.der new file mode 100644 index 000000000..3e276c1b0 Binary files /dev/null and b/vectors/cryptography_vectors/asymmetric/PKCS8/unknown-oid.der differ