pub struct MultiDeviceTransport { /* private fields */ }Expand description
Transport state for multi-device Noise protocol
This wraps transport keys extracted from the handshake and provides custom encryption/decryption with random nonces and timestamp-based replay protection.
§Nonces
Nonces are randomly generated for each message. A buffer to protect against replay attacks
is maintained. Nonces older than MAX_MESSAGE_AGE are pruned periodically. Note: These are stored
separately from the persistent device transport state and can be accessed via seen_nonces() and set_seen_nonces().
Implementations§
Source§impl MultiDeviceTransport
Convenience functions for direct transport serialization
impl MultiDeviceTransport
Convenience functions for direct transport serialization
Sourcepub fn save_state(&self) -> Result<Vec<u8>, NoiseProtocolError>
pub fn save_state(&self) -> Result<Vec<u8>, NoiseProtocolError>
Serialize transport state to CBOR bytes
Sourcepub fn restore_state(
bytes: &[u8],
) -> Result<MultiDeviceTransport, NoiseProtocolError>
pub fn restore_state( bytes: &[u8], ) -> Result<MultiDeviceTransport, NoiseProtocolError>
Restore transport state from CBOR bytes
Source§impl MultiDeviceTransport
impl MultiDeviceTransport
Sourcepub fn seen_nonces(&self) -> Vec<u8> ⓘ
pub fn seen_nonces(&self) -> Vec<u8> ⓘ
Get a serialized view of seen nonces for persistence
Sourcepub fn set_seen_nonces(&mut self, data: &[u8]) -> Result<(), NoiseProtocolError>
pub fn set_seen_nonces(&mut self, data: &[u8]) -> Result<(), NoiseProtocolError>
Set seen nonces from persisted data
Sourcepub fn ciphersuite(&self) -> Ciphersuite
pub fn ciphersuite(&self) -> Ciphersuite
Get ciphersuite
Sourcepub fn encrypt(
&mut self,
plaintext: &[u8],
) -> Result<TransportPacket, NoiseProtocolError>
pub fn encrypt( &mut self, plaintext: &[u8], ) -> Result<TransportPacket, NoiseProtocolError>
Encrypt plaintext into a transport packet
Uses a random nonce with current timestamp for replay protection.
Sourcepub fn decrypt(
&mut self,
packet: &TransportPacket,
) -> Result<Vec<u8>, NoiseProtocolError>
pub fn decrypt( &mut self, packet: &TransportPacket, ) -> Result<Vec<u8>, NoiseProtocolError>
Decrypt a transport packet
Sourcepub fn send_rekey_counter(&self) -> u64
pub fn send_rekey_counter(&self) -> u64
Get send rekey counter for persistence
Sourcepub fn recv_rekey_counter(&self) -> u64
pub fn recv_rekey_counter(&self) -> u64
Get receive rekey counter for persistence
Sourcepub fn last_rekeyed_time(&self) -> u64
pub fn last_rekeyed_time(&self) -> u64
Get last rekeyed timestamp for persistence
Sourcepub fn rekey_interval(&self) -> u64
pub fn rekey_interval(&self) -> u64
Get rekey interval for persistence
Trait Implementations§
Source§impl Clone for MultiDeviceTransport
impl Clone for MultiDeviceTransport
Source§fn clone(&self) -> MultiDeviceTransport
fn clone(&self) -> MultiDeviceTransport
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more