Browse Source

derive ark-serde

main
kilic 8 months ago
parent
commit
90bb17584b
2 changed files with 8 additions and 6 deletions
  1. +7
    -5
      src/eddsa.rs
  2. +1
    -1
      src/signature.rs

+ 7
- 5
src/eddsa.rs

@ -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);

+ 1
- 1
src/signature.rs

@ -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,

Loading…
Cancel
Save