chore(openvpn/extract): simplify PEM extract
This commit is contained in:
@@ -1,33 +1,23 @@
|
||||
package extract
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/pem"
|
||||
"errors"
|
||||
"regexp"
|
||||
"strings"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
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
|
||||
return "", fmt.Errorf("%w", 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)
|
||||
der := pemBlock.Bytes
|
||||
encodedData = base64.StdEncoding.EncodeToString(der)
|
||||
return encodedData, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user