10 #include <botan/ecdsa.h> 11 #include <botan/keypair.h> 28 base_point(ecdsa.
domain().get_base_point()),
29 order(ecdsa.
domain().get_order()),
45 while(r == 0 || s == 0)
61 s.binary_encode(&output[output.size() - s.bytes()]);
66 base_point(ecdsa.domain().get_base_point()),
67 public_point(ecdsa.public_point()),
68 order(ecdsa.domain().get_order())
73 const byte sig[],
size_t sig_len)
75 if(sig_len != order.
bytes()*2)
80 BigInt r(sig, sig_len / 2);
81 BigInt s(sig + sig_len / 2, sig_len / 2);
83 if(r <= 0 || r >= order || s <= 0 || s >= order)
const BigInt & private_value() const
bool signature_consistency_check(RandomNumberGenerator &rng, const Private_Key &key, const std::string &padding)
bool verify(const byte msg[], size_t msg_len, const byte sig[], size_t sig_len)
virtual void add_entropy(const byte in[], size_t length)=0
const PointGFp & public_point() const
SecureVector< byte > sign(const byte msg[], size_t msg_len, RandomNumberGenerator &rng)
BigInt get_affine_x() const
void randomize(RandomNumberGenerator &rng, size_t bitsize=0)
const EC_Group & domain() const
void binary_encode(byte buf[]) const
BigInt inverse_mod(const BigInt &n, const BigInt &mod)
ECDSA_Signature_Operation(const ECDSA_PrivateKey &ecdsa)
BigInt reduce(const BigInt &x) const
bool check_key(RandomNumberGenerator &rng, bool) const
ECDSA_Verification_Operation(const ECDSA_PublicKey &ecdsa)
BigInt multiply(const BigInt &x, const BigInt &y) const
PointGFp multi_exponentiate(const PointGFp &p1, const BigInt &z1, const PointGFp &p2, const BigInt &z2)
BigInt mul_add(const BigInt &a, const BigInt &b, const BigInt &c)