12345678910111213141516171819202122232425262728293031323334 |
- package cert
- import (
- "crypto/tls"
- "crypto/x509"
- "encoding/pem"
- "github.com/pkg/errors"
- )
- // GetCertSnFromConfig return SerialNumber by tls.Config
- func GetCertSnFromConfig(config *tls.Config) (string, error) {
- if len(config.Certificates) == 0 || len(config.Certificates[0].Certificate) == 0 {
- return "", errors.New("certificates is empty")
- }
- return GetCertSnFromBlock(config.Certificates[0].Certificate[0])
- }
- // GetCertSnFromEncode return SerialNumber by encoded cert
- func GetCertSnFromEncode(b []byte) (string, error) {
- block, _ := pem.Decode(b)
- if block == nil {
- return "", errors.New("block is not a cert encoded")
- }
- return GetCertSnFromBlock(block.Bytes)
- }
- // GetCertSnFromBlock return SerialNumber by decode block
- func GetCertSnFromBlock(block []byte) (string, error) {
- cert, err := x509.ParseCertificate(block)
- if err != nil {
- return "", errors.Wrap(err, "ParseCertificate")
- }
- return cert.SerialNumber.String(), nil
- }
|