openssl: update to builder traits, borrowed digest
This commit is contained in:
parent
643b9c0e3d
commit
77eed29eea
1 changed files with 21 additions and 17 deletions
|
@ -36,18 +36,12 @@ impl OpenSsl {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'a> apub_core::digest::Digest for OpenSslDigest {
|
||||
impl apub_core::digest::Digest for OpenSslDigest {
|
||||
const NAME: &'static str = "SHA-256";
|
||||
|
||||
fn build() -> Self {
|
||||
OpenSslDigest {
|
||||
digest: Sha256::new(),
|
||||
}
|
||||
}
|
||||
|
||||
fn digest(mut self, input: &[u8]) -> String {
|
||||
fn digest(&mut self, input: &[u8]) -> String {
|
||||
self.digest.update(input);
|
||||
let bytes = self.digest.finish();
|
||||
let bytes = self.digest.clone().finish();
|
||||
|
||||
openssl::base64::encode_block(&bytes)
|
||||
}
|
||||
|
@ -56,13 +50,21 @@ impl<'a> apub_core::digest::Digest for OpenSslDigest {
|
|||
self.digest.update(input);
|
||||
}
|
||||
|
||||
fn verify(self, encoded: &str) -> bool {
|
||||
let bytes = self.digest.finish();
|
||||
fn verify(&mut self, encoded: &str) -> bool {
|
||||
let bytes = self.digest.clone().finish();
|
||||
|
||||
openssl::base64::encode_block(&bytes) == encoded
|
||||
}
|
||||
}
|
||||
|
||||
impl apub_core::digest::DigestBuilder for OpenSslDigest {
|
||||
fn build() -> Self {
|
||||
OpenSslDigest {
|
||||
digest: Sha256::new(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl apub_core::signature::Sign for OpenSslSigner {
|
||||
type Error = ErrorStack;
|
||||
|
||||
|
@ -77,6 +79,14 @@ impl apub_core::signature::Sign for OpenSslSigner {
|
|||
impl apub_core::signature::Verify for OpenSslVerifier {
|
||||
type Error = ErrorStack;
|
||||
|
||||
fn verify(&self, signing_string: &str, signature: &str) -> Result<bool, Self::Error> {
|
||||
let mut verifier = Verifier::new(MessageDigest::sha256(), &self.public_key)?;
|
||||
verifier.update(signing_string.as_bytes())?;
|
||||
Ok(verifier.verify(&openssl::base64::decode_block(&signature)?)?)
|
||||
}
|
||||
}
|
||||
|
||||
impl apub_core::signature::VerifyBuilder for OpenSslVerifier {
|
||||
fn build(public_key_pem: &str) -> Result<Self, Self::Error>
|
||||
where
|
||||
Self: Sized,
|
||||
|
@ -85,12 +95,6 @@ impl apub_core::signature::Verify for OpenSslVerifier {
|
|||
public_key: PKey::public_key_from_pem(public_key_pem.as_bytes())?,
|
||||
})
|
||||
}
|
||||
|
||||
fn verify(&self, signing_string: &str, signature: &str) -> Result<bool, Self::Error> {
|
||||
let mut verifier = Verifier::new(MessageDigest::sha256(), &self.public_key)?;
|
||||
verifier.update(signing_string.as_bytes())?;
|
||||
Ok(verifier.verify(&openssl::base64::decode_block(&signature)?)?)
|
||||
}
|
||||
}
|
||||
|
||||
impl apub_core::digest::DigestFactory for OpenSsl {
|
||||
|
|
Loading…
Reference in a new issue