1.1.5 • Published 8 months ago

@andgohq/cassl v1.1.5

Weekly downloads
-
License
MIT
Repository
-
Last release
8 months ago

CASSL: Configurable Authenticated Secret Sharing Library

Now internal usage only.

Supported platform: NodeJs Supported mode: MAC-SSS, SMAC-SSS, SSS, SSS-MAC, SSS-SMAC

Install

npm install @andgohq/cassl

Usage

import { split, combine, genKeyPair, type NONCE_BYTES } from "@andgohq/cassl";

const MODE = "AEAD-SSS";
const data = Buffer.from("hello, world", "utf8");
const keyPair = genKeyPair();
const nonce = Buffer.alloc(NONCE_BYTES);

// split data into 5 shares, 3 of them are required to recover the data
const shares = split(MODE, data, 5, 3, nonce, keyPair.publicKey);
// combine 3 shares to recover the data
const recovered = combine(
  MODE,
  shares.slice(0, 3),
  nonce,
  keyPair.secretKey
).toString("utf8");

console.log(recovered === "hello, world"); // true

Environment Variables

  • CASSL_LOG_LEVEL: default=info, the log level.
  • CASSL_LOG_FILE: when set, the log will be written to the file.
  • CASSL_BUFFER_BYTES: default=10MB, the size of the buffer to store the data.
  • CASSL_CONTROL_CHUNK_BYTES: default=512KB, the size of the control chunk.
  • CASSL_HIGH_WATER_MARK: default=0, the high water mark of the buffer.

Key Pair

In the above, we used genKeyPair(). Alternatevely, we can also generate key pair using openssl.

openssl genpkey -algorithm x25519 -out x25519-priv.pem
openssl pkey -in x25519-priv.pem -pubout -out x25519-pub.pem

After that, we can import the pem file. In NodeJs, we can use crypto.createPrivateKey() and crypto.createPublicKey() to import the pem file.

Note that the x25519 algorithm is not supported by the openssl version shipped with macOS.

Development

# install dependencies
npm install

# test
npm run test

# test with long data
npm run test:long

# build
npm run build

# publish
npm publish

Notes

  • Use globalThis.process.env to avoid the hardcoding by parcel builder.
1.1.1

9 months ago

1.1.0

9 months ago

1.1.5

8 months ago

1.1.4

8 months ago

1.1.3

8 months ago

1.1.2

8 months ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago