@sentclose/sentc-nodejs
Version:
End-to-end encryption sdk
121 lines (120 loc) • 5.36 kB
JavaScript
"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;