gpgrv/rsa.rs
1use crate::mpi;
2use crate::verify::SignatureError;
3
4pub fn verify(
5 sig: &[u8],
6 (n, e): (&[u8], &[u8]),
7 padded_hash: &[u8],
8) -> Result<(), SignatureError> {
9 if sig.len() < (2048 / 8) {
10 // signature too short
11 return Err(SignatureError::BadData);
12 }
13
14 let expected = mpi::pow_mod(sig, e, n);
15
16 if mpi::eq(&expected, padded_hash) {
17 return Ok(());
18 }
19
20 Err(SignatureError::Mismatch)
21}