pub struct Ed448;Expand description
Edwards448 curve.
Trait Implementations§
Source§impl Curve for Ed448
impl Curve for Ed448
Source§const ORDER: Odd<U448> = ORDER
const ORDER: Odd<U448> = ORDER
Order of this curve’s prime order subgroup, i.e. number of elements in the scalar field.
Source§const FIELD_ENDIANNESS: ByteOrder = ByteOrder::LittleEndian
const FIELD_ENDIANNESS: ByteOrder = ByteOrder::LittleEndian
Endianness used for serializing field elements of this curve.
Source§impl CurveArithmetic for Ed448
impl CurveArithmetic for Ed448
Source§type AffinePoint = AffinePoint
type AffinePoint = AffinePoint
Elliptic curve point in affine coordinates.
Source§type ProjectivePoint = EdwardsPoint
type ProjectivePoint = EdwardsPoint
Elliptic curve point in projective coordinates. Read more
Source§impl CurveWithScalar for Ed448
impl CurveWithScalar for Ed448
type ReprSize = UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>, B0>, B1>
fn from_bytes_mod_order_wide( input: &Array<u8, Prod<<Self as CurveWithScalar>::ReprSize, U2>>, ) -> Scalar<Self>
fn from_canonical_bytes( bytes: &Array<u8, <Self as CurveWithScalar>::ReprSize>, ) -> CtOption<Scalar<Self>>
fn to_repr( scalar: &Scalar<Self>, ) -> Array<u8, <Self as CurveWithScalar>::ReprSize>
Source§impl GroupDigest for Ed448
impl GroupDigest for Ed448
Source§const HASH_TO_CURVE_ID: &[u8] = b"edwards448_XOF:SHAKE256_ELL2_RO_"
const HASH_TO_CURVE_ID: &[u8] = b"edwards448_XOF:SHAKE256_ELL2_RO_"
Suite ID for the hash to curve routine.
Source§const ENCODE_TO_CURVE_ID: &[u8] = b"edwards448_XOF:SHAKE256_ELL2_NU_"
const ENCODE_TO_CURVE_ID: &[u8] = b"edwards448_XOF:SHAKE256_ELL2_NU_"
Suite ID for the encode to curve routine.
Source§type ExpandMsg = ExpandMsgXof<Shake<136>>
type ExpandMsg = ExpandMsgXof<Shake<136>>
The
expand_message function to use.Source§fn hash_from_bytes(
msg: &[&[u8]],
dst: &[&[u8]],
) -> Result<Self::ProjectivePoint, <Self::ExpandMsg as ExpandMsg<Self::SecurityLevel>>::Error>
fn hash_from_bytes( msg: &[&[u8]], dst: &[&[u8]], ) -> Result<Self::ProjectivePoint, <Self::ExpandMsg as ExpandMsg<Self::SecurityLevel>>::Error>
Computes the hash to curve routine, with message equal to the concatenation of the elements
in
msg, and domain separator equal to the concatenation of the elements in dst. Read moreSource§fn encode_from_bytes(
msg: &[&[u8]],
dst: &[&[u8]],
) -> Result<Self::ProjectivePoint, <Self::ExpandMsg as ExpandMsg<Self::SecurityLevel>>::Error>
fn encode_from_bytes( msg: &[&[u8]], dst: &[&[u8]], ) -> Result<Self::ProjectivePoint, <Self::ExpandMsg as ExpandMsg<Self::SecurityLevel>>::Error>
Computes the encode to curve routine, with message equal to the concatenation of the elements
in
msg, and domain separator equal to the concatenation of the elements in dst. Read moreSource§impl MapToCurve for Ed448
impl MapToCurve for Ed448
Source§type SecurityLevel = UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>, B0>
type SecurityLevel = UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>, B0>
The target security level in bytes:
https://www.rfc-editor.org/rfc/rfc9380.html#section-8.9-2.2
https://www.rfc-editor.org/rfc/rfc9380.html#name-target-security-levels
Source§type FieldElement = FieldElement
type FieldElement = FieldElement
The field element representation for a group value with multiple elements.
Source§type Length = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B0>, B1>, B0>, B0>
type Length = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B0>, B1>, B0>, B0>
The
L parameter as specified in the RFC.Source§fn map_to_curve(element: FieldElement) -> EdwardsPoint
fn map_to_curve(element: FieldElement) -> EdwardsPoint
Map a field element into a curve point.
Source§impl Mul<&<Ed448 as CurveArithmetic>::AffinePoint> for &EdwardsScalar
impl Mul<&<Ed448 as CurveArithmetic>::AffinePoint> for &EdwardsScalar
Source§type Output = <Ed448 as CurveArithmetic>::ProjectivePoint
type Output = <Ed448 as CurveArithmetic>::ProjectivePoint
The resulting type after applying the
* operator.Source§fn mul(self, rhs: &AffinePoint<Ed448>) -> ProjectivePoint<Ed448>
fn mul(self, rhs: &AffinePoint<Ed448>) -> ProjectivePoint<Ed448>
Performs the
* operation. Read moreSource§impl Mul<&<Ed448 as CurveArithmetic>::AffinePoint> for EdwardsScalar
impl Mul<&<Ed448 as CurveArithmetic>::AffinePoint> for EdwardsScalar
Source§type Output = <Ed448 as CurveArithmetic>::ProjectivePoint
type Output = <Ed448 as CurveArithmetic>::ProjectivePoint
The resulting type after applying the
* operator.Source§fn mul(self, rhs: &AffinePoint<Ed448>) -> ProjectivePoint<Ed448>
fn mul(self, rhs: &AffinePoint<Ed448>) -> ProjectivePoint<Ed448>
Performs the
* operation. Read moreSource§impl Mul<&<Ed448 as CurveArithmetic>::ProjectivePoint> for &EdwardsScalar
impl Mul<&<Ed448 as CurveArithmetic>::ProjectivePoint> for &EdwardsScalar
Source§type Output = <Ed448 as CurveArithmetic>::ProjectivePoint
type Output = <Ed448 as CurveArithmetic>::ProjectivePoint
The resulting type after applying the
* operator.Source§fn mul(self, rhs: &ProjectivePoint<Ed448>) -> ProjectivePoint<Ed448>
fn mul(self, rhs: &ProjectivePoint<Ed448>) -> ProjectivePoint<Ed448>
Performs the
* operation. Read moreSource§impl Mul<&<Ed448 as CurveArithmetic>::ProjectivePoint> for EdwardsScalar
impl Mul<&<Ed448 as CurveArithmetic>::ProjectivePoint> for EdwardsScalar
Source§type Output = <Ed448 as CurveArithmetic>::ProjectivePoint
type Output = <Ed448 as CurveArithmetic>::ProjectivePoint
The resulting type after applying the
* operator.Source§fn mul(self, rhs: &ProjectivePoint<Ed448>) -> ProjectivePoint<Ed448>
fn mul(self, rhs: &ProjectivePoint<Ed448>) -> ProjectivePoint<Ed448>
Performs the
* operation. Read moreSource§impl Mul<<Ed448 as CurveArithmetic>::AffinePoint> for &EdwardsScalar
impl Mul<<Ed448 as CurveArithmetic>::AffinePoint> for &EdwardsScalar
Source§type Output = <Ed448 as CurveArithmetic>::ProjectivePoint
type Output = <Ed448 as CurveArithmetic>::ProjectivePoint
The resulting type after applying the
* operator.Source§fn mul(self, rhs: AffinePoint<Ed448>) -> ProjectivePoint<Ed448>
fn mul(self, rhs: AffinePoint<Ed448>) -> ProjectivePoint<Ed448>
Performs the
* operation. Read moreSource§impl Mul<<Ed448 as CurveArithmetic>::AffinePoint> for EdwardsScalar
impl Mul<<Ed448 as CurveArithmetic>::AffinePoint> for EdwardsScalar
Source§type Output = <Ed448 as CurveArithmetic>::ProjectivePoint
type Output = <Ed448 as CurveArithmetic>::ProjectivePoint
The resulting type after applying the
* operator.Source§fn mul(self, rhs: AffinePoint<Ed448>) -> ProjectivePoint<Ed448>
fn mul(self, rhs: AffinePoint<Ed448>) -> ProjectivePoint<Ed448>
Performs the
* operation. Read moreSource§impl Mul<<Ed448 as CurveArithmetic>::ProjectivePoint> for &EdwardsScalar
impl Mul<<Ed448 as CurveArithmetic>::ProjectivePoint> for &EdwardsScalar
Source§type Output = <Ed448 as CurveArithmetic>::ProjectivePoint
type Output = <Ed448 as CurveArithmetic>::ProjectivePoint
The resulting type after applying the
* operator.Source§fn mul(self, rhs: ProjectivePoint<Ed448>) -> ProjectivePoint<Ed448>
fn mul(self, rhs: ProjectivePoint<Ed448>) -> ProjectivePoint<Ed448>
Performs the
* operation. Read moreSource§impl Mul<<Ed448 as CurveArithmetic>::ProjectivePoint> for EdwardsScalar
impl Mul<<Ed448 as CurveArithmetic>::ProjectivePoint> for EdwardsScalar
Source§type Output = <Ed448 as CurveArithmetic>::ProjectivePoint
type Output = <Ed448 as CurveArithmetic>::ProjectivePoint
The resulting type after applying the
* operator.Source§fn mul(self, rhs: ProjectivePoint<Ed448>) -> ProjectivePoint<Ed448>
fn mul(self, rhs: ProjectivePoint<Ed448>) -> ProjectivePoint<Ed448>
Performs the
* operation. Read moreSource§impl MulVartime<&<Ed448 as CurveArithmetic>::AffinePoint> for &EdwardsScalar
impl MulVartime<&<Ed448 as CurveArithmetic>::AffinePoint> for &EdwardsScalar
Source§fn mul_vartime(self, rhs: &AffinePoint<Ed448>) -> ProjectivePoint<Ed448>
fn mul_vartime(self, rhs: &AffinePoint<Ed448>) -> ProjectivePoint<Ed448>
Multiply
self by rhs in variable-time.Source§impl MulVartime<&<Ed448 as CurveArithmetic>::AffinePoint> for EdwardsScalar
impl MulVartime<&<Ed448 as CurveArithmetic>::AffinePoint> for EdwardsScalar
Source§fn mul_vartime(self, rhs: &AffinePoint<Ed448>) -> ProjectivePoint<Ed448>
fn mul_vartime(self, rhs: &AffinePoint<Ed448>) -> ProjectivePoint<Ed448>
Multiply
self by rhs in variable-time.Source§impl MulVartime<&<Ed448 as CurveArithmetic>::ProjectivePoint> for &EdwardsScalar
impl MulVartime<&<Ed448 as CurveArithmetic>::ProjectivePoint> for &EdwardsScalar
Source§fn mul_vartime(self, rhs: &ProjectivePoint<Ed448>) -> ProjectivePoint<Ed448>
fn mul_vartime(self, rhs: &ProjectivePoint<Ed448>) -> ProjectivePoint<Ed448>
Multiply
self by rhs in variable-time.Source§impl MulVartime<&<Ed448 as CurveArithmetic>::ProjectivePoint> for EdwardsScalar
impl MulVartime<&<Ed448 as CurveArithmetic>::ProjectivePoint> for EdwardsScalar
Source§fn mul_vartime(self, rhs: &ProjectivePoint<Ed448>) -> ProjectivePoint<Ed448>
fn mul_vartime(self, rhs: &ProjectivePoint<Ed448>) -> ProjectivePoint<Ed448>
Multiply
self by rhs in variable-time.Source§impl MulVartime<<Ed448 as CurveArithmetic>::AffinePoint> for &EdwardsScalar
impl MulVartime<<Ed448 as CurveArithmetic>::AffinePoint> for &EdwardsScalar
Source§fn mul_vartime(self, rhs: AffinePoint<Ed448>) -> ProjectivePoint<Ed448>
fn mul_vartime(self, rhs: AffinePoint<Ed448>) -> ProjectivePoint<Ed448>
Multiply
self by rhs in variable-time.Source§impl MulVartime<<Ed448 as CurveArithmetic>::AffinePoint> for EdwardsScalar
impl MulVartime<<Ed448 as CurveArithmetic>::AffinePoint> for EdwardsScalar
Source§fn mul_vartime(self, rhs: AffinePoint<Ed448>) -> ProjectivePoint<Ed448>
fn mul_vartime(self, rhs: AffinePoint<Ed448>) -> ProjectivePoint<Ed448>
Multiply
self by rhs in variable-time.Source§impl MulVartime<<Ed448 as CurveArithmetic>::ProjectivePoint> for &EdwardsScalar
impl MulVartime<<Ed448 as CurveArithmetic>::ProjectivePoint> for &EdwardsScalar
Source§fn mul_vartime(self, rhs: ProjectivePoint<Ed448>) -> ProjectivePoint<Ed448>
fn mul_vartime(self, rhs: ProjectivePoint<Ed448>) -> ProjectivePoint<Ed448>
Multiply
self by rhs in variable-time.Source§impl MulVartime<<Ed448 as CurveArithmetic>::ProjectivePoint> for EdwardsScalar
impl MulVartime<<Ed448 as CurveArithmetic>::ProjectivePoint> for EdwardsScalar
Source§fn mul_vartime(self, rhs: ProjectivePoint<Ed448>) -> ProjectivePoint<Ed448>
fn mul_vartime(self, rhs: ProjectivePoint<Ed448>) -> ProjectivePoint<Ed448>
Multiply
self by rhs in variable-time.Source§impl Ord for Ed448
impl Ord for Ed448
Source§impl PartialOrd for Ed448
impl PartialOrd for Ed448
Source§impl PointCompression for Ed448
impl PointCompression for Ed448
Source§const COMPRESS_POINTS: bool = true
const COMPRESS_POINTS: bool = true
Should point compression be applied by default?
impl Copy for Ed448
impl Eq for Ed448
impl PrimeCurve for Ed448
impl StructuralPartialEq for Ed448
Auto Trait Implementations§
impl Freeze for Ed448
impl RefUnwindSafe for Ed448
impl Send for Ed448
impl Sync for Ed448
impl Unpin for Ed448
impl UnsafeUnpin for Ed448
impl UnwindSafe for Ed448
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more