Botan 3.4.0
Crypto and TLS for C&
Public Member Functions | List of all members
Botan::Asymmetric_Key Class Referenceabstract

#include <pk_keys.h>

Inheritance diagram for Botan::Asymmetric_Key:
Botan::Public_Key Botan::Curve25519_PublicKey Botan::DH_PublicKey Botan::DSA_PublicKey Botan::Dilithium_PublicKey Botan::EC_PublicKey Botan::Ed25519_PublicKey Botan::Ed448_PublicKey Botan::ElGamal_PublicKey Botan::FrodoKEM_PublicKey Botan::Kyber_PublicKey Botan::McEliece_PublicKey Botan::Private_Key Botan::RSA_PublicKey Botan::SphincsPlus_PublicKey Botan::TLS::Hybrid_KEM_PublicKey Botan::TLS::KEX_to_KEM_Adapter_PublicKey Botan::X448_PublicKey Botan::XMSS_PublicKey

Public Member Functions

virtual std::string algo_name () const =0
 
virtual size_t estimated_strength () const =0
 
virtual std::unique_ptr< Private_Keygenerate_another (RandomNumberGenerator &rng) const =0
 
virtual const BigIntget_int_field (std::string_view field) const
 
virtual OID object_identifier () const
 
virtual bool supports_operation (PublicKeyOperation op) const =0
 
virtual ~Asymmetric_Key ()=default
 

Detailed Description

An interface for objects that are keys in public key algorithms

This is derived for both public and private keys

Definition at line 59 of file pk_keys.h.

Constructor & Destructor Documentation

◆ ~Asymmetric_Key()

virtual Botan::Asymmetric_Key::~Asymmetric_Key ( )
virtualdefault

Member Function Documentation

◆ algo_name()

virtual std::string Botan::Asymmetric_Key::algo_name ( ) const
pure virtual

Get the name of the underlying public key scheme.

Returns
name of the public key scheme

Implemented in Botan::TPM_PrivateKey, Botan::Curve25519_PublicKey, Botan::Ed448_PublicKey, Botan::X448_PublicKey, Botan::DH_PublicKey, Botan::Dilithium_PublicKey, Botan::DSA_PublicKey, Botan::ECDH_PublicKey, Botan::ECDSA_PublicKey, Botan::ECGDSA_PublicKey, Botan::ECKCDSA_PublicKey, Botan::Ed25519_PublicKey, Botan::ElGamal_PublicKey, Botan::FrodoKEM_PublicKey, Botan::GOST_3410_PublicKey, Botan::Kyber_PublicKey, Botan::McEliece_PublicKey, Botan::RSA_PublicKey, Botan::SM2_PublicKey, Botan::SphincsPlus_PublicKey, Botan::XMSS_PublicKey, Botan::TLS::Hybrid_KEM_PublicKey, and Botan::TLS::KEX_to_KEM_Adapter_PublicKey.

Referenced by Botan::PKCS8::BER_encode(), botan_pubkey_sm2_compute_za(), Botan::TLS::Policy::check_peer_key_acceptable(), Botan::X509_Object::choose_sig_format(), Botan::TLS::Handshake_State::choose_sig_format(), Botan::TLS::Client_Key_Exchange::Client_Key_Exchange(), Botan::TLS::Client_Key_Exchange::Client_Key_Exchange(), Botan::Private_Key::create_decryption_op(), Botan::Public_Key::create_encryption_op(), Botan::Private_Key::create_kem_decryption_op(), Botan::Public_Key::create_kem_encryption_op(), Botan::Private_Key::create_key_agreement_op(), Botan::Private_Key::create_signature_op(), Botan::Public_Key::create_verification_op(), Botan::Public_Key::create_x509_verification_op(), get_int_field(), object_identifier(), Botan::TLS::Handshake_State::parse_sig_format(), Botan::PK_Decryptor_EME::PK_Decryptor_EME(), Botan::PK_Encryptor_EME::PK_Encryptor_EME(), Botan::PK_KEM_Decryptor::PK_KEM_Decryptor(), Botan::PK_KEM_Encryptor::PK_KEM_Encryptor(), Botan::PK_Key_Agreement::PK_Key_Agreement(), Botan::PK_Signer::PK_Signer(), Botan::PK_Verifier::PK_Verifier(), Botan::PK_Verifier::PK_Verifier(), and Botan::Private_Key::raw_private_key_bits().

◆ estimated_strength()

virtual size_t Botan::Asymmetric_Key::estimated_strength ( ) const
pure virtual

Return the estimated strength of the underlying key against the best currently known attack. Note that this ignores anything but pure attacks against the key itself and do not take into account padding schemes, usage mistakes, etc which might reduce the strength. However it does suffice to provide an upper bound.

Returns
estimated strength in bits

Implemented in Botan::TPM_PrivateKey, Botan::Curve25519_PublicKey, Botan::Ed448_PublicKey, Botan::X448_PublicKey, Botan::DH_PublicKey, Botan::Dilithium_PublicKey, Botan::DSA_PublicKey, Botan::EC_PublicKey, Botan::Ed25519_PublicKey, Botan::ElGamal_PublicKey, Botan::FrodoKEM_PublicKey, Botan::Kyber_PublicKey, Botan::McEliece_PublicKey, Botan::RSA_PublicKey, Botan::SphincsPlus_PublicKey, Botan::XMSS_PublicKey, Botan::TLS::Hybrid_KEM_PublicKey, and Botan::TLS::KEX_to_KEM_Adapter_PublicKey.

◆ generate_another()

virtual std::unique_ptr< Private_Key > Botan::Asymmetric_Key::generate_another ( RandomNumberGenerator & rng) const
pure virtual

◆ get_int_field()

const BigInt & Botan::Asymmetric_Key::get_int_field ( std::string_view field) const
virtual

Access an algorithm specific field

If the field is not known for this algorithm, an Invalid_Argument is thrown. The interpretation of the result requires knowledge of which algorithm is involved. For instance for RSA "p" represents one of the secret primes, while for DSA "p" is the public prime.

Some algorithms may not implement this method at all.

This is primarily used to implement the FFI botan_pubkey_get_field and botan_privkey_get_field functions.

Reimplemented in Botan::EC_PrivateKey, Botan::DH_PublicKey, Botan::DH_PrivateKey, Botan::DSA_PublicKey, Botan::DSA_PrivateKey, Botan::EC_PublicKey, Botan::ElGamal_PublicKey, Botan::ElGamal_PrivateKey, Botan::RSA_PublicKey, and Botan::RSA_PrivateKey.

Definition at line 18 of file pk_keys.cpp.

18 {
19 throw Unknown_PK_Field_Name(algo_name(), field);
20}
virtual std::string algo_name() const =0

References algo_name().

Referenced by Botan::EC_PublicKey::get_int_field(), and Botan::RSA_PublicKey::get_int_field().

◆ object_identifier()

OID Botan::Asymmetric_Key::object_identifier ( ) const
virtual

◆ supports_operation()

virtual bool Botan::Asymmetric_Key::supports_operation ( PublicKeyOperation op) const
pure virtual

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