chore(openvpn/extract): simplify PEM extract
This commit is contained in:
@@ -1,33 +1,23 @@
|
|||||||
package extract
|
package extract
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/base64"
|
||||||
"encoding/pem"
|
"encoding/pem"
|
||||||
"errors"
|
"errors"
|
||||||
"regexp"
|
"fmt"
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
errPEMDecode = errors.New("cannot decode PEM encoded block")
|
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) {
|
func PEM(b []byte) (encodedData string, err error) {
|
||||||
pemBlock, _ := pem.Decode(b)
|
pemBlock, _ := pem.Decode(b)
|
||||||
if pemBlock == nil {
|
if pemBlock == nil {
|
||||||
return "", errPEMDecode
|
return "", fmt.Errorf("%w", errPEMDecode)
|
||||||
}
|
}
|
||||||
|
|
||||||
encodedBytes := pem.EncodeToMemory(pemBlock)
|
der := pemBlock.Bytes
|
||||||
encodedData = string(encodedBytes)
|
encodedData = base64.StdEncoding.EncodeToString(der)
|
||||||
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
|
return encodedData, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package extract
|
package extract
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
@@ -24,6 +25,14 @@ func Test_PEM(t *testing.T) {
|
|||||||
errWrapped: errPEMDecode,
|
errWrapped: errPEMDecode,
|
||||||
errMessage: "cannot decode PEM encoded block",
|
errMessage: "cannot decode PEM encoded block",
|
||||||
},
|
},
|
||||||
|
"valid data with extras": {
|
||||||
|
b: bytes.Join([][]byte{
|
||||||
|
{1, 2, 3},
|
||||||
|
[]byte(validCertPEM),
|
||||||
|
{4, 5, 6},
|
||||||
|
}, []byte("\n")),
|
||||||
|
encodedData: validCertData,
|
||||||
|
},
|
||||||
"valid data": {
|
"valid data": {
|
||||||
b: []byte(validCertPEM),
|
b: []byte(validCertPEM),
|
||||||
encodedData: validCertData,
|
encodedData: validCertData,
|
||||||
|
|||||||
Reference in New Issue
Block a user