main: Use common PEM parsing

* Make better use of context logger
* Fixes a compiler warning about len(bytes) and comparing to nil

Signed-off-by: Andy Doan <andy@foundries.io>
This commit is contained in:
Andy Doan
2023-01-17 20:48:24 -06:00
parent 2b58d6f2e7
commit 40d2c1052a

View File

@@ -96,14 +96,7 @@ func main() {
}
func loadCert(log zerolog.Logger, fileName string) *x509.Certificate {
bytes, err := os.ReadFile(fileName)
if err != nil {
log.Fatal().Err(err).Msg("Can't read certificate")
}
block, extra := pem.Decode(bytes)
if extra != nil && len(extra) > 0 {
log.Fatal().Msgf("Can't parse CA key file. Extra bytes: %s", string(extra))
}
block := loadPem(log, fileName)
cert, err := x509.ParseCertificate(block.Bytes)
if err != nil {
log.Fatal().Err(err).Msg("Can't parse certificate")
@@ -112,17 +105,22 @@ func loadCert(log zerolog.Logger, fileName string) *x509.Certificate {
}
func loadKey(log zerolog.Logger, keyFile string) *ecdsa.PrivateKey {
bytes, err := os.ReadFile(keyFile)
if err != nil {
log.Fatal().Err(err).Msg("Can't read CA key file")
}
block, extra := pem.Decode(bytes)
if extra != nil && len(extra) > 0 {
log.Fatal().Msgf("Can't parse CA key file. Extra bytes: %s", string(extra))
}
block := loadPem(log, keyFile)
key, err := x509.ParseECPrivateKey(block.Bytes)
if err != nil {
log.Fatal().Err(err).Msg("Can't parse CA key file")
}
return key
}
func loadPem(log zerolog.Logger, fileName string) *pem.Block {
bytes, err := os.ReadFile(fileName)
if err != nil {
log.Fatal().Err(err).Msg("Can't read file")
}
block, extra := pem.Decode(bytes)
if len(extra) > 0 {
log.Fatal().Str("file", fileName).Bytes("extra", extra).Msg("Can't parse")
}
return block
}