Skip to content

angy91m/symcryptor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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