From ab10e02c9f184ef38dcf1eb6b23f14c1ea50babf Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Wed, 9 Sep 2020 08:26:00 -0700 Subject: [PATCH] ecdsa: remove `Generate` trait Corresponding change for RustCrypto/traits#295. --- Cargo.lock | 2 +- ecdsa/src/dev/curve.rs | 9 --------- ecdsa/src/sign.rs | 23 ++++++++--------------- 3 files changed, 9 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 883f6252..e6dec566 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -90,7 +90,7 @@ dependencies = [ [[package]] name = "elliptic-curve" version = "0.5.0" -source = "git+https://github.com/RustCrypto/traits#548e11779ea85d411daa39214afcd7cc6c72c2b8" +source = "git+https://github.com/RustCrypto/traits#a866a23ab066bc89d000f0931dec9f915d6a8986" dependencies = [ "bitvec", "digest", diff --git a/ecdsa/src/dev/curve.rs b/ecdsa/src/dev/curve.rs index 0a42d683..e8fc0406 100644 --- a/ecdsa/src/dev/curve.rs +++ b/ecdsa/src/dev/curve.rs @@ -12,7 +12,6 @@ use elliptic_curve::{ digest::Digest, ff::{Field, PrimeField}, group, - ops::Invert, point::Generator, rand_core::RngCore, scalar::ScalarBits, @@ -317,14 +316,6 @@ impl FromDigest for Scalar { } } -impl Invert for Scalar { - type Output = Self; - - fn invert(&self) -> CtOption { - unimplemented!(); - } -} - impl Zeroize for Scalar { fn zeroize(&mut self) { self.0.as_mut().zeroize() diff --git a/ecdsa/src/sign.rs b/ecdsa/src/sign.rs index a70bd5d4..f05e745a 100644 --- a/ecdsa/src/sign.rs +++ b/ecdsa/src/sign.rs @@ -12,7 +12,7 @@ use crate::{ use core::convert::TryInto; use elliptic_curve::{ generic_array::ArrayLength, ops::Invert, scalar::NonZeroScalar, weierstrass::Curve, - zeroize::Zeroize, Arithmetic, ElementBytes, FromBytes, FromDigest, Generate, SecretKey, + zeroize::Zeroize, Arithmetic, ElementBytes, FromBytes, FromDigest, SecretKey, }; use signature::{ digest::{BlockInput, Digest, FixedOutput, Reset, Update}, @@ -39,6 +39,13 @@ where C::Scalar: FromDigest + Invert + SignPrimitive + Zeroize, SignatureSize: ArrayLength, { + /// Generate a cryptographically random [`SigningKey`]. + pub fn random(rng: impl CryptoRng + RngCore) -> Self { + Self { + secret_scalar: NonZeroScalar::random(rng), + } + } + /// Initialize signing key from a raw scalar serialized as a byte slice. // TODO(tarcieri): PKCS#8 support pub fn new(bytes: &[u8]) -> Result { @@ -71,20 +78,6 @@ where } } -impl Generate for SigningKey -where - C: Curve + Arithmetic, - C::Scalar: FromDigest + Invert + SignPrimitive + Zeroize, - NonZeroScalar: Generate, - SignatureSize: ArrayLength, -{ - fn generate(rng: impl CryptoRng + RngCore) -> Self { - Self { - secret_scalar: NonZeroScalar::generate(rng), - } - } -} - impl DigestSigner> for SigningKey where C: Curve + Arithmetic,