init: v1.0.0
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
package outsource
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"xdx.jelly/xgcl/grand"
|
||||
"xdx.jelly/xgcl/sm/sm2"
|
||||
"xdx.jelly/xgcl/tpc/sm2/sm2m"
|
||||
)
|
||||
|
||||
// 外包盲签名流程示例
|
||||
func TestOSBlindSign(t *testing.T) {
|
||||
//O、客户端生成paillier密钥
|
||||
var err error
|
||||
rnd := grand.Reader
|
||||
paiPrivKey, paiPubKey, encryptedClientKey1, _, serverKey, publicKey := osGenerateKey(t)
|
||||
|
||||
e := make([]byte, 32)
|
||||
rnd.Read(e)
|
||||
|
||||
clientCtx := NewClientBlindSignContext(paiPrivKey, rnd)
|
||||
// 1) client -> os
|
||||
|
||||
// 2)os -> client
|
||||
osServerCtx := NewOSBlindSignContext()
|
||||
pp, err := osServerCtx.Step1(rnd) // P'
|
||||
assert.Nil(t, err)
|
||||
|
||||
// 3) client -> hfserver
|
||||
ecipher, p, err := clientCtx.Step1(e, pp)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// 4) hfserver -> client
|
||||
rcipher, s1, s2cipher, err := sm2m.ServerBlindSign(serverKey, ecipher, p, paiPubKey, rnd)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// 5) clinet -> os
|
||||
s1p, s2p, err := clientCtx.Step2(rcipher, s1, s2cipher)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// 6) 外包服务器解析data并计算c,把c发送给客户端
|
||||
w, err := osServerCtx.Step2(s1p, s2p, encryptedClientKey1, paiPubKey)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// 7) 客户端计算签名值
|
||||
sig, err := clientCtx.Step3(w)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// 8) 客户端验证签名
|
||||
assert.True(t, sm2.Verify(e, publicKey, sig))
|
||||
}
|
||||
Reference in New Issue
Block a user