Commit graph

318 commits

Author SHA1 Message Date
Henry de Valence
a79459a1c8
Merge pull request #289 from tarcieri/zeroize
Switch from `clear_on_drop` to `zeroize` (fixes #281)
2019-10-23 20:17:14 -07:00
Tony Arcieri
9480844b8d Switch from clear_on_drop to zeroize (fixes #281)
`zeroize` is WASM-friendly as it has no dependencies on C compilers.

Instead uses Rust's own volatile write semantics and compiler fences to
ensure zeroization is not elided by the compiler.
2019-10-23 16:39:21 -07:00
Henry de Valence
70e46c9826 Fill in missing Serde impl for MontgomeryPoint. 2019-10-23 15:55:03 -07:00
Henry de Valence
0fc534d989 Use "tuples" instead of "bytes" in the Serde datamodel.
This is a breaking change to the serialization format.  It fixes it so that the
Serde encoding can match the conventional encoding of each type of object, and
so that Serde can be used with no overhead -- when using serde-bincode, the
Serde encoding now matches the manual encoding.
2019-10-23 15:40:50 -07:00
Henry de Valence
574217694e Remove build.rs.
This was more useful at the time when we were determining, e.g., optimal lookup
table sizes and could regenerate them more easily, but it came at a massive
complexity cost.  It also meant that we were unable to implement backend
autoselection.  This commit removes the `build.rs` entirely.  In the future, a
different `build.rs` could be added that auto-selects a backend, but it seems
like the current default-u64 setup has been working fine.
2019-10-23 14:20:38 -07:00
Henry de Valence
4dc8073330 Update CHANGELOG and bump version 2019-08-07 13:24:36 -07:00
Henry de Valence
e6d580b0cf Bump version to 1.2.2 2019-07-31 15:25:22 -07:00
Henry de Valence
78d9804bf9 'crypto' means 'cryptography' 2019-07-30 12:43:56 -07:00
Henry de Valence
45b316d26b Update version to 1.2.1 2019-06-06 15:39:59 -07:00
Henry de Valence
62fbd6ab63 Update version to 1.2.0 2019-06-04 15:27:12 -07:00
isis agora lovecruft
33f21a9f34
Merge pull request #255 from xoloki/no-std-optional-serde
Turn off default serde features but keep it as an optional dependency
2019-06-04 19:39:30 +00:00
Joey Yandle
fd69503a40 turn off default serde features but keep it optional 2019-06-03 15:29:08 -07:00
Henry de Valence
ea9d7411d5 Bump version to 1.1.4 2019-05-06 19:09:04 -07:00
Henry de Valence
89c58a991b Bump version, add changelog entries 2019-03-29 12:53:43 -07:00
Isis Lovecruft
78b46c4abe
Bump x25519-dalek version to 0.5.1. 2019-02-27 23:36:29 +00:00
Henry de Valence
ebdd71b54b Bump version to 0.5.0 2019-02-16 13:46:06 -08:00
Henry de Valence
bd96f25baa Bump patch version 2019-02-15 13:47:16 -08:00
Henry de Valence
96796e620e Bump patch version 2019-02-15 11:32:54 -08:00
Henry de Valence
64c542ec84 Bump patch version 2019-02-15 11:20:25 -08:00
Henry de Valence
b8c62ec4b4 Attempt to fix cfg(rustdoc) on docs.rs
Building the docs currently doesn't work, because rustdoc enables parts of the
code (to document them) which then don't check (because there are missing
exports or dependencies).  This **should** fix the issue, but there's no way to
test without publishing a new version.
2019-02-15 11:18:25 -08:00
Henry de Valence
ad838ecd73 Remove -pre.0; reword CHANGELOG entries. 2019-02-15 10:11:18 -08:00
Henry de Valence
a35adbef84 Bump version number to 1.1.0-pre.0 2019-02-14 14:49:36 -08:00
Henry de Valence
cf7a1a4a0f Merge branch 'rand_core' of git://github.com/newpavlov/curve25519-dalek into newpavlov-rand_core 2019-02-14 14:29:58 -08:00
Henry de Valence
89d474ae55 Bump patch version to 0.4.5 2019-02-04 12:31:29 -08:00
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
9cd4551b40 Bump patch version 2019-01-27 23:17:27 -08:00
Henry de Valence
bcc6383d9a Bump version number 2019-01-22 14:15:14 -08:00
Henry de Valence
9e553688c3 Docs hotfix: disable KaTeX in docs.rs 2019-01-22 14:03:00 -08: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
47a164da4d Replace avx2_backend with simd_backend (autoselects AVX2/IFMA) 2019-01-18 01:52:17 -08:00
Henry de Valence
9ed2128a10 Add stub code for IFMA intrinsics in Rust. 2019-01-18 01:52:17 -08:00
Isis Lovecruft
f5f79f56c8
Fix link to now-missing katex header.
This fixes https://github.com/dalek-cryptography/x25519-dalek/issues/23 as
reported by @DebugSteven.
2019-01-18 06:13:15 +00:00
Henry de Valence
0328fb1342 Bump patch version 2019-01-17 19:25:34 -08:00
Henry de Valence
b21ab1324f Bump minor version 2019-01-15 22:47:35 -08:00
Isis Lovecruft
47e8689b2d
Bump x25519-dalek version to 0.4.1. 2019-01-16 02:23:14 +00:00
Isis Lovecruft
53ba2f3bcc
Merge remote-tracking branch 'newpavlov/rand_os' into release/0.4.0 2019-01-16 01:29:46 +00:00
Isis Lovecruft
bab903cb65
Bump x25519-dalek version to 0.4.0. 2019-01-12 23:35:03 +00:00
Isis Lovecruft
c9a1ef6a36
Credit @DebugSteven as an author. 2019-01-12 23:34:49 +00:00
Henry de Valence
65f94124f4 Reformat dependencies, add docs.rs metadata 2019-01-10 10:08:08 -08:00
Henry de Valence
48fa313e97 Update rand_core version 2019-01-10 10:03:59 -08:00
Артём Павлов [Artyom Pavlov]
5dcc1c17da use rand_os instead of rand 2019-01-05 16:17:05 +03:00
Артём Павлов [Artyom Pavlov]
4e4730303d enable rand_core/std 2019-01-05 14:32:36 +03:00
Артём Павлов [Artyom Pavlov]
d6ca36fa0b replace rand with rand_core+rand_os 2019-01-05 14:27:24 +03:00
DebugSteven
d3b7ccf030 byte-oriented x25519 function 2018-12-16 11:30:32 -07:00
Henry de Valence
5d4b5cb2a4 Bump version to 1.0.1 2018-12-13 15:43:26 -08:00
Henry de Valence
fca2cd5f95 Use the released version of subtle (oops) 2018-12-13 15:42:31 -08:00
Henry de Valence
9b4361db8b Finalize 1.0.0 2018-12-13 15:35:32 -08:00
DebugSteven
7cf01d82d9 rand to 0.6 2018-11-19 13:27:29 -05:00
DebugSteven
98826dabf6 change curve dependency to 1.0.0-pre.1 at a minimum 2018-11-19 12:28:05 -05:00
Henry de Valence
7f63eaec60 Bump version to 1.0.0-pre.1 2018-11-18 10:44:30 -08:00
Colt Frederickson
b5d6e94a64 Build for 0.6.0 2018-11-14 14:39:47 -07:00
DebugSteven
bd13f0728f add clear_on_drop to toml & add secret key type 2018-11-06 14:00:52 -05:00
Henry de Valence
18a7fb360a Bump version to 1.0.0-pre.0 2018-11-05 16:15:07 -08:00
Henry de Valence
92a3b9db49 Change to subtle 2.0.0-pre.0 2018-11-05 15:09:50 -08:00
Henry de Valence
a116fd9679 test subtle 2.0 2018-11-05 12:06:23 -08:00
Henry de Valence
77edbeb7a0 Remove generic-array build dep 2018-11-02 11:41:36 -07:00
Tony Arcieri
31e8626133 Update to digest 0.8 and sha2 0.8
Vicariously updates to `generic-array` 0.12, however this change also
removes `generic-array` as a direct dependency, as it can be sourced
from the `digest` crate.
2018-10-19 10:44:42 -07:00
Henry de Valence
451636b99d Bump version 2018-09-26 16:17:44 -07:00
Henry de Valence
18391bfc5f Add Serde support for compressed points; use bincode for tests. 2018-09-26 15:46:37 -07:00
Henry de Valence
b0658b05f8 Bump version 2018-09-25 17:21:10 -07:00
Henry de Valence
09048920de
Merge pull request #197 from dalek-cryptography/update-subtle
Update subtle
2018-09-25 17:19:26 -07:00
Henry de Valence
27a9b9940d Update subtle to stable 1.0 2018-09-25 17:02:46 -07:00
Henry de Valence
9dab3641a5 Merge branch 'master' into develop 2018-09-17 12:36:56 -07:00
Henry de Valence
f95806e00d Bump version to 0.19.1
This fixes the AVX2 build on nightly.
2018-09-17 12:33:30 -07:00
Henry de Valence
10d8436f0d Update packed_simd version 2018-09-17 12:29:58 -07:00
Henry de Valence
7d29b86217 Update packed_simd version 2018-09-13 23:36:44 -07:00
Isis Lovecruft
bed5aa00c5
Bump subtle dependency version to 0.9.0. 2018-09-05 03:19:58 +00:00
Henry de Valence
acceea04f6 Bump byteorder version to avoid breaking on stable
As pointed out by @ruuda:

> This is more of a problem with `#[feature]` in Rust; once a feature becomes
> stable, having `#[feature]` becomes an error, so it is not easy to depend on a
> feature on nightly, and then have the same code work on stable once the feature
> is stabilized.

The earliest `byteorder` version without a `#[feature]` is `1.2.3`, so we
require any higher version than that one.

Closes #184.
Closes #186.
2018-08-27 11:48:53 -07:00
Isis Lovecruft
41acc60538
Bump x25519-dalek version to 0.3.0. 2018-07-27 20:19:07 +00:00
Isis Lovecruft
2e6795c6e7
Bump curve25519-dalek version to 0.19. 2018-07-27 20:17:01 +00:00
Henry de Valence
8a488d3032 Bump version number to 0.19.0
Add an interim version prior to 1.0.0-pre.0 in order to fix the AVX2
build.
2018-07-26 20:34:00 -07:00
Henry de Valence
288625418d Migrate to packed_simd from core::simd 2018-07-26 12:40:34 -07:00
Tony Arcieri
10e8abf926 Unify alloc and std cargo features
This change provides a common convention for using allocator-dependent
features with:

    #![cfg(feature = "alloc")]

When available, `Vec` is imported consistently as `prelude::Vec`, which
means modules that need access to `Vec` can simply do:

    use prelude::*;

and if an allocator is available, `Vec` will be in the crate prelude.

This allows all `alloc` vs `std` gating to be handled in `lib.rs`,
`build.rs`, and `prelude.rs` so the rest of the codebase doesn't have to
do any gating whatsoever.
2018-07-23 10:50:21 -07:00
Isis Lovecruft
1aec62c6be
Switch to using traits from rand_core instead of rand. 2018-07-23 17:15:09 +00:00
Isis Lovecruft
2abfb37cad
Bump x25519-dalek version to 0.2.1. 2018-07-23 16:44:38 +00:00
Isis Lovecruft
f9012cc1b3
Bump curve25519-dalek dependency to 0.18. 2018-07-23 16:35:28 +00:00
Henry de Valence
1e74cb3e56 Replace Scalar::from_u64 with From impls
Unfortunately, Rust selects `i32` as the type for an integer literal
when the literal has no other type constraints.  This means that someone
cannot write `Scalar::from(1)`, as Rust will choose `i32` as the type for
`1`, and we don't `impl From<i32> for Scalar`.

We could implement `From` conversions for signed integers, but since
`Scalar` operations should be constant-time by default, this would
require us to extract the sign bit of the integer and use it to
conditionally select between the positive and negative of Scalar
constructed from the value bits.  This is more expensive than the
unsigned operation, and I don't think it's what anyone really wants.

Making API consumers specify that their literals are unsigned is
slightly annoying, but better than the above alternative.

It would also be nice to change `Scalar::from_hash` to be
`impl<D: Digest<OutputSize = U64>> From<D> for Scalar`,
but this isn't currently allowed by Rust (since that `impl` "could"
conflict with the `impl From<u8>` if someone decided that `u8` should
`impl Digest`).
2018-07-19 08:39:09 -07:00
Henry de Valence
f6f20f4598
Merge pull request #152 from isislovecruft/feature/update-rand-0.5.3
Update rand dependency to 0.5.3.
2018-07-05 11:52:46 -07:00
Isis Lovecruft
3dbfad2f7a
Update rand dependency to 0.5. 2018-07-04 20:16:31 +00:00
Isis Lovecruft
b214e6e796
Bump subtle dependency to 0.7.0. 2018-07-04 19:56:16 +00:00
Henry de Valence
28b7ed5709 Change version to 0.18.0 (since feature flags changed) 2018-06-22 12:24:20 -07:00
Tony Arcieri
42430f1a1f Upgrade rand to (non-pre)release version 0.5
It was previously using pre-release version 0.5.0-pre.2
2018-06-02 11:17:10 -07:00
Jake McGinty
715208e0eb use production rand 0.5 release 2018-05-22 22:44:31 -07:00
Isis Lovecruft
d80bd7094f
Bump x25519-dalek version to 0.2.0. 2018-05-15 22:51:53 +00:00
Isis Lovecruft
b13417e82c
Expose backend options from curve25519-dalek. 2018-05-15 21:48:01 +00:00
Isis Lovecruft
5f608f9218
Merge branch 'feature/benches' into develop 2018-05-15 21:01:16 +00:00
Isis Lovecruft
d0c4da85e8
Update rand dependency to 0.5.0-pre.2. 2018-05-15 21:00:28 +00:00
Isis Lovecruft
3e9a5db419
Update curve25519-dalek dependency to 0.17. 2018-05-15 20:41:39 +00:00
Isis Lovecruft
337de2a204
Bump curve25519-dalek version to 0.17.0. 2018-05-15 20:39:01 +00:00
Isis Lovecruft
26ae887262
Merge remote-tracking branch 'mcginty/curve25519-0.16' into develop 2018-05-15 20:30:31 +00:00
Henry de Valence
bbb64312f7 Use rand 0.5
Requires `0.5.0-pre.2`, which adds `impl CryptoRng for OsRng`.
2018-05-15 12:30:28 -07:00
Henry de Valence
34c43c20a9 Rework backend selection code.
Each backend can now be selected by an individual feature:

- `u32_backend` for `backend::u32`;
- `u64_backend` for `backend::u64`;
- `avx2_backend` for `backend::avx2`;

The `u64_backend` is selected by default, since most people use X64 and we have
no way to select based on target (see discussion in #126).  However, these
changes mean that it is possible to select the backend explicitly, and if we
had the ability to select target-default features, we could do so easily.
2018-05-14 17:43:54 -07:00
Henry de Valence
9b6c932635 Rename 'precomputed_tables' to the more accurate 'stage2_build' 2018-05-14 15:41:45 -07:00
Henry de Valence
7b802c7bf5 Bump version to 0.16.4 2018-05-10 17:46:37 -07:00
Oleg Andreev
2a1e122300 disable default features in byteorder dependency to be no_std-compatible 2018-05-10 15:13:50 -07:00
Jake McGinty
cb88ab169a Use latest curve25519-dalek.
Fixes #5 (allows x25519-dalek to compile on stable).

informed by 6748ddd:
  - sub `CompressedMontgomeryU` with `MontgomeryPoint`, removing
    (de)compress calls.
informed by d32fe97:
  - sub `Scalar([u8; 32])` with `Scalar::from_bits([u8; 32])`
2018-05-01 20:18:43 -07:00
Henry de Valence
e492ac63d0 Bump version to 0.16.3 2018-04-09 09:50:03 -07:00
Henry de Valence
6bb2c02a1f
Merge pull request #127 from hdevalence/feature/generalize-naf
Generalize NAF code to wider window sizes.
2018-04-08 16:39:45 -07:00
Henry de Valence
dc563c7415 Bump version to 0.16.2
Only change is better Ristretto docs
2018-04-06 15:11:08 -07:00
Henry de Valence
7e0ddf6b98 Rewrite NAF code to work with more window sizes
Change Scalar::non_adjacent_form() to take a width parameter.

This rewrite also makes it faster, although it's probably a ways off
from optimal. I don't know how much it matters.

TODO: write up description of why this computes the same thing.

Thanks to @oleganza for pointing out an error reading bits across words
in an earlier version of this code.
2018-04-04 21:13:09 -07:00
Henry de Valence
207fbb640e Bump version to 0.16.1 2018-04-04 15:30:12 -07:00
Henry de Valence
b0bda0278c Drop the stdsimd crate in favor of core::{simd, arch}.
This change required some work, because the to-be-stabilized SIMD functions
don't allow non-constant `imm8`s.  Previously, the `stdsimd` functions had a
constifying macro that ensured that the immediates were known.  The dalek code
used this to build helper functions which would be inlined into different
places where the immediates were known.  Unfortunately, since constexprs aren't
fully supported in Rust yet, this is done by a hidden compiler attribute, and
there's no way to propagate "constness".

To deal with this, some of the functions are specialized (e.g.,
`square_and_negate_D` instead of taking a mask), and others use an enum.
2018-04-03 17:58:23 -07:00
Isis Lovecruft
659d6c258e
Add criterion benchmark for diffie_hellman() function. 2018-04-03 23:30:21 +00:00
Oleg Andreev
7ab614cda4 make sure std does not leak through thie dependency 2018-04-03 15:00:10 -07:00
Isis Lovecruft
031179d111
Use new repository links. 2018-04-02 20:07:25 +00:00
Henry de Valence
d6b8389428 Use criterion.rs instead of libtest for benchmarks.
Since Criterion can only benchmark public API, these changes just drop
all internal benchmarks (e.g., benchmarks for field operations). But
those are usually microbenchmarks whose meaning is kind of questionable
anyways, so I don't think this is a big loss.

The `bench` feature disappears, since Criterion works on stable Rust.
2018-03-25 17:14:37 -07:00
Henry de Valence
ce439458a1 Bump version to 0.16.0 2018-03-22 12:35:41 -07:00
Henry de Valence
792ac0775e Change to the updated subtle API. 2018-03-22 11:13:26 -07:00
Henry de Valence
151911bc47 Try to tell docs.rs to build using the "nightly" feature
We need this to put the README.md into the docs, or else the crate description is bare.
2018-02-06 11:19:50 -08:00
Henry de Valence
3fb0ccc68f Bump version to 0.15 2018-02-06 10:56:39 -08:00
Henry de Valence
31dbb9e434 Fix no_std build failure 2018-01-26 16:36:42 -08:00
Henry de Valence
04506bbca2 Consolidate Cargo.toml and document the weird build hack 2018-01-26 16:29:23 -08:00
Henry de Valence
5a3f0a0fbb Merge remote-tracking branch 'origin/feature/subtle-0.5' into develop 2018-01-25 10:31:41 -08:00
Isis Lovecruft
3b7399a06f
Bump curve25519-dalek version to 0.14.4. 2018-01-25 02:58:00 +00:00
Isis Lovecruft
2f3d1e77a2
Enable subtle feature for using generic ConditionallySwappable and ConditionallyNegatable. 2018-01-25 02:11:12 +00:00
Isis Lovecruft
a6680838b3
Revert "Revert "Bump subtle dependency to 0.5.0."" 2018-01-25 02:11:03 +00:00
Isis Lovecruft
7f3e82bab5
Revert "Bump subtle dependency to 0.5.0."
This reverts commit 460355d5e0.
2018-01-24 21:25:03 +00:00
Isis Lovecruft
460355d5e0
Bump subtle dependency to 0.5.0. 2018-01-20 02:30:33 +00:00
Isis Lovecruft
da890be304
Bump curve25519-dalek version to 0.14.3. 2018-01-20 01:03:45 +00:00
Isis Lovecruft
6b4aa8548c
Specify stdsimd version. 2018-01-20 01:03:44 +00:00
Isis Lovecruft
d3959a5eb6
Update more links to point to the official CI and repos. 2018-01-20 00:56:26 +00:00
Isis Lovecruft
4b8f2963d8
Update links to point to new official repos. 2018-01-20 00:54:46 +00:00
Isis Lovecruft
489fad186f
Bump curve25519-dalek version to 0.14.2. 2018-01-20 00:00:04 +00:00
Isis Lovecruft
0012e1f12f
Merge remote-tracking branch 'hdevalence/feature/avx2_r7' into develop 2018-01-19 23:46:30 +00:00
Isis Lovecruft
f8325f2d51
Bump curve25519-dalek Cargo.toml version to 0.14.1. 2018-01-19 19:42:59 +00:00
Isis Lovecruft
5ffa4e3495
Merge remote-tracking branch 'jeandudey/master' into develop 2018-01-19 19:41:14 +00:00
Isis Lovecruft
1d6a9337bf
Merge remote-tracking branch 'tarcieri/update-digest-and-generic-array' into develop 2018-01-18 03:42:24 +00:00
Jean Pierre Dudey
b7376512dd Update rand >= 0.4
Signed-off-by: Jean Pierre Dudey <jeandudey@hotmail.com>
2018-01-03 10:04:40 -04:00
Henry de Valence
9ad2188bb8 Try to get travis working if yolocrypto=>nightly 2017-12-18 15:15:23 -08:00
Tony Arcieri
55e49b436a Update digest => 0.7, generic_array => 0.9
These are the latest releases of these crates.
2017-12-16 13:14:01 -08:00
Henry de Valence
89753e7274 for some reason stdsimd dep isn't picked up if it's optional 2017-12-15 13:57:01 -08:00
Henry de Valence
0f6171b788 Try to make stdsimd an optional dependency 2017-12-15 13:57:01 -08:00
Henry de Valence
34f44dcf5d Merge branch 'develop' into feature/avx2_r8 2017-12-15 11:37:10 -08:00
Henry de Valence
98a78d7a58 Clear scalar digits from memory in multiscalar_mult 2017-12-07 12:34:40 -08:00
Henry de Valence
fbd0e74357 Fix Cargo.toml to use upstream stdsimd 2017-12-04 10:37:37 -08:00
Henry de Valence
f28635ab4e Add a new 'avx2_backend' yolocrypto feature 2017-12-04 10:37:37 -08:00
Henry de Valence
ed24d1c5fa Move AVX2 code into a backend 2017-12-04 10:37:37 -08:00
Henry de Valence
51f04d7cce first avx2 code 2017-12-04 10:37:37 -08:00
Isis Lovecruft
209854acc6
Bump curve25519-dalek version to 0.14.0. 2017-12-04 02:08:03 +00:00
Isis Lovecruft
6ed4e24ddd
Exclude all .gitignore files from all builds. 2017-12-01 01:28:33 +00:00
Isis Lovecruft
6e96e49eea
Merge remote-tracking branch 'hdevalence/feature/refactor-internal-code' into develop 2017-11-25 23:07:23 +00:00
Henry de Valence
2d69a8a7dc Eliminate array_ref dependency 2017-11-20 14:53:08 -08:00
Isis Lovecruft
0d59f6e709
Merge remote-tracking branch 'chain/feature/refactor-32bit_r2' into develop 2017-11-18 00:40:07 +00:00
Henry de Valence
108a690941 First attempt at generating basepoint tables at compile time 2017-11-16 12:13:13 -08:00
Isis Lovecruft
3de2bf0ddc
No idea how this XSS will work when the hash after "github.com-" changes. 2017-11-16 01:33:13 +00:00
Isis Lovecruft
f6f7059dbe
Avoid making a package with literally only one HTML file, lol. 2017-11-16 01:30:19 +00:00
Isis Lovecruft
a6806eacc3
Bump curve25519-dalek version to 0.13.2. 2017-11-16 01:18:46 +00:00
Isis Lovecruft
37a56bf2ba
Exclude .travis.yml from packages. 2017-11-16 01:13:57 +00:00