Skip to content

Commit 8be8fcc

Browse files
committed
Refactor ReadPrivateKeyFromPem, WritePrivateKeytoPem
Split File IO section out from func Add interop_test.go Add TestLoadFromPKUGM to load privateKeyPem from pku-gm Part ot issue Hyperledger-TWGC#7 Signed-off-by: davidliu <[email protected]>
1 parent 301c84d commit 8be8fcc

File tree

5 files changed

+60
-37
lines changed

5 files changed

+60
-37
lines changed

sm2/sm2.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,6 @@ var (
3434
default_uid = []byte{0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38}
3535
)
3636

37-
const (
38-
aesIV = "IV for <SM2> CTR"
39-
)
40-
4137
type PublicKey struct {
4238
elliptic.Curve
4339
X, Y *big.Int

sm2/sm2_test.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,17 @@ func TestSm2(t *testing.T) {
4545
}
4646
fmt.Printf("clear text = %s\n", d1)
4747

48-
msg, _ = ioutil.ReadFile("ifile") // 从文件读取数据
49-
sign, err := priv.Sign(rand.Reader, msg,nil) // 签名
48+
msg, _ = ioutil.ReadFile("ifile") // 从文件读取数据
49+
sign, err := priv.Sign(rand.Reader, msg, nil) // 签名
5050
if err != nil {
5151
t.Fatal(err)
5252
}
53-
err = ioutil.WriteFile("ofile", sign, os.FileMode(0644))
53+
54+
err = ioutil.WriteFile("TestResult", sign, os.FileMode(0644))
5455
if err != nil {
5556
t.Fatal(err)
5657
}
57-
signdata, _ := ioutil.ReadFile("ofile")
58+
signdata, _ := ioutil.ReadFile("TestResult")
5859
ok := priv.Verify(msg, signdata) // 密钥验证
5960
if ok != true {
6061
fmt.Printf("Verify error\n")
@@ -80,7 +81,7 @@ func BenchmarkSM2(t *testing.B) {
8081
}
8182
t.ResetTimer()
8283
for i := 0; i < t.N; i++ {
83-
sign, err := priv.Sign(nil,msg, nil) // 签名
84+
sign, err := priv.Sign(nil, msg, nil) // 签名
8485
if err != nil {
8586
t.Fatal(err)
8687
}
@@ -101,12 +102,12 @@ func TestKEB2(t *testing.T) {
101102
0x54, 0x37, 0xA5, 0x93, 0x56, 0xB8, 0x23, 0x38,
102103
0xEA, 0xAD, 0xDA, 0x6C, 0xEB, 0x19, 0x90, 0x88,
103104
0xF1, 0x4A, 0xE1, 0x0D, 0xEF, 0xA2, 0x29, 0xB5}
104-
raBuf := []byte{0XD4, 0XDE, 0X15, 0X47, 0X4D, 0XB7, 0X4D, 0X06,
105-
0X49, 0X1C, 0X44, 0X0D, 0X30, 0X5E, 0X01, 0X24,
106-
0X00, 0X99, 0X0F, 0X3E, 0X39, 0X0C, 0X7E, 0X87,
107-
0X15, 0X3C, 0X12, 0XDB, 0X2E, 0XA6, 0X0B, 0XB3}
105+
raBuf := []byte{0xD4, 0xDE, 0x15, 0x47, 0x4D, 0xB7, 0x4D, 0x06,
106+
0x49, 0x1C, 0x44, 0x0D, 0x30, 0x5E, 0x01, 0x24,
107+
0x00, 0x99, 0x0F, 0x3E, 0x39, 0x0C, 0x7E, 0x87,
108+
0x15, 0x3C, 0x12, 0xDB, 0x2E, 0xA6, 0x0B, 0xB3}
108109

109-
rbBuf := []byte{0X7E, 0x07, 0x12, 0x48, 0x14, 0xB3, 0x09, 0x48,
110+
rbBuf := []byte{0x7E, 0x07, 0x12, 0x48, 0x14, 0xB3, 0x09, 0x48,
110111
0x91, 0x25, 0xEA, 0xED, 0x10, 0x11, 0x13, 0x16,
111112
0x4E, 0xBF, 0x0F, 0x34, 0x58, 0xC5, 0xBD, 0x88,
112113
0x33, 0x5C, 0x1F, 0x9D, 0x59, 0x62, 0x43, 0xD6}

x509/interop_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package x509
2+
3+
import (
4+
"testing"
5+
)
6+
7+
func TestLoadFromPKUGM(t *testing.T) {
8+
var privKeyPem = `
9+
-----BEGIN PRIVATE KEY-----
10+
MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQgELPz2EG+YY2QcdqF
11+
PMgqUC93FH9BiAq3XbLnT7C2KLmhRANCAAQqsrdHSoNTOLHNHaKrzb+9a2dbTIgZ
12+
skZ8Abgw90kUUkSk4zGTLgyHbYhxUuZbW5daOwC8DOpruHqBW5TvoNfe
13+
-----END PRIVATE KEY-----
14+
`
15+
_, err := ReadPrivateKeyFromPem([]byte(privKeyPem), nil)
16+
if err != nil {
17+
t.Fatal(err)
18+
}
19+
}

x509/utils.go

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,21 @@ import (
1313
"os"
1414
)
1515

16-
func ReadPrivateKeyFromPem(FileName string, pwd []byte) (*sm2.PrivateKey, error) {
17-
data, err := ioutil.ReadFile(FileName)
18-
if err != nil {
19-
return nil, err
20-
}
16+
func ReadPrivateKeyFromPem(privateKeyPem []byte, pwd []byte) (*sm2.PrivateKey, error) {
2117
var block *pem.Block
22-
block, _ = pem.Decode(data)
18+
block, _ = pem.Decode(privateKeyPem)
2319
if block == nil {
2420
return nil, errors.New("failed to decode private key")
2521
}
2622
priv, err := ParsePKCS8PrivateKey(block.Bytes, pwd)
2723
return priv, err
2824
}
2925

30-
func WritePrivateKeytoPem(FileName string, key *sm2.PrivateKey, pwd []byte) (err error) {
26+
func WritePrivateKeytoPem(key *sm2.PrivateKey, pwd []byte) ([]byte, error) {
3127
var block *pem.Block
3228
der, err := MarshalSm2PrivateKey(key, pwd)
3329
if err != nil {
34-
return err
30+
return nil, err
3531
}
3632
if pwd != nil {
3733
block = &pem.Block{
@@ -45,18 +41,7 @@ func WritePrivateKeytoPem(FileName string, key *sm2.PrivateKey, pwd []byte) (err
4541
}
4642
}
4743
certPem := pem.EncodeToMemory(block)
48-
file, err := os.Create(FileName)
49-
if err != nil {
50-
return err
51-
}
52-
defer func() {
53-
err = file.Close()
54-
}()
55-
_, err = file.Write(certPem)
56-
if err != nil {
57-
return err
58-
}
59-
return nil
44+
return certPem, nil
6045
}
6146

6247
func ReadPublicKeyFromPem(FileName string) (*sm2.PublicKey, error) {
@@ -71,7 +56,7 @@ func ReadPublicKeyFromPem(FileName string) (*sm2.PublicKey, error) {
7156
return ParseSm2PublicKey(block.Bytes)
7257
}
7358

74-
func WritePublicKeytoPem(FileName string, key *sm2.PublicKey) (err error) {
59+
func WritePublicKeytoPem(FileName string, key *sm2.PublicKey) error {
7560
der, err := MarshalSm2PublicKey(key)
7661
if err != nil {
7762
return err

x509/x509_test.go

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ package x509
1717

1818
import (
1919
"crypto/x509/pkix"
20+
"io/ioutil"
2021
"net"
22+
"os"
2123

2224
"encoding/asn1"
2325
"fmt"
@@ -32,7 +34,23 @@ func TestX509(t *testing.T) {
3234
if err != nil {
3335
t.Fatal(err)
3436
}
35-
err = WritePrivateKeytoPem("priv.pem", priv, nil) // 生成密钥文件
37+
38+
privPemFile, err := os.Create("priv.pem")
39+
if err != nil {
40+
t.Fatal(err)
41+
}
42+
defer func() {
43+
err = privPemFile.Close()
44+
if err != nil {
45+
t.Fatal(err)
46+
}
47+
}()
48+
49+
certPem, err := WritePrivateKeytoPem(priv, nil) // 生成密钥文件
50+
if err != nil {
51+
t.Fatal(err)
52+
}
53+
_, err = privPemFile.Write(certPem)
3654
if err != nil {
3755
t.Fatal(err)
3856
}
@@ -41,7 +59,11 @@ func TestX509(t *testing.T) {
4159
if err != nil {
4260
t.Fatal(err)
4361
}
44-
privKey, err := ReadPrivateKeyFromPem("priv.pem", nil) // 读取密钥
62+
privPem, err := ioutil.ReadFile("priv.pem")
63+
if err != nil {
64+
t.Fatal(err)
65+
}
66+
privKey, err := ReadPrivateKeyFromPem(privPem, nil) // 读取密钥
4567
if err != nil {
4668
t.Fatal(err)
4769
}

0 commit comments

Comments
 (0)