UNPKG

@sentclose/sentc-nodejs

Version:

End-to-end encryption sdk

118 lines (117 loc) 5.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AbstractAsymCrypto = void 0; /** * @author Jörn Heinemann <joernheinemann@gmx.de> * @since 2022/08/19 */ 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"); class AbstractAsymCrypto extends AbstractCrypto_1.AbstractCrypto { async encryptRaw(data, reply_id, sign = false) { const key = await this.getPublicKey(reply_id); let sign_key; if (sign) { sign_key = await this.getSignKey(); } const out = (0, sentc_node_js_1.encryptRawAsymmetric)(key.public_key, data, sign_key); return { head: out.head, data: out.data }; } encryptRawSync(data, reply_public_key, sign = false) { let sign_key; if (sign) { sign_key = this.getSignKeySync(); } const out = (0, sentc_node_js_1.encryptRawAsymmetric)(reply_public_key, 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.getPrivateKey(de_head.id); return (0, sentc_node_js_1.decryptRawAsymmetric)(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.getPrivateKeySync(de_head.id); return (0, sentc_node_js_1.decryptRawAsymmetric)(key, encrypted_data, head, verify_key); } async encrypt(data, reply_id, sign = false) { const key = await this.getPublicKey(reply_id); let sign_key; if (sign) { sign_key = await this.getSignKey(); } return (0, sentc_node_js_1.encryptAsymmetric)(key.public_key, data, sign_key); } encryptSync(data, reply_public_key, sign = false) { let sign_key; if (sign) { sign_key = this.getSignKeySync(); } return (0, sentc_node_js_1.encryptAsymmetric)(reply_public_key, data, sign_key); } async decrypt(data, verify = false, user_id) { const head = (0, sentc_node_js_1.splitHeadAndEncryptedData)(data); const key = await this.getPrivateKey(head.id); if (!(head === null || head === void 0 ? void 0 : head.sign) || !verify || !user_id) { return (0, sentc_node_js_1.decryptAsymmetric)(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.decryptAsymmetric)(key, data, verify_key); } decryptSync(data, verify_key) { const head = (0, sentc_node_js_1.splitHeadAndEncryptedData)(data); const key = this.getPrivateKeySync(head.id); return (0, sentc_node_js_1.decryptAsymmetric)(key, data, verify_key); } async encryptString(data, reply_id, sign = false) { const key = await this.getPublicKey(reply_id); let sign_key; if (sign) { sign_key = await this.getSignKey(); } return (0, sentc_node_js_1.encryptStringAsymmetric)(key.public_key, data, sign_key); } encryptStringSync(data, reply_public_key, sign = false) { let sign_key; if (sign) { sign_key = this.getSignKeySync(); } return (0, sentc_node_js_1.encryptStringAsymmetric)(reply_public_key, data, sign_key); } async decryptString(data, verify = false, user_id) { const head = (0, sentc_node_js_1.splitHeadAndEncryptedString)(data); const key = await this.getPrivateKey(head.id); if (!(head === null || head === void 0 ? void 0 : head.sign) || !verify || !user_id) { return (0, sentc_node_js_1.decryptStringAsymmetric)(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.decryptStringAsymmetric)(key, data, verify_key); } decryptStringSync(data, verify_key) { const head = (0, sentc_node_js_1.splitHeadAndEncryptedString)(data); const key = this.getPrivateKeySync(head.id); return (0, sentc_node_js_1.decryptStringAsymmetric)(key, data, verify_key); } //__________________________________________________________________________________________________________________ async generateNonRegisteredKey(reply_id) { const key_data = await this.getPublicKey(reply_id); const key_out = (0, sentc_node_js_1.generateNonRegisterSymKeyByPublicKey)(key_data.public_key); 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.public_key_id, await this.getSignKey()), encrypted_key]; } async getNonRegisteredKey(master_key_id, key) { const private_key = await this.getPrivateKey(master_key_id); return (0, SymKey_1.getNonRegisteredKeyByPrivateKey)(private_key, key, master_key_id, await this.getSignKey()); } } exports.AbstractAsymCrypto = AbstractAsymCrypto;