Henry de Valence
640888198e
Eliminate a carry pass through tighter bounds checks
2017-12-14 14:17:34 -08:00
Isis Lovecruft
06d802b986
Merge remote-tracking branch 'hdevalence/feature/clear-memory' into develop
2017-12-13 00:13:17 +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
Henry de Valence
d6e93b6383
Merge branch 'feature/clear-memory_r2' into develop
2017-12-08 15:16:55 -08:00
Henry de Valence
a3f53c9134
Refactor select_precomputed_point into a LookupTable struct.
...
Originally this was for hygiene, so that we could erase points from
heap-allocated memory in multiscalar_mult, but it ends up providing a cleaner
API for scalar multiplication.
It's kept inside curve_models for now, but it could go somewhere else if that's a better place.
2017-12-07 12:46:57 -08:00
Henry de Valence
98a78d7a58
Clear scalar digits from memory in multiscalar_mult
2017-12-07 12:34:40 -08:00
Henry de Valence
d62fc7caf1
Rearrange signs to avoid a subtraction
2017-12-07 10:55:33 -08:00
Henry de Valence
1d39d2ec6e
Implement Default for internal point types
2017-12-06 17:30:19 -08: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
96246506c0
This is a breaking change.
2017-12-05 18:18:34 -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
Henry de Valence
7d2d87441b
Connect double_scalar_mult_basepoint to AVX2 backend
2017-12-04 11:05:24 -08:00
Henry de Valence
2c29d9a2ad
tweak docs
2017-12-04 10:37:37 -08:00
Henry de Valence
3814beeafe
Fix typo and add note on AVX512VL
2017-12-04 10:37:37 -08:00
Henry de Valence
fbd0e74357
Fix Cargo.toml to use upstream stdsimd
2017-12-04 10:37:37 -08:00
Henry de Valence
bf5e3581d2
Update AVX2 docs
2017-12-04 10:37:37 -08:00
Henry de Valence
1103c5c43a
Implement Sub by pre-negating the point
2017-12-04 10:37:37 -08:00
Henry de Valence
e3579995c0
Add double-base scalar vartime for AVX2
2017-12-04 10:37:37 -08:00
Henry de Valence
9213dc0bbb
Implement point subtraction
2017-12-04 10:37:37 -08:00
Henry de Valence
3094866442
Fix up after Scalar API changes
2017-12-04 10:37:37 -08:00
Henry de Valence
ba071f12aa
Write up notes on the AVX2 backend
2017-12-04 10:37:37 -08:00
Henry de Valence
3d435a1f4f
Fix up tests to use new Scalar API
2017-12-04 10:37:37 -08:00
Henry de Valence
b5305b4e30
Connect multiscalar_mult to the AVX2 backend
2017-12-04 10:37:37 -08:00
Henry de Valence
912fc5d412
Never build avx2 without avx2
2017-12-04 10:37:37 -08:00
Henry de Valence
97fe2f0bf4
Try to connect the AVX2 backend to the ExtendedPoint frontend
2017-12-04 10:37:37 -08:00
Henry de Valence
77766b3422
Add benchmark for conversion to avx2 format
2017-12-04 10:37:37 -08:00
Henry de Valence
208180dc72
Simplify mul, square implementations
2017-12-04 10:37:37 -08:00
Henry de Valence
f28635ab4e
Add a new 'avx2_backend' yolocrypto feature
2017-12-04 10:37:37 -08:00
Henry de Valence
841e0d5b64
Fix wrong feature for benchmarks
2017-12-04 10:37:37 -08:00
Henry de Valence
81ecef89ee
Connect AVX2 and u64 backends
2017-12-04 10:37:37 -08:00
Henry de Valence
ed24d1c5fa
Move AVX2 code into a backend
2017-12-04 10:37:37 -08:00
Henry de Valence
2b37a65d66
Remove debugging code
2017-12-04 10:37:37 -08:00
Henry de Valence
1ba7cb1e2c
Add stub implementations of multiscalar mult
2017-12-04 10:37:37 -08:00
Henry de Valence
7354b569bb
Add 32bit reduction code
2017-12-04 10:37:37 -08:00
Henry de Valence
e7ec5b3dd1
Add basepoint table code
2017-12-04 10:37:37 -08:00
Henry de Valence
34ae1b15e0
Add a squaring implementation
2017-12-04 10:37:37 -08:00
Henry de Valence
2f32f6355c
Add doubling skeleton and scalar mult
2017-12-04 10:37:37 -08:00
Henry de Valence
9e383ffccb
Add doubling test harness
2017-12-04 10:37:37 -08:00
Henry de Valence
e2a2b3a3b5
Add comment to mul draft
2017-12-04 10:37:37 -08:00
Henry de Valence
4f6788c72d
First working version
2017-12-04 10:37:37 -08:00
Henry de Valence
15b88be2d2
Add serial implementation of the algorithm and a test
2017-12-04 10:37:37 -08:00
Henry de Valence
51f04d7cce
first avx2 code
2017-12-04 10:37:37 -08:00
Henry de Valence
9422804e13
Merge remote-tracking branch 'origin/develop' into develop
2017-12-04 10:36:52 -08:00
Isis Lovecruft
9d89e2f660
Upgrade to using curve25519-dalek-0.14.0.
2017-12-04 17:47:06 +00:00
Isis Lovecruft
97750474bd
Merge branch 'master' into develop
2017-12-04 02:10:42 +00:00
Isis Lovecruft
251b1d591d
Merge branch 'release/0.14.0'
2017-12-04 02:10:25 +00:00
Isis Lovecruft
209854acc6
Bump curve25519-dalek version to 0.14.0.
2017-12-04 02:08:03 +00:00
Isis Lovecruft
c9912458b2
Merge branch 'fix/fuzzers' into develop
2017-12-04 01:25:05 +00:00
Isis Lovecruft
d3cf252637
Remove unused fuzz/ directory for now.
2017-12-04 01:21:46 +00:00