chore: extract.PEM replaces PEM parse functions

This commit is contained in:
Quentin McGaw
2022-06-24 23:10:00 +00:00
parent b3b6933ef4
commit 535297dcf5
9 changed files with 57 additions and 236 deletions

View File

@@ -0,0 +1,33 @@
package extract
import (
"encoding/pem"
"errors"
"regexp"
"strings"
)
var (
errPEMDecode = errors.New("cannot decode PEM encoded block")
)
var (
regexPEMBegin = regexp.MustCompile(`-----BEGIN [A-Za-z ]+-----`)
regexPEMEnd = regexp.MustCompile(`-----END [A-Za-z ]+-----`)
)
func PEM(b []byte) (encodedData string, err error) {
pemBlock, _ := pem.Decode(b)
if pemBlock == nil {
return "", errPEMDecode
}
encodedBytes := pem.EncodeToMemory(pemBlock)
encodedData = string(encodedBytes)
encodedData = strings.ReplaceAll(encodedData, "\n", "")
beginPrefix := regexPEMBegin.FindString(encodedData)
encodedData = strings.TrimPrefix(encodedData, beginPrefix)
endPrefix := regexPEMEnd.FindString(encodedData)
encodedData = strings.TrimSuffix(encodedData, endPrefix)
return encodedData, nil
}