@@ -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