Commit graph

56 commits

Author SHA1 Message Date
Henry de Valence
c8e7e22ddf Remove unnecessary returns 2017-04-02 23:28:01 +02:00
Henry de Valence
73e172484c Add tick marks around code items in docs 2017-04-02 23:12:18 +02:00
Henry de Valence
2f5b9e198c Remove warnings from load3/load4 and load8 functions 2017-03-14 01:05:31 -07:00
Isis Lovecruft
6991b4264b
Merge remote-tracking branch 'hdevalence/feature/64bit-multiplication_r3' into develop 2017-03-14 04:23:11 +00:00
Isis Lovecruft
f6930997d2
Make #[feature(test)] depend on #[cfg(all(test, feature = "bench"))].
* FIXES Issue #38:
   https://github.com/isislovecruft/curve25519-dalek/pull/38
2017-03-14 01:59:08 +00:00
Isis Lovecruft
cb3b3144be
Remove prefix from field tests. 2017-03-14 01:11:54 +00:00
Isis Lovecruft
904911e2b8
Move field module benchmarks to separate module. 2017-03-14 01:11:03 +00:00
Henry de Valence
cf9f9aa402 Enable radix_51 on nightly 2017-03-13 17:04:37 -07:00
Henry de Valence
45cc82d258 Move multiply() into the Mul impl 2017-03-13 16:38:05 -07:00
Henry de Valence
f11c97e75c Remove obsolete test code 2017-03-13 16:38:05 -07:00
Henry de Valence
d2a51197d7 Add a carry-reduction during subtraction. 2017-03-13 16:38:05 -07:00
Henry de Valence
e1d3281c2d Add debug asserts for multiplication preconditions. 2017-03-13 16:38:05 -07:00
Henry de Valence
9524c079ee Reduce mod p in radix51 to_bytes 2017-03-13 16:38:05 -07:00
Henry de Valence
0fa8d8f4a7 Reduce to narrower range before to_bytes 2017-03-13 16:38:05 -07:00
Henry de Valence
24f11427a1 Add 2p to avoid underflows 2017-03-13 16:38:05 -07:00
Henry de Valence
a9cbca668b Implement squaring for radix51 2017-03-13 16:38:05 -07:00
Henry de Valence
df080411e0 Implement multiply() for radix51 2017-03-13 16:38:05 -07:00
Henry de Valence
d6465ccd5e Fix remaining compile errors for radix_51 2017-03-13 16:38:05 -07:00
Henry de Valence
147b9d90b8 Revert "Add radix51 impl of reduce"
This reverts commit 488e886d1e1b11400dedc6c41e7108e34c6747cc.
2017-03-13 16:38:05 -07:00
Henry de Valence
75baefabeb Stub remaining radix_51 functions with unimplemented!() 2017-03-13 16:38:05 -07:00
Henry de Valence
b515e43dfd Move to_bytes_64 to to_bytes for radix51 2017-03-13 16:38:05 -07:00
Henry de Valence
7591c74018 Add radix51 impl of reduce 2017-03-13 16:38:05 -07:00
Henry de Valence
08ac5a9068 Add radix51 impl of from_bytes 2017-03-13 16:38:05 -07:00
Henry de Valence
7f8b3fe594 Rename combine_coeffs to reduce 2017-03-13 16:38:05 -07:00
Henry de Valence
f16f5d1e73 Add minus_one for radix51 2017-03-13 16:38:05 -07:00
Henry de Valence
3eab4acbd8 Add p constant for subtraction 2017-03-13 16:38:05 -07:00
Henry de Valence
4ef22b679c Implement sub_assign for radix_51 2017-03-13 16:38:05 -07:00
Henry de Valence
87001f9d6e Add utility for extracting constants in the new repr 2017-03-13 16:38:05 -07:00
Henry de Valence
4db735ca44 Add subtraction stub 2017-03-13 16:38:05 -07:00
Henry de Valence
eb66088cb9 Add to/from bytes for radix 51 2017-03-13 16:38:05 -07:00
Henry de Valence
afd42a4628 More feature-gating 2017-03-13 16:38:05 -07:00
Henry de Valence
a884260341 Add radix_51 and radix_25_5 features and start feature-gating 2017-03-13 16:38:05 -07:00
Henry de Valence
3a55a2f410 Add a test for radix-51 multiplication 2017-03-13 16:36:32 -07:00
Henry de Valence
92bf47f990 Clean up field tests 2017-03-13 16:36:32 -07:00
Henry de Valence
97b60d61ab draft of 64-bit multiplication 2017-03-13 16:36:32 -07:00
Isis Lovecruft
1f871ea0a0
Obsessive whitespace fix. 2017-03-10 02:36:01 +00:00
Henry de Valence
45fbcb45f6 First notes and code on Montgomery conversion 2017-02-27 13:41:50 -08:00
Henry de Valence
d450659b7f Rewrite CompressedEdwardsY::decompress() to use FieldElement::sqrt_ratio 2017-02-22 20:59:51 -08:00
Henry de Valence
1febf3f753 Add an invsqrt_ratio function. 2017-02-22 20:59:50 -08:00
Henry de Valence
a202f36916 Rewrite invsqrt to avoid using an Option type. 2017-02-22 16:24:11 -08:00
Henry de Valence
a415caa9fb Add a seperate invsqrt function.
This code isn't constant-time, but maybe should be.  However that would
prevent a bunch of nice things (e.g., Option types).  Probably good to
think about this.
2017-02-21 13:38:58 -08:00
Henry de Valence
ee5958c407 Add is_[non]negative_decaf functions.
Computes whether a point is nonnegative in the same way as Mike Hamburg's code.
2017-02-21 13:37:50 -08:00
Henry de Valence
3fc5f75300 Rename is_negative to is_negative_ed25519 2017-02-21 13:23:57 -08:00
Henry de Valence
cb4ff3097c Add FieldElement::is_zero() 2017-02-21 13:23:10 -08:00
Isis Lovecruft
e4d041836e
Move load3 and load4 to new utils module and remove #[allow(dead_code)]. 2017-02-21 06:15:08 +00:00
Isis Lovecruft
6f67a7d716
Rename util module to subtle.
* CHANGE subtle module documentation slightly to clarify the module's purpose.
 * FIXES issue #25.
2017-02-21 06:01:22 +00:00
Isis Lovecruft
b1afdf5204
Implement CTEq for FieldElement. 2017-02-21 05:44:35 +00:00
Isis Lovecruft
51f59565f5
Typo fix; Negateable → Negatable.
* Fixup on #22.
2017-02-21 04:15:15 +00:00
Henry de Valence
8a1c13ef49 Make a CTNegateable trait with a generic impl for better ergonomics 2017-02-20 15:30:59 -08:00
Henry de Valence
5f4de0074d Add a conditional negation function. 2017-02-20 15:30:59 -08:00