Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

iron-store

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

iron-store

in-memory, signed and encrypted JavaScript store

  • 1.3.5
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
4.8K
decreased by-10.36%
Maintainers
1
Weekly downloads
 
Created
Source

iron-store GitHub license Tests codecov npm

🧿 in-memory, signed and encrypted JavaScript store


This is a low-level module that you can use to implement signed and encrypted sessions using cookies for example, like next-iron-session does.

Signature and encryption is based on @hapi/iron.

Use https://1password.com/password-generator/ to generate strong passwords.

You can use multiple passwords (password rotation).

npm add iron-store

Examples

Creating a store with sealed data (encrypt):

import ironStore from "iron-store";

const store = await ironStore({
  password: "generated_complex_password_at_least_32_characters_long",
});
store.set("user", { id: 80, admin: true });
const seal = await store.seal();
//

Creating a store from previously sealed data (decrypt):

import ironStore from "iron-store";

const store = await ironStore({
  password: "generated_complex_password_at_least_32_characters_long",
  sealed: "seal_obtained_from_previous_store.seal()_call",
});
const user = store.get("user");
console.log(user);
// { id:80, admin:true }

Creating a store using multiple passwords (password rotation):

You can implement password rotation by providing an array of passwords and ids. The id can be a string (letters, numbers and _) or just a number.

The first password in the array is always the one used to seal data. All the other passwords are used to decrypt data.

Note: The id is mandatory and part of the seal, so that we can know in advance which password to use when decrypting. You need to use unique ids. You cannot reuse a id for a different password.

Note: If you started to use the string form of password, you can always move to an array of password objects. The string form of your password is internally handled as { id: 1, password }.

import ironStore from "iron-store";

const store = await ironStore({
  password: [
    {
      id: 2,
      password: "generated_complex_password_at_least_32_characters_long",
    },
    {
      id: 1,
      password: "generated_complex_password_at_least_32_characters_long",
    },
  ],
});
store.set("user", { id: 80, admin: true });
const seal = await store.seal();

API

ironStore({ [sealed], password, ttl = 0 })

store.set(name, value)

store.get([name])

store.setFlash(name, value)

store.unset(name)

store.seal()

store.clear()

FAQs

Package last updated on 16 Oct 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc