From 6d1eff08f3d1cb95224813ee469e9f640a55105a Mon Sep 17 00:00:00 2001 From: GarmashAlex Date: Fri, 24 Oct 2025 14:43:24 +0300 Subject: [PATCH 1/3] chore: remove redundant Felt252<->bytes conversions and simplify --- vm/src/vm/runners/builtin_runner/signature.rs | 48 +++++-------------- 1 file changed, 11 insertions(+), 37 deletions(-) diff --git a/vm/src/vm/runners/builtin_runner/signature.rs b/vm/src/vm/runners/builtin_runner/signature.rs index bdd7a95a0c..7a6e50cc37 100644 --- a/vm/src/vm/runners/builtin_runner/signature.rs +++ b/vm/src/vm/runners/builtin_runner/signature.rs @@ -23,7 +23,7 @@ use crate::{ }, }; use lazy_static::lazy_static; -use num_bigint::{BigInt, Sign}; +use num_bigint::BigInt; use num_integer::div_ceil; use num_traits::{Num, One}; use starknet_crypto::{verify, Signature}; @@ -61,17 +61,7 @@ impl SignatureBuiltinRunner { relocatable: Relocatable, (r, s): &(Felt252, Felt252), ) -> Result<(), MemoryError> { - let r_be_bytes = r.to_bytes_be(); - let s_be_bytes = s.to_bytes_be(); - let (r_felt, s_felt) = ( - Felt252::from_bytes_be(&r_be_bytes), - Felt252::from_bytes_be(&s_be_bytes), - ); - - let signature = Signature { - r: r_felt, - s: s_felt, - }; + let signature = Signature { r: *r, s: *s }; self.signatures .borrow_mut() @@ -131,9 +121,9 @@ impl SignatureBuiltinRunner { .get(&pubkey_addr) .ok_or_else(|| MemoryError::SignatureNotFound(Box::new(pubkey_addr)))?; - let public_key = Felt252::from_bytes_be(&pubkey.to_bytes_be()); + let public_key = *pubkey; let (r, s) = (signature.r, signature.s); - let message = Felt252::from_bytes_be(&msg.to_bytes_be()); + let message = *msg; match verify(&public_key, &message, &r, &s) { Ok(true) => Ok(vec![]), _ => Err(MemoryError::InvalidSignature(Box::new(( @@ -171,15 +161,7 @@ impl SignatureBuiltinRunner { .signatures .borrow() .iter() - .map(|(k, v)| { - ( - *k, - ( - Felt252::from_bytes_be(&v.r.to_bytes_be()), - Felt252::from_bytes_be(&v.s.to_bytes_be()), - ), - ) - }) + .map(|(k, v)| (*k, (v.r, v.s))) .collect(); BuiltinAdditionalData::Signature(signatures) } @@ -197,13 +179,9 @@ impl SignatureBuiltinRunner { if addr.segment_index != self.base as isize { return Err(RunnerError::InvalidAdditionalData(BuiltinName::ecdsa)); } - self.signatures.borrow_mut().insert( - *addr, - Signature { - r: Felt252::from_bytes_be(&r.to_bytes_be()), - s: Felt252::from_bytes_be(&s.to_bytes_be()), - }, - ); + self.signatures + .borrow_mut() + .insert(*addr, Signature { r: *r, s: *s }); } Ok(()) } @@ -235,14 +213,10 @@ impl SignatureBuiltinRunner { pubkey: *pubkey, msg: *msg, signature_input: SignatureInput { - r: Felt252::from_bytes_be(&signature.r.to_bytes_be()), + r: signature.r, w: Felt252::from( - &div_mod( - &BigInt::one(), - &BigInt::from_bytes_be(Sign::Plus, &signature.s.to_bytes_be()), - &EC_ORDER, - ) - .unwrap_or_default(), + &div_mod(&BigInt::one(), &signature.s.to_bigint(), &EC_ORDER) + .unwrap_or_default(), ), }, })) From aa74e9856c675166ae106fa6c59455f320e4c76a Mon Sep 17 00:00:00 2001 From: GarmashAlex Date: Fri, 24 Oct 2025 14:45:14 +0300 Subject: [PATCH 2/3] Update CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f37561a916..96c4a15f3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ #### Upcoming Changes +* chore: remove redundant Felt252<->bytes conversions and simplify [#2243](https://github.com/lambdaclass/cairo-vm/pull/2243) + * chore: Remove dead SegmentInfo struct from cairo_runner.rs [#2235](https://github.com/lambdaclass/cairo-vm/pull/2235) * fix: Remove unused dependency getrandom for cairo1-run, and serde_json for wasm-demo-cairo1 [#2238](https://github.com/lambdaclass/cairo-vm/pull/2238) From 4034c420d1d810a0a11cc5c7a8d4902a8522eb61 Mon Sep 17 00:00:00 2001 From: GarmashAlex Date: Fri, 7 Nov 2025 20:24:10 +0300 Subject: [PATCH 3/3] Update vm/src/vm/runners/builtin_runner/signature.rs Co-authored-by: Gabriel Bosio <38794644+gabrielbosio@users.noreply.github.com> --- vm/src/vm/runners/builtin_runner/signature.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vm/src/vm/runners/builtin_runner/signature.rs b/vm/src/vm/runners/builtin_runner/signature.rs index 7a6e50cc37..fb69a67f2a 100644 --- a/vm/src/vm/runners/builtin_runner/signature.rs +++ b/vm/src/vm/runners/builtin_runner/signature.rs @@ -124,7 +124,7 @@ impl SignatureBuiltinRunner { let public_key = *pubkey; let (r, s) = (signature.r, signature.s); let message = *msg; - match verify(&public_key, &message, &r, &s) { + match verify(&pubkey, &msg, &r, &s) { Ok(true) => Ok(vec![]), _ => Err(MemoryError::InvalidSignature(Box::new(( format!("({}, {})", signature.r, signature.s),