cert.go 646 B

1234567891011121314151617181920212223242526272829303132
  1. package crypto4go
  2. import (
  3. "crypto/x509"
  4. "encoding/pem"
  5. "errors"
  6. )
  7. const (
  8. kCertificatePrefix = "-----BEGIN CERTIFICATE-----"
  9. kCertificateSuffix = "-----END CERTIFICATE-----"
  10. )
  11. var (
  12. ErrCertificateFailedToLoad = errors.New("crypto4go: certificate failed to load")
  13. )
  14. func FormatCertificate(raw string) []byte {
  15. return formatKey(raw, kCertificatePrefix, kCertificateSuffix, 76)
  16. }
  17. func ParseCertificate(b []byte) (*x509.Certificate, error) {
  18. block, _ := pem.Decode(b)
  19. if block == nil {
  20. return nil, ErrCertificateFailedToLoad
  21. }
  22. csr, err := x509.ParseCertificate(block.Bytes)
  23. if err != nil {
  24. return nil, err
  25. }
  26. return csr, nil
  27. }