@kuflow/kuflow-temporal-worker
Version:
Worker library used by KuFlow SDKs and Temporal.
63 lines • 2.63 kB
JavaScript
;
/**
* The MIT License
* Copyright © 2021-present KuFlow S.L.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Ciphers = void 0;
const crypto_1 = __importDefault(require("crypto"));
const CIPHER = 'AES-GCM';
const IV_LENGTH_BYTES = 12;
const TAG_LENGTH_BYTES = 16;
class CipherAes256GCM {
algorithm = 'AES-256-GCM';
async importKey(key) {
return await crypto_1.default.subtle.importKey('raw', key, {
name: 'AES-GCM',
}, true, ['encrypt', 'decrypt']);
}
async encrypt(key, plainText) {
const iv = crypto_1.default.getRandomValues(new Uint8Array(IV_LENGTH_BYTES));
const encrypted = await crypto_1.default.subtle.encrypt({
name: CIPHER,
iv,
tagLength: TAG_LENGTH_BYTES * 8,
}, key, plainText);
return Buffer.concat([iv, new Uint8Array(encrypted)]);
}
async decrypt(key, cipherText) {
const iv = cipherText.subarray(0, IV_LENGTH_BYTES);
const cipherTextData = cipherText.subarray(IV_LENGTH_BYTES);
const decrypted = await crypto_1.default.subtle.decrypt({
name: CIPHER,
iv,
tagLength: TAG_LENGTH_BYTES * 8,
}, key, cipherTextData);
return new Uint8Array(decrypted);
}
}
exports.Ciphers = {
AES_256_GCM: new CipherAes256GCM(),
};
//# sourceMappingURL=kuflow-crypto.js.map