Botan 3.5.0
Crypto and TLS for C&
Botan::Kyber_KEM_Decryptor_Base Class Referenceabstract

#include <kyber_encaps_base.h>

Inheritance diagram for Botan::Kyber_KEM_Decryptor_Base:
Botan::PK_Ops::KEM_Decryption_with_KDF Botan::PK_Ops::KEM_Decryption Botan::Kyber_KEM_Decryptor

Public Member Functions

size_t encapsulated_key_length () const override
 
void kem_decrypt (std::span< uint8_t > out_shared_key, std::span< const uint8_t > encapsulated_key, size_t desired_shared_key_len, std::span< const uint8_t > salt) final
 
void raw_kem_decrypt (std::span< uint8_t > out_shared_key, std::span< const uint8_t > encapsulated_key) final
 
size_t raw_kem_shared_key_length () const override
 
size_t shared_key_length (size_t desired_shared_key_len) const final
 

Protected Member Functions

virtual void decapsulate (StrongSpan< KyberSharedSecret > out_shared_key, StrongSpan< const KyberCompressedCiphertext > encapsulated_key)=0
 
 Kyber_KEM_Decryptor_Base (std::string_view kdf)
 
virtual const KyberConstantsmode () const =0
 

Detailed Description

Definition at line 43 of file kyber_encaps_base.h.

Constructor & Destructor Documentation

◆ Kyber_KEM_Decryptor_Base()

Botan::Kyber_KEM_Decryptor_Base::Kyber_KEM_Decryptor_Base ( std::string_view kdf)
inlineprotected

Definition at line 55 of file kyber_encaps_base.h.

55: PK_Ops::KEM_Decryption_with_KDF(kdf) {}

Member Function Documentation

◆ decapsulate()

virtual void Botan::Kyber_KEM_Decryptor_Base::decapsulate ( StrongSpan< KyberSharedSecret > out_shared_key,
StrongSpan< const KyberCompressedCiphertext > encapsulated_key )
protectedpure virtual

Implemented in Botan::Kyber_KEM_Decryptor.

Referenced by raw_kem_decrypt().

◆ encapsulated_key_length()

size_t Botan::Kyber_KEM_Decryptor_Base::encapsulated_key_length ( ) const
inlineoverridevirtual

Implements Botan::PK_Ops::KEM_Decryption.

Definition at line 47 of file kyber_encaps_base.h.

47{ return mode().encapsulated_key_length(); }
size_t encapsulated_key_length() const
virtual const KyberConstants & mode() const =0

References Botan::KyberConstants::encapsulated_key_length(), and mode().

◆ kem_decrypt()

void Botan::PK_Ops::KEM_Decryption_with_KDF::kem_decrypt ( std::span< uint8_t > out_shared_key,
std::span< const uint8_t > encapsulated_key,
size_t desired_shared_key_len,
std::span< const uint8_t > salt )
finalvirtualinherited

Implements Botan::PK_Ops::KEM_Decryption.

Definition at line 204 of file pk_ops.cpp.

207 {
208 BOTAN_ARG_CHECK(salt.empty() || m_kdf, "PK_KEM_Decryptor::decrypt requires a KDF to use a salt");
209
210 if(m_kdf) {
212 out_shared_key.size(), desired_shared_key_len, "KDF output length and shared key length match");
213
215 this->raw_kem_decrypt(raw_shared, encapsulated_key);
216 m_kdf->derive_key(out_shared_key, raw_shared, salt, {});
217 } else {
218 BOTAN_ASSERT_EQUAL(out_shared_key.size(), raw_kem_shared_key_length(), "Shared key has raw KEM output length");
219 this->raw_kem_decrypt(out_shared_key, encapsulated_key);
220 }
221}
#define BOTAN_ASSERT_EQUAL(expr1, expr2, assertion_made)
Definition assert.h:68
#define BOTAN_ARG_CHECK(expr, msg)
Definition assert.h:29
virtual void raw_kem_decrypt(std::span< uint8_t > out_raw_shared_key, std::span< const uint8_t > encapsulated_key)=0
virtual size_t raw_kem_shared_key_length() const =0
std::vector< T, secure_allocator< T > > secure_vector
Definition secmem.h:61

References BOTAN_ARG_CHECK, and BOTAN_ASSERT_EQUAL.

◆ mode()

virtual const KyberConstants & Botan::Kyber_KEM_Decryptor_Base::mode ( ) const
protectedpure virtual

◆ raw_kem_decrypt()

void Botan::Kyber_KEM_Decryptor_Base::raw_kem_decrypt ( std::span< uint8_t > out_shared_key,
std::span< const uint8_t > encapsulated_key )
inlinefinalvirtual

Implements Botan::PK_Ops::KEM_Decryption_with_KDF.

Definition at line 49 of file kyber_encaps_base.h.

49 {
50 decapsulate(StrongSpan<KyberSharedSecret>(out_shared_key),
51 StrongSpan<const KyberCompressedCiphertext>(encapsulated_key));
52 }
virtual void decapsulate(StrongSpan< KyberSharedSecret > out_shared_key, StrongSpan< const KyberCompressedCiphertext > encapsulated_key)=0

References decapsulate().

◆ raw_kem_shared_key_length()

size_t Botan::Kyber_KEM_Decryptor_Base::raw_kem_shared_key_length ( ) const
inlineoverridevirtual

Implements Botan::PK_Ops::KEM_Decryption_with_KDF.

Definition at line 45 of file kyber_encaps_base.h.

45{ return mode().shared_key_length(); }
size_t shared_key_length() const

References mode(), and Botan::KyberConstants::shared_key_length().

◆ shared_key_length()

size_t Botan::PK_Ops::KEM_Decryption_with_KDF::shared_key_length ( size_t desired_shared_key_len) const
finalvirtualinherited

Implements Botan::PK_Ops::KEM_Decryption.

Definition at line 196 of file pk_ops.cpp.

196 {
197 if(m_kdf) {
198 return desired_shared_key_len;
199 } else {
200 return this->raw_kem_shared_key_length();
201 }
202}

The documentation for this class was generated from the following file: