Skip to content
Jose-Simple allows the encryption and decryption of data using the JOSE (JSON Object Signing and Encryption) standard.
Branch: develop
Clone or download
Latest commit 88a3335 Oct 14, 2019


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.




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
// see also
// 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


See encrypt.js#L662

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.


Greenkeeper badge

Branch Status Coverage Comment
develop CircleCI codecov Work in progress
master CircleCI codecov Latest release


  • NodeJS — Version 10.12.0 or better is needed to run the tests as they rely on crypto.generateKeyPair.

Test it

  • npm test — runs the unit tests. The tests give an example of how to create key pairs too. (Leverages the crypto.generateKeyPair libraries introduced in Node 10.12.0.)
  • npm run test:unit:cov — runs the unit tests with code coverage
  • npm run test:mutants — runs the mutation tests

Lint it

npm run lint


Contributions are welcome. Please see CONTRIBUTING for more details.

You can’t perform that action at this time.