pub struct DryocSealedBox<EncapsulatedKey: ByteArray<CRYPTO_KEM_XWING_CIPHERTEXTBYTES> + Zeroize, Mac: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES> + Zeroize, Data: Bytes + Zeroize> { /* private fields */ }Expand description
A post-quantum sealed box: an HPKE-encrypted message for one recipient.
Refer to crate::dryocsealedbox for the byte format and sample usage.
Implementations§
Source§impl<EncapsulatedKey: NewByteArray<CRYPTO_KEM_XWING_CIPHERTEXTBYTES> + Zeroize, Mac: NewByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES> + Zeroize, Data: NewBytes + ResizableBytes + Zeroize> DryocSealedBox<EncapsulatedKey, Mac, Data>
impl<EncapsulatedKey: NewByteArray<CRYPTO_KEM_XWING_CIPHERTEXTBYTES> + Zeroize, Mac: NewByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES> + Zeroize, Data: NewBytes + ResizableBytes + Zeroize> DryocSealedBox<EncapsulatedKey, Mac, Data>
Sourcepub fn seal<Message: Bytes + ?Sized, RecipientPublicKey: ByteArray<CRYPTO_KEM_XWING_PUBLICKEYBYTES>>(
message: &Message,
recipient_public_key: &RecipientPublicKey,
) -> Result<Self, Error>
pub fn seal<Message: Bytes + ?Sized, RecipientPublicKey: ByteArray<CRYPTO_KEM_XWING_PUBLICKEYBYTES>>( message: &Message, recipient_public_key: &RecipientPublicKey, ) -> Result<Self, Error>
Encrypts message for recipient_public_key, returning a new
DryocSealedBox.
§Errors
Returns an error if the message is too long or recipient_public_key
is not a valid X-Wing public key.
§Panics
Panics if the operating system’s random number generator fails.
Source§impl<'a, EncapsulatedKey: ByteArray<CRYPTO_KEM_XWING_CIPHERTEXTBYTES> + TryFrom<&'a [u8]> + Zeroize, Mac: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES> + TryFrom<&'a [u8]> + Zeroize, Data: Bytes + From<&'a [u8]> + Zeroize> DryocSealedBox<EncapsulatedKey, Mac, Data>
impl<'a, EncapsulatedKey: ByteArray<CRYPTO_KEM_XWING_CIPHERTEXTBYTES> + TryFrom<&'a [u8]> + Zeroize, Mac: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES> + TryFrom<&'a [u8]> + Zeroize, Data: Bytes + From<&'a [u8]> + Zeroize> DryocSealedBox<EncapsulatedKey, Mac, Data>
Source§impl<EncapsulatedKey: ByteArray<CRYPTO_KEM_XWING_CIPHERTEXTBYTES> + Zeroize, Mac: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES> + Zeroize, Data: Bytes + Zeroize> DryocSealedBox<EncapsulatedKey, Mac, Data>
impl<EncapsulatedKey: ByteArray<CRYPTO_KEM_XWING_CIPHERTEXTBYTES> + Zeroize, Mac: ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES> + Zeroize, Data: Bytes + Zeroize> DryocSealedBox<EncapsulatedKey, Mac, Data>
Sourcepub fn from_parts(enc: EncapsulatedKey, tag: Mac, data: Data) -> Self
pub fn from_parts(enc: EncapsulatedKey, tag: Mac, data: Data) -> Self
Returns a new box from its parts, consuming each.
Sourcepub fn enc(&self) -> &EncapsulatedKey
pub fn enc(&self) -> &EncapsulatedKey
Returns the X-Wing ciphertext (HPKE enc).
Sourcepub fn into_parts(self) -> (EncapsulatedKey, Mac, Data)
pub fn into_parts(self) -> (EncapsulatedKey, Mac, Data)
Moves the X-Wing ciphertext, tag and encrypted message out of this box.
Sourcepub fn to_vec(&self) -> Vec<u8> ⓘ
Available on crate feature alloc only.
pub fn to_vec(&self) -> Vec<u8> ⓘ
alloc only.Copies the box’s wire format into a new Vec.
Sourcepub fn to_bytes<Bytes: NewBytes + ResizableBytes>(&self) -> Bytes
pub fn to_bytes<Bytes: NewBytes + ResizableBytes>(&self) -> Bytes
Copies the box’s wire format into new Bytes.
Sourcepub fn open<Output: ResizableBytes + NewBytes + Zeroize, RecipientPublicKey: ByteArray<CRYPTO_KEM_XWING_PUBLICKEYBYTES> + Zeroize, RecipientSecretKey: ByteArray<CRYPTO_KEM_XWING_SECRETKEYBYTES> + Zeroize>(
&self,
recipient_keypair: &KeyPair<RecipientPublicKey, RecipientSecretKey>,
) -> Result<Output, Error>
pub fn open<Output: ResizableBytes + NewBytes + Zeroize, RecipientPublicKey: ByteArray<CRYPTO_KEM_XWING_PUBLICKEYBYTES> + Zeroize, RecipientSecretKey: ByteArray<CRYPTO_KEM_XWING_SECRETKEYBYTES> + Zeroize>( &self, recipient_keypair: &KeyPair<RecipientPublicKey, RecipientSecretKey>, ) -> Result<Output, Error>
Decrypts this box with recipient_keypair, returning the message.
§Errors
Returns Error::AuthenticationFailed if the box was not sealed for
this key pair or was modified, or an error if the X-Wing ciphertext
carries a low-order X25519 point.
Source§impl DryocSealedBox<EncapsulatedKey, Mac, Vec<u8>>
impl DryocSealedBox<EncapsulatedKey, Mac, Vec<u8>>
Sourcepub fn seal_to_vecbox<Message: Bytes + ?Sized, RecipientPublicKey: ByteArray<CRYPTO_KEM_XWING_PUBLICKEYBYTES>>(
message: &Message,
recipient_public_key: &RecipientPublicKey,
) -> Result<Self, Error>
Available on crate feature alloc only.
pub fn seal_to_vecbox<Message: Bytes + ?Sized, RecipientPublicKey: ByteArray<CRYPTO_KEM_XWING_PUBLICKEYBYTES>>( message: &Message, recipient_public_key: &RecipientPublicKey, ) -> Result<Self, Error>
alloc only.Encrypts message for recipient_public_key into a VecBox.
Provided for convenience.
§Errors
Returns the same errors as DryocSealedBox::seal.
Sourcepub fn open_to_vec<RecipientPublicKey: ByteArray<CRYPTO_KEM_XWING_PUBLICKEYBYTES> + Zeroize, RecipientSecretKey: ByteArray<CRYPTO_KEM_XWING_SECRETKEYBYTES> + Zeroize>(
&self,
recipient_keypair: &KeyPair<RecipientPublicKey, RecipientSecretKey>,
) -> Result<Vec<u8>, Error>
Available on crate feature alloc only.
pub fn open_to_vec<RecipientPublicKey: ByteArray<CRYPTO_KEM_XWING_PUBLICKEYBYTES> + Zeroize, RecipientSecretKey: ByteArray<CRYPTO_KEM_XWING_SECRETKEYBYTES> + Zeroize>( &self, recipient_keypair: &KeyPair<RecipientPublicKey, RecipientSecretKey>, ) -> Result<Vec<u8>, Error>
alloc only.Decrypts this box with recipient_keypair into a Vec. Provided
for convenience.
§Errors
Returns the same errors as DryocSealedBox::open.
Trait Implementations§
Source§impl<EncapsulatedKey: Clone + ByteArray<CRYPTO_KEM_XWING_CIPHERTEXTBYTES> + Zeroize, Mac: Clone + ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES> + Zeroize, Data: Clone + Bytes + Zeroize> Clone for DryocSealedBox<EncapsulatedKey, Mac, Data>
impl<EncapsulatedKey: Clone + ByteArray<CRYPTO_KEM_XWING_CIPHERTEXTBYTES> + Zeroize, Mac: Clone + ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES> + Zeroize, Data: Clone + Bytes + Zeroize> Clone for DryocSealedBox<EncapsulatedKey, Mac, Data>
Source§impl<EncapsulatedKey: Debug + ByteArray<CRYPTO_KEM_XWING_CIPHERTEXTBYTES> + Zeroize, Mac: Debug + ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES> + Zeroize, Data: Debug + Bytes + Zeroize> Debug for DryocSealedBox<EncapsulatedKey, Mac, Data>
impl<EncapsulatedKey: Debug + ByteArray<CRYPTO_KEM_XWING_CIPHERTEXTBYTES> + Zeroize, Mac: Debug + ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES> + Zeroize, Data: Debug + Bytes + Zeroize> Debug for DryocSealedBox<EncapsulatedKey, Mac, Data>
Source§impl<'de, EncapsulatedKey, Mac, Data> Deserialize<'de> for DryocSealedBox<EncapsulatedKey, Mac, Data>where
EncapsulatedKey: Deserialize<'de> + ByteArray<CRYPTO_KEM_XWING_CIPHERTEXTBYTES> + Zeroize,
Mac: Deserialize<'de> + ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES> + Zeroize,
Data: Deserialize<'de> + Bytes + Zeroize,
Available on crate feature serde only.
impl<'de, EncapsulatedKey, Mac, Data> Deserialize<'de> for DryocSealedBox<EncapsulatedKey, Mac, Data>where
EncapsulatedKey: Deserialize<'de> + ByteArray<CRYPTO_KEM_XWING_CIPHERTEXTBYTES> + Zeroize,
Mac: Deserialize<'de> + ByteArray<CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES> + Zeroize,
Data: Deserialize<'de> + Bytes + Zeroize,
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<EncapsulatedKey, Mac, Data> Serialize for DryocSealedBox<EncapsulatedKey, Mac, Data>
Available on crate feature serde only.
impl<EncapsulatedKey, Mac, Data> Serialize for DryocSealedBox<EncapsulatedKey, Mac, Data>
serde only.