Files
threshold/pkg/zk/mul/mul_test.go
zeekay eeaa2a1c07 fix: resolve go vet and formatting issues
- Fix go vet error in lss_bench_test.go: replace b.Fatal with panic in goroutine
- Fix go vet error in lss_test.go: remove t.Skip call from goroutine
- Apply gofmt to all files to fix formatting issues

All go vet errors and formatting issues have been resolved.
2025-08-05 17:59:18 -05:00

55 lines
1.3 KiB
Go

package zkmul
import (
"crypto/rand"
"testing"
"github.com/fxamacker/cbor/v2"
"github.com/luxfi/threshold/pkg/hash"
"github.com/luxfi/threshold/pkg/math/curve"
"github.com/luxfi/threshold/pkg/math/sample"
"github.com/luxfi/threshold/pkg/zk"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestMul(t *testing.T) {
group := curve.Secp256k1{}
prover := zk.ProverPaillierPublic
x := sample.IntervalL(rand.Reader)
X, rhoX := prover.Enc(x)
y := sample.IntervalL(rand.Reader)
Y, _ := prover.Enc(y)
C := Y.Clone().Mul(prover, x)
rho := C.Randomize(prover, nil)
public := Public{
X: X,
Y: Y,
C: C,
Prover: prover,
}
private := Private{
X: x,
Rho: rho,
RhoX: rhoX,
}
proof := NewProof(group, hash.New(), public, private)
assert.True(t, proof.Verify(group, hash.New(), public))
out, err := cbor.Marshal(proof)
require.NoError(t, err, "failed to marshal proof")
proof2 := &Proof{}
require.NoError(t, cbor.Unmarshal(out, proof2), "failed to unmarshal proof")
out2, err := cbor.Marshal(proof2)
require.NoError(t, err, "failed to marshal 2nd proof")
proof3 := &Proof{}
require.NoError(t, cbor.Unmarshal(out2, proof3), "failed to unmarshal 2nd proof")
assert.True(t, proof3.Verify(group, hash.New(), public))
}