npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

multicrypt

v0.2.0

Published

A library for multi-key reversible encryption

Downloads

2

Readme

Multicrypt - multi-key encryption

Multicrypt is a library for multi-key reversible encryption. That is, it provides a simple and secure interface for encrypting a payload such that it can be decrypted by any one of a number of keys, and the payload can be shared with new keys by users with existing keys.

How It Works

Multicrypt uses an enveloped-data architecture whereby the payload is encrypted with a master key, and that master key is then encoded using each user's key.

This allows any user to decode the master key and, consequently, the payload, without having to know the master key directly.

The library is structured in such a way that discourages exposing the master key directly. In fact, your code should interact with the library, rather than the master key directly, which prevents exposing the master key at any point.

Getting Started

Here's a quick overview of how to use Multicrypt:

import { SharedValue } from 'multicrypt'

const value = 'value to be encrypted'
const keyOne = 'some key'
const keyTwo = 'some other key'

// Encode a new shared value using keyOne
const shared = await SharedValue.create<string>('key1', keyOne, value)

// Allow keyTwo to access the shared value:
await shared.addKey(keyOne, 'key2', keyTwo)

// Get the shared value:
const decodedValue = await shared.get(keyTwo)  // => 'value to be encoded'

// Set the shared value:
const encodedValue = await shared.set(keyTwo, 'override string')

// Remove "key1" from the shared value:
await shared.removeKey(keyTwo, "key1")

// Serialize the shared value securely:
const serialized = shared.toJSON()