mirror of
https://github.com/Instadapp/Swap-Aggregator-Subgraph.git
synced 2024-07-29 21:57:12 +00:00
69 lines
2.7 KiB
JavaScript
Executable File
69 lines
2.7 KiB
JavaScript
Executable File
var __extends = (this && this.__extends) || (function () {
|
|
var extendStatics = Object.setPrototypeOf ||
|
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
return function (d, b) {
|
|
extendStatics(d, b);
|
|
function __() { this.constructor = d; }
|
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
};
|
|
})();
|
|
import { AES } from './aes';
|
|
import { IllegalArgumentError } from '../other/errors';
|
|
import { joinBytes } from '../other/utils';
|
|
var AES_CTR = /** @class */ (function (_super) {
|
|
__extends(AES_CTR, _super);
|
|
function AES_CTR(key, nonce) {
|
|
var _this = _super.call(this, key, undefined, false, 'CTR') || this;
|
|
delete _this.padding;
|
|
_this.AES_CTR_set_options(nonce);
|
|
return _this;
|
|
}
|
|
AES_CTR.encrypt = function (data, key, nonce) {
|
|
return new AES_CTR(key, nonce).encrypt(data);
|
|
};
|
|
AES_CTR.decrypt = function (data, key, nonce) {
|
|
return new AES_CTR(key, nonce).encrypt(data);
|
|
};
|
|
AES_CTR.prototype.encrypt = function (data) {
|
|
var r1 = this.AES_Encrypt_process(data);
|
|
var r2 = this.AES_Encrypt_finish();
|
|
return joinBytes(r1, r2);
|
|
};
|
|
AES_CTR.prototype.decrypt = function (data) {
|
|
var r1 = this.AES_Encrypt_process(data);
|
|
var r2 = this.AES_Encrypt_finish();
|
|
return joinBytes(r1, r2);
|
|
};
|
|
AES_CTR.prototype.AES_CTR_set_options = function (nonce, counter, size) {
|
|
if (size !== undefined) {
|
|
if (size < 8 || size > 48)
|
|
throw new IllegalArgumentError('illegal counter size');
|
|
var mask = Math.pow(2, size) - 1;
|
|
this.asm.set_mask(0, 0, (mask / 0x100000000) | 0, mask | 0);
|
|
}
|
|
else {
|
|
size = 48;
|
|
this.asm.set_mask(0, 0, 0xffff, 0xffffffff);
|
|
}
|
|
if (nonce !== undefined) {
|
|
var len = nonce.length;
|
|
if (!len || len > 16)
|
|
throw new IllegalArgumentError('illegal nonce size');
|
|
var view = new DataView(new ArrayBuffer(16));
|
|
new Uint8Array(view.buffer).set(nonce);
|
|
this.asm.set_nonce(view.getUint32(0), view.getUint32(4), view.getUint32(8), view.getUint32(12));
|
|
}
|
|
else {
|
|
throw new Error('nonce is required');
|
|
}
|
|
if (counter !== undefined) {
|
|
if (counter < 0 || counter >= Math.pow(2, size))
|
|
throw new IllegalArgumentError('illegal counter value');
|
|
this.asm.set_counter(0, 0, (counter / 0x100000000) | 0, counter | 0);
|
|
}
|
|
};
|
|
return AES_CTR;
|
|
}(AES));
|
|
export { AES_CTR };
|