{"record":{"id":"a87d8de970f7fbe1","repo":"github/github-mcp-server","slug":"parsing-private-key-want-pkcs-1-or-pkcs-8-rsa","errorCode":null,"errorMessage":"parsing private key (want PKCS#1 or PKCS#8 RSA): %w","messagePattern":"parsing private key \\(want PKCS#1 or PKCS#8 RSA\\): %w","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/githubapp/githubapp.go","lineNumber":74,"sourceCode":"\tcase len(c.PrivateKeyPEM) == 0:\n\t\treturn errors.New(\"GitHub App private key is required (GITHUB_APP_PRIVATE_KEY_PATH or GITHUB_APP_PRIVATE_KEY)\")\n\tcase c.BaseRESTURL == \"\":\n\t\treturn errors.New(\"GitHub App REST base URL is required\")\n\t}\n\treturn nil\n}\n\nfunc parsePrivateKey(pemBytes []byte) (*rsa.PrivateKey, error) {\n\tblock, _ := pem.Decode(pemBytes)\n\tif block == nil {\n\t\treturn nil, errors.New(\"no PEM block found in private key\")\n\t}\n\tif key, err := x509.ParsePKCS1PrivateKey(block.Bytes); err == nil {\n\t\treturn key, nil\n\t}\n\tparsed, err := x509.ParsePKCS8PrivateKey(block.Bytes)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"parsing private key (want PKCS#1 or PKCS#8 RSA): %w\", err)\n\t}\n\tkey, ok := parsed.(*rsa.PrivateKey)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"private key is %T, want an RSA key\", parsed)\n\t}\n\treturn key, nil\n}\n\nfunc mintJWT(appID string, privateKey *rsa.PrivateKey, now time.Time) (string, error) {\n\theader := map[string]string{\"alg\": \"RS256\", \"typ\": \"JWT\"}\n\tclaims := map[string]any{\n\t\t\"iat\": now.Add(-clockSkew).Unix(),\n\t\t\"exp\": now.Add(jwtLifetime).Unix(),\n\t\t\"iss\": appID,\n\t}\n\n\theaderJSON, err := json.Marshal(header)\n\tif err != nil {","sourceCodeStart":56,"sourceCodeEnd":92,"githubUrl":"https://github.com/github/github-mcp-server/blob/0ea1f775a7c73eff1bd2e25904d01136756bbfe2/internal/githubapp/githubapp.go#L56-L92","documentation":"Error \"parsing private key (want PKCS#1 or PKCS#8 RSA): %w\" thrown in github/github-mcp-server.","triggerScenarios":"Thrown at internal/githubapp/githubapp.go:74 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":"0ea1f775a7c73eff1bd2e25904d01136756bbfe2","analyzedAt":"2026-08-15T18:10:19.804Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}