madeline-ton
Version:
Pure JS client-side implementation of the Telegram TON blockchain protocol
110 lines (85 loc) • 2.67 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _prime = _interopRequireDefault(require("../crypto-sync/prime"));
var _random = require("../crypto-sync/random");
var _crypto = require("../crypto-sync/crypto");
var _math = require("../crypto-sync/math");
var _leemon = require("leemon");
var ctrWorkers = []; //let parser
onmessage = function onmessage(message) {
message = message['data'];
var result;
try {
switch (message['task']) {
case 'init':
//parser = message['parser']
return;
case 'factorize':
result = (0, _prime["default"])(message['what']);
break;
case 'secureRandom':
(0, _random.secureRandom)(message['buffer']);
result = message['buffer'];
break;
case 'secureRandomInt':
result = (0, _random.secureRandomInt)(message['mod']);
break;
case 'sha1':
result = (0, _crypto.sha1)(message['buffer']);
break;
case 'sha256':
result = (0, _crypto.sha256)(message['buffer']);
break;
case 'igeEncrypt':
result = (0, _crypto.igeEncrypt)(message['data'], message['key'], message['iv']);
break;
case 'igeDecrypt':
result = (0, _crypto.igeDecrypt)(message['data'], message['key'], message['iv']);
break;
/*case 'deserialize':
result = parser.deserialize(message['data'])
break*/
/*
case 'ctrInit':
result = ctrWorkers.length
ctrWorkers.push(new CtrProces(message['key'], message['iv']))
break
case 'ctrClose':
if (typeof ctrWorkers[message['ctrId']] !== 'undefined') {
ctrWorkers[message['ctrId']].close()
delete ctrWorkers[message['ctrId']]
}
break
case 'ctr':
result = ctrWorkers[message['ctrId']].process(message['data'])
break*/
case 'seed':
rng_seed_time();
break;
case 'powMod':
result = (0, _leemon.powMod)(message['b'], message['e'], message['n']);
break;
case 'checkAll':
result = (0, _math.checkAll)(message['p'], message['g'], message['G_']);
break;
case 'checkG':
result = (0, _math.checkG)(message['G_'], message['p']);
break;
case 'initEC':
result = (0, _crypto.initEC)(message['peerPublic']);
break;
case 'crc16':
result = (0, _crypto.crc16)(message['data']);
berak;
}
} catch (e) {
return postMessage({
e: e,
id: message['id']
});
}
postMessage({
result: result,
id: message['id']
});
};