From 1dac2f53bb8f6edf233a064f17ade13923268c26 Mon Sep 17 00:00:00 2001 From: Henry de Valence Date: Wed, 22 Feb 2017 23:06:59 -0800 Subject: [PATCH] Implement Identity for CompressedEdwardsY --- src/curve.rs | 15 +++++++++++++++ src/decaf.rs | 4 +--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/curve.rs b/src/curve.rs index ec9c093..8130d24 100644 --- a/src/curve.rs +++ b/src/curve.rs @@ -218,6 +218,15 @@ pub trait Identity { fn identity() -> Self; } +impl Identity for CompressedEdwardsY { + fn identity() -> CompressedEdwardsY { + CompressedEdwardsY([1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0]) + } +} + impl Identity for ExtendedPoint { fn identity() -> ExtendedPoint { ExtendedPoint{ X: FieldElement::zero(), @@ -1161,6 +1170,12 @@ mod test { assert!(p2.is_small_order() == false); } + #[test] + fn test_compressed_identity() { + assert_eq!(ExtendedPoint::identity().compress(), + CompressedEdwardsY::identity()); + } + #[test] fn test_is_identity() { assert!(ExtendedPoint::identity().is_identity()); diff --git a/src/decaf.rs b/src/decaf.rs index 2537fbb..93f22e2 100644 --- a/src/decaf.rs +++ b/src/decaf.rs @@ -308,9 +308,7 @@ mod test { fn test_decaf_decompress_id() { let compressed_id = CompressedDecaf::identity(); let id = compressed_id.decompress().unwrap(); - // This should compress (as ed25519) to the following: - let mut bytes = [0u8; 32]; bytes[0] = 1; - assert_eq!(id.0.compress(), CompressedEdwardsY(bytes)); + assert_eq!(id.0.compress(), CompressedEdwardsY::identity()); } #[test]