https://github.com/probot/get-private-key
🛠️ Get private key from a path, environment variables, or a `*.pem` file in the current working directory
https://github.com/probot/get-private-key
Last synced: 12 months ago
JSON representation
🛠️ Get private key from a path, environment variables, or a `*.pem` file in the current working directory
- Host: GitHub
- URL: https://github.com/probot/get-private-key
- Owner: probot
- License: isc
- Created: 2020-11-18T01:18:39.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2025-02-22T02:59:58.000Z (over 1 year ago)
- Last Synced: 2025-03-22T14:59:15.014Z (about 1 year ago)
- Language: TypeScript
- Homepage:
- Size: 1 MB
- Stars: 10
- Watchers: 2
- Forks: 16
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# @probot/get-private-key
> Get private key from a file path, environment variables, or a `*.pem` file in the current working directory
[](https://www.npmjs.com/package/@probot/get-private-key)
[](https://github.com/probot/get-private-key/actions?query=workflow%3ATest)
Finds a private key through various user-(un)specified methods. Order of precedence:
1. Explicit file path option
2. `PRIVATE_KEY` environment variable or explicit `env.PRIVATE_KEY` option. The private key can optionally be base64 encoded.
3. `PRIVATE_KEY_PATH` environment variable or explicit `env.PRIVATE_KEY_PATH` option
4. Any file w/ `.pem` extension in current working dir
Supports both PKCS1 (i.e `-----BEGIN RSA PRIVATE KEY-----`) and PKCS8 (i.e `-----BEGIN PRIVATE KEY-----`).
## Usage
Browsers
`@probot/get-private-key` is not compatible with browser usage
Node
Install with npm install @probot/get-private-key
```js
import { Probot } from "probot";
import { getPrivateKey } from "@probot/get-private-key";
```
> [!IMPORTANT]
> As we use [conditional exports](https://nodejs.org/api/packages.html#conditional-exports), you will need to adapt your `tsconfig.json` by setting `"moduleResolution": "node16", "module": "node16"`.
>
> See the TypeScript docs on [package.json "exports"](https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports).
> See this [helpful guide on transitioning to ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) from [@sindresorhus](https://github.com/sindresorhus)
```js
const probot = new Probot({
appId: 123,
privateKey: getPrivateKey(),
});
```
## Options
name
type
description
options.filepath
string
Pass a path to a `*.pem` file. A relative path will be resolved to the current working directory (which you can set with the `cwd` option)
```js
const privateKey = getPrivateKey({
filepath: "private-key.pem",
});
```
options.cwd
string
Defaults to `process.cwd()`. Used to resolve the `filepath` option and used as folder to find `*.pem` files.
```js
const privateKey = getPrivateKey({
cwd: "/app/current",
});
```
options.env
object
Defaults to `process.env`. Pass `env.PRIVATE_KEY` or `env.PRIVATE_KEY_PATH` to workaround reading environment variables
```js
const privateKey = getPrivateKey({
env: {
PRIVATE_KEY: "-----BEGIN RSA PRIVATE KEY-----\n...",
},
});
```
## LICENSE
[ISC](LICENSE)