1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use super::{der_encoded::der_encoded, hash};
use rsa::{Hash, PaddingScheme, PublicKey, RSAPublicKey};
pub fn verify_sign(file_content: &str, sign: &str, source : String) ->bool{
let der_encoded = der_encoded(file_content);
let der_bytes = base64::decode(&der_encoded).expect("decode key failed");
let public_key = RSAPublicKey::from_pkcs8(&der_bytes).unwrap();
public_key.verify(
PaddingScheme::PKCS1v15Sign {
hash: Option::from(Hash::SHA2_256),
},
&hash::hasher(&source),
&base64::decode(&sign).unwrap(),
).is_ok()
}