AES Encryption

AesEncryption is an implementation of the Encryption interface, offering Advanced Encryption Standard (AES) encryption and decryption services. It uses the Galois/Counter Mode (GCM) of operation which is suitable for encrypting individual files or strings of data.


For proper functioning, an AES secret key needs to be either generated or imported into the AesEncryption class. Once set up, you can utilize the class methods to encrypt and decrypt data using the AES-GCM mechanism.

Note: If you're integrating AesEncryption with EncryptionHandler, ensure that the secret key is either generated or imported in the AesEncryption instance beforehand. Otherwise, it won't be possible to encrypt/decrypt data.


Below is a demonstration of how to use the AesEncryption class.

import { AesEncryption } from '@4thtech-sdk/encryption';
import { arrayBufferToString, stringToArrayBuffer } from '@4thtech-sdk/utils';

// Create an instance of AesEncryption
const aesEncryption = new AesEncryption();

// Generate a secret key
await aesEncryption.generateSecretKey();

// Export the generated secret key
const exportedSecretKeyHex = await aesEncryption.exportSecretKey();

// Or import an existing secret key
// const secretKeyHex = 'YOUR_SECRET_KEY_IN_HEX';
// await aesEncryption.importSecretKey(secretKeyHex);

// Or use the static method to create an AesEncryption instance from a secret key
// const aesEncryption = await AesEncryption.fromSecretKey(secretKeyHex);

// Encrypt data
const plainData = stringToArrayBuffer('Your data to be encrypted');
const encryptedData = await aesEncryption.encrypt(plainData);

// Decrypt data
const decryptedDataBuffer = await aesEncryption.decrypt(encryptedData);
const decryptedData = arrayBufferToString(decryptedDataBuffer);