Merge branch 'release/0.4.1'

This commit is contained in:
Isis Lovecruft 2017-08-16 02:33:13 +00:00
commit 2d7dfc919d
Failed to extract signature
2 changed files with 11 additions and 9 deletions

View file

@ -1,6 +1,6 @@
[package] [package]
name = "ed25519-dalek" name = "ed25519-dalek"
version = "0.4.0" version = "0.4.1"
authors = ["Isis Lovecruft <isis@torproject.org>"] authors = ["Isis Lovecruft <isis@torproject.org>"]
readme = "README.md" readme = "README.md"
license = "CC0-1.0" license = "CC0-1.0"
@ -16,10 +16,10 @@ exclude = [ ".gitignore", "TESTVECTORS", "res/*" ]
travis-ci = { repository = "isislovecruft/ed25519-dalek", branch = "master"} travis-ci = { repository = "isislovecruft/ed25519-dalek", branch = "master"}
[dependencies] [dependencies]
arrayref = "0.3.3" arrayref = "0.3.4"
[dependencies.curve25519-dalek] [dependencies.curve25519-dalek]
version = "^0.10" version = "^0.11"
default-features = false default-features = false
[dependencies.subtle] [dependencies.subtle]

View file

@ -24,8 +24,8 @@ use digest::FixedOutput;
use generic_array::typenum::U64; use generic_array::typenum::U64;
use curve25519_dalek::constants; use curve25519_dalek::constants;
use curve25519_dalek::curve::CompressedEdwardsY; use curve25519_dalek::edwards::CompressedEdwardsY;
use curve25519_dalek::curve::ExtendedPoint; use curve25519_dalek::edwards::ExtendedPoint;
use curve25519_dalek::scalar::Scalar; use curve25519_dalek::scalar::Scalar;
use subtle::slices_equal; use subtle::slices_equal;
@ -298,7 +298,7 @@ impl PublicKey {
digest[31] &= 127; digest[31] &= 127;
digest[31] |= 64; digest[31] |= 64;
pk = (&Scalar(*digest) * &constants::ED25519_BASEPOINT).compress_edwards().to_bytes(); pk = (&Scalar(*digest) * &constants::ED25519_BASEPOINT_TABLE).compress_edwards().to_bytes();
PublicKey(CompressedEdwardsY(pk)) PublicKey(CompressedEdwardsY(pk))
} }
@ -312,6 +312,8 @@ impl PublicKey {
pub fn verify<D>(&self, message: &[u8], signature: &Signature) -> bool pub fn verify<D>(&self, message: &[u8], signature: &Signature) -> bool
where D: Digest<OutputSize = U64> + Default { where D: Digest<OutputSize = U64> + Default {
use curve25519_dalek::edwards::vartime;
let mut h: D = D::default(); let mut h: D = D::default();
let mut a: ExtendedPoint; let mut a: ExtendedPoint;
let ao: Option<ExtendedPoint>; let ao: Option<ExtendedPoint>;
@ -341,7 +343,7 @@ impl PublicKey {
let digest_bytes = h.fixed_result(); let digest_bytes = h.fixed_result();
digest = *array_ref!(digest_bytes, 0, 64); digest = *array_ref!(digest_bytes, 0, 64);
digest_reduced = Scalar::reduce(&digest); digest_reduced = Scalar::reduce(&digest);
r = &(&digest_reduced * &a) + &(&Scalar(*top_half) * &constants::ED25519_BASEPOINT); r = vartime::double_scalar_mult_basepoint(&digest_reduced, &a, &Scalar(*top_half));
if slices_equal(bottom_half, &r.compress_edwards().to_bytes()) == 1 { if slices_equal(bottom_half, &r.compress_edwards().to_bytes()) == 1 {
return true return true
@ -459,7 +461,7 @@ impl Keypair {
mesg_digest = Scalar::reduce(&hash); mesg_digest = Scalar::reduce(&hash);
r = &mesg_digest * &constants::ED25519_BASEPOINT; r = &mesg_digest * &constants::ED25519_BASEPOINT_TABLE;
h = D::default(); h = D::default();
h.input(&r.compress_edwards().to_bytes()[..]); h.input(&r.compress_edwards().to_bytes()[..]);
@ -491,7 +493,7 @@ mod test {
use std::fs::File; use std::fs::File;
use std::string::String; use std::string::String;
use std::vec::Vec; use std::vec::Vec;
use curve25519_dalek::curve::ExtendedPoint; use curve25519_dalek::edwards::ExtendedPoint;
use rand::OsRng; use rand::OsRng;
use rustc_serialize::hex::FromHex; use rustc_serialize::hex::FromHex;
use sha2::Sha512; use sha2::Sha512;