From 98e25631631059ded2d8f36c115167a8f54a28b6 Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Tue, 28 Jul 2020 10:03:22 -0700 Subject: [PATCH] ecdsa: make SignPrimitive's ephemeral scalar generic ...and remove masking scalar. This API allows the inversion masking process to be handled outside of the ECDSA implementation itself (potentially generically in a way that can work across elliptic curves). --- Cargo.lock | 2 +- ecdsa/src/hazmat.rs | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 60912e27..9a2e1b65 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -45,7 +45,7 @@ dependencies = [ [[package]] name = "elliptic-curve" version = "0.5.0-pre" -source = "git+https://github.com/RustCrypto/traits#3fd8ac7fa787cfbea275306fab011a592206b1b2" +source = "git+https://github.com/RustCrypto/traits#f8a916bbcff07aece243db24f17f663d4077baba" dependencies = [ "generic-array", "subtle", diff --git a/ecdsa/src/hazmat.rs b/ecdsa/src/hazmat.rs index 0551c39f..66ed189b 100644 --- a/ecdsa/src/hazmat.rs +++ b/ecdsa/src/hazmat.rs @@ -12,7 +12,9 @@ //! FULL PRIVATE KEY RECOVERY! use crate::{Signature, SignatureSize}; -use elliptic_curve::{generic_array::ArrayLength, weierstrass::Curve, Arithmetic, ScalarBytes}; +use elliptic_curve::{ + generic_array::ArrayLength, ops::Invert, weierstrass::Curve, Arithmetic, ScalarBytes, +}; use signature::Error; #[cfg(feature = "digest")] @@ -33,12 +35,10 @@ where /// Accepts the following arguments: /// /// - `ephemeral_scalar`: ECDSA `k` value (MUST BE UNIFORMLY RANDOM!!!) - /// - `masking_scalar`: optional blinding factor for sidechannel resistance /// - `hashed_msg`: prehashed message to be signed - fn try_sign_prehashed( + fn try_sign_prehashed + Invert>( &self, - ephemeral_scalar: &C::Scalar, - masking_scalar: Option<&C::Scalar>, + ephemeral_scalar: &K, hashed_msg: &ScalarBytes, ) -> Result, Error>; }