aboutsummaryrefslogtreecommitdiffstats
path: root/src/cryptography/hazmat/backends/openssl/backend.py
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2018-11-13 07:46:57 -0500
committerAlex Gaynor <alex.gaynor@gmail.com>2018-11-13 07:46:57 -0500
commit0dc5e3cce5deeb05c507643dc6c36845a085684f (patch)
treea48967663e36396fb043b4a821d99380eb45fa37 /src/cryptography/hazmat/backends/openssl/backend.py
parentb5d07b7f723ca101bbe4b78584df367c014eed96 (diff)
downloadcryptography-0dc5e3cce5deeb05c507643dc6c36845a085684f.tar.gz
cryptography-0dc5e3cce5deeb05c507643dc6c36845a085684f.tar.bz2
cryptography-0dc5e3cce5deeb05c507643dc6c36845a085684f.zip
refactor x25519 keygen into evp_pkey_keygen (#4587)
this allows us to use the same code for ed25519, x448, and ed448
Diffstat (limited to 'src/cryptography/hazmat/backends/openssl/backend.py')
-rw-r--r--src/cryptography/hazmat/backends/openssl/backend.py14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/backend.py b/src/cryptography/hazmat/backends/openssl/backend.py
index 19734a54..d00f6133 100644
--- a/src/cryptography/hazmat/backends/openssl/backend.py
+++ b/src/cryptography/hazmat/backends/openssl/backend.py
@@ -2060,14 +2060,10 @@ class Backend(object):
)
return _X25519PrivateKey(self, evp_pkey)
- def x25519_generate_key(self):
- evp_pkey_ctx = self._lib.EVP_PKEY_CTX_new_id(
- self._lib.NID_X25519, self._ffi.NULL
- )
+ def _evp_pkey_keygen_gc(self, nid):
+ evp_pkey_ctx = self._lib.EVP_PKEY_CTX_new_id(nid, self._ffi.NULL)
self.openssl_assert(evp_pkey_ctx != self._ffi.NULL)
- evp_pkey_ctx = self._ffi.gc(
- evp_pkey_ctx, self._lib.EVP_PKEY_CTX_free
- )
+ evp_pkey_ctx = self._ffi.gc(evp_pkey_ctx, self._lib.EVP_PKEY_CTX_free)
res = self._lib.EVP_PKEY_keygen_init(evp_pkey_ctx)
self.openssl_assert(res == 1)
evp_ppkey = self._ffi.new("EVP_PKEY **")
@@ -2075,6 +2071,10 @@ class Backend(object):
self.openssl_assert(res == 1)
self.openssl_assert(evp_ppkey[0] != self._ffi.NULL)
evp_pkey = self._ffi.gc(evp_ppkey[0], self._lib.EVP_PKEY_free)
+ return evp_pkey
+
+ def x25519_generate_key(self):
+ evp_pkey = self._evp_pkey_keygen_gc(self._lib.NID_X25519)
return _X25519PrivateKey(self, evp_pkey)
def x25519_supported(self):