|
purify
C++ Purify implementation with native circuit and BPP support
|
Go to the source code of this file.
Data Structures | |
| struct | purify_jacobian_point |
| struct | purify_affine_point |
| struct | purify_complete_projective_point |
| struct | purify_curve |
Typedefs | |
| typedef struct purify_jacobian_point | purify_jacobian_point |
| typedef struct purify_affine_point | purify_affine_point |
| typedef struct purify_complete_projective_point | purify_complete_projective_point |
| typedef struct purify_curve | purify_curve |
| typedef struct purify_affine_point purify_affine_point |
| typedef struct purify_complete_projective_point purify_complete_projective_point |
| typedef struct purify_curve purify_curve |
| typedef struct purify_jacobian_point purify_jacobian_point |
| void purify_curve_add | ( | purify_jacobian_point * | out, |
| const purify_curve * | curve, | ||
| const purify_jacobian_point * | lhs, | ||
| const purify_jacobian_point * | rhs | ||
| ) |
Definition at line 619 of file curve.c.
References purify_jacobian_point::infinity, purify_affine_point::infinity, purify_curve_add_mixed(), purify_curve_double(), purify_curve_jacobian_infinity(), purify_fe_eq(), purify_fe_is_one(), purify_fe_is_zero(), purify_fe_mul(), purify_fe_set_u64(), purify_fe_sub(), purify_jacobian_point::x, purify_affine_point::x, purify_jacobian_point::y, purify_affine_point::y, and purify_jacobian_point::z.
Referenced by purify::EllipticCurve::add(), and purify_curve_mul().
| void purify_curve_add_mixed | ( | purify_jacobian_point * | out, |
| const purify_curve * | curve, | ||
| const purify_jacobian_point * | lhs, | ||
| const purify_affine_point * | rhs | ||
| ) |
Definition at line 566 of file curve.c.
References purify_jacobian_point::infinity, purify_affine_point::infinity, purify_curve_double(), purify_curve_jacobian_infinity(), purify_fe_eq(), purify_fe_is_zero(), purify_fe_mul(), purify_fe_set_u64(), purify_fe_sub(), purify_jacobian_point::x, purify_affine_point::x, purify_jacobian_point::y, purify_affine_point::y, and purify_jacobian_point::z.
Referenced by purify::EllipticCurve::add_mixed(), and purify_curve_add().
| void purify_curve_affine | ( | purify_affine_point * | out, |
| const purify_curve * | curve, | ||
| const purify_jacobian_point * | point | ||
| ) |
Definition at line 450 of file curve.c.
References purify_jacobian_point::infinity, purify_affine_point::infinity, purify_fe_inverse_var(), purify_fe_is_zero(), purify_fe_mul(), purify_fe_set_zero(), purify_jacobian_point::x, purify_affine_point::x, purify_jacobian_point::y, purify_affine_point::y, and purify_jacobian_point::z.
Referenced by purify::EllipticCurve::affine(), and purify_curve_secret_input_point().
Definition at line 904 of file curve.c.
References purify_curve_field_a(), purify_curve_field_b(), purify_curve_field_di(), purify_fe_add(), purify_fe_inverse(), purify_fe_mul(), purify_fe_set_u64(), and purify_fe_sub().
Referenced by purify::combine().
| void purify_curve_double | ( | purify_jacobian_point * | out, |
| const purify_curve * | curve, | ||
| const purify_jacobian_point * | point | ||
| ) |
Definition at line 517 of file curve.c.
References purify_curve::a, purify_jacobian_point::infinity, purify_curve_jacobian_infinity(), purify_fe_add(), purify_fe_is_zero(), purify_fe_mul(), purify_fe_set_u64(), purify_fe_sub(), purify_jacobian_point::x, purify_jacobian_point::y, and purify_jacobian_point::z.
Referenced by purify::EllipticCurve::double_point(), purify_curve_add(), purify_curve_add_mixed(), and purify_curve_mul().
| void purify_curve_field_a | ( | purify_fe * | out | ) |
Definition at line 425 of file curve.c.
References purify_fe_set_u64().
Referenced by purify::field_a(), and purify_curve_combine().
| void purify_curve_field_b | ( | purify_fe * | out | ) |
Definition at line 429 of file curve.c.
References purify_fe_set_u64().
Referenced by purify::field_b(), and purify_curve_combine().
| void purify_curve_field_d | ( | purify_fe * | out | ) |
Definition at line 433 of file curve.c.
References purify_fe_set_u64().
Referenced by purify::field_d().
| void purify_curve_field_di | ( | purify_fe * | out | ) |
Definition at line 437 of file curve.c.
References kPurifyFieldDi, and purify_fe_set_u256().
Referenced by purify::field_di(), and purify_curve_combine().
| void purify_curve_half_n1 | ( | uint64_t | out[4] | ) |
Definition at line 404 of file curve.c.
References kPurifyHalfN1, and purify_curve_copy_u256().
Referenced by purify::half_n1().
| void purify_curve_half_n2 | ( | uint64_t | out[4] | ) |
Definition at line 408 of file curve.c.
References kPurifyHalfN2, and purify_curve_copy_u256().
Referenced by purify::half_n2().
| int purify_curve_hash_to_curve | ( | purify_jacobian_point * | out, |
| const purify_curve * | curve, | ||
| const unsigned char * | data, | ||
| size_t | data_len | ||
| ) |
Definition at line 778 of file curve.c.
References purify_curve_hash_to_int_tagged_u320(), purify_curve_is_x_coord(), purify_curve_jacobian_infinity(), purify_curve_lift_x(), purify_curve_negate(), purify_curve_two_p(), purify_fe_set_u256(), and purify_u256_try_narrow_u320().
Referenced by purify::hash_to_curve().
| int purify_curve_is_valid_public_key | ( | const uint64_t | value[8] | ) |
Definition at line 837 of file curve.c.
References purify_curve_packed_public_key_space_size().
Referenced by purify::is_valid_public_key(), and purify_curve_unpack_public().
| int purify_curve_is_valid_secret_key | ( | const uint64_t | value[8] | ) |
Definition at line 831 of file curve.c.
References purify_curve_packed_secret_key_space_size().
Referenced by purify::is_valid_secret_key(), and purify_curve_unpack_secret().
| int purify_curve_is_x_coord | ( | const purify_curve * | curve, |
| const purify_fe * | x | ||
| ) |
Definition at line 482 of file curve.c.
References purify_curve::a, purify_curve::b, purify_fe_add(), purify_fe_legendre_symbol(), and purify_fe_mul().
Referenced by purify::EllipticCurve::is_x_coord(), and purify_curve_hash_to_curve().
| void purify_curve_jacobian_infinity | ( | purify_jacobian_point * | out | ) |
Definition at line 443 of file curve.c.
References purify_jacobian_point::infinity, purify_fe_set_u64(), purify_fe_set_zero(), purify_jacobian_point::x, purify_jacobian_point::y, and purify_jacobian_point::z.
Referenced by purify::JacobianPoint::infinity_point(), purify_curve_add(), purify_curve_add_mixed(), purify_curve_double(), purify_curve_hash_to_curve(), and purify_curve_mul().
| int purify_curve_key_to_bits | ( | int * | out_bits, |
| size_t | out_len, | ||
| const uint64_t | value[4], | ||
| const uint64_t | max_value[4] | ||
| ) |
Definition at line 937 of file curve.c.
References purify_curve_copy_u256().
Referenced by purify::key_to_bits().
| int purify_curve_lift_x | ( | purify_jacobian_point * | out, |
| const purify_curve * | curve, | ||
| const purify_fe * | x | ||
| ) |
Definition at line 496 of file curve.c.
References purify_curve::a, purify_curve::b, purify_jacobian_point::infinity, purify_fe_add(), purify_fe_mul(), purify_fe_set_u64(), purify_fe_sqrt(), purify_jacobian_point::x, purify_jacobian_point::y, and purify_jacobian_point::z.
Referenced by purify::EllipticCurve::lift_x(), and purify_curve_hash_to_curve().
| void purify_curve_mul | ( | purify_jacobian_point * | out, |
| const purify_curve * | curve, | ||
| const purify_jacobian_point * | point, | ||
| const uint64_t | scalar[4] | ||
| ) |
Definition at line 697 of file curve.c.
References purify_curve_add(), purify_curve_double(), purify_curve_jacobian_infinity(), and scalar.
Referenced by purify::EllipticCurve::mul().
| int purify_curve_mul_secret_affine | ( | purify_affine_point * | out, |
| const purify_curve * | curve, | ||
| const purify_jacobian_point * | point, | ||
| const uint64_t | scalar[4] | ||
| ) |
Definition at line 759 of file curve.c.
References purify_affine_point::infinity, purify_curve_mul_secret_ladder_core(), purify_fe_inverse(), purify_fe_is_zero(), purify_fe_mul(), scalar, purify_affine_point::x, purify_complete_projective_point::x, purify_affine_point::y, purify_complete_projective_point::y, and purify_complete_projective_point::z.
Referenced by purify::EllipticCurve::mul_secret_affine().
| void purify_curve_negate | ( | purify_jacobian_point * | out, |
| const purify_jacobian_point * | point | ||
| ) |
Definition at line 471 of file curve.c.
References purify_jacobian_point::infinity, purify_fe_negate(), purify_jacobian_point::x, purify_jacobian_point::y, and purify_jacobian_point::z.
Referenced by purify::EllipticCurve::negate(), and purify_curve_hash_to_curve().
| void purify_curve_order_n1 | ( | uint64_t | out[4] | ) |
Definition at line 396 of file curve.c.
References kPurifyOrderN1, and purify_curve_copy_u256().
Referenced by purify::order_n1().
| void purify_curve_order_n2 | ( | uint64_t | out[4] | ) |
Definition at line 400 of file curve.c.
References kPurifyOrderN2, and purify_curve_copy_u256().
Referenced by purify::order_n2().
| void purify_curve_pack_public | ( | uint64_t | out[8], |
| const uint64_t | x1[4], | ||
| const uint64_t | x2[4] | ||
| ) |
Definition at line 897 of file curve.c.
References kPurifyPrimeP, purify_u512_multiply_u256(), and purify_u512_widen_u256().
Referenced by purify::pack_public().
| void purify_curve_packed_public_key_space_size | ( | uint64_t | out[8] | ) |
Definition at line 416 of file curve.c.
References kPurifyPrimeP, and purify_u512_multiply_u256().
Referenced by purify::packed_public_key_space_size(), and purify_curve_is_valid_public_key().
| void purify_curve_packed_secret_key_space_size | ( | uint64_t | out[8] | ) |
Definition at line 412 of file curve.c.
References kPurifyHalfN1, kPurifyHalfN2, and purify_u512_multiply_u256().
Referenced by purify::packed_secret_key_space_size(), and purify_curve_is_valid_secret_key().
| void purify_curve_prime_p | ( | uint64_t | out[4] | ) |
Definition at line 392 of file curve.c.
References kPurifyPrimeP, and purify_curve_copy_u256().
Referenced by purify::prime_p().
| void purify_curve_two_p | ( | uint64_t | out[5] | ) |
Definition at line 420 of file curve.c.
References kPurifyPrimeP, and purify_u320_widen_u256().
Referenced by purify_curve_hash_to_curve(), and purify::two_p().
| int purify_curve_unpack_public | ( | uint64_t | first[4], |
| uint64_t | second[4], | ||
| const uint64_t | value[8] | ||
| ) |
Definition at line 878 of file curve.c.
References kPurifyPrimeP, purify_curve_is_valid_public_key(), purify_u256_try_narrow_u512(), purify_u512_try_divmod_same(), and purify_u512_widen_u256().
Referenced by purify::unpack_public().
| int purify_curve_unpack_secret | ( | uint64_t | first[4], |
| uint64_t | second[4], | ||
| const uint64_t | value[8] | ||
| ) |
Definition at line 863 of file curve.c.
References purify_curve_is_valid_secret_key(), and purify_curve_unpack_secret_from_valid().
Referenced by purify::unpack_secret().