pub struct Decaf448;Expand description
Decaf448 curve.
Trait Implementations§
Source§impl Curve for Decaf448
impl Curve for Decaf448
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§type FieldBytesSize = UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>, B0>, B0>
type FieldBytesSize = UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>, B0>, B0>
Size of a serialized field element in bytes (base field or scalar). Read more
Source§type Uint = Uint<crypto_bigint::::uint::U448::{constant#0}>
type Uint = Uint<crypto_bigint::::uint::U448::{constant#0}>
Integer type used to represent field elements of this elliptic curve.
Source§const FIELD_ENDIANNESS: ByteOrder = ByteOrder::BigEndian
const FIELD_ENDIANNESS: ByteOrder = ByteOrder::BigEndian
Endianness used for serializing field elements of this curve.
Source§impl CurveArithmetic for Decaf448
impl CurveArithmetic for Decaf448
Source§type AffinePoint = AffinePoint
type AffinePoint = AffinePoint
Elliptic curve point in affine coordinates.
Source§type ProjectivePoint = DecafPoint
type ProjectivePoint = DecafPoint
Elliptic curve point in projective coordinates. Read more
Source§impl CurveWithScalar for Decaf448
impl CurveWithScalar for Decaf448
type ReprSize = UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>, B0>, B0>
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 Decaf448
impl GroupDigest for Decaf448
Source§const HASH_TO_CURVE_ID: &[u8] = b"decaf448_XOF:SHAKE256_D448MAP_RO_"
const HASH_TO_CURVE_ID: &[u8] = b"decaf448_XOF:SHAKE256_D448MAP_RO_"
Suite ID for the hash to curve routine.
Source§const ENCODE_TO_CURVE_ID: &[u8] = b"decaf448_XOF:SHAKE256_D448MAP_NU_"
const ENCODE_TO_CURVE_ID: &[u8] = b"decaf448_XOF:SHAKE256_D448MAP_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 Decaf448
impl MapToCurve for Decaf448
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<UTerm, B1>, B1>, B1>, B0>, B0>, B0>
type Length = UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>, B0>, B0>
The
L parameter as specified in the RFC.Source§fn map_to_curve(element: FieldElement) -> DecafPoint
fn map_to_curve(element: FieldElement) -> DecafPoint
Map a field element into a curve point.
Source§impl Mul<&<Decaf448 as CurveArithmetic>::AffinePoint> for &DecafScalar
impl Mul<&<Decaf448 as CurveArithmetic>::AffinePoint> for &DecafScalar
Source§type Output = <Decaf448 as CurveArithmetic>::ProjectivePoint
type Output = <Decaf448 as CurveArithmetic>::ProjectivePoint
The resulting type after applying the
* operator.Source§fn mul(self, rhs: &AffinePoint<Decaf448>) -> ProjectivePoint<Decaf448>
fn mul(self, rhs: &AffinePoint<Decaf448>) -> ProjectivePoint<Decaf448>
Performs the
* operation. Read moreSource§impl Mul<&<Decaf448 as CurveArithmetic>::AffinePoint> for DecafScalar
impl Mul<&<Decaf448 as CurveArithmetic>::AffinePoint> for DecafScalar
Source§type Output = <Decaf448 as CurveArithmetic>::ProjectivePoint
type Output = <Decaf448 as CurveArithmetic>::ProjectivePoint
The resulting type after applying the
* operator.Source§fn mul(self, rhs: &AffinePoint<Decaf448>) -> ProjectivePoint<Decaf448>
fn mul(self, rhs: &AffinePoint<Decaf448>) -> ProjectivePoint<Decaf448>
Performs the
* operation. Read moreSource§impl Mul<&<Decaf448 as CurveArithmetic>::ProjectivePoint> for &DecafScalar
impl Mul<&<Decaf448 as CurveArithmetic>::ProjectivePoint> for &DecafScalar
Source§type Output = <Decaf448 as CurveArithmetic>::ProjectivePoint
type Output = <Decaf448 as CurveArithmetic>::ProjectivePoint
The resulting type after applying the
* operator.Source§fn mul(self, rhs: &ProjectivePoint<Decaf448>) -> ProjectivePoint<Decaf448>
fn mul(self, rhs: &ProjectivePoint<Decaf448>) -> ProjectivePoint<Decaf448>
Performs the
* operation. Read moreSource§impl Mul<&<Decaf448 as CurveArithmetic>::ProjectivePoint> for DecafScalar
impl Mul<&<Decaf448 as CurveArithmetic>::ProjectivePoint> for DecafScalar
Source§type Output = <Decaf448 as CurveArithmetic>::ProjectivePoint
type Output = <Decaf448 as CurveArithmetic>::ProjectivePoint
The resulting type after applying the
* operator.Source§fn mul(self, rhs: &ProjectivePoint<Decaf448>) -> ProjectivePoint<Decaf448>
fn mul(self, rhs: &ProjectivePoint<Decaf448>) -> ProjectivePoint<Decaf448>
Performs the
* operation. Read moreSource§impl Mul<<Decaf448 as CurveArithmetic>::AffinePoint> for &DecafScalar
impl Mul<<Decaf448 as CurveArithmetic>::AffinePoint> for &DecafScalar
Source§type Output = <Decaf448 as CurveArithmetic>::ProjectivePoint
type Output = <Decaf448 as CurveArithmetic>::ProjectivePoint
The resulting type after applying the
* operator.Source§fn mul(self, rhs: AffinePoint<Decaf448>) -> ProjectivePoint<Decaf448>
fn mul(self, rhs: AffinePoint<Decaf448>) -> ProjectivePoint<Decaf448>
Performs the
* operation. Read moreSource§impl Mul<<Decaf448 as CurveArithmetic>::AffinePoint> for DecafScalar
impl Mul<<Decaf448 as CurveArithmetic>::AffinePoint> for DecafScalar
Source§type Output = <Decaf448 as CurveArithmetic>::ProjectivePoint
type Output = <Decaf448 as CurveArithmetic>::ProjectivePoint
The resulting type after applying the
* operator.Source§fn mul(self, rhs: AffinePoint<Decaf448>) -> ProjectivePoint<Decaf448>
fn mul(self, rhs: AffinePoint<Decaf448>) -> ProjectivePoint<Decaf448>
Performs the
* operation. Read moreSource§impl Mul<<Decaf448 as CurveArithmetic>::ProjectivePoint> for &DecafScalar
impl Mul<<Decaf448 as CurveArithmetic>::ProjectivePoint> for &DecafScalar
Source§type Output = <Decaf448 as CurveArithmetic>::ProjectivePoint
type Output = <Decaf448 as CurveArithmetic>::ProjectivePoint
The resulting type after applying the
* operator.Source§fn mul(self, rhs: ProjectivePoint<Decaf448>) -> ProjectivePoint<Decaf448>
fn mul(self, rhs: ProjectivePoint<Decaf448>) -> ProjectivePoint<Decaf448>
Performs the
* operation. Read moreSource§impl Mul<<Decaf448 as CurveArithmetic>::ProjectivePoint> for DecafScalar
impl Mul<<Decaf448 as CurveArithmetic>::ProjectivePoint> for DecafScalar
Source§type Output = <Decaf448 as CurveArithmetic>::ProjectivePoint
type Output = <Decaf448 as CurveArithmetic>::ProjectivePoint
The resulting type after applying the
* operator.Source§fn mul(self, rhs: ProjectivePoint<Decaf448>) -> ProjectivePoint<Decaf448>
fn mul(self, rhs: ProjectivePoint<Decaf448>) -> ProjectivePoint<Decaf448>
Performs the
* operation. Read moreSource§impl MulVartime<&<Decaf448 as CurveArithmetic>::AffinePoint> for &DecafScalar
impl MulVartime<&<Decaf448 as CurveArithmetic>::AffinePoint> for &DecafScalar
Source§fn mul_vartime(self, rhs: &AffinePoint<Decaf448>) -> ProjectivePoint<Decaf448>
fn mul_vartime(self, rhs: &AffinePoint<Decaf448>) -> ProjectivePoint<Decaf448>
Multiply
self by rhs in variable-time.Source§impl MulVartime<&<Decaf448 as CurveArithmetic>::AffinePoint> for DecafScalar
impl MulVartime<&<Decaf448 as CurveArithmetic>::AffinePoint> for DecafScalar
Source§fn mul_vartime(self, rhs: &AffinePoint<Decaf448>) -> ProjectivePoint<Decaf448>
fn mul_vartime(self, rhs: &AffinePoint<Decaf448>) -> ProjectivePoint<Decaf448>
Multiply
self by rhs in variable-time.Source§impl MulVartime<&<Decaf448 as CurveArithmetic>::ProjectivePoint> for &DecafScalar
impl MulVartime<&<Decaf448 as CurveArithmetic>::ProjectivePoint> for &DecafScalar
Source§fn mul_vartime(
self,
rhs: &ProjectivePoint<Decaf448>,
) -> ProjectivePoint<Decaf448>
fn mul_vartime( self, rhs: &ProjectivePoint<Decaf448>, ) -> ProjectivePoint<Decaf448>
Multiply
self by rhs in variable-time.Source§impl MulVartime<&<Decaf448 as CurveArithmetic>::ProjectivePoint> for DecafScalar
impl MulVartime<&<Decaf448 as CurveArithmetic>::ProjectivePoint> for DecafScalar
Source§fn mul_vartime(
self,
rhs: &ProjectivePoint<Decaf448>,
) -> ProjectivePoint<Decaf448>
fn mul_vartime( self, rhs: &ProjectivePoint<Decaf448>, ) -> ProjectivePoint<Decaf448>
Multiply
self by rhs in variable-time.Source§impl MulVartime<<Decaf448 as CurveArithmetic>::AffinePoint> for &DecafScalar
impl MulVartime<<Decaf448 as CurveArithmetic>::AffinePoint> for &DecafScalar
Source§fn mul_vartime(self, rhs: AffinePoint<Decaf448>) -> ProjectivePoint<Decaf448>
fn mul_vartime(self, rhs: AffinePoint<Decaf448>) -> ProjectivePoint<Decaf448>
Multiply
self by rhs in variable-time.Source§impl MulVartime<<Decaf448 as CurveArithmetic>::AffinePoint> for DecafScalar
impl MulVartime<<Decaf448 as CurveArithmetic>::AffinePoint> for DecafScalar
Source§fn mul_vartime(self, rhs: AffinePoint<Decaf448>) -> ProjectivePoint<Decaf448>
fn mul_vartime(self, rhs: AffinePoint<Decaf448>) -> ProjectivePoint<Decaf448>
Multiply
self by rhs in variable-time.Source§impl MulVartime<<Decaf448 as CurveArithmetic>::ProjectivePoint> for &DecafScalar
impl MulVartime<<Decaf448 as CurveArithmetic>::ProjectivePoint> for &DecafScalar
Source§fn mul_vartime(
self,
rhs: ProjectivePoint<Decaf448>,
) -> ProjectivePoint<Decaf448>
fn mul_vartime( self, rhs: ProjectivePoint<Decaf448>, ) -> ProjectivePoint<Decaf448>
Multiply
self by rhs in variable-time.Source§impl MulVartime<<Decaf448 as CurveArithmetic>::ProjectivePoint> for DecafScalar
impl MulVartime<<Decaf448 as CurveArithmetic>::ProjectivePoint> for DecafScalar
Source§fn mul_vartime(
self,
rhs: ProjectivePoint<Decaf448>,
) -> ProjectivePoint<Decaf448>
fn mul_vartime( self, rhs: ProjectivePoint<Decaf448>, ) -> ProjectivePoint<Decaf448>
Multiply
self by rhs in variable-time.Source§impl Ord for Decaf448
impl Ord for Decaf448
Source§impl PartialOrd for Decaf448
impl PartialOrd for Decaf448
Source§impl PointCompression for Decaf448
impl PointCompression for Decaf448
Source§const COMPRESS_POINTS: bool = true
const COMPRESS_POINTS: bool = true
Should point compression be applied by default?
impl Copy for Decaf448
impl Eq for Decaf448
impl PrimeCurve for Decaf448
impl StructuralPartialEq for Decaf448
Auto Trait Implementations§
impl Freeze for Decaf448
impl RefUnwindSafe for Decaf448
impl Send for Decaf448
impl Sync for Decaf448
impl Unpin for Decaf448
impl UnsafeUnpin for Decaf448
impl UnwindSafe for Decaf448
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