finish eddsa draft

This commit is contained in:
Jacob Jackson
2022-10-05 18:09:59 +00:00
parent 39247e8a12
commit 6573397655
5 changed files with 280 additions and 8 deletions

View File

@@ -15,7 +15,18 @@ func _right_rotate(n [64]frontend.Variable, bits int) [64]frontend.Variable {
return result
}
func Sha512(api frontend.API, in [] frontend.Variable) ([512] frontend.Variable) {
func Sha512Bytes(api frontend.API, in []frontend.Variable) ([512]frontend.Variable) {
bits := []frontend.Variable{}
for _, v := range in {
b := api.ToBinary(v, 8)
for i := 0; i < 8; i++ {
bits = append(bits, b[7-i])
}
}
return Sha512Bits(api, bits)
}
func Sha512Bits(api frontend.API, in []frontend.Variable) ([512]frontend.Variable) {
_not := func(x [64]frontend.Variable) [64]frontend.Variable {
return not(api, x)
}

View File

@@ -15,7 +15,7 @@ type Sha512Circuit struct {
}
func (circuit *Sha512Circuit) Define(api frontend.API) error {
res := Sha512(api, circuit.in)
res := Sha512Bits(api, circuit.in)
if len(res) != 512 { panic("bad length") }
for i := 0; i < 512; i++ {
api.AssertIsEqual(res[i], circuit.out[i])