Struct sec1::point::EncodedPoint
source · pub struct EncodedPoint<Size>where
Size: ModulusSize,{ /* private fields */ }
point
only.Expand description
SEC1 encoded curve point.
This type is an enum over the compressed and uncompressed encodings, useful for cases where either encoding can be supported, or conversions between the two forms.
Implementations§
source§impl<Size> EncodedPoint<Size>where
Size: ModulusSize,
impl<Size> EncodedPoint<Size>where Size: ModulusSize,
sourcepub fn from_bytes(input: impl AsRef<[u8]>) -> Result<Self>
pub fn from_bytes(input: impl AsRef<[u8]>) -> Result<Self>
Decode elliptic curve point (compressed or uncompressed) from the
Elliptic-Curve-Point-to-Octet-String
encoding described in
SEC 1: Elliptic Curve Cryptography (Version 2.0) section
2.3.3 (page 10).
sourcepub fn from_untagged_bytes(
bytes: &GenericArray<u8, Size::UntaggedPointSize>
) -> Self
pub fn from_untagged_bytes( bytes: &GenericArray<u8, Size::UntaggedPointSize> ) -> Self
Decode elliptic curve point from raw uncompressed coordinates, i.e.
encoded as the concatenated x || y
coordinates with no leading SEC1
tag byte (which would otherwise be 0x04
for an uncompressed point).
sourcepub fn from_affine_coordinates(
x: &GenericArray<u8, Size>,
y: &GenericArray<u8, Size>,
compress: bool
) -> Self
pub fn from_affine_coordinates( x: &GenericArray<u8, Size>, y: &GenericArray<u8, Size>, compress: bool ) -> Self
Encode an elliptic curve point from big endian serialized coordinates (with optional point compression)
sourcepub fn identity() -> Self
pub fn identity() -> Self
Return EncodedPoint
representing the additive identity
(a.k.a. point at infinity)
sourcepub fn as_bytes(&self) -> &[u8] ⓘ
pub fn as_bytes(&self) -> &[u8] ⓘ
Get byte slice containing the serialized EncodedPoint
.
sourcepub fn to_bytes(&self) -> Box<[u8]>
Available on crate feature alloc
only.
pub fn to_bytes(&self) -> Box<[u8]>
alloc
only.Get boxed byte slice containing the serialized EncodedPoint
sourcepub fn is_compact(&self) -> bool
pub fn is_compact(&self) -> bool
Is this EncodedPoint
compact?
sourcepub fn is_compressed(&self) -> bool
pub fn is_compressed(&self) -> bool
Is this EncodedPoint
compressed?
sourcepub fn is_identity(&self) -> bool
pub fn is_identity(&self) -> bool
Is this EncodedPoint
the additive identity? (a.k.a. point at infinity)
sourcepub fn compress(&self) -> Self
pub fn compress(&self) -> Self
Compress this EncodedPoint
, returning a new EncodedPoint
.
sourcepub fn tag(&self) -> Tag
pub fn tag(&self) -> Tag
Get the SEC1 tag for this EncodedPoint
sourcepub fn coordinates(&self) -> Coordinates<'_, Size>
pub fn coordinates(&self) -> Coordinates<'_, Size>
Get the Coordinates
for this EncodedPoint
.
sourcepub fn x(&self) -> Option<&GenericArray<u8, Size>>
pub fn x(&self) -> Option<&GenericArray<u8, Size>>
Get the x-coordinate for this EncodedPoint
.
Returns None
if this point is the identity point.
sourcepub fn y(&self) -> Option<&GenericArray<u8, Size>>
pub fn y(&self) -> Option<&GenericArray<u8, Size>>
Get the y-coordinate for this EncodedPoint
.
Returns None
if this point is compressed or the identity point.
Trait Implementations§
source§impl<Size> AsRef<[u8]> for EncodedPoint<Size>where
Size: ModulusSize,
impl<Size> AsRef<[u8]> for EncodedPoint<Size>where Size: ModulusSize,
source§impl<Size> Clone for EncodedPoint<Size>where
Size: ModulusSize + Clone,
Size::UncompressedPointSize: Clone,
impl<Size> Clone for EncodedPoint<Size>where Size: ModulusSize + Clone, Size::UncompressedPointSize: Clone,
source§fn clone(&self) -> EncodedPoint<Size>
fn clone(&self) -> EncodedPoint<Size>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<Size> ConditionallySelectable for EncodedPoint<Size>where
Size: ModulusSize,
<Size::UncompressedPointSize as ArrayLength<u8>>::ArrayType: Copy,
Available on crate feature subtle
only.
impl<Size> ConditionallySelectable for EncodedPoint<Size>where Size: ModulusSize, <Size::UncompressedPointSize as ArrayLength<u8>>::ArrayType: Copy,
subtle
only.source§impl<Size> Debug for EncodedPoint<Size>where
Size: ModulusSize,
impl<Size> Debug for EncodedPoint<Size>where Size: ModulusSize,
source§impl<Size> Default for EncodedPoint<Size>where
Size: ModulusSize + Default,
Size::UncompressedPointSize: Default,
impl<Size> Default for EncodedPoint<Size>where Size: ModulusSize + Default, Size::UncompressedPointSize: Default,
source§fn default() -> EncodedPoint<Size>
fn default() -> EncodedPoint<Size>
source§impl<'de, Size> Deserialize<'de> for EncodedPoint<Size>where
Size: ModulusSize,
Available on crate feature serde
only.
impl<'de, Size> Deserialize<'de> for EncodedPoint<Size>where Size: ModulusSize,
serde
only.source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where D: Deserializer<'de>,
source§impl<Size> Display for EncodedPoint<Size>where
Size: ModulusSize,
impl<Size> Display for EncodedPoint<Size>where Size: ModulusSize,
source§impl<Size> FromStr for EncodedPoint<Size>where
Size: ModulusSize,
impl<Size> FromStr for EncodedPoint<Size>where Size: ModulusSize,
Decode a SEC1-encoded point from hexadecimal.
Upper and lower case hexadecimal are both accepted, however mixed case is rejected.
source§impl<Size> Hash for EncodedPoint<Size>where
Size: ModulusSize,
impl<Size> Hash for EncodedPoint<Size>where Size: ModulusSize,
source§impl<Size> LowerHex for EncodedPoint<Size>where
Size: ModulusSize,
impl<Size> LowerHex for EncodedPoint<Size>where Size: ModulusSize,
source§impl<Size> Ord for EncodedPoint<Size>where
Size: ModulusSize,
impl<Size> Ord for EncodedPoint<Size>where Size: ModulusSize,
source§impl<Size> PartialEq<EncodedPoint<Size>> for EncodedPoint<Size>where
Size: ModulusSize,
impl<Size> PartialEq<EncodedPoint<Size>> for EncodedPoint<Size>where Size: ModulusSize,
source§impl<Size> PartialOrd<EncodedPoint<Size>> for EncodedPoint<Size>where
Size: ModulusSize,
impl<Size> PartialOrd<EncodedPoint<Size>> for EncodedPoint<Size>where Size: ModulusSize,
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§impl<Size> Serialize for EncodedPoint<Size>where
Size: ModulusSize,
Available on crate feature serde
only.
impl<Size> Serialize for EncodedPoint<Size>where Size: ModulusSize,
serde
only.source§impl<Size> TryFrom<&[u8]> for EncodedPoint<Size>where
Size: ModulusSize,
impl<Size> TryFrom<&[u8]> for EncodedPoint<Size>where Size: ModulusSize,
source§impl<Size> UpperHex for EncodedPoint<Size>where
Size: ModulusSize,
impl<Size> UpperHex for EncodedPoint<Size>where Size: ModulusSize,
source§impl<Size> Zeroize for EncodedPoint<Size>where
Size: ModulusSize,
Available on crate feature zeroize
only.
impl<Size> Zeroize for EncodedPoint<Size>where Size: ModulusSize,
zeroize
only.