summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2021-09-30 12:50:38 +0200
committerJustus Winter <justus@sequoia-pgp.org>2021-09-30 13:49:17 +0200
commitc422b1b317fb760bc6b43cb8055fe0a1305ba3a5 (patch)
tree0cae549bf6797cbb22b0d5c11f30e39a1d90d902
parent25dff28a80cd67f722c10a3232a272a668bfd1d5 (diff)
openpgp: Use new padding methods in the CNG backend.
-rw-r--r--openpgp/src/crypto/backend/cng/asymmetric.rs14
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 }) =>
{