Skip to content

Commit 05713de

Browse files
authored
Refactor signature verification methods in identity.py
1 parent 248b6ab commit 05713de

1 file changed

Lines changed: 19 additions & 7 deletions

File tree

src/cyphersyntax/identity.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,25 @@ def generate(cls, name: str) -> "Identity":
3434
def sign(self, data: bytes) -> bytes:
3535
return self.signing_private_key.sign(data)
3636

37-
def verify(self, data: bytes, signature: bytes, public_key: bytes | None = None) -> None:
38-
key = (
39-
Ed25519PublicKey.from_public_bytes(public_key)
40-
if public_key is not None
41-
else self.signing_private_key.public_key()
42-
)
37+
@staticmethod
38+
def verify_signature(data: bytes, signature: bytes, public_key: bytes) -> None:
39+
key = Ed25519PublicKey.from_public_bytes(public_key)
4340
try:
4441
key.verify(signature, data)
4542
except InvalidSignature as exc:
4643
raise InvalidSignatureError("signature verification failed") from exc
4744

45+
def verify(
46+
self,
47+
data: bytes,
48+
signature: bytes,
49+
public_key: bytes | None = None,
50+
) -> None:
51+
verification_key = (
52+
public_key if public_key is not None else self.ed25519_public_bytes()
53+
)
54+
self.verify_signature(data, signature, verification_key)
55+
4856
def ed25519_public_bytes(self) -> bytes:
4957
return self.signing_private_key.public_key().public_bytes(
5058
encoding=serialization.Encoding.Raw,
@@ -97,4 +105,8 @@ def load(cls, name: str, directory: str | Path, passphrase: bytes) -> "Identity"
97105
raise TypeError("loaded signing key is not Ed25519")
98106
if not isinstance(exchange_key, X25519PrivateKey):
99107
raise TypeError("loaded exchange key is not X25519")
100-
return cls(name=name, signing_private_key=signing_key, exchange_private_key=exchange_key)
108+
return cls(
109+
name=name,
110+
signing_private_key=signing_key,
111+
exchange_private_key=exchange_key,
112+
)

0 commit comments

Comments
 (0)