mirror of
https://github.com/saymrwulf/curve25519-dalek-source.git
synced 2026-09-06 20:41:14 +00:00
Merge branch 'release/0.9.3'
This commit is contained in:
commit
d0e332e36f
4 changed files with 41 additions and 7 deletions
28
CONTRIBUTING.md
Normal file
28
CONTRIBUTING.md
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
# Contributing to curve25519-dalek
|
||||||
|
|
||||||
|
If you have questions or comments, please feel free to email the
|
||||||
|
authors.
|
||||||
|
|
||||||
|
For feature requests, suggestions, and bug reports, please open an issue on
|
||||||
|
[our Github](https://github.com/isislovecruft/curve25519-dalek). (Or, send us
|
||||||
|
an email if you're opposed to using Github for whatever reason.)
|
||||||
|
|
||||||
|
Patches are welcomed as pull requests on
|
||||||
|
[our Github](https://github.com/isislovecruft/curve25519-dalek), as well as by
|
||||||
|
email (preferably sent to all of the authors listed in `Cargo.toml`).
|
||||||
|
|
||||||
|
All issues on curve25519-dalek are mentored, if you want help with a bug just
|
||||||
|
ask @isislovecruft or @hdevalence.
|
||||||
|
|
||||||
|
Some issues are easier than others. The `easy` label can be used to find the
|
||||||
|
easy issues. If you want to work on an issue, please leave a comment so that we
|
||||||
|
can assign it to you!
|
||||||
|
|
||||||
|
# Code of Conduct
|
||||||
|
|
||||||
|
We follow the [Rust Code of Conduct](http://www.rust-lang.org/conduct.html),
|
||||||
|
with the following additional clauses:
|
||||||
|
|
||||||
|
* We respect the rights to privacy and anonymity for contributors and people in
|
||||||
|
the community. If someone wishes to contribute under a pseudonym different to
|
||||||
|
their primary identity, that wish is to be respected by all contributors.
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "curve25519-dalek"
|
name = "curve25519-dalek"
|
||||||
version = "0.9.2"
|
version = "0.9.3"
|
||||||
authors = ["Isis Lovecruft <isis@patternsinthevoid.net>",
|
authors = ["Isis Lovecruft <isis@patternsinthevoid.net>",
|
||||||
"Henry de Valence <hdevalence@hdevalence.ca>"]
|
"Henry de Valence <hdevalence@hdevalence.ca>"]
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
# curve25519-dalek [](https://crates.io/curve25519-dalek) [](https://docs.rs/curve25519-dalek) [](https://travis-ci.org/isislovecruft/curve25519-dalek)
|
# curve25519-dalek [](https://crates.io/crates/curve25519-dalek) [](https://docs.rs/curve25519-dalek) [](https://travis-ci.org/isislovecruft/curve25519-dalek)
|
||||||
|
|
||||||
**A low-level cryptographic library for point, group, field, and scalar
|
**A low-level cryptographic library for point, group, field, and scalar
|
||||||
operations on a curve isomorphic to the twisted Edwards curve defined by -x²+y²
|
operations on a curve isomorphic to the twisted Edwards curve defined by -x²+y²
|
||||||
|
|
|
||||||
16
src/field.rs
16
src/field.rs
|
|
@ -202,12 +202,18 @@ impl<'a, 'b> Mul<&'b FieldElement> for &'a FieldElement {
|
||||||
let a: &[u64; 5] = &self.0;
|
let a: &[u64; 5] = &self.0;
|
||||||
let b: &[u64; 5] = &_rhs.0;
|
let b: &[u64; 5] = &_rhs.0;
|
||||||
|
|
||||||
|
// 64-bit precomputations
|
||||||
|
let b1_19 = b[1] * 19;
|
||||||
|
let b2_19 = b[2] * 19;
|
||||||
|
let b3_19 = b[3] * 19;
|
||||||
|
let b4_19 = b[4] * 19;
|
||||||
|
|
||||||
// Multiply to get 128-bit coefficients of output
|
// Multiply to get 128-bit coefficients of output
|
||||||
let c0: u128 = m(a[0],b[0]) + ( m(a[4],b[1]) + m(a[3],b[2]) + m(a[2],b[3]) + m(a[1],b[4]) )*19;
|
let c0: u128 = m(a[0],b[0]) + m(a[4],b1_19) + m(a[3],b2_19) + m(a[2],b3_19) + m(a[1],b4_19);
|
||||||
let mut c1: u128 = m(a[1],b[0]) + m(a[0],b[1]) + ( m(a[4],b[2]) + m(a[3],b[3]) + m(a[2],b[4]) )*19;
|
let mut c1: u128 = m(a[1],b[0]) + m(a[0],b[1]) + m(a[4],b2_19) + m(a[3],b3_19) + m(a[2],b4_19);
|
||||||
let mut c2: u128 = m(a[2],b[0]) + m(a[1],b[1]) + m(a[0],b[2]) + ( m(a[4],b[3]) + m(a[3],b[4]) )*19;
|
let mut c2: u128 = m(a[2],b[0]) + m(a[1],b[1]) + m(a[0],b[2]) + m(a[4],b3_19) + m(a[3],b4_19);
|
||||||
let mut c3: u128 = m(a[3],b[0]) + m(a[2],b[1]) + m(a[1],b[2]) + m(a[0],b[3]) + ( m(a[4],b[4]) )*19;
|
let mut c3: u128 = m(a[3],b[0]) + m(a[2],b[1]) + m(a[1],b[2]) + m(a[0],b[3]) + m(a[4],b4_19);
|
||||||
let mut c4: u128 = m(a[4],b[0]) + m(a[3],b[1]) + m(a[2],b[2]) + m(a[1],b[3]) + m(a[0],b[4]);
|
let mut c4: u128 = m(a[4],b[0]) + m(a[3],b[1]) + m(a[2],b[2]) + m(a[1],b[3]) + m(a[0],b[4]);
|
||||||
|
|
||||||
// Now c[i] < 2^2b * (1+i + (4-i)*19) < 2^(2b + lg(1+4*19)) < 2^(2b + 6.27)
|
// Now c[i] < 2^2b * (1+i + (4-i)*19) < 2^(2b + lg(1+4*19)) < 2^(2b + 6.27)
|
||||||
// where b is the bitlength of the input limbs.
|
// where b is the bitlength of the input limbs.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue