telegram-mtproto
Version:
Telegram MTProto library
52 lines (48 loc) • 1.32 kB
JavaScript
var { pqPrimeFactorization, bytesModPow, sha1HashSync,
aesEncryptSync, aesDecryptSync } = require('./bin');
console.info('Crypto worker registered');
var post = (() => {
function postPlain(data) {
postMessage(data);
}
var result = function postStar(data) {
postMessage(data, '*');
};
try {
result('ready');
} catch (err) {
result = postPlain;
result('ready');
} finally {
//eslint-disable-next-line
return result;
}
})();
var runTask = data => {
switch (data.task) {
case 'factorize':
return pqPrimeFactorization(data.bytes);
case 'mod-pow':
return bytesModPow(data.x, data.y, data.m);
case 'sha1-hash':
return sha1HashSync(data.bytes);
case 'aes-encrypt':
return aesEncryptSync(data.bytes, data.keyBytes, data.ivBytes);
case 'aes-decrypt':
return aesDecryptSync(data.encryptedBytes, data.keyBytes, data.ivBytes);
default:
throw new Error(`Unknown task: ${data.task}`);
}
};
onmessage = function (e) {
if (e.data === '') {
console.info('empty crypto task');
} else if (typeof e.data === 'string') {
console.info('crypto task string message', e.data);
} else {
var taskID = e.data.taskID;
var result = runTask(e.data);
post({ taskID, result });
}
};
//# sourceMappingURL=worker.js.map