UNPKG

cipherlib

Version:

AEAD Cryptographic Library

111 lines (55 loc) 3.38 kB
Cipherlib User Reference (Javascript/nodejs) April 28, 2025 rev 0.2.0 Introduction Cipherlib is an Application Programming Interface (API) for nodejs and python3. The API provides cryptographic functions (Methods and Objects) that encrypt plaintext (non-ciphered data) and decrypt ciphertext (encrypted AEAD data) generated by the API. The API supports AEAD (Authenticated Encryption with Associated Data) based on RFC 5116. AEAD provides authenticated encryption and the ability to check the integrity and authentication of additional authenticated data (AAD) that is sent without encryption (text sent in the clear). For background, early work on AEAD was initiated in 2007 with NIST's guidance in their publication 800-38D, "Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC." CipherLib supports both CCM (Cipher Counter block chaining mode) and GCM algorithms as defined in RFC 5084 and RFC 7714 with support for AES-128 and AES-256. The default is GCM AES-128 though via an option parameter can be set to preferred. (See Class Method Options below.) Audience This document is intended for software designers, architects, and programmers using Javascript programming language via nodejs. A companion version of this document is available for Python developers. API Dependencies node_module dependencies via npm use-strict module Class Library Example const CipherLib = require( 'cipherlib' ); async function main() { const cipherlib = new CipherLib.CipherLib( ); try { var Payload = await cipherlib.textEncrypt( "Hello World", { "encode":"hex" } ) } catch( err ) { console.log( err.message ); process.exit(1); }; console.log( Payload ); } main() CipherLib Class Methods Method Promise ------------------------------------------------------ ------------------- textEncrypt( plaintext, { Options: Parameter, ...} ): ( Error, Payload ) payloadDecrypt( Payload, { Options: Parameter, ...} ): ( Error, plaintext ) getAAD ( Payload, { Options: Parameter, ...} ): ( Error, AADtext ) getAuthTag ( Payload, { Options: Parameter, ...} ): ( Error, AuthTag ) authPayload( Payload, AuthTag [, AAD] ): ( Error, Boolean ) resetDefaults( { Options: Parameter, ...} ): ( Error, Boolean ) Events No generated events. Constructors/Prototypes The constructor allows setting/overriding default options. Example, sets the default masterkey file: const CipherLib = require( '../cipherlib' ); const cipherlib = new CipherLib.CipherLib( { keyfilepath: '~/mymasterkeyfile' } ); Class Objects and descriptions Object Type Description/Details ---------------- -------- ----------------------------------------------------- aad or AAD <Bytes> AEAD Associated data - Variable length (0 up to 2^32 bytes) { aad: 'text is authenticated and stored unencrypted in Payload' } AuthTag <Bytes> 16 bytes - generated by the cipher algorithm Ciphertext <Bytes> Variable lengthnciphered plaintext data (1 up to 2*32 bytes) Nonce <Bytes> 16 bytes padded per PKCS#7 Options <Object> aka method options: { optionName: 'optionParameter' } { keyfilepath: '~/mymasterkeyfile' } Payload <Object> Structure for storing AEAD data including: Nonce, Ciphertext, AAD, AuthTag