72 lines
2.0 KiB
Markdown
72 lines
2.0 KiB
Markdown
# jwk-to-pem
|
|
|
|
[](https://travis-ci.org/Brightspace/node-jwk-to-pem) [](https://coveralls.io/r/Brightspace/node-jwk-to-pem)
|
|
|
|
Convert a [json web key][jwk] to a PEM for use by OpenSSL or `crytpo`.
|
|
|
|
## Install
|
|
```sh
|
|
npm install jwk-to-pem --save
|
|
```
|
|
|
|
## Usage
|
|
```js
|
|
var jwkToPem = require('jwk-to-pem'),
|
|
jwt = require('jsonwebtoken');
|
|
|
|
var jwk = { kty: 'EC', crv: 'P-256', x: '...', y: '...' },
|
|
pem = jwkToPem(jwk);
|
|
|
|
jwt.verify(token, pem);
|
|
```
|
|
|
|
### Support
|
|
|
|
key type | support level
|
|
---------|--------------
|
|
RSA | all RSA keys
|
|
EC | _P-256_, _P-384_, and _P-521_ curves
|
|
|
|
### API
|
|
|
|
---
|
|
|
|
#### `jwkToPem(Object jwk[, Object options])` -> `String`
|
|
|
|
The first parameter should be an Object representing the jwk, it may be public
|
|
or private. By default, either of the two will be made into a public PEM. The
|
|
call will throw if the input jwk is malformed or does not represent a valid
|
|
key.
|
|
|
|
##### Option: private `Boolean` _(false)_
|
|
|
|
You may optionally specify that you would like a private PEM. This can be done
|
|
by passing `true` to the `private` option. The call will throw if the necessary
|
|
private parameters are not available.
|
|
|
|
|
|
## Contributing
|
|
|
|
1. **Fork** the repository. Committing directly against this repository is
|
|
highly discouraged.
|
|
|
|
2. Make your modifications in a branch, updating and writing new unit tests
|
|
as necessary in the `spec` directory.
|
|
|
|
3. Ensure that all tests pass with `npm test`
|
|
|
|
4. `rebase` your changes against master. *Do not merge*.
|
|
|
|
5. Submit a pull request to this repository. Wait for tests to run and someone
|
|
to chime in.
|
|
|
|
### Code Style
|
|
|
|
This repository is configured with [EditorConfig][EditorConfig] and
|
|
[ESLint][ESLint] rules.
|
|
|
|
[algs]: https://tools.ietf.org/html/rfc7518#section-3.1
|
|
[jwk]: https://tools.ietf.org/html/rfc7517
|
|
[EditorConfig]: http://editorconfig.org/
|
|
[ESLint]: http://eslint.org
|