arnaucube
arnaucube/arkeddsaPublic Self-hosted repository
arkeddsa/src/signature.rs
src/signature.rsRaw
 1use ark_ec::twisted_edwards::Affine;
 2use ark_ec::twisted_edwards::TECurveConfig;
 3use ark_ec::CurveGroup;
 4use ark_serialize::CanonicalDeserialize;
 5use ark_serialize::CanonicalSerialize;
 6
 7/// `SignatureComponents` contains the realized parts of a signature
 8#[derive(Copy, Clone, Debug, PartialEq, CanonicalSerialize, CanonicalDeserialize)]
 9pub struct Signature<C: CurveGroup + Clone> {
10    pub r: C::Affine,
11    pub s: C::ScalarField,
12}
13
14impl<C: CurveGroup + Clone> Signature<C> {
15    /*
16    /// Serializes the signature components to bytes as uncompressed.
17    /// Expect output size to be `size_of(C::BaseField) * 2 + size_of(C::ScalarField)`
18    pub fn to_bytes(&self) -> Vec<u8> {
19        let mut bytes = Vec::new();
20        self.r.serialize_uncompressed(&mut bytes).unwrap();
21        self.s.serialize_uncompressed(&mut bytes).unwrap();
22        bytes
23    }
24
25    /// Checked deserialization of the signature components from bytes.
26    /// Expects input size to be `size_of(C::BaseField) * 2 + size_of(C::ScalarField)`
27    pub fn from_bytes(bytes: &[u8]) -> Result<Self, Box<dyn ark_std::error::Error>> {
28        let point_size = C::Affine::Config::serialized_size(ark_serialize::Compress::No);
29        (bytes.len() == 32 + C::Affine::Config::serialized_size(ark_serialize::Compress::No))
30            .then_some(true)
31            .ok_or(ark_serialize::SerializationError::InvalidData)?;
32
33        let off1 = point_size;
34        let off2 = off1 + 32;
35
36        let r = C::Affine::deserialize_uncompressed(&bytes[00..off1])?;
37        let s = C::ScalarField::deserialize_uncompressed(&bytes[off1..off2])?;
38        Ok(Signature { r, s })
39    }
40    */
41
42    pub fn new(r: C::Affine, s: C::ScalarField) -> Self {
43        Self { r, s }
44    }
45
46    pub fn r(&self) -> &C::Affine {
47        &self.r
48    }
49
50    pub fn s(&self) -> &C::ScalarField {
51        &self.s
52    }
53}