Commit graph

823 commits

Author SHA1 Message Date
Isis Lovecruft
0da8f08d65
Maintain legacy 3.x support for lookup tables. 2021-04-13 22:23:34 +00:00
Isis Lovecruft
cc0c444fae
Merge branch 'feature/dynamic-table-sizes' into develop 2021-03-25 04:34:08 +00:00
Isis Lovecruft
1491f0db36
Update copyright years. 2021-03-25 04:10:55 +00:00
isis agora lovecruft
b79a276806
Merge pull request #336 from huitseeker/elligator2
Elligator2 mapping for curve25519
2021-03-25 03:13:41 +00:00
Isis Lovecruft
d0014f6d87
Merge remote-tracking branch 'zgfzgf/feat-unused-import' into develop 2021-03-25 02:30:05 +00:00
Isis Lovecruft
ab468cd24c
Fix copyright years in some of the files I touched. 2021-03-25 02:29:37 +00:00
Isis Lovecruft
4a1fc3c66e
Implement Zeroize for points as the identity element. 2021-03-25 01:45:54 +00:00
Isis Lovecruft
5482c76d16
Merge remote-tracking branch 'garbageslam/zeroize_ristretto' into develop 2021-03-24 18:35:46 +00:00
Isis Lovecruft
da0c49985c
Merge remote-tracking branch 'gedigi/zeroize_ristrettopoint' into develop 2021-03-24 18:12:22 +00:00
Chris Beck
0154ebbfaf implement Zeroize trait on Ristretto curve point types
This is helpful for hardening some of our cryptographic implementations
that use Ristretto curve points
2021-02-10 12:14:32 -07:00
zgfzgf
08bf6ebf08 fix build warning 2021-02-03 17:46:01 +08:00
François Garillot
e2651cceb6
Rename elligator_map -> elligator_encode
leaves an obvious name open for the reverse mapping
2021-01-12 13:46:04 -08:00
Isis Lovecruft
55e0db7cf6
Bump curve25519-dalek version to 3.0.2. 2021-01-08 03:32:42 +00:00
Isis Lovecruft
77ec974212
Whitespace fixes for 3267a5d merge. 2021-01-08 00:33:37 +00:00
Isis Lovecruft
3267a5d75d
Merge remote-tracking branch '3for/comment-fix' into develop 2021-01-08 00:27:34 +00:00
François Garillot
8aa1458941
Implements an Elligator2 map for Curve25519
This implementation:
- is agnostic on the hash used to pick a field element, even though SHA512 is commonly used,
- follows https://tools.ietf.org/id/draft-irtf-cfrg-hash-to-curve-10.html closely
- tests the outputs of the function using libsignal's implementation.
2020-10-21 17:38:22 -04:00
Stephane Raux
608f8cd594 Make crate feature alloc work with stable Rust
`println!` was removed in the test as the corresponding test for `u32` does not have it.
2020-10-20 18:15:00 -07:00
Henry de Valence
6d96eb7796 Bump version to 3.0.0. 2020-08-17 18:20:26 -07:00
Henry de Valence
2ee61938ee
Merge pull request #327 from huitseeker/digests-0.9
Update sha2, digest to 0.9
2020-08-17 18:11:32 -07:00
isis agora lovecruft
5038fcf50a
Merge pull request #308 from isislovecruft/fix/pippenger-typo
Fix typo of Pippenger's name.
2020-07-01 01:14:10 +00:00
François Garillot
6afd8ff212
Update sha2, digest to 0.9 2020-06-15 07:16:04 -04:00
Henry de Valence
3fc47ef867 Bump version to 2.1.0 2020-05-29 12:39:39 -07:00
Henry de Valence
f04b83055c Merge branch 'master' into develop 2020-05-29 12:36:16 -07:00
Ruben De Smet
3a61a0b70c Make Scalar::from_bits a const fn.
const_fn is stable since Rust 1.31
(https://github.com/rust-lang/rust/pull/54835) and enables calling
`Scalar::from_bits(..)` from other const fn contexts, potentially
saving some overhead here and there.

Especially useful in contexts where constants are being built from a bit
pattern.
2020-05-28 10:28:28 +02:00
gedigi
c9fe6c5533 implemented Zeroize for CompressedRistretto and RistrettoPoint 2020-03-19 14:16:06 -07:00
Rui Morais
6a8e466063 add derive Hash to Scalar, MontgomeryPoint and CompressedEdwardsY 2020-02-25 22:39:19 +00:00
Rui Morais
d57fb6caeb Derive of Hash trait to CompressedRistretto 2020-02-25 18:16:06 +00:00
Isis Lovecruft
e82910d215
Add test for basepoint table multiplication by unreduced scalar. 2020-01-07 08:06:27 +00:00
Isis Lovecruft
1f8a19a753
Fix an attempted overflow on absolute value computation for radix-256 tables.
Found by the fuzzer in 4f5d2d4.
2020-01-07 08:04:46 +00:00
Isis Lovecruft
ca1f730790
Fix debug_assert! range in Scalar::to_radix_2w_size_hint(). 2020-01-03 23:56:30 +00:00
Isis Lovecruft
c01bd780dc
Implement radix-32 precomputed scalar multiplication tables. 2019-12-31 02:26:03 +00:00
Isis Lovecruft
cfbcb6ca61
Implement conversions between basepoint table sizes.
This is useful for programs/protocol which can do some heuristics or
learning-based approach towards optimising the table size based on the number of
uses of e.g. a public key, the second basepoint in a Pedersen commitment, etc.,
i.e. the first time a public key is used to verify a signature, the usual
variable-time basepoint multiscalar multiplication is used, however after 1000
verifications, the table size is upgraded, and again after 10000 verifications,
etc.
2019-12-31 02:26:03 +00:00
Isis Lovecruft
8a9e09ba34
Implement larger sizes of basepoint tables.
This implements a macro for implementing the BasepointTable trait, and
uses the macro to create basepoint table types. The default table
still uses radix-16 representation and is ~30KB in size.  The new
table types, and their memory usage and additions required per
basepoint multiplication are:

 * `EdwardsBasepointTableRadix64`: ~120KB, 43 additions
 * `EdwardsBasepointTableRadix128`: ~240KB, 37 additions
 * `EdwardsBasepointTableRadix256`: ~480KB, 32 additions
2019-12-31 02:26:03 +00:00
Isis Lovecruft
383e65f6bd
Add a trait for implementing a basepoint table. 2019-12-27 12:54:52 +00:00
Isis Lovecruft
4f29935c2c
Create macro for generating different sized LookupTable<T>s. 2019-12-27 12:49:32 +00:00
Henry de Valence
6a44f31702 Revert "Merge pull request #296 from isislovecruft/feature/compressed-try-from"
This reverts commit 46f56f91ee, reversing
changes made to a9b1d50c5a.

These changes are not semver-compatible with the 2.0.0 release.
2019-12-10 14:16:24 -08:00
Isis Lovecruft
7e2aed3943
Fix typo of Pippenger's name. 2019-12-10 20:33:53 +00:00
isis agora lovecruft
d52ab8bb6f
Merge branch 'develop' into feature/compressed-try-from 2019-11-26 21:21:14 +00:00
isis agora lovecruft
77203aa1cb
Merge pull request #306 from isislovecruft/feature/236-merge-rebase
Implement Zeroize for Scalar and MontgomeryPoint
2019-10-28 20:28:34 +00:00
isis agora lovecruft
4d1dfbaf03
Merge pull request #305 from isislovecruft/fix/unused-tmp2-warning
Fix a warning that a temporary value isn't used.
2019-10-28 20:20:06 +00:00
Isis Lovecruft
4423394ed8
Fix warning that a temporary value isn't used. 2019-10-28 19:12:00 +00:00
Isis Lovecruft
57f19e018f
Merge remote-tracking branch 'DebugSteven/zeroize' into feature/236-merge-rebase 2019-10-28 19:09:39 +00:00
Isis Lovecruft
409ebd94c0
Remove dev-dependency on deprecated rand_os crate.
The functionality we were using is now contained in the `rand_core` crate, which
we already depend upon.  As far as testing code goes, only benchmarks still
depend upon `rand`, as they use `thread_rng`.
2019-10-28 18:06:29 +00:00
Isis Lovecruft
9ae2e3b482
Change all from_slice() constructors to return Option<T>s.
We due this in lieu of implementing `TryFrom` to allow for API
consumers to use the `?` operator to convert potential `None`s into
their own `Result<T, CustomError>` types for better error handling
with less boilerplate.

Note that this is a breaking API change.
2019-10-28 17:29:15 +00:00
Henry de Valence
4cc0afdcfc
Merge pull request #302 from isislovecruft/fix/228-remove-ristretto-random-test
Remove test for validity of randomly generated RistrettoPoints.
2019-10-28 10:29:11 -07:00
Isis Lovecruft
c21224170a
Remove optional failure dependency and impl std::error::Error. 2019-10-28 17:29:04 +00:00
Isis Lovecruft
1d8b3995c9
Add custom error types, currently only used in TryFrom impls. 2019-10-28 17:28:40 +00:00
Isis Lovecruft
1fa0048262
Implement TryFrom<&[u8]> and ValidityCheck for MontgomeryPoint. 2019-10-28 17:26:23 +00:00
Isis Lovecruft
db3d26f4b9
Fix typo in TryFrom docstring. 2019-10-28 17:26:23 +00:00
Isis Lovecruft
a7f317a2b8
Impl TryFrom<&[u8]> for all compressed point types.
This reduces copy-pasta in downstream users to check the length of the
slice beforehand.
2019-10-28 17:26:23 +00:00