diff options
author | Matt Caswell <matt@openssl.org> | 2017-12-05 17:09:39 +0000 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2018-02-20 12:59:30 +0000 |
commit | 001a0934191319f4617c02eb2b2857dd80e7464a (patch) | |
tree | 72906014c1d01e2bb9a5044958fbbff185c97bf5 /crypto/ec/curve448 | |
parent | b47758dbd06e960e5775db5de39b6e9b31c09097 (diff) |
Merge f_field.h into field.h
Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
(Merged from https://github.com/openssl/openssl/pull/5105)
Diffstat (limited to 'crypto/ec/curve448')
-rw-r--r-- | crypto/ec/curve448/arch_32/f_impl.c | 2 | ||||
-rw-r--r-- | crypto/ec/curve448/arch_arm_32/f_impl.c | 2 | ||||
-rw-r--r-- | crypto/ec/curve448/arch_neon/f_impl.c | 2 | ||||
-rw-r--r-- | crypto/ec/curve448/arch_ref64/f_impl.c | 2 | ||||
-rw-r--r-- | crypto/ec/curve448/arch_x86_64/f_impl.c | 2 | ||||
-rw-r--r-- | crypto/ec/curve448/f_field.h | 80 | ||||
-rw-r--r-- | crypto/ec/curve448/field.h | 51 |
7 files changed, 55 insertions, 86 deletions
diff --git a/crypto/ec/curve448/arch_32/f_impl.c b/crypto/ec/curve448/arch_32/f_impl.c index 8189e1e53e..ef01e49a66 100644 --- a/crypto/ec/curve448/arch_32/f_impl.c +++ b/crypto/ec/curve448/arch_32/f_impl.c @@ -10,7 +10,7 @@ * Originally written by Mike Hamburg */ -#include "f_field.h" +#include "field.h" #if (defined(__OPTIMIZE__) && !defined(__OPTIMIZE_SIZE__) && !I_HATE_UNROLLED_LOOPS) \ || defined(C448_FORCE_UNROLL) diff --git a/crypto/ec/curve448/arch_arm_32/f_impl.c b/crypto/ec/curve448/arch_arm_32/f_impl.c index 5956d6ceba..b96c60602d 100644 --- a/crypto/ec/curve448/arch_arm_32/f_impl.c +++ b/crypto/ec/curve448/arch_arm_32/f_impl.c @@ -10,7 +10,7 @@ * Originally written by Mike Hamburg */ -#include "f_field.h" +#include "field.h" static inline void __attribute__ ((gnu_inline, always_inline)) smlal(uint64_t *acc, const uint32_t a, const uint32_t b) diff --git a/crypto/ec/curve448/arch_neon/f_impl.c b/crypto/ec/curve448/arch_neon/f_impl.c index 7f6fda24f9..27193288d0 100644 --- a/crypto/ec/curve448/arch_neon/f_impl.c +++ b/crypto/ec/curve448/arch_neon/f_impl.c @@ -10,7 +10,7 @@ * Originally written by Mike Hamburg */ -#include "f_field.h" +#include "field.h" static __inline__ uint64x2_t __attribute__((gnu_inline,always_inline,unused)) xx_vaddup_u64(uint64x2_t x) diff --git a/crypto/ec/curve448/arch_ref64/f_impl.c b/crypto/ec/curve448/arch_ref64/f_impl.c index 8df448c8dc..cacc61bcf8 100644 --- a/crypto/ec/curve448/arch_ref64/f_impl.c +++ b/crypto/ec/curve448/arch_ref64/f_impl.c @@ -9,7 +9,7 @@ * * Originally written by Mike Hamburg */ -#include "f_field.h" +#include "field.h" void gf_mul(gf_s * __restrict__ cs, const gf as, const gf bs) { diff --git a/crypto/ec/curve448/arch_x86_64/f_impl.c b/crypto/ec/curve448/arch_x86_64/f_impl.c index 86572f6da0..a1d8753807 100644 --- a/crypto/ec/curve448/arch_x86_64/f_impl.c +++ b/crypto/ec/curve448/arch_x86_64/f_impl.c @@ -10,7 +10,7 @@ * Originally written by Mike Hamburg */ -#include "f_field.h" +#include "field.h" void gf_mul(gf_s * __restrict__ cs, const gf as, const gf bs) { diff --git a/crypto/ec/curve448/f_field.h b/crypto/ec/curve448/f_field.h deleted file mode 100644 index c2a151fdd7..0000000000 --- a/crypto/ec/curve448/f_field.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. - * Copyright 2015-2016 Cryptography Research, Inc. - * - * Licensed under the OpenSSL license (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution or at - * https://www.openssl.org/source/license.html - * - * Originally written by Mike Hamburg - */ - -#ifndef __P448_F_FIELD_H__ -# define __P448_F_FIELD_H__ 1 - -# include "constant_time.h" -# include <string.h> -# include <assert.h> - -# include "word.h" - -# define NLIMBS (64/sizeof(word_t)) -# define X_SER_BYTES 56 -# define SER_BYTES 56 -typedef struct gf_s { - word_t limb[NLIMBS]; -} __attribute__ ((aligned(32))) gf_s, gf[1]; - -/* RFC 7748 support */ -# define X_PUBLIC_BYTES X_SER_BYTES -# define X_PRIVATE_BYTES X_PUBLIC_BYTES -# define X_PRIVATE_BITS 448 - -# define INLINE_UNUSED __inline__ __attribute__((unused,always_inline)) - -#ifdef __cplusplus -extern "C" { -#endif - -/* Defined below in f_impl.h */ -static INLINE_UNUSED void gf_copy(gf out, const gf a) -{ - *out = *a; -} - -static INLINE_UNUSED void gf_add_RAW(gf out, const gf a, const gf b); -static INLINE_UNUSED void gf_sub_RAW(gf out, const gf a, const gf b); -static INLINE_UNUSED void gf_bias(gf inout, int amount); -static INLINE_UNUSED void gf_weak_reduce(gf inout); - -void gf_strong_reduce(gf inout); -void gf_add(gf out, const gf a, const gf b); -void gf_sub(gf out, const gf a, const gf b); -void gf_mul(gf_s * __restrict__ out, const gf a, const gf b); -void gf_mulw_unsigned(gf_s * __restrict__ out, const gf a, uint32_t b); -void gf_sqr(gf_s * __restrict__ out, const gf a); -mask_t gf_isr(gf a, const gf x); /** a^2 x = 1, QNR, or 0 if x=0. Return true if successful */ -mask_t gf_eq(const gf x, const gf y); -mask_t gf_lobit(const gf x); -mask_t gf_hibit(const gf x); - -void gf_serialize(uint8_t *serial, const gf x, int with_highbit); -mask_t gf_deserialize(gf x, const uint8_t serial[SER_BYTES], int with_hibit, - uint8_t hi_nmask); - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -# include "f_impl.h" /* Bring in the inline implementations */ - -# ifndef LIMBPERM -# define LIMBPERM(i) (i) -# endif -# define LIMB_MASK(i) (((1)<<LIMB_PLACE_VALUE(i))-1) - -static const gf ZERO = {{{0}}}, ONE = {{{1}}}; - -#endif /* __P448_F_FIELD_H__ */ diff --git a/crypto/ec/curve448/field.h b/crypto/ec/curve448/field.h index b895847f76..e66447e485 100644 --- a/crypto/ec/curve448/field.h +++ b/crypto/ec/curve448/field.h @@ -14,8 +14,57 @@ # define __GF_H__ # include "constant_time.h" -# include "f_field.h" # include <string.h> +# include <assert.h> +# include "word.h" + +# define NLIMBS (64/sizeof(word_t)) +# define X_SER_BYTES 56 +# define SER_BYTES 56 +typedef struct gf_s { + word_t limb[NLIMBS]; +} __attribute__ ((aligned(32))) gf_s, gf[1]; + +/* RFC 7748 support */ +# define X_PUBLIC_BYTES X_SER_BYTES +# define X_PRIVATE_BYTES X_PUBLIC_BYTES +# define X_PRIVATE_BITS 448 + +# define INLINE_UNUSED __inline__ __attribute__((unused,always_inline)) + +static INLINE_UNUSED void gf_copy(gf out, const gf a) +{ + *out = *a; +} + +static INLINE_UNUSED void gf_add_RAW(gf out, const gf a, const gf b); +static INLINE_UNUSED void gf_sub_RAW(gf out, const gf a, const gf b); +static INLINE_UNUSED void gf_bias(gf inout, int amount); +static INLINE_UNUSED void gf_weak_reduce(gf inout); + +void gf_strong_reduce(gf inout); +void gf_add(gf out, const gf a, const gf b); +void gf_sub(gf out, const gf a, const gf b); +void gf_mul(gf_s * __restrict__ out, const gf a, const gf b); +void gf_mulw_unsigned(gf_s * __restrict__ out, const gf a, uint32_t b); +void gf_sqr(gf_s * __restrict__ out, const gf a); +mask_t gf_isr(gf a, const gf x); /** a^2 x = 1, QNR, or 0 if x=0. Return true if successful */ +mask_t gf_eq(const gf x, const gf y); +mask_t gf_lobit(const gf x); +mask_t gf_hibit(const gf x); + +void gf_serialize(uint8_t *serial, const gf x, int with_highbit); +mask_t gf_deserialize(gf x, const uint8_t serial[SER_BYTES], int with_hibit, + uint8_t hi_nmask); + +# include "f_impl.h" /* Bring in the inline implementations */ + +# ifndef LIMBPERM +# define LIMBPERM(i) (i) +# endif +# define LIMB_MASK(i) (((1)<<LIMB_PLACE_VALUE(i))-1) + +static const gf ZERO = {{{0}}}, ONE = {{{1}}}; /* Square x, n times. */ static ossl_inline void gf_sqrn(gf_s * __restrict__ y, const gf x, int n) |