Botan 2.19.5 Crypto and TLS for C&

Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Botan::EC_PublicKey Class Referenceabstract

`#include <ecc_key.h>`

Inheritance diagram for Botan::EC_PublicKey:

## Public Member Functions
virtual std::string | algo_name () const =0
AlgorithmIdentifier | algorithm_identifier () const override
bool | check_key (RandomNumberGenerator &rng, bool strong) const override
virtual std::unique_ptr< PK_Ops::Encryption > | create_encryption_op (RandomNumberGenerator &rng, const std::string &params, const std::string &provider) const
virtual std::unique_ptr< PK_Ops::KEM_Encryption > | create_kem_encryption_op (RandomNumberGenerator &rng, const std::string &params, const std::string &provider) const
virtual std::unique_ptr< PK_Ops::Verification > | create_verification_op (const std::string &params, const std::string &provider) const
virtual Signature_Format | default_x509_signature_format () const
std::vector< uint8_t > | DER_domain () const
const EC_Group & | domain () const
EC_Group_Encoding | domain_format () const
| EC_PublicKey (const AlgorithmIdentifier &alg_id, const std::vector< uint8_t > &key_bits)
| EC_PublicKey (const EC_Group &dom_par, const PointGFp &pub_point)
| EC_PublicKey (const EC_PublicKey &other)=default
size_t | estimated_strength () const override
std::string | fingerprint_public (const std::string &alg="SHA-256") const
virtual OID | get_oid () const
size_t | key_length () const override
virtual size_t | message_part_size () const
virtual size_t | message_parts () const
EC_PublicKey & | operator= (const EC_PublicKey &other)=default
PointGFp::Compression_Type | point_encoding () const
std::vector< uint8_t > | public_key_bits () const override
const PointGFp & | public_point () const
void | set_parameter_encoding (EC_Group_Encoding enc)
void | set_point_encoding (PointGFp::Compression_Type enc)
std::vector< uint8_t > | subject_public_key () const
virtual | ~EC_PublicKey ()

## Protected Member Functions
| EC_PublicKey ()

## Protected Attributes
EC_Group_Encoding | m_domain_encoding
EC_Group | m_domain_params
PointGFp::Compression_Type | m_point_encoding = PointGFp::UNCOMPRESSED
PointGFp | m_public_key

## Detailed Description

This class represents abstract ECC public keys. When encoding a key via an encoder that can be accessed via the corresponding member functions, the key will decide upon its internally stored encoding information whether to encode itself with or without domain parameters, or using the domain parameter oid. Furthermore, a public key without domain parameters can be decoded. In that case, it cannot be used for verification until its domain parameters are set by calling the corresponding member function.

Definition at line 28 of file ecc_key.h.

## Constructor & Destructor Documentation

## ◆ EC_PublicKey() [1/4]

Botan::EC_PublicKey::EC_PublicKey | ( | const EC_Group & | dom_par,
|  | const PointGFp & | pub_point
| ) |  |

Create a public key.

Parameters

  dom_par | EC domain parameters
  pub_point | public point on the curve

Definition at line 30 of file ecc_key.cpp.

31 :
32 m_domain_params(dom_par), m_public_key(pub_point)
33 {
34 if (!dom_par.get_curve_oid().empty())
35 m_domain_encoding = EC_DOMPAR_ENC_OID;
36 else
37 m_domain_encoding = EC_DOMPAR_ENC_EXPLICIT;
38
39#if 0
40 if(domain().get_curve() != public_point().get_curve())
41 throw Invalid_Argument("EC_PublicKey: curve mismatch in constructor");
42#endif
43 }
Botan::EC_PublicKey::domain
const EC_Group & domain() const
Definition: ecc_key.h:72
Botan::EC_PublicKey::m_public_key
PointGFp m_public_key
Definition: ecc_key.h:115
Botan::EC_PublicKey::m_domain_encoding
EC_Group_Encoding m_domain_encoding
Definition: ecc_key.h:116
Botan::EC_PublicKey::m_domain_params
EC_Group m_domain_params
Definition: ecc_key.h:114
Botan::EC_PublicKey::public_point
const PointGFp & public_point() const
Definition: ecc_key.h:57
Botan::EC_DOMPAR_ENC_EXPLICIT
@ EC_DOMPAR_ENC_EXPLICIT
Definition: ec_group.h:24
Botan::EC_DOMPAR_ENC_OID
@ EC_DOMPAR_ENC_OID
Definition: ec_group.h:26

References domain(), Botan::EC_DOMPAR_ENC_EXPLICIT, Botan::EC_DOMPAR_ENC_OID, Botan::OID::empty(), Botan::EC_Group::get_curve_oid(), m_domain_encoding, and public_point().

## ◆ EC_PublicKey() [2/4]

Botan::EC_PublicKey::EC_PublicKey | ( | const AlgorithmIdentifier & | alg_id,
|  | const std::vector< uint8_t > & | key_bits
| ) |  |

Load a public key.

Parameters

  alg_id | the X.509 algorithm identifier
  key_bits | DER encoded public key bits

Definition at line 45 of file ecc_key.cpp.

46 :
47 m_domain_params{EC_Group(alg_id.get_parameters())},
48 m_public_key{domain().OS2ECP(key_bits)}
49 {
50 if (!domain().get_curve_oid().empty())
51 m_domain_encoding = EC_DOMPAR_ENC_OID;
52 else
53 m_domain_encoding = EC_DOMPAR_ENC_EXPLICIT;
54 }
Botan::EC_Group::OS2ECP
PointGFp OS2ECP(const uint8_t bits[], size_t len) const
Definition: ec_group.cpp:576

References domain(), Botan::EC_DOMPAR_ENC_EXPLICIT, Botan::EC_DOMPAR_ENC_OID, and m_domain_encoding.

## ◆ EC_PublicKey() [3/4]

Botan::EC_PublicKey::EC_PublicKey | ( | const EC_PublicKey & | other | ) |
| default

## ◆ ~EC_PublicKey()

virtual Botan::EC_PublicKey::~EC_PublicKey | ( |  | ) |
| inline virtual

Definition at line 49 of file ecc_key.h.

49{}

## ◆ EC_PublicKey() [4/4]

Botan::EC_PublicKey::EC_PublicKey | ( |  | ) |
| inline protected

Definition at line 111 of file ecc_key.h.

111 : m_domain_params{}, m_public_key{}, m_domain_encoding(EC_DOMPAR_ENC_EXPLICIT)
112 {}

## Member Function Documentation

## ◆ algo_name()

virtual std::string Botan::Public_Key::algo_name | ( |  | ) | const
| pure virtual inherited

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::DH_PublicKey, Botan::DSA_PublicKey, Botan::ECDH_PublicKey, Botan::ECDSA_PublicKey, Botan::ECGDSA_PublicKey, Botan::ECKCDSA_PublicKey, Botan::Ed25519_PublicKey, Botan::ElGamal_PublicKey, Botan::GOST_3410_PublicKey, Botan::McEliece_PublicKey, Botan::RSA_PublicKey, Botan::SM2_PublicKey, Botan::XMSS_PublicKey, Botan::XMSS_WOTS_PublicKey, and Botan::XMSS_WOTS_Addressed_PublicKey.

Referenced by Botan::PKCS8::BER_encode(), botan_pubkey_sm2_compute_za(), Botan::TLS::Policy::check_peer_key_acceptable(), Botan::TLS::Handshake_State::choose_sig_format(), Botan::TLS::Client_Key_Exchange::Client_Key_Exchange(), Botan::EMSA1::config_for_x509(), Botan::EMSA_PKCS1v15::config_for_x509(), Botan::PSSR::config_for_x509(), 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::get_oid(), 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::verify_cert_constraints_valid_for_key_type(), and Botan::X509_Object::verify_signature().

## ◆ algorithm_identifier()

AlgorithmIdentifier Botan::EC_PublicKey::algorithm_identifier | ( |  | ) | const
| override virtual

Returns
  X.509 AlgorithmIdentifier for this key

Implements Botan::Public_Key.

Reimplemented in Botan::GOST_3410_PublicKey.

Definition at line 64 of file ecc_key.cpp.

65 {
66 return AlgorithmIdentifier(get_oid(), DER_domain());
67 }
Botan::EC_PublicKey::DER_domain
std::vector< uint8_t > DER_domain() const
Definition: ecc_key.h:90
Botan::Public_Key::get_oid
virtual OID get_oid() const
Definition: pk_keys.cpp:53

References DER_domain(), and Botan::Public_Key::get_oid().

Referenced by Botan::GOST_3410_PrivateKey::pkcs8_algorithm_identifier().

## ◆ check_key()

bool Botan::EC_PublicKey::check_key | ( | RandomNumberGenerator & | rng,
|  | bool | strong
| ) |  | const
| override virtual

Test the key values for consistency.

Parameters

  rng | rng to use
  strong | whether to perform strong and lengthy version of the test

Returns
  true if the test is passed

Implements Botan::Public_Key.

Reimplemented in Botan::ECDSA_PrivateKey, Botan::ECGDSA_PrivateKey, Botan::ECKCDSA_PrivateKey, and Botan::SM2_PrivateKey.

Definition at line 56 of file ecc_key.cpp.

58 {
59 return m_domain_params.verify_group(rng) &&
60 m_domain_params.verify_public_element(public_point());
61 }
Botan::EC_Group::verify_group
bool verify_group(RandomNumberGenerator &rng, bool strong=false) const
Definition: ec_group.cpp:727
Botan::EC_Group::verify_public_element
bool verify_public_element(const PointGFp &y) const
Definition: ec_group.cpp:704

References m_domain_params, public_point(), Botan::EC_Group::verify_group(), and Botan::EC_Group::verify_public_element().

## ◆ create_encryption_op()

std::unique_ptr< PK_Ops::Encryption > Botan::Public_Key::create_encryption_op | ( | RandomNumberGenerator & | rng,
|  | const std::string & | params,
|  | const std::string & | provider
| ) |  | const
| virtual inherited

This is an internal library function exposed on key types. In almost all cases applications should use wrappers in pubkey.h

Return an encryption operation for this key/params or throw

Parameters

  rng | a random number generator. The PK_Op may maintain a reference to the RNG and use it many times. The rng must outlive any operations which reference it.
  params | additional parameters
  provider | the provider to use

Reimplemented in Botan::ElGamal_PublicKey, Botan::RSA_PublicKey, and Botan::SM2_PublicKey.

Definition at line 91 of file pk_keys.cpp.

94 {
95 throw Lookup_Error(algo_name() + " does not support encryption");
96 }
Botan::Public_Key::algo_name
virtual std::string algo_name() const =0

References Botan::Public_Key::algo_name().

Referenced by Botan::PK_Encryptor_EME::PK_Encryptor_EME().

## ◆ create_kem_encryption_op()

std::unique_ptr< PK_Ops::KEM_Encryption > Botan::Public_Key::create_kem_encryption_op | ( | RandomNumberGenerator & | rng,
|  | const std::string & | params,
|  | const std::string & | provider
| ) |  | const
| virtual inherited

This is an internal library function exposed on key types. In almost all cases applications should use wrappers in pubkey.h

Return a KEM encryption operation for this key/params or throw

Parameters

  rng | a random number generator. The PK_Op may maintain a reference to the RNG and use it many times. The rng must outlive any operations which reference it.
  params | additional parameters
  provider | the provider to use

Reimplemented in Botan::McEliece_PublicKey, and Botan::RSA_PublicKey.

Definition at line 99 of file pk_keys.cpp.

102 {
103 throw Lookup_Error(algo_name() + " does not support KEM encryption");
104 }

References Botan::Public_Key::algo_name().

Referenced by Botan::PK_KEM_Encryptor::PK_KEM_Encryptor().

## ◆ create_verification_op()

std::unique_ptr< PK_Ops::Verification > Botan::Public_Key::create_verification_op | ( | const std::string & | params,
|  | const std::string & | provider
| ) |  | const
| virtual inherited

This is an internal library function exposed on key types. In almost all cases applications should use wrappers in pubkey.h

Return a verification operation for this key/params or throw

Parameters

  params | additional parameters
  provider | the provider to use

Reimplemented in Botan::XMSS_PublicKey, Botan::DSA_PublicKey, Botan::ECDSA_PublicKey, Botan::ECGDSA_PublicKey, Botan::ECKCDSA_PublicKey, Botan::Ed25519_PublicKey, Botan::GOST_3410_PublicKey, Botan::RSA_PublicKey, Botan::SM2_PublicKey, and Botan::XMSS_WOTS_Addressed_PublicKey.

Definition at line 107 of file pk_keys.cpp.

109 {
110 throw Lookup_Error(algo_name() + " does not support verification");
111 }

References Botan::Public_Key::algo_name().

Referenced by Botan::XMSS_WOTS_Addressed_PublicKey::create_verification_op(), and Botan::PK_Verifier::PK_Verifier().

## ◆ default_x509_signature_format()

virtual Signature_Format Botan::Public_Key::default_x509_signature_format | ( |  | ) | const
| inline virtual inherited

Reimplemented in Botan::GOST_3410_PublicKey.

Definition at line 125 of file pk_keys.h.

126 {
127 return (this->message_parts() >= 2) ? DER_SEQUENCE : IEEE_1363;
128 }
Botan::Public_Key::message_parts
virtual size_t message_parts() const
Definition: pk_keys.h:112
Botan::DER_SEQUENCE
@ DER_SEQUENCE
Definition: pk_keys.h:23
Botan::IEEE_1363
@ IEEE_1363
Definition: pk_keys.h:23

References Botan::DER_SEQUENCE, and Botan::IEEE_1363.

Referenced by Botan::X509_Object::choose_sig_format(), and Botan::X509_Object::verify_signature().

## ◆ DER_domain()

std::vector< uint8_t > Botan::EC_PublicKey::DER_domain | ( |  | ) | const
| inline

Return the DER encoding of this keys domain in whatever format is preset for this particular key

Definition at line 90 of file ecc_key.h.

91 { return domain().DER_encode(domain_format()); }
Botan::EC_Group::DER_encode
std::vector< uint8_t > DER_encode(EC_Group_Encoding form) const
Definition: ec_group.cpp:631
Botan::EC_PublicKey::domain_format
EC_Group_Encoding domain_format() const
Definition: ecc_key.h:97

Referenced by algorithm_identifier().

## ◆ domain()

const EC_Group & Botan::EC_PublicKey::domain | ( |  | ) | const
| inline

Get the domain parameters of this key.

Exceptions

  Invalid_State | is thrown if the domain parameters of this point are not set

Returns
  the domain parameters of this key

Definition at line 72 of file ecc_key.h.

72{ return m_domain_params; }

Referenced by Botan::GOST_3410_PublicKey::algo_name(), Botan::GOST_3410_PublicKey::algorithm_identifier(), botan_pubkey_sm2_compute_za(), Botan::EC_PrivateKey::EC_PrivateKey(), EC_PublicKey(), Botan::GOST_3410_PublicKey::GOST_3410_PublicKey(), key_length(), Botan::ECDSA_PublicKey::recovery_param(), and Botan::SM2_PrivateKey::SM2_PrivateKey().

## ◆ domain_format()

EC_Group_Encoding Botan::EC_PublicKey::domain_format | ( |  | ) | const
| inline

Get the domain parameter encoding to be used when encoding this key.

Returns
  the encoding to use

Definition at line 97 of file ecc_key.h.

98 { return m_domain_encoding; }

## ◆ estimated_strength()

size_t Botan::EC_PublicKey::estimated_strength | ( |  | ) | const
| override 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

Implements Botan::Public_Key.

Definition at line 25 of file ecc_key.cpp.

26 {
27 return ecp_work_factor(key_length());
28 }
Botan::EC_PublicKey::key_length
size_t key_length() const override
Definition: ecc_key.cpp:20
Botan::ecp_work_factor
size_t ecp_work_factor(size_t bits)
Definition: workfactor.cpp:14

References Botan::ecp_work_factor(), and key_length().

## ◆ fingerprint_public()

std::string Botan::Public_Key::fingerprint_public | ( | const std::string & | alg = `"SHA-256"` | ) | const
| inherited

Returns
  Hash of the subject public key

Definition at line 77 of file pk_keys.cpp.

78 {
79 return create_hex_fingerprint(subject_public_key(), hash_algo);
80 }
Botan::Public_Key::subject_public_key
std::vector< uint8_t > subject_public_key() const
Definition: pk_keys.cpp:38
Botan::create_hex_fingerprint
std::string create_hex_fingerprint(const uint8_t bits[], size_t bits_len, const std::string &hash_name)
Definition: pk_keys.cpp:17
hash_algo
AlgorithmIdentifier hash_algo
Definition: x509_obj.cpp:22

References Botan::create_hex_fingerprint(), hash_algo, and Botan::Public_Key::subject_public_key().

## ◆ get_oid()

OID Botan::Public_Key::get_oid | ( |  | ) | const
| virtual inherited

Get the OID of the underlying public key scheme.

Returns
  OID of the public key scheme

Reimplemented in Botan::XMSS_WOTS_Addressed_PublicKey.

Definition at line 53 of file pk_keys.cpp.

54 {
55 const OID o = OIDS::str2oid_or_empty(algo_name());
56 if(o.empty())
57 throw Lookup_Error("PK algo " + algo_name() + " has no defined OIDs");
58 return o;
59 }
Botan::OIDS::str2oid_or_empty
BOTAN_UNSTABLE_API OID str2oid_or_empty(const std::string &name)
Definition: oids.cpp:116

References Botan::Public_Key::algo_name(), Botan::OID::empty(), and Botan::OIDS::str2oid_or_empty().

Referenced by Botan::TPM_PrivateKey::algorithm_identifier(), Botan::Curve25519_PublicKey::algorithm_identifier(), Botan::DL_Scheme_PublicKey::algorithm_identifier(), algorithm_identifier(), Botan::Ed25519_PublicKey::algorithm_identifier(), Botan::GOST_3410_PublicKey::algorithm_identifier(), Botan::McEliece_PublicKey::algorithm_identifier(), Botan::RSA_PublicKey::algorithm_identifier(), and Botan::XMSS_WOTS_Addressed_PublicKey::get_oid().

## ◆ key_length()

size_t Botan::EC_PublicKey::key_length | ( |  | ) | const
| override virtual

Return an integer value best approximating the length of the primary security parameter. For example for RSA this will be the size of the modulus, for ECDSA the size of the ECC group, and for McEliece the size of the code will be returned.

Implements Botan::Public_Key.

Definition at line 20 of file ecc_key.cpp.

21 {
22 return domain().get_p_bits();
23 }
Botan::EC_Group::get_p_bits
size_t get_p_bits() const
Definition: ec_group.cpp:472

References domain(), and Botan::EC_Group::get_p_bits().

Referenced by estimated_strength().

## ◆ message_part_size()

virtual size_t Botan::Public_Key::message_part_size | ( |  | ) | const
| inline virtual inherited

Returns how large each of the message parts refered to by message_parts() is

This function is public but applications should have few reasons to ever call this.

Returns
  size of the message parts in bits

Reimplemented in Botan::DSA_PublicKey, Botan::ECDSA_PublicKey, Botan::ECGDSA_PublicKey, Botan::ECKCDSA_PublicKey, Botan::GOST_3410_PublicKey, and Botan::SM2_PublicKey.

Definition at line 123 of file pk_keys.h.

123{ return 0; }

Referenced by Botan::PK_Signer::PK_Signer(), and Botan::PK_Verifier::PK_Verifier().

## ◆ message_parts()

virtual size_t Botan::Public_Key::message_parts | ( |  | ) | const
| inline virtual inherited

Returns more than 1 if the output of this algorithm (ciphertext, signature) should be treated as more than one value. This is used for algorithms like DSA and ECDSA, where the (r,s) output pair can be encoded as either a plain binary list or a TLV tagged DER encoding depending on the protocol.

This function is public but applications should have few reasons to ever call this.

Returns
  number of message parts

Reimplemented in Botan::DSA_PublicKey, Botan::ECDSA_PublicKey, Botan::ECGDSA_PublicKey, Botan::ECKCDSA_PublicKey, Botan::GOST_3410_PublicKey, and Botan::SM2_PublicKey.

Definition at line 112 of file pk_keys.h.

112{ return 1; }

Referenced by Botan::PK_Signer::PK_Signer(), and Botan::PK_Verifier::PK_Verifier().

## ◆ operator=()

EC_PublicKey & Botan::EC_PublicKey::operator= | ( | const EC_PublicKey & | other | ) |
| default

## ◆ point_encoding()

PointGFp::Compression_Type Botan::EC_PublicKey::point_encoding | ( |  | ) | const
| inline

Get the point encoding method to be used when encoding this key.

Returns
  the encoding to use

Definition at line 104 of file ecc_key.h.

105 { return m_point_encoding; }
Botan::EC_PublicKey::m_point_encoding
PointGFp::Compression_Type m_point_encoding
Definition: ecc_key.h:117

Referenced by public_key_bits().

## ◆ public_key_bits()

std::vector< uint8_t > Botan::EC_PublicKey::public_key_bits | ( |  | ) | const
| override virtual

Returns
  BER encoded public key bits

Implements Botan::Public_Key.

Reimplemented in Botan::GOST_3410_PublicKey.

Definition at line 69 of file ecc_key.cpp.

70 {
71 return public_point().encode(point_encoding());
72 }
Botan::EC_PublicKey::point_encoding
PointGFp::Compression_Type point_encoding() const
Definition: ecc_key.h:104
Botan::PointGFp::encode
std::vector< uint8_t > encode(PointGFp::Compression_Type format) const
Definition: point_gfp.cpp:601

References Botan::PointGFp::encode(), point_encoding(), and public_point().

Referenced by Botan::EC_PrivateKey::EC_PrivateKey().

## ◆ public_point()

const PointGFp & Botan::EC_PublicKey::public_point | ( |  | ) | const
| inline

Get the public point of this key.

Exceptions

  Invalid_State | is thrown if the domain parameters of this point are not set

Returns
  the public point of this key

Definition at line 57 of file ecc_key.h.

57{ return m_public_key; }

Referenced by botan_pubkey_sm2_compute_za(), check_key(), Botan::ECDSA_PrivateKey::check_key(), Botan::ECGDSA_PrivateKey::check_key(), Botan::ECKCDSA_PrivateKey::check_key(), Botan::SM2_PrivateKey::check_key(), EC_PublicKey(), public_key_bits(), Botan::GOST_3410_PublicKey::public_key_bits(), and Botan::ECDSA_PublicKey::recovery_param().

## ◆ set_parameter_encoding()

void Botan::EC_PublicKey::set_parameter_encoding | ( | EC_Group_Encoding | enc | ) |

Set the domain parameter encoding to be used when encoding this key.

Parameters

  enc | the encoding to use

Definition at line 84 of file ecc_key.cpp.

85 {
86 if(form != EC_DOMPAR_ENC_EXPLICIT &&
87 form != EC_DOMPAR_ENC_IMPLICITCA &&
88 form != EC_DOMPAR_ENC_OID)
89 throw Invalid_Argument("Invalid encoding form for EC-key object specified");
90
91 if((form == EC_DOMPAR_ENC_OID) && (m_domain_params.get_curve_oid().empty()))
92 throw Invalid_Argument("Invalid encoding form OID specified for "
93 "EC-key object whose corresponding domain "
94 "parameters are without oid");
95
96 m_domain_encoding = form;
97 }
Botan::EC_Group::get_curve_oid
const OID & get_curve_oid() const
Definition: ec_group.cpp:557
Botan::OID::empty
bool empty() const
Definition: asn1_obj.h:232
Botan::EC_DOMPAR_ENC_IMPLICITCA
@ EC_DOMPAR_ENC_IMPLICITCA
Definition: ec_group.h:25

References Botan::EC_DOMPAR_ENC_EXPLICIT, Botan::EC_DOMPAR_ENC_IMPLICITCA, Botan::EC_DOMPAR_ENC_OID, Botan::OID::empty(), Botan::EC_Group::get_curve_oid(), m_domain_encoding, and m_domain_params.

## ◆ set_point_encoding()

void Botan::EC_PublicKey::set_point_encoding | ( | PointGFp::Compression_Type | enc | ) |

Set the point encoding method to be used when encoding this key.

Parameters

  enc | the encoding to use

Definition at line 74 of file ecc_key.cpp.

75 {
76 if(enc != PointGFp::COMPRESSED &&
77 enc != PointGFp::UNCOMPRESSED &&
78 enc != PointGFp::HYBRID)
79 throw Invalid_Argument("Invalid point encoding for EC_PublicKey");
80
81 m_point_encoding = enc;
82 }
Botan::PointGFp::UNCOMPRESSED
@ UNCOMPRESSED
Definition: point_gfp.h:51
Botan::PointGFp::COMPRESSED
@ COMPRESSED
Definition: point_gfp.h:52
Botan::PointGFp::HYBRID
@ HYBRID
Definition: point_gfp.h:53

References Botan::PointGFp::COMPRESSED, Botan::PointGFp::HYBRID, m_point_encoding, and Botan::PointGFp::UNCOMPRESSED.

## ◆ subject_public_key()

std::vector< uint8_t > Botan::Public_Key::subject_public_key | ( |  | ) | const
| inherited

Returns
  X.509 subject key encoding for this key object

Definition at line 38 of file pk_keys.cpp.

39 {
40 std::vector<uint8_t> output;
41
42 DER_Encoder(output).start_cons(SEQUENCE)
43 .encode(algorithm_identifier())
44 .encode(public_key_bits(), BIT_STRING)
45 .end_cons();
46
47 return output;
48 }
Botan::Public_Key::algorithm_identifier
virtual AlgorithmIdentifier algorithm_identifier() const =0
Botan::Public_Key::public_key_bits
virtual std::vector< uint8_t > public_key_bits() const =0
Botan::BIT_STRING
@ BIT_STRING
Definition: asn1_obj.h:37
Botan::SEQUENCE
@ SEQUENCE
Definition: asn1_obj.h:42

References Botan::Public_Key::algorithm_identifier(), Botan::BIT_STRING, Botan::DER_Encoder::encode(), Botan::DER_Encoder::end_cons(), Botan::Public_Key::public_key_bits(), Botan::SEQUENCE, and Botan::DER_Encoder::start_cons().

Referenced by Botan::X509::BER_encode(), Botan::PKCS10_Request::create(), Botan::Public_Key::fingerprint_public(), and Botan::X509::PEM_encode().

## Member Data Documentation

## ◆ m_domain_encoding

EC_Group_Encoding Botan::EC_PublicKey::m_domain_encoding
| protected

Definition at line 116 of file ecc_key.h.

Referenced by Botan::EC_PrivateKey::EC_PrivateKey(), EC_PublicKey(), and set_parameter_encoding().

## ◆ m_domain_params

EC_Group Botan::EC_PublicKey::m_domain_params
| protected

Definition at line 114 of file ecc_key.h.

Referenced by check_key(), Botan::EC_PrivateKey::EC_PrivateKey(), Botan::GOST_3410_PrivateKey::GOST_3410_PrivateKey(), Botan::GOST_3410_PublicKey::GOST_3410_PublicKey(), and set_parameter_encoding().

## ◆ m_point_encoding

PointGFp::Compression_Type Botan::EC_PublicKey::m_point_encoding = PointGFp::UNCOMPRESSED
| protected

Definition at line 117 of file ecc_key.h.

Referenced by set_point_encoding().

## ◆ m_public_key

PointGFp Botan::EC_PublicKey::m_public_key
| protected

Definition at line 115 of file ecc_key.h.

Referenced by Botan::EC_PrivateKey::EC_PrivateKey(), Botan::GOST_3410_PublicKey::GOST_3410_PublicKey(), and Botan::EC_PrivateKey::private_key_bits().

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

- src/lib/pubkey/ecc_key/ecc_key.h
- src/lib/pubkey/ecc_key/ecc_key.cpp