cert.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package unionpay
  2. import (
  3. "crypto/rsa"
  4. "crypto/x509"
  5. "encoding/pem"
  6. "errors"
  7. "fmt"
  8. "io/ioutil"
  9. )
  10. // getPublicCert 获取加密证书信息
  11. func getPublicCert(filename string) (cert *x509.Certificate, data []byte, err error) {
  12. data, err = ioutil.ReadFile(filename)
  13. if err != nil {
  14. return
  15. }
  16. block, _ := pem.Decode(data)
  17. if block == nil {
  18. err = errors.New(`pem Decode error`)
  19. return
  20. }
  21. cert, err = x509.ParseCertificate(block.Bytes)
  22. return
  23. }
  24. // getPrivateCert 获取签名证书信息
  25. func getPrivateCert(filename, password string) (key *rsa.PrivateKey, cert *x509.Certificate, err error) {
  26. var (
  27. bs []byte
  28. private interface{}
  29. )
  30. bs, err = ioutil.ReadFile(filename)
  31. if err != nil {
  32. fmt.Println(err)
  33. return
  34. }
  35. //*
  36. block, _ := pem.Decode(bs)
  37. if block == nil {
  38. err = errors.New(`PrivateKey pem Decode error`)
  39. return
  40. }
  41. cert = &x509.Certificate{}
  42. private, err = x509.ParsePKCS8PrivateKey(block.Bytes)
  43. // */
  44. /*
  45. private, cert, err = pkcs12.Decode(bs, password)
  46. if err != nil {
  47. return
  48. }
  49. // */
  50. key = private.(*rsa.PrivateKey)
  51. return
  52. }