Botan: Botan::NR_PublicKey Class Reference

Botan 1.10.16

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

`#include <nr.h>`

Inheritance diagram for Botan::NR_PublicKey:

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

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

## Protected Attributes
DL_Group | group
BigInt | y

## Detailed Description

Nyberg-Rueppel Public Key

Definition at line 21 of file nr.h.

## Constructor & Destructor Documentation

## ◆ NR_PublicKey() [1/3]

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

Definition at line 14 of file nr.cpp.

15 :
16 DL_Scheme_PublicKey(alg_id, key_bits, DL_Group::ANSI_X9_57)
17 {
18 }
Botan::DL_Group::ANSI_X9_57
Definition: dl_group.h:46
Botan::DL_Scheme_PublicKey::DL_Scheme_PublicKey
DL_Scheme_PublicKey()
Definition: dl_algo.h:69

## ◆ NR_PublicKey() [2/3]

Botan::NR_PublicKey::NR_PublicKey | ( | const DL_Group & | group,
|  | const BigInt & | pub_key
| ) |  |

Definition at line 23 of file nr.cpp.

References Botan::DL_Scheme_PublicKey::group, and Botan::DL_Scheme_PublicKey::y.

24 {
25 group = grp;
26 y = y1;
27 }
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

## ◆ NR_PublicKey() [3/3]

Botan::NR_PublicKey::NR_PublicKey | ( |  | ) |
| inlineprotected

Definition at line 37 of file nr.h.

37 {}

## Member Function Documentation

## ◆ algo_name()

std::string Botan::NR_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 nr.h.

24 { return "NR"; }

## ◆ algorithm_identifier()

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

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(), Botan::DL_Scheme_PublicKey::group, and Botan::DL_Scheme_PublicKey::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
| 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::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
| inlineinherited

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

## ◆ get_y()

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

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

DL_Group::Format Botan::NR_PublicKey::group_format | ( |  | ) | const
| inlinevirtual

Get the underlying groups encoding format.

Returns
  encoding format

Implements Botan::DL_Scheme_PublicKey.

Definition at line 26 of file nr.h.

References Botan::DL_Group::ANSI_X9_57.

26 { return DL_Group::ANSI_X9_57; }
Botan::DL_Group::ANSI_X9_57
Definition: dl_group.h:46

## ◆ group_g()

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

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
| inlineinherited

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
| inlineinherited

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

size_t Botan::NR_PublicKey::max_input_bits | ( |  | ) | const
| inlinevirtual

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 30 of file nr.h.

30 { return (group_q().bits() - 1); }
Botan::DL_Scheme_PublicKey::group_q
const BigInt & group_q() const
Definition: dl_algo.h:50

## ◆ message_part_size()

size_t Botan::NR_PublicKey::message_part_size | ( |  | ) | const
| inlinevirtual

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 29 of file nr.h.

29 { return group_q().bytes(); }
Botan::BigInt::bytes
size_t bytes() const
Definition: bigint.cpp:245
Botan::DL_Scheme_PublicKey::group_q
const BigInt & group_q() const
Definition: dl_algo.h:50

## ◆ message_parts()

size_t Botan::NR_PublicKey::message_parts | ( |  | ) | const
| inlinevirtual

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

Returns
  number of message parts

Reimplemented from Botan::Public_Key.

Definition at line 28 of file nr.h.

28 { return 2; }

## ◆ x509_subject_public_key()

MemoryVector< byte > Botan::DL_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 dl_algo.cpp.

References Botan::DER_Encoder::encode(), Botan::DER_Encoder::get_contents(), and Botan::DL_Scheme_PublicKey::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
| protectedinherited

The DL group

Definition at line 79 of file dl_algo.h.

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

## ◆ y

BigInt Botan::DL_Scheme_PublicKey::y
| protectedinherited

The DL public key

Definition at line 74 of file dl_algo.h.

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

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

- src/pubkey/nr/nr.h
- src/pubkey/nr/nr.cpp