22
33//! EdDSA (Ed25519) signature implementation.
44
5+ use crate :: error:: invalid_manifest;
56use crate :: { DocumentId , Result } ;
67
78use super :: signature:: { Signature , SignatureAlgorithm , SignatureVerification , SignerInfo } ;
@@ -24,11 +25,8 @@ impl EddsaSigner {
2425 pub fn from_pem ( pem : & str , signer_info : SignerInfo ) -> Result < Self > {
2526 use ed25519_dalek:: pkcs8:: DecodePrivateKey ;
2627
27- let signing_key = ed25519_dalek:: SigningKey :: from_pkcs8_pem ( pem) . map_err ( |e| {
28- crate :: Error :: InvalidManifest {
29- reason : format ! ( "Failed to parse EdDSA private key PEM: {e}" ) ,
30- }
31- } ) ?;
28+ let signing_key = ed25519_dalek:: SigningKey :: from_pkcs8_pem ( pem)
29+ . map_err ( |e| invalid_manifest ( format ! ( "Failed to parse EdDSA private key PEM: {e}" ) ) ) ?;
3230
3331 Ok ( Self {
3432 signing_key,
@@ -47,16 +45,13 @@ impl EddsaSigner {
4745 use ed25519_dalek:: pkcs8:: spki:: { der:: pem:: LineEnding , EncodePublicKey } ;
4846
4947 let mut key_bytes = [ 0u8 ; 32 ] ;
50- getrandom:: fill ( & mut key_bytes) . map_err ( |e| crate :: Error :: InvalidManifest {
51- reason : format ! ( "System RNG failed: {e}" ) ,
52- } ) ?;
48+ getrandom:: fill ( & mut key_bytes)
49+ . map_err ( |e| invalid_manifest ( format ! ( "System RNG failed: {e}" ) ) ) ?;
5350 let signing_key = ed25519_dalek:: SigningKey :: from_bytes ( & key_bytes) ;
5451 let verifying_key = signing_key. verifying_key ( ) ;
5552 let public_key_pem = verifying_key
5653 . to_public_key_pem ( LineEnding :: LF )
57- . map_err ( |e| crate :: Error :: InvalidManifest {
58- reason : format ! ( "Failed to encode EdDSA public key: {e}" ) ,
59- } ) ?;
54+ . map_err ( |e| invalid_manifest ( format ! ( "Failed to encode EdDSA public key: {e}" ) ) ) ?;
6055
6156 Ok ( (
6257 Self {
@@ -78,9 +73,7 @@ impl EddsaSigner {
7873 self . signing_key
7974 . verifying_key ( )
8075 . to_public_key_pem ( LineEnding :: LF )
81- . map_err ( |e| crate :: Error :: InvalidManifest {
82- reason : format ! ( "Failed to encode EdDSA public key: {e}" ) ,
83- } )
76+ . map_err ( |e| invalid_manifest ( format ! ( "Failed to encode EdDSA public key: {e}" ) ) )
8477 }
8578}
8679
@@ -141,11 +134,8 @@ impl EddsaVerifier {
141134 pub fn from_pem ( pem : & str ) -> Result < Self > {
142135 use ed25519_dalek:: pkcs8:: DecodePublicKey ;
143136
144- let verifying_key = ed25519_dalek:: VerifyingKey :: from_public_key_pem ( pem) . map_err ( |e| {
145- crate :: Error :: InvalidManifest {
146- reason : format ! ( "Failed to parse EdDSA public key PEM: {e}" ) ,
147- }
148- } ) ?;
137+ let verifying_key = ed25519_dalek:: VerifyingKey :: from_public_key_pem ( pem)
138+ . map_err ( |e| invalid_manifest ( format ! ( "Failed to parse EdDSA public key PEM: {e}" ) ) ) ?;
149139
150140 Ok ( Self { verifying_key } )
151141 }
@@ -174,9 +164,7 @@ impl Verifier for EddsaVerifier {
174164 // Decode signature from base64
175165 let sig_bytes = base64:: engine:: general_purpose:: STANDARD
176166 . decode ( & signature. value )
177- . map_err ( |e| crate :: Error :: InvalidManifest {
178- reason : format ! ( "Failed to decode signature: {e}" ) ,
179- } ) ?;
167+ . map_err ( |e| invalid_manifest ( format ! ( "Failed to decode signature: {e}" ) ) ) ?;
180168
181169 // Parse signature
182170 let sig_array: [ u8 ; 64 ] =
0 commit comments