Skip to main content

MLDSAPrivateKeyExpanded

Struct MLDSAPrivateKeyExpanded 

Source
pub struct MLDSAPrivateKeyExpanded<const k: usize, const l: usize, const eta: usize, PK: MLDSAPublicKeyInternalTrait<k, PK_LEN>, SK: MLDSAPrivateKeyTrait<k, l, eta, SK_LEN, PK_LEN> + MLDSAPrivateKeyInternalTrait<k, l, eta, SK_LEN, PK_LEN>, const SK_LEN: usize, const PK_LEN: usize> { /* private fields */ }
Expand description

A fully expanded ML-DSA private key that includes the intermediate values needed for performing multiple sign operations with the same private key, which causes the private ey struct to take up more memory, but results in more efficient repeated sign() operations.

Trait Implementations§

Source§

impl<const k: usize, const l: usize, const eta: usize, PK: Clone + MLDSAPublicKeyInternalTrait<k, PK_LEN>, SK: Clone + MLDSAPrivateKeyTrait<k, l, eta, SK_LEN, PK_LEN> + MLDSAPrivateKeyInternalTrait<k, l, eta, SK_LEN, PK_LEN>, const SK_LEN: usize, const PK_LEN: usize> Clone for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>

Source§

fn clone(&self) -> MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<const k: usize, const l: usize, const eta: usize, PK: MLDSAPublicKeyInternalTrait<k, PK_LEN>, SK: MLDSAPrivateKeyTrait<k, l, eta, SK_LEN, PK_LEN> + MLDSAPrivateKeyInternalTrait<k, l, eta, SK_LEN, PK_LEN>, const SK_LEN: usize, const PK_LEN: usize> Debug for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<const k: usize, const l: usize, const eta: usize, PK: MLDSAPublicKeyInternalTrait<k, PK_LEN>, SK: MLDSAPrivateKeyTrait<k, l, eta, SK_LEN, PK_LEN> + MLDSAPrivateKeyInternalTrait<k, l, eta, SK_LEN, PK_LEN>, const SK_LEN: usize, const PK_LEN: usize> Display for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<const k: usize, const l: usize, const eta: usize, PK: MLDSAPublicKeyInternalTrait<k, PK_LEN>, SK: MLDSAPrivateKeyTrait<k, l, eta, SK_LEN, PK_LEN> + MLDSAPrivateKeyInternalTrait<k, l, eta, SK_LEN, PK_LEN>, const SK_LEN: usize, const PK_LEN: usize> Drop for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl<const k: usize, const l: usize, const eta: usize, PK: MLDSAPublicKeyInternalTrait<k, PK_LEN>, SK: MLDSAPrivateKeyTrait<k, l, eta, SK_LEN, PK_LEN> + MLDSAPrivateKeyInternalTrait<k, l, eta, SK_LEN, PK_LEN>, const SK_LEN: usize, const PK_LEN: usize> Eq for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>

Source§

impl<const k: usize, const l: usize, const eta: usize, PK: MLDSAPublicKeyInternalTrait<k, PK_LEN>, SK: MLDSAPrivateKeyTrait<k, l, eta, SK_LEN, PK_LEN> + MLDSAPrivateKeyInternalTrait<k, l, eta, SK_LEN, PK_LEN>, const SK_LEN: usize, const PK_LEN: usize> From<&SK> for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>

Source§

fn from(sk: &SK) -> Self

Fully expands the intermediate values needed for performing multiple encaps operations against the same public key, which causes the MLKEMPublicKey struct to take up

Source§

impl<const k: usize, const l: usize, const eta: usize, PK: MLDSAPublicKeyInternalTrait<k, PK_LEN>, SK: MLDSAPrivateKeyTrait<k, l, eta, SK_LEN, PK_LEN> + MLDSAPrivateKeyInternalTrait<k, l, eta, SK_LEN, PK_LEN>, const SK_LEN: usize, const PK_LEN: usize> MLDSAPrivateKeyTrait<k, l, eta, SK_LEN, PK_LEN> for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>

Source§

fn seed(&self) -> &Option<KeyMaterial<32>>

Get a ref to the seed, if there is one stored with this private key
Source§

fn tr(&self) -> &[u8; 64]

Get a ref to the key hash tr.
Source§

fn A_hat(&self) -> Matrix<k, l>

Get the public matrix A_hat.
Source§

fn derive_pk(&self) -> MLDSAPublicKey<k, l, PK_LEN>

This is a partial implementation of keygen_internal(), and probably not allowed in FIPS mode.
Source§

fn sk_encode(&self) -> [u8; SK_LEN]

Algorithm 24 skEncode(𝜌, 𝐾, 𝑡𝑟, 𝐬1, 𝐬2, 𝐭0) Encodes a secret key for ML-DSA into a byte string. Input: 𝜌 ∈ 𝔹32, 𝐾 ∈ 𝔹32, 𝑡𝑟 ∈ 𝔹64 , 𝐬1 ∈ 𝑅ℓ with coefficients in [−𝜂, 𝜂], 𝐬2 ∈ 𝑅𝑘 with coefficients in [−𝜂, 𝜂], 𝐭0 ∈ 𝑅𝑘 with coefficients in [−2𝑑−1 + 1, 2𝑑−1]. Output: Private key 𝑠𝑘 ∈ 𝔹32+32+64+32⋅((𝑘+ℓ)⋅bitlen (2𝜂)+𝑑𝑘).
Source§

fn sk_encode_out(&self, out: &mut [u8; SK_LEN]) -> usize

Algorithm 24 skEncode(𝜌, 𝐾, 𝑡𝑟, 𝐬1, 𝐬2, 𝐭0) Encodes a secret key for ML-DSA into a byte string. Input: 𝜌 ∈ 𝔹32, 𝐾 ∈ 𝔹32, 𝑡𝑟 ∈ 𝔹64 , 𝐬1 ∈ 𝑅ℓ with coefficients in [−𝜂, 𝜂], 𝐬2 ∈ 𝑅𝑘 with coefficients in [−𝜂, 𝜂], 𝐭0 ∈ 𝑅𝑘 with coefficients in [−2𝑑−1 + 1, 2𝑑−1]. Output: Private key 𝑠𝑘 ∈ 𝔹32+32+64+32⋅((𝑘+ℓ)⋅bitlen (2𝜂)+𝑑𝑘).
Source§

fn sk_decode(sk: &[u8; SK_LEN]) -> Result<Self, SignatureError>

Algorithm 25 skDecode(𝑠𝑘) Reverses the procedure skEncode. Input: Private key 𝑠𝑘 ∈ 𝔹32+32+64+32⋅((ℓ+𝑘)⋅bitlen (2𝜂)+𝑑𝑘). Output: 𝜌 ∈ 𝔹32, 𝐾 ∈ 𝔹32, 𝑡𝑟 ∈ 𝔹64 , 𝐬1 ∈ 𝑅ℓ, 𝐬2 ∈ 𝑅𝑘, 𝐭0 ∈ 𝑅𝑘 with coefficients in [−2𝑑−1 + 1, 2𝑑−1]. Read more
Source§

impl<const k: usize, const l: usize, const eta: usize, PK: MLDSAPublicKeyInternalTrait<k, PK_LEN>, SK: MLDSAPrivateKeyTrait<k, l, eta, SK_LEN, PK_LEN> + MLDSAPrivateKeyInternalTrait<k, l, eta, SK_LEN, PK_LEN>, const SK_LEN: usize, const PK_LEN: usize> PartialEq for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<const k: usize, const l: usize, const eta: usize, PK: MLDSAPublicKeyInternalTrait<k, PK_LEN>, SK: MLDSAPrivateKeyTrait<k, l, eta, SK_LEN, PK_LEN> + MLDSAPrivateKeyInternalTrait<k, l, eta, SK_LEN, PK_LEN>, const SK_LEN: usize, const PK_LEN: usize> Secret for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>

Source§

impl<const k: usize, const l: usize, const eta: usize, PK: MLDSAPublicKeyInternalTrait<k, PK_LEN>, SK: MLDSAPrivateKeyTrait<k, l, eta, SK_LEN, PK_LEN> + MLDSAPrivateKeyInternalTrait<k, l, eta, SK_LEN, PK_LEN>, const SK_LEN: usize, const PK_LEN: usize> SignaturePrivateKey<SK_LEN> for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>

Source§

fn encode(&self) -> [u8; SK_LEN]

Write it out to bytes in its standard encoding.
Source§

fn encode_out(&self, out: &mut [u8; SK_LEN]) -> usize

Write it out to bytes in its standard encoding.
Source§

fn from_bytes(bytes: &[u8]) -> Result<Self, SignatureError>

Read it in from bytes in its standard encoding.

Auto Trait Implementations§

§

impl<const k: usize, const l: usize, const eta: usize, PK, SK, const SK_LEN: usize, const PK_LEN: usize> Freeze for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>
where SK: Freeze,

§

impl<const k: usize, const l: usize, const eta: usize, PK, SK, const SK_LEN: usize, const PK_LEN: usize> RefUnwindSafe for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>

§

impl<const k: usize, const l: usize, const eta: usize, PK, SK, const SK_LEN: usize, const PK_LEN: usize> Send for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>
where SK: Send, PK: Send,

§

impl<const k: usize, const l: usize, const eta: usize, PK, SK, const SK_LEN: usize, const PK_LEN: usize> Sync for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>
where SK: Sync, PK: Sync,

§

impl<const k: usize, const l: usize, const eta: usize, PK, SK, const SK_LEN: usize, const PK_LEN: usize> Unpin for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>
where SK: Unpin, PK: Unpin,

§

impl<const k: usize, const l: usize, const eta: usize, PK, SK, const SK_LEN: usize, const PK_LEN: usize> UnsafeUnpin for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>
where SK: UnsafeUnpin,

§

impl<const k: usize, const l: usize, const eta: usize, PK, SK, const SK_LEN: usize, const PK_LEN: usize> UnwindSafe for MLDSAPrivateKeyExpanded<k, l, eta, PK, SK, SK_LEN, PK_LEN>
where SK: UnwindSafe, PK: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.