11#include <botan/ed25519.h>
12#include <botan/internal/ed25519_internal.h>
13#include <botan/internal/sha2_64.h>
37 const uint8_t m[],
size_t mlen,
39 const uint8_t domain_sep[],
size_t domain_sep_len)
53 sha.
update(domain_sep, domain_sep_len);
61 sha.
update(domain_sep, domain_sep_len);
72 const uint8_t sig[64],
74 const uint8_t domain_sep[],
size_t domain_sep_len)
90 const uint64_t CURVE25519_ORDER[4] = {
97 const uint64_t s[4] = {
106 for(
size_t i = 0; i != 4; ++i)
108 if(s[i] > CURVE25519_ORDER[i])
110 if(s[i] < CURVE25519_ORDER[i])
116 sha.
update(domain_sep, domain_sep_len);
void update(const uint8_t in[], size_t length)
void final(uint8_t out[])
int ge_frombytes_negate_vartime(ge_p3 *v, const uint8_t *)
void ed25519_sign(uint8_t sig[64], const uint8_t m[], size_t mlen, const uint8_t sk[64], const uint8_t domain_sep[], size_t domain_sep_len)
void ed25519_gen_keypair(uint8_t *pk, uint8_t *sk, const uint8_t seed[32])
constexpr void copy_mem(T *out, const T *in, size_t n)
void ge_scalarmult_base(uint8_t out[32], const uint8_t in[32])
bool constant_time_compare(const uint8_t x[], const uint8_t y[], size_t len)
constexpr uint64_t load_le< uint64_t >(const uint8_t in[], size_t off)
bool ed25519_verify(const uint8_t *m, size_t mlen, const uint8_t sig[64], const uint8_t *pk, const uint8_t domain_sep[], size_t domain_sep_len)
void sc_reduce(uint8_t *)
void ge_double_scalarmult_vartime(uint8_t out[32], const uint8_t a[], const ge_p3 *A, const uint8_t b[])
void sc_muladd(uint8_t *, const uint8_t *, const uint8_t *, const uint8_t *)