diff --git a/README.md b/README.md index 9406ed1..2192cbf 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,9 @@ universe's beauty, but also his deep hatred of the Daleks. Rusty destroys the other Daleks and departs the ship, determined to track down and bring an end to the Dalek race.* -Significant portions of this code are ported from -[Adam Langley's Golang ed25519 library](https://github.com/agl/ed25519), along -with referencing the ref10 implementation. +Significant portions of this code are ported from [Adam Langley's +Golang ed25519 library](https://github.com/agl/ed25519), which is in +turn a port of the reference `ref10` implementation. ## Warning @@ -52,5 +52,13 @@ Then, in your library or executable source, add: ## TODO - * Implement hashing to a point on the curve. - * Maybe implement Mike Hamburg's Decaf point compression format. +* Implement hashing to a point on the curve (Elligator). +* Add conversion to Montgomery form and rework compressed point types. +* Maybe implement Mike Hamburg's Decaf point compression format, so that + users can be guaranteed to be in a prime-order subgroup and not have to + worry about cofactors. +* Review finite field arithmetic. +* Review scalar arithmetic. +* Review addition formulas. +* Proofread mathematics in documentation. +* Maybe use serde for serialization. diff --git a/src/curve.rs b/src/curve.rs index da84984..971cdb5 100644 --- a/src/curve.rs +++ b/src/curve.rs @@ -372,15 +372,6 @@ impl ExtendedPoint { pub fn compress(&self) -> CompressedPoint { self.to_projective().compress() } - - /// XXX rewrite - /// We only need the x-coordinate of the curve25519 point, which I'll - /// call u. The isomorphism is u=(y+1)/(1-y), since y=Y/Z, this gives - /// u=(Y+Z)/(Z-Y). We know that Z=1, thus u=(Y+1)/(1-Y). - pub fn edwards_to_montgomery_x(&self) -> FieldElement { // edwardsToMontgomeryX - let one = FieldElement::one(); - &((&one - &self.Y).invert()) * &(&self.Y + &one) - } } impl CompletedPoint {