/** * Core AES logic. * The file is not used in end-user code. Instead, it's used by awasm-compiler * to generate different build targets (wasm, wasm_threads, js, runtime). * @module */ import type { ArraySpec, FnDef, FnRegistry, GetOps, MemorySurface, ScalarSpec, Scope, Segs, StructSpec, Val } from '@awasm/compiler/module.js'; import { Module } from '@awasm/compiler/module.js'; import type { TypeName } from '@awasm/compiler/types.js'; type Shape = symbol | Shape[] | { [k: string]: Shape; }; export declare const chachaCore: (f: Scope, lanes: number, X: Val<"u32", unknown>[], rounds: number, add: boolean) => void; export declare const salsaCore: (f: Scope, lanes: number, X: Val<"u32", unknown>[], rounds: number, add: boolean) => void; export declare const genSalsa: (type: TypeName, opts: { rounds: number; }) => Module<{ state: StructSpec<{ counter: ScalarSpec<"u64", unknown, number>; sigma: ArraySpec, readonly [4]>; key: ArraySpec, readonly [8]>; nonce: ArraySpec, readonly [number]>; }>; } & { buffer: ArraySpec, readonly [number, 16]>; } & { derive: StructSpec<{ nonce: ArraySpec, readonly [number]>; out: ArraySpec, readonly [8]>; }>; }, { reset: FnDef<"u32"[], void>; } & { processBlocks: FnDef<"u32"[], void>; } & { encryptBlocks: FnDef<"u32"[], void>; } & { decryptBlocks: FnDef<"u32"[], void>; } & { derive: FnDef; }>; export declare const genChacha: (type: TypeName, opts: { rounds: number; }) => Module<{ state: StructSpec<{ counter: ScalarSpec<"u64", unknown, number>; sigma: ArraySpec, readonly [4]>; key: ArraySpec, readonly [8]>; nonce: ArraySpec, readonly [number]>; }>; } & { buffer: ArraySpec, readonly [number, 16]>; } & { derive: StructSpec<{ nonce: ArraySpec, readonly [number]>; out: ArraySpec, readonly [8]>; }>; }, { reset: FnDef<"u32"[], void>; } & { processBlocks: FnDef<"u32"[], void>; } & { encryptBlocks: FnDef<"u32"[], void>; } & { decryptBlocks: FnDef<"u32"[], void>; } & { derive: FnDef; }>; export declare const genSalsaAead: (type: TypeName, opts: { rounds: number; }) => Module<{ state: StructSpec<{ counter: ScalarSpec<"u64", unknown, number>; shiftSet: ArraySpec, readonly [1]>; sigma: ArraySpec, readonly [4]>; key: ArraySpec, readonly [8]>; nonce: ArraySpec, readonly [2]>; aadLen: ScalarSpec<"u64", unknown, number>; dataLen: ScalarSpec<"u64", unknown, number>; poly: StructSpec<{ key: ArraySpec, readonly [4]>; r: ArraySpec, readonly [4, 10]>; r5: ArraySpec, readonly [4, 10]>; h: ArraySpec, readonly [10]>; pad: ArraySpec, readonly [8]>; tag: ArraySpec, readonly [4]>; }>; }>; } & { buffer: ArraySpec, readonly [number, 4]>; } & { derive: StructSpec<{ nonce: ArraySpec, readonly [4]>; out: ArraySpec, readonly [8]>; }>; }, { reset: FnDef<"u32"[], void>; } & { macInit: FnDef; } & { macPadAt: FnDef<"u32"[], void>; } & { macBlocksAt: FnDef<"u32"[], void>; } & { macFinish: FnDef; } & { aadInit: FnDef; } & { aadBlocks: FnDef<"u32"[], void>; } & { encryptInit: FnDef<"u32"[], void>; } & { decryptInit: FnDef<"u32"[], void>; } & { process: FnDef<"u32"[], void>; } & { encryptBlocks: FnDef<"u32"[], void>; } & { decryptBlocks: FnDef<"u32"[], void>; } & { tagFinish: FnDef; } & { derive: FnDef; }>; export declare const genChachaAead: (type: TypeName, opts: { rounds: number; }) => Module<{ state: StructSpec<{ counter: ScalarSpec<"u64", unknown, number>; sigma: ArraySpec, readonly [4]>; key: ArraySpec, readonly [8]>; nonce: ArraySpec, readonly [3]>; aadLen: ScalarSpec<"u64", unknown, number>; dataLen: ScalarSpec<"u64", unknown, number>; poly: StructSpec<{ key: ArraySpec, readonly [4]>; r: ArraySpec, readonly [4, 10]>; r5: ArraySpec, readonly [4, 10]>; msg: ArraySpec, readonly [4, 5]>; h: ArraySpec, readonly [10]>; pad: ArraySpec, readonly [8]>; tag: ArraySpec, readonly [4]>; }>; }>; } & { buffer: ArraySpec, readonly [number, 4]>; } & { derive: StructSpec<{ nonce: ArraySpec, readonly [4]>; out: ArraySpec, readonly [8]>; }>; }, { reset: FnDef<"u32"[], void>; } & { macInit: FnDef; } & { macPadAt: FnDef<"u32"[], void>; } & { macBlocksAt: FnDef<"u32"[], void>; } & { macFinish: FnDef; } & { process: FnDef<"u32"[], void>; } & { aadInit: FnDef; } & { aadBlocks: FnDef<"u32"[], void>; } & { encryptInit: FnDef<"u32"[], void>; } & { decryptInit: FnDef<"u32"[], void>; } & { encryptBlocks: FnDef<"u32"[], void>; } & { decryptBlocks: FnDef<"u32"[], void>; } & { tagFinish: FnDef; } & { derive: FnDef; }>; type AesDir = 'encrypt' | 'decrypt'; export declare const AES_BLOCK_LEN = 16; export declare const AES_BLOCKS: number; export declare const KEY_LEN_MAX = 8; export declare const EXPANDED_KEY_MAX: number; export declare const aesConsts: StructSpec<{ encrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; decrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; xPowers: ArraySpec, readonly [4]>; inited: ScalarSpec<"u32", unknown, number>; }>; export declare const aesBatchFn: ; expandedKey: ArraySpec, readonly [number]>; }>; constants: typeof aesConsts; }, Ctx extends Shape>(name: Name, dir: AesDir, init: (f: Scope, batchPos: Val<"u32">, perBatch: Val<"u32">, blocks: Val<"u32">) => Ctx, cb: (f: Scope, ctx: Ctx, processBlock: (in4: Val<"u32">[]) => Val<"u32">[], pos: Val<"u32">) => Ctx) => (mod: Module) => Module; }>; type AesKeyStateSpec = StructSpec<{ key: ArraySpec, readonly [number]>; tmp: ArraySpec, readonly [number]>; expandedKey: ArraySpec, readonly [number]>; rounds: ScalarSpec<'u32'>; }>; export declare const aesInitKeys: (opts?: { withDecrypt?: boolean; }) => (mod: Module) => Module; } & { encryptInit: FnDef<"u32"[], void>; } & { decryptInit: FnDef<"u32"[], void>; }>; export declare const PCKS7: () => , readonly [number, ...number[]]>; }, F extends FnRegistry>(mod: Module) => Module>; } & { verifyPadding: FnDef<"u32"[], Val<"u32", unknown>>; }>; export declare const roundBlocks: (f: Scope, round: Val<"u32">, dir: AesDir, doMac: () => void, doCtr: () => void) => void; export type MemU32 = MemorySurface<{ mem: ArraySpec, readonly [number]>; }>['mem']; export type MemU32Scalar = MemorySurface<{ mem: ScalarSpec<'u32'>; }>['mem']; export declare const aesKeyInitEnc: (f: Scope, keyLen: Val<"u32">, keyMem: MemU32, tmp: MemU32, expandedKey: MemU32, rounds: MemU32Scalar) => Val<"u32", unknown>[]; export declare const aesWithBlock: (f: Scope, dir: AesDir, roundsVal: Val<"u32">, expKey: MemU32, cb: (processBlock: (in4: Val<"u32">[]) => Val<"u32">[]) => void) => void; export declare const aesInitTables: (f: Scope) => void; export declare const bswap32: (u32: GetOps<"u32">, x: Val<"u32">) => Val<"u32", unknown>; export declare const incCounter: (f: Scope, isBE?: boolean) => { inplace: (limbs: Val<"u32">[], inc: Val<"u32">) => Val<"u32">[]; memory: (limbs: MemorySurface<{ limbs: ArraySpec, readonly [number]>; }>["limbs"], inc: Val<"u32">) => void; }; export declare const cmacDbl: (f: Scope, src: MemU32) => void; export declare const cmacXor: (u32: GetOps<"u32">, bv: Val<"u32">[], iv: Val<"u32">[], k1: Val<"u32">[], k2: Val<"u32">[], useK: Val<"u32">, useK2: Val<"u32">) => Val<"u32", unknown>[]; export declare const cmacSubkeysInit: (f: Scope, len: Val<"u32">, st: { key: MemU32; tmp: MemU32; expandedKey: MemU32; rounds: MemU32Scalar; k1: MemU32; k2: MemU32; iv: MemU32; }) => void; export declare const genCmac: (_type: TypeName, _opts: {}) => Module<{ state: ArraySpec, readonly [4]>; key: ArraySpec, readonly [8]>; expandedKey: ArraySpec, readonly [number]>; tmp: ArraySpec, readonly [number]>; k1: ArraySpec, readonly [4]>; k2: ArraySpec, readonly [4]>; iv: ArraySpec, readonly [4]>; rounds: ScalarSpec<"u32", unknown, number>; tag: ArraySpec, readonly [4]>; }>, [number]> & { batch: true; }; } & { constants: StructSpec<{ encrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; decrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; xPowers: ArraySpec, readonly [4]>; inited: ScalarSpec<"u32", unknown, number>; }>; } & { buffer: ArraySpec, readonly [number, 4]>; }, { reset: FnDef<"u32"[], void>; } & { padding: FnDef<"u32"[], Val<"u32", unknown>>; } & { macInit: FnDef<"u32"[], void>; } & { processBlocks: FnDef<"u32"[], void>; } & { processOutBlocks: FnDef<"u32"[], void>; }>; export declare const callBatch: (f: Scope, blocks: Val<"u32">, call: (batchPos: Val<"u32">, batchLen: Val<"u32">, perBatch: Val<"u32">) => void) => void; export declare const genAesEcb: (_type: TypeName, _opts: {}) => Module<{ state: StructSpec<{ key: ArraySpec, readonly [8]>; expandedKey: ArraySpec, readonly [number]>; tmp: ArraySpec, readonly [number]>; rounds: ScalarSpec<"u32", unknown, number>; }>; } & { constants: StructSpec<{ encrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; decrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; xPowers: ArraySpec, readonly [4]>; inited: ScalarSpec<"u32", unknown, number>; }>; } & { buffer: ArraySpec, readonly [number, 4]>; }, { addPadding: FnDef<"u32"[], Val<"u32", unknown>>; } & { verifyPadding: FnDef<"u32"[], Val<"u32", unknown>>; } & { initTables: FnDef; } & { encryptInit: FnDef<"u32"[], void>; } & { decryptInit: FnDef<"u32"[], void>; } & { reset: FnDef<"u32"[], void>; } & { processBlocksEnc: FnDef<"u32"[], void>; } & { processBlocksDec: FnDef<"u32"[], void>; } & { encryptBlocks: FnDef<"u32"[], void>; } & { decryptBlocks: FnDef<"u32"[], void>; }>; export declare const genAesCbc: (_type: TypeName, _opts: {}) => Module<{ state: StructSpec<{ key: ArraySpec, readonly [8]>; expandedKey: ArraySpec, readonly [number]>; tmp: ArraySpec, readonly [number]>; rounds: ScalarSpec<"u32", unknown, number>; iv: ArraySpec, readonly [4]>; }>; } & { constants: StructSpec<{ encrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; decrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; xPowers: ArraySpec, readonly [4]>; inited: ScalarSpec<"u32", unknown, number>; }>; } & { buffer: ArraySpec, readonly [number, 4]>; }, { addPadding: FnDef<"u32"[], Val<"u32", unknown>>; } & { verifyPadding: FnDef<"u32"[], Val<"u32", unknown>>; } & { initTables: FnDef; } & { encryptInit: FnDef<"u32"[], void>; } & { decryptInit: FnDef<"u32"[], void>; } & { reset: FnDef<"u32"[], void>; } & { encryptBlocks: FnDef<"u32"[], void>; } & { decryptBlocks: FnDef<"u32"[], void>; }>; export declare const genAesCfb: (_type: TypeName, _opts: {}) => Module<{ state: StructSpec<{ key: ArraySpec, readonly [8]>; expandedKey: ArraySpec, readonly [number]>; tmp: ArraySpec, readonly [number]>; rounds: ScalarSpec<"u32", unknown, number>; iv: ArraySpec, readonly [4]>; }>; } & { constants: StructSpec<{ encrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; decrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; xPowers: ArraySpec, readonly [4]>; inited: ScalarSpec<"u32", unknown, number>; }>; } & { buffer: ArraySpec, readonly [number, 4]>; }, { initTables: FnDef; } & { encryptInit: FnDef<"u32"[], void>; } & { decryptInit: FnDef<"u32"[], void>; } & { reset: FnDef<"u32"[], void>; } & { encryptBlocks: FnDef<"u32"[], void>; } & { decryptBlocks: FnDef<"u32"[], void>; }>; export declare const genAesOfb: (_type: TypeName, _opts: {}) => Module<{ state: StructSpec<{ key: ArraySpec, readonly [8]>; expandedKey: ArraySpec, readonly [number]>; tmp: ArraySpec, readonly [number]>; rounds: ScalarSpec<"u32", unknown, number>; iv: ArraySpec, readonly [4]>; }>; } & { constants: StructSpec<{ encrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; decrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; xPowers: ArraySpec, readonly [4]>; inited: ScalarSpec<"u32", unknown, number>; }>; } & { buffer: ArraySpec, readonly [number, 4]>; }, { initTables: FnDef; } & { encryptInit: FnDef<"u32"[], void>; } & { decryptInit: FnDef<"u32"[], void>; } & { reset: FnDef<"u32"[], void>; } & { encryptBlocks: FnDef<"u32"[], void>; } & { decryptBlocks: FnDef<"u32"[], void>; }>; export declare const genAesCtr: (_type: TypeName, _opts: {}) => Module<{ state: StructSpec<{ key: ArraySpec, readonly [8]>; expandedKey: ArraySpec, readonly [number]>; tmp: ArraySpec, readonly [number]>; rounds: ScalarSpec<"u32", unknown, number>; nonce: ArraySpec, readonly [4]>; }>; } & { constants: StructSpec<{ encrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; decrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; xPowers: ArraySpec, readonly [4]>; inited: ScalarSpec<"u32", unknown, number>; }>; } & { buffer: ArraySpec, readonly [number, 4]>; }, { initTables: FnDef; } & { encryptInit: FnDef<"u32"[], void>; } & { decryptInit: FnDef<"u32"[], void>; } & { reset: FnDef<"u32"[], void>; } & { processBlocks: FnDef<"u32"[], void>; } & { encryptBlocks: FnDef<"u32"[], void>; } & { decryptBlocks: FnDef<"u32"[], void>; }>; export declare const genAesGcm: (_type: TypeName, _opts: {}) => Module<{ state: StructSpec<{ key: ArraySpec, readonly [8]>; expandedKey: ArraySpec, readonly [number]>; tmp: ArraySpec, readonly [number]>; nonce: ArraySpec, readonly [4]>; rounds: ScalarSpec<"u32", unknown, number>; aadLen: ScalarSpec<"u64", unknown, number>; dataLen: ScalarSpec<"u64", unknown, number>; tagMask: ArraySpec, readonly [4]>; tag: ArraySpec, readonly [4]>; ghash: StructSpec<{ y: ArraySpec, readonly [4]>; y64: ScalarSpec<"u64x2", unknown, number>; h: ArraySpec, readonly [4]>; }>; table64v: ArraySpec, readonly [number]>; tmp64v: ArraySpec, readonly [8]>; }>; } & { constants: StructSpec<{ encrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; decrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; xPowers: ArraySpec, readonly [4]>; inited: ScalarSpec<"u32", unknown, number>; }>; } & { buffer: ArraySpec, readonly [number, 4]>; }, { reset: FnDef<"u32"[], void>; } & { padLast: FnDef<"u32"[], void>; } & { ghashBlocks: FnDef<"u32"[], void>; } & { gcmInitJ0: FnDef; } & { processBlocks: FnDef<"u32"[], void>; } & { aadInit: FnDef; } & { aadBlocks: FnDef<"u32"[], void>; } & { encryptInit: FnDef<"u32"[], void>; } & { nonceFinish: FnDef<"u32"[], void>; } & { decryptInit: FnDef<"u32"[], void>; } & { encryptBlocks: FnDef<"u32"[], void>; } & { decryptBlocks: FnDef<"u32"[], void>; } & { tagFinish: FnDef; }>; export declare const genAesGcmSiv: (_type: TypeName, _opts: {}) => Module<{ state: StructSpec<{ key: ArraySpec, readonly [8]>; encKey: ArraySpec, readonly [8]>; expandedKey: ArraySpec, readonly [number]>; tmp: ArraySpec, readonly [number]>; rounds: ScalarSpec<"u32", unknown, number>; nonce: ArraySpec, readonly [4]>; ctr: ArraySpec, readonly [4]>; aadLen: ScalarSpec<"u64", unknown, number>; dataLen: ScalarSpec<"u64", unknown, number>; tag: ArraySpec, readonly [4]>; ctrReady: ScalarSpec<"u32", unknown, number>; ghash: StructSpec<{ y: ArraySpec, readonly [4]>; y64: ScalarSpec<"u64x2", unknown, number>; h: ArraySpec, readonly [4]>; }>; table64v: ArraySpec, readonly [number]>; tmp64v: ArraySpec, readonly [8]>; }>; } & { constants: StructSpec<{ encrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; decrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; xPowers: ArraySpec, readonly [4]>; inited: ScalarSpec<"u32", unknown, number>; }>; } & { buffer: ArraySpec, readonly [number, 4]>; }, { reset: FnDef<"u32"[], void>; } & { polyBlocks: FnDef<"u32"[], void>; } & { encryptInit: FnDef<"u32"[], void>; } & { decryptInit: FnDef<"u32"[], void>; } & { processBlocks: FnDef<"u32"[], void>; } & { aadBlocks: FnDef<"u32"[], void>; } & { macBlocks: FnDef<"u32"[], void>; } & { tagInit: FnDef; } & { tagFinish: FnDef; } & { encryptBlocks: FnDef<"u32"[], void>; } & { decryptBlocks: FnDef<"u32"[], void>; }>; export declare const genAesSiv: (_type: TypeName, _opts: {}) => Module<{ state: StructSpec<{ key1: ArraySpec, readonly [8]>; key: ArraySpec, readonly [8]>; expandedKey: ArraySpec, readonly [number]>; expandedKeyCmac: ArraySpec, readonly [number]>; tmp: ArraySpec, readonly [number]>; rounds: ScalarSpec<"u32", unknown, number>; k1: ArraySpec, readonly [4]>; k2: ArraySpec, readonly [4]>; iv: ArraySpec, readonly [4]>; d: ArraySpec, readonly [4]>; tag: ArraySpec, readonly [4]>; ctr: ArraySpec, readonly [4]>; ctrReady: ScalarSpec<"u32", unknown, number>; }>; } & { constants: StructSpec<{ encrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; decrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; xPowers: ArraySpec, readonly [4]>; inited: ScalarSpec<"u32", unknown, number>; }>; } & { buffer: ArraySpec, readonly [number, 4]>; }, { reset: FnDef<"u32"[], void>; } & { encryptInit: FnDef<"u32"[], void>; } & { decryptInit: FnDef<"u32"[], void>; } & { aadBlocks: FnDef<"u32"[], void>; } & { macBlocks: FnDef<"u32"[], void>; } & { processBlocks: FnDef<"u32"[], void>; } & { tagInit: FnDef; } & { encryptBlocks: FnDef<"u32"[], void>; } & { decryptBlocks: FnDef<"u32"[], void>; }>; export declare const genAesKw: (type: TypeName, _opts: {}) => Module<{ state: StructSpec<{ key: ArraySpec, readonly [8]>; expandedKey: ArraySpec, readonly [number]>; tmp: ArraySpec, readonly [number]>; rounds: ScalarSpec<"u32", unknown, number>; }>; } & { constants: StructSpec<{ encrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; decrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; xPowers: ArraySpec, readonly [4]>; inited: ScalarSpec<"u32", unknown, number>; }>; } & { buffer: ArraySpec, readonly [number, 2]>; }, { initTables: FnDef; } & { encryptInit: FnDef<"u32"[], void>; } & { decryptInit: FnDef<"u32"[], void>; } & { aesBlockEnc: FnDef<"u32"[], Val<"u32", unknown>[]>; } & { aesBlockDec: FnDef<"u32"[], Val<"u32", unknown>[]>; } & { reset: FnDef<"u32"[], void>; } & { addPadding: FnDef<"u32"[], Val<"u32", unknown>>; } & { verifyPadding: FnDef<"u32"[], Val<"u32", unknown>>; } & { encryptBlocks: FnDef<"u32"[], void>; } & { decryptBlocks: FnDef<"u32"[], void>; }>; export declare const genAesKwp: (type: TypeName, _opts: {}) => Module<{ state: StructSpec<{ key: ArraySpec, readonly [8]>; expandedKey: ArraySpec, readonly [number]>; tmp: ArraySpec, readonly [number]>; rounds: ScalarSpec<"u32", unknown, number>; }>; } & { constants: StructSpec<{ encrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; decrypt: StructSpec<{ sbox: ArraySpec, readonly [64]>; T0: ArraySpec, readonly [256]>; T1: ArraySpec, readonly [256]>; T2: ArraySpec, readonly [256]>; T3: ArraySpec, readonly [256]>; }>; xPowers: ArraySpec, readonly [4]>; inited: ScalarSpec<"u32", unknown, number>; }>; } & { buffer: ArraySpec, readonly [number, 2]>; }, { initTables: FnDef; } & { encryptInit: FnDef<"u32"[], void>; } & { decryptInit: FnDef<"u32"[], void>; } & { aesBlockEnc: FnDef<"u32"[], Val<"u32", unknown>[]>; } & { aesBlockDec: FnDef<"u32"[], Val<"u32", unknown>[]>; } & { reset: FnDef<"u32"[], void>; } & { addPadding: FnDef<"u32"[], Val<"u32", unknown>>; } & { verifyPadding: FnDef<"u32"[], Val<"u32", unknown>>; } & { encryptBlocks: FnDef<"u32"[], void>; } & { decryptBlocks: FnDef<"u32"[], void>; }>; export {}; //# sourceMappingURL=ciphers.d.ts.map