jsec: secure your JSON
With the jsec package you can easily encrypt, sign, and base64-url encode any JSON-serializable data. Encoded data can be safely transmitted through untrusted channels or persisted.
Key features:
- You can use any signature and encryption algorithm, as long as it is HMAC-SHA256 and AES-256-CBC, respectively.
- You can maintain a set of accepted signature/encryption keysets which helps arrange key rollover.
- Encrypted and signed data is base64-url encoded for ease of trasmission over HTTP.
Installation
npm install jsec
Encoding
var crypto = ;var jsec = ; var keyset = // keyset identifier id: '1' // signature key - any length skey: crypto // encryption key - must be 32 bytes ekey: crypto; // payload to protect - any JSON-serializable structurevar payload = hello: 'world' foo: 12; console;
Decoding
var jsec = ; // map of accepted keysetsvar keysets = '1': // signature key - same as before skey: ... // encryption key - must be 32 bytes and same as before ekey: ... '2': // ... another accepted keyset ; var encoded = ... // the base64-url encoded string console; // returns an object with 2 properties: // .id - the keyset id used to decode the payload// .payload - JSON-deserialized plaintext payload