From cdffb803eddb804bf29b81a3674a2dd951f31705 Mon Sep 17 00:00:00 2001 From: Hynek Schlawack Date: Sat, 4 Jun 2016 17:04:49 -0700 Subject: [PATCH] Add documentation and changelog --- CHANGELOG.rst | 3 ++- src/OpenSSL/crypto.py | 20 ++++++++++++++++++++ tests/test_crypto.py | 8 ++++---- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index aeec693d7..b8461720b 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -23,7 +23,8 @@ Deprecations: Changes: ^^^^^^^^ -*none* +- ``OpenSSL.crypto.PKey`` can now be constructed from ``cryptography`` objects and also exported as such. + `#439 `_ ---- diff --git a/src/OpenSSL/crypto.py b/src/OpenSSL/crypto.py index 8b81b504c..947d5039a 100644 --- a/src/OpenSSL/crypto.py +++ b/src/OpenSSL/crypto.py @@ -173,6 +173,16 @@ def __init__(self): self._initialized = False def to_cryptography_key(self): + """ + Export as a ``cryptography`` key. + + :rtype: One of ``cryptography``'s `key interfaces`_. + + .. _key interfaces: https://cryptography.io/en/latest/hazmat/\ + primitives/asymmetric/rsa/#key-interfaces + + .. versionadded:: 16.1.0 + """ if self._only_public: return backend._evp_pkey_to_public_key(self._pkey) else: @@ -180,6 +190,16 @@ def to_cryptography_key(self): @classmethod def from_cryptography_key(cls, crypto_key): + """ + Construct based on a ``cryptography`` *crypto_key*. + + :param crypto_key: A ``cryptography`` key. + :type crypto_key: One of ``cryptography``'s `key interfaces`_. + + :rtype: PKey + + .. versionadded:: 16.1.0 + """ pkey = cls() pkey._pkey = crypto_key._evp_pkey if isinstance(crypto_key, (rsa.RSAPublicKey, dsa.DSAPublicKey)): diff --git a/tests/test_crypto.py b/tests/test_crypto.py index 17531d92f..be9e779fa 100644 --- a/tests/test_crypto.py +++ b/tests/test_crypto.py @@ -758,7 +758,7 @@ class TestPKey(object): def test_convert_from_cryptography_private_key(self): """ - Convert from a cryptography private key to a pyOpenSSL PKey. + PKey.from_cryptography_key creates a proper private PKey. """ key = serialization.load_pem_private_key( intermediate_key_pem, None, backend @@ -772,7 +772,7 @@ def test_convert_from_cryptography_private_key(self): def test_convert_from_cryptography_public_key(self): """ - Convert from a cryptography public key to a pyOpenSSL PKey. + PKey.from_cryptography_key creates a proper public PKey. """ key = serialization.load_pem_public_key(cleartextPublicKeyPEM, backend) pkey = PKey.from_cryptography_key(key) @@ -784,7 +784,7 @@ def test_convert_from_cryptography_public_key(self): def test_convert_public_pkey_to_cryptography_key(self): """ - Convert from a pyOpenSSL PKey to a cryptography public key. + PKey.to_cryptography_key creates a proper cryptography public key. """ pkey = load_publickey(FILETYPE_PEM, cleartextPublicKeyPEM) key = pkey.to_cryptography_key() @@ -794,7 +794,7 @@ def test_convert_public_pkey_to_cryptography_key(self): def test_convert_private_pkey_to_cryptography_key(self): """ - Convert from a pyOpenSSL PKey to a cryptography private key. + PKey.to_cryptography_key creates a proper cryptography private key. """ pkey = load_privatekey(FILETYPE_PEM, cleartextPrivateKeyPEM) key = pkey.to_cryptography_key()