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.
- The project depends on
node-jose
by Cisco. node-jose
does 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.
npm install jose-simple
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
})
})
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
})
Branch | Status | Coverage | Audit | Comment |
---|---|---|---|---|
develop |
Work in progress | |||
main |
Latest release |
- NodeJS, I use
nvm
to manage Node versions —brew install nvm
.
npm test
— runs the unit tests. The tests give an example of how to create key pairs too. (Leverages thecrypto.generateKeyPair
libraries introduced in Node10.12.0
.)npm run test:unit:cov
— runs the unit tests with code coverage
npm run lint
Contributions are welcome. Please see CONTRIBUTING for more details.