From ea5efcdc29eda2bf43b13841e1bfe0ad1e132b60 Mon Sep 17 00:00:00 2001 From: Henry & Isis Date: Mon, 20 Feb 2017 03:45:49 -0800 Subject: [PATCH] Add impl of Identity for DecafPoint and CompressedDecaf --- src/decaf.rs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/decaf.rs b/src/decaf.rs index 61d926c..06cf656 100644 --- a/src/decaf.rs +++ b/src/decaf.rs @@ -30,6 +30,7 @@ use core::ops::{Add, Sub, Neg}; use curve::ExtendedPoint; use curve::BasepointMult; use curve::ScalarMult; +use curve::Identity; use scalar::Scalar; // ------------------------------------------------------------------------ @@ -79,6 +80,12 @@ impl CompressedDecaf { } } +impl Identity for CompressedDecaf { + fn identity() -> CompressedDecaf { + CompressedDecaf([0u8;32]) + } +} + /// A point in a prime-order group. /// /// XXX think about how this API should work @@ -165,6 +172,12 @@ impl DecafPoint { } } +impl Identity for DecafPoint { + fn identity() -> DecafPoint { + DecafPoint(ExtendedPoint::identity()) + } +} + // ------------------------------------------------------------------------ // Equality // ------------------------------------------------------------------------ @@ -262,7 +275,7 @@ mod test { #[test] fn test_decaf_decompress_id() { - let compressed_id = CompressedDecaf([0u8; 32]); + 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; @@ -271,8 +284,8 @@ mod test { #[test] fn test_decaf_compress_id() { - let id = DecafPoint(ExtendedPoint::identity()); - assert_eq!(id.compress(), CompressedDecaf([0u8; 32])); + let id = DecafPoint::identity(); + assert_eq!(id.compress(), CompressedDecaf::identity()); } #[test]