mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-12-27 09:05:18 +00:00
91 lines
2.1 KiB
Go
91 lines
2.1 KiB
Go
package crypto_test
|
|
|
|
import (
|
|
"bytes"
|
|
"crypto/rand"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/cloudflare/circl/sign/ed448"
|
|
"github.com/stretchr/testify/assert"
|
|
"go.uber.org/zap"
|
|
"source.quilibrium.com/quilibrium/monorepo/node/crypto"
|
|
"source.quilibrium.com/quilibrium/monorepo/node/crypto/kzg"
|
|
"source.quilibrium.com/quilibrium/monorepo/node/protobufs"
|
|
)
|
|
|
|
func TestKZGVerifyFrame(t *testing.T) {
|
|
kzg.TestInit("./kzg/ceremony.json")
|
|
data := make([]byte, 1024)
|
|
rand.Read(data)
|
|
|
|
l, _ := zap.NewProduction()
|
|
inclusionProver := crypto.NewKZGInclusionProver(l)
|
|
|
|
commitment, err := inclusionProver.Commit(
|
|
data,
|
|
protobufs.IntrinsicExecutionOutputType,
|
|
)
|
|
assert.NoError(t, err)
|
|
|
|
proof, err := inclusionProver.ProveAggregate(
|
|
[]*crypto.InclusionCommitment{commitment},
|
|
)
|
|
assert.NoError(t, err)
|
|
|
|
frame := &protobufs.ClockFrame{
|
|
Filter: []byte{0x00},
|
|
FrameNumber: 1,
|
|
Input: bytes.Repeat([]byte{0x00}, 516),
|
|
Output: bytes.Repeat([]byte{0x00}, 516),
|
|
}
|
|
|
|
_, priv, _ := ed448.GenerateKey(rand.Reader)
|
|
w := crypto.NewWesolowskiFrameProver(l)
|
|
frame, err = w.ProveDataClockFrame(
|
|
frame,
|
|
[][]byte{proof.AggregateCommitment},
|
|
[]*protobufs.InclusionAggregateProof{
|
|
{
|
|
Filter: []byte{0x00},
|
|
FrameNumber: 1,
|
|
InclusionCommitments: []*protobufs.InclusionCommitment{
|
|
{
|
|
Filter: []byte{0x00},
|
|
FrameNumber: 1,
|
|
TypeUrl: proof.InclusionCommitments[0].TypeUrl,
|
|
Commitment: proof.InclusionCommitments[0].Commitment,
|
|
Data: data,
|
|
Position: 0,
|
|
},
|
|
},
|
|
Proof: proof.Proof,
|
|
},
|
|
},
|
|
priv,
|
|
time.Now().UnixMilli(),
|
|
100,
|
|
)
|
|
|
|
err = inclusionProver.VerifyFrame(frame)
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func TestKZGInclusionProverRawFuncs(t *testing.T) {
|
|
kzg.TestInit("./kzg/ceremony.json")
|
|
data := make([]byte, 65536)
|
|
rand.Read(data)
|
|
|
|
l, _ := zap.NewProduction()
|
|
inclusionProver := crypto.NewKZGInclusionProver(l)
|
|
c, err := inclusionProver.CommitRaw(data, 1024)
|
|
assert.NoError(t, err)
|
|
|
|
p, err := inclusionProver.ProveRaw(data, 3, 1024)
|
|
assert.NoError(t, err)
|
|
|
|
v, err := inclusionProver.VerifyRaw(data[64*4:64*5], c, 3, p, 1024)
|
|
assert.NoError(t, err)
|
|
assert.True(t, v)
|
|
}
|