Skip to content

Commit efc4863

Browse files
committed
formatting
1 parent 9694680 commit efc4863

6 files changed

Lines changed: 102 additions & 58 deletions

File tree

src/ecdsa/der.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -210,11 +210,13 @@ def remove_implicit(string, exp_class="context-specific"):
210210
s0 = str_idx_as_int(string, 0)
211211

212212
if (s0 & tag_mask) != tag_class:
213-
raise UnexpectedDER("wanted class {0}, got 0x{1:02x} tag".
214-
format(exp_class, s0))
213+
raise UnexpectedDER(
214+
"wanted class {0}, got 0x{1:02x} tag".format(exp_class, s0)
215+
)
215216
if s0 & 0b00100000 != 0:
216-
raise UnexpectedDER("wanted type primitive, got 0x{0:02x} tag".
217-
format(s0))
217+
raise UnexpectedDER(
218+
"wanted type primitive, got 0x{0:02x} tag".format(s0)
219+
)
218220

219221
tag = s0 & 0x1F
220222
length, llen = read_length(string[1:])
@@ -290,7 +292,8 @@ def remove_boolean(string):
290292
def remove_object(string):
291293
if not string:
292294
raise UnexpectedDER(
293-
"Empty string does not encode an object identifier")
295+
"Empty string does not encode an object identifier"
296+
)
294297
if string[:1] != b"\x06":
295298
n = str_idx_as_int(string, 0)
296299
raise UnexpectedDER("wanted type 'object' (0x06), got 0x%02x" % n)
@@ -322,11 +325,11 @@ def remove_object(string):
322325
def remove_integer(string):
323326
if not string:
324327
raise UnexpectedDER(
325-
"Empty string is an invalid encoding of an integer")
328+
"Empty string is an invalid encoding of an integer"
329+
)
326330
if string[:1] != b"\x02":
327331
n = str_idx_as_int(string, 0)
328-
raise UnexpectedDER(
329-
"wanted type 'integer' (0x02), got 0x%02x" % n)
332+
raise UnexpectedDER("wanted type 'integer' (0x02), got 0x%02x" % n)
330333
length, llen = read_length(string[1:])
331334
if length > len(string) - 1 - llen:
332335
raise UnexpectedDER("Length longer than provided buffer")
@@ -510,8 +513,11 @@ def unpem(pem):
510513
pem = pem.encode()
511514

512515
d = b"".join(
513-
[l.strip() for l in pem.split(b"\n") if l
514-
and not l.startswith(b"-----")]
516+
[
517+
l.strip()
518+
for l in pem.split(b"\n")
519+
if l and not l.startswith(b"-----")
520+
]
515521
)
516522
return base64.b64decode(d)
517523

@@ -520,6 +526,7 @@ def topem(der, name):
520526
b64 = base64.b64encode(compat26_str(der))
521527
lines = [("-----BEGIN %s-----\n" % name).encode()]
522528
lines.extend(
523-
[b64[start : start + 76] + b"\n" for start in range(0, len(b64), 76)])
529+
[b64[start : start + 76] + b"\n" for start in range(0, len(b64), 76)]
530+
)
524531
lines.append(("-----END %s-----\n" % name).encode())
525532
return b"".join(lines)

src/ecdsa/ecdsa.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,8 @@ def verifies(self, hash, signature):
205205
byte_objects = set((bytearray, bytes, memoryview))
206206
if type(r) in byte_objects:
207207
point = ellipticcurve.AbstractPoint.from_bytes(
208-
self.generator.curve(), r)
208+
self.generator.curve(), r
209+
)
209210
r = point[0] % n
210211

211212
if r < 1 or r > n - 1:

src/ecdsa/keys.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -632,7 +632,7 @@ def verify(
632632
data,
633633
hashfunc=None,
634634
sigdecode=sigdecode_string,
635-
allow_truncate=True
635+
allow_truncate=True,
636636
):
637637
"""
638638
Verify a signature made over provided data.
@@ -682,15 +682,14 @@ def verify(
682682

683683
hashfunc = hashfunc or self.default_hashfunc
684684
digest = hashfunc(data).digest()
685-
return self.verify_digest(
686-
signature, digest, sigdecode, allow_truncate)
685+
return self.verify_digest(signature, digest, sigdecode, allow_truncate)
687686

688687
def verify_digest(
689688
self,
690689
signature,
691690
digest,
692691
sigdecode=sigdecode_string,
693-
allow_truncate=False
692+
allow_truncate=False,
694693
):
695694
"""
696695
Verify a signature made over provided hash value.
@@ -1319,7 +1318,7 @@ def sign_deterministic(
13191318
hashfunc=None,
13201319
sigencode=sigencode_string,
13211320
extra_entropy=b"",
1322-
accelerate=False
1321+
accelerate=False,
13231322
):
13241323
"""
13251324
Create signature over data.
@@ -1379,7 +1378,7 @@ def sign_deterministic(
13791378
sigencode=sigencode,
13801379
extra_entropy=extra_entropy,
13811380
allow_truncate=True,
1382-
accelerate=accelerate
1381+
accelerate=accelerate,
13831382
)
13841383

13851384
def sign_digest_deterministic(
@@ -1389,7 +1388,7 @@ def sign_digest_deterministic(
13891388
sigencode=sigencode_string,
13901389
extra_entropy=b"",
13911390
allow_truncate=False,
1392-
accelerate=False
1391+
accelerate=False,
13931392
):
13941393
"""
13951394
Create signature for digest using the deterministic RFC6979 algorithm.
@@ -1459,7 +1458,7 @@ def simple_r_s(r, s, order):
14591458
sigencode=simple_r_s,
14601459
k=k,
14611460
allow_truncate=allow_truncate,
1462-
accelerate=accelerate
1461+
accelerate=accelerate,
14631462
)
14641463
break
14651464
except RSZeroError:
@@ -1475,7 +1474,7 @@ def sign(
14751474
sigencode=sigencode_string,
14761475
k=None,
14771476
allow_truncate=True,
1478-
accelerate=False
1477+
accelerate=False,
14791478
):
14801479
"""
14811480
Create signature over data.
@@ -1553,7 +1552,8 @@ def sign(
15531552
return self.sign_deterministic(data)
15541553
h = hashfunc(data).digest()
15551554
return self.sign_digest(
1556-
h, entropy, sigencode, k, allow_truncate, accelerate)
1555+
h, entropy, sigencode, k, allow_truncate, accelerate
1556+
)
15571557

15581558
def sign_digest(
15591559
self,

src/ecdsa/test_malformed_sigs.py

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,13 @@
2929

3030
from .keys import SigningKey
3131
from .keys import BadSignatureError
32-
from .util import number_to_string, sigdecode_der_extended, sigencode_der, sigencode_der_sig_value_a, sigencode_string
32+
from .util import (
33+
number_to_string,
34+
sigdecode_der_extended,
35+
sigencode_der,
36+
sigencode_der_sig_value_a,
37+
sigencode_string,
38+
)
3339
from .util import sigdecode_der, sigdecode_string
3440
from .curves import curves, SECP112r2, SECP128r1
3541
from .der import (
@@ -48,7 +54,9 @@
4854
"""Since the data is hashed for processing, really any string will do."""
4955

5056

51-
hash_and_size = [(name, hashlib.new(name).digest_size) for name in algorithms_available]
57+
hash_and_size = [
58+
(name, hashlib.new(name).digest_size) for name in algorithms_available
59+
]
5260
"""Pairs of hash names and their output sizes.
5361
Needed for pairing with curves as we don't support hashes
5462
bigger than order sizes of curves."""
@@ -69,7 +77,9 @@
6977
for name, size in sorted(hash_and_size, key=lambda x: x[1])
7078
if 0 < size <= curve.baselen
7179
]:
72-
sk = SigningKey.generate(curve, hashfunc=partial(hashlib.new, hash_alg))
80+
sk = SigningKey.generate(
81+
curve, hashfunc=partial(hashlib.new, hash_alg)
82+
)
7383

7484
keys_and_sigs.append(
7585
(
@@ -86,7 +96,9 @@
8696
[pytest.param(vk, sig, id=name) for name, vk, sig in keys_and_sigs],
8797
)
8898
def test_signatures(verifying_key, signature):
89-
assert verifying_key.verify(signature, example_data, sigdecode=sigdecode_der)
99+
assert verifying_key.verify(
100+
signature, example_data, sigdecode=sigdecode_der
101+
)
90102

91103

92104
@st.composite
@@ -128,7 +140,9 @@ def st_fuzzed_sig(draw, keys_and_sigs): # pragma: no cover
128140
insert_data = draw(st.binary(max_size=256))
129141

130142
sig = sig[:insert_pos] + insert_data + sig[insert_pos:]
131-
note("Inserted at position {0} bytes: {1!r}".format(insert_pos, insert_data))
143+
note(
144+
"Inserted at position {0} bytes: {1!r}".format(insert_pos, insert_data)
145+
)
132146

133147
sig = bytes(sig)
134148
# make sure that there was performed at least one mutation on the data
@@ -305,7 +319,8 @@ def test_random_der_ecdsa_sig_value_full_r(params):
305319

306320
with pytest.raises(BadSignatureError):
307321
verifying_key.verify(
308-
sig, example_data, sigdecode=sigdecode_der_extended)
322+
sig, example_data, sigdecode=sigdecode_der_extended
323+
)
309324

310325

311326
@settings(**slow_params)
@@ -319,7 +334,8 @@ def test_random_der_ecdsa_sig_value_a(params):
319334

320335
with pytest.raises(BadSignatureError):
321336
verifying_key.verify(
322-
sig, example_data, sigdecode=sigdecode_der_extended)
337+
sig, example_data, sigdecode=sigdecode_der_extended
338+
)
323339

324340

325341
def st_der_integer(*args, **kwargs): # pragma: no cover
@@ -375,7 +391,9 @@ def st_der_oid(draw): # pragma: no cover
375391
second = draw(st.integers(min_value=0, max_value=39))
376392
else:
377393
second = draw(st.integers(min_value=0, max_value=2**512))
378-
rest = draw(st.lists(st.integers(min_value=0, max_value=2**512), max_size=50))
394+
rest = draw(
395+
st.lists(st.integers(min_value=0, max_value=2**512), max_size=50)
396+
)
379397
return encode_oid(first, second, *rest)
380398

381399

@@ -396,7 +414,9 @@ def st_der(): # pragma: no cover
396414
| st_der_oid(),
397415
lambda children: st.builds(encode_octet_string, st.one_of(children))
398416
| st.builds(lambda x: encode_bitstring(x, 0), st.one_of(children))
399-
| st.builds(lambda x: encode_sequence(*x), st.lists(children, max_size=200))
417+
| st.builds(
418+
lambda x: encode_sequence(*x), st.lists(children, max_size=200)
419+
)
400420
| st.builds(
401421
encode_constructed,
402422
st.integers(min_value=0, max_value=0x3F),
@@ -418,7 +438,9 @@ def test_random_der_as_signature(params, der):
418438

419439
@settings(**slow_params)
420440
@given(st.sampled_from(keys_and_sigs), st.binary(max_size=1024**2))
421-
@example(keys_and_sigs[0], encode_sequence(encode_integer(0), encode_integer(0)))
441+
@example(
442+
keys_and_sigs[0], encode_sequence(encode_integer(0), encode_integer(0))
443+
)
422444
@example(
423445
keys_and_sigs[0],
424446
encode_sequence(encode_integer(1), encode_integer(1)) + b"\x00",

src/ecdsa/test_pyecdsa.py

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@
3232
sigencode_der_canonize,
3333
sigencode_der_full_r,
3434
sigencode_der_sig_value_y_boolean,
35-
sigencode_der_sig_value_y_field_elem
35+
sigencode_der_sig_value_y_field_elem,
3636
)
3737
from .util import (
3838
sigdecode_der,
3939
sigdecode_strings,
4040
sigdecode_string,
4141
sigdecode_der_full_r,
42-
sigdecode_der_extended
43-
)
42+
sigdecode_der_extended,
43+
)
4444
from .util import number_to_string, encoded_oid_ecPublicKey, MalformedSignature
4545
from .curves import Curve, UnknownCurveError
4646
from .curves import (
@@ -476,7 +476,9 @@ def test_sigencode_der_full_r_uncompressed(self):
476476
data = b"data"
477477
sig = priv1.sign(data, sigencode=sigencode_der_full_r, accelerate=True)
478478
r, s = sigdecode_der_full_r(sig, None)
479-
point = ellipticcurve.Point.from_bytes(priv1.privkey.public_key.generator.curve(), r)
479+
point = ellipticcurve.Point.from_bytes(
480+
priv1.privkey.public_key.generator.curve(), r
481+
)
480482
sig = sigencode_der_full_r(point, s, None, encoding="uncompressed")
481483

482484
self.assertEqual(type(sig), binary_type)
@@ -488,7 +490,9 @@ def test_sigencode_der_full_r_compressed(self):
488490
data = b"data"
489491
sig = priv1.sign(data, sigencode=sigencode_der_full_r, accelerate=True)
490492
r, s = sigdecode_der_full_r(sig, None)
491-
point = ellipticcurve.Point.from_bytes(priv1.privkey.public_key.generator.curve(), r)
493+
point = ellipticcurve.Point.from_bytes(
494+
priv1.privkey.public_key.generator.curve(), r
495+
)
492496
sig = sigencode_der_full_r(point, s, None, encoding="compressed")
493497

494498
self.assertEqual(type(sig), binary_type)
@@ -498,19 +502,27 @@ def test_sigencode_der_sig_value_with_y_boolean(self):
498502
priv1 = SigningKey.generate()
499503
pub1 = priv1.get_verifying_key()
500504
data = b"data"
501-
sig = priv1.sign(data, sigencode=sigencode_der_sig_value_y_boolean,
502-
accelerate=True)
505+
sig = priv1.sign(
506+
data, sigencode=sigencode_der_sig_value_y_boolean, accelerate=True
507+
)
503508
self.assertEqual(type(sig), binary_type)
504-
self.assertTrue(pub1.verify(sig, data, sigdecode=sigdecode_der_extended))
509+
self.assertTrue(
510+
pub1.verify(sig, data, sigdecode=sigdecode_der_extended)
511+
)
505512

506513
def test_sigencode_der_sig_value_with_y_field_elem(self):
507514
priv1 = SigningKey.generate()
508515
pub1 = priv1.get_verifying_key()
509516
data = b"data"
510-
sig = priv1.sign(data, sigencode=sigencode_der_sig_value_y_field_elem,
511-
accelerate=True)
517+
sig = priv1.sign(
518+
data,
519+
sigencode=sigencode_der_sig_value_y_field_elem,
520+
accelerate=True,
521+
)
512522
self.assertEqual(type(sig), binary_type)
513-
self.assertTrue(pub1.verify(sig, data, sigdecode=sigdecode_der_extended))
523+
self.assertTrue(
524+
pub1.verify(sig, data, sigdecode=sigdecode_der_extended)
525+
)
514526

515527
def test_sigencode_string_canonize_no_change(self):
516528
r = 12
@@ -2013,7 +2025,8 @@ def _do(self, generator, secexp, hsh, hash_func, expected):
20132025

20142026
def test_SECP256k1(self):
20152027
"""RFC doesn't contain test vectors for SECP256k1 used in bitcoin.
2016-
This vector has been computed by Golang reference implementation instead."""
2028+
This vector has been computed by Golang reference implementation instead.
2029+
"""
20172030
self._do(
20182031
generator=SECP256k1.generator,
20192032
secexp=int("9d0219792467d7d37b4d43298a7d0c05", 16),

0 commit comments

Comments
 (0)