curve25519-dalek-source/Cargo.toml
Isis Lovecruft ce2260afab
Implement stricter scalar malleability checking for signatures.
Previously, we were checking that the highest 3 bits were unset, which still
leaves 2^253 - 2^252 + 27742317777372353535851937790883648493 potential scalars
for the `s` component of a signature which are not strictly mod \ell.

This change fixes that.

Note: This change makes ed25519-dalek incompatible with ed25519-donna in that
some signatures produced by donna will be verifiable by donna but NOT VERIFIABLE
by dalek.  On the other hand, libsodium exports a -DED25519_COMPAT feature,
which when enabled, means it is compatible with dalek with the
`legacy_compatibility` feature disabled.  Otherwise, libsodium's behaviour is
identical to the behaviour enabled by default in this patch.
2019-10-04 19:34:00 +00:00

77 lines
2 KiB
TOML

[package]
name = "ed25519-dalek"
version = "1.0.0-pre.2"
authors = ["isis lovecruft <isis@patternsinthevoid.net>"]
readme = "README.md"
license = "BSD-3-Clause"
repository = "https://github.com/dalek-cryptography/ed25519-dalek"
homepage = "https://dalek.rs"
documentation = "https://docs.rs/ed25519-dalek"
keywords = ["cryptography", "ed25519", "curve25519", "signature", "ECC"]
categories = ["cryptography", "no-std"]
description = "Fast and efficient ed25519 EdDSA key generations, signing, and verification in pure Rust."
exclude = [ ".gitignore", "TESTVECTORS", "res/*" ]
[badges]
travis-ci = { repository = "dalek-cryptography/ed25519-dalek", branch = "master"}
[dependencies.curve25519-dalek]
version = "1"
default-features = false
[dependencies.rand_core]
version = "0.3"
default-features = false
[dependencies.rand]
version = "0.6"
features = ["i128_support"]
default-features = false
optional = true
[dependencies.rand_os]
version = "0.1"
optional = true
[dependencies.serde]
version = "^1.0"
optional = true
[dependencies.sha2]
version = "^0.8"
default-features = false
[dependencies.failure]
version = "^0.1.1"
default-features = false
[dependencies.clear_on_drop]
version = "0.2"
[dev-dependencies]
hex = "^0.3"
bincode = "^0.9"
criterion = "0.2"
rand = "0.6"
rand_os = "0.1"
[[bench]]
name = "ed25519_benchmarks"
harness = false
# This doesn't seem to work with criterion, cf. https://github.com/bheisler/criterion.rs/issues/344
# For now, we have to bench by doing `cargo bench --features="batch"`.
# required-features = ["batch"]
[features]
default = ["std", "u64_backend"]
std = ["curve25519-dalek/std", "rand_os", "sha2/std"]
alloc = ["curve25519-dalek/alloc", "rand_os"]
nightly = ["curve25519-dalek/nightly", "clear_on_drop/nightly"]
batch = ["rand"]
asm = ["sha2/asm"]
# This features turns off stricter checking for scalar malleability in signatures
legacy_compatibility = []
yolocrypto = ["curve25519-dalek/yolocrypto"]
u64_backend = ["curve25519-dalek/u64_backend"]
u32_backend = ["curve25519-dalek/u32_backend"]
avx2_backend = ["curve25519-dalek/avx2_backend"]