Commit graph

2267 commits

Author SHA1 Message Date
Michael Rosenberg
474c272945
Removed "nightly" from default features 2019-02-03 11:13:50 -05:00
Henry de Valence
ff0dc4a3db Merge branch 'master' into develop 2019-01-27 23:19:44 -08:00
Henry de Valence
4bdccd7b7c Merge branch 'release/1.0.3' 2019-01-27 23:18:35 -08:00
Henry de Valence
9cd4551b40 Bump patch version 2019-01-27 23:17:27 -08:00
Henry de Valence
33e7d26513 Merge branch 'add-compressed-cteq-impls' into release/1.0.3 2019-01-27 23:16:48 -08:00
Henry de Valence
5ddc30061c Implement ConstantTimeEq on compressed points. 2019-01-27 23:13:58 -08:00
Nicolas Stalder
1dfe00b79d Fix rand dependency, deal with unusedness warnings 2019-01-27 03:06:18 +01:00
Philippe Dugre
1d23a1d30d Added doc example for x25519() 2019-01-25 17:08:48 -05:00
Henry de Valence
6d7d94372e
Merge pull request #227 from isislovecruft/fix/weird-pub
I found a weird pub, not the kind you get cidre in.
2019-01-24 14:12:10 -08:00
Isis Lovecruft
0d23260a75
I found a weird pub, not the kind you get cidre in. 2019-01-24 21:36:00 +00:00
Henry de Valence
8e276b9e5a Merge branch 'master' into develop 2019-01-22 14:17:23 -08:00
Henry de Valence
8b0306252a Merge branch 'release/0.4.4' 2019-01-22 14:17:11 -08:00
Henry de Valence
bcc6383d9a Bump version number 2019-01-22 14:15:14 -08:00
Henry de Valence
759d35b8c4
Merge pull request #29 from dalek-cryptography/as_bytes_for_ephemeral_public
Add EphemeralPublic::as_bytes
2019-01-22 14:14:27 -08:00
Henry de Valence
1117184a02 Add EphemeralPublic::as_bytes 2019-01-22 14:11:44 -08:00
Henry de Valence
314041b277
Merge pull request #28 from dalek-cryptography/docs-hotfix
Docs hotfix: disable KaTeX in docs.rs
2019-01-22 14:08:48 -08:00
Henry de Valence
9e553688c3 Docs hotfix: disable KaTeX in docs.rs 2019-01-22 14:03:00 -08:00
Henry de Valence
8e5062521f
Merge pull request #225 from isislovecruft/fix/invsqrt-doc-typos
Fix two typos in FieldElement::invsqrt documentation
2019-01-21 18:50:14 -08:00
Isis Lovecruft
4270d4ff5f
Fix two typos in FieldElement::invsqrt documentation. 2019-01-22 01:01:08 +00:00
Henry de Valence
353e3fe81a
Merge pull request #215 from hdevalence/ifma
Restructure vector backends and add a new IFMA backend
2019-01-19 21:51:13 -08:00
Isis Lovecruft
1249fcccee
Merge branch 'master' into develop 2019-01-20 00:49:49 +00:00
Isis Lovecruft
f9c9c5e558
Merge branch 'release/0.4.3' 2019-01-20 00:49:42 +00:00
Isis Lovecruft
ee359f6100
Bump x25519-dalek version to 0.4.3. 2019-01-20 00:45:31 +00:00
isis agora lovecruft
e61b620059
Merge pull request #24 from isislovecruft/fix/23-katex-header
Fix link to now-missing katex header.
2019-01-20 00:43:34 +00:00
Henry de Valence
e3ca8961fc Fix rustdoc feature flags to compile on stable. 2019-01-18 14:19:39 -08:00
Henry de Valence
9ddbf1ba83 Add notes on the IFMA implementation. 2019-01-18 14:19:39 -08:00
Henry de Valence
dc8431429f Refactor documentation to use doc_cfg. 2019-01-18 14:19:39 -08:00
Henry de Valence
5700add507 Clean up warnings. 2019-01-18 14:19:30 -08:00
Henry de Valence
fa42708257 Change naming scheme for multiplication accumulators. 2019-01-18 14:19:30 -08:00
Henry de Valence
a84f9eafe4 Allow non_snake_case in the IFMA field and edwards modules. 2019-01-18 14:19:30 -08:00
Henry de Valence
06766bfdea Delay shuffles that cross the "Great Wall of Intel". 2019-01-18 14:19:30 -08:00
Henry de Valence
33aa544cf4 Add IFMA constants file. 2019-01-18 14:19:30 -08:00
Henry de Valence
f825426ff4 Add impl Default, Identity for ExtendedPoint, CachedPoint. 2019-01-18 14:19:30 -08:00
Henry de Valence
da62569355 Add lookup table support. 2019-01-18 14:19:30 -08:00
Henry de Valence
6cec313f16 Add impl of Sub and Neg for Edwards points. 2019-01-18 14:19:30 -08:00
Henry de Valence
6faaef21df Add mul_by_pow_2 for IFMA 2019-01-18 14:19:30 -08:00
Henry de Valence
8e38ff2859 Add Edwards doubling implementation. 2019-01-18 14:19:30 -08:00
Henry de Valence
c4617b28a9 Add squaring implementation. 2019-01-18 14:19:30 -08:00
Henry de Valence
a62571b003 Reduce field elements during conversion to vector form.
The IFMA types have tighter bounds than the u64 types.
2019-01-18 14:19:30 -08:00
Henry de Valence
3f21bb3b58 Add skeleton of parallel Edwards formulas. 2019-01-18 14:19:30 -08:00
Henry de Valence
5880fced2b Add skeleton of shuffle and blend functions. 2019-01-18 14:19:30 -08:00
Henry de Valence
d90bb779ca Delay all computations using x[0], y[0]
Since computation of the 0 term in reduction requires a multiplication with a
4-cycle latency, this ensures that the rest of the computation can start before
the 0 term is finished
2019-01-18 14:19:30 -08:00
Henry de Valence
c925c76342 Change the strategy for reducing the high half of the product. 2019-01-18 14:19:30 -08:00
Henry de Valence
607b839032 Change size of limbs in the reduction test. 2019-01-18 14:19:30 -08:00
Henry de Valence
14163131f9 Lift the reduction state of the field elements into the type system.
This splits the `FieldElement51x4` type into two types:

- `F51x4Reduced` (with reduced limbs)
- `F51x4Unreduced` (with unreduced limbs)

The reduction is implemented as a `From` impl to convert one type to the other.

The output of a multiplication is now a `F51x4Unreduced`.  The reason is that
the inputs to IFMA operations must be at most 52 bits, so it's not possible to
perform an addition of (51+epsilon)-bit values and still be small enough to be
used as an input to multiplication.  So, it doesn't make sense to perform a
reduction at the end of a multiplication, because the reduced values will be
fed into an addition or subtraction, which then needs to be re-reduced.
2019-01-18 14:19:30 -08:00
Henry de Valence
ff49673214 Add impl Mul<(u32, u32, u32, u32)> for FieldElement51x4. 2019-01-18 14:19:30 -08:00
Henry de Valence
70199d6094 Add impl Mul<FieldElement51x4> for FieldElement51x4. 2019-01-18 14:19:30 -08:00
Henry de Valence
aa73d7b1bc Add a FieldElement51x4 type. 2019-01-18 14:19:30 -08:00
Henry de Valence
3233e2eac6 Fix: cfg_target_feature is stable since 1.27. 2019-01-18 14:19:20 -08:00
Henry de Valence
be77af1cd8 Remove unnecessary feature gate.
The vector backend doesn't generate constants in build.rs, so this isn't necessary.
2019-01-18 14:18:55 -08:00