@ -6,7 +6,7 @@ use rsa::{
} ,
rand_core ::OsRng ,
sha2 ::Sha256 ,
signature ::{ RandomizedSigner , Verifier} ,
signature ::{ RandomizedSigner , SignatureEncoding, Verifier} ,
RsaPrivateKey , RsaPublicKey ,
} ;
use serde ::{ Deserialize , Deserializer , Serialize , Serializer } ;
@ -86,8 +86,9 @@ impl PubKey {
pub async fn verify ( & self , data : & [ u8 ] , signature : & [ u8 ] ) -> Result < ( ) > {
let pkey = self . get_pkey ( ) . await ? ;
let signature = Signature ::from ( Box ::from ( signature ) ) ;
let verifying_key : VerifyingKey < Sha256 > = VerifyingKey ::new_with_prefix ( pkey . clone ( ) ) ;
let signature =
Signature ::try_from ( signature ) . map_err ( | _ | crate ::core ::Error ::BadSignature ) ? ;
let verifying_key : VerifyingKey < Sha256 > = VerifyingKey ::new ( pkey . clone ( ) ) ;
verifying_key
. verify ( data , & signature )
. map_err ( | _ | crate ::core ::Error ::BadSignature )
@ -110,7 +111,11 @@ impl PrivKey {
/// Generate a new private key.
pub fn new ( ) -> Result < PrivKey > {
let pkey = RsaPrivateKey ::new ( & mut OsRng , DEFAULT_KEY_SIZE ) . map_err ( Error ::from ) ? ;
let der = pkey . to_public_key_der ( ) . map_err ( Error ::from ) ? . into_vec ( ) ;
let der = pkey
. to_public_key ( )
. to_public_key_der ( )
. map_err ( Error ::from ) ?
. into_vec ( ) ;
Ok ( PrivKey {
pkey : OnceCell ::from ( pkey ) ,
der ,
@ -135,9 +140,9 @@ impl PrivKey {
pub async fn sign ( & self , data : & [ u8 ] ) -> Result < Vec < u8 > > {
let pkey = self . get_pkey ( ) . await ? ;
let signing_key : SigningKey < Sha256 > = SigningKey ::new _with_prefix ( pkey . clone ( ) ) ;
let signing_key : SigningKey < Sha256 > = SigningKey ::new ( pkey . clone ( ) ) ;
let signature = signing_key . sign_with_rng ( & mut OsRng , data ) ;
Ok ( Vec ::from ( signature . as_ref ( ) ) )
Ok ( Vec ::from ( signature . to_bytes ( ) ) )
}
async fn get_pkey ( & self ) -> Result < & RsaPrivateKey > {