Skip to content

Commit 04ef8b5

Browse files
committed
isolate asn1/der signature transformation to simplify testing
1 parent 9222673 commit 04ef8b5

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

jose/backends/cryptography_backend.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,19 +94,27 @@ def _process_jwk(self, jwk_dict):
9494
else:
9595
return public.public_key(self.cryptography_backend())
9696

97+
def _der_to_asn1(self, der_signature):
98+
"""Convert signature from DER encoding to ASN1 encoding."""
99+
order = (2 ** self.prepared_key.curve.key_size) - 1
100+
return sigencode_string(*sigdecode_der(der_signature, order), order=order)
101+
102+
def _asn1_to_der(self, asn1_signature):
103+
"""Convert signature from ASN1 encoding to DER encoding."""
104+
order = (2 ** self.prepared_key.curve.key_size) - 1
105+
return sigencode_der(*sigdecode_string(asn1_signature, order), order=order)
106+
97107
def sign(self, msg):
98108
if self.hash_alg.digest_size * 8 > self.prepared_key.curve.key_size:
99109
raise TypeError("this curve (%s) is too short "
100110
"for your digest (%d)" % (self.prepared_key.curve.name,
101111
8 * self.hash_alg.digest_size))
102112
signature = self.prepared_key.sign(msg, ec.ECDSA(self.hash_alg()))
103-
order = (2 ** self.prepared_key.curve.key_size) - 1
104-
return sigencode_string(*sigdecode_der(signature, order), order=order)
113+
return self._der_to_asn1(signature)
105114

106115
def verify(self, msg, sig):
107-
order = (2 ** self.prepared_key.curve.key_size) - 1
108-
signature = sigencode_der(*sigdecode_string(sig, order), order=order)
109116
try:
117+
signature = self._asn1_to_der(sig)
110118
self.prepared_key.verify(signature, msg, ec.ECDSA(self.hash_alg()))
111119
return True
112120
except Exception:

0 commit comments

Comments
 (0)