mirror of
https://github.com/pseXperiments/ff-Goldilocks.git
synced 2026-01-10 13:38:02 -05:00
feat: derive hashes
This commit is contained in:
12
src/fp.rs
12
src/fp.rs
@@ -1,21 +1,23 @@
|
||||
use crate::util::{add_no_canonicalize_trashing_input, branch_hint, split, sqrt_tonelli_shanks};
|
||||
use crate::util::{assume, try_inverse_u64};
|
||||
use core::iter::{Product, Sum};
|
||||
use core::ops::{Add, AddAssign, Mul, MulAssign, Neg, Sub, SubAssign};
|
||||
use std::fmt::{Display, Formatter};
|
||||
use std::io::{Read, Write};
|
||||
|
||||
use ff::{Field, FromUniformBytes, PrimeField};
|
||||
use halo2curves::serde::SerdeObject;
|
||||
use itertools::Itertools;
|
||||
use rand_core::RngCore;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt::{Display, Formatter};
|
||||
use std::io::{Read, Write};
|
||||
use subtle::{Choice, ConditionallySelectable, ConstantTimeEq, CtOption};
|
||||
|
||||
use crate::util::{add_no_canonicalize_trashing_input, branch_hint, split, sqrt_tonelli_shanks};
|
||||
use crate::util::{assume, try_inverse_u64};
|
||||
|
||||
/// Goldilocks field with modulus 2^64 - 2^32 + 1.
|
||||
/// A Goldilocks field may store a non-canonical form of the element
|
||||
/// where the value can be between 0 and 2^64.
|
||||
/// For unique representation of its form, use `to_canonical_u64`
|
||||
#[derive(Clone, Copy, Debug, Default, Eq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Copy, Debug, Default, Eq, Serialize, Deserialize, Hash)]
|
||||
pub struct Goldilocks(pub(crate) u64);
|
||||
|
||||
impl SerdeObject for Goldilocks {
|
||||
|
||||
@@ -2,18 +2,20 @@
|
||||
|
||||
use core::iter::{Product, Sum};
|
||||
use core::ops::{Add, AddAssign, Mul, MulAssign, Neg, Sub, SubAssign};
|
||||
use std::hash::Hash;
|
||||
use std::io::{Read, Write};
|
||||
|
||||
use ff::{Field, FromUniformBytes, PrimeField};
|
||||
use halo2curves::serde::SerdeObject;
|
||||
use rand_core::RngCore;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::io::{Read, Write};
|
||||
use subtle::{Choice, ConditionallySelectable, ConstantTimeEq, CtOption};
|
||||
|
||||
use crate::field::SmallField;
|
||||
use crate::Goldilocks;
|
||||
|
||||
/// Degree 3 Goldilocks extension field mod x^2 - 7
|
||||
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize, Hash)]
|
||||
pub struct GoldilocksExt2(pub [Goldilocks; 2]);
|
||||
|
||||
/// For a = (a1, a2) and b = (b1, b2)
|
||||
|
||||
@@ -2,18 +2,19 @@
|
||||
|
||||
use core::iter::{Product, Sum};
|
||||
use core::ops::{Add, AddAssign, Mul, MulAssign, Neg, Sub, SubAssign};
|
||||
use std::io::{Read, Write};
|
||||
|
||||
use ff::{Field, FromUniformBytes, PrimeField};
|
||||
use halo2curves::serde::SerdeObject;
|
||||
use rand_core::RngCore;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::io::{Read, Write};
|
||||
use subtle::{Choice, ConditionallySelectable, ConstantTimeEq, CtOption};
|
||||
|
||||
use crate::field::SmallField;
|
||||
use crate::Goldilocks;
|
||||
|
||||
/// Degree 3 Goldilocks extension field mod x^3-x-1
|
||||
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize, Hash)]
|
||||
pub struct GoldilocksExt3(pub [Goldilocks; 3]);
|
||||
|
||||
/// For a = (a1, a2, a3) and b = (b1, b2, b3)
|
||||
|
||||
Reference in New Issue
Block a user