in pkg/internal/token/clientcertcredential.go [137:172]
func parseKeyPairFromPEMBlock(pemBlock []byte) (*x509.Certificate, *rsa.PrivateKey, error) {
certPEM, keyPEM := splitPEMBlock(pemBlock)
privateKey, err := parseRsaPrivateKey(keyPEM)
if err != nil {
return nil, nil, err
}
found := false
var cert *x509.Certificate
for {
var certBlock *pem.Block
var err error
certBlock, certPEM = pem.Decode(certPEM)
if certBlock == nil {
break
}
cert, err = x509.ParseCertificate(certBlock.Bytes)
if err != nil {
return nil, nil, fmt.Errorf("unable to parse certificate: %w", err)
}
certPublicKey, ok := cert.PublicKey.(*rsa.PublicKey)
if ok && isPublicKeyEqual(certPublicKey, &privateKey.PublicKey) {
found = true
break
}
}
if !found {
return nil, nil, fmt.Errorf("unable to find a matching public certificate")
}
return cert, privateKey, nil
}