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