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 - Iftrue
returnUint8Array
instead ofBuffer
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 - Iftrue
returnUint8Array
instead ofBuffer
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 - Iftrue
returnUint8Array
instead ofBuffer
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 - Iftrue
returnUint8Array
instead ofBuffer
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