mirror of
https://github.com/20kaushik02/express-sequelize-backend-template.git
synced 2025-12-06 11:44:06 +00:00
24 lines
1.3 KiB
JavaScript
24 lines
1.3 KiB
JavaScript
/* Taken from quick-encrypt package, which is not maintained anymore */
|
|
|
|
const crypto = require('crypto')
|
|
|
|
const acceptableBitSizes = [1024, 2048];
|
|
|
|
exports.generate = (sizeInBits) => {
|
|
if (!acceptableBitSizes.includes(sizeInBits))
|
|
throw Error('Error generating public and private key. Key size can only be 1024 or 2048. Example usage: ` let keys = QuickEncrypt.generate(2048); `')
|
|
return keypair({ bits: sizeInBits })
|
|
}
|
|
|
|
exports.encrypt = (payloadString, publicKey) => {
|
|
if (typeof payloadString !== 'string' || typeof publicKey !== 'string')
|
|
throw Error("Error encrypting. Payload and Public Key should be in text format. Example usage: ` let encryptedText = QuickEncrypt.encrypt('Some secret text here!', 'the public RSA key in text format here'); ` ")
|
|
return crypto.publicEncrypt(publicKey, Buffer.from(payloadString, 'utf8')).toString('hex')
|
|
}
|
|
|
|
exports.decrypt = (encryptedString, privateKey) => {
|
|
if (typeof encryptedString !== 'string' || typeof privateKey !== 'string')
|
|
throw Error("Error decrypting. Decrypted Text and Private Key should be in text format. Example usage: ` let decryptedText = QuickEncrypt.decrypt('asddd213d19jenacanscasn', 'the private RSA key in text format here'); ` ")
|
|
return crypto.privateDecrypt({ key: privateKey }, Buffer.from(encryptedString, 'hex')).toString()
|
|
}
|