All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ec.crypto.3.1.8.source-code.forgeAsync.js Maven / Gradle / Ivy

try {
    importScripts('forge.min.js');
} catch (ex) {}
try {
    importScripts('forge/forge.min.js');
} catch (ex) {}
try {
    importScripts('../forge/forge.min.js');
} catch (ex) {}
try {
    importScripts('../../forge/forge.min.js');
} catch (ex) {}
try {
    importScripts('../../../forge/forge.min.js');
} catch (ex) {}

self.addEventListener('message', function (e) {
    var data = e.data;
    try {
        switch (data.cmd) {
            case 'encryptRsaOaep':
                self.postMessage({
                    result: forge.util.encode64(forge.pki.publicKeyFromPem(data.pk)
                        .encrypt(data.text, "RSA-OAEP"))
                });
                break;
            case 'decryptRsaOaep':
                self.postMessage({
                    result: forge.pki.privateKeyFromPem(data.ppk).decrypt(
                        forge.util.decode64(data.text), "RSA-OAEP")
                });
                break;
            case 'signRsaOaep':
                var s = forge.sha1.create();
                s.update(data.text, "utf8");
                self.postMessage({
                    result: forge.util.encode64(forge.pki.privateKeyFromPem(data.ppk)
                        .sign(s))
                });
                break;
            case 'signSha256RsaOaep':
                var s = forge.sha256.create();
                s.update(data.text, "utf8");
                self.postMessage({
                    result: forge.util.encode64(forge.pki.privateKeyFromPem(data.ppk)
                        .sign(s))
                });
                break;
            case 'verifyRsaOaep':
                var s = forge.sha1.create();
                s.update(data.text, "utf8");
                self.postMessage({
                    result: forge.pki.publicKeyFromPem(data.pk)
                        .verify(s.digest().bytes(),
                            forge.util.decode64(data.signature))
                });
                break;
            case 'encryptAesCtr':
                var c = forge.cipher.createCipher("AES-CTR", forge.util
                    .decode64(data.secret));
                c.start({
                    iv: forge.util.decode64(data.iv)
                });
                c.update(forge.util.createBuffer(data.text));
                c.finish();
                var encrypted = c.output;
                self.postMessage({
                    result: forge.util.encode64(encrypted.bytes())
                });
                break;
            case 'decryptAesCtr':
                var c = forge.cipher.createDecipher("AES-CTR", forge.util
                    .decode64(data.secret));
                c.start({
                    iv: forge.util.decode64(data.iv)
                });
                c.update(forge.util.createBuffer(forge.util.decode64(data.text)));
                c.finish();
                var decrypted = c.output;
                self.postMessage({
                    result: decrypted.data
                });
                break;
            case 'stop':
                self.close(); // Terminates the worker.
                break;
            default:
                self.postMessage('Unknown command: ' + data.msg);
        };
    } catch (ex) {
        self.postMessage({
            error: ex.message
        });
    }
}, false);




© 2015 - 2025 Weber Informatics LLC | Privacy Policy