9 #include <botan/numthry.h>
10 #include <botan/keypair.h>
77 powermod_g_p(nr.group_g(), nr.group_p()),
102 c = mod_q.
reduce(powermod_g_p(k) + f);
103 d = mod_q.
reduce(k - x * c);
113 q(nr.group_q()), y(nr.get_y())
126 if(msg_len != 2*q.
bytes())
132 if(c.is_zero() || c >= q || d >= q)
void load_check(RandomNumberGenerator &rng) const
void binary_encode(byte buf[]) const
SecureVector< byte > sign(const byte msg[], size_t msg_len, RandomNumberGenerator &rng)
bool signature_consistency_check(RandomNumberGenerator &rng, const Private_Key &key, const std::string &padding)
NR_PrivateKey(const AlgorithmIdentifier &alg_id, const MemoryRegion< byte > &key_bits, RandomNumberGenerator &rng)
virtual void add_entropy(const byte in[], size_t length)=0
const BigInt & group_q() const
const BigInt & group_p() const
NR_Verification_Operation(const NR_PublicKey &nr)
SecureVector< byte > verify_mr(const byte msg[], size_t msg_len)
std::invalid_argument Invalid_Argument
static SecureVector< byte > encode(const BigInt &n, Base base=Binary)
static BigInt random_integer(RandomNumberGenerator &rng, const BigInt &min, const BigInt &max)
bool check_key(RandomNumberGenerator &rng, bool strong) const
bool check_key(RandomNumberGenerator &rng, bool) const
RandomNumberGenerator * rng
void randomize(RandomNumberGenerator &rng, size_t bitsize=0)
NR_Signature_Operation(const NR_PrivateKey &nr)
BigInt multiply(const BigInt &x, const BigInt &y) const
BigInt reduce(const BigInt &x) const
BigInt power_mod(const BigInt &base, const BigInt &exp, const BigInt &mod)
const BigInt & group_g() const
void gen_check(RandomNumberGenerator &rng) const
const BigInt & get_modulus() const