pub type EncodedPoint<C> = EncodedPoint<<C as Curve>::FieldBytesSize>;
Expand description
Encoded elliptic curve point sized appropriately for a given curve.
Aliased Type§
struct EncodedPoint<C> { /* private fields */ }
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<EncodedPoint<Size>, Error>
pub fn from_bytes(input: impl AsRef<[u8]>) -> Result<EncodedPoint<Size>, Error>
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 as ModulusSize>::UntaggedPointSize>,
) -> EncodedPoint<Size>
pub fn from_untagged_bytes( bytes: &GenericArray<u8, <Size as ModulusSize>::UntaggedPointSize>, ) -> EncodedPoint<Size>
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,
) -> EncodedPoint<Size>
pub fn from_affine_coordinates( x: &GenericArray<u8, Size>, y: &GenericArray<u8, Size>, compress: bool, ) -> EncodedPoint<Size>
Encode an elliptic curve point from big endian serialized coordinates (with optional point compression)
Sourcepub fn identity() -> EncodedPoint<Size>
pub fn identity() -> EncodedPoint<Size>
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 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) -> EncodedPoint<Size>
pub fn compress(&self) -> EncodedPoint<Size>
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<C> From<&VerifyingKey<C>> for EncodedPoint<C>where
C: PrimeCurve + CurveArithmetic + PointCompression,
AffinePoint<C>: FromEncodedPoint<C> + ToEncodedPoint<C>,
FieldBytesSize<C>: ModulusSize,
impl<C> From<&VerifyingKey<C>> for EncodedPoint<C>where
C: PrimeCurve + CurveArithmetic + PointCompression,
AffinePoint<C>: FromEncodedPoint<C> + ToEncodedPoint<C>,
FieldBytesSize<C>: ModulusSize,
Source§fn from(verifying_key: &VerifyingKey<C>) -> EncodedPoint<C>
fn from(verifying_key: &VerifyingKey<C>) -> EncodedPoint<C>
Source§impl<C> From<VerifyingKey<C>> for EncodedPoint<C>where
C: PrimeCurve + CurveArithmetic + PointCompression,
AffinePoint<C>: FromEncodedPoint<C> + ToEncodedPoint<C>,
FieldBytesSize<C>: ModulusSize,
impl<C> From<VerifyingKey<C>> for EncodedPoint<C>where
C: PrimeCurve + CurveArithmetic + PointCompression,
AffinePoint<C>: FromEncodedPoint<C> + ToEncodedPoint<C>,
FieldBytesSize<C>: ModulusSize,
Source§fn from(verifying_key: VerifyingKey<C>) -> EncodedPoint<C>
fn from(verifying_key: VerifyingKey<C>) -> EncodedPoint<C>
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>
impl<Size> Clone for EncodedPoint<Size>
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 as ModulusSize>::UncompressedPointSize as ArrayLength<u8>>::ArrayType: Copy,
impl<Size> ConditionallySelectable for EncodedPoint<Size>where
Size: ModulusSize,
<<Size as ModulusSize>::UncompressedPointSize as ArrayLength<u8>>::ArrayType: Copy,
Source§fn conditional_select(
a: &EncodedPoint<Size>,
b: &EncodedPoint<Size>,
choice: Choice,
) -> EncodedPoint<Size>
fn conditional_select( a: &EncodedPoint<Size>, b: &EncodedPoint<Size>, choice: Choice, ) -> EncodedPoint<Size>
Source§fn conditional_assign(&mut self, other: &Self, choice: Choice)
fn conditional_assign(&mut self, other: &Self, choice: Choice)
Source§fn conditional_swap(a: &mut Self, b: &mut Self, choice: Choice)
fn conditional_swap(a: &mut Self, b: &mut Self, choice: Choice)
self
and other
if choice == 1
; otherwise,
reassign both unto themselves. Read moreSource§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>
impl<Size> Default for EncodedPoint<Size>
Source§fn default() -> EncodedPoint<Size>
fn default() -> EncodedPoint<Size>
Source§impl<Size> Display for EncodedPoint<Size>where
Size: ModulusSize,
impl<Size> Display for EncodedPoint<Size>where
Size: ModulusSize,
Source§impl<C> From<&PublicKey<C>> for EncodedPoint<<C as Curve>::FieldBytesSize>where
C: CurveArithmetic + PointCompression,
<C as CurveArithmetic>::AffinePoint: FromEncodedPoint<C> + ToEncodedPoint<C>,
<C as Curve>::FieldBytesSize: ModulusSize,
impl<C> From<&PublicKey<C>> for EncodedPoint<<C as Curve>::FieldBytesSize>where
C: CurveArithmetic + PointCompression,
<C as CurveArithmetic>::AffinePoint: FromEncodedPoint<C> + ToEncodedPoint<C>,
<C as Curve>::FieldBytesSize: ModulusSize,
Source§fn from(public_key: &PublicKey<C>) -> EncodedPoint<<C as Curve>::FieldBytesSize>
fn from(public_key: &PublicKey<C>) -> EncodedPoint<<C as Curve>::FieldBytesSize>
Source§impl<C> From<PublicKey<C>> for EncodedPoint<<C as Curve>::FieldBytesSize>where
C: CurveArithmetic + PointCompression,
<C as CurveArithmetic>::AffinePoint: FromEncodedPoint<C> + ToEncodedPoint<C>,
<C as Curve>::FieldBytesSize: ModulusSize,
impl<C> From<PublicKey<C>> for EncodedPoint<<C as Curve>::FieldBytesSize>where
C: CurveArithmetic + PointCompression,
<C as CurveArithmetic>::AffinePoint: FromEncodedPoint<C> + ToEncodedPoint<C>,
<C as Curve>::FieldBytesSize: ModulusSize,
Source§fn from(public_key: PublicKey<C>) -> EncodedPoint<<C as Curve>::FieldBytesSize>
fn from(public_key: PublicKey<C>) -> EncodedPoint<<C as Curve>::FieldBytesSize>
Source§impl<Size> FromStr for EncodedPoint<Size>where
Size: ModulusSize,
Decode a SEC1-encoded point from hexadecimal.
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.