From 71bf0d5e534673bda04afcbd362febd5af4fa30a Mon Sep 17 00:00:00 2001 From: Henry de Valence Date: Fri, 9 Dec 2016 14:49:27 -0800 Subject: [PATCH] Remove port of Montgomery conversion from Adam's code This should be brought back later as part of reworking the compressed point formats / serialization code. Right now there's just "CompressedPoint" which is in the ed25519 format. Ideally, users should be able to serialize points to formats used for X25519, for decaf, etc. and not have to worry too much about the internal model. --- README.md | 1 + src/curve.rs | 9 --------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/README.md b/README.md index bc7fcaa..9ad1bad 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,7 @@ Then, in your library or executable source, add: ## TODO * 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. 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 {