Skip to main content

EncapsulationKey

Struct EncapsulationKey 

Source
pub struct EncapsulationKey<P>
where P: KemParams,
{ /* private fields */ }
Expand description

An EncapsulationKey provides the ability to encapsulate a shared key so that it can only be decapsulated by the holder of the corresponding decapsulation key.

Implementations§

Source§

impl<P> EncapsulationKey<P>
where P: Kem<SharedKeySize = U32> + KemParams,

Source

pub fn new(encapsulation_key: &Key<Self>) -> Result<Self, InvalidKey>

Create a new EncapsulationKey from its serialized form.

§Errors

If the key failed validation during decoding.

Source

pub fn encapsulate_deterministic(&self, m: &B32) -> (Ciphertext<P>, SharedKey)

Encapsulates with the given randomness. This is useful for testing against known vectors.

§Warning

Do NOT use this function unless you know what you’re doing. If you fail to use all uniform random bytes even once, you can have catastrophic security failure.

Trait Implementations§

Source§

impl<P> AssociatedAlgorithmIdentifier for EncapsulationKey<P>
where P: KemParams + AssociatedAlgorithmIdentifier<Params = AnyRef<'static>>,

Available on crate feature pkcs8 only.
Source§

const ALGORITHM_IDENTIFIER: AlgorithmIdentifier<Self::Params> = P::ALGORITHM_IDENTIFIER

AlgorithmIdentifier for this structure.
Source§

type Params = <P as AssociatedAlgorithmIdentifier>::Params

Algorithm parameters.
Source§

impl<P> Clone for EncapsulationKey<P>
where P: KemParams + Clone,

Source§

fn clone(&self) -> EncapsulationKey<P>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<P> Debug for EncapsulationKey<P>
where P: KemParams + Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<P> Encapsulate for EncapsulationKey<P>
where P: Kem + KemParams,

Source§

type Kem = P

KEM algorithm this encapsulator is for.
Source§

fn encapsulate_with_rng<R>(&self, rng: &mut R) -> (Ciphertext<P>, SharedKey)
where R: CryptoRng + ?Sized,

Encapsulates a fresh SharedKey generated using the supplied random number generator R.
Source§

fn encapsulate( &self, ) -> (Array<u8, <Self::Kem as Kem>::CiphertextSize>, Array<u8, <Self::Kem as Kem>::SharedKeySize>)

Available on crate feature getrandom only.
Encapsulate a fresh shared secret generated using the system’s secure RNG.
Source§

impl<P> EncodePublicKey for EncapsulationKey<P>
where P: KemParams + AssociatedAlgorithmIdentifier<Params = AnyRef<'static>>,

Available on crate features pkcs8 and alloc only.
Source§

fn to_public_key_der(&self) -> Result<Document>

Serialize the given EncapsulationKey into DER format. Returns a Document which wraps the DER document in case of success.

Source§

fn to_public_key_pem(&self, line_ending: LineEnding) -> Result<String, Error>

Available on crate feature pem only.
Serialize this public key as PEM-encoded SPKI with the given LineEnding. Read more
Source§

impl<P> KeyExport for EncapsulationKey<P>
where P: KemParams,

Source§

fn to_bytes(&self) -> Key<Self>

Serialize this key as a byte array.
Source§

impl<P> KeySizeUser for EncapsulationKey<P>
where P: KemParams,

Source§

type KeySize = <P as PkeParams>::EncryptionKeySize

Key size in bytes.
Source§

fn key_size() -> usize

Return key size in bytes.
Source§

impl<P> PartialEq for EncapsulationKey<P>
where P: KemParams,

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<P> TryFrom<SubjectPublicKeyInfo<AnyRef<'_>, BitStringRef<'_>>> for EncapsulationKey<P>
where P: KemParams + AssociatedAlgorithmIdentifier<Params = AnyRef<'static>>,

Available on crate feature pkcs8 only.
Source§

fn try_from(spki: SubjectPublicKeyInfoRef<'_>) -> Result<Self, Error>

Deserialize the encapsulation key from DER format found in spki.subject_public_key. Returns an EncapsulationKey containing ek_{pke} and h in case of success.

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

impl<P> TryKeyInit for EncapsulationKey<P>
where P: KemParams,

Source§

fn new(encapsulation_key: &Key<Self>) -> Result<Self, InvalidKey>

Create new value from a fixed-size key. Read more
Source§

fn new_from_slice(key: &[u8]) -> Result<Self, InvalidKey>

Create new value from a variable size key. Read more
Source§

impl<P> Eq for EncapsulationKey<P>
where P: KemParams,

Auto Trait Implementations§

§

impl<P> Freeze for EncapsulationKey<P>
where <<P as ParameterSet>::K as ArraySize>::ArrayType<NttPolynomial<BaseField>>: Freeze,

§

impl<P> RefUnwindSafe for EncapsulationKey<P>
where <<P as ParameterSet>::K as ArraySize>::ArrayType<NttPolynomial<BaseField>>: RefUnwindSafe,

§

impl<P> Send for EncapsulationKey<P>

§

impl<P> Sync for EncapsulationKey<P>

§

impl<P> Unpin for EncapsulationKey<P>
where <<P as ParameterSet>::K as ArraySize>::ArrayType<NttPolynomial<BaseField>>: Unpin,

§

impl<P> UnsafeUnpin for EncapsulationKey<P>
where <<P as ParameterSet>::K as ArraySize>::ArrayType<NttPolynomial<BaseField>>: UnsafeUnpin,

§

impl<P> UnwindSafe for EncapsulationKey<P>
where <<P as ParameterSet>::K as ArraySize>::ArrayType<NttPolynomial<BaseField>>: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DecodePublicKey for T
where T: for<'a> TryFrom<SubjectPublicKeyInfo<AnyRef<'a>, BitStringRef<'a>>, Error = Error>,

Source§

fn from_public_key_der(bytes: &[u8]) -> Result<T, Error>

Deserialize object from ASN.1 DER-encoded [SubjectPublicKeyInfo] (binary format). Read more
Source§

fn from_public_key_pem(s: &str) -> Result<Self, Error>

Available on crate feature pem only.
Deserialize PEM-encoded [SubjectPublicKeyInfo]. Read more
Source§

impl<T> DynAssociatedAlgorithmIdentifier for T

Source§

fn algorithm_identifier(&self) -> Result<AlgorithmIdentifier<Any>, Error>

AlgorithmIdentifier for this structure. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.