Botan: Botan::RW_PublicKey Class Reference

Botan 1.10.16

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

`#include <rw.h>`

Inheritance diagram for Botan::RW_PublicKey:

## Public Member Functions
std::string | algo_name () const
AlgorithmIdentifier | algorithm_identifier () const
bool | check_key (RandomNumberGenerator &rng, bool) const
const BigInt & | get_e () const
const BigInt & | get_n () const
virtual OID | get_oid () const
size_t | max_input_bits () const
virtual size_t | message_part_size () const
virtual size_t | message_parts () const
| RW_PublicKey (const AlgorithmIdentifier &alg_id, const MemoryRegion< byte > &key_bits)
| RW_PublicKey (const BigInt &mod, const BigInt &exponent)
MemoryVector< byte > | x509_subject_public_key () const

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

## Protected Attributes
BigInt | e
BigInt | n

## Detailed Description

Rabin-Williams Public Key

Definition at line 21 of file rw.h.

## Constructor & Destructor Documentation

## ◆ RW_PublicKey() [1/3]

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

Definition at line 26 of file rw.h.

27 :
28 IF_Scheme_PublicKey(alg_id, key_bits)
29 {}
Botan::IF_Scheme_PublicKey::IF_Scheme_PublicKey
IF_Scheme_PublicKey()
Definition: if_algo.h:49

## ◆ RW_PublicKey() [2/3]

Botan::RW_PublicKey::RW_PublicKey | ( | const BigInt & | mod,
|  | const BigInt & | exponent
| ) |  |
| inline

Definition at line 31 of file rw.h.

31 :
32 IF_Scheme_PublicKey(mod, exponent)
33 {}
Botan::IF_Scheme_PublicKey::IF_Scheme_PublicKey
IF_Scheme_PublicKey()
Definition: if_algo.h:49

## ◆ RW_PublicKey() [3/3]

Botan::RW_PublicKey::RW_PublicKey | ( |  | ) |
| inlineprotected

Definition at line 36 of file rw.h.

36 {}

## Member Function Documentation

## ◆ algo_name()

std::string Botan::RW_PublicKey::algo_name | ( |  | ) | const
| inlinevirtual

Get the name of the underlying public key scheme.

Returns
  name of the public key scheme

Implements Botan::Public_Key.

Definition at line 24 of file rw.h.

24 { return "RW"; }

## ◆ algorithm_identifier()

AlgorithmIdentifier Botan::IF_Scheme_PublicKey::algorithm_identifier | ( |  | ) | const
| virtualinherited

Returns
  X.509 AlgorithmIdentifier for this key

Implements Botan::Public_Key.

Definition at line 15 of file if_algo.cpp.

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

16 {
17 return AlgorithmIdentifier(get_oid(),
18 AlgorithmIdentifier::USE_NULL_PARAM);
19 }
Botan::Public_Key::get_oid
virtual OID get_oid() const
Definition: pk_keys.cpp:17
Botan::AlgorithmIdentifier::USE_NULL_PARAM
Definition: alg_id.h:23

## ◆ check_key()

bool Botan::IF_Scheme_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::IF_Scheme_PrivateKey, Botan::RW_PrivateKey, and Botan::RSA_PrivateKey.

Definition at line 45 of file if_algo.cpp.

References Botan::IF_Scheme_PublicKey::e, Botan::BigInt::is_even(), and Botan::IF_Scheme_PublicKey::n.

46 {
47 if(n < 35 || n.is_even() || e < 2)
48 return false;
49 return true;
50 }
Botan::IF_Scheme_PublicKey::n
BigInt n
Definition: if_algo.h:51
Botan::IF_Scheme_PublicKey::e
BigInt e
Definition: if_algo.h:51
Botan::BigInt::is_even
bool is_even() const
Definition: bigint.h:158

## ◆ get_e()

const BigInt& Botan::IF_Scheme_PublicKey::get_e | ( |  | ) | const
| inlineinherited

Returns
  public exponent

Definition at line 44 of file if_algo.h.

44 { return e; }
Botan::IF_Scheme_PublicKey::e
BigInt e
Definition: if_algo.h:51

## ◆ get_n()

const BigInt& Botan::IF_Scheme_PublicKey::get_n | ( |  | ) | const
| inlineinherited

Returns
  public modulus

Definition at line 39 of file if_algo.h.

39 { return n; }
Botan::IF_Scheme_PublicKey::n
BigInt n
Definition: if_algo.h:51

## ◆ 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::IF_Scheme_PublicKey::max_input_bits | ( |  | ) | const
| inlinevirtualinherited

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

Returns
  maximum message size in bits

Implements Botan::Public_Key.

Definition at line 46 of file if_algo.h.

46 { return (n.bits() - 1); }
Botan::IF_Scheme_PublicKey::n
BigInt n
Definition: if_algo.h:51
Botan::BigInt::bits
size_t bits() const
Definition: bigint.cpp:253

## ◆ 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(), Botan::X509_Object::check_signature(), and Botan::X509_Store::validate_cert().

50 { return 1; }

## ◆ x509_subject_public_key()

MemoryVector< byte > Botan::IF_Scheme_PublicKey::x509_subject_public_key | ( |  | ) | const
| virtualinherited

Returns
  X.509 subject key encoding for this key object

Implements Botan::Public_Key.

Definition at line 21 of file if_algo.cpp.

References Botan::IF_Scheme_PublicKey::e, Botan::DER_Encoder::encode(), Botan::DER_Encoder::end_cons(), Botan::DER_Encoder::get_contents(), Botan::IF_Scheme_PublicKey::n, Botan::SEQUENCE, and Botan::DER_Encoder::start_cons().

22 {
23 return DER_Encoder()
24 .start_cons(SEQUENCE)
25 .encode(n)
26 .encode(e)
27 .end_cons()
28 .get_contents();
29 }
Botan::IF_Scheme_PublicKey::n
BigInt n
Definition: if_algo.h:51
Botan::IF_Scheme_PublicKey::e
BigInt e
Definition: if_algo.h:51
Botan::SEQUENCE
Definition: asn1_int.h:35

## Member Data Documentation

## ◆ e

BigInt Botan::IF_Scheme_PublicKey::e
| protectedinherited

Definition at line 51 of file if_algo.h.

Referenced by Botan::IF_Scheme_PublicKey::check_key(), Botan::IF_Scheme_PublicKey::IF_Scheme_PublicKey(), Botan::IF_Scheme_PrivateKey::pkcs8_private_key(), and Botan::IF_Scheme_PublicKey::x509_subject_public_key().

## ◆ n

BigInt Botan::IF_Scheme_PublicKey::n
| protectedinherited

Definition at line 51 of file if_algo.h.

Referenced by Botan::IF_Scheme_PublicKey::check_key(), Botan::IF_Scheme_PublicKey::IF_Scheme_PublicKey(), Botan::IF_Scheme_PrivateKey::pkcs8_private_key(), and Botan::IF_Scheme_PublicKey::x509_subject_public_key().

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

- src/pubkey/rw/rw.h