1.0.0 • Published 3 years ago

@naluri/naluri-keymaker v1.0.0

Weekly downloads
2
License
MIT
Repository
-
Last release
3 years ago

The Keymaker

This package contains a library to encrypt - decrypt a message that has to be sent over the internet.

Installation

Using npm:

npm install @naluri-hidup/keymaker

Using yarn:

yarn add @naluri-hidup/keymaker

Usage

Import the library using:

import { Keymaker } from "@naluri-hidup/keymaker";

Public - Private Key Asymmetric Encryption

This module uses TweetNaCL package.

const keymaker = new Keymaker(Keymaker.random(32));
const encrypted = keymaker.encrypt(message);
const decrypted = keymaker.decrypt(encrypted);

NOTE: The master key SHOULD be 32 char length.

Or if you prefer NOT to use passphrased key pair, use the static method instead:

const aliceKeyPair = Keymaker.keyPair();
const bobKeyPair = Keymaker.keyPair();
const message = Keymaker.random(128);
// On Alice's side
const encrypted = Keymaker.encrypt(
  message,
  Keymaker.encodeBase64(bobKeyPair.publicKey),
  Keymaker.encodeBase64(aliceKeyPair.secretKey)
);
// On Bob's side
const decrypted = Keymaker.decrypt(
  encrypted,
  Keymaker.encodeBase64(aliceKeyPair.publicKey),
  Keymaker.encodeBase64(bobKeyPair.secretKey)
);
// decrypted === message

Bcrypt

This module uses bcrypt package.

const password = await Keymaker.hash("plain-password");
const isValid = await Keymaker.validate("plain-password", password); // => "true"

You may define the bcrypt rounds by supplying second argument. By default, it uses 8 rounds.

const password = await Keymaker.hash("plain-password", 16); // 16 rounds

Additional

You can generate an random string using this package.

const random = Keymaker.random(16); // Generate 16 characters random string
const randomNumeric = Keymaker.random(16, "numeric"); // Generate 16 characters numeric string

See the available type of randomness here.

Password Generator

You can generate a password using this package by doing:

const password = Keymaker.generatePassword(); // Generate 8 character secure password

The password criteria is:

  • Should be consist of more than or equal to 8 characters
  • Has minimal one uppercase alphabet ([A-Z])
  • Has minimal one lowercase alphabet ([a-z])
  • Has minimal one numeric character ([0-9])
  • Has minimal one special character ([\?\-])