npm.io
1.0.2 • Published 3 years ago

symcryptor

Licence
GPL-3.0-or-later
Version
1.0.2
Deps
1
Size
42 kB
Vulns
0
Weekly
0

SymCryptor

SymCryptor allows you to easy use a symmetric encryption (with AES-CTR-256) and a signature method (with KMAC-256)

Installation

npm i symcryptor

Test

npm test

Usage

const symCryptor = require( 'symcryptor' );
( async () => {
    const clearText = 'Hello world!';

    // For hashing
    const hashSecret = await symCryptor.rndBytes( 32 ); // Return a random 256-bit Buffer
    const digest = symCryptor.getHmac( clearText, hashSecret ); // Return a 512-bit Buffer as digest

    // For encryption
    const key = await symCryptor.rndBytes( 32 ); // Key must be a Buffer or Uint8Array of 512-bit
    const encrypted = await symCryptor.encrypt( clearText, key, hashSecret ); // Return a Buffer

    // For decryption
    const decrypted = await symCryptor.decrypt( clearText, key, hashSecret ); // Return a Buffer
} )();

Methods

symCryptor.rndBytes
symCryptor.rndBytes( length: Number [, bytes: Boolean = false] )
Parameters
  • length Required - The length of random data in bytes
  • bytes Optional - If true return Uint8Array instead of Buffer on fulfillment
Return

Random Buffer | Uint8Array of selected length when Promise resolved else throw an Error

symCryptor.getHmac
symCryptor.getHmac( data: String | Buffer | Uint8Array, key: Buffer | Uint8Array [, customization: String | Buffer | Uint8Array = '' [, bytes: Boolean = false]] )
Parameters
  • data Required - The data you want hash
  • key Required - The secret key (it should be of 256-bit)
  • customization Optional - Some data you want to pass to hash algorithm (like AAD in AES-GCM)
  • bytes Optional - If true return Uint8Array instead of Buffer
Return

A 512-bit Buffer | Uint8Array as digest else throw an Error

symCryptor.encrypt
symCryptor.encrypt( data: String | Buffer | Uint8Array, key: Buffer | Uint8Array [, hashKey: Buffer | Uint8Array [, customization: String | Buffer | Uint8Array = '' [, bytes: Boolean = false]]] )
Parameters
  • data Required - The data you want to encrypt
  • key Required - The key you want to use for encryption (it must be of 256-bit)
  • hashKey Optional - The key you want to use to sign encrypted data
  • customization Optional - Some data you want to pass to hash algorithm (like AAD in AES-GCM)
  • bytes Optional - If true return Uint8Array instead of Buffer on fulfillment
Return

Buffer | Uint8Array when Promise resolved else throw an Error

symCryptor.decrypt
symCryptor.decrypt( data: Buffer | Uint8Array, key: Buffer | Uint8Array [, hashKey: Buffer | Uint8Array [, customization: String | Buffer | Uint8Array = '' [, bytes: Boolean = false]]] )
Parameters
  • data Required - The encrypted data you want to decrypt
  • key Required - The key you have to use for decryption (it must be of 256-bit)
  • hashKey Optional - The key you have to use to verify signature of encrypted data (required if data was signed)
  • customization Optional - Some data you have to pass to hash algorithm (like AAD in AES-GCM; required if it was passed during encryption)
  • bytes Optional - If true return Uint8Array instead of Buffer on fulfillment
Return

Buffer | Uint8Array when Promise resolved else throw an Error

Note

  • IV and signature are automatically added to encrypted data and removed when data will be decrypted

Keywords