Greg Fitzgerald
a3cfc7e294
Add AsRef instances for PublicKey and SecretKey
...
This just makes it a little easier to migrate to this library from
alternatives such as 'ring'.
2018-11-09 10:13:16 -07:00
Greg Fitzgerald
82948f0dd6
Fix serde doc tests
...
And let latest rustfmt reorder imports.
2018-11-09 10:12:32 -07:00
Isis Lovecruft
b97fa08900
Update curve25519-dalek dependency to 1.0.0-pre.0.
2018-11-06 01:40:21 +00:00
Henry de Valence
1e8b9f962b
Remove unused features
2018-09-26 11:38:41 -07:00
isis agora lovecruft
da8e609dc2
Merge pull request #36 from sunhuachuang/develop
...
fix doc code
2018-09-14 19:04:51 +00:00
Isis Lovecruft
49ebfa13de
Implement From<ExpandedSecretKey> for PublicKey.
...
* CLOSES https://github.com/dalek-cryptography/ed25519-dalek/issues/39
2018-09-14 18:28:16 +00:00
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
Isis Lovecruft
0e535a9318
The sha2 dependency is only for tests.
2017-03-15 22:34:46 +00:00
Isis Lovecruft
a6e74ba608
Use b"" instead of "".as_bytes().
2017-03-15 22:34:06 +00:00
Isis Lovecruft
054e9ce6b8
Remove blake2b benchmarks.
2017-03-15 19:09:15 +00:00
Isis Lovecruft
b188516b22
Remove unused import digest::Digest from bench module.
2017-03-15 19:07:21 +00:00
Isis Lovecruft
645d4e0d8c
The sha2 crate is no longer a required dependency.
2017-03-15 19:01:03 +00:00
Isis Lovecruft
89d246ec15
Rearrange extern crates.
2017-03-15 18:57:03 +00:00
Isis Lovecruft
e869d14387
Fix doctests to specify hash function choice.
2017-03-15 18:56:24 +00:00
Isis Lovecruft
394d1face2
Remove the ZeroDigest from the benchmark suite.
...
It turns out that testing scalar_mult_vartime() on all zeroes is fast.
2017-03-15 18:53:48 +00:00
Isis Lovecruft
5e84eedfbb
Add benchmarks with blake2b.
2017-03-15 18:44:59 +00:00
Isis Lovecruft
f1dd165208
Use array_ref! for getting digest during signing.
2017-03-15 18:42:58 +00:00
Isis Lovecruft
e4c085706c
Make signing generic to hash function choice.
2017-03-14 23:54:43 +00:00
Isis Lovecruft
aa6e0a4324
Benchmark signing/verifying blank messages.
2017-03-14 23:53:53 +00:00
Isis Lovecruft
1e2fa1025e
Implement a ZeroDigest for use in benchmarks.
2017-03-14 23:53:53 +00:00
Isis Lovecruft
03f20fdae3
ZeroRng in benchmarks doesn't need to be public.
2017-03-14 23:43:50 +00:00
Isis Lovecruft
b1105618e7
Make verification dependent on hash function.
2017-03-14 23:43:02 +00:00
Isis Lovecruft
b5531c1257
Remove test_ prefix from test functions.
2017-03-14 23:19:38 +00:00
Isis Lovecruft
4eaa1321ee
Feature gate rand on nightly.
...
We can't use features on non-nightly channels.
2017-03-14 23:15:59 +00:00
Isis Lovecruft
d00c3f9f3c
Make all the doctests actually run.
2017-03-14 21:50:17 +00:00
Isis Lovecruft
5a30f4eb0f
Make from_bytes() for keys public.
2017-03-14 21:49:07 +00:00
Isis Lovecruft
807d52f655
Refuse to compile if documentation is missing.
2017-03-14 21:39:28 +00:00
Isis Lovecruft
85b0cd933c
Split off benchmarks into separate module and require --features=bench.
...
This allows us to compile (and test) on the rustc stable and beta channels.
Benchmarking is only available on nightly, with the --features=bench flag.
2017-03-14 21:37:46 +00:00
Isis Lovecruft
304d591756
Make key generation generic to hash function choice.
2017-03-14 21:36:35 +00:00
Isis Lovecruft
4f1447314f
Bump curve25519-dalek version to ^0.6.
2017-03-14 20:16:20 +00:00
Isis Lovecruft
e2a649eddb
Add a missing use ed25519::Signature in a docstring example.
...
* THANKS to Tony Arcieri (@tarcieri) for pointing out the mistake.
2017-03-09 01:12:31 +00:00
Isis Lovecruft
d87930e7b7
Bump curve25519-dalek version to use 0.4.0.
2017-02-21 21:19:00 +00:00
Tony Arcieri
4f81231dc2
Add #![no_std]
...
Use ::core in lieu of ::std, allowing this crate to be usable in #![no_std]
environments.
Gates features that presently depend on ::std (presently just rand) behind a
"std" cargo feature, which is enabled by default.
Switches from the "rust-crypto" crate (which is not #![no_std] compatible) to
the sha2 crate, which is factored out of the original "rust-crypto" project
and being actively maintained.
2017-02-06 13:48:35 -08:00
Tony Arcieri
6269edb266
Update to curve25519-dalek v0.3.0
...
Changes `curve25519_dalek::curve::CompressedPoint` -> `CompressedEdwardsY`
2017-02-06 13:43:37 -08:00
Isis Lovecruft
50f53841bf
Ensure signatures match bytewise with reference and Go implementations.
2016-12-09 01:18:46 +00:00
Isis Lovecruft
b4bcc5e3b5
Remove an unused import.
2016-12-08 10:20:52 +00:00
Isis Lovecruft
d9ec8386da
Remove conversion to/from X25519 keys.
2016-12-08 10:19:34 +00:00
Isis Lovecruft
27ee13b6ef
Initial commit
2016-12-01 22:03:46 +00:00