pub struct AeadEnvelope<Algorithm: AeadAlgorithm, Nonce, Mac, Data> { /* private fields */ }Expand description
Authenticated encrypted data with its nonce stored alongside it.
The byte representation for the supported algorithms is
nonce || ciphertext || tag.
Implementations§
Source§impl<'a, Nonce: ByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES> + TryFrom<&'a [u8]> + Zeroize, Mac: ByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES> + TryFrom<&'a [u8]> + Zeroize, Data: Bytes + From<&'a [u8]> + Zeroize> AeadEnvelope<XChaCha20Poly1305Ietf, Nonce, Mac, Data>
impl<'a, Nonce: ByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES> + TryFrom<&'a [u8]> + Zeroize, Mac: ByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES> + TryFrom<&'a [u8]> + Zeroize, Data: Bytes + From<&'a [u8]> + Zeroize> AeadEnvelope<XChaCha20Poly1305Ietf, Nonce, Mac, Data>
Sourcepub fn from_bytes(bytes: &'a [u8]) -> Result<Self, Error>
pub fn from_bytes(bytes: &'a [u8]) -> Result<Self, Error>
Initializes an AeadEnvelope from nonce || ciphertext || tag.
§Errors
Returns an error if bytes is shorter than one nonce plus one
authentication tag, or if either field cannot be converted to its
target type.
Source§impl<Nonce: ByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES>, Mac: ByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES>, Data: Bytes> AeadEnvelope<XChaCha20Poly1305Ietf, Nonce, Mac, Data>
impl<Nonce: ByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES>, Mac: ByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES>, Data: Bytes> AeadEnvelope<XChaCha20Poly1305Ietf, Nonce, Mac, Data>
Sourcepub fn open<Output: ResizableBytes + NewBytes, SecretKey: ByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES>>(
&self,
associated_data: Option<&[u8]>,
key: &SecretKey,
) -> Result<Output, Error>
pub fn open<Output: ResizableBytes + NewBytes, SecretKey: ByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES>>( &self, associated_data: Option<&[u8]>, key: &SecretKey, ) -> Result<Output, Error>
Decrypts this envelope using key and optional associated data.
§Errors
Returns an error if the ciphertext exceeds the construction’s maximum length, the output storage has the wrong length, or authentication fails. Authentication fails when the key, associated data, stored nonce, ciphertext, or tag does not match the value used during encryption.
Source§impl AeadEnvelope<XChaCha20Poly1305Ietf, StackByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES>, StackByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES>, Vec<u8>>
impl AeadEnvelope<XChaCha20Poly1305Ietf, StackByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES>, StackByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES>, Vec<u8>>
Sourcepub fn open_to_vec<SecretKey: ByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES>>(
&self,
associated_data: Option<&[u8]>,
key: &SecretKey,
) -> Result<Vec<u8>, Error>
Available on crate feature alloc only.
pub fn open_to_vec<SecretKey: ByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES>>( &self, associated_data: Option<&[u8]>, key: &SecretKey, ) -> Result<Vec<u8>, Error>
alloc only.Source§impl<Nonce: NewByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES> + Zeroize, Mac: NewByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES> + Zeroize, Data: NewBytes + ResizableBytes + Zeroize> AeadEnvelope<XChaCha20Poly1305Ietf, Nonce, Mac, Data>
impl<Nonce: NewByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES> + Zeroize, Mac: NewByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES> + Zeroize, Data: NewBytes + ResizableBytes + Zeroize> AeadEnvelope<XChaCha20Poly1305Ietf, Nonce, Mac, Data>
Sourcepub fn seal<Message: Bytes + ?Sized, SecretKey: ByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES>>(
message: &Message,
associated_data: Option<&[u8]>,
key: &SecretKey,
) -> Result<Self, Error>
pub fn seal<Message: Bytes + ?Sized, SecretKey: ByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES>>( message: &Message, associated_data: Option<&[u8]>, key: &SecretKey, ) -> Result<Self, Error>
Encrypts a message with a generated nonce and stores that nonce with the ciphertext and tag.
§Errors
Returns an error if the message exceeds the construction’s maximum length or the output storage does not resize to the message length.
§Panics
Panics if the operating system’s random number generator fails.
Source§impl AeadEnvelope<XChaCha20Poly1305Ietf, StackByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES>, StackByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES>, Vec<u8>>
impl AeadEnvelope<XChaCha20Poly1305Ietf, StackByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES>, StackByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES>, Vec<u8>>
Sourcepub fn seal_to_vecbox<Message: Bytes + ?Sized, SecretKey: ByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES>>(
message: &Message,
associated_data: Option<&[u8]>,
key: &SecretKey,
) -> Result<Self, Error>
Available on crate feature alloc only.
pub fn seal_to_vecbox<Message: Bytes + ?Sized, SecretKey: ByteArray<CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES>>( message: &Message, associated_data: Option<&[u8]>, key: &SecretKey, ) -> Result<Self, Error>
alloc only.Encrypts a message with a generated nonce and returns a VecEnvelope.
§Errors
Returns an error if the message exceeds the construction’s maximum length.
§Panics
Panics if the operating system’s random number generator fails.
Source§impl<'a, Nonce: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES> + TryFrom<&'a [u8]> + Zeroize, Mac: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES> + TryFrom<&'a [u8]> + Zeroize, Data: Bytes + From<&'a [u8]> + Zeroize> AeadEnvelope<ChaCha20Poly1305Ietf, Nonce, Mac, Data>
impl<'a, Nonce: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES> + TryFrom<&'a [u8]> + Zeroize, Mac: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES> + TryFrom<&'a [u8]> + Zeroize, Data: Bytes + From<&'a [u8]> + Zeroize> AeadEnvelope<ChaCha20Poly1305Ietf, Nonce, Mac, Data>
Sourcepub fn from_bytes(bytes: &'a [u8]) -> Result<Self, Error>
pub fn from_bytes(bytes: &'a [u8]) -> Result<Self, Error>
Initializes an AeadEnvelope from nonce || ciphertext || tag.
§Errors
Returns an error if bytes is shorter than one nonce plus one
authentication tag, or if either field cannot be converted to its
target type.
Source§impl<Nonce: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES>, Mac: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES>, Data: Bytes> AeadEnvelope<ChaCha20Poly1305Ietf, Nonce, Mac, Data>
impl<Nonce: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES>, Mac: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES>, Data: Bytes> AeadEnvelope<ChaCha20Poly1305Ietf, Nonce, Mac, Data>
Sourcepub fn open<Output: ResizableBytes + NewBytes, SecretKey: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES>>(
&self,
associated_data: Option<&[u8]>,
key: &SecretKey,
) -> Result<Output, Error>
pub fn open<Output: ResizableBytes + NewBytes, SecretKey: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES>>( &self, associated_data: Option<&[u8]>, key: &SecretKey, ) -> Result<Output, Error>
Decrypts this envelope using key and optional associated data.
§Errors
Returns an error if the ciphertext exceeds the construction’s maximum length, the output storage has the wrong length, or authentication fails. Authentication fails when the key, associated data, stored nonce, ciphertext, or tag does not match the value used during encryption.
Source§impl AeadEnvelope<ChaCha20Poly1305Ietf, StackByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES>, StackByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES>, Vec<u8>>
impl AeadEnvelope<ChaCha20Poly1305Ietf, StackByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES>, StackByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES>, Vec<u8>>
Sourcepub fn open_to_vec<SecretKey: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES>>(
&self,
associated_data: Option<&[u8]>,
key: &SecretKey,
) -> Result<Vec<u8>, Error>
Available on crate feature alloc only.
pub fn open_to_vec<SecretKey: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES>>( &self, associated_data: Option<&[u8]>, key: &SecretKey, ) -> Result<Vec<u8>, Error>
alloc only.Source§impl<Algorithm: AeadAlgorithm, Nonce, Mac, Data> AeadEnvelope<Algorithm, Nonce, Mac, Data>
impl<Algorithm: AeadAlgorithm, Nonce, Mac, Data> AeadEnvelope<Algorithm, Nonce, Mac, Data>
Sourcepub fn from_parts(nonce: Nonce, tag: Mac, data: Data) -> Self
pub fn from_parts(nonce: Nonce, tag: Mac, data: Data) -> Self
Returns a new AEAD envelope from nonce, tag, and ciphertext data.
Sourcepub fn into_parts(self) -> (Nonce, Mac, Data)
pub fn into_parts(self) -> (Nonce, Mac, Data)
Moves the nonce, tag, and ciphertext out of this instance.
Source§impl<Algorithm: AeadAlgorithm, Nonce: Bytes, Mac: Bytes, Data: Bytes> AeadEnvelope<Algorithm, Nonce, Mac, Data>
impl<Algorithm: AeadAlgorithm, Nonce: Bytes, Mac: Bytes, Data: Bytes> AeadEnvelope<Algorithm, Nonce, Mac, Data>
Sourcepub fn to_vec(&self) -> Vec<u8> ⓘ
Available on crate feature alloc only.
pub fn to_vec(&self) -> Vec<u8> ⓘ
alloc only.Copies self into a new Vec.
Sourcepub fn to_bytes<Output: NewBytes + ResizableBytes>(&self) -> Output
pub fn to_bytes<Output: NewBytes + ResizableBytes>(&self) -> Output
Copies self into the target as nonce || ciphertext || tag, where
the nonce and tag are the first nonce-size and tag-size bytes of
Nonce and Mac.
§Panics
Panics if the nonce or tag is shorter than the algorithm’s size.
Trait Implementations§
Source§impl<Algorithm: Clone + AeadAlgorithm, Nonce: Clone, Mac: Clone, Data: Clone> Clone for AeadEnvelope<Algorithm, Nonce, Mac, Data>
impl<Algorithm: Clone + AeadAlgorithm, Nonce: Clone, Mac: Clone, Data: Clone> Clone for AeadEnvelope<Algorithm, Nonce, Mac, Data>
Source§impl<Algorithm: Debug + AeadAlgorithm, Nonce: Debug, Mac: Debug, Data: Debug> Debug for AeadEnvelope<Algorithm, Nonce, Mac, Data>
impl<Algorithm: Debug + AeadAlgorithm, Nonce: Debug, Mac: Debug, Data: Debug> Debug for AeadEnvelope<Algorithm, Nonce, Mac, Data>
Source§impl<'de, Algorithm: AeadAlgorithm, Nonce, Mac, Data> Deserialize<'de> for AeadEnvelope<Algorithm, Nonce, Mac, Data>
Available on crate feature serde only.
impl<'de, Algorithm: AeadAlgorithm, Nonce, Mac, Data> Deserialize<'de> for AeadEnvelope<Algorithm, Nonce, Mac, Data>
serde only.Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<Algorithm: AeadAlgorithm, Nonce: Bytes, Mac: Bytes, Data: Bytes> PartialEq for AeadEnvelope<Algorithm, Nonce, Mac, Data>
impl<Algorithm: AeadAlgorithm, Nonce: Bytes, Mac: Bytes, Data: Bytes> PartialEq for AeadEnvelope<Algorithm, Nonce, Mac, Data>
Source§impl<Algorithm: AeadAlgorithm, Nonce, Mac, Data> Serialize for AeadEnvelope<Algorithm, Nonce, Mac, Data>
Available on crate feature serde only.
impl<Algorithm: AeadAlgorithm, Nonce, Mac, Data> Serialize for AeadEnvelope<Algorithm, Nonce, Mac, Data>
serde only.Auto Trait Implementations§
impl<Algorithm, Nonce, Mac, Data> Freeze for AeadEnvelope<Algorithm, Nonce, Mac, Data>
impl<Algorithm, Nonce, Mac, Data> RefUnwindSafe for AeadEnvelope<Algorithm, Nonce, Mac, Data>where
PhantomData<Algorithm>: RefUnwindSafe,
Nonce: RefUnwindSafe,
Mac: RefUnwindSafe,
Data: RefUnwindSafe,
impl<Algorithm, Nonce, Mac, Data> Send for AeadEnvelope<Algorithm, Nonce, Mac, Data>
impl<Algorithm, Nonce, Mac, Data> Sync for AeadEnvelope<Algorithm, Nonce, Mac, Data>
impl<Algorithm, Nonce, Mac, Data> Unpin for AeadEnvelope<Algorithm, Nonce, Mac, Data>
impl<Algorithm, Nonce, Mac, Data> UnsafeUnpin for AeadEnvelope<Algorithm, Nonce, Mac, Data>
impl<Algorithm, Nonce, Mac, Data> UnwindSafe for AeadEnvelope<Algorithm, Nonce, Mac, Data>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<'de, T, C> Deserialize<'de, C> for Twhere
C: Config,
T: SchemaRead<'de, C>,
impl<'de, T, C> Deserialize<'de, C> for Twhere
C: Config,
T: SchemaRead<'de, C>,
Source§impl<'de, T> Deserialize<'de> for Twhere
T: SchemaRead<'de, Configuration>,
impl<'de, T> Deserialize<'de> for Twhere
T: SchemaRead<'de, Configuration>,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> DeserializeOwned for Twhere
T: SchemaReadOwned<Configuration>,
impl<T> DeserializeOwned for Twhere
T: SchemaReadOwned<Configuration>,
Source§fn deserialize_from<'de>(src: impl Reader<'de>) -> Result<Self::Dst, ReadError>
fn deserialize_from<'de>(src: impl Reader<'de>) -> Result<Self::Dst, ReadError>
Reader into a new Self::Dst.Source§fn deserialize_from_into<'de>(
src: impl Reader<'de>,
dst: &mut MaybeUninit<Self::Dst>,
) -> Result<(), ReadError>
fn deserialize_from_into<'de>( src: impl Reader<'de>, dst: &mut MaybeUninit<Self::Dst>, ) -> Result<(), ReadError>
Reader into dst.Source§impl<T, C> DeserializeOwned<C> for Twhere
C: Config,
T: SchemaReadOwned<C>,
impl<T, C> DeserializeOwned<C> for Twhere
C: Config,
T: SchemaReadOwned<C>,
Source§fn deserialize_from<'de>(src: impl Reader<'de>) -> Result<Self::Dst, ReadError>
fn deserialize_from<'de>(src: impl Reader<'de>) -> Result<Self::Dst, ReadError>
Reader into a new Self::Dst.Source§fn deserialize_from_into<'de>(
src: impl Reader<'de>,
dst: &mut MaybeUninit<Self::Dst>,
) -> Result<(), ReadError>
fn deserialize_from_into<'de>( src: impl Reader<'de>, dst: &mut MaybeUninit<Self::Dst>, ) -> Result<(), ReadError>
Reader into dst.impl<T, C> SchemaReadOwned<C> for Twhere
C: ConfigCore,
T: for<'de> SchemaRead<'de, C>,
Source§impl<T> Serialize for T
impl<T> Serialize for T
Source§fn serialize(src: &Self::Src) -> Result<Vec<u8>, WriteError>
fn serialize(src: &Self::Src) -> Result<Vec<u8>, WriteError>
alloc only.Vec of bytes.Source§fn serialize_into(dst: impl Writer, src: &Self::Src) -> Result<(), WriteError>
fn serialize_into(dst: impl Writer, src: &Self::Src) -> Result<(), WriteError>
Source§fn serialized_size(src: &Self::Src) -> Result<u64, WriteError>
fn serialized_size(src: &Self::Src) -> Result<u64, WriteError>
Source§impl<T, C> Serialize<C> for T
impl<T, C> Serialize<C> for T
Source§fn serialize(src: &Self::Src, config: C) -> Result<Vec<u8>, WriteError>
fn serialize(src: &Self::Src, config: C) -> Result<Vec<u8>, WriteError>
alloc only.Vec of bytes.Source§fn serialize_into(
dst: impl Writer,
src: &Self::Src,
config: C,
) -> Result<(), WriteError>
fn serialize_into( dst: impl Writer, src: &Self::Src, config: C, ) -> Result<(), WriteError>
Source§fn serialized_size(src: &Self::Src, config: C) -> Result<u64, WriteError>
fn serialized_size(src: &Self::Src, config: C) -> Result<u64, WriteError>
Source§impl<T, Target, C> TagEncoding<C> for Twhere
C: ConfigCore,
T: for<'de> SchemaRead<'de, C, Dst = Target> + SchemaWrite<C, Src = Target> + 'static,
Target: TryFrom<u32>,
u32: TryFrom<Target>,
impl<T, Target, C> TagEncoding<C> for Twhere
C: ConfigCore,
T: for<'de> SchemaRead<'de, C, Dst = Target> + SchemaWrite<C, Src = Target> + 'static,
Target: TryFrom<u32>,
u32: TryFrom<Target>,
type Target = Target
Source§fn try_from_u32(
value: u32,
) -> Result<<T as TagEncoding<C>>::Target, TagEncodingOverflow>
fn try_from_u32( value: u32, ) -> Result<<T as TagEncoding<C>>::Target, TagEncodingOverflow>
u32 to the encoding target.Source§fn try_into_u32(
x: <T as TagEncoding<C>>::Target,
) -> Result<u32, TagEncodingOverflow>
fn try_into_u32( x: <T as TagEncoding<C>>::Target, ) -> Result<u32, TagEncodingOverflow>
u32.Source§fn size_of_from_u32(value: u32) -> Result<usize, WriteError>
fn size_of_from_u32(value: u32) -> Result<usize, WriteError>
u32. Read more