@tiny-utils/crypto
Version:
Tiny utils for crypto: asymmetric/symmetric encryption, ed25519, sha256, etc.
50 lines • 1.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.asymmetricDecrypt = exports.asymmetricEncrypt = exports.publicKeyFromPrivateKey = void 0;
var symmetric_1 = require("./symmetric");
var tweetnacl_1 = require("tweetnacl");
/**
* @category Crypto
* @description Method to get public key from private key using *x25519* algorithm.
*
* @param privateKey Private key
* @returns Public key
*/
var publicKeyFromPrivateKey = function (privateKey) {
return tweetnacl_1.box.keyPair.fromSecretKey(privateKey).publicKey;
};
exports.publicKeyFromPrivateKey = publicKeyFromPrivateKey;
/**
* @category Crypto
* @description Method to asymmetrically encrypt the data using *x25519-xsalsa20-poly1305* algorithm.
*
* @param data Data to encrypt
* @param mySecretKey My private key
* @param theirPublicKey Recipient's public key
* @returns Encrypted data
*/
var asymmetricEncrypt = function (data, mySecretKey, theirPublicKey) {
var nonce = (0, tweetnacl_1.randomBytes)(24);
var encData = (0, tweetnacl_1.box)(data, nonce, theirPublicKey, mySecretKey);
return (0, symmetric_1.packSymmetricalyEncryptedData)(encData, nonce);
};
exports.asymmetricEncrypt = asymmetricEncrypt;
/**
* @category Crypto
* @description Method to asymmetrically decrypt the data using *x25519-xsalsa20-poly1305* algorithm.
*
* @param data Data to decrypt
* @param mySecretKey My private key
* @param theirPublicKey Sender's public key
* @returns Decrypted data
*/
var asymmetricDecrypt = function (data, mySecretKey, theirPublicKey) {
var _a = (0, symmetric_1.unpackSymmetricalyEncryptedData)(data), nonce = _a.nonce, encData = _a.encData;
var decData = tweetnacl_1.box.open(encData, nonce, theirPublicKey, mySecretKey);
if (!decData) {
throw new Error("asymmetricDecrypt: Invalid box or key");
}
return decData;
};
exports.asymmetricDecrypt = asymmetricDecrypt;
//# sourceMappingURL=asymmetric.js.map