Skip to content

Commit c347e89

Browse files
mmiranda96timothytrippel
authored andcommitted
Always convert DICE and EXT ICA certs to PEM
1 parent b52e277 commit c347e89

File tree

1 file changed

+32
-2
lines changed

1 file changed

+32
-2
lines changed

util/rr_parser/rr_parser.go

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"encoding/csv"
1010
"encoding/hex"
1111
"encoding/json"
12+
"encoding/pem"
1213
"errors"
1314
"flag"
1415
"fmt"
@@ -306,6 +307,27 @@ func writeFile(path string, data []byte) error {
306307
return nil
307308
}
308309

310+
// possiblyConvertToPEM converts a DER-encoded certificate into PEM-encoded.
311+
// If the certificate is already PEM-encoded, it returns the original value.
312+
func possiblyConvertToPEM(data []byte) ([]byte, error) {
313+
block, _ := pem.Decode(data)
314+
if block != nil && block.Type == "CERTIFICATE" {
315+
// Already PEM-encoded
316+
return data, nil
317+
}
318+
319+
derBlock := &pem.Block{
320+
Type: "CERTIFICATE",
321+
Bytes: data,
322+
}
323+
pemBytes := pem.EncodeToMemory(derBlock)
324+
if pemBytes == nil {
325+
return nil, fmt.Errorf("failed to encode DER to PEM")
326+
}
327+
328+
return pemBytes, nil
329+
}
330+
309331
func verifyCertificate(rootCA, intermediateCAs, leafCert string, ignore_critical bool) error {
310332
args := []string{"verify"}
311333
if ignore_critical {
@@ -374,14 +396,22 @@ func main() {
374396
if err != nil {
375397
log.Fatalf("Failed to read DICE ICA certificate file: %v", err)
376398
}
377-
certs.diceICA = append(certs.diceICA, cert{id: flags.DiceICA, data: string(diceICABytes)})
399+
diceICAPemBytes, err := possiblyConvertToPEM(diceICABytes)
400+
if err != nil {
401+
log.Fatalf("Failed to convert DICE ICA certificate to PEM: %v", err)
402+
}
403+
certs.diceICA = append(certs.diceICA, cert{id: flags.DiceICA, data: string(diceICAPemBytes)})
378404

379405
if flags.ExtICA != "" {
380406
extICABytes, err := utils.ReadFile(flags.ExtICA)
381407
if err != nil {
382408
log.Fatalf("Failed to read external ICA certificate file: %v", err)
383409
}
384-
certs.extICA = append(certs.extICA, cert{id: flags.ExtICA, data: string(extICABytes)})
410+
extICAPemBytes, err := possiblyConvertToPEM(extICABytes)
411+
if err != nil {
412+
log.Fatalf("Failed to convert EXT ICA certificate to PEM: %v", err)
413+
}
414+
certs.extICA = append(certs.extICA, cert{id: flags.ExtICA, data: string(extICAPemBytes)})
385415
}
386416

387417
var diceICACerts strings.Builder

0 commit comments

Comments
 (0)