symcryptor
v1.0.2
Published
SymCryptor allows you to easy use a symmetric encryption (with AES-CTR-256) and a signature method (with KMAC-256)
Downloads
19
Maintainers
Readme
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 bytesbytes
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 hashkey
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 encryptkey
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 datacustomization
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 decryptkey
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