diff --git a/src/cryptography/hazmat/backends/openssl/backend.py b/src/cryptography/hazmat/backends/openssl/backend.py
index 6cc3fd9..854219f 100644
--- a/src/cryptography/hazmat/backends/openssl/backend.py
+++ b/src/cryptography/hazmat/backends/openssl/backend.py
@@ -477,20 +477,20 @@
         pointer.
         """
 
-        type = evp_pkey.type
+        key_type = evp_pkey.type
 
-        if type == self._lib.EVP_PKEY_RSA:
+        if key_type == self._lib.EVP_PKEY_RSA:
             rsa_cdata = self._lib.EVP_PKEY_get1_RSA(evp_pkey)
             assert rsa_cdata != self._ffi.NULL
             rsa_cdata = self._ffi.gc(rsa_cdata, self._lib.RSA_free)
             return _RSAPrivateKey(self, rsa_cdata)
-        elif type == self._lib.EVP_PKEY_DSA:
+        elif key_type == self._lib.EVP_PKEY_DSA:
             dsa_cdata = self._lib.EVP_PKEY_get1_DSA(evp_pkey)
             assert dsa_cdata != self._ffi.NULL
             dsa_cdata = self._ffi.gc(dsa_cdata, self._lib.DSA_free)
             return _DSAPrivateKey(self, dsa_cdata)
         elif (self._lib.Cryptography_HAS_EC == 1 and
-              type == self._lib.EVP_PKEY_EC):
+              key_type == self._lib.EVP_PKEY_EC):
             ec_cdata = self._lib.EVP_PKEY_get1_EC_KEY(evp_pkey)
             assert ec_cdata != self._ffi.NULL
             ec_cdata = self._ffi.gc(ec_cdata, self._lib.EC_KEY_free)
@@ -504,20 +504,20 @@
         pointer.
         """
 
-        type = evp_pkey.type
+        key_type = evp_pkey.type
 
-        if type == self._lib.EVP_PKEY_RSA:
+        if key_type == self._lib.EVP_PKEY_RSA:
             rsa_cdata = self._lib.EVP_PKEY_get1_RSA(evp_pkey)
             assert rsa_cdata != self._ffi.NULL
             rsa_cdata = self._ffi.gc(rsa_cdata, self._lib.RSA_free)
             return _RSAPublicKey(self, rsa_cdata)
-        elif type == self._lib.EVP_PKEY_DSA:
+        elif key_type == self._lib.EVP_PKEY_DSA:
             dsa_cdata = self._lib.EVP_PKEY_get1_DSA(evp_pkey)
             assert dsa_cdata != self._ffi.NULL
             dsa_cdata = self._ffi.gc(dsa_cdata, self._lib.DSA_free)
             return _DSAPublicKey(self, dsa_cdata)
         elif (self._lib.Cryptography_HAS_EC == 1 and
-              type == self._lib.EVP_PKEY_EC):
+              key_type == self._lib.EVP_PKEY_EC):
             ec_cdata = self._lib.EVP_PKEY_get1_EC_KEY(evp_pkey)
             assert ec_cdata != self._ffi.NULL
             ec_cdata = self._ffi.gc(ec_cdata, self._lib.EC_KEY_free)
@@ -671,7 +671,7 @@
 
     def dsa_parameters_supported(self, p, q, g):
         if self._lib.OPENSSL_VERSION_NUMBER < 0x1000000f:
-            return (utils.bit_length(p) <= 1024 and utils.bit_length(q) <= 160)
+            return utils.bit_length(p) <= 1024 and utils.bit_length(q) <= 160
         else:
             return True
 
@@ -1219,13 +1219,13 @@
         assert res == 1
         return self._read_mem_bio(bio)
 
-    def _private_key_bytes_traditional_der(self, type, cdata):
-        if type == self._lib.EVP_PKEY_RSA:
+    def _private_key_bytes_traditional_der(self, key_type, cdata):
+        if key_type == self._lib.EVP_PKEY_RSA:
             write_bio = self._lib.i2d_RSAPrivateKey_bio
         elif (self._lib.Cryptography_HAS_EC == 1 and
-              type == self._lib.EVP_PKEY_EC):
+              key_type == self._lib.EVP_PKEY_EC):
             write_bio = self._lib.i2d_ECPrivateKey_bio
-        elif type == self._lib.EVP_PKEY_DSA:
+        elif key_type == self._lib.EVP_PKEY_DSA:
             write_bio = self._lib.i2d_DSAPrivateKey_bio
 
         bio = self._create_mem_bio()
diff --git a/src/cryptography/hazmat/backends/openssl/utils.py b/src/cryptography/hazmat/backends/openssl/utils.py
index 498c100..001121f 100644
--- a/src/cryptography/hazmat/backends/openssl/utils.py
+++ b/src/cryptography/hazmat/backends/openssl/utils.py
@@ -16,7 +16,7 @@
 
     if 8 * digest_len > order_bits:
         rshift = 8 - (order_bits & 0x7)
-        assert rshift > 0 and rshift < 8
+        assert 0 < rshift < 8
 
         mask = 0xFF >> rshift << rshift
 
diff --git a/src/cryptography/hazmat/backends/openssl/x509.py b/src/cryptography/hazmat/backends/openssl/x509.py
index 2b66c21..6a7032b 100644
--- a/src/cryptography/hazmat/backends/openssl/x509.py
+++ b/src/cryptography/hazmat/backends/openssl/x509.py
@@ -45,7 +45,7 @@
         assert res >= 0
         assert buf[0] != backend._ffi.NULL
         buf = backend._ffi.gc(
-            buf, lambda buf: backend._lib.OPENSSL_free(buf[0])
+            buf, lambda buffer: backend._lib.OPENSSL_free(buffer[0])
         )
         value = backend._ffi.buffer(buf[0], res)[:].decode('utf8')
         oid = _obj2txt(backend, obj)
