Move signature type checks
Move the point of checking signatures, as suggested by alex in PR 2262.
diff --git a/src/cryptography/hazmat/backends/openssl/dsa.py b/src/cryptography/hazmat/backends/openssl/dsa.py
index f1bb6d9..ec05676 100644
--- a/src/cryptography/hazmat/backends/openssl/dsa.py
+++ b/src/cryptography/hazmat/backends/openssl/dsa.py
@@ -29,9 +29,6 @@
@utils.register_interface(AsymmetricVerificationContext)
class _DSAVerificationContext(object):
def __init__(self, backend, public_key, signature, algorithm):
- if not isinstance(signature, bytes):
- raise TypeError("signature must be bytes.")
-
self._backend = backend
self._public_key = public_key
self._signature = signature
@@ -179,6 +176,9 @@
key_size = utils.read_only_property("_key_size")
def verifier(self, signature, signature_algorithm):
+ if not isinstance(signature, bytes):
+ raise TypeError("signature must be bytes.")
+
return _DSAVerificationContext(
self._backend, self, signature, signature_algorithm
)
diff --git a/src/cryptography/hazmat/backends/openssl/ec.py b/src/cryptography/hazmat/backends/openssl/ec.py
index b8692e4..6764416 100644
--- a/src/cryptography/hazmat/backends/openssl/ec.py
+++ b/src/cryptography/hazmat/backends/openssl/ec.py
@@ -119,8 +119,6 @@
@utils.register_interface(AsymmetricVerificationContext)
class _ECDSAVerificationContext(object):
def __init__(self, backend, public_key, signature, algorithm):
- if not isinstance(signature, bytes):
- raise TypeError("signature must be bytes.")
self._backend = backend
self._public_key = public_key
self._signature = signature
@@ -227,6 +225,9 @@
curve = utils.read_only_property("_curve")
def verifier(self, signature, signature_algorithm):
+ if not isinstance(signature, bytes):
+ raise TypeError("signature must be bytes.")
+
if isinstance(signature_algorithm, ec.ECDSA):
return _ECDSAVerificationContext(
self._backend, self, signature, signature_algorithm.algorithm
diff --git a/src/cryptography/hazmat/backends/openssl/rsa.py b/src/cryptography/hazmat/backends/openssl/rsa.py
index 8e32eb0..7da4229 100644
--- a/src/cryptography/hazmat/backends/openssl/rsa.py
+++ b/src/cryptography/hazmat/backends/openssl/rsa.py
@@ -337,9 +337,6 @@
@utils.register_interface(AsymmetricVerificationContext)
class _RSAVerificationContext(object):
def __init__(self, backend, public_key, signature, padding, algorithm):
- if not isinstance(signature, bytes):
- raise TypeError("signature must be bytes.")
-
self._backend = backend
self._public_key = public_key
self._signature = signature
@@ -578,6 +575,9 @@
key_size = utils.read_only_property("_key_size")
def verifier(self, signature, padding, algorithm):
+ if not isinstance(signature, bytes):
+ raise TypeError("signature must be bytes.")
+
return _RSAVerificationContext(
self._backend, self, signature, padding, algorithm
)