do value checks when converting from numbers to key
diff --git a/cryptography/hazmat/backends/openssl/backend.py b/cryptography/hazmat/backends/openssl/backend.py
index 2036093..0e88fad 100644
--- a/cryptography/hazmat/backends/openssl/backend.py
+++ b/cryptography/hazmat/backends/openssl/backend.py
@@ -382,6 +382,16 @@
                 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 @@
         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 @@
 
         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 6b65eba..ffaaf58 100644
--- a/tests/hazmat/primitives/test_rsa.py
+++ b/tests/hazmat/primitives/test_rsa.py
@@ -1644,7 +1644,7 @@
 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):