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)
		}
	}

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…