@@ -3,43 +3,50 @@ package base
3
3
import (
4
4
"crypto/tls"
5
5
"encoding/pem"
6
+ "io/ioutil"
7
+
6
8
logger "github.com/fideism/golang-wechat/log"
9
+ "github.com/fideism/golang-wechat/pay/config"
7
10
"golang.org/x/crypto/pkcs12"
8
- "io/ioutil"
9
11
)
10
12
11
13
// CertTLSConfig 证书 tls
12
- func CertTLSConfig (mchID , path string ) (* tls.Config , error ) {
13
- certData , err := ioutil . ReadFile ( path )
14
+ func CertTLSConfig (mchID string , certCfg config. Cert ) (* tls.Config , error ) {
15
+ certData , err := getCertByte ( certCfg )
14
16
if err != nil {
15
17
return nil , err
16
18
}
17
19
18
20
blocks , err := pkcs12 .ToPEM (certData , mchID )
21
+ if err != nil {
22
+ return nil , err
23
+ }
19
24
20
25
defer func () {
21
26
if x := recover (); x != nil {
22
27
logger .Entry ().WithField ("recover err" , x ).Error ("recover" )
23
28
}
24
29
}()
25
30
26
- if err != nil {
27
- return nil , err
28
- }
29
-
30
31
var pemData []byte
31
32
for _ , b := range blocks {
32
33
pemData = append (pemData , pem .EncodeToMemory (b )... )
33
34
}
34
35
35
- pem , err := tls .X509KeyPair (pemData , pemData )
36
+ keyPair , err := tls .X509KeyPair (pemData , pemData )
36
37
if err != nil {
37
38
return nil , err
38
39
}
39
40
40
- config := & tls.Config {
41
- Certificates : []tls.Certificate {pem },
41
+ return & tls.Config {
42
+ Certificates : []tls.Certificate {keyPair },
43
+ }, nil
44
+ }
45
+
46
+ func getCertByte (certCfg config.Cert ) ([]byte , error ) {
47
+ if len (certCfg .Content ) > 0 {
48
+ return certCfg .Content , nil
42
49
}
43
50
44
- return config , nil
51
+ return ioutil . ReadFile ( certCfg . Path )
45
52
}
0 commit comments