mirror of
https://github.com/saymrwulf/curve25519-dalek-source.git
synced 2026-09-04 20:24:10 +00:00
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`).
80 lines
2.7 KiB
TOML
80 lines
2.7 KiB
TOML
[package]
|
|
name = "curve25519-dalek"
|
|
version = "0.18.0"
|
|
authors = ["Isis Lovecruft <isis@patternsinthevoid.net>",
|
|
"Henry de Valence <hdevalence@hdevalence.ca>"]
|
|
readme = "README.md"
|
|
license = "BSD-3-Clause"
|
|
repository = "https://github.com/dalek-cryptography/curve25519-dalek"
|
|
homepage = "https://dalek.rs/curve25519-dalek"
|
|
documentation = "https://docs.rs/curve25519-dalek"
|
|
categories = ["cryptography", "no-std"]
|
|
keywords = ["cryptography", "ristretto", "curve25519", "ECC"]
|
|
description = "A pure-Rust implementation of group operations on Ristretto and Curve25519"
|
|
exclude = [
|
|
"**/.gitignore",
|
|
".gitignore",
|
|
".travis.yml",
|
|
]
|
|
build = "build.rs"
|
|
|
|
[package.metadata.docs.rs]
|
|
rustdoc-args = ["--html-in-header", ".cargo/registry/src/github.com-1ecc6299db9ec823/curve25519-dalek-0.13.2/rustdoc-include-katex-header.html"]
|
|
features = ["nightly"]
|
|
|
|
[badges]
|
|
travis-ci = { repository = "dalek-cryptography/curve25519-dalek", branch = "master"}
|
|
|
|
[dev-dependencies]
|
|
sha2 = "0.7"
|
|
serde_cbor = "0.6"
|
|
criterion = "0.2"
|
|
|
|
[[bench]]
|
|
name = "dalek_benchmarks"
|
|
harness = false
|
|
|
|
# Note: we generate precomputed tables by building the crate twice: once as
|
|
# part of build.rs, and then once "for real".
|
|
#
|
|
# This means that the [dependencies] and [build-dependencies] sections must
|
|
# match exactly, since the build.rs uses the crate itself as a library.
|
|
|
|
[dependencies]
|
|
rand = { version = "0.5", default-features = false }
|
|
byteorder = { version = "1", default-features = false, features = ["i128"] }
|
|
digest = "0.7"
|
|
generic-array = "0.9"
|
|
clear_on_drop = "=0.2.3"
|
|
subtle = { version = "0.7", features = ["generic-impls"], default-features = false }
|
|
serde = { version = "1.0", optional = true }
|
|
|
|
[build-dependencies]
|
|
rand = { version = "0.5", default-features = false }
|
|
byteorder = { version = "1", default-features = false, features = ["i128"] }
|
|
digest = "0.7"
|
|
generic-array = "0.9"
|
|
clear_on_drop = "=0.2.3"
|
|
subtle = { version = "0.7", features = ["generic-impls"], default-features = false }
|
|
serde = { version = "1.0", optional = true }
|
|
|
|
[features]
|
|
nightly = ["subtle/nightly", "clear_on_drop/nightly"]
|
|
default = ["std", "u64_backend"]
|
|
std = ["subtle/std", "rand/std"]
|
|
alloc = []
|
|
yolocrypto = []
|
|
|
|
# The u32 backend uses u32s with u64 products.
|
|
u32_backend = []
|
|
# The u64 backend uses u64s with u128 products.
|
|
u64_backend = []
|
|
# The AVX2 backend uses u32x8s with u64x4 products.
|
|
# It uses the u64 code for serial operations.
|
|
avx2_backend = ["nightly", "u64_backend"]
|
|
|
|
# Signals that we're in the main build stage. This is off by default,
|
|
# to signal stage 1 of the build, where build.rs loads the library
|
|
# into the build script. Then, the build.rs emits the stage2_build
|
|
# feature before the main-stage compilation.
|
|
stage2_build = []
|