Struct OpeningKey
pub struct OpeningKey { /* private fields */ }
Expand description
A key for opening packets.
Implementations§
§impl OpeningKey
impl OpeningKey
pub fn new(key_material: &[u8; 64]) -> OpeningKey
pub fn new(key_material: &[u8; 64]) -> OpeningKey
Constructs a new OpeningKey
.
pub 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.
pub 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.
§Errors
error::Unspecified
when ciphertext is invalid
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§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§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
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Create a new
Policy
that returns Action::Follow
only if self
and other
return
Action::Follow
. Read more