diff --git a/elliptic-curve/src/weierstrass.rs b/elliptic-curve/src/weierstrass.rs index bb095bae2..c87a54ed2 100644 --- a/elliptic-curve/src/weierstrass.rs +++ b/elliptic-curve/src/weierstrass.rs @@ -1,5 +1,7 @@ //! Elliptic curves in short Weierstrass form. +pub mod point; + /// Marker trait for elliptic curves in short Weierstrass form pub trait Curve: super::Curve { /// Should point compression be applied by default? diff --git a/elliptic-curve/src/weierstrass/point.rs b/elliptic-curve/src/weierstrass/point.rs new file mode 100644 index 000000000..acb170035 --- /dev/null +++ b/elliptic-curve/src/weierstrass/point.rs @@ -0,0 +1,12 @@ +//! Traits for Weierstrass elliptic curve points + +use super::Curve; +use crate::ElementBytes; +use subtle::CtOption; + +/// Attempt to decompress an elliptic curve point from its x-coordinate and +/// a boolean flag indicating whether or not the y-coordinate is odd. +pub trait Decompress: Sized { + /// Attempt to decompress an elliptic curve point + fn decompress(x: &ElementBytes, y_is_odd: bool) -> CtOption; +}