mirror of
https://github.com/saymrwulf/risc0-curve25519-dalek-source.git
synced 2026-09-04 20:03:40 +00:00
Merge branch 'feature/update-curve25519-dalek-0.17' into develop
This commit is contained in:
commit
44b3a32598
4 changed files with 27 additions and 19 deletions
|
|
@ -17,7 +17,7 @@ matrix:
|
|||
- rust: nightly
|
||||
env: TEST_COMMAND=test FEATURES=--features="serde"
|
||||
- rust: nightly
|
||||
env: TEST_COMMAND=build FEATURES=--no-default-features
|
||||
env: TEST_COMMAND=build FEATURES="--no-default-features --features=u32_backend"
|
||||
- rust: nightly
|
||||
env: TEST_COMMAND=test FEATURES=--features="nightly"
|
||||
- rust: nightly
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ exclude = [ ".gitignore", "TESTVECTORS", "res/*" ]
|
|||
travis-ci = { repository = "dalek-cryptography/ed25519-dalek", branch = "master"}
|
||||
|
||||
[dependencies.curve25519-dalek]
|
||||
version = "0.16"
|
||||
version = "0.17"
|
||||
default-features = false
|
||||
|
||||
[dependencies.subtle]
|
||||
|
|
@ -25,7 +25,7 @@ default-features = false
|
|||
|
||||
[dependencies.rand]
|
||||
optional = true
|
||||
version = "0.4"
|
||||
version = "0.5.0-pre.2"
|
||||
|
||||
[dependencies.digest]
|
||||
version = "^0.7"
|
||||
|
|
@ -52,9 +52,12 @@ sha2 = "^0.7"
|
|||
bincode = "^0.9"
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
default = ["std", "u64_backend"]
|
||||
std = ["rand", "subtle/std", "curve25519-dalek/std", "failure/std"]
|
||||
bench = []
|
||||
nightly = ["curve25519-dalek/nightly", "subtle/nightly"]
|
||||
asm = ["sha2/asm"]
|
||||
yolocrypto = ["curve25519-dalek/yolocrypto"]
|
||||
u64_backend = ["curve25519-dalek/u64_backend"]
|
||||
u32_backend = ["curve25519-dalek/u32_backend"]
|
||||
avx2_backend = ["curve25519-dalek/avx2_backend"]
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@
|
|||
|
||||
use core::fmt::{Debug};
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
use rand::CryptoRng;
|
||||
#[cfg(feature = "std")]
|
||||
use rand::Rng;
|
||||
|
||||
|
|
@ -310,7 +312,9 @@ impl SecretKey {
|
|||
/// from `rand::OsRng::new()` (in the `rand` crate).
|
||||
///
|
||||
#[cfg(feature = "std")]
|
||||
pub fn generate(csprng: &mut Rng) -> SecretKey {
|
||||
pub fn generate<T>(csprng: &mut T) -> SecretKey
|
||||
where T: CryptoRng + Rng,
|
||||
{
|
||||
let mut sk: SecretKey = SecretKey([0u8; 32]);
|
||||
|
||||
csprng.fill_bytes(&mut sk.0);
|
||||
|
|
@ -723,8 +727,6 @@ impl PublicKey {
|
|||
pub fn verify<D>(&self, message: &[u8], signature: &Signature) -> bool
|
||||
where D: Digest<OutputSize = U64> + Default
|
||||
{
|
||||
use curve25519_dalek::edwards::vartime;
|
||||
|
||||
let mut h: D = D::default();
|
||||
let mut a: EdwardsPoint;
|
||||
let ao: Option<EdwardsPoint>;
|
||||
|
|
@ -746,7 +748,8 @@ impl PublicKey {
|
|||
digest.copy_from_slice(h.fixed_result().as_slice());
|
||||
|
||||
let digest_reduced: Scalar = Scalar::from_bytes_mod_order_wide(&digest);
|
||||
let r: EdwardsPoint = vartime::double_scalar_mul_basepoint(&digest_reduced, &a, &signature.s);
|
||||
let r: EdwardsPoint = EdwardsPoint::vartime_double_scalar_mul_basepoint(&digest_reduced,
|
||||
&a, &signature.s);
|
||||
|
||||
(signature.r.as_bytes()).ct_eq(r.compress().as_bytes()).unwrap_u8() == 1
|
||||
}
|
||||
|
|
@ -856,7 +859,7 @@ impl Keypair {
|
|||
/// use ed25519_dalek::Signature;
|
||||
///
|
||||
/// let mut cspring: OsRng = OsRng::new().unwrap();
|
||||
/// let keypair: Keypair = Keypair::generate::<Sha512>(&mut cspring);
|
||||
/// let keypair: Keypair = Keypair::generate::<Sha512, OsRng>(&mut cspring);
|
||||
///
|
||||
/// # }
|
||||
/// ```
|
||||
|
|
@ -872,8 +875,10 @@ impl Keypair {
|
|||
/// which is available with `use sha2::Sha512` as in the example above.
|
||||
/// Other suitable hash functions include Keccak-512 and Blake2b-512.
|
||||
#[cfg(feature = "std")]
|
||||
pub fn generate<D>(csprng: &mut Rng) -> Keypair
|
||||
where D: Digest<OutputSize = U64> + Default {
|
||||
pub fn generate<D, R>(csprng: &mut R) -> Keypair
|
||||
where D: Digest<OutputSize = U64> + Default,
|
||||
R: CryptoRng + Rng,
|
||||
{
|
||||
let sk: SecretKey = SecretKey::generate(csprng);
|
||||
let pk: PublicKey = PublicKey::from_secret::<D>(&sk);
|
||||
|
||||
|
|
@ -981,7 +986,7 @@ mod test {
|
|||
|
||||
// from_bytes() fails if vx²-u=0 and vx²+u=0
|
||||
loop {
|
||||
keypair = Keypair::generate::<Sha512>(&mut cspring);
|
||||
keypair = Keypair::generate::<Sha512, OsRng>(&mut cspring);
|
||||
x = keypair.public.decompress();
|
||||
|
||||
if x.is_some() {
|
||||
|
|
@ -1005,7 +1010,7 @@ mod test {
|
|||
let bad: &[u8] = "wrong message".as_bytes();
|
||||
|
||||
cspring = OsRng::new().unwrap();
|
||||
keypair = Keypair::generate::<Sha512>(&mut cspring);
|
||||
keypair = Keypair::generate::<Sha512, OsRng>(&mut cspring);
|
||||
good_sig = keypair.sign::<Sha512>(&good);
|
||||
bad_sig = keypair.sign::<Sha512>(&bad);
|
||||
|
||||
|
|
|
|||
12
src/lib.rs
12
src/lib.rs
|
|
@ -32,7 +32,7 @@
|
|||
//! use ed25519_dalek::Signature;
|
||||
//!
|
||||
//! let mut cspring: OsRng = OsRng::new().unwrap();
|
||||
//! let keypair: Keypair = Keypair::generate::<Sha512>(&mut cspring);
|
||||
//! let keypair: Keypair = Keypair::generate::<Sha512, OsRng>(&mut cspring);
|
||||
//! # }
|
||||
//! ```
|
||||
//!
|
||||
|
|
@ -49,7 +49,7 @@
|
|||
//! # use ed25519_dalek::Keypair;
|
||||
//! # use ed25519_dalek::Signature;
|
||||
//! # let mut cspring: OsRng = OsRng::new().unwrap();
|
||||
//! # let keypair: Keypair = Keypair::generate::<Sha512>(&mut cspring);
|
||||
//! # let keypair: Keypair = Keypair::generate::<Sha512, OsRng>(&mut cspring);
|
||||
//! let message: &[u8] = "This is a test of the tsunami alert system.".as_bytes();
|
||||
//! let signature: Signature = keypair.sign::<Sha512>(message);
|
||||
//! # }
|
||||
|
|
@ -69,7 +69,7 @@
|
|||
//! # use ed25519_dalek::Keypair;
|
||||
//! # use ed25519_dalek::Signature;
|
||||
//! # let mut cspring: OsRng = OsRng::new().unwrap();
|
||||
//! # let keypair: Keypair = Keypair::generate::<Sha512>(&mut cspring);
|
||||
//! # let keypair: Keypair = Keypair::generate::<Sha512, OsRng>(&mut cspring);
|
||||
//! # let message: &[u8] = "This is a test of the tsunami alert system.".as_bytes();
|
||||
//! # let signature: Signature = keypair.sign::<Sha512>(message);
|
||||
//! let verified: bool = keypair.verify::<Sha512>(message, &signature);
|
||||
|
|
@ -93,7 +93,7 @@
|
|||
//! # use ed25519_dalek::Signature;
|
||||
//! use ed25519_dalek::PublicKey;
|
||||
//! # let mut cspring: OsRng = OsRng::new().unwrap();
|
||||
//! # let keypair: Keypair = Keypair::generate::<Sha512>(&mut cspring);
|
||||
//! # let keypair: Keypair = Keypair::generate::<Sha512, OsRng>(&mut cspring);
|
||||
//! # let message: &[u8] = "This is a test of the tsunami alert system.".as_bytes();
|
||||
//! # let signature: Signature = keypair.sign::<Sha512>(message);
|
||||
//!
|
||||
|
|
@ -122,7 +122,7 @@
|
|||
//! # use ed25519_dalek::{Keypair, Signature, PublicKey};
|
||||
//! use ed25519_dalek::{PUBLIC_KEY_LENGTH, SECRET_KEY_LENGTH, KEYPAIR_LENGTH, SIGNATURE_LENGTH};
|
||||
//! # let mut cspring: OsRng = OsRng::new().unwrap();
|
||||
//! # let keypair: Keypair = Keypair::generate::<Sha512>(&mut cspring);
|
||||
//! # let keypair: Keypair = Keypair::generate::<Sha512, OsRng>(&mut cspring);
|
||||
//! # let message: &[u8] = "This is a test of the tsunami alert system.".as_bytes();
|
||||
//! # let signature: Signature = keypair.sign::<Sha512>(message);
|
||||
//! # let public_key: PublicKey = keypair.public;
|
||||
|
|
@ -147,7 +147,7 @@
|
|||
//! # use ed25519_dalek::{PUBLIC_KEY_LENGTH, SECRET_KEY_LENGTH, KEYPAIR_LENGTH, SIGNATURE_LENGTH};
|
||||
//! # fn do_test() -> Result<(SecretKey, PublicKey, Keypair, Signature), DecodingError> {
|
||||
//! # let mut cspring: OsRng = OsRng::new().unwrap();
|
||||
//! # let keypair_orig: Keypair = Keypair::generate::<Sha512>(&mut cspring);
|
||||
//! # let keypair_orig: Keypair = Keypair::generate::<Sha512, OsRng>(&mut cspring);
|
||||
//! # let message: &[u8] = "This is a test of the tsunami alert system.".as_bytes();
|
||||
//! # let signature_orig: Signature = keypair_orig.sign::<Sha512>(message);
|
||||
//! # let public_key_bytes: [u8; PUBLIC_KEY_LENGTH] = keypair_orig.public.to_bytes();
|
||||
|
|
|
|||
Loading…
Reference in a new issue