10#ifndef BOTAN_HYBRID_KEM_H_
11#define BOTAN_HYBRID_KEM_H_
13#include <botan/pk_algs.h>
14#include <botan/pk_keys.h>
15#include <botan/pubkey.h>
49 size_t key_length()
const override {
return m_key_length; }
53 std::vector<uint8_t> raw_public_key_bits()
const override;
66 const std::vector<std::unique_ptr<Public_Key>>&
public_keys()
const {
return m_pks; }
80 std::vector<std::unique_ptr<Public_Key>> m_pks;
82 size_t m_key_length = 0;
83 size_t m_estimated_strength = 0;
119 const std::vector<std::unique_ptr<Private_Key>>&
private_keys()
const {
return m_sks; }
124 static std::vector<std::unique_ptr<Public_Key>> extract_public_keys(
125 const std::vector<std::unique_ptr<Private_Key>>& private_keys);
128 std::vector<std::unique_ptr<Private_Key>> m_sks;
#define BOTAN_DIAGNOSTIC_POP
#define BOTAN_DIAGNOSTIC_PUSH
#define BOTAN_DIAGNOSTIC_IGNORE_INHERITED_VIA_DOMINANCE
Hybrid_PrivateKey & operator=(Hybrid_PrivateKey &&)=default
Hybrid_PrivateKey & operator=(const Hybrid_PrivateKey &)=delete
Hybrid_PrivateKey(Hybrid_PrivateKey &&)=default
const std::vector< std::unique_ptr< Private_Key > > & private_keys() const
~Hybrid_PrivateKey() override=default
Hybrid_PrivateKey(const Hybrid_PrivateKey &)=delete
secure_vector< uint8_t > private_key_bits() const override
Disabled by default.
Hybrid_PublicKey(std::vector< std::unique_ptr< Public_Key > > public_keys)
Constructor for a list of multiple KEM public keys.
size_t estimated_strength() const override
size_t key_length() const override
Hybrid_PublicKey & operator=(const Hybrid_PublicKey &)=delete
std::vector< std::unique_ptr< Private_Key > > generate_other_sks_from_pks(RandomNumberGenerator &rng) const
Helper function for generate_another. Generate a new private key for each public key in this hybrid k...
Hybrid_PublicKey()=default
std::vector< uint8_t > raw_public_key_bits() const override
std::vector< uint8_t > public_key_bits() const override
Return the public key bits of this hybrid key as the concatenated bytes of the individual public keys...
~Hybrid_PublicKey() override=default
Hybrid_PublicKey(Hybrid_PublicKey &&)=default
const std::vector< std::unique_ptr< Public_Key > > & public_keys() const
Hybrid_PublicKey(const Hybrid_PublicKey &)=delete
Hybrid_PublicKey & operator=(Hybrid_PublicKey &&)=default
std::vector< T, secure_allocator< T > > secure_vector