This repository has been archived on 2024-09-11. You can view files and clone it, but cannot push or open issues or pull requests.
svrjs-blog-newsletter/cronjob/node_modules/@aws-crypto/sha256-browser/build/ie11Sha256.js
2024-05-26 22:54:55 +02:00

80 lines
No EOL
3.1 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Sha256 = void 0;
var isEmptyData_1 = require("./isEmptyData");
var constants_1 = require("./constants");
var util_utf8_browser_1 = require("@aws-sdk/util-utf8-browser");
var util_locate_window_1 = require("@aws-sdk/util-locate-window");
var Sha256 = /** @class */ (function () {
function Sha256(secret) {
this.secret = secret;
this.reset();
}
Sha256.prototype.update = function (toHash) {
var _this = this;
if ((0, isEmptyData_1.isEmptyData)(toHash)) {
return;
}
this.operation = this.operation.then(function (operation) {
operation.onerror = function () {
_this.operation = Promise.reject(new Error("Error encountered updating hash"));
};
operation.process(toArrayBufferView(toHash));
return operation;
});
this.operation.catch(function () { });
};
Sha256.prototype.digest = function () {
return this.operation.then(function (operation) {
return new Promise(function (resolve, reject) {
operation.onerror = function () {
reject(new Error("Error encountered finalizing hash"));
};
operation.oncomplete = function () {
if (operation.result) {
resolve(new Uint8Array(operation.result));
}
reject(new Error("Error encountered finalizing hash"));
};
operation.finish();
});
});
};
Sha256.prototype.reset = function () {
if (this.secret) {
this.operation = getKeyPromise(this.secret).then(function (keyData) {
return (0, util_locate_window_1.locateWindow)().msCrypto.subtle.sign(constants_1.SHA_256_HMAC_ALGO, keyData);
});
this.operation.catch(function () { });
}
else {
this.operation = Promise.resolve((0, util_locate_window_1.locateWindow)().msCrypto.subtle.digest("SHA-256"));
}
};
return Sha256;
}());
exports.Sha256 = Sha256;
function getKeyPromise(secret) {
return new Promise(function (resolve, reject) {
var keyOperation = (0, util_locate_window_1.locateWindow)().msCrypto.subtle.importKey("raw", toArrayBufferView(secret), constants_1.SHA_256_HMAC_ALGO, false, ["sign"]);
keyOperation.oncomplete = function () {
if (keyOperation.result) {
resolve(keyOperation.result);
}
reject(new Error("ImportKey completed without importing key."));
};
keyOperation.onerror = function () {
reject(new Error("ImportKey failed to import key."));
};
});
}
function toArrayBufferView(data) {
if (typeof data === "string") {
return (0, util_utf8_browser_1.fromUtf8)(data);
}
if (ArrayBuffer.isView(data)) {
return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);
}
return new Uint8Array(data);
}
//# sourceMappingURL=ie11Sha256.js.map