{"record":{"id":"7af938e2958839b4","repo":"goharbor/harbor","slug":"invalid-ca-certificate-w","errorCode":null,"errorMessage":"invalid CA certificate: %w","messagePattern":"invalid CA certificate: %w","errorType":"validation","errorClass":null,"httpStatus":400,"severity":"error","filePath":"src/common/http/transport.go","lineNumber":121,"sourceCode":"func normalizePEM(cert string) string {\n\tcert = strings.TrimSpace(cert)\n\tcert = strings.ReplaceAll(cert, \"\\r\\n\", \"\\n\")\n\tcert = strings.ReplaceAll(cert, \"\\r\", \"\\n\")\n\treturn cert\n}\n\n// ValidateCACertificate validates whether the provided CA certificate string\n// contains at least one valid PEM-encoded x509 certificate.\nfunc ValidateCACertificate(caCert string) error {\n\tcaCert = normalizePEM(caCert)\n\tif caCert == \"\" {\n\t\treturn nil\n\t}\n\n\t// Attempt to parse one or more certificates from the provided PEM\n\tcerts, err := parseCertificatesFromPEM(caCert)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"invalid CA certificate: %w\", err)\n\t}\n\n\tif len(certs) == 0 {\n\t\treturn errors.New(\"invalid CA certificate: no valid certificates found in PEM data\")\n\t}\n\n\treturn nil\n}\n\n// parseCertificatesFromPEM decodes all PEM blocks and parses certificates.\nfunc parseCertificatesFromPEM(pemData string) ([]*x509.Certificate, error) {\n\tvar certs []*x509.Certificate\n\trest := []byte(pemData)\n\n\tfor {\n\t\tvar block *pem.Block\n\t\tblock, rest = pem.Decode(rest)\n\t\tif block == nil {","sourceCodeStart":103,"sourceCodeEnd":139,"githubUrl":"https://github.com/goharbor/harbor/blob/7b2fd08cc568955cca339afeefab27372840d936/src/common/http/transport.go#L103-L139","documentation":"Error \"invalid CA certificate: %w\" thrown in goharbor/harbor.","triggerScenarios":"Thrown at src/common/http/transport.go:121 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"7b2fd08cc568955cca339afeefab27372840d936","analyzedAt":"2026-08-16T00:00:10.961Z","schemaVersion":2},"datasetVersion":"2026-08-16T03:17:38.424Z"}