Botan 3.3.0
Crypto and TLS for C&
Public Member Functions | List of all members
Botan::RFC6979_Nonce_Generator Class Referencefinal

#include <rfc6979.h>

Public Member Functions

const BigIntnonce_for (const BigInt &m)
 
 RFC6979_Nonce_Generator (std::string_view hash, const BigInt &order, const BigInt &x)
 
 ~RFC6979_Nonce_Generator ()
 

Detailed Description

Definition at line 19 of file rfc6979.h.

Constructor & Destructor Documentation

◆ RFC6979_Nonce_Generator()

Botan::RFC6979_Nonce_Generator::RFC6979_Nonce_Generator ( std::string_view hash,
const BigInt & order,
const BigInt & x )

Note: keeps persistent reference to order

Definition at line 16 of file rfc6979.cpp.

16 :
17 m_order(order),
18 m_qlen(m_order.bits()),
19 m_rlen(m_qlen / 8 + (m_qlen % 8 ? 1 : 0)),
20 m_rng_in(m_rlen * 2),
21 m_rng_out(m_rlen) {
22 m_hmac_drbg = std::make_unique<HMAC_DRBG>(MessageAuthenticationCode::create_or_throw(fmt("HMAC({})", hash)));
23
24 BigInt::encode_1363(m_rng_in.data(), m_rlen, x);
25}
size_t bits() const
Definition bigint.cpp:290
static secure_vector< uint8_t > encode_1363(const BigInt &n, size_t bytes)
Definition big_code.cpp:105
static std::unique_ptr< MessageAuthenticationCode > create_or_throw(std::string_view algo_spec, std::string_view provider="")
Definition mac.cpp:148
std::string fmt(std::string_view format, const T &... args)
Definition fmt.h:53

References Botan::MessageAuthenticationCode::create_or_throw(), Botan::BigInt::encode_1363(), and Botan::fmt().

◆ ~RFC6979_Nonce_Generator()

Botan::RFC6979_Nonce_Generator::~RFC6979_Nonce_Generator ( )
default

Member Function Documentation

◆ nonce_for()

const BigInt & Botan::RFC6979_Nonce_Generator::nonce_for ( const BigInt & m)

Definition at line 29 of file rfc6979.cpp.

29 {
30 BigInt::encode_1363(&m_rng_in[m_rlen], m_rlen, m);
31 m_hmac_drbg->clear();
32 m_hmac_drbg->initialize_with(m_rng_in.data(), m_rng_in.size());
33
34 do {
35 m_hmac_drbg->randomize(m_rng_out.data(), m_rng_out.size());
36 m_k.binary_decode(m_rng_out.data(), m_rng_out.size());
37 m_k >>= (8 * m_rlen - m_qlen);
38 } while(m_k == 0 || m_k >= m_order);
39
40 return m_k;
41}
void binary_decode(const uint8_t buf[], size_t length)
Definition bigint.cpp:403

References Botan::BigInt::binary_decode(), and Botan::BigInt::encode_1363().

Referenced by Botan::generate_rfc6979_nonce().


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