aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2015-06-23 07:08:50 -0400
committerAlex Gaynor <alex.gaynor@gmail.com>2015-06-23 07:08:50 -0400
commitd59996ba409e15364abf70e29e8c138ad39eea04 (patch)
tree3747182affec9eee4a43498af6ddc2c6923e803c
parentc952fb18053afc59104e05ea0e35c85460402d59 (diff)
parent370c4da9fe2662d07152a4b78bc09ae45f34decb (diff)
downloadcryptography-d59996ba409e15364abf70e29e8c138ad39eea04.tar.gz
cryptography-d59996ba409e15364abf70e29e8c138ad39eea04.tar.bz2
cryptography-d59996ba409e15364abf70e29e8c138ad39eea04.zip
Merge pull request #2057 from reaperhulk/i-are-dumb
fix ec_cdata_to_evp_pkey bug
-rw-r--r--src/cryptography/hazmat/backends/openssl/backend.py1
-rw-r--r--tests/hazmat/primitives/test_ec.py18
2 files changed, 19 insertions, 0 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/backend.py b/src/cryptography/hazmat/backends/openssl/backend.py
index 2fe88327..4d469c40 100644
--- a/src/cryptography/hazmat/backends/openssl/backend.py
+++ b/src/cryptography/hazmat/backends/openssl/backend.py
@@ -1073,6 +1073,7 @@ class Backend(object):
evp_pkey = self._ffi.gc(evp_pkey, self._lib.EVP_PKEY_free)
res = self._lib.EVP_PKEY_set1_EC_KEY(evp_pkey, ec_cdata)
assert res == 1
+ return evp_pkey
def _elliptic_curve_to_nid(self, curve):
"""
diff --git a/tests/hazmat/primitives/test_ec.py b/tests/hazmat/primitives/test_ec.py
index 82b5b3a1..cc185145 100644
--- a/tests/hazmat/primitives/test_ec.py
+++ b/tests/hazmat/primitives/test_ec.py
@@ -642,6 +642,24 @@ class TestECSerialization(object):
DummyKeyEncryption()
)
+ def test_public_bytes_from_derived_public_key(self, backend):
+ _skip_curve_unsupported(backend, ec.SECP256R1())
+ key = load_vectors_from_file(
+ os.path.join(
+ "asymmetric", "PKCS8", "ec_private_key.pem"),
+ lambda pemfile: serialization.load_pem_private_key(
+ pemfile.read().encode(), None, backend
+ )
+ )
+ _skip_if_no_serialization(key, backend)
+ public = key.public_key()
+ pem = public.public_bytes(
+ serialization.Encoding.PEM,
+ serialization.PublicFormat.SubjectPublicKeyInfo
+ )
+ parsed_public = serialization.load_pem_public_key(pem, backend)
+ assert parsed_public
+
@pytest.mark.requires_backend_interface(interface=EllipticCurveBackend)
@pytest.mark.requires_backend_interface(interface=PEMSerializationBackend)