pub struct Cipher { /* private fields */ }Expand description
AEAD cipher for encrypting/decrypting data channel packets
Implementations§
Source§impl Cipher
impl Cipher
Sourcepub fn new(key: &[u8; 32], suite: CipherSuite) -> Self
pub fn new(key: &[u8; 32], suite: CipherSuite) -> Self
Create a new cipher instance
Sourcepub fn encrypt(
&self,
nonce: &[u8; 12],
plaintext: &[u8],
aad: &[u8],
) -> Result<Vec<u8>>
pub fn encrypt( &self, nonce: &[u8; 12], plaintext: &[u8], aad: &[u8], ) -> Result<Vec<u8>>
Encrypt plaintext with associated data
Returns ciphertext with authentication tag appended.
Sourcepub fn encrypt_into(
&self,
nonce: &[u8; 12],
plaintext: &[u8],
aad: &[u8],
out: &mut Vec<u8>,
) -> Result<usize>
pub fn encrypt_into( &self, nonce: &[u8; 12], plaintext: &[u8], aad: &[u8], out: &mut Vec<u8>, ) -> Result<usize>
Encrypt plaintext into pre-allocated buffer
Returns the number of bytes written. Buffer must have capacity for plaintext + TAG_SIZE bytes.
Sourcepub fn decrypt(
&self,
nonce: &[u8; 12],
ciphertext: &[u8],
aad: &[u8],
) -> Result<Vec<u8>>
pub fn decrypt( &self, nonce: &[u8; 12], ciphertext: &[u8], aad: &[u8], ) -> Result<Vec<u8>>
Decrypt ciphertext with associated data
Verifies authentication tag and returns plaintext.
Sourcepub fn generate_nonce(&self) -> [u8; 12]
pub fn generate_nonce(&self) -> [u8; 12]
Generate a random nonce using OsRng
Note: For high-throughput scenarios, consider using counter-based nonces via PacketCipher which avoids syscall overhead.
Sourcepub fn suite(&self) -> CipherSuite
pub fn suite(&self) -> CipherSuite
Get the cipher suite
Auto Trait Implementations§
impl Freeze for Cipher
impl RefUnwindSafe for Cipher
impl Send for Cipher
impl Sync for Cipher
impl Unpin for Cipher
impl UnwindSafe for Cipher
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