12#ifndef BOTAN_ED25519_FE_H_
13#define BOTAN_ED25519_FE_H_
15#include <botan/exceptn.h>
16#include <botan/mem_ops.h>
17#include <botan/internal/ct_utils.h>
58 m_fe[0] =
static_cast<int32_t
>(h0);
59 m_fe[1] =
static_cast<int32_t
>(h1);
60 m_fe[2] =
static_cast<int32_t
>(h2);
61 m_fe[3] =
static_cast<int32_t
>(h3);
62 m_fe[4] =
static_cast<int32_t
>(h4);
63 m_fe[5] =
static_cast<int32_t
>(h5);
64 m_fe[6] =
static_cast<int32_t
>(h6);
65 m_fe[7] =
static_cast<int32_t
>(h7);
66 m_fe[8] =
static_cast<int32_t
>(h8);
67 m_fe[9] =
static_cast<int32_t
>(h9);
75 std::array<uint8_t, 32> value = {};
86 std::array<uint8_t, 32> s = {};
88 return (s[0] & 0x01) == 0x01;
93 for(
size_t i = 0; i != 10; ++i) {
94 z.m_fe[i] = a.m_fe[i] + b.m_fe[i];
101 for(
size_t i = 0; i != 10; ++i) {
102 z.m_fe[i] = a.m_fe[i] - b.m_fe[i];
109 for(
size_t i = 0; i != 10; ++i) {
110 z.m_fe[i] = -a.m_fe[i];
134 std::array<int32_t, 10> m_fe;
static Ed25519_FieldElement negate(const Ed25519_FieldElement &a)
static Ed25519_FieldElement deserialize(const uint8_t b[32])
static Ed25519_FieldElement sub(const Ed25519_FieldElement &a, const Ed25519_FieldElement &b)
Ed25519_FieldElement sqr() const
Ed25519_FieldElement invert() const
constexpr Ed25519_FieldElement(std::span< int32_t, 10 > fe)
Ed25519_FieldElement sqr2() const
static Ed25519_FieldElement add(const Ed25519_FieldElement &a, const Ed25519_FieldElement &b)
static Ed25519_FieldElement mul(const Ed25519_FieldElement &a, const Ed25519_FieldElement &b)
Ed25519_FieldElement pow_22523() const
constexpr Ed25519_FieldElement(int64_t h0, int64_t h1, int64_t h2, int64_t h3, int64_t h4, int64_t h5, int64_t h6, int64_t h7, int64_t h8, int64_t h9)
void serialize_to(std::span< uint8_t, 32 > b) const
static constexpr Ed25519_FieldElement one()
Ed25519_FieldElement sqr_iter(size_t iter) const
constexpr Ed25519_FieldElement()
int32_t & operator[](size_t i)
static constexpr Ed25519_FieldElement zero()
int32_t operator[](size_t i) const
constexpr CT::Mask< T > all_zeros(const T elem[], size_t len)
constexpr void copy_mem(T *out, const T *in, size_t n)
BigInt operator*(const BigInt &x, const BigInt &y)
OctetString operator+(const OctetString &k1, const OctetString &k2)
BigInt operator-(const BigInt &x, const BigInt &y)