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.
Auto Trait Implementations§
impl Freeze for OpeningKey
impl RefUnwindSafe for OpeningKey
impl Send for OpeningKey
impl Sync for OpeningKey
impl Unpin for OpeningKey
impl UnwindSafe for OpeningKey
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