Isis Lovecruft
738049619b
Also make scalar multiplication with DecafPoints go both ways.
2017-05-09 02:04:22 +00:00
Isis Lovecruft
944e8e1649
Fix and allow some non-snakecased variables in scalar tests.
2017-05-09 00:05:11 +00:00
Isis Lovecruft
4da1d795a1
Make scalar multiplication go both ways.
...
Being able to do `P * s`, but not `s * P`, is slightly annoying, particularly
with longer equations when it is desired to be able to glance at the maths and
see that the code is the same.
Now either syntax is allowed.
2017-05-09 00:01:48 +00:00
Isis Lovecruft
9a9959061d
Merge remote-tracking branch 'hdevalence/feature/clippy-fixes' into develop
2017-05-06 00:16:09 +00:00
Isis Lovecruft
8f4114a211
Merge remote-tracking branch 'hdevalence/feature/streamable-hash-to-scalar' into develop
2017-05-05 23:52:59 +00:00
Henry de Valence
c18627f7c2
Generalize k_fold_scalar_mult
2017-05-04 00:02:29 -07:00
Henry & Isis
c6dc9d318d
Add a helper function to construct a Scalar from a u64
2017-05-03 19:32:31 -07:00
Henry de Valence
0ae0d2b72a
Add function to get the basepoint from a basepoint table
2017-05-03 19:32:30 -07:00
Henry de Valence
127169c151
Remove boxes
2017-05-03 19:32:30 -07:00
Henry de Valence
0678e619cc
Implement Mul for basepoint tables
2017-05-03 19:32:30 -07:00
Henry de Valence
59453d755d
Implement Mul for scalar multiplication
2017-05-03 19:32:30 -07:00
Henry & Isis
7cbb8dd94e
Merge branch 'feature/streamable-hash-to-scalar' into develop
2017-05-03 19:32:09 -07:00
Henry de Valence
a479b627a8
Add Decaf wrapper for k-fold vartime
2017-05-03 17:39:06 -07:00
Henry de Valence
5100ba4a07
Move variable time code into a module
2017-05-03 17:31:16 -07:00
Henry de Valence
68f74d9b22
Merge branch 'feature/vartime_k_fold_scalarmult' into feature/vartime-module
2017-05-03 16:27:43 -07:00
Henry de Valence
b05c897123
Implement operators for Scalars using multiply_add
2017-05-02 22:29:18 -07:00
Henry de Valence
91e11b6318
Change docstring to match the trait bound
2017-05-02 21:22:04 -07:00
Henry de Valence
6ea1d4dad2
Add an implementation of Scalar inversion
2017-04-28 22:59:56 -07:00
Henry de Valence
653f134bc7
Implement Mul, MulAssign, zero(), one() for UnpackedScalar
2017-04-28 22:57:17 -07:00
Henry de Valence
b5ccb42759
Rename lminus1 to l_minus_1
2017-04-28 22:54:00 -07:00
Henry de Valence
057c84abd5
Add a bits() function for scalars
2017-04-28 22:51:32 -07:00
Henry de Valence
60ad000609
Remove redundant &
2017-04-25 15:56:36 -07:00
Henry de Valence
cb656bafa7
Delete bytes_equal_less_than
...
This function is unused and untested. It's also incorrect, since the loop
32..0 iterates over an empty range. Remove it for now; if we need it later, it
still lives in the history.
2017-04-25 15:08:59 -07:00
Henry de Valence
57c96616b9
Remove unused import
2017-04-25 14:50:59 -07:00
Henry de Valence
e00cd114d7
Have radix 25.5 reduce() consume its argument
2017-04-02 23:46:01 +02:00
Henry de Valence
162dfc8331
Remove clones on Copy types
2017-04-02 23:45:34 +02:00
Henry de Valence
3705346afa
Remove unnecessary returns
2017-04-02 23:39:45 +02:00
Henry de Valence
7f4b96150d
Remove explicit lifetimes
2017-04-02 23:36:05 +02:00
Henry de Valence
c8e7e22ddf
Remove unnecessary returns
2017-04-02 23:28:01 +02:00
Henry de Valence
b3041f2adc
Remove unnecessary if statements
2017-04-02 23:27:38 +02:00
Henry de Valence
e74bf8e789
Remove unnecessary if statement
2017-04-02 23:15:26 +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
eca28fd3e8
Refactor Scalar::hash_from_bytes to allow streaming input to the hash.
2017-03-27 04:49:00 -07:00
Isis Lovecruft
5ebbd5dd86
Remove an XXX comment about using something better than array_ref!().
...
It turns out array_ref!() is probably the best way, or, at least, we're
already using it everywhere.
2017-03-17 21:42:58 +00:00
Isis Lovecruft
d549fdc8f9
Whitespace fixes.
2017-03-17 21:42:40 +00:00
Henry de Valence
2f5b9e198c
Remove warnings from load3/load4 and load8 functions
2017-03-14 01:05:31 -07:00
Henry de Valence
abb1b6fef9
Add a variable-time k-fold scalar mult function.
2017-03-13 21:45:41 -07:00
Henry de Valence
57ebc9d7f9
Add an OddMultiples helper struct
2017-03-13 21:45:41 -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
3cfaf0cf6d
Merge branch 'feature/generic-basepoint_r3' into develop
2017-03-14 03:26:51 +00:00
Henry de Valence
b8b5af24b6
fixup! Enable radix_51 on nightly
2017-03-13 20:24:59 -07:00
Isis Lovecruft
26a77cd7f3
Feature-gate box syntax on both std and basepoint_table_creation.
2017-03-14 03:21:32 +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
3882a41d27
Remove test_ prefix from tests in scalar module.
2017-03-14 01:58:39 +00:00
Isis Lovecruft
4afe4ae37f
Move scalar module benchmarks to separate module.
2017-03-14 01:52:42 +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
Isis Lovecruft
ba9d3be011
Merge remote-tracking branch 'isislovecruft/develop' into develop
2017-03-13 23:49:13 +00:00
Henry de Valence
f80754a954
Further rename fixups in benchmark test names
2017-03-13 16:38:05 -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
b75a88458a
Add monte carlo test for FieldElements
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
08ef9e5d1e
Add constants in radix_51 form
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
10fa989883
Print "CompressedEdwardsY" in Debug impl, not "CompressedPoint".
2017-03-13 23:29:13 +00:00
Henry de Valence
2610ab872a
Feature-gate basepoint table creation on a nightly feature
2017-03-13 16:28:52 -07:00
Henry & Isis
049556147f
Add wrapper for basepoint precomputations for decaf
2017-03-13 15:50:44 -07:00
Henry & Isis
c873f725a5
Rename BasepointTable as EdwardsBasepointTable.
2017-03-13 15:50:43 -07:00
Henry & Isis
f312160d2c
Fixup errors introduced from not running yolocrypto tests by default
2017-03-13 15:50:43 -07:00
Henry de Valence
e757959bb8
Add benchmark for basepoint table creation
2017-03-13 15:50:43 -07:00
Henry de Valence
a4ed8e2b81
Use box syntax instead of an unsafe block
2017-03-13 15:50:43 -07:00
Henry de Valence
640f40287f
Wrap the existing basepoint table as a BasepointTable
2017-03-13 15:50:43 -07:00
Henry de Valence
05fa1318b9
First work on dynamic basepoint table generation
2017-03-13 15:50:41 -07:00
Henry & Isis
7a2ea44ce6
Test multiplication by basepoint order
2017-03-13 15:49:18 -07:00
Henry de Valence
80d4566853
Merge remote-tracking branch 'tarcieri/nostd-cleanups' into develop
2017-03-13 15:00:20 -07:00
Isis Lovecruft
65136a202a
Merge remote-tracking branch 'isislovecruft/develop' into develop
2017-03-13 21:52:20 +00:00
Isis Lovecruft
f9c237bd6a
Typo fix in utils module docstring.
2017-03-10 02:36:15 +00:00
Isis Lovecruft
1f871ea0a0
Obsessive whitespace fix.
2017-03-10 02:36:01 +00:00
Isis Lovecruft
2039a66cb3
Fix two decaf unittests to use compress_edwards().
2017-03-10 02:35:38 +00:00
Tony Arcieri
384cf1df31
no_std import cleanups
...
- Gate no_std on the "std" feature
- Import core when std is present
- Import collections when std is absent
- Add a placeholder gated "use" directive for Box in curve.rs
2017-03-08 00:19:08 -08:00
Henry de Valence
ab6d32efe1
Make functions pub to suppress dead code warnings
2017-03-07 23:03:48 -08:00
Henry de Valence
0e9dc1d38d
Remove warnings about unused variables
...
These bindings are shadowed by the later let statements, so they're considered unused.
2017-03-07 23:01:49 -08:00
Henry de Valence
3f208359b3
Merge branch 'feature/test-reorg' into develop
2017-03-07 22:20:22 -08:00
Henry de Valence
b61ed818b8
Remove all remaining warnings
2017-03-07 01:37:31 -08:00
Henry de Valence
913e699145
Rename Decaf tests
2017-03-07 01:28:38 -08:00
Henry de Valence
e446bc8a1f
The identity point is already in EIGHT_TORSION
2017-03-07 00:58:32 -08:00
Henry de Valence
cf24cb8900
Also test points that are not the identity
2017-03-07 00:58:32 -08:00
Henry de Valence
47143e9114
Rewrite conditional assignment test for AffineNielsPoints
2017-03-07 00:58:32 -08:00
Henry de Valence
9414a2f4db
Remove old tests that aren't so useful any more
2017-03-07 00:49:21 -08:00
Henry de Valence
78fe9c490d
Eliminate BASE_CMPRSSD or rename it to constants::BASE_CMPRSSD and do misc cleanup
2017-03-07 00:48:36 -08:00
Henry de Valence
94416eb1cb
Clean decompression_sign_handling
2017-03-07 00:11:47 -08:00
Henry de Valence
b5b0ac7628
Add doc comments to test vectors
2017-03-07 00:11:16 -08:00
Henry de Valence
0585af6c68
Move sqrt(-(A+2)) test to constants.rs
2017-03-07 00:03:59 -08:00
Henry de Valence
3a9ee16a30
Remove test_ prefix from test functions in curve.rs
2017-03-06 23:59:49 -08:00
Henry de Valence
31c350b6f2
Split benchmarks into their own module
2017-03-06 23:53:38 -08:00
Isis Lovecruft
9f0c6c86f3
Change another unittest compress() to compress_edwards().
2017-03-07 01:33:38 +00:00
Henry & Isis
e5f5dea444
Rename to_{cached,precomputed} to to_{projective,affine}_niels
2017-03-05 15:27:26 -08:00
Isis Lovecruft
9171a03894
Merge branch 'feature/rename-compress' into develop
2017-03-04 05:52:57 +00:00
Isis Lovecruft
b81f84bee8
Merge branch 'feature/montgomery-x-format_r1' into develop
2017-03-04 05:48:12 +00:00
Isis Lovecruft
2c83d48cfa
Demote a docstring note to inline code comment to avoid confusing users.
2017-03-04 05:29:19 +00:00
Isis Lovecruft
20ace8da48
Rename compress() to compress_edwards().
2017-03-04 03:41:47 +00:00
Isis Lovecruft
cfd0e8ad6e
Add method for recovery of Edwards x-coordinate given Montgomery (u, v).
...
This function is necessary for matching Signal's hash_to_point() behaviour.
2017-03-04 03:39:58 +00:00
Isis Lovecruft
b9de92aeaf
Add benchmarks for Edwards-Y and Mongomery-U decompression.
2017-03-04 03:39:57 +00:00
Isis Lovecruft
915f41c643
Fixup CompressedMontgomeryU::decompress() and ensure no divide-by-zeroes.
...
Also, match Signal behaviour, and split off recovery of other
coordinates into separate functions.
2017-03-04 03:39:56 +00:00
Isis Lovecruft
5edd8d6d26
Merge remote-tracking branch 'hdevalence/feature/montgomery-x-format_r1' into develop
2017-03-04 02:40:17 +00:00
Isis Lovecruft
1c9637490c
Obsessive whitespace fix.
2017-03-04 02:00:59 +00:00
Henry de Valence
5d3d114628
fixup! Properly handle exceptional points.
2017-02-27 23:15:39 -08:00
Isis Lovecruft
f48947fb57
Merge remote-tracking branch 'hdevalence/feature/some-cleanup-tweaks' into develop
2017-02-28 05:50:22 +00:00
Henry de Valence
db53b58e89
Properly handle exceptional points.
2017-02-27 21:13:24 -08:00
Henry de Valence
19d452c2dc
Test decompressing an invalid montgomery point
2017-02-27 13:42:13 -08:00
Henry de Valence
45fbcb45f6
First notes and code on Montgomery conversion
2017-02-27 13:41:50 -08:00
Henry de Valence
fe15bc1d0b
Add note on fn main() in doctest
2017-02-27 11:22:07 -08:00
Henry de Valence
a93798d209
Add a function to hash a byte slice to a scalar.
2017-02-27 11:19:06 -08:00
Henry de Valence
e5c0d789fd
Add a Scalar::as_bytes() method.
2017-02-26 15:25:05 -08:00
Henry de Valence
950519b97b
Implement Debug for Scalar
2017-02-26 15:25:05 -08:00
Henry de Valence
1dac2f53bb
Implement Identity for CompressedEdwardsY
2017-02-26 15:25:05 -08:00
Henry de Valence
f39566cf16
Change CompressedDecaf::to_bytes to ::as_bytes
2017-02-26 15:25:05 -08:00
Henry de Valence
2cef5fcecd
Add CompressedEdwardsY::as_bytes
2017-02-26 15:25:05 -08:00
Isis Lovecruft
e6b7192d5e
Merge branch 'feature/rename-niels-point' into develop
2017-02-25 01:26:33 +00:00
Isis Lovecruft
a649ea38ee
Rename {PreComputed,Cached}Point → {Affine,Projective}NielsPoint.
...
* FIXES Issue #28 : https://github.com/isislovecruft/curve25519-dalek/issues/28
2017-02-25 00:47:06 +00: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
Isis Lovecruft
74feb0db75
Merge remote-tracking branch 'hdevalence/feature/decaf_r15' into develop
2017-02-22 05:30:18 +00:00
Isis Lovecruft
ff28cacd13
Enable std and std macros during test builds.
2017-02-22 03:07:57 +00:00
Henry de Valence
f93dd4ccf5
Use is_identity() in the torsion subgroup tests.
...
ht @dconnolly for pointing this out
2017-02-21 15:13:18 -08:00
Henry de Valence
9473299d04
Add benchmarks for Decaf [de]compression
2017-02-21 14:59:25 -08:00
Henry de Valence
dd8f17dfb3
Add note on feature-gating
2017-02-21 13:43:10 -08:00
Henry de Valence
95bf09a335
Check xy is nonnegative, y nonzero in decoding.
2017-02-21 13:43:09 -08:00
Henry de Valence
5daa217b18
Fix sign error
2017-02-21 13:43:09 -08:00
Henry de Valence
6b3dbf6870
Add another test and some notes
2017-02-21 13:43:09 -08:00
Henry de Valence
93be83c6df
Check that s = |s| in decompression.
2017-02-21 13:43:09 -08:00
Henry de Valence
9cb48c44ba
Use conditional_negate in Decaf
2017-02-21 13:43:03 -08:00
Henry & Isis
c2bee88c0f
Add a feature gate for unfinished implementations.
2017-02-21 13:39:01 -08:00
Henry & Isis
ea5efcdc29
Add impl of Identity for DecafPoint and CompressedDecaf
2017-02-21 13:39:00 -08:00