Skip to content

Commit ce2dd53

Browse files
committed
more test coverage for keys module, remove dead code
1 parent 9fc7ed8 commit ce2dd53

File tree

2 files changed

+35
-6
lines changed

2 files changed

+35
-6
lines changed

src/ecdsa/keys.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1102,12 +1102,6 @@ def from_der(cls, string, hashfunc=sha1, valid_curve_encodings=None):
11021102

11031103
curve = Curve.from_der(algorithm_identifier, valid_curve_encodings)
11041104

1105-
if empty != b"":
1106-
raise der.UnexpectedDER(
1107-
"unexpected data after algorithm identifier: %s"
1108-
% binascii.hexlify(empty)
1109-
)
1110-
11111105
# Up next is an octet string containing an ECPrivateKey. Ignore
11121106
# the optional "attributes" and "publicKey" fields that come after.
11131107
s, _ = der.remove_octet_string(s)

src/ecdsa/test_keys.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
encode_sequence,
2626
encode_oid,
2727
encode_bitstring,
28+
encode_integer,
29+
encode_octet_string,
2830
)
2931
from .util import (
3032
sigencode_string,
@@ -668,6 +670,34 @@ def test_ed25519_from_pem(self):
668670

669671
self.assertEqual(sk, sk_str)
670672

673+
def test_ed25519_from_der_bad_alg_id_params(self):
674+
der_str = encode_sequence(
675+
encode_integer(1),
676+
encode_sequence(encode_oid(*Ed25519.oid), encode_integer(1)),
677+
encode_octet_string(encode_octet_string(b"A" * 32)),
678+
)
679+
680+
with self.assertRaises(UnexpectedDER) as e:
681+
SigningKey.from_der(der_str)
682+
683+
self.assertIn("Non NULL parameters", str(e.exception))
684+
685+
def test_ed25519_from_der_junk_after_priv_key(self):
686+
der_str = encode_sequence(
687+
encode_integer(1),
688+
encode_sequence(
689+
encode_oid(*Ed25519.oid),
690+
),
691+
encode_octet_string(encode_octet_string(b"A" * 32) + b"B"),
692+
)
693+
694+
with self.assertRaises(UnexpectedDER) as e:
695+
SigningKey.from_der(der_str)
696+
697+
self.assertIn(
698+
"trailing junk after the encoded private key", str(e.exception)
699+
)
700+
671701
def test_ed25519_sign(self):
672702
sk_str = SigningKey.from_string(
673703
b"\x34\xBA\xC7\xD1\x4E\xD4\xF1\xBC\x4F\x8C\x48\x3E\x0F\x19\x77\x4C"
@@ -774,6 +804,11 @@ def test_ed25519_to_and_from_pem(self):
774804

775805
self.assertEqual(sk, decoded)
776806

807+
def test_ed25519_custom_entropy(self):
808+
sk = SigningKey.generate(Ed25519, entropy=os.urandom)
809+
810+
self.assertIsNotNone(sk)
811+
777812
def test_ed25519_from_secret_exponent(self):
778813
with self.assertRaises(ValueError) as e:
779814
SigningKey.from_secret_exponent(1234567890, curve=Ed25519)

0 commit comments

Comments
 (0)