UNPKG

@sentclose/sentc-nodejs

Version:

End-to-end encryption sdk

121 lines (120 loc) 5.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AbstractSymCrypto = void 0; const AbstractCrypto_1 = require("./AbstractCrypto"); const SymKey_1 = require("./SymKey"); const Sentc_1 = require("../Sentc"); const sentc_node_js_1 = require("@sentclose/sentc_node_js"); /** * @author Jörn Heinemann <joernheinemann@gmx.de> * @since 2022/08/19 */ class AbstractSymCrypto extends AbstractCrypto_1.AbstractCrypto { async encryptRaw(data, sign = false) { const key = await this.getSymKeyToEncrypt(); let sign_key; if (sign) { sign_key = await this.getSignKey(); } const out = (0, sentc_node_js_1.encryptRawSymmetric)(key[0], data, sign_key); return { head: out.head, data: out.data }; } encryptRawSync(data, sign = false) { const key = this.getSymKeyToEncryptSync(); let sign_key; if (sign) { sign_key = this.getSignKeySync(); } const out = (0, sentc_node_js_1.encryptRawSymmetric)(key[0], data, sign_key); return { head: out.head, data: out.data }; } async decryptRaw(head, encrypted_data, verify_key) { const de_head = (0, sentc_node_js_1.deserializeHeadFromString)(head); const key = await this.getSymKeyById(de_head.id); return (0, sentc_node_js_1.decryptRawSymmetric)(key, encrypted_data, head, verify_key); } decryptRawSync(head, encrypted_data, verify_key) { const de_head = (0, sentc_node_js_1.deserializeHeadFromString)(head); const key = this.getSymKeyByIdSync(de_head.id); return (0, sentc_node_js_1.decryptRawSymmetric)(key, encrypted_data, head, verify_key); } async encrypt(data, sign = false) { const key = await this.getSymKeyToEncrypt(); let sign_key; if (sign) { sign_key = await this.getSignKey(); } return (0, sentc_node_js_1.encryptSymmetric)(key[0], data, sign_key); } encryptSync(data, sign = false) { const key = this.getSymKeyToEncryptSync(); let sign_key; if (sign) { sign_key = this.getSignKeySync(); } return (0, sentc_node_js_1.encryptSymmetric)(key[0], data, sign_key); } async decrypt(data, verify = false, user_id) { const head = (0, sentc_node_js_1.splitHeadAndEncryptedData)(data); const key = await this.getSymKeyById(head.id); if (!(head === null || head === void 0 ? void 0 : head.sign) || !verify || !user_id) { return (0, sentc_node_js_1.decryptSymmetric)(key, data); } const verify_key = await Sentc_1.Sentc.getUserVerifyKeyData(this.base_url, this.app_token, user_id, head.sign.id); return (0, sentc_node_js_1.decryptSymmetric)(key, data, verify_key); } decryptSync(data, verify_key) { const head = (0, sentc_node_js_1.splitHeadAndEncryptedData)(data); const key = this.getSymKeyByIdSync(head.id); return (0, sentc_node_js_1.decryptSymmetric)(key, data, verify_key); } async encryptString(data, sign = false) { const key = await this.getSymKeyToEncrypt(); let sign_key; if (sign) { sign_key = await this.getSignKey(); } return (0, sentc_node_js_1.encryptStringSymmetric)(key[0], data, sign_key); } encryptStringSync(data, sign = false) { const key = this.getSymKeyToEncryptSync(); let sign_key; if (sign) { sign_key = this.getSignKeySync(); } return (0, sentc_node_js_1.encryptStringSymmetric)(key[0], data, sign_key); } async decryptString(data, verify = false, user_id) { const head = (0, sentc_node_js_1.splitHeadAndEncryptedString)(data); const key = await this.getSymKeyById(head.id); if (!(head === null || head === void 0 ? void 0 : head.sign) || !verify || !user_id) { return (0, sentc_node_js_1.decryptStringSymmetric)(key, data); } const verify_key = await Sentc_1.Sentc.getUserVerifyKeyData(this.base_url, this.app_token, user_id, head.sign.id); return (0, sentc_node_js_1.decryptStringSymmetric)(key, data, verify_key); } decryptStringSync(data, verify_key) { const head = (0, sentc_node_js_1.splitHeadAndEncryptedString)(data); const key = this.getSymKeyByIdSync(head.id); return (0, sentc_node_js_1.decryptStringSymmetric)(key, data, verify_key); } //__________________________________________________________________________________________________________________ async generateNonRegisteredKey() { const key_data = await this.getSymKeyToEncrypt(); const key_out = (0, sentc_node_js_1.generateNonRegisterSymKey)(key_data[0]); const encrypted_key = key_out.encryptedKey; const key = key_out.key; return [new SymKey_1.SymKey(this.base_url, this.app_token, key, "non_register", key_data[1], await this.getSignKey()), encrypted_key]; } async getNonRegisteredKey(master_key_id, key) { const master_key = await this.getSymKeyById(master_key_id); return (0, SymKey_1.getNonRegisteredKey)(master_key, key, master_key_id, await this.getSignKey()); } } exports.AbstractSymCrypto = AbstractSymCrypto;