UNPKG

@tiny-utils/crypto

Version:

Tiny utils for crypto: asymmetric/symmetric encryption, ed25519, sha256, etc.

50 lines 1.96 kB
"use strict"; 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