mirror of
https://github.com/arnaucube/arkeddsa.git
synced 2026-01-12 08:11:28 +01:00
derive ark-serde
This commit is contained in:
12
src/eddsa.rs
12
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);
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user