purify
C++ Purify implementation with native circuit and BPP support
Loading...
Searching...
No Matches
field.h File Reference
#include <stdint.h>
#include "purify/uint.h"
#include "purify/secp_bridge.h"

Go to the source code of this file.

Data Structures

struct  purify_fe
 

Typedefs

typedef struct purify_fe purify_fe
 

Functions

void purify_fe_set_zero (purify_fe *out)
 
void purify_fe_set_u64 (purify_fe *out, uint64_t value)
 
void purify_fe_set_i64 (purify_fe *out, int64_t value)
 
int purify_fe_set_b32 (purify_fe *out, const unsigned char input32[32])
 
int purify_fe_set_u256 (purify_fe *out, const uint64_t value[4])
 
void purify_fe_get_b32 (unsigned char output32[32], const purify_fe *value)
 
void purify_fe_get_u256 (uint64_t out[4], const purify_fe *value)
 
int purify_fe_is_zero (const purify_fe *value)
 
int purify_fe_is_one (const purify_fe *value)
 
int purify_fe_is_odd (const purify_fe *value)
 
int purify_fe_eq (const purify_fe *lhs, const purify_fe *rhs)
 
void purify_fe_negate (purify_fe *out, const purify_fe *value)
 
void purify_fe_cmov (purify_fe *dst, const purify_fe *src, int flag)
 
void purify_fe_inverse (purify_fe *out, const purify_fe *value)
 
void purify_fe_inverse_var (purify_fe *out, const purify_fe *value)
 
void purify_fe_add (purify_fe *out, const purify_fe *lhs, const purify_fe *rhs)
 
void purify_fe_sub (purify_fe *out, const purify_fe *lhs, const purify_fe *rhs)
 
void purify_fe_mul (purify_fe *out, const purify_fe *lhs, const purify_fe *rhs)
 
void purify_fe_square (purify_fe *out, const purify_fe *value)
 
void purify_fe_pow (purify_fe *out, const purify_fe *value, const uint64_t exponent[4])
 
int purify_fe_is_square (const purify_fe *value)
 
int purify_fe_legendre_symbol (const purify_fe *value)
 
int purify_fe_sqrt (purify_fe *out, const purify_fe *value)
 

Typedef Documentation

◆ purify_fe

typedef struct purify_fe purify_fe

Function Documentation

◆ purify_fe_add()

◆ purify_fe_cmov()

void purify_fe_cmov ( purify_fe dst,
const purify_fe src,
int  flag 
)

Definition at line 86 of file field.c.

References purify_scalar_cmov(), and purify_fe::value.

Referenced by purify_curve_complete_assign().

◆ purify_fe_eq()

int purify_fe_eq ( const purify_fe lhs,
const purify_fe rhs 
)

Definition at line 77 of file field.c.

References purify_scalar_eq(), and purify_fe::value.

Referenced by purify_curve_add(), purify_curve_add_mixed(), and purify_fe_sqrt().

◆ purify_fe_get_b32()

void purify_fe_get_b32 ( unsigned char  output32[32],
const purify_fe value 
)

Definition at line 55 of file field.c.

References purify_scalar_get_b32(), and purify_fe::value.

Referenced by purify_fe_get_u256().

◆ purify_fe_get_u256()

void purify_fe_get_u256 ( uint64_t  out[4],
const purify_fe value 
)

Definition at line 59 of file field.c.

References purify_fe_get_b32().

◆ purify_fe_inverse()

void purify_fe_inverse ( purify_fe out,
const purify_fe value 
)

Definition at line 90 of file field.c.

References purify_scalar_inverse(), and purify_fe::value.

Referenced by purify_curve_combine(), and purify_curve_mul_secret_affine().

◆ purify_fe_inverse_var()

void purify_fe_inverse_var ( purify_fe out,
const purify_fe value 
)

Definition at line 95 of file field.c.

References purify_scalar_inverse_var(), and purify_fe::value.

Referenced by purify_curve_affine().

◆ purify_fe_is_odd()

int purify_fe_is_odd ( const purify_fe value)

Definition at line 73 of file field.c.

References purify_scalar_is_even(), and purify_fe::value.

◆ purify_fe_is_one()

int purify_fe_is_one ( const purify_fe value)

◆ purify_fe_is_square()

int purify_fe_is_square ( const purify_fe value)

◆ purify_fe_is_zero()

◆ purify_fe_legendre_symbol()

int purify_fe_legendre_symbol ( const purify_fe value)

◆ purify_fe_mul()

◆ purify_fe_negate()

void purify_fe_negate ( purify_fe out,
const purify_fe value 
)

Definition at line 81 of file field.c.

References purify_scalar_negate(), and purify_fe::value.

Referenced by purify_curve_negate(), purify_fe_set_i64(), and purify_fe_sub().

◆ purify_fe_pow()

void purify_fe_pow ( purify_fe out,
const purify_fe value,
const uint64_t  exponent[4] 
)

◆ purify_fe_set_b32()

int purify_fe_set_b32 ( purify_fe out,
const unsigned char  input32[32] 
)

Definition at line 43 of file field.c.

References purify_scalar_set_b32(), and purify_fe::value.

Referenced by purify_fe_set_u256().

◆ purify_fe_set_i64()

void purify_fe_set_i64 ( purify_fe out,
int64_t  value 
)

Definition at line 33 of file field.c.

References purify_fe_negate(), and purify_fe_set_u64().

◆ purify_fe_set_u256()

int purify_fe_set_u256 ( purify_fe out,
const uint64_t  value[4] 
)

Definition at line 49 of file field.c.

References purify_fe_set_b32().

Referenced by purify_curve_field_di(), and purify_curve_hash_to_curve().

◆ purify_fe_set_u64()

◆ purify_fe_set_zero()

void purify_fe_set_zero ( purify_fe out)

◆ purify_fe_sqrt()

◆ purify_fe_square()

void purify_fe_square ( purify_fe out,
const purify_fe value 
)

Definition at line 118 of file field.c.

References purify_fe_mul().

Referenced by purify_fe_pow(), purify_fe_sqrt(), and purify::square().

◆ purify_fe_sub()

void purify_fe_sub ( purify_fe out,
const purify_fe lhs,
const purify_fe rhs 
)