package sm2

import (
	"fmt"
	"testing"
)

const (
	SELF_PRI = "BD13D44C74422F80ADDF54AD2DE2888C4092AF6F61E41FABADA6C47F17574A41"

	SELF_PUB = "04F26C6CDA5E58153999FDF3023259F16EDE0A556C39FCF4BC97C04A10A8A6CF1D52297B53DB4DD72FEEF8221394C8478E6424F4E84E4A6E2784C1A4A1C99F2DC2"
)

func TestGenerateSM2KeyPair(t *testing.T) {
	// Generate a new SM2 key pair
	privateKey, publicKey := GenerateKey()

	// Print the private and public keys
	fmt.Printf("Private Key: %s\n", privateKey)
	fmt.Printf("Public Key: %s\n", publicKey)

	data := "{\"name\":\"张三\",\"sex\":1,\"is_human\":true}"
	en, err := SM2Encrypt(data, publicKey)
	if err != nil {
		panic(err)
	}

	decrypt, err := SM2Decrypt(en, publicKey, privateKey)
	if err != nil {
		panic(err)
	}
	t.Log(decrypt)

}

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

func TestSM2Decrypt(t *testing.T) {
	en := "MDRkZDJkYzE1ZmIyZTdjMDRiNTlhZGM5OGM1NjBjM2RhZWVkMzhkMjljYjFkMmEyNjUzMmZlZDRkMWUxMjc5MjQxM2M5OTJiMTk5OWQ4MzgwOTdjYjhhMTU4ODA3OTNmZDNiM2FjZmE2NWNjNDAzZTgyODZjZjM5Y2NkMWU2NmJjY2EwNjU0N2NlNzM3N2M3YWViMmRmN2UzNGQ3YTIyMzI1NWJiMzU5NzljMDVlNjg2MTQzMGE4Y2VmNDZmMTU4YTYxNmI5ZjE2YTcwYzc0MTRhNmNmMWE2NWE5ZTE1YWM1ODBmODk1MWNiOWNhMzBlMDNhMjQzZmZjZWY4YjQzOWUzOGM5NmU0MGQyMTc5YjY5YThhNGQ3ZTQxMjZlMzA1MGZlNWIxZDI4Mzc0YjU3MmRiODBiMjFiMWY4NGYwNDBjYTE3NTRhN2FjMDk5Y2ZmZGI5MDM3NjIxYTE0ODAzNGIyOTU4NjA4ZDM4MzNlOGIwNDE4MWQ4NGUyMWU0OTNmZjYzNzNjMGQ4Y2M0ODVkYzM4NjZlYjZlOWZiYzVjZGFmMDExNWNiYWNiODA4Y2ZkYjczODlmZmJlZDliNmQzMDdiYTczY2EyOTVlOWNhM2RhZmNlNDk1YTZiNWI4NzFhYzdlN2U2ZTJmZWFlOGU3YTllOTFhYTE4ZGY4MzVkNWI2YjFkOGFkY2NhYWM0YjMwOTU3NzUxMmZkYWVlMmVhOWJlMTkwMWUxOTUzMzFmN2UyZjU5NmFkOGRiN2Q1ZDJmYzI2MDA5NjE4YmNhNzc="
	decrypt, err := SM2Decrypt(en, SELF_PUB, SELF_PRI)
	if err != nil {
		panic(err)
	}
	t.Log(decrypt)
}

func encrypt() string {
	data := "{\"order_no\":5476377146882523228,\"order_type\":1,\"out_tread_no\":\"asdadasdas\",\"amount\":1,\"desc\":\"abc\",\"status\":2,\"create_time\":\"2024-08-08 14:47:35\"}"
	en, err := SM2Encrypt(data, SELF_PUB)
	if err != nil {
		panic(err)
	}
	return en
}