refactor constants
This commit is contained in:
parent
6a1952c771
commit
98f697b3d0
8 changed files with 2073 additions and 2083 deletions
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,9 @@
|
|||
// https://eprint.iacr.org/2019/458.pdf
|
||||
|
||||
def ark<N, C>(field[N] state, field[C] c, u32 it) -> field[N]:
|
||||
from "./constants.zok" import poseidon_c
|
||||
from "./constants.zok" import poseidon_m
|
||||
|
||||
def ark<N>(field[N] state, field[497] c, u32 it) -> field[N]:
|
||||
for u32 i in 0..N do
|
||||
state[i] = state[i] + c[it + i]
|
||||
endfor
|
||||
|
@ -13,7 +16,7 @@ def sbox<N>(field[N] state, u32 f, u32 p, u32 r) -> field[N]:
|
|||
endfor
|
||||
return state
|
||||
|
||||
def mix<N>(field[N] state, field[N][N] m) -> field[N]:
|
||||
def mix<N>(field[N] state, field[7][7] m) -> field[N]:
|
||||
field[N] out = [0; N]
|
||||
for u32 i in 0..N do
|
||||
field acc = 0
|
||||
|
@ -24,8 +27,8 @@ def mix<N>(field[N] state, field[N][N] m) -> field[N]:
|
|||
endfor
|
||||
return out
|
||||
|
||||
def main<N, C, M>(field[N] inputs, field[C] c, field[M][M] m) -> field:
|
||||
assert(N > 0 && N <= 6)
|
||||
def main<N>(field[N] inputs) -> field:
|
||||
assert(N > 0 && N <= 6) // max 6 inputs
|
||||
|
||||
u32 t = N + 1
|
||||
u32[8] rounds_p = [56, 57, 56, 60, 60, 63, 64, 63]
|
||||
|
@ -33,6 +36,9 @@ def main<N, C, M>(field[N] inputs, field[C] c, field[M][M] m) -> field:
|
|||
u32 f = 8
|
||||
u32 p = rounds_p[(t - 2)]
|
||||
|
||||
field[497] c = poseidon_c()[t - 2]
|
||||
field[7][7] m = poseidon_m()[t - 2]
|
||||
|
||||
field[t] state = [0; t]
|
||||
for u32 i in 1..t do
|
||||
state[i] = inputs[i - 1]
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
from "hashes/poseidon/constants" import poseidon_c_1
|
||||
from "hashes/poseidon/constants" import poseidon_m_1
|
||||
import "hashes/poseidon/poseidon" as poseidon
|
||||
|
||||
def main(field i) -> field:
|
||||
field output = poseidon([i], poseidon_c_1(), poseidon_m_1())
|
||||
field output = poseidon([i])
|
||||
return output
|
|
@ -1,7 +1,5 @@
|
|||
from "hashes/poseidon/constants" import poseidon_c_2
|
||||
from "hashes/poseidon/constants" import poseidon_m_2
|
||||
import "hashes/poseidon/poseidon" as poseidon
|
||||
|
||||
def main(field[2] i) -> field:
|
||||
field output = poseidon(i, poseidon_c_2(), poseidon_m_2())
|
||||
field output = poseidon(i)
|
||||
return output
|
|
@ -1,7 +1,5 @@
|
|||
from "hashes/poseidon/constants" import poseidon_c_3
|
||||
from "hashes/poseidon/constants" import poseidon_m_3
|
||||
import "hashes/poseidon/poseidon" as poseidon
|
||||
|
||||
def main(field[3] i) -> field:
|
||||
field output = poseidon(i, poseidon_c_3(), poseidon_m_3())
|
||||
field output = poseidon(i)
|
||||
return output
|
|
@ -1,7 +1,5 @@
|
|||
from "hashes/poseidon/constants" import poseidon_c_4
|
||||
from "hashes/poseidon/constants" import poseidon_m_4
|
||||
import "hashes/poseidon/poseidon" as poseidon
|
||||
|
||||
def main(field[4] i) -> field:
|
||||
field output = poseidon(i, poseidon_c_4(), poseidon_m_4())
|
||||
field output = poseidon(i)
|
||||
return output
|
|
@ -1,7 +1,5 @@
|
|||
from "hashes/poseidon/constants" import poseidon_c_5
|
||||
from "hashes/poseidon/constants" import poseidon_m_5
|
||||
import "hashes/poseidon/poseidon" as poseidon
|
||||
|
||||
def main(field[5] i) -> field:
|
||||
field output = poseidon(i, poseidon_c_5(), poseidon_m_5())
|
||||
field output = poseidon(i)
|
||||
return output
|
|
@ -1,7 +1,5 @@
|
|||
from "hashes/poseidon/constants" import poseidon_c_6
|
||||
from "hashes/poseidon/constants" import poseidon_m_6
|
||||
import "hashes/poseidon/poseidon" as poseidon
|
||||
|
||||
def main(field[6] i) -> field:
|
||||
field output = poseidon(i, poseidon_c_6(), poseidon_m_6())
|
||||
field output = poseidon(i)
|
||||
return output
|
Loading…
Reference in a new issue