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> 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_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>
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.
The entire output buffer is zeroized before the encoding is written.
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.
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>
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