Skip to content

Commit c8d9a37

Browse files
authored
Reinstate decode_verify_key_base64 (#6)
This method was incorrectly removed in 1.1.0.
1 parent 9db37d7 commit c8d9a37

File tree

2 files changed

+42
-8
lines changed

2 files changed

+42
-8
lines changed

signedjson/key.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,21 @@ def is_signing_algorithm_supported(key_id):
100100
return False
101101

102102

103+
def decode_verify_key_base64(algorithm, version, key_base64):
104+
# type: (str, str, str) -> VerifyKey
105+
"""Decode a base64 encoded verify key
106+
Args:
107+
algorithm (str): The algorithm the key is for (currently "ed25519").
108+
version (str): Identifies this key out of the keys for this entity.
109+
key_base64 (str): Base64 encoded bytes of the key.
110+
Returns:
111+
A VerifyKey object.
112+
"""
113+
key_id = "%s:%s" % (algorithm, version)
114+
key_bytes = decode_base64(key_base64)
115+
return decode_verify_key_bytes(key_id, key_bytes)
116+
117+
103118
def decode_verify_key_bytes(key_id, key_bytes):
104119
# type: (str, bytes) -> VerifyKey
105120
"""Decode a raw verify key
@@ -146,8 +161,7 @@ def read_old_signing_keys(stream):
146161
keys = []
147162
for line in stream:
148163
algorithm, version, expired, key_base64 = line.split()
149-
key_name = "%s:%s" % (algorithm, version,)
150-
key = decode_verify_key_bytes(key_name, decode_base64(key_base64))
164+
key = decode_verify_key_base64(algorithm, version, key_base64)
151165
key.expired = int(expired)
152166
keys.append(key)
153167
return keys

tests/test_key.py

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
21
import unittest
32

43
from signedjson.key import (
5-
generate_signing_key,
6-
get_verify_key,
74
decode_signing_key_base64,
5+
decode_verify_key_base64,
86
decode_verify_key_bytes,
97
encode_signing_key_base64,
10-
is_signing_algorithm_supported,
118
encode_verify_key_base64,
12-
read_signing_keys,
9+
generate_signing_key,
10+
get_verify_key,
11+
is_signing_algorithm_supported,
1312
read_old_signing_keys,
14-
write_signing_keys
13+
read_signing_keys,
14+
write_signing_keys,
1515
)
1616

1717

@@ -50,6 +50,25 @@ def test_decode_invalid_key(self):
5050
with self.assertRaises(Exception):
5151
decode_signing_key_base64("ed25519", self.version, "")
5252

53+
def test_decode_verify_key(self):
54+
decoded_key = decode_verify_key_base64(
55+
"ed25519", self.version, self.verify_key_base64
56+
)
57+
self.assertEquals(decoded_key.alg, "ed25519")
58+
self.assertEquals(decoded_key.version, self.version)
59+
60+
def test_decode_verify_key_invalid_base64(self):
61+
with self.assertRaises(Exception):
62+
decode_verify_key_base64("ed25519", self.version, "not base 64")
63+
64+
def test_decode_verify_key_invalid_algorithm(self):
65+
with self.assertRaises(Exception):
66+
decode_verify_key_base64("not a valid alg", self.version, "")
67+
68+
def test_decode_verify_key_invalid_key(self):
69+
with self.assertRaises(Exception):
70+
decode_verify_key_base64("ed25519", self.version, "")
71+
5372
def test_read_keys(self):
5473
stream = ["ed25519 %s %s" % (self.version, self.key_base64)]
5574
keys = read_signing_keys(stream)
@@ -68,6 +87,7 @@ def test_write_signing_keys(self):
6887
class MockStream(object):
6988
def write(self, data):
7089
pass
90+
7191
write_signing_keys(MockStream(), [self.key])
7292

7393

0 commit comments

Comments
 (0)