/** * Package gcm implements GCM mode for block ciphers. */ import type { AEAD } from "@stablelib/aead"; import type { BlockCipher } from "@stablelib/blockcipher"; export declare const NONCE_LENGTH = 12; export declare const TAG_LENGTH = 16; /** * Galois/Counter Mode AEAD * * Defined in NIST SP-800-38D. * * This implementation only supports 12-byte nonces and 16-byte tags: * these parameters are the most secure and most commonly used. */ export declare class GCM implements AEAD { readonly nonceLength = 12; readonly tagLength = 16; private _subkey; private _cipher; /** * Creates a new GCM instance with the given block cipher. * * Block size of cipher must be equal to 16. */ constructor(cipher: BlockCipher); /** * Encrypts and authenticates plaintext, authenticates associated data, * and returns sealed ciphertext, which includes authentication tag. * * If dst is given (it must be the size of plaintext + the size of tag length) * the result will be put into it. Dst and plaintext must not overlap. */ seal(nonce: Uint8Array, plaintext: Uint8Array, associatedData?: Uint8Array, dst?: Uint8Array): Uint8Array; /** * Authenticates sealed ciphertext (which includes authentication tag) and * associated data, decrypts ciphertext and returns decrypted plaintext. * * If authentication fails, it returns null. * * If dst is given (it must be of ciphertext length minus tag length), * the result will be put into it. Dst and plaintext must not overlap. */ open(nonce: Uint8Array, sealed: Uint8Array, associatedData?: Uint8Array, dst?: Uint8Array): Uint8Array | null; clean(): this; private _authenticate; }