Commit graph

395 commits

Author SHA1 Message Date
Henry de Valence
da8b12a62d Align montgomery summary to match the edwards summary 2017-11-29 13:01:31 -08:00
Henry de Valence
c209b49264 Tweak description and fix formatting 2017-11-29 13:00:50 -08:00
Henry de Valence
442eba57c9 Comment out #[doc(hidden)] to allow impls to appear in internal docs.
This is related to https://github.com/rust-lang/rust/issues/46380 upstream.
2017-11-29 12:40:42 -08:00
Henry de Valence
d862912511 KaTeXify struct docs for internal point types 2017-11-29 12:30:51 -08:00
Henry de Valence
b2a85da09d Edit curve model description to use KaTeX 2017-11-29 12:07:55 -08:00
Isis Lovecruft
88200f9fc9
Fix Scalar.to_bytes() after merging PR#88. 2017-11-26 04:16:12 +00:00
Isis Lovecruft
220c6c1d13
Merge remote-tracking branch 'hdevalence/feature/refactor-scalar-api' into develop 2017-11-26 04:15:04 +00:00
Isis Lovecruft
227acc117b
Whitespace fix. 2017-11-26 03:26:47 +00:00
Isis Lovecruft
7a0c0e9d0d
Change Debug for Scalar output to be valid Rust code. 2017-11-26 03:26:29 +00:00
Isis Lovecruft
87f93a5df2
Add to_bytes() convenience method for Scalar. 2017-11-26 03:23:31 +00:00
Isis Lovecruft
9a49263752
Add to_bytes() convenience method for CompressedRistretto points. 2017-11-26 03:22:28 +00:00
Henry de Valence
f165b63ee9 Encode scalars canonically using Serde. 2017-11-23 12:29:46 -08:00
Henry de Valence
c1f6302879 Add a Scalar::from_bytes_canonical method 2017-11-23 12:29:46 -08:00
Henry de Valence
9855260bfd Add a method to test if a Scalar is canonical 2017-11-23 12:29:46 -08:00
Henry de Valence
34639725d4 clean up reduction test 2017-11-23 12:29:46 -08:00
Henry de Valence
d32fe9772b Ensure that all Scalars are bounded by 2^255.
This commit defines a Scalar to hold an integer representing an element of
Z/lZ.  Applications like X/Ed25519 that care about the bit-patterns of the
scalars they use can set a specific bit-pattern using the `from_bits`
constructor.  Applications that want to treat scalars as integers mod l can use
the `from_bytes_mod_order` constructor.  Either way, the constructor ensures
that the integer representing each Scalar is bounded by 2^255 so that the high
bit is set.  This means that any Scalar object is always safe to use for scalar
multiplication, while maintaining compatibility with both the Ristretto
use-case and the X/Ed25519 usecase.
2017-11-23 12:29:46 -08:00
Henry de Valence
d88f92276a Add Scalar::reduce method 2017-11-21 11:28:25 -08:00
Henry de Valence
df182b79d0 Rename Scalar::reduce to Scalar::reduce_wide
This opens the `Scalar::reduce` name for reduction mod l.
2017-11-21 11:06:54 -08:00
Henry de Valence
033a90890c Remove Scalar::{add, sub, mul} methods 2017-11-21 10:43:49 -08:00
Henry de Valence
e94c6f0a96 Make more Scalar methods pub(crate) 2017-11-20 16:45:30 -08:00
Henry de Valence
2d69a8a7dc Eliminate array_ref dependency 2017-11-20 14:53:08 -08:00
Henry de Valence
504a557b33 Hide UnpackedScalars 2017-11-17 15:51:29 -08:00
Henry de Valence
0cb70ae032 Hide the underlying ExtendedPoint from a Ristretto point 2017-11-17 15:50:58 -08:00
Henry de Valence
a9f8789524 hide unimplemented fns from docs 2017-11-17 15:50:04 -08:00
Henry de Valence
9fda4739d0 Hide fns using private types 2017-11-17 15:42:37 -08:00
Henry de Valence
78d9e70071 Move ExtendedPoint->MontgomeryPoint conversion to edwards.rs
Need to find a solution to the internal/external docs problem
2017-11-17 15:13:45 -08:00
Henry de Valence
2b0a4979b1 Fix indentation 2017-11-17 14:09:48 -08:00
Henry de Valence
8337a895d4 Only compress ExtendedPoints 2017-11-17 13:32:22 -08:00
Henry de Valence
7f52745770 Remove unused import 2017-11-16 20:11:18 -08:00
Henry de Valence
8d0808a077 Split internal curve models into a private submodule 2017-11-16 17:34:28 -08:00
Henry de Valence
e196f8347c Move 32/64-bit code into submodules in a backend module.
See the doc comment in `backend/mod.rs` for motivation on naming.
2017-11-16 16:07:55 -08:00
Henry de Valence
6ce7a4ee2d Remove catchall 'utils' module 2017-11-16 12:13:13 -08:00
Henry de Valence
e4f5f23b8d fixup! Merge branch 'optimzed_scalar_r1' into develop 2017-11-16 12:13:13 -08:00
Henry de Valence
207af566b9 Replace signed constants with unsigned constants 2017-11-16 12:13:13 -08:00
Henry de Valence
83e20b5387 cfg-gate all tests using precomputed tables 2017-11-16 12:13:13 -08:00
Henry de Valence
8952c7f476 initial work on rewriting 32bit arithmetic 2017-11-16 12:13:13 -08:00
Henry de Valence
399a9db478 Generate AFFINE_ODD_MULTIPLES_OF_BASEPOINT at compile time 2017-11-16 12:13:13 -08:00
Henry de Valence
e7387650f6 Remove warnings from build.rs 2017-11-16 12:13:13 -08:00
Henry de Valence
108a690941 First attempt at generating basepoint tables at compile time 2017-11-16 12:13:13 -08:00
Henry de Valence
b966f942a8 Impl Debug for EdwardsBasepointTable 2017-11-16 11:09:45 -08:00
Henry de Valence
6f5f0c51fd Tweak Debug impls to produce Rust source 2017-11-16 11:09:32 -08:00
Isis Lovecruft
cc8528f41f
Change implementation-specific scalar constants to be pub(crate). 2017-11-16 00:39:27 +00:00
Isis Lovecruft
c59af2c6b8
Merge branch 'optimzed_scalar_r1' into develop 2017-11-15 22:02:36 +00:00
Isis Lovecruft
2345a3f2fa
Fix typo in Scalar64::from_bytes_wide().
* FIXES issue #82:
   https://github.com/isislovecruft/curve25519-dalek/issues/82
2017-11-15 03:19:39 +00:00
Henry de Valence
f3a7108c55 Remove sha2 crate, which is only used in doctests 2017-10-31 14:12:29 -07:00
Henry de Valence
8f68b7a3ed Remove MSQRT_M1 constant 2017-10-31 14:10:33 -07:00
Isis Lovecruft
583a45ddc2
Add test that scalar Montgomery reduction matches reduction. 2017-10-31 01:18:52 +00:00
Isis Lovecruft
e2cbec81fc
Add test that UnpackedScalar::{to,from}_bytes() roundtrips. 2017-10-31 01:02:20 +00:00
Henry de Valence
bbbe4bf665 Make most numeric constants pub(crate) 2017-10-30 17:33:23 -07:00
Henry de Valence
a7835a1246 UPPERCASE_GLOBALS and add documentation 2017-10-30 17:33:23 -07:00