aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cryptography/hazmat/backends/openssl/backend.py33
-rw-r--r--tests/hazmat/primitives/test_rsa.py2
2 files changed, 20 insertions, 15 deletions
diff --git a/cryptography/hazmat/backends/openssl/backend.py b/cryptography/hazmat/backends/openssl/backend.py
index 2036093e..0e88fadc 100644
--- a/cryptography/hazmat/backends/openssl/backend.py
+++ b/cryptography/hazmat/backends/openssl/backend.py
@@ -382,6 +382,16 @@ class Backend(object):
key_size >= 512)
def load_rsa_private_numbers(self, numbers):
+ rsa._check_private_key_components(
+ numbers.p,
+ numbers.q,
+ numbers.d,
+ numbers.dmp1,
+ numbers.dmq1,
+ numbers.iqmp,
+ numbers.public_numbers.e,
+ numbers.public_numbers.n
+ )
rsa_cdata = self._lib.RSA_new()
assert rsa_cdata != self._ffi.NULL
rsa_cdata = self._ffi.gc(rsa_cdata, self._lib.RSA_free)
@@ -399,7 +409,15 @@ class Backend(object):
return _RSAPrivateKey(self, rsa_cdata)
def load_rsa_public_numbers(self, numbers):
- rsa_cdata = self._rsa_cdata_from_public_numbers(numbers)
+ rsa._check_public_key_components(numbers.e, numbers.n)
+ rsa_cdata = self._lib.RSA_new()
+ assert rsa_cdata != self._ffi.NULL
+ rsa_cdata = self._ffi.gc(rsa_cdata, self._lib.RSA_free)
+ rsa_cdata.e = self._int_to_bn(numbers.e)
+ rsa_cdata.n = self._int_to_bn(numbers.n)
+ res = self._lib.RSA_blinding_on(rsa_cdata, self._ffi.NULL)
+ assert res == 1
+
return _RSAPublicKey(self, rsa_cdata)
def _new_evp_pkey(self):
@@ -532,19 +550,6 @@ class Backend(object):
return ctx
- def _rsa_cdata_from_public_numbers(self, public_numbers):
- # Does not GC the RSA cdata. You *must* make sure it's freed
- # correctly yourself!
-
- ctx = self._lib.RSA_new()
- assert ctx != self._ffi.NULL
- ctx.e = self._int_to_bn(public_numbers.e)
- ctx.n = self._int_to_bn(public_numbers.n)
- res = self._lib.RSA_blinding_on(ctx, self._ffi.NULL)
- assert res == 1
-
- return ctx
-
def create_rsa_signature_ctx(self, private_key, padding, algorithm):
rsa_cdata = self._rsa_cdata_from_private_key(private_key)
rsa_cdata = self._ffi.gc(rsa_cdata, self._lib.RSA_free)
diff --git a/tests/hazmat/primitives/test_rsa.py b/tests/hazmat/primitives/test_rsa.py
index 6b65eba5..ffaaf587 100644
--- a/tests/hazmat/primitives/test_rsa.py
+++ b/tests/hazmat/primitives/test_rsa.py
@@ -1644,7 +1644,7 @@ class TestRSAEncryption(object):
class TestRSANumbers(object):
def test_rsa_public_numbers(self):
public_numbers = rsa.RSAPublicNumbers(e=1, n=15)
- assert public_numbers.e == 3
+ assert public_numbers.e == 1
assert public_numbers.n == 15
def test_rsa_private_numbers(self):