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>
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>
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)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§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>
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§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>
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§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>
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>
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>
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§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>
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>>
fn seed(&self) -> &Option<KeyMaterial<32>>
Get a ref to the seed, if there is one stored with this private key
Source§fn derive_pk(&self) -> MLDSAPublicKey<k, l, PK_LEN>
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]
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
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>
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>
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>
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>
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_out(&self, out: &mut [u8; SK_LEN]) -> usize
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>
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>where
SK: RefUnwindSafe,
PK: RefUnwindSafe,
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>
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>
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>
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> 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