Skip to content

Latest commit

 

History

History
137 lines (110 loc) · 3.21 KB

README.md

File metadata and controls

137 lines (110 loc) · 3.21 KB

@probot/get-private-key

Get private key from a file path, environment variables, or a *.pem file in the current working directory

@latest Build Status

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

import { Probot } from "probot";
import { getPrivateKey } from "@probot/get-private-key";

Important

As we use conditional exports, you will need to adapt your tsconfig.json by setting "moduleResolution": "node16", "module": "node16".

See the TypeScript docs on package.json "exports".
See this helpful guide on transitioning to ESM from @sindresorhus

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)

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.

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

const privateKey = getPrivateKey({
  env: {
    PRIVATE_KEY: "-----BEGIN RSA PRIVATE KEY-----\n...",
  },
});

LICENSE

ISC