| @@ -258,14 +258,14 @@ template<GroupId group = Ed448Goldilocks> struct EcGroup { | |||||
| friend class Precomputed; | friend class Precomputed; | ||||
| typedef typename WrappedTypes<group>::Scalar Wrapped; | typedef typename WrappedTypes<group>::Scalar Wrapped; | ||||
| static const Wrapped &ZERO, &ONE; | static const Wrapped &ZERO, &ONE; | ||||
| static inline void add3(Wrapped, const Wrapped, const Wrapped) NOEXCEPT; | |||||
| static inline void setu(Wrapped, decaf_word_t) NOEXCEPT; | |||||
| static inline void sub3(Wrapped, const Wrapped, const Wrapped) NOEXCEPT; | |||||
| static inline void mul3(Wrapped, const Wrapped, const Wrapped) NOEXCEPT; | |||||
| static inline void dl3(Wrapped, const unsigned char *buffer, size_t size) NOEXCEPT; | |||||
| static inline decaf_word_t eq2(const Wrapped, const Wrapped) NOEXCEPT; | |||||
| static inline void assign2(Wrapped, const Wrapped) NOEXCEPT; | |||||
| static inline void inv2(Wrapped, const Wrapped) NOEXCEPT; | |||||
| static inline void add3(Wrapped&, const Wrapped&, const Wrapped&) NOEXCEPT; | |||||
| static inline void setu(Wrapped&, decaf_word_t) NOEXCEPT; | |||||
| static inline void sub3(Wrapped&, const Wrapped&, const Wrapped&) NOEXCEPT; | |||||
| static inline void mul3(Wrapped&, const Wrapped&, const Wrapped&) NOEXCEPT; | |||||
| static inline void dl3(Wrapped&, const unsigned char *buffer, size_t size) NOEXCEPT; | |||||
| static inline decaf_word_t eq2(const Wrapped&, const Wrapped&) NOEXCEPT; | |||||
| static inline void assign2(Wrapped&, const Wrapped&) NOEXCEPT; | |||||
| static inline void inv2(Wrapped&, const Wrapped&) NOEXCEPT; | |||||
| /** @endcond */ | /** @endcond */ | ||||
| public: | public: | ||||
| @@ -402,22 +402,22 @@ template<GroupId group = Ed448Goldilocks> struct EcGroup { | |||||
| friend class Scalar; | friend class Scalar; | ||||
| friend class Precomputed; | friend class Precomputed; | ||||
| static const Wrapped &IDENTITY, &GENERATOR; | static const Wrapped &IDENTITY, &GENERATOR; | ||||
| static inline void add3(Wrapped, const Wrapped, const Wrapped) NOEXCEPT; | |||||
| static inline void sub3(Wrapped, const Wrapped, const Wrapped) NOEXCEPT; | |||||
| static inline void dbl2(Wrapped, const Wrapped) NOEXCEPT; | |||||
| static inline void neg2(Wrapped, const Wrapped) NOEXCEPT; | |||||
| static inline decaf_word_t eq2(const Wrapped, const Wrapped) NOEXCEPT; | |||||
| static inline void assign2(Wrapped, const Wrapped) NOEXCEPT; | |||||
| static inline void sm3(Wrapped, const Wrapped, const typename Scalar::Wrapped) NOEXCEPT; | |||||
| static inline void add3(Wrapped&, const Wrapped&, const Wrapped&) NOEXCEPT; | |||||
| static inline void sub3(Wrapped&, const Wrapped&, const Wrapped&) NOEXCEPT; | |||||
| static inline void dbl2(Wrapped&, const Wrapped&) NOEXCEPT; | |||||
| static inline void neg2(Wrapped&, const Wrapped&) NOEXCEPT; | |||||
| static inline decaf_word_t eq2(const Wrapped&, const Wrapped&) NOEXCEPT; | |||||
| static inline void assign2(Wrapped&, const Wrapped&) NOEXCEPT; | |||||
| static inline void sm3(Wrapped&, const Wrapped&, const typename Scalar::Wrapped&) NOEXCEPT; | |||||
| static inline void dsm5( | static inline void dsm5( | ||||
| Wrapped, | |||||
| const Wrapped, const typename Scalar::Wrapped, | |||||
| const Wrapped, const typename Scalar::Wrapped | |||||
| Wrapped&, | |||||
| const Wrapped&, const typename Scalar::Wrapped&, | |||||
| const Wrapped&, const typename Scalar::Wrapped& | |||||
| ) NOEXCEPT; | ) NOEXCEPT; | ||||
| static inline void dsmns( | static inline void dsmns( | ||||
| Wrapped, | |||||
| const typename Scalar::Wrapped, | |||||
| const Wrapped, const typename Scalar::Wrapped | |||||
| Wrapped&, | |||||
| const typename Scalar::Wrapped&, | |||||
| const Wrapped&, const typename Scalar::Wrapped& | |||||
| ) NOEXCEPT; | ) NOEXCEPT; | ||||
| /** @endcond */ | /** @endcond */ | ||||
| @@ -435,7 +435,7 @@ template<GroupId group = Ed448Goldilocks> struct EcGroup { | |||||
| inline Point(const NOINIT &) {} | inline Point(const NOINIT &) {} | ||||
| /** @brief Constructor sets to identity by default. */ | /** @brief Constructor sets to identity by default. */ | ||||
| inline Point(const decaf_448_point_t &q = IDENTITY) { *this = q; } | |||||
| inline Point(const decaf_448_point_s &q = IDENTITY) { *this = q; } | |||||
| /** @brief Copy constructor. */ | /** @brief Copy constructor. */ | ||||
| inline Point(const Point &q) { *this = q; } | inline Point(const Point &q) { *this = q; } | ||||
| @@ -443,7 +443,7 @@ template<GroupId group = Ed448Goldilocks> struct EcGroup { | |||||
| /** @brief Assignment. */ | /** @brief Assignment. */ | ||||
| inline Point& operator=(const Point &q) NOEXCEPT { assign2(p,q.p); return *this; } | inline Point& operator=(const Point &q) NOEXCEPT { assign2(p,q.p); return *this; } | ||||
| /** @brief Assignment from wrapped. */ | |||||
| /** @brief Assignment from Wrapped. */ | |||||
| inline Point& operator=(const Wrapped &q) NOEXCEPT { assign2(p,q); return *this; } | inline Point& operator=(const Wrapped &q) NOEXCEPT { assign2(p,q); return *this; } | ||||
| /** @brief Destructor securely erases the point. */ | /** @brief Destructor securely erases the point. */ | ||||
| @@ -621,8 +621,8 @@ template<GroupId group = Ed448Goldilocks> struct EcGroup { | |||||
| typedef typename WrappedTypes<group>::Precomputed Wrapped; | typedef typename WrappedTypes<group>::Precomputed Wrapped; | ||||
| static const Wrapped *GENERATOR; | static const Wrapped *GENERATOR; | ||||
| static inline void destroy(Wrapped*) NOEXCEPT; | static inline void destroy(Wrapped*) NOEXCEPT; | ||||
| static inline void precompute(Wrapped*, const typename Point::Wrapped) NOEXCEPT; | |||||
| static inline void psmul3(typename Point::Wrapped, const Wrapped*, const typename Scalar::Wrapped) NOEXCEPT; | |||||
| static inline void precompute(Wrapped*, const typename Point::Wrapped&) NOEXCEPT; | |||||
| static inline void psmul3(typename Point::Wrapped&, const Wrapped*, const typename Scalar::Wrapped&) NOEXCEPT; | |||||
| union { | union { | ||||
| Wrapped *mine; | Wrapped *mine; | ||||
| @@ -735,8 +735,8 @@ template<GroupId group = Ed448Goldilocks> struct EcGroup { | |||||
| /** @cond internal */ | /** @cond internal */ | ||||
| template<> struct WrappedTypes<Ed448Goldilocks> { | template<> struct WrappedTypes<Ed448Goldilocks> { | ||||
| typedef decaf_448_point_t Point; | |||||
| typedef decaf_448_scalar_t Scalar; | |||||
| typedef decaf_448_point_s Point; | |||||
| typedef decaf_448_scalar_s Scalar; | |||||
| typedef decaf_448_precomputed_s Precomputed; | typedef decaf_448_precomputed_s Precomputed; | ||||
| }; | }; | ||||
| @@ -744,43 +744,43 @@ template<> struct WrappedTypes<Ed448Goldilocks> { | |||||
| template<> const size_t EcGroup<Ed448Goldilocks>::Scalar::SER_BYTES = 56; | template<> const size_t EcGroup<Ed448Goldilocks>::Scalar::SER_BYTES = 56; | ||||
| template<> inline void EcGroup<Ed448Goldilocks>::Scalar::add3( | template<> inline void EcGroup<Ed448Goldilocks>::Scalar::add3( | ||||
| Wrapped a, const Wrapped b, const Wrapped c | |||||
| ) NOEXCEPT { decaf_448_scalar_add(a,b,c); } | |||||
| Wrapped& a, const Wrapped& b, const Wrapped& c | |||||
| ) NOEXCEPT { decaf_448_scalar_add(&a,&b,&c); } | |||||
| template<> inline void EcGroup<Ed448Goldilocks>::Scalar::sub3( | template<> inline void EcGroup<Ed448Goldilocks>::Scalar::sub3( | ||||
| Wrapped a, const Wrapped b, const Wrapped c | |||||
| ) NOEXCEPT { decaf_448_scalar_sub(a,b,c); } | |||||
| Wrapped& a, const Wrapped& b, const Wrapped& c | |||||
| ) NOEXCEPT { decaf_448_scalar_sub(&a,&b,&c); } | |||||
| template<> inline void EcGroup<Ed448Goldilocks>::Scalar::mul3( | template<> inline void EcGroup<Ed448Goldilocks>::Scalar::mul3( | ||||
| Wrapped a, const Wrapped b, const Wrapped c | |||||
| ) NOEXCEPT { decaf_448_scalar_mul(a,b,c); } | |||||
| Wrapped& a, const Wrapped& b, const Wrapped& c | |||||
| ) NOEXCEPT { decaf_448_scalar_mul(&a,&b,&c); } | |||||
| template<> inline void EcGroup<Ed448Goldilocks>::Scalar::dl3( | template<> inline void EcGroup<Ed448Goldilocks>::Scalar::dl3( | ||||
| Wrapped a, const unsigned char *b, size_t c | |||||
| ) NOEXCEPT { decaf_448_scalar_decode_long(a,b,c); } | |||||
| Wrapped& a, const unsigned char *b, size_t c | |||||
| ) NOEXCEPT { decaf_448_scalar_decode_long(&a,b,c); } | |||||
| template<> inline void EcGroup<Ed448Goldilocks>::Scalar::assign2( | template<> inline void EcGroup<Ed448Goldilocks>::Scalar::assign2( | ||||
| Wrapped a, const Wrapped b | |||||
| ) NOEXCEPT { decaf_448_scalar_copy(a,b); } | |||||
| Wrapped& a, const Wrapped& b | |||||
| ) NOEXCEPT { decaf_448_scalar_copy(&a,&b); } | |||||
| template<> inline void EcGroup<Ed448Goldilocks>::Scalar::setu( | template<> inline void EcGroup<Ed448Goldilocks>::Scalar::setu( | ||||
| Wrapped a, decaf_word_t w | |||||
| ) NOEXCEPT { decaf_448_scalar_set(a,w); } | |||||
| Wrapped& a, decaf_word_t w | |||||
| ) NOEXCEPT { decaf_448_scalar_set(&a,w); } | |||||
| template<> inline void EcGroup<Ed448Goldilocks>::Scalar::inv2( | template<> inline void EcGroup<Ed448Goldilocks>::Scalar::inv2( | ||||
| Wrapped a, const Wrapped b | |||||
| ) NOEXCEPT { decaf_448_scalar_invert(a,b); } | |||||
| Wrapped& a, const Wrapped& b | |||||
| ) NOEXCEPT { decaf_448_scalar_invert(&a,&b); } | |||||
| template<> inline decaf_word_t EcGroup<Ed448Goldilocks>::Scalar::eq2( | template<> inline decaf_word_t EcGroup<Ed448Goldilocks>::Scalar::eq2( | ||||
| const Wrapped a, const Wrapped b | |||||
| ) NOEXCEPT { return decaf_448_scalar_eq(a,b); } | |||||
| const Wrapped& a, const Wrapped& b | |||||
| ) NOEXCEPT { return decaf_448_scalar_eq(&a,&b); } | |||||
| /* CLASSY */ | /* CLASSY */ | ||||
| template<> inline SecureBuffer EcGroup<Ed448Goldilocks>::Scalar::direct_scalarmul( | template<> inline SecureBuffer EcGroup<Ed448Goldilocks>::Scalar::direct_scalarmul( | ||||
| const Block &in, decaf_bool_t allow_identity, decaf_bool_t short_circuit | const Block &in, decaf_bool_t allow_identity, decaf_bool_t short_circuit | ||||
| ) const throw(CryptoException) { | ) const throw(CryptoException) { | ||||
| SecureBuffer out(SER_BYTES); | SecureBuffer out(SER_BYTES); | ||||
| if (!decaf_448_direct_scalarmul(out, in.data(), s, allow_identity, short_circuit)) | |||||
| if (!decaf_448_direct_scalarmul(out, in.data(), &s, allow_identity, short_circuit)) | |||||
| throw CryptoException(); | throw CryptoException(); | ||||
| return out; | return out; | ||||
| } | } | ||||
| @@ -788,22 +788,22 @@ template<> inline SecureBuffer EcGroup<Ed448Goldilocks>::Scalar::direct_scalarmu | |||||
| template<> inline void EcGroup<Ed448Goldilocks>::Scalar::encode( | template<> inline void EcGroup<Ed448Goldilocks>::Scalar::encode( | ||||
| unsigned char buffer[SER_BYTES] | unsigned char buffer[SER_BYTES] | ||||
| ) const NOEXCEPT { | ) const NOEXCEPT { | ||||
| decaf_448_scalar_encode(buffer,s); | |||||
| decaf_448_scalar_encode(buffer,&s); | |||||
| } | } | ||||
| template<> inline decaf_bool_t __attribute__((warn_unused_result)) | template<> inline decaf_bool_t __attribute__((warn_unused_result)) | ||||
| EcGroup<Ed448Goldilocks>::Scalar::decode ( | EcGroup<Ed448Goldilocks>::Scalar::decode ( | ||||
| Scalar &s, const unsigned char buffer[SER_BYTES] | Scalar &s, const unsigned char buffer[SER_BYTES] | ||||
| ) NOEXCEPT { | ) NOEXCEPT { | ||||
| return decaf_448_scalar_decode(s.s,buffer); | |||||
| return decaf_448_scalar_decode(&s.s,buffer); | |||||
| } | } | ||||
| /* CLASSY */ | /* CLASSY */ | ||||
| template<> inline EcGroup<Ed448Goldilocks>::Scalar::~Scalar() NOEXCEPT { decaf_448_scalar_destroy(s); } | |||||
| template<> inline EcGroup<Ed448Goldilocks>::Scalar::~Scalar() NOEXCEPT { decaf_448_scalar_destroy(&s); } | |||||
| template<> const EcGroup<Ed448Goldilocks>::Scalar::Wrapped& | template<> const EcGroup<Ed448Goldilocks>::Scalar::Wrapped& | ||||
| EcGroup<Ed448Goldilocks>::Scalar::ZERO = decaf_448_scalar_zero; | |||||
| EcGroup<Ed448Goldilocks>::Scalar::ZERO = decaf_448_scalar_zero[0]; | |||||
| template<> const EcGroup<Ed448Goldilocks>::Scalar::Wrapped& | template<> const EcGroup<Ed448Goldilocks>::Scalar::Wrapped& | ||||
| EcGroup<Ed448Goldilocks>::Scalar::ONE = decaf_448_scalar_one; | |||||
| EcGroup<Ed448Goldilocks>::Scalar::ONE = decaf_448_scalar_one[0]; | |||||
| @@ -812,64 +812,64 @@ template<> const size_t EcGroup<Ed448Goldilocks>::Point::SER_BYTES = 56; | |||||
| template<> const size_t EcGroup<Ed448Goldilocks>::Point::HASH_BYTES = 56; | template<> const size_t EcGroup<Ed448Goldilocks>::Point::HASH_BYTES = 56; | ||||
| /* CLASSY */ | /* CLASSY */ | ||||
| template<> inline EcGroup<Ed448Goldilocks>::Point::~Point() NOEXCEPT { decaf_448_point_destroy(p); } | |||||
| template<> inline EcGroup<Ed448Goldilocks>::Point::~Point() NOEXCEPT { decaf_448_point_destroy(&p); } | |||||
| template<> inline void EcGroup<Ed448Goldilocks>::Point::add3( | template<> inline void EcGroup<Ed448Goldilocks>::Point::add3( | ||||
| Wrapped a, const Wrapped b, const Wrapped c | |||||
| ) NOEXCEPT { decaf_448_point_add(a,b,c); } | |||||
| Wrapped& a, const Wrapped& b, const Wrapped& c | |||||
| ) NOEXCEPT { decaf_448_point_add(&a,&b,&c); } | |||||
| template<> inline void EcGroup<Ed448Goldilocks>::Point::sub3( | template<> inline void EcGroup<Ed448Goldilocks>::Point::sub3( | ||||
| Wrapped a, const Wrapped b, const Wrapped c | |||||
| ) NOEXCEPT { decaf_448_point_sub(a,b,c); } | |||||
| Wrapped& a, const Wrapped& b, const Wrapped& c | |||||
| ) NOEXCEPT { decaf_448_point_sub(&a,&b,&c); } | |||||
| template<> inline void EcGroup<Ed448Goldilocks>::Point::assign2( | template<> inline void EcGroup<Ed448Goldilocks>::Point::assign2( | ||||
| Wrapped a, const Wrapped b | |||||
| ) NOEXCEPT { decaf_448_point_copy(a,b); } | |||||
| Wrapped& a, const Wrapped& b | |||||
| ) NOEXCEPT { decaf_448_point_copy(&a,&b); } | |||||
| template<> inline void EcGroup<Ed448Goldilocks>::Point::dbl2( | template<> inline void EcGroup<Ed448Goldilocks>::Point::dbl2( | ||||
| Wrapped a, const Wrapped b | |||||
| ) NOEXCEPT { decaf_448_point_double(a,b); } | |||||
| Wrapped& a, const Wrapped& b | |||||
| ) NOEXCEPT { decaf_448_point_double(&a,&b); } | |||||
| template<> inline decaf_word_t EcGroup<Ed448Goldilocks>::Point::eq2( | template<> inline decaf_word_t EcGroup<Ed448Goldilocks>::Point::eq2( | ||||
| const Wrapped a, const Wrapped b | |||||
| ) NOEXCEPT { return decaf_448_point_eq(a,b); } | |||||
| const Wrapped& a, const Wrapped& b | |||||
| ) NOEXCEPT { return decaf_448_point_eq(&a,&b); } | |||||
| /* CLASSY */ | /* CLASSY */ | ||||
| template<> inline bool EcGroup<Ed448Goldilocks>::Point::validate() const NOEXCEPT { return !!decaf_448_point_valid(p); } | |||||
| template<> inline bool EcGroup<Ed448Goldilocks>::Point::validate() const NOEXCEPT { return !!decaf_448_point_valid(&p); } | |||||
| template<> inline void EcGroup<Ed448Goldilocks>::Point::sm3( | template<> inline void EcGroup<Ed448Goldilocks>::Point::sm3( | ||||
| Wrapped a, const Wrapped b, const decaf_448_scalar_t c | |||||
| ) NOEXCEPT { decaf_448_point_scalarmul(a,b,c); } | |||||
| Wrapped& a, const Wrapped& b, const Scalar::Wrapped &c | |||||
| ) NOEXCEPT { decaf_448_point_scalarmul(&a,&b,&c); } | |||||
| template<> inline void EcGroup<Ed448Goldilocks>::Point::dsm5( | template<> inline void EcGroup<Ed448Goldilocks>::Point::dsm5( | ||||
| Wrapped a, const Wrapped b, const decaf_448_scalar_t c, const Wrapped d, const decaf_448_scalar_t e | |||||
| ) NOEXCEPT { decaf_448_point_double_scalarmul(a,b,c,d,e); } | |||||
| Wrapped& a, const Wrapped& b, const Scalar::Wrapped &c, const Wrapped& d, const Scalar::Wrapped &e | |||||
| ) NOEXCEPT { decaf_448_point_double_scalarmul(&a,&b,&c,&d,&e); } | |||||
| template<> inline void EcGroup<Ed448Goldilocks>::Point::dsmns( | template<> inline void EcGroup<Ed448Goldilocks>::Point::dsmns( | ||||
| Wrapped a, const decaf_448_scalar_t b, const Wrapped c, const decaf_448_scalar_t d | |||||
| ) NOEXCEPT { decaf_448_base_double_scalarmul_non_secret(a,b,c,d); } | |||||
| Wrapped& a, const Scalar::Wrapped &b, const Wrapped& c, const Scalar::Wrapped &d | |||||
| ) NOEXCEPT { decaf_448_base_double_scalarmul_non_secret(&a,&b,&c,&d); } | |||||
| /* CLASSY */ | /* CLASSY */ | ||||
| template<> inline decaf_bool_t __attribute__((warn_unused_result)) | template<> inline decaf_bool_t __attribute__((warn_unused_result)) | ||||
| EcGroup<Ed448Goldilocks>::Point::decode ( | EcGroup<Ed448Goldilocks>::Point::decode ( | ||||
| Point &p, const unsigned char buffer[SER_BYTES], decaf_bool_t allow_identity | Point &p, const unsigned char buffer[SER_BYTES], decaf_bool_t allow_identity | ||||
| ) NOEXCEPT { | ) NOEXCEPT { | ||||
| return decaf_448_point_decode(p.p,buffer,allow_identity); | |||||
| return decaf_448_point_decode(&p.p,buffer,allow_identity); | |||||
| } | } | ||||
| /* CLASSY */ | /* CLASSY */ | ||||
| template<> inline void EcGroup<Ed448Goldilocks>::Point::set_to_hash( const Block &s ) NOEXCEPT { | template<> inline void EcGroup<Ed448Goldilocks>::Point::set_to_hash( const Block &s ) NOEXCEPT { | ||||
| if (s.size() < HASH_BYTES) { | if (s.size() < HASH_BYTES) { | ||||
| SecureBuffer b(HASH_BYTES); | SecureBuffer b(HASH_BYTES); | ||||
| memcpy(b.data(), s.data(), s.size()); | memcpy(b.data(), s.data(), s.size()); | ||||
| decaf_448_point_from_hash_nonuniform(p,b); | |||||
| decaf_448_point_from_hash_nonuniform(&p,b); | |||||
| } else if (s.size() == HASH_BYTES) { | } else if (s.size() == HASH_BYTES) { | ||||
| decaf_448_point_from_hash_nonuniform(p,s); | |||||
| decaf_448_point_from_hash_nonuniform(&p,s); | |||||
| } else if (s.size() < 2*HASH_BYTES) { | } else if (s.size() < 2*HASH_BYTES) { | ||||
| SecureBuffer b(2*HASH_BYTES); | SecureBuffer b(2*HASH_BYTES); | ||||
| memcpy(b.data(), s.data(), s.size()); | memcpy(b.data(), s.data(), s.size()); | ||||
| decaf_448_point_from_hash_uniform(p,b); | |||||
| decaf_448_point_from_hash_uniform(&p,b); | |||||
| } else { | } else { | ||||
| decaf_448_point_from_hash_uniform(p,s); | |||||
| decaf_448_point_from_hash_uniform(&p,s); | |||||
| } | } | ||||
| } | } | ||||
| @@ -877,13 +877,13 @@ template<> inline void EcGroup<Ed448Goldilocks>::Point::set_to_hash( const Block | |||||
| template<> inline void EcGroup<Ed448Goldilocks>::Point::encode( | template<> inline void EcGroup<Ed448Goldilocks>::Point::encode( | ||||
| unsigned char buffer[SER_BYTES] | unsigned char buffer[SER_BYTES] | ||||
| ) const NOEXCEPT { | ) const NOEXCEPT { | ||||
| decaf_448_point_encode(buffer,p); | |||||
| decaf_448_point_encode(buffer,&p); | |||||
| } | } | ||||
| template<> const EcGroup<Ed448Goldilocks>::Point::Wrapped& | template<> const EcGroup<Ed448Goldilocks>::Point::Wrapped& | ||||
| EcGroup<Ed448Goldilocks>::Point::IDENTITY = decaf_448_point_identity; | |||||
| EcGroup<Ed448Goldilocks>::Point::IDENTITY = decaf_448_point_identity[0]; | |||||
| template<> const EcGroup<Ed448Goldilocks>::Point::Wrapped& | template<> const EcGroup<Ed448Goldilocks>::Point::Wrapped& | ||||
| EcGroup<Ed448Goldilocks>::Point::GENERATOR = decaf_448_point_base; | |||||
| EcGroup<Ed448Goldilocks>::Point::GENERATOR = decaf_448_point_base[0]; | |||||
| /* Precomputed instantiation */ | /* Precomputed instantiation */ | ||||
| template<> inline void EcGroup<Ed448Goldilocks>::Precomputed::destroy( | template<> inline void EcGroup<Ed448Goldilocks>::Precomputed::destroy( | ||||
| @@ -894,15 +894,15 @@ template<> inline void EcGroup<Ed448Goldilocks>::Precomputed::destroy( | |||||
| /* Precomputed instantiation */ | /* Precomputed instantiation */ | ||||
| template<> inline void EcGroup<Ed448Goldilocks>::Precomputed::precompute( | template<> inline void EcGroup<Ed448Goldilocks>::Precomputed::precompute( | ||||
| Wrapped *pre, const decaf_448_point_t point | |||||
| Wrapped *pre, const Point::Wrapped &point | |||||
| ) NOEXCEPT { | ) NOEXCEPT { | ||||
| decaf_448_precompute(pre,point); | |||||
| decaf_448_precompute(pre,&point); | |||||
| } | } | ||||
| template<> inline void EcGroup<Ed448Goldilocks>::Precomputed::psmul3( | template<> inline void EcGroup<Ed448Goldilocks>::Precomputed::psmul3( | ||||
| decaf_448_point_t out, const Wrapped *pre, const decaf_448_scalar_t sc | |||||
| Point::Wrapped &out, const Wrapped *pre, const Scalar::Wrapped &sc | |||||
| ) NOEXCEPT { | ) NOEXCEPT { | ||||
| decaf_448_precomputed_scalarmul(out,pre,sc); | |||||
| decaf_448_precomputed_scalarmul(&out,pre,&sc); | |||||
| } | } | ||||
| template<> const size_t EcGroup<Ed448Goldilocks>::Precomputed:: sizeof_this = sizeof_decaf_448_precomputed_s; | template<> const size_t EcGroup<Ed448Goldilocks>::Precomputed:: sizeof_this = sizeof_decaf_448_precomputed_s; | ||||