...
1
2
3
4
5 package pkcs12
6
7 import (
8 "encoding/base64"
9 "fmt"
10 "io/ioutil"
11 "os"
12 "testing"
13
14 "github.com/tjfoc/gmsm/sm2"
15 "github.com/tjfoc/gmsm/x509"
16 )
17
18 func Test_P12Encrypt(t *testing.T) {
19 str := "MIICiTCCAi6gAwIBAgIIICAEFwACVjAwCgYIKoEcz1UBg3UwdjEcMBoGA1UEAwwTU21hcnRDQV9UZXN0X1NNMl9DQTEVMBMGA1UECwwMU21hcnRDQV9UZXN0MRAwDgYDVQQKDAdTbWFydENBMQ8wDQYDVQQHDAbljZfkuqwxDzANBgNVBAgMBuaxn+iLjzELMAkGA1UEBhMCQ04wHhcNMjAwNDE3MDYwNjA4WhcNMTkwOTAzMDE1MzE5WjCBrjFGMEQGA1UELQw9YXBpX2NhX1RFU1RfVE9fUEhfUkFfVE9OR0pJX2FlNTA3MGNiY2E4NTQyYzliYmJmOTRmZjcwNThkNmEzMTELMAkGA1UEBhMCQ04xDTALBgNVBAgMBG51bGwxDTALBgNVBAcMBG51bGwxFTATBgNVBAoMDENGQ0FTTTJBR0VOVDENMAsGA1UECwwEbnVsbDETMBEGA1UEAwwKY2hlbnh1QDEwNDBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABAWeikXULbz1RqgmVzJWtSDMa3f9wirzwnceb1WIWxTqJaY+3xNlsM63oaIKJCD6pZu14EDkLS0FTP1uX3EySOajbTBrMAsGA1UdDwQEAwIGwDAdBgNVHQ4EFgQUbMrrNQDS1B1yjyrkgq2FWGi5zRcwHwYDVR0jBBgwFoAUXPO6JYzCZQzsZ+++3Y1rp16v46wwDAYDVR0TBAUwAwEB/zAOBggqgRzQFAQBAQQCBQAwCgYIKoEcz1UBg3UDSQAwRgIhAMcbwSDvL78qDSoqQh/019EEk4UNHP7zko0t1GueffTnAiEAupHr3k4vWSWV1SEqds+q8u4CbRuuRDvBOQ6od8vGzjM="
20 decodeBytes, err := base64.StdEncoding.DecodeString(str)
21 x, err := x509.ParseCertificate(decodeBytes)
22 priv, err := sm2.GenerateKey(nil)
23 if err != nil {
24 fmt.Print(err)
25 return
26 }
27 privPem, err := x509.WritePrivateKeyToPem(priv, nil)
28 if err != nil {
29 t.Fatal(err)
30 }
31 err = ioutil.WriteFile("priv.pem", privPem, os.FileMode(0644))
32 if err != nil {
33 t.Fatal(err)
34 }
35 privKey, err := x509.ReadPrivateKeyFromPem(privPem, nil)
36 if err != nil {
37 t.Fatal(err)
38 }
39 SM2P12Encrypt(x, "123", privKey, "test.p12")
40
41 }
42 func Test_P12Dncrypt(t *testing.T) {
43 certificate, priv, err := SM2P12Decrypt("test.p12", "123")
44 if err != nil {
45 t.Fatal(err)
46 }
47 privPem, _ := ioutil.ReadFile("priv.pem")
48 privatekey, err := x509.ReadPrivateKeyFromPem(privPem, nil)
49 if err != nil {
50 t.Fatal(err)
51 }
52 fmt.Println(certificate.Issuer)
53 fmt.Println(privatekey.D.Cmp(priv.D) == 0)
54 fmt.Println(priv.IsOnCurve(priv.X, priv.Y))
55 }
56
View as plain text