jose-simple
jose-simple copied to clipboard
Jose-Simple allows the encryption and decryption of data using the JOSE (JSON Object Signing and Encryption) standard.
jose-simple
Proper encryption ought to be simple, and widespread.
Jose-Simple simplifies the encryption and decryption of data using the JOSE (JSON Object Signing and Encryption) standard.
Caveats
- The project depends on
node-joseby Cisco. node-josedoes not allow you to use private keys with passwords, and they have no intention of changing that.- Requires Node 10.12.0 or better if you want to run the tests. Works fine under Node 12+, and might run under versions of node going back to 8.x but no further.
Installation
npm install jose-simple
Links
Usage
const jose = require('jose-simple')
// You need a private / public JWE key pair.
// Either load them from `.pem` files, create them, or somehow acquire them.
// The private key must not have a passphrase or cypher!
// see https://github.com/cisco/node-jose/issues/69#issuecomment-236133179
// see also https://github.com/cisco/node-jose/issues/234#issuecomment-457615794
// see unit tests for a simple example.
const { encrypt, decrypt } = jose(privateKey, publicKey)
const someData = {
some: 'amazing data',
you: 'want to keep hidden',
from: 'prying eyes'
}
encrypt(someData).then(encrypted => {
console.log('encrypted', encrypted)
decrypt(encrypted).then(decrypted => {
console.log('decrypted', decrypted)
// decrypted will be the same as someData
})
})
Options
You can add encrypt options as follows:
const { encrypt, decrypt } = jose(privateKey, publicKey, {
format: 'compact'
protect: true,
// or any of the encrypt options than can be passed to JWE.createEncrypt.
// https://github.com/cisco/node-jose/blob/master/lib/jwe/encrypt.js#L660-L668
})
Development
| Branch | Status | Coverage | Audit | Comment |
|---|---|---|---|---|
develop |
Work in progress | |||
main |
Latest release |
Prerequisites
- NodeJS, I use
nvmto manage Node versions —brew install nvm.
Test it
npm test— runs the unit tests. The tests give an example of how to create key pairs too. (Leverages thecrypto.generateKeyPairlibraries introduced in Node10.12.0.)npm run test:unit:cov— runs the unit tests with code coverage
Lint it
npm run lint
Contributing
Contributions are welcome. Please see CONTRIBUTING for more details.
