0.1.5 • Published 1 year ago

jwk-encrypt v0.1.5

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

jwk-encrypt

Encrypt and decrypt your data using JSON Web Key (JWK). Implemented using Web Crypto Api, RSA-OAEP, AES-CTR.

Encrypt / decrypt message with JWK

import { encryptText, decryptText } from "jwk-encrypt"
 
const encryptedMessage = await encryptText(jwk, "Message to encrypt");
const originalMessage = await decryptText(jwk, encryptedMessage);

jwk is an object in JWK format like

{
  "kty": "RSA",
  "n": "ws-5Ln...",
  "e": "AQAB",
  "d": "L4QdBe...",
  "p": "8uNw393yPhDyf9...",
  "q": "zVPjt08rxLgZ...",
  "dp": "5tFNSvFYa...",
  "dq": "BcCP5J...",
  "qi": "StxIGos3..."
}

The message will be encrypted with random 256-bit key using AES-CTR algorithm. The key itself will be encrypted using RSA-OAEP with the public part of the key from provided JWK. As a result it returns combination of a counter (16 bytes), the encrypted with RSA random key (512 bytes) and the encrypted content.

Encrypt / decrypt data with JWK

import { encrypt, decrypt } from "jwk-encrypt"
 
const encryptedData = await encrypt(jwk, data); 
const originalData = await decrypt(jwk, encryptedData);

Scripts

In the project directory, you can run:

yarn start

Demo UI to play with the encryption

yarn build

Builds the library for production to the dist folder.