44 lines
1.0 KiB
Go
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))
|
|
}
|