Go to the documentation of this file.
30 #include "../../internal.h"
31 #include "../delocate.h"
36 #if defined(BORINGSSL_HAS_UINT128)
37 #define BORINGSSL_NISTP256_64BIT 1
38 #include "../../../third_party/fiat/p256_64.h"
40 #include "../../../third_party/fiat/p256_32.h"
46 #if defined(BORINGSSL_NISTP256_64BIT)
47 #define FIAT_P256_NLIMBS 4
51 0xffffffffffffffff, 0xfffffffe};
52 #else // 64BIT; else 32BIT
53 #define FIAT_P256_NLIMBS 8
57 0x1, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffffffe, 0x0};
90 256 / 8 ==
sizeof(BN_ULONG) * ((256 + BN_BITS2 - 1) / BN_BITS2),
91 "fiat_p256_to_bytes leaves bytes uninitialized");
113 for (
int i = 1;
i < 3;
i++) {
119 for (
int i = 1;
i < 6;
i++) {
125 for (
int i = 1;
i < 3;
i++) {
131 for (
int i = 1;
i < 15;
i++) {
142 for (
int i = 1;
i < 31 + 1;
i++) {
147 for (
int i = 0;
i < 96 + 32;
i++) {
152 for (
int i = 0;
i < 32;
i++) {
157 for (
int i = 0;
i < 30;
i++) {
324 if (is_nontrivial_double) {
373 for (
size_t i = 0;
i <
size;
i++) {
387 for (
size_t i = 0;
i <
size;
i++) {
397 if (i < 0 || i >= 256) {
400 return (
in[
i >> 3] >> (
i & 7)) & 1;
475 for (
size_t j = 2; j <= 16; ++j) {
478 p_pre_comp[1][0], p_pre_comp[1][1], p_pre_comp[1][2],
479 0, p_pre_comp[j - 1][0], p_pre_comp[j - 1][1],
480 p_pre_comp[j - 1][2]);
483 p_pre_comp[j][2], p_pre_comp[j / 2][0],
484 p_pre_comp[j / 2][1], p_pre_comp[j / 2][2]);
493 for (
size_t i = 255;
i < 256;
i--) {
507 crypto_word_t sign, digit;
540 for (
size_t i = 31;
i < 32;
i--) {
586 #define P256_WSIZE_PUBLIC 4
594 p_pre_comp[0][1], p_pre_comp[0][2]);
597 p_pre_comp[
i - 1][0], p_pre_comp[
i - 1][1],
598 p_pre_comp[
i - 1][2], 0 , p2[0], p2[1],
609 for (
int i = 256;
i >= 0;
i--) {
646 int digit = p_wNAF[
i];
649 size_t idx = (size_t)(digit < 0 ? (-digit) >> 1 : digit >> 1);
657 0 , p_pre_comp[
idx][0], *
y,
703 assert(
group->field.width ==
group->order.width);
705 group->field.width)) {
723 out->point_get_affine_coordinates =
735 out->scalar_to_montgomery_inv_vartime =
740 #undef BORINGSSL_NISTP256_64BIT
static int ec_GFp_nistp256_point_get_affine_coordinates(const EC_GROUP *group, const EC_RAW_POINT *point, EC_FELEM *x_out, EC_FELEM *y_out)
uint8_t bytes[EC_MAX_BYTES]
#define ec_GFp_nistp_recode_scalar_bits
static int OPENSSL_memcmp(const void *s1, const void *s2, size_t n)
#define ec_GFp_simple_is_at_infinity
#define ec_GFp_mont_group_set_curve
static void fiat_p256_cmovznz(fiat_p256_limb_t out[FIAT_P256_NLIMBS], fiat_p256_limb_t t, const fiat_p256_limb_t z[FIAT_P256_NLIMBS], const fiat_p256_limb_t nz[FIAT_P256_NLIMBS])
static const fiat_p256_felem fiat_p256_one
static void fiat_p256_copy(fiat_p256_limb_t out[FIAT_P256_NLIMBS], const fiat_p256_limb_t in1[FIAT_P256_NLIMBS])
static crypto_word_t fiat_p256_get_bit(const uint8_t *in, int i)
#define OPENSSL_PUT_ERROR(library, reason)
static void fiat_p256_inv_square(fiat_p256_felem out, const fiat_p256_felem in)
#define OPENSSL_ARRAY_SIZE(array)
static void fiat_p256_from_generic(fiat_p256_felem out, const EC_FELEM *in)
#define P256_WSIZE_PUBLIC
uint32_t fiat_p256_limb_t
static void fiat_p256_opp(uint32_t out1[8], const uint32_t arg1[8])
static void fiat_p256_mul(uint32_t out1[8], const uint32_t arg1[8], const uint32_t arg2[8])
#define ec_GFp_mont_felem_from_bytes
static int ec_GFp_nistp256_cmp_x_coordinate(const EC_GROUP *group, const EC_RAW_POINT *p, const EC_SCALAR *r)
static void * OPENSSL_memset(void *dst, int c, size_t n)
static crypto_word_t constant_time_is_zero_w(crypto_word_t a)
static void ec_GFp_nistp256_add(const EC_GROUP *group, EC_RAW_POINT *r, const EC_RAW_POINT *a, const EC_RAW_POINT *b)
#define ec_GFp_mont_group_finish
#define ec_GFp_mont_felem_mul
static void fiat_p256_sub(uint32_t out1[8], const uint32_t arg1[8], const uint32_t arg2[8])
unsigned __int64 uint64_t
OPENSSL_EXPORT ASN1_BIT_STRING * bits
#define ec_simple_scalar_inv0_montgomery
#define ec_GFp_mont_felem_to_bytes
#define ec_GFp_mont_felem_sqr
static void fiat_p256_to_bytes(uint8_t out1[32], const uint32_t arg1[8])
static const fiat_p256_felem fiat_p256_g_pre_comp[2][15][2]
static void ec_GFp_nistp256_point_mul(const EC_GROUP *group, EC_RAW_POINT *r, const EC_RAW_POINT *p, const EC_SCALAR *scalar)
static void fiat_p256_point_double(fiat_p256_felem x_out, fiat_p256_felem y_out, fiat_p256_felem z_out, const fiat_p256_felem x_in, const fiat_p256_felem y_in, const fiat_p256_felem z_in)
static void fiat_p256_nonzero(uint32_t *out1, const uint32_t arg1[8])
static void fiat_p256_add(uint32_t out1[8], const uint32_t arg1[8], const uint32_t arg2[8])
static void fiat_p256_select_point_affine(const fiat_p256_limb_t idx, size_t size, const fiat_p256_felem pre_comp[][2], fiat_p256_felem out[3])
static void ec_GFp_nistp256_point_mul_public(const EC_GROUP *group, EC_RAW_POINT *r, const EC_SCALAR *g_scalar, const EC_RAW_POINT *p, const EC_SCALAR *p_scalar)
#define bn_less_than_words
static void ec_GFp_nistp256_point_mul_base(const EC_GROUP *group, EC_RAW_POINT *r, const EC_SCALAR *scalar)
DEFINE_METHOD_FUNCTION(EC_METHOD, EC_GFp_nistp256_method)
static void fiat_p256_point_add(fiat_p256_felem x3, fiat_p256_felem y3, fiat_p256_felem z3, const fiat_p256_felem x1, const fiat_p256_felem y1, const fiat_p256_felem z1, const int mixed, const fiat_p256_felem x2, const fiat_p256_felem y2, const fiat_p256_felem z2)
UniquePtr< SSL_SESSION > ret
static void fiat_p256_to_generic(EC_FELEM *out, const fiat_p256_felem in)
#define ec_simple_scalar_to_montgomery_inv_vartime
static void fiat_p256_from_bytes(uint32_t out1[8], const uint8_t arg1[32])
#define ec_GFp_mont_group_init
static void fiat_p256_selectznz(uint32_t out1[8], fiat_p256_uint1 arg1, const uint32_t arg2[8], const uint32_t arg3[8])
static void fiat_p256_select_point(const fiat_p256_limb_t idx, size_t size, const fiat_p256_felem pre_comp[][3], fiat_p256_felem out[3])
#define EC_R_POINT_AT_INFINITY
const EC_METHOD * EC_GFp_nistp256_method(void)
uint32_t fiat_p256_felem[FIAT_P256_NLIMBS]
static void ec_GFp_nistp256_dbl(const EC_GROUP *group, EC_RAW_POINT *r, const EC_RAW_POINT *a)
static void fiat_p256_square(uint32_t out1[8], const uint32_t arg1[8])
#define OPENSSL_STATIC_ASSERT(cond, msg)
static fiat_p256_limb_t fiat_p256_nz(const fiat_p256_limb_t in1[FIAT_P256_NLIMBS])
static void fiat_p256_from_montgomery(uint32_t out1[8], const uint32_t arg1[8])
grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:38