...

Source file src/github.com/tjfoc/gmsm/pkcs12/pkcs12_test.go

Documentation: github.com/tjfoc/gmsm/pkcs12

     1  // Copyright 2015 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     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") //根据证书与私钥生成带密码的p12证书
    40  
    41  }
    42  func Test_P12Dncrypt(t *testing.T) {
    43  	certificate, priv, err := SM2P12Decrypt("test.p12", "123") //根据密码读取P12证书
    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