Skip to content

Commit 8513455

Browse files
committed
serverName 为key,缓存 creds
1 parent 5e23594 commit 8513455

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

kernel/network/p2p/util.go

+20-4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
defaultx509 "crypto/x509"
77
"encoding/base64"
88
"encoding/pem"
9+
"errors"
910
"io/ioutil"
1011
math_rand "math/rand"
1112
"os"
@@ -25,7 +26,20 @@ import (
2526
"github.com/xuperchain/xupercore/kernel/network/config"
2627
)
2728

29+
// serverName 为key,缓存 creds
30+
var serverNameMap = make(map[string]credentials.TransportCredentials)
31+
2832
func NewTLS(path, serviceName string) (credentials.TransportCredentials, error) {
33+
34+
if len(serviceName) < 1 {
35+
return nil, errors.New("serviceName is empty")
36+
}
37+
38+
//如果缓存中有值
39+
if creds, ok := serverNameMap[serviceName]; ok {
40+
return creds, nil
41+
}
42+
2943
bs, err := ioutil.ReadFile(filepath.Join(path, "cacert.pem"))
3044
if err != nil {
3145
return nil, err
@@ -39,7 +53,8 @@ func NewTLS(path, serviceName string) (credentials.TransportCredentials, error)
3953
if err != nil {
4054
return nil, err
4155
}
42-
if strings.Contains(strings.ToLower(x509cert.SignatureAlgorithm.String()), "sm") {
56+
57+
if strings.Contains(strings.ToLower(x509cert.SignatureAlgorithm.String()), "sm") { //国密
4358
certPool := x509.NewCertPool()
4459
ok := certPool.AppendCertsFromPEM(bs)
4560
if !ok {
@@ -51,16 +66,16 @@ func NewTLS(path, serviceName string) (credentials.TransportCredentials, error)
5166
}
5267
creds := gmcredentials.NewTLS(
5368
&tls.Config{
54-
GMSupport: &tls.GMSupport{},
69+
GMSupport: tls.NewGMSupport(),
5570
ServerName: serviceName,
5671
Certificates: []tls.Certificate{certificate, certificate},
5772
RootCAs: certPool,
5873
ClientCAs: certPool,
5974
ClientAuth: tls.RequireAndVerifyClientCert,
6075
})
76+
serverNameMap[serviceName] = creds
6177
return creds, nil
62-
} else {
63-
78+
} else { //非国密
6479
certPool := defaultx509.NewCertPool()
6580
ok := certPool.AppendCertsFromPEM(bs)
6681
if !ok {
@@ -80,6 +95,7 @@ func NewTLS(path, serviceName string) (credentials.TransportCredentials, error)
8095
ClientCAs: certPool,
8196
ClientAuth: defaulttls.RequireAndVerifyClientCert,
8297
})
98+
serverNameMap[serviceName] = creds
8399
return creds, nil
84100
}
85101

0 commit comments

Comments
 (0)