11#ifndef BOTAN_ED25519_INT_H_
12#define BOTAN_ED25519_INT_H_
14#include <botan/internal/loadstor.h>
18inline uint32_t
load_3(
const uint8_t in[3]) {
19 return static_cast<uint32_t
>(in[0]) | (
static_cast<uint32_t
>(in[1]) << 8) | (
static_cast<uint32_t
>(in[2]) << 16);
22inline uint32_t
load_4(
const uint8_t* in) {
26template <
size_t S,
int64_t MUL = 1>
27inline void carry(int64_t& h0, int64_t& h1)
28 requires(S > 0 && S < 64)
30 const int64_t X1 = (
static_cast<int64_t
>(1) << S);
31 const int64_t X2 = (
static_cast<int64_t
>(1) << (S - 1));
32 int64_t c = (h0 + X2) >> S;
38inline void carry0(int64_t& h0, int64_t& h1)
39 requires(S > 0 && S < 64)
41 const int64_t X1 = (
static_cast<int64_t
>(1) << S);
48inline void carry0(int32_t& h0, int32_t& h1)
49 requires(S > 0 && S < 32)
51 const int32_t X1 = (
static_cast<int64_t
>(1) << S);
57inline void redc_mul(int64_t& s1, int64_t& s2, int64_t& s3, int64_t& s4, int64_t& s5, int64_t& s6, int64_t& X) {
69bool signature_check(std::span<const uint8_t, 32> pk,
const uint8_t h[32],
const uint8_t r[32],
const uint8_t s[32]);
77void sc_muladd(uint8_t* s,
const uint8_t* a,
const uint8_t* b,
const uint8_t* c);
void ed25519_basepoint_mul(std::span< uint8_t, 32 > out, const uint8_t in[32])
void redc_mul(int64_t &s1, int64_t &s2, int64_t &s3, int64_t &s4, int64_t &s5, int64_t &s6, int64_t &X)
void sc_muladd(uint8_t *s, const uint8_t *a, const uint8_t *b, const uint8_t *c)
void carry0(int64_t &h0, int64_t &h1)
uint32_t load_3(const uint8_t in[3])
bool signature_check(std::span< const uint8_t, 32 > pk, const uint8_t h[32], const uint8_t r[32], const uint8_t s[32])
void sc_reduce(uint8_t *s)
void carry(int64_t &h0, int64_t &h1)
constexpr auto load_le(ParamTs &&... params)
uint32_t load_4(const uint8_t *in)