Files
xgcl/tpc/sm2/sm2m/blindsign_test.go
2026-05-27 23:03:00 +08:00

44 lines
1.0 KiB
Go

package sm2m
import (
"testing"
"github.com/stretchr/testify/assert"
"xdx.jelly/xgcl/grand"
"xdx.jelly/xgcl/he/paillier"
"xdx.jelly/xgcl/sm/sm2"
)
func TestBlindSign(t *testing.T) {
// 生成协同密钥
rnd := make([]byte, 32)
clientKey, clientTempKey, err := ClientGenSignKey_one(nil)
assert.Nil(t, err)
_, _ = grand.GenerateRandom(rnd)
serverKey, serverTempKey, publicKey, err := ServerGenSignKey(clientTempKey, rnd)
assert.Nil(t, err)
err = ClientGenSignKey_two(clientKey, serverTempKey, publicKey)
assert.Nil(t, err)
// 生成paillier密钥
psk, ppk, err := paillier.GenerateKey(2048)
assert.Nil(t, err)
// 盲协同签名
e := make([]byte, 32)
c := NewClientBlindSignContext(publicKey, psk, grand.Reader)
ecipher, p, err := c.Initial(e)
assert.Nil(t, err)
rcipher, s1, s2cipher, err := ServerBlindSign(serverKey, ecipher, p, ppk, grand.Reader)
assert.Nil(t, err)
sig, err := c.Final(clientKey, rcipher, s1, s2cipher)
assert.Nil(t, err)
assert.True(t, sm2.Verify(e, publicKey, sig))
}