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>
39 explicit Hybrid_PublicKey(std::vector<std::unique_ptr<Public_Key>> public_keys);
49 size_t key_length()
const override {
return m_key_length; }
53 std::vector<uint8_t> raw_public_key_bits()
const override;
61 std::vector<uint8_t>
public_key_bits()
const override {
return raw_public_key_bits(); }
66 const std::vector<std::unique_ptr<Public_Key>>&
public_keys()
const {
return m_pks; }
77 std::vector<std::unique_ptr<Private_Key>> generate_other_sks_from_pks(
RandomNumberGenerator& rng)
const;
80 std::vector<std::unique_ptr<Public_Key>> m_pks;
82 size_t m_key_length = 0;
83 size_t m_estimated_strength = 0;
113 explicit Hybrid_PrivateKey(std::vector<std::unique_ptr<Private_Key>> private_keys);
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
Abstraction for a combined KEM private key.
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
Abstraction for a combined KEM public key.
size_t estimated_strength() const override
size_t key_length() const override
Hybrid_PublicKey & operator=(const Hybrid_PublicKey &)=delete
Hybrid_PublicKey()=default
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