From b202a22826c1b96da43c2bd6f32baf5aa28686ec Mon Sep 17 00:00:00 2001 From: Henry de Valence Date: Tue, 3 Dec 2019 19:03:44 -0800 Subject: [PATCH] Unfortunately keygen can't be a From impl because coherence rules. --- src/secret_key.rs | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/src/secret_key.rs b/src/secret_key.rs index 5a913d7..811d763 100644 --- a/src/secret_key.rs +++ b/src/secret_key.rs @@ -33,24 +33,18 @@ impl From<[u8; 32]> for SecretKey { } } -/* -impl From for SecretKey -where - R: RngCore + CryptoRng, - T: SigType, -{ - fn from(mut rng: R) -> SecretKey { - let mut bytes = [0; 64]; - rng.fill_bytes(&mut bytes); - SecretKey { - sk: Scalar::from_bytes_wide(&bytes), - _marker: PhantomData, - } - } -} -*/ - impl SecretKey { + /// Generate a new secret key. + pub fn new(mut rng: R) -> SecretKey { + let sk = { + let mut bytes = [0; 64]; + rng.fill_bytes(&mut bytes); + Scalar::from_bytes_wide(&bytes) + }; + let pk = PublicKey::from_secret(&sk); + SecretKey { sk, pk } + } + /// Randomize this public key with the given `randomizer`. pub fn randomize(&self, randomizer: Randomizer) -> PublicKey { unimplemented!();