Implement Identity for CompressedEdwardsY

This commit is contained in:
Henry de Valence 2017-02-22 23:06:59 -08:00
parent f39566cf16
commit 1dac2f53bb
2 changed files with 16 additions and 3 deletions

View file

@ -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());

View file

@ -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]