CloudScrapy / utils / cryptoUtils.js
cryptoUtils.js
Raw
const crypto = require("crypto");

function encryptDecrypt(){

    function encrypt(dataToEncrypt, publicKey){
        let encryptedData
        try {
            encryptedData = crypto.publicEncrypt(
                {
                    key: publicKey,
                    padding: crypto.constants.RSA_PKCS1_OAEP_PADDING,
                    oaepHash: "sha1",
                },
                Buffer.from(dataToEncrypt)
            );
        }catch (error){
            console.log(`Error encrypting text: ${error}`)
        }
        return encryptedData.toString("base64")
    }

    function decrypt(dataToDecrypt, privateKey){
        let decryptedData
        try {
            decryptedData = crypto.privateDecrypt(
                {
                    key: privateKey,
                    padding: crypto.constants.RSA_PKCS1_OAEP_PADDING,
                    oaepHash: "sha1",
                },
                Buffer.from(dataToDecrypt, "base64")
            );
        }catch (error){
            console.log(`Error decrypting text: ${error}`)
        }
        return decryptedData.toString("utf-8")
    }

    function generateKeysPair(){
        const {privateKey, publicKey} =  crypto.generateKeyPairSync("rsa", {
            modulusLength: 1024,
        })
        const exportedPublicKeyBuffer = publicKey.export({
            type: "pkcs1",
            format: "pem",
        });

        const exportedPrivateKeyBuffer = privateKey.export({
            type: "pkcs1",
            format: "pem",
        });

        return {exportedPrivateKeyBuffer, exportedPublicKeyBuffer}
    }

    return Object.freeze({
        encrypt,
        decrypt,
        generateKeysPair
    })
}


module.exports = {encryptDecrypt};