Botan: Botan::ECDH_PublicKey Class Reference

Botan 1.10.17

Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Botan::ECDH_PublicKey Class Reference

`#include <ecdh.h>`

Inheritance diagram for Botan::ECDH_PublicKey:

## Public Member Functions
std::string | algo_name () const
AlgorithmIdentifier | algorithm_identifier () const
bool | check_key (RandomNumberGenerator &rng, bool strong) const
MemoryVector< byte > | DER_domain () const
const EC_Group & | domain () 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 PointGFp & | public_point () const
MemoryVector< byte > | public_value () const
void | set_parameter_encoding (EC_Group_Encoding enc)
MemoryVector< byte > | x509_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) {}
Botan::EC_PublicKey::EC_PublicKey
EC_PublicKey()
Definition: ecc_key.h:82

## ◆ 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_par | the domain parameters associated with this key
  public_point | the public point defining this key

Definition at line 34 of file ecdh.h.

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

## ◆ ECDH_PublicKey() [3/3]

Botan::ECDH_PublicKey::ECDH_PublicKey | ( |  | ) |
| inlineprotected

Definition at line 59 of file ecdh.h.

59 {}

## 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.

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

46 {
47 return AlgorithmIdentifier(get_oid(), DER_domain());
48 }
Botan::Public_Key::get_oid
virtual OID get_oid() const
Definition: pk_keys.cpp:17
Botan::EC_PublicKey::DER_domain
MemoryVector< byte > DER_domain() const
Definition: ecc_key.h:72

## ◆ check_key()

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

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.

Definition at line 39 of file ecc_key.cpp.

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

41 {
42 return public_point().on_the_curve();
43 }
Botan::EC_PublicKey::public_point
const PointGFp & public_point() const
Definition: ecc_key.h:45
Botan::PointGFp::on_the_curve
bool on_the_curve() const
Definition: point_gfp.cpp:427

## ◆ 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.

Referenced by Botan::EC_PublicKey::algorithm_identifier().

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

## ◆ domain()

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

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 60 of file ecc_key.h.

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

60 { return domain_params; }
Botan::EC_PublicKey::domain_params
EC_Group domain_params
Definition: ecc_key.h:84

## ◆ 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; }
Botan::EC_PublicKey::domain_encoding
EC_Group_Encoding domain_encoding
Definition: ecc_key.h:86

## ◆ 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.

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

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

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 }
Botan::Public_Key::algo_name
virtual std::string algo_name() const =0
Botan::OIDS::lookup
std::string lookup(const OID &oid)
Definition: oids.cpp:31

## ◆ load_check()

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

Self-test after loading a key

Parameters

  rng | a 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 }
Botan::Public_Key::check_key
virtual bool check_key(RandomNumberGenerator &rng, bool strong) const =0
Botan::Public_Key::algo_name
virtual std::string algo_name() const =0
Botan::Invalid_Argument
std::invalid_argument Invalid_Argument
Definition: exceptn.h:20

## ◆ 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(); }
Botan::BigInt::bits
size_t bits() const
Definition: bigint.cpp:254
Botan::EC_PublicKey::domain
const EC_Group & domain() const
Definition: ecc_key.h:60
Botan::EC_Group::get_order
const BigInt & get_order() const
Definition: ec_group.h:101

## ◆ 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::ECDSA_PublicKey, Botan::NR_PublicKey, and Botan::DSA_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::ECDSA_PublicKey, Botan::NR_PublicKey, and Botan::DSA_PublicKey.

Definition at line 50 of file pk_keys.h.

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

50 { return 1; }

## ◆ public_point()

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

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 45 of file ecc_key.h.

Referenced by Botan::EC_PublicKey::check_key(), Botan::EC_PublicKey::EC_PublicKey(), and Botan::EC_PublicKey::x509_subject_public_key().

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

## ◆ public_value()

MemoryVector<byte> Botan::ECDH_PublicKey::public_value | ( |  | ) | const
| inline

Returns
  public point value

Definition at line 55 of file ecdh.h.

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

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

56 { return EC2OSP(public_point(), PointGFp::UNCOMPRESSED); }
Botan::PointGFp::UNCOMPRESSED
Definition: point_gfp.h:45
Botan::EC_PublicKey::public_point
const PointGFp & public_point() const
Definition: ecc_key.h:45
Botan::EC2OSP
SecureVector< byte > EC2OSP(const PointGFp &point, byte format)
Definition: point_gfp.cpp:490

## ◆ 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

  enc | the encoding to use

Definition at line 55 of file ecc_key.cpp.

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

56 {
57 if(form != EC_DOMPAR_ENC_EXPLICIT &&
58 form != EC_DOMPAR_ENC_IMPLICITCA &&
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 }
Botan::EC_DOMPAR_ENC_EXPLICIT
Definition: ec_group.h:23
Botan::Invalid_Argument
std::invalid_argument Invalid_Argument
Definition: exceptn.h:20
Botan::EC_DOMPAR_ENC_IMPLICITCA
Definition: ec_group.h:24
Botan::EC_DOMPAR_ENC_OID
Definition: ec_group.h:25
Botan::EC_PublicKey::domain_encoding
EC_Group_Encoding domain_encoding
Definition: ecc_key.h:86
Botan::EC_Group::get_oid
std::string get_oid() const
Definition: ec_group.h:115
Botan::EC_PublicKey::domain_params
EC_Group domain_params
Definition: ecc_key.h:84

## ◆ 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.

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

51 {
52 return EC2OSP(public_point(), PointGFp::COMPRESSED);
53 }
Botan::PointGFp::COMPRESSED
Definition: point_gfp.h:46
Botan::EC_PublicKey::public_point
const PointGFp & public_point() const
Definition: ecc_key.h:45
Botan::EC2OSP
SecureVector< byte > EC2OSP(const PointGFp &point, byte format)
Definition: point_gfp.cpp:490

## Member Data Documentation

## ◆ domain_encoding

EC_Group_Encoding Botan::EC_PublicKey::domain_encoding
| protectedinherited

Definition at line 86 of file ecc_key.h.

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

## ◆ domain_params

EC_Group Botan::EC_PublicKey::domain_params
| protectedinherited

Definition at line 84 of file ecc_key.h.

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

## ◆ public_key

PointGFp Botan::EC_PublicKey::public_key
| protectedinherited

Definition at line 85 of file ecc_key.h.

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

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

- src/pubkey/ecdh/ecdh.h