diff --git a/src/edwards.rs b/src/edwards.rs index 2ca38e8..a09ce45 100644 --- a/src/edwards.rs +++ b/src/edwards.rs @@ -311,6 +311,21 @@ impl Default for CompressedEdwardsY { } } +impl CompressedEdwardsY { + /// Construct a `CompressedEdwardsY` from a slice of bytes. + /// + /// # Panics + /// + /// If the input `bytes` slice does not have a length of 32. + pub fn from_slice(bytes: &[u8]) -> CompressedEdwardsY { + let mut tmp = [0u8; 32]; + + tmp.copy_from_slice(bytes); + + CompressedEdwardsY(tmp) + } +} + impl Identity for EdwardsPoint { fn identity() -> EdwardsPoint { EdwardsPoint{ X: FieldElement::zero(), diff --git a/src/ristretto.rs b/src/ristretto.rs index 646589c..8c401e3 100644 --- a/src/ristretto.rs +++ b/src/ristretto.rs @@ -213,6 +213,19 @@ impl CompressedRistretto { &self.0 } + /// Construct a `CompressedRistretto` from a slice of bytes. + /// + /// # Panics + /// + /// If the input `bytes` slice does not have a length of 32. + pub fn from_slice(bytes: &[u8]) -> CompressedRistretto { + let mut tmp = [0u8; 32]; + + tmp.copy_from_slice(bytes); + + CompressedRistretto(tmp) + } + /// Attempt to decompress to an `RistrettoPoint`. /// /// # Return