Skip to content

Commit

Permalink
Add special serialization for ecdsa builtin additional data
Browse files Browse the repository at this point in the history
  • Loading branch information
fmoletta committed Jan 17, 2024
1 parent 5dd9068 commit 7a9924e
Showing 1 changed file with 27 additions and 2 deletions.
29 changes: 27 additions & 2 deletions vm/src/vm/runners/cairo_pie.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ pub enum BuiltinAdditionalData {
Hash(Vec<Relocatable>),
Output(OutputBuiltinAdditionalData),
// Signatures are composed of (r, s) tuples
#[serde(serialize_with = "serde_impl::serialize_signature_additional_data")]
Signature(HashMap<Relocatable, (Felt252, Felt252)>),
None,
}
Expand Down Expand Up @@ -134,11 +135,20 @@ impl CairoPie {
}

mod serde_impl {
use std::collections::HashMap;

use super::CAIRO_PIE_VERSION;
use crate::{types::relocatable::MaybeRelocatable, utils::CAIRO_PRIME, Felt252};
use crate::{
types::relocatable::{MaybeRelocatable, Relocatable},
utils::CAIRO_PRIME,
Felt252,
};
use num_bigint::BigUint;
use num_traits::Num;
use serde::{ser::SerializeSeq, Serialize, Serializer};
use serde::{
ser::{SerializeMap, SerializeSeq},
Serialize, Serializer,
};

pub const ADDR_BYTE_LEN: usize = 8;
pub const FIELD_BYTE_LEN: usize = 32;
Expand Down Expand Up @@ -253,6 +263,21 @@ mod serde_impl {
{
serializer.serialize_str(CAIRO_PIE_VERSION)
}

pub fn serialize_signature_additional_data<S>(
values: &HashMap<Relocatable, (Felt252, Felt252)>,
serializer: S,
) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let mut map_serializer = serializer.serialize_map(Some(values.len()))?;

for (key, (x, y)) in values {
map_serializer.serialize_entry(&key.to_string(), &format!("[{}, {}]", x, y))?;
}
map_serializer.end()
}
}

#[cfg(test)]
Expand Down

0 comments on commit 7a9924e

Please sign in to comment.