pub struct QuantumKeyExchange { /* private fields */ }Expand description
Quantum-resistant key exchange for network connections
Implementations§
Source§impl QuantumKeyExchange
impl QuantumKeyExchange
Sourcepub fn with_security_level(level: MlKemSecurityLevel) -> Self
pub fn with_security_level(level: MlKemSecurityLevel) -> Self
Create a new quantum key exchange with specified security level
Sourcepub fn initialize(&mut self) -> Result<MlKemPublicKey, NetworkError>
pub fn initialize(&mut self) -> Result<MlKemPublicKey, NetworkError>
Initialize by generating our keypair
Sourcepub fn initiate_exchange(
&mut self,
peer_public_key: &MlKemPublicKey,
) -> Result<(MlKemCiphertext, SharedSecret), NetworkError>
pub fn initiate_exchange( &mut self, peer_public_key: &MlKemPublicKey, ) -> Result<(MlKemCiphertext, SharedSecret), NetworkError>
Perform key exchange as initiator (client side)
Sourcepub fn complete_exchange(
&self,
ciphertext: &MlKemCiphertext,
) -> Result<SharedSecret, NetworkError>
pub fn complete_exchange( &self, ciphertext: &MlKemCiphertext, ) -> Result<SharedSecret, NetworkError>
Complete key exchange as responder (server side)
Sourcepub fn get_public_key(&self) -> Option<&MlKemPublicKey>
pub fn get_public_key(&self) -> Option<&MlKemPublicKey>
Get our public key
Trait Implementations§
Source§impl Default for QuantumKeyExchange
impl Default for QuantumKeyExchange
impl Send for QuantumKeyExchange
impl Sync for QuantumKeyExchange
Auto Trait Implementations§
impl Freeze for QuantumKeyExchange
impl RefUnwindSafe for QuantumKeyExchange
impl Unpin for QuantumKeyExchange
impl UnwindSafe for QuantumKeyExchange
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more