Botan: Botan::ECDSA_PrivateKey Class Reference

Botan 1.10.12

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

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

`#include <ecdsa.h>`

Inheritance diagram for Botan::ECDSA_PrivateKey:

## Public Member Functions
std::string | algo_name () const
AlgorithmIdentifier | algorithm_identifier () const
bool | check_key (RandomNumberGenerator &rng, bool) const
MemoryVector< byte > | DER_domain () const
const EC_Group & | domain () const
EC_Group_Encoding | domain_format () const
| ECDSA_PrivateKey (const AlgorithmIdentifier &alg_id, const MemoryRegion< byte > &key_bits)
| ECDSA_PrivateKey (RandomNumberGenerator &rng, const EC_Group &domain, const BigInt &x=0)
virtual OID | get_oid () const
size_t | max_input_bits () const
size_t | message_part_size () const
size_t | message_parts () const
virtual AlgorithmIdentifier | pkcs8_algorithm_identifier () const
MemoryVector< byte > | pkcs8_private_key () const
const BigInt & | private_value () const
const PointGFp & | public_point () const
void | set_parameter_encoding (EC_Group_Encoding enc)
MemoryVector< byte > | x509_subject_public_key () const

## Protected Member Functions
void | gen_check (RandomNumberGenerator &rng) const
virtual void | load_check (RandomNumberGenerator &rng) const
void | load_check (RandomNumberGenerator &rng) const

## Protected Attributes
EC_Group_Encoding | domain_encoding
EC_Group | domain_params
BigInt | private_key
PointGFp | public_key

## Detailed Description

This class represents ECDSA Private Keys

Definition at line 64 of file ecdsa.h.

## Constructor & Destructor Documentation

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

Load a private key

Parameters

  alg_id | the X.509 algorithm identifier
  key_bits | PKCS #8 structure

Definition at line 74 of file ecdsa.h.

75 :
76 EC_PrivateKey(alg_id, key_bits) {}
Botan::EC_PrivateKey::EC_PrivateKey
EC_PrivateKey()
Definition: ecc_key.h:111

Botan::ECDSA_PrivateKey::ECDSA_PrivateKey | ( | RandomNumberGenerator & | rng,
|  | const EC_Group & | domain,
|  | const BigInt & | x = `0`
| ) |  |
| inline

Generate a new private key

Parameters

  rng | a random number generator
  domain | parameters to used for this key
  x | the private key (if zero, generate a ney random key)

Definition at line 84 of file ecdsa.h.

86 :
87 EC_PrivateKey(rng, domain, x) {}
Botan::EC_PublicKey::domain
const EC_Group & domain() const
Definition: ecc_key.h:60
Botan::EC_PrivateKey::EC_PrivateKey
EC_PrivateKey()
Definition: ecc_key.h:111

## Member Function Documentation

std::string Botan::ECDSA_PublicKey::algo_name | ( |  | ) | const
| inlinevirtualinherited

Get this keys algorithm name.

Returns
  this keys algorithm name ("ECDSA")

Implements Botan::Public_Key.

Definition at line 43 of file ecdsa.h.

Referenced by Botan::CVC_EAC::create_cvc_req(), and Botan::CVC_EAC::create_self_signed_cert().

43 { return "ECDSA"; }

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::EC_PublicKey::DER_domain
MemoryVector< byte > DER_domain() const
Definition: ecc_key.h:72
Botan::Public_Key::get_oid
virtual OID get_oid() const
Definition: pk_keys.cpp:17

bool Botan::ECDSA_PrivateKey::check_key | ( | RandomNumberGenerator & | rng,
|  | bool | strong
| ) |  | const
| 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

Reimplemented from Botan::EC_PublicKey.

Definition at line 15 of file ecdsa.cpp.

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

17 {
18 if(!public_point().on_the_curve())
19 return false;
20
21 if(!strong)
22 return true;
23
24 return KeyPair::signature_consistency_check(rng, *this, "EMSA1(SHA-1)");
25 }
Botan::KeyPair::signature_consistency_check
bool signature_consistency_check(RandomNumberGenerator &rng, const Private_Key &key, const std::string &padding)
Definition: keypair.cpp:47
Botan::EC_PublicKey::public_point
const PointGFp & public_point() const
Definition: ecc_key.h:45

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_PublicKey::domain
const EC_Group & domain() const
Definition: ecc_key.h:60
Botan::EC_Group::DER_encode
SecureVector< byte > DER_encode(EC_Group_Encoding form) const
Definition: ec_group.cpp:95
Botan::EC_PublicKey::domain_format
EC_Group_Encoding domain_format() const
Definition: ecc_key.h:79

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

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

void Botan::Private_Key::gen_check | ( | RandomNumberGenerator & | rng | ) | const
| protectedinherited

Self-test after generating a key

Parameters

  rng | a random number generator

Definition at line 49 of file pk_keys.cpp.

References Botan::Public_Key::algo_name(), and Botan::Public_Key::check_key().

Referenced by Botan::RSA_PrivateKey::RSA_PrivateKey(), and Botan::RW_PrivateKey::RW_PrivateKey().

50 {
51 if(!check_key(rng, BOTAN_PRIVATE_KEY_STRONG_CHECKS_ON_GENERATE))
52 throw Self_Test_Failure(algo_name() + " private key generation failed");
53 }
Botan::Public_Key::algo_name
virtual std::string algo_name() const =0
Botan::Public_Key::check_key
virtual bool check_key(RandomNumberGenerator &rng, bool strong) const =0

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

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.

References Botan::Public_Key::algo_name(), and Botan::Public_Key::check_key().

Referenced by Botan::DH_PrivateKey::DH_PrivateKey(), Botan::DSA_PrivateKey::DSA_PrivateKey(), Botan::ElGamal_PrivateKey::ElGamal_PrivateKey(), Botan::IF_Scheme_PrivateKey::IF_Scheme_PrivateKey(), and Botan::NR_PrivateKey::NR_PrivateKey().

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

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

Self-test after loading a key

Parameters

  rng | a random number generator

Reimplemented from Botan::Public_Key.

Definition at line 40 of file pk_keys.cpp.

References Botan::Public_Key::algo_name(), and Botan::Public_Key::check_key().

Referenced by Botan::DH_PrivateKey::DH_PrivateKey(), Botan::DSA_PrivateKey::DSA_PrivateKey(), Botan::ElGamal_PrivateKey::ElGamal_PrivateKey(), and Botan::NR_PrivateKey::NR_PrivateKey().

41 {
42 if(!check_key(rng, BOTAN_PRIVATE_KEY_STRONG_CHECKS_ON_LOAD))
43 throw Invalid_Argument(algo_name() + ": Invalid private key");
44 }
Botan::Public_Key::algo_name
virtual std::string algo_name() const =0
Botan::Invalid_Argument
std::invalid_argument Invalid_Argument
Definition: exceptn.h:20
Botan::Public_Key::check_key
virtual bool check_key(RandomNumberGenerator &rng, bool strong) const =0

size_t Botan::ECDSA_PublicKey::max_input_bits | ( |  | ) | const
| inlinevirtualinherited

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
  the maximum number of input bits

Implements Botan::Public_Key.

Definition at line 50 of file ecdsa.h.

50 { return domain().get_order().bits(); }
Botan::EC_PublicKey::domain
const EC_Group & domain() const
Definition: ecc_key.h:60
Botan::BigInt::bits
size_t bits() const
Definition: bigint.cpp:253
Botan::EC_Group::get_order
const BigInt & get_order() const
Definition: ec_group.h:101

size_t Botan::ECDSA_PublicKey::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 from Botan::Public_Key.

Definition at line 54 of file ecdsa.h.

55 { return domain().get_order().bytes(); }
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
Botan::BigInt::bytes
size_t bytes() const
Definition: bigint.cpp:245

size_t Botan::ECDSA_PublicKey::message_parts | ( |  | ) | const
| inlinevirtualinherited

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

Returns
  number of message parts

Reimplemented from Botan::Public_Key.

Definition at line 52 of file ecdsa.h.

52 { return 2; }

virtual AlgorithmIdentifier Botan::Private_Key::pkcs8_algorithm_identifier | ( |  | ) | const
| inlinevirtualinherited

Returns
  PKCS #8 AlgorithmIdentifier for this key Might be different from the X.509 identifier, but normally is not

Definition at line 98 of file pk_keys.h.

Referenced by Botan::PKCS8::BER_encode().

99 { return algorithm_identifier(); }
Botan::Public_Key::algorithm_identifier
virtual AlgorithmIdentifier algorithm_identifier() const =0

MemoryVector< byte > Botan::EC_PrivateKey::pkcs8_private_key | ( |  | ) | const
| virtualinherited

Returns
  PKCS #8 private key encoding for this key object

Implements Botan::Private_Key.

Definition at line 99 of file ecc_key.cpp.

References Botan::DER_Encoder::encode(), Botan::BigInt::encode_1363(), Botan::DER_Encoder::end_cons(), Botan::DER_Encoder::get_contents(), Botan::OCTET_STRING, Botan::SEQUENCE, and Botan::DER_Encoder::start_cons().

100 {
101 return DER_Encoder()
102 .start_cons(SEQUENCE)
103 .encode(static_cast<size_t>(1))
104 .encode(BigInt::encode_1363(private_key, private_key.bytes()),
105 OCTET_STRING)
106 .end_cons()
107 .get_contents();
108 }
Botan::EC_PrivateKey::private_key
BigInt private_key
Definition: ecc_key.h:113
Botan::OCTET_STRING
Definition: asn1_int.h:31
Botan::SEQUENCE
Definition: asn1_int.h:35
Botan::BigInt::encode_1363
static SecureVector< byte > encode_1363(const BigInt &n, size_t bytes)
Definition: big_code.cpp:78
Botan::BigInt::bytes
size_t bytes() const
Definition: bigint.cpp:245

const BigInt & Botan::EC_PrivateKey::private_value | ( |  | ) | const
| inherited

Get the private key value of this key object.

Returns
  the private key value of this key object

Definition at line 70 of file ecc_key.cpp.

Referenced by Botan::ECDH_KA_Operation::ECDH_KA_Operation().

71 {
72 if(private_key == 0)
73 throw Invalid_State("EC_PrivateKey::private_value - uninitialized");
74
75 return private_key;
76 }
Botan::EC_PrivateKey::private_key
BigInt private_key
Definition: ecc_key.h:113

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(), 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

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().

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

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_Group::get_oid
std::string get_oid() const
Definition: ec_group.h:115
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_PublicKey::domain_params
EC_Group domain_params
Definition: ecc_key.h:84

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

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().

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().

BigInt Botan::EC_PrivateKey::private_key
| protectedinherited

Definition at line 113 of file ecc_key.h.

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 files:

- src/pubkey/ecdsa/ecdsa.h
- src/pubkey/ecdsa/ecdsa.cpp