package sm2a

import (
	"testing"

	"xdx.jelly/xgcl/grand"
	"xdx.jelly/xgcl/sm/sm2"
)

func TestDec(t *testing.T) {
	clientKeyCtx := NewClientEncKeyGenContext()
	buf, _ := clientKeyCtx.ClientKeyGen_one(grand.Reader)
	ds, pk, buf, _ := ServerEncKeyGen(buf, grand.Reader)
	clientKeyCtx.ClientKeyGen_two(buf)
	dc := clientKeyCtx.ClientKey
	printLog("客户端私钥分量", clientKeyCtx.ClientKey.Bytes())
	printLog("客户端公", clientKeyCtx.Pubkey.Bytes())
	printLog("服务端公", pk.Bytes())
	printLog("服务端私钥分", ds.Bytes())

	msg := []byte("1234567812345678")
	k := grand.GetRandom(sm2.ByteSize())
	cipher, _ := sm2.Encrypt(pk, msg, k)
	printLog("密文", cipher.Bytes())

	clientDecCtx := NewClientDecContext()
	buf, _ = clientDecCtx.Decrypt_one(cipher)
	printLog("C1=", buf)
	buf, _ = ServerDecrypt(buf, ds)
	printLog("[ds]C1=", buf)
	plain, _ := clientDecCtx.Decrypt_two(buf, dc)
	printLog("协同解密原文", plain)
}
