Files
gluetun/internal/openvpn/parse/pem.go
Quentin McGaw (desktop) 65ace12def Maint: internal/openvpn/parse package
- Parse PEM key data for Cyberghost and VPNUnlimited
- Add more unit tests
2021-09-08 16:40:19 +00:00

28 lines
665 B
Go

package parse
import (
"encoding/pem"
"errors"
"strings"
)
var (
errPEMDecode = errors.New("cannot decode PEM encoded block")
)
func extractPEM(b []byte, name string) (encodedData string, err error) {
name = strings.ToUpper(name) // certificate -> CERTIFICATE
pemBlock, _ := pem.Decode(b)
if pemBlock == nil {
return "", errPEMDecode
}
encodedBytes := pem.EncodeToMemory(pemBlock)
encodedData = string(encodedBytes)
encodedData = strings.ReplaceAll(encodedData, "\n", "")
encodedData = strings.TrimPrefix(encodedData, "-----BEGIN "+name+"-----")
encodedData = strings.TrimSuffix(encodedData, "-----END "+name+"-----")
return encodedData, nil
}