Botan: Botan::DL_Scheme_PublicKey Class Reference

Botan 1.10.17

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

`#include <dl_algo.h>`

Inheritance diagram for Botan::DL_Scheme_PublicKey:

## Public Member Functions
virtual std::string | algo_name () const =0
AlgorithmIdentifier | algorithm_identifier () const
bool | check_key (RandomNumberGenerator &rng, bool) const
| DL_Scheme_PublicKey (const AlgorithmIdentifier &alg_id, const MemoryRegion< byte > &key_bits, DL_Group::Format group_format)
const DL_Group & | get_domain () const
virtual OID | get_oid () const
const BigInt & | get_y () const
virtual DL_Group::Format | group_format () const =0
const BigInt & | group_g () const
const BigInt & | group_p () const
const BigInt & | group_q () const
virtual size_t | max_input_bits () const =0
virtual size_t | message_part_size () const
virtual size_t | message_parts () const
MemoryVector< byte > | x509_subject_public_key () const

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

## Protected Attributes
DL_Group | group
BigInt | y

## Detailed Description

This class represents discrete logarithm (DL) public keys.

Definition at line 20 of file dl_algo.h.

## Constructor & Destructor Documentation

## ◆ DL_Scheme_PublicKey() [1/2]

Botan::DL_Scheme_PublicKey::DL_Scheme_PublicKey | ( | const AlgorithmIdentifier & | alg_id,
|  | const MemoryRegion< byte > & | key_bits,
|  | DL_Group::Format | group_format
| ) |  |

Definition at line 26 of file dl_algo.cpp.

References Botan::DL_Group::BER_decode(), Botan::BER_Decoder::decode(), group, Botan::AlgorithmIdentifier::parameters, and y.

29 {
30 DataSource_Memory source(alg_id.parameters);
31 group.BER_decode(source, format);
32
33 BER_Decoder(key_bits).decode(y);
34 }
Botan::DL_Group::BER_decode
void BER_decode(DataSource &src, Format format)
Definition: dl_group.cpp:264
Botan::DL_Scheme_PublicKey::group
DL_Group group
Definition: dl_algo.h:79
Botan::DL_Scheme_PublicKey::y
BigInt y
Definition: dl_algo.h:74

## ◆ DL_Scheme_PublicKey() [2/2]

Botan::DL_Scheme_PublicKey::DL_Scheme_PublicKey | ( |  | ) |
| inlineprotected

Definition at line 69 of file dl_algo.h.

69 {}

## Member Function Documentation

## ◆ algo_name()

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

Get the name of the underlying public key scheme.

Returns
  name of the public key scheme

Implemented in Botan::ECDSA_PublicKey, Botan::ECDH_PublicKey, Botan::ElGamal_PublicKey, Botan::DH_PublicKey, Botan::DSA_PublicKey, Botan::NR_PublicKey, Botan::RSA_PublicKey, and Botan::RW_PublicKey.

Referenced by Botan::EAC_Signed_Object::check_signature(), Botan::X509_Object::check_signature(), Botan::X509::find_constraints(), Botan::Public_Key::get_oid(), Botan::PK_Decryptor_EME::PK_Decryptor_EME(), Botan::PK_Encryptor_EME::PK_Encryptor_EME(), Botan::PK_Key_Agreement::PK_Key_Agreement(), Botan::PK_Signer::PK_Signer(), Botan::PK_Verifier::PK_Verifier(), and Botan::Server_Key_Exchange::verify().

## ◆ algorithm_identifier()

AlgorithmIdentifier Botan::DL_Scheme_PublicKey::algorithm_identifier | ( |  | ) | const
| virtual

Returns
  X.509 AlgorithmIdentifier for this key

Implements Botan::Public_Key.

Definition at line 15 of file dl_algo.cpp.

References Botan::DL_Group::DER_encode(), Botan::Public_Key::get_oid(), group, and group_format().

16 {
17 return AlgorithmIdentifier(get_oid(),
18 group.DER_encode(group_format()));
19 }
Botan::Public_Key::get_oid
virtual OID get_oid() const
Definition: pk_keys.cpp:17
Botan::DL_Scheme_PublicKey::group_format
virtual DL_Group::Format group_format() const =0
Botan::DL_Scheme_PublicKey::group
DL_Group group
Definition: dl_algo.h:79
Botan::DL_Group::DER_encode
SecureVector< byte > DER_encode(Format format) const
Definition: dl_group.cpp:205

## ◆ check_key()

bool Botan::DL_Scheme_PublicKey::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

Implements Botan::Public_Key.

Reimplemented in Botan::DL_Scheme_PrivateKey, Botan::DSA_PrivateKey, Botan::ElGamal_PrivateKey, and Botan::NR_PrivateKey.

Definition at line 54 of file dl_algo.cpp.

56 {
57 if(y < 2 || y >= group_p())
58 return false;
59 if(!group.verify_group(rng, strong))
60 return false;
61 return true;
62 }
Botan::DL_Group::verify_group
bool verify_group(RandomNumberGenerator &rng, bool strong) const
Definition: dl_group.cpp:153
Botan::DL_Scheme_PublicKey::group_p
const BigInt & group_p() const
Definition: dl_algo.h:44
Botan::DL_Scheme_PublicKey::group
DL_Group group
Definition: dl_algo.h:79

## ◆ get_domain()

const DL_Group& Botan::DL_Scheme_PublicKey::get_domain | ( |  | ) | const
| inline

Get the DL domain parameters of this key.

Returns
  DL domain parameters of this key

Definition at line 33 of file dl_algo.h.

33 { return group; }
Botan::DL_Scheme_PublicKey::group
DL_Group group
Definition: dl_algo.h:79

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

## ◆ get_y()

const BigInt& Botan::DL_Scheme_PublicKey::get_y | ( |  | ) | const
| inline

Get the public value y with y = g^x mod p where x is the secret key.

Definition at line 38 of file dl_algo.h.

Referenced by Botan::ElGamal_Encryption_Operation::ElGamal_Encryption_Operation().

38 { return y; }
Botan::DL_Scheme_PublicKey::y
BigInt y
Definition: dl_algo.h:74

## ◆ group_format()

virtual DL_Group::Format Botan::DL_Scheme_PublicKey::group_format | ( |  | ) | const
| pure virtual

Get the underlying groups encoding format.

Returns
  encoding format

Implemented in Botan::DH_PublicKey, Botan::DSA_PublicKey, Botan::ElGamal_PublicKey, and Botan::NR_PublicKey.

Referenced by algorithm_identifier().

## ◆ group_g()

const BigInt& Botan::DL_Scheme_PublicKey::group_g | ( |  | ) | const
| inline

Get the generator g of the underlying DL group.

Returns
  generator g

Definition at line 56 of file dl_algo.h.

Referenced by Botan::DSA_Verification_Operation::DSA_Verification_Operation(), Botan::ElGamal_Encryption_Operation::ElGamal_Encryption_Operation(), and Botan::NR_Verification_Operation::NR_Verification_Operation().

56 { return group.get_g(); }
Botan::DL_Group::get_g
const BigInt & get_g() const
Definition: dl_group.cpp:185
Botan::DL_Scheme_PublicKey::group
DL_Group group
Definition: dl_algo.h:79

## ◆ group_p()

const BigInt& Botan::DL_Scheme_PublicKey::group_p | ( |  | ) | const
| inline

Get the prime p of the underlying DL group.

Returns
  prime p

Definition at line 44 of file dl_algo.h.

Referenced by Botan::DSA_Verification_Operation::DSA_Verification_Operation(), Botan::ElGamal_Decryption_Operation::ElGamal_Decryption_Operation(), Botan::ElGamal_Encryption_Operation::ElGamal_Encryption_Operation(), Botan::NR_Verification_Operation::NR_Verification_Operation(), and Botan::DH_PublicKey::public_value().

44 { return group.get_p(); }
Botan::DL_Group::get_p
const BigInt & get_p() const
Definition: dl_group.cpp:176
Botan::DL_Scheme_PublicKey::group
DL_Group group
Definition: dl_algo.h:79

## ◆ group_q()

const BigInt& Botan::DL_Scheme_PublicKey::group_q | ( |  | ) | const
| inline

Get the prime q of the underlying DL group.

Returns
  prime q

Definition at line 50 of file dl_algo.h.

Referenced by Botan::DSA_Verification_Operation::DSA_Verification_Operation(), and Botan::NR_Verification_Operation::NR_Verification_Operation().

50 { return group.get_q(); }
Botan::DL_Scheme_PublicKey::group
DL_Group group
Definition: dl_algo.h:79
Botan::DL_Group::get_q
const BigInt & get_q() const
Definition: dl_group.cpp:194

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

virtual size_t Botan::Public_Key::max_input_bits | ( |  | ) | const
| pure virtualinherited

Get the maximum message size in bits supported by this public key.

Returns
  maximum message size in bits

Implemented in Botan::ECDH_PublicKey, Botan::ECDSA_PublicKey, Botan::IF_Scheme_PublicKey, Botan::NR_PublicKey, Botan::DSA_PublicKey, Botan::ElGamal_PublicKey, and Botan::DH_PublicKey.

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

## ◆ x509_subject_public_key()

MemoryVector< byte > Botan::DL_Scheme_PublicKey::x509_subject_public_key | ( |  | ) | const
| virtual

Returns
  X.509 subject key encoding for this key object

Implements Botan::Public_Key.

Definition at line 21 of file dl_algo.cpp.

References Botan::DER_Encoder::encode(), Botan::DER_Encoder::get_contents(), and y.

22 {
23 return DER_Encoder().encode(y).get_contents();
24 }
Botan::DL_Scheme_PublicKey::y
BigInt y
Definition: dl_algo.h:74

## Member Data Documentation

## ◆ group

DL_Group Botan::DL_Scheme_PublicKey::group
| protected

The DL group

Definition at line 79 of file dl_algo.h.

Referenced by algorithm_identifier(), Botan::DH_PublicKey::DH_PublicKey(), Botan::DL_Scheme_PrivateKey::DL_Scheme_PrivateKey(), DL_Scheme_PublicKey(), Botan::DSA_PublicKey::DSA_PublicKey(), Botan::ElGamal_PublicKey::ElGamal_PublicKey(), and Botan::NR_PublicKey::NR_PublicKey().

## ◆ y

BigInt Botan::DL_Scheme_PublicKey::y
| protected

The DL public key

Definition at line 74 of file dl_algo.h.

Referenced by Botan::DH_PublicKey::DH_PublicKey(), DL_Scheme_PublicKey(), Botan::DSA_PublicKey::DSA_PublicKey(), Botan::ElGamal_PublicKey::ElGamal_PublicKey(), Botan::NR_PublicKey::NR_PublicKey(), Botan::DH_PublicKey::public_value(), and x509_subject_public_key().

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

- src/pubkey/dl_algo/dl_algo.h
- src/pubkey/dl_algo/dl_algo.cpp