pub struct KeyResponse {
pub key_proofs: Vec<KeyProof>,
}Expand description
Response containing proofs of ML-DSA private key possession
The client responds to an KeyChallenge by providing one or more
key proofs. Each proof demonstrates possession of a specific ML-DSA private key.
§Proof Construction
For each key the client wishes to prove:
- Construct signature data:
nonce || server_public_key - Sign the data using the ML-DSA private key
- Create a
KeyProofwith the public key and signature
§Wire Size
Approximate serialized size per key proof: ~2500 bytes
- public_key: ~1312 bytes (ML-DSA-65 public key)
- signature: ~2420 bytes (ML-DSA-65 signature)
- overhead: ~8 bytes (postcard encoding)
Total message size scales linearly with number of keys being proven.
Fields§
§key_proofs: Vec<KeyProof>List of key proofs - one for each ML-DSA key being proven
The client can prove multiple keys in a single response. Each proof is verified independently by the server. At least one proof must succeed for the handshake to complete successfully.
§Ordering
The order of proofs in this vector corresponds to the indices used
in KeyResult.failed_indices for error reporting.
Trait Implementations§
Source§impl Clone for KeyResponse
impl Clone for KeyResponse
Source§fn clone(&self) -> KeyResponse
fn clone(&self) -> KeyResponse
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for KeyResponse
impl Debug for KeyResponse
Source§impl<'de> Deserialize<'de> for KeyResponse
impl<'de> Deserialize<'de> for KeyResponse
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for KeyResponse
impl RefUnwindSafe for KeyResponse
impl Send for KeyResponse
impl Sync for KeyResponse
impl Unpin for KeyResponse
impl UnwindSafe for KeyResponse
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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