Botan 1.10.17
Botan::ECDH_PublicKey Class Reference

#include <ecdh.h>

Inheritance diagram for Botan::ECDH_PublicKey:
Botan::EC_PublicKey Botan::Public_Key Botan::ECDH_PrivateKey

Public Member Functions

std::string algo_name () const
AlgorithmIdentifier algorithm_identifier () const
bool check_key (RandomNumberGenerator &rng, bool strong) const
MemoryVector< byteDER_domain () const
const EC_Groupdomain () const
EC_Group_Encoding domain_format () const
 ECDH_PublicKey (const AlgorithmIdentifier &alg_id, const MemoryRegion< byte > &key_bits)
 ECDH_PublicKey (const EC_Group &dom_par, const PointGFp &public_point)
virtual OID get_oid () const
size_t max_input_bits () const
virtual size_t message_part_size () const
virtual size_t message_parts () const
const PointGFppublic_point () const
MemoryVector< bytepublic_value () const
void set_parameter_encoding (EC_Group_Encoding enc)
MemoryVector< bytex509_subject_public_key () const

Protected Member Functions

 ECDH_PublicKey ()
virtual void load_check (RandomNumberGenerator &rng) const

Protected Attributes

EC_Group_Encoding domain_encoding
EC_Group domain_params
PointGFp public_key

Detailed Description

This class represents ECDH Public Keys.

Definition at line 21 of file ecdh.h.

Constructor & Destructor Documentation

◆ ECDH_PublicKey() [1/3]

Botan::ECDH_PublicKey::ECDH_PublicKey ( const AlgorithmIdentifier & alg_id,
const MemoryRegion< byte > & key_bits )
inline

Definition at line 25 of file ecdh.h.

26 :
27 EC_PublicKey(alg_id, key_bits) {}

References Botan::EC_PublicKey::EC_PublicKey().

◆ ECDH_PublicKey() [2/3]

Botan::ECDH_PublicKey::ECDH_PublicKey ( const EC_Group & dom_par,
const PointGFp & public_point )
inline

Construct a public key from a given public point.

Parameters
dom_parthe domain parameters associated with this key
public_pointthe public point defining this key

Definition at line 34 of file ecdh.h.

35 :
36 EC_PublicKey(dom_par, public_point) {}
const PointGFp & public_point() const
Definition ecc_key.h:45

References Botan::EC_PublicKey::EC_PublicKey(), and Botan::EC_PublicKey::public_point().

◆ ECDH_PublicKey() [3/3]

Botan::ECDH_PublicKey::ECDH_PublicKey ( )
inlineprotected

Definition at line 59 of file ecdh.h.

59{}

Referenced by Botan::make_public_key().

Member Function Documentation

◆ algo_name()

std::string Botan::ECDH_PublicKey::algo_name ( ) const
inlinevirtual

Get this keys algorithm name.

Returns
this keys algorithm name

Implements Botan::Public_Key.

Definition at line 42 of file ecdh.h.

42{ return "ECDH"; }

◆ algorithm_identifier()

AlgorithmIdentifier Botan::EC_PublicKey::algorithm_identifier ( ) const
virtualinherited
Returns
X.509 AlgorithmIdentifier for this key

Implements Botan::Public_Key.

Definition at line 45 of file ecc_key.cpp.

46 {
48 }
MemoryVector< byte > DER_domain() const
Definition ecc_key.h:72
virtual OID get_oid() const
Definition pk_keys.cpp:17

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

◆ check_key()

bool Botan::EC_PublicKey::check_key ( RandomNumberGenerator & rng,
bool strong ) const
virtualinherited

Test the key values for consistency.

Parameters
rngrng to use
strongwhether 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.

Definition at line 39 of file ecc_key.cpp.

41 {
42 return public_point().on_the_curve();
43 }
bool on_the_curve() const

References Botan::PointGFp::on_the_curve(), and public_point().

◆ DER_domain()

MemoryVector< byte > Botan::EC_PublicKey::DER_domain ( ) const
inlineinherited

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

Definition at line 72 of file ecc_key.h.

73 { return domain().DER_encode(domain_format()); }
SecureVector< byte > DER_encode(EC_Group_Encoding form) const
Definition ec_group.cpp:95
const EC_Group & domain() const
Definition ecc_key.h:60
EC_Group_Encoding domain_format() const
Definition ecc_key.h:79

References domain(), and domain_format().

Referenced by algorithm_identifier().

◆ domain()

const EC_Group & Botan::EC_PublicKey::domain ( ) const
inlineinherited

◆ domain_format()

EC_Group_Encoding Botan::EC_PublicKey::domain_format ( ) const
inlineinherited

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

Returns
the encoding to use

Definition at line 79 of file ecc_key.h.

80 { return domain_encoding; }
EC_Group_Encoding domain_encoding
Definition ecc_key.h:86

References domain_encoding.

Referenced by DER_domain().

◆ get_oid()

OID Botan::Public_Key::get_oid ( ) const
virtualinherited

Get the OID of the underlying public key scheme.

Returns
OID of the public key scheme

Definition at line 17 of file pk_keys.cpp.

18 {
19 try {
20 return OIDS::lookup(algo_name());
21 }
22 catch(Lookup_Error)
23 {
24 throw Lookup_Error("PK algo " + algo_name() + " has no defined OIDs");
25 }
26 }
virtual std::string algo_name() const =0
std::string lookup(const OID &oid)
Definition oids.cpp:31
Lookup_Error(const std::string &err)
Definition exceptn.h:37

References algo_name(), Botan::OIDS::lookup(), and Botan::Lookup_Error::Lookup_Error().

Referenced by algo_name(), Botan::DL_Scheme_PublicKey::algorithm_identifier(), Botan::EC_PublicKey::algorithm_identifier(), and Botan::IF_Scheme_PublicKey::algorithm_identifier().

◆ load_check()

void Botan::Public_Key::load_check ( RandomNumberGenerator & rng) const
protectedvirtualinherited

Self-test after loading a key

Parameters
rnga random number generator

Reimplemented in Botan::Private_Key.

Definition at line 31 of file pk_keys.cpp.

32 {
33 if(!check_key(rng, BOTAN_PUBLIC_KEY_STRONG_CHECKS_ON_LOAD))
34 throw Invalid_Argument(algo_name() + ": Invalid public key");
35 }
virtual bool check_key(RandomNumberGenerator &rng, bool strong) const =0
std::invalid_argument Invalid_Argument
Definition exceptn.h:20

References algo_name(), and check_key().

◆ max_input_bits()

size_t Botan::ECDH_PublicKey::max_input_bits ( ) const
inlinevirtual

Get the maximum number of bits allowed to be fed to this key. This is the bitlength of the order of the base point.

Returns
maximum number of input bits

Implements Botan::Public_Key.

Definition at line 50 of file ecdh.h.

50{ return domain().get_order().bits(); }
size_t bits() const
Definition bigint.cpp:254
const BigInt & get_order() const
Definition ec_group.h:101

References Botan::EC_PublicKey::domain().

◆ message_part_size()

virtual size_t Botan::Public_Key::message_part_size ( ) const
inlinevirtualinherited

Find out the message part size supported by this scheme/key.

Returns
size of the message parts in bits

Reimplemented in Botan::DSA_PublicKey, Botan::ECDSA_PublicKey, and Botan::NR_PublicKey.

Definition at line 56 of file pk_keys.h.

56{ return 0; }

◆ message_parts()

virtual size_t Botan::Public_Key::message_parts ( ) const
inlinevirtualinherited

Find out the number of message parts supported by this scheme.

Returns
number of message parts

Reimplemented in Botan::DSA_PublicKey, Botan::ECDSA_PublicKey, and Botan::NR_PublicKey.

Definition at line 50 of file pk_keys.h.

50{ return 1; }

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

◆ public_point()

const PointGFp & Botan::EC_PublicKey::public_point ( ) const
inlineinherited

Get the public point of this key.

Exceptions
Invalid_Stateis thrown if the domain parameters of this point are not set
Returns
the public point of this key

Definition at line 45 of file ecc_key.h.

45{ return public_key; }
PointGFp public_key
Definition ecc_key.h:85

References public_key.

Referenced by check_key(), Botan::ECDSA_PrivateKey::check_key(), EC_PublicKey(), Botan::ECDH_PublicKey::ECDH_PublicKey(), Botan::ECDSA_PublicKey::ECDSA_PublicKey(), Botan::ECDH_PublicKey::public_value(), and x509_subject_public_key().

◆ public_value()

MemoryVector< byte > Botan::ECDH_PublicKey::public_value ( ) const
inline
Returns
public point value

Definition at line 55 of file ecdh.h.

SecureVector< byte > EC2OSP(const PointGFp &point, byte format)

References Botan::EC2OSP(), Botan::EC_PublicKey::public_point(), and Botan::PointGFp::UNCOMPRESSED.

Referenced by Botan::ECDH_PrivateKey::public_value().

◆ set_parameter_encoding()

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

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

Parameters
encthe encoding to use

Definition at line 55 of file ecc_key.cpp.

56 {
57 if(form != EC_DOMPAR_ENC_EXPLICIT &&
59 form != EC_DOMPAR_ENC_OID)
60 throw Invalid_Argument("Invalid encoding form for EC-key object specified");
61
62 if((form == EC_DOMPAR_ENC_OID) && (domain_params.get_oid() == ""))
63 throw Invalid_Argument("Invalid encoding form OID specified for "
64 "EC-key object whose corresponding domain "
65 "parameters are without oid");
66
67 domain_encoding = form;
68 }
std::string get_oid() const
Definition ec_group.h:115
@ EC_DOMPAR_ENC_EXPLICIT
Definition ec_group.h:23
@ EC_DOMPAR_ENC_OID
Definition ec_group.h:25
@ EC_DOMPAR_ENC_IMPLICITCA
Definition ec_group.h:24

References domain_encoding, domain_params, Botan::EC_DOMPAR_ENC_EXPLICIT, Botan::EC_DOMPAR_ENC_IMPLICITCA, Botan::EC_DOMPAR_ENC_OID, and Botan::EC_Group::get_oid().

Referenced by Botan::DE_EAC::create_cvc_req(), Botan::DE_EAC::link_cvca(), and Botan::DE_EAC::sign_request().

◆ x509_subject_public_key()

MemoryVector< byte > Botan::EC_PublicKey::x509_subject_public_key ( ) const
virtualinherited
Returns
X.509 subject key encoding for this key object

Implements Botan::Public_Key.

Definition at line 50 of file ecc_key.cpp.

51 {
53 }

References Botan::PointGFp::COMPRESSED, Botan::EC2OSP(), and public_point().

Member Data Documentation

◆ domain_encoding

◆ domain_params

EC_Group Botan::EC_PublicKey::domain_params
protectedinherited

◆ public_key

PointGFp Botan::EC_PublicKey::public_key
protectedinherited

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