Files
LingChair/client/static/crypto-es@3.1.0/mode-ofb.mjs
2025-09-06 23:28:50 +08:00

40 lines
987 B
JavaScript

import { BlockCipherMode } from "./cipher-core.mjs";
//#region src/mode-ofb.ts
/**
* OFB Encryptor/Decryptor (same operation)
*/
var OFBMode = class extends BlockCipherMode {
/** Keystream for OFB mode */
_keystream;
processBlock(words, offset) {
const _words = words;
const cipher = this._cipher;
const blockSize = cipher.blockSize;
const iv = this._iv;
let keystream = this._keystream;
if (iv) {
this._keystream = iv.slice(0);
keystream = this._keystream;
this._iv = void 0;
} else if (!keystream) {
this._keystream = new Array(blockSize).fill(0);
keystream = this._keystream;
}
cipher.encryptBlock(keystream, 0);
for (let i = 0; i < blockSize; i += 1) _words[offset + i] ^= keystream[i];
}
};
/**
* Output Feedback block mode.
*/
var OFB = class extends BlockCipherMode {
/** Keystream for OFB mode */
_keystream;
static Encryptor = OFBMode;
static Decryptor = OFBMode;
};
//#endregion
export { OFB };
//# sourceMappingURL=mode-ofb.mjs.map