Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Commit

Permalink
fix bugs, cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
Achim Schneider committed Mar 19, 2023
1 parent 9eacba9 commit eef4c77
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 32 deletions.
4 changes: 1 addition & 3 deletions primitives/arkworks/src/ed_on_bls12_377.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,8 @@
#![warn(missing_docs)]

use crate::utils::{deserialize_iter_to_vec, serialize_result};
use ark_ec::{models::CurveConfig, twisted_edwards, AffineRepr, Group, VariableBaseMSM};
use ark_ec::{models::CurveConfig, twisted_edwards, VariableBaseMSM};
use ark_ed_on_bls12_377::{EdwardsConfig, EdwardsProjective};
use ark_ff::Zero;
use ark_serialize::{CanonicalSerialize, Compress};
use sp_std::vec::Vec;

/// Compute a multi scalar multiplication on G! through arkworks
Expand Down
4 changes: 1 addition & 3 deletions primitives/arkworks/src/ed_on_bls12_381.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,9 @@
use crate::utils::{deserialize_iter_to_vec, serialize_result};
use ark_ec::{
models::CurveConfig, short_weierstrass::Affine as SWAffine,
twisted_edwards::Affine as TEAffine, AffineRepr, Group, VariableBaseMSM,
twisted_edwards::Affine as TEAffine, VariableBaseMSM,
};
use ark_ed_on_bls12_381::{EdwardsProjective, JubjubConfig, SWProjective};
use ark_ff::Zero;
use ark_serialize::{CanonicalSerialize, Compress};
use sp_std::vec::Vec;

/// Compute a multi scalar multiplication on G! through arkworks
Expand Down
30 changes: 4 additions & 26 deletions primitives/arkworks/src/utils.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use crate::PairingError;
use ark_ec::{
pairing::{MillerLoopOutput, Pairing},
AffineRepr, Group,
AffineRepr,
};
use ark_ff::Zero;
use ark_serialize::{
Expand All @@ -21,37 +21,15 @@ pub fn deserialize_argument<Field: CanonicalDeserialize>(argument: &Vec<u8>) ->
Field::deserialize_with_mode(cursor, Compress::No, Validate::No).unwrap()
}

pub fn serialize_iter_to_vec<T>(
iter: impl IntoIterator<Item = T>,
) -> Result<Vec<u8>, SerializationError>
where
T: CanonicalSerialize + Sized + Zero,
{
let iter = iter.into_iter();
let element_size = T::zero().uncompressed_size();
let length: usize =
iter.size_hint().0.try_into().map_err(|_| SerializationError::InvalidData)?;
let mut w = Cursor::new(Vec::with_capacity(8 + element_size * length));
length.serialize_uncompressed(&mut w)?;
let mut length = 0u32;
for elem in iter {
elem.serialize_uncompressed(&mut w)?;
length += 1;
}
let result = w.into_inner();
// elem.serialize_uncompressed::<&mut &mut T>(&mut result.as_mut())?;
Ok(result)
}

pub fn deserialize_iter_to_vec<T>(mut bytes: &[u8]) -> Result<Vec<T>, SerializationError>
pub fn deserialize_iter_to_vec<T>(bytes: &[u8]) -> Result<Vec<T>, SerializationError>
where
T: CanonicalDeserialize + Sized,
{
let cursor = Cursor::new(bytes.to_vec());
let mut cursor = Cursor::new(bytes.to_vec());
let length = u32::deserialize_uncompressed_unchecked(cursor.clone())?;
let mut result = Vec::with_capacity(length as usize);
for _ in 0..length {
result.push(T::deserialize_uncompressed_unchecked(cursor.clone())?);
result.push(T::deserialize_uncompressed_unchecked(&mut cursor)?);
}
Ok(result)
}
Expand Down

0 comments on commit eef4c77

Please sign in to comment.