INNER CODE UNIT · Go
parseCABundle
go-piv/go-ykpiv · attestation_test.go:158
func parseCABundle(bundle [][]byte) (x509.VerifyOptions, error) {
options := x509.VerifyOptions{
Intermediates: x509.NewCertPool(),
Roots: x509.NewCertPool(),
}
for _, certBytes := range bundle {
parsed, _ := pem.Decode(certBytes)
certificate, err := x509.ParseCertificate(parsed.Bytes)
if err != nil {
return x509.VerifyOptions{}, err
}
if bytes.Equal(certificate.RawIssuer, certificate.RawSubject) {
options.Roots.AddCert(certificate)
} else {
options.Intermediates.AddCert(certificate)
}
}