Struct ring::aead::chacha20_poly1305_openssh::OpeningKey
source · pub struct OpeningKey { /* private fields */ }
Expand description
A key for opening packets.
Implementations§
source§impl OpeningKey
impl OpeningKey
sourcepub fn new(key_material: &[u8; 64]) -> OpeningKey
pub fn new(key_material: &[u8; 64]) -> OpeningKey
Constructs a new OpeningKey
.
sourcepub fn decrypt_packet_length(
&self,
sequence_number: u32,
encrypted_packet_length: [u8; 4]
) -> [u8; 4]
pub fn decrypt_packet_length( &self, sequence_number: u32, encrypted_packet_length: [u8; 4] ) -> [u8; 4]
Returns the decrypted, but unauthenticated, packet length.
Importantly, the result won’t be authenticated until open_in_place
is
called.
sourcepub fn open_in_place<'a>(
&self,
sequence_number: u32,
ciphertext_in_plaintext_out: &'a mut [u8],
tag: &[u8; 16]
) -> Result<&'a [u8], Unspecified>
pub fn open_in_place<'a>( &self, sequence_number: u32, ciphertext_in_plaintext_out: &'a mut [u8], tag: &[u8; 16] ) -> Result<&'a [u8], Unspecified>
Opens (authenticates and decrypts) a packet.
ciphertext_in_plaintext_out
must be of the form
encrypted_packet_length||ciphertext
where ciphertext
is the
encrypted plaintext
. When the function succeeds the ciphertext is
replaced by the plaintext and the result is Ok(plaintext)
, where
plaintext
is &ciphertext_in_plaintext_out[PACKET_LENGTH_LEN..]
;
otherwise the contents of ciphertext_in_plaintext_out
are unspecified
and must not be used.