Commit graph

81 commits

Author SHA1 Message Date
sun
0ea12f922e fix doc code 2018-08-24 11:27:15 +08:00
Isis Lovecruft
3ad616a23c
Remove unused csprng parameter from verify_batch() function. 2018-07-27 17:30:57 +00:00
Isis Lovecruft
e35323412d
Merge remote-tracking branch 'hdevalence/feature/27-batch' into develop 2018-07-27 17:24:37 +00:00
Henry de Valence
4c838decd8 Use 128-bit scalars 2018-07-26 21:09:52 -07:00
Henry de Valence
f60987dee5 Try optional_multiscalar_mul 2018-07-26 20:58:11 -07:00
Isis Lovecruft
318898fac1
Merge branch 'feature/drop-with-clear' into develop 2018-07-27 03:56:13 +00:00
Isis Lovecruft
a92a5b73a1
It's 2018 and nothing's gotten any better outside. 2018-07-27 03:48:37 +00:00
Isis Lovecruft
81a3d3298b
Leave a comment explaining why we derive Default. 2018-07-26 20:15:13 +00:00
Isis Lovecruft
6513d4980a
Implement Drop for secret key material using clear_on_drop. 2018-07-20 23:08:08 +00:00
Isis Lovecruft
d896886691
Overwrite secret key material with zeroes on drop. 2018-07-20 20:20:40 +00:00
Isis Lovecruft
ce46a12d92
Implement batch verification.
The API for this isn't the greatest and I apologise for that.  Suggestions for
improvement welcome.  One thing which @hdevalence and I considered was to
change the function signature to:

    pub fn verify_batch<D, C, M, S, K>(messages: M,
                                       signatures: S,
                                       public_keys: K,
                                       csprng: &mut C) -> Result<(), SignatureError>
        where D: Digest<OutputSize = U64> + Default,
              C: Rng + CryptoRng,
              M: IntoIterator<Item = &[u8]>,
              S: IntoIterator,
              S::Item: Borrow<Signature>,
              K: IntoIterator,
              K::Item: Borrow<Signature>,

The other improvement which could be made is to implement 128-bit scalars for
the randomnesses.

 * CLOSES #27
2018-07-17 19:03:46 +00:00
Isis Lovecruft
b32e39c801
Fix match statements on public key decompression. 2018-07-15 22:21:32 +00:00
Isis Lovecruft
cdebf245cc
Merge branch 'feature/cleanup-sig-code' into develop 2018-07-15 22:13:37 +00:00
Isis Lovecruft
2e5363c679
Cleanup verification variable declarations. 2018-07-15 22:04:55 +00:00
Isis Lovecruft
cdbc302da7
Fix a couple docstrings which mentioned r instead of R. 2018-07-15 21:51:23 +00:00
Isis Lovecruft
5c26349b6c
Derive Eq, PartialEq for Signature. 2018-07-15 21:50:20 +00:00
Isis Lovecruft
80075a0b41
Cleanup signing code to use new dalek APIs and Rust syntax. 2018-07-15 21:41:44 +00:00
Henry de Valence
030eff547f Make verify return a Result.
This also simplifies the verification logic.  Because the verification check
happens in variable time, we don't need to do a constant-time eq check at the
end, so we can drop the `subtle` dependency entirely.

The `DecodingError` type becomes `SignatureError` and is also used to
signal failing verifications.
2018-07-15 13:07:58 -07:00
Isis Lovecruft
fad39851aa
Add doctests for sign_prehashed() and verify_prehashed(). 2018-07-13 23:07:07 +00:00
Isis Lovecruft
68d2ff93f5
Implement ed25519ph from RFC8032 §5.1.
* FIXES #21: https://github.com/dalek-cryptography/ed25519-dalek/issues/21
2018-07-13 23:06:39 +00:00
Isis Lovecruft
9d58954578
Avoid compressing R twice. 2018-07-12 21:47:52 +00:00
Isis Lovecruft
164303eeac
Switch to using criterion for benchmarks. 2018-07-11 22:46:32 +00:00
Isis Lovecruft
a7c318da6e
Fix benchmarks to use new rand_core traits. 2018-05-30 21:01:21 +00:00
Isis Lovecruft
47c1d869ec
Make key generation work with no_std. 2018-05-16 22:09:31 +00:00
Isis Lovecruft
f6a631c229
WIP Update curve25519-dalek dependency to 0.17. 2018-05-15 23:34:01 +00:00
Isis Lovecruft
f790bd2ce1
Update subtle and curve25519-dalek dependencies. 2018-03-26 02:13:39 +00:00
Isis Lovecruft
e648c641cc
Fix typo in benchmark variable name. 2018-02-02 22:17:01 +00:00
Isis Lovecruft
08a5fc34ae
Fix serde expecting() string for Keypair. 2018-01-26 22:19:55 +00:00
Isis Lovecruft
36399cb1ad
Merge remote-tracking branch 'chain/feature/pubkey_no_std' into develop 2018-01-20 02:51:02 +00:00
Isis Lovecruft
04c8574106
Bump versions for several dependencies. 2018-01-20 02:49:34 +00:00
Isis Lovecruft
c7b69c6562
Expand boats' error types to give more detailed reasons for failures.
This code was significantly based off without boats' error types in
commit 6c1acaca7c, and also upon
conversation with them.  Please target them with praise, and blame me
for whatever mistakes I might have made.
2017-12-24 00:16:52 +00:00
Oleg Andreev
f64b20b351 Do not require feature=std for PublicKey::from_secret 2017-12-12 15:41:39 -08:00
Isis Lovecruft
510a1f89c0
Merge remote-tracking branch 'withoutboats/custom-error-type' into develop 2017-12-09 02:12:39 +00:00
Without Boats
6c1acaca7c
Use failure instead of std::error::Error.
failure is no_std compatible, whereas std::error::Error is not.
2017-12-06 15:25:12 -08:00
Without Boats
b5b295e414
Use a custom error type instead of &'static str.
Advantages of a custom error type:

- It can be more easily integrated into other error types by clients;
  they can implement From<FromBytesError> for their error types, or
  they can use a library like failure.
- It is a zero-sized type, which can enable some representational
  optimizations.
- It can be easier and more stable to test for.
2017-12-05 18:13:43 -08:00
Isis Lovecruft
9d89e2f660
Upgrade to using curve25519-dalek-0.14.0. 2017-12-04 17:47:06 +00:00
Isis Lovecruft
65b7a21062
Make the Keypair struct inherit repr(C). 2017-12-04 00:50:39 +00:00
Isis Lovecruft
7888bfe3f8
Fix serde expecting string. 2017-12-04 00:50:17 +00:00
Isis Lovecruft
8d0dda0847
Implement serde serialisation support and pre-expanded secret keys.
* ADD support for serialisation with serde.
 * ADD a new pre-expanded secret key type, `ExpandedSecretKey`.
 * FIXES Issue #13:
   https://github.com/isislovecruft/ed25519-dalek/issues/13
2017-11-06 03:51:07 +00:00
Isis Lovecruft
e9cd9a2264
Changes for bumping curve25519-dalek dependency to 0.12.0. 2017-10-05 07:03:35 +00:00
Isis Lovecruft
3596e5ec87
Add licence. 2017-10-05 06:19:55 +00:00
Isis Lovecruft
e706b35d92
Merge remote-tracking branch 'greyspectrum/license-typo' into develop 2017-10-05 06:12:03 +00:00
Zaki Manian
8accff36b3
Replaces the depracted rustc_serialize with hex 2017-10-05 05:20:24 +00:00
greyspectrum
52ecf1669e Fix a small typo in the license url. 2017-09-06 13:31:52 -04:00
Isis Lovecruft
039533d349
Add additional benchmark for further comparison with ed25519-donna.
ed25519-donna includes a "curved25519_scalarmult_basepoint" [sic]
function. See https://github.com/isislovecruft/dalek-benchmarks.
2017-08-16 04:19:04 +00:00
Isis Lovecruft
07dc9f4ba7
Bump curve25519-dalek dependency to 0.11.0. 2017-08-15 05:30:53 +00:00
Isis Lovecruft
27753235ae
Upgrade curve25519-dalek, generic-array, and digest dependencies.
As well as adding a dependency on subtle and upgrading dev-dependency sha2.
2017-08-01 18:05:58 +00:00
Isis Lovecruft
df3834c03d
Change SecretKey bytes to only include the secret, not also public, key. 2017-08-01 06:23:46 +00:00
Isis Lovecruft
99d3426569
Refactor to use new curve25519-dalek APIs. 2017-05-14 10:57:59 +00:00
Isis Lovecruft
a195249468
Switch to using new digest v0.5 API. 2017-05-08 07:54:56 +00:00