derive ark-serde

This commit is contained in:
kilic
2024-07-30 14:38:53 +03:00
parent 251918ba7f
commit 90bb17584b
2 changed files with 8 additions and 6 deletions

View File

@@ -8,6 +8,7 @@ use ark_ec::{
AffineRepr, AffineRepr,
}; };
use ark_ff::PrimeField; use ark_ff::PrimeField;
use ark_serialize::{CanonicalDeserialize, CanonicalSerialize};
use digest::Digest; use digest::Digest;
use digest::OutputSizeUser; use digest::OutputSizeUser;
use rand_core::CryptoRngCore; use rand_core::CryptoRngCore;
@@ -42,15 +43,11 @@ impl SecretKey {
} }
} }
#[derive(Copy, Clone, Debug)]
/// `PublicKey` is EdDSA signature verification key /// `PublicKey` is EdDSA signature verification key
#[derive(Copy, Clone, Debug, CanonicalSerialize, CanonicalDeserialize)]
pub struct PublicKey<TE: TECurveConfig>(Affine<TE>); pub struct PublicKey<TE: TECurveConfig>(Affine<TE>);
impl<TE: TECurveConfig> PublicKey<TE> { impl<TE: TECurveConfig> PublicKey<TE> {
pub fn point(&self) -> &Affine<TE> {
&self.0
}
pub fn xy(&self) -> (&TE::BaseField, &TE::BaseField) { pub fn xy(&self) -> (&TE::BaseField, &TE::BaseField) {
self.as_ref().xy().unwrap() self.as_ref().xy().unwrap()
} }
@@ -94,6 +91,11 @@ where
Ok(signing_key) Ok(signing_key)
} }
pub fn from_bytes<D: Digest>(bytes: [u8; 32]) -> Result<Self, Error> {
let secret_key = SecretKey::from_bytes(bytes);
Self::new::<D>(&secret_key)
}
pub fn generate<D: Digest>(rng: &mut impl CryptoRngCore) -> Result<Self, Error> { pub fn generate<D: Digest>(rng: &mut impl CryptoRngCore) -> Result<Self, Error> {
let mut secret_key = SecretKey([0; 32]); let mut secret_key = SecretKey([0; 32]);
rng.fill_bytes(&mut secret_key.0); rng.fill_bytes(&mut secret_key.0);

View File

@@ -3,8 +3,8 @@ use ark_ec::twisted_edwards::TECurveConfig;
use ark_serialize::CanonicalDeserialize; use ark_serialize::CanonicalDeserialize;
use ark_serialize::CanonicalSerialize; use ark_serialize::CanonicalSerialize;
#[derive(Clone, Copy, Debug)]
/// `SignatureComponents` contains the realized parts of a signature /// `SignatureComponents` contains the realized parts of a signature
#[derive(Copy, Clone, Debug, CanonicalSerialize, CanonicalDeserialize)]
pub struct Signature<TE: TECurveConfig + Clone> { pub struct Signature<TE: TECurveConfig + Clone> {
r: Affine<TE>, r: Affine<TE>,
s: TE::ScalarField, s: TE::ScalarField,