aboutsummaryrefslogtreecommitdiff
path: root/guests/rsa/src/lib.rs
diff options
context:
space:
mode:
authorKamen Mladenov <kamen@syndamia.com>2025-04-16 13:09:20 +0300
committerKamen Mladenov <kamen@syndamia.com>2025-04-23 17:28:22 +0300
commit797faa9d44c576473ecf6015fe51d77a3f1b8d1e (patch)
treee496aec36c93b4d469699a4ca7121961abb31464 /guests/rsa/src/lib.rs
parent3d7b8956c11eeef81ea88d1e94c3690a1d3bda1e (diff)
downloadzkVMs-benchmarks-797faa9d44c576473ecf6015fe51d77a3f1b8d1e.tar
zkVMs-benchmarks-797faa9d44c576473ecf6015fe51d77a3f1b8d1e.tar.gz
zkVMs-benchmarks-797faa9d44c576473ecf6015fe51d77a3f1b8d1e.zip
feat(guests): Add rsa benchmark
Diffstat (limited to 'guests/rsa/src/lib.rs')
-rw-r--r--guests/rsa/src/lib.rs27
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()
+}