2025-01-21 18:29:39 +01:00

24 lines
670 B
TypeScript

import { createCipheriv, createDecipheriv, type CtrImpl } from './crypto';
export class CTR {
private cipher: CtrImpl;
private decipher: CtrImpl;
constructor(key: Buffer, iv: Buffer) {
if (!Buffer.isBuffer(key) || !Buffer.isBuffer(iv) || iv.length !== 16) {
throw new Error('Key and iv need to be a buffer');
}
this.cipher = createCipheriv('AES-256-CTR', key, iv);
this.decipher = createDecipheriv('AES-256-CTR', key, iv);
}
encrypt(data: Buffer) {
return Buffer.from(this.cipher.update(data));
}
decrypt(data: Buffer) {
return Buffer.from(this.decipher.update(data));
}
}