diff options
| author | Kamen Mladenov <kamen@syndamia.com> | 2025-04-16 13:09:20 +0300 |
|---|---|---|
| committer | Kamen Mladenov <kamen@syndamia.com> | 2025-04-23 17:28:22 +0300 |
| commit | 797faa9d44c576473ecf6015fe51d77a3f1b8d1e (patch) | |
| tree | e496aec36c93b4d469699a4ca7121961abb31464 /guests/rsa/src | |
| parent | 3d7b8956c11eeef81ea88d1e94c3690a1d3bda1e (diff) | |
| download | zkVMs-benchmarks-797faa9d44c576473ecf6015fe51d77a3f1b8d1e.tar zkVMs-benchmarks-797faa9d44c576473ecf6015fe51d77a3f1b8d1e.tar.gz zkVMs-benchmarks-797faa9d44c576473ecf6015fe51d77a3f1b8d1e.zip | |
feat(guests): Add rsa benchmark
Diffstat (limited to 'guests/rsa/src')
| -rw-r--r-- | guests/rsa/src/lib.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/guests/rsa/src/lib.rs b/guests/rsa/src/lib.rs new file mode 100644 index 0000000..b2067cf --- /dev/null +++ b/guests/rsa/src/lib.rs @@ -0,0 +1,27 @@ +#![cfg_attr(feature = "no_std", no_std)] + +#[cfg(feature = "no_std")] +extern crate alloc; +#[cfg(feature = "no_std")] +use alloc::vec::Vec; + +use sha2::{Digest, Sha256}; + +#[cfg(feature = "sp1")] +use rsa_sp1::{pkcs8::DecodePublicKey, Pkcs1v15Sign, RsaPublicKey}; + +#[cfg(not(feature = "sp1"))] +use rsa::{pkcs8::DecodePublicKey, Pkcs1v15Sign, RsaPublicKey}; + +#[guests_macro::proving_entrypoint] +pub fn main(public_key: Vec<u8>, message: String, signature: Vec<u8>) -> bool { + let public_key = RsaPublicKey::from_public_key_der(&public_key).unwrap(); + + let mut hasher = Sha256::new(); + hasher.update(message); + let hashed_msg = hasher.finalize(); + + public_key + .verify(Pkcs1v15Sign::new::<Sha256>(), &hashed_msg, &signature) + .is_ok() +} |
