Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 42x 42x 59x 59x 44x 44x 44x 44x 15x 15x 15x 14x | import { concatByteArrays } from 'micro-stacks/common'; import { AesCipher, CipherAlgorithm } from './types'; type NodeCryptoCreateCipher = typeof import('crypto').createCipheriv; type NodeCryptoCreateDecipher = typeof import('crypto').createDecipheriv; export class NodeCryptoAesCipher implements AesCipher { createCipher: NodeCryptoCreateCipher; createDecipher: NodeCryptoCreateDecipher; constructor(createCipher: NodeCryptoCreateCipher, createDecipher: NodeCryptoCreateDecipher) { this.createCipher = createCipher; this.createDecipher = createDecipher; } async encrypt( algorithm: CipherAlgorithm, key: Uint8Array, iv: Uint8Array, data: Uint8Array ): Promise<Uint8Array> { Iif (algorithm !== 'aes-128-cbc' && algorithm !== 'aes-256-cbc') { throw new Error(`Unsupported cipher algorithm "${algorithm}"`); } const cipher = this.createCipher(algorithm, key, iv); const result = concatByteArrays([cipher.update(data), cipher.final()]); return Promise.resolve(result); } async decrypt( algorithm: CipherAlgorithm, key: Uint8Array, iv: Uint8Array, data: Uint8Array ): Promise<Uint8Array> { Iif (algorithm !== 'aes-128-cbc' && algorithm !== 'aes-256-cbc') { throw new Error(`Unsupported cipher algorithm "${algorithm}"`); } const cipher = this.createDecipher(algorithm, key, iv); const result = concatByteArrays([cipher.update(data), cipher.final()]); return Promise.resolve(result); } } |