diff options
author | Justus Winter <justus@sequoia-pgp.org> | 2021-09-30 12:50:38 +0200 |
---|---|---|
committer | Justus Winter <justus@sequoia-pgp.org> | 2021-09-30 13:49:17 +0200 |
commit | c422b1b317fb760bc6b43cb8055fe0a1305ba3a5 (patch) | |
tree | 0cae549bf6797cbb22b0d5c11f30e39a1d90d902 | |
parent | 25dff28a80cd67f722c10a3232a272a668bfd1d5 (diff) |
openpgp: Use new padding methods in the CNG backend.
-rw-r--r-- | openpgp/src/crypto/backend/cng/asymmetric.rs | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/openpgp/src/crypto/backend/cng/asymmetric.rs b/openpgp/src/crypto/backend/cng/asymmetric.rs index d101ccc5..5f9addc7 100644 --- a/openpgp/src/crypto/backend/cng/asymmetric.rs +++ b/openpgp/src/crypto/backend/cng/asymmetric.rs @@ -560,18 +560,10 @@ impl<P: key::KeyParts, R: key::KeyRole> Key<P, R> { // digest or pad it with zeroes (since it's treated as a // big-endian number). // See https://github.com/dotnet/runtime/blob/67d74fca70d4670ad503e23dba9d6bc8a1b5909e/src/libraries/Common/src/System/Security/Cryptography/DSACng.SignVerify.cs#L148. - let mut _digest = vec![]; - let digest = match std::cmp::Ord::cmp(&q.value().len(), &digest.len()) { - std::cmp::Ordering::Equal => digest, - std::cmp::Ordering::Less => &digest[..q.value().len()], - std::cmp::Ordering::Greater => { - let pad = vec![0; q.value().len() - digest.len()]; - _digest = [pad.as_ref(), digest].concat(); - &_digest - } - }; + let digest = pad_truncating(&digest, q.value().len()); + assert_eq!(q.value().len(), digest.len()); - key.verify(digest, &signature, None).map(|_| true)? + key.verify(&digest, &signature, None).map(|_| true)? }, (mpi::PublicKey::ECDSA { curve, q }, mpi::Signature::ECDSA { s, r }) => { |