package sm4

import (
	"fmt"
	"testing"
)

const (
	SELF_PRI = "EA7CB6F907A96264D6763F8C46AB96B476538D2ABC880A459E10BE5A1C30013D"

	SELF_PUB = "04363DF574D4FE34EE58FB8A3F7CB08E6CA5EBB3B7335CBAE10A2900551F6450AB3AD25DBC0A76EFA9E6D44D2C51E3027483F7BFD09996457888BAFD1AF673817F"

	PARTY_PRI = "EEB0A34DE1F05154E4B96E50BFC1F8B9750EEAE799F5708C7AFBABB9AFCFA1BF"

	PARTY_PUB = "0420425DF33945C9D5596A33ED60ABEEFD0165C27BA7D6C95D37344E9223149FEAF4C10CEACD7EC88E8DD1E0BDEA71FD09BE2077A1BDC61BC45587B7CC3613F85A"
)

func TestGenerateKey(t *testing.T) {
	hexPri, publicKeyHex := GenerateKey()
	fmt.Println(hexPri, publicKeyHex)
}

func TestSM4Encrypt(t *testing.T) {
	t.Log(encrypt())
}

func TestSM4Decrypt(t *testing.T) {
	uid, en := encrypt()
	decrypt, err := Sm4Decrypt(uid, SELF_PRI, PARTY_PUB, en, true)
	if err != nil {
		panic(err)
	}
	t.Log(decrypt)
}

func encrypt() (string, string) {
	uid := "1234567890"
	data := "{\"name\":\"张三\",\"sex\":1,\"is_human\":true}"
	en, err := Sm4Encrypt(uid, PARTY_PRI, SELF_PUB, data, "", true)
	if err != nil {
		panic(err)
	}
	return uid, en
}