Telegram Web K with changes to work inside I2P https://web.telegram.i2p/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

74 lines
1.8 KiB

/*
* https://github.com/morethanwords/tweb
* Copyright (C) 2019-2021 Eduard Kuzmenko
* https://github.com/morethanwords/tweb/blob/master/LICENSE
*
* Originally from:
* https://github.com/zhukov/webogram
* Copyright (C) 2014 Igor Zhukov <igor.beatle@gmail.com>
* https://github.com/zhukov/webogram/blob/master/LICENSE
*/
//const ctx: Worker = self as any;
const ctx = self;
// just to include
import {secureRandom} from '../polyfill';
secureRandom;
import {pqPrimeFactorization, bytesModPow, sha1HashSync,
aesEncryptSync, aesDecryptSync, hash_pbkdf2, sha256HashSync, rsaEncrypt} from './crypto_utils';
import {gzipUncompress} from '../mtproto/bin_utils';
ctx.onmessage = function(e) {
var taskID = e.data.taskID,
result = null;
switch(e.data.task) {
case 'gzipUncompress':
result = gzipUncompress.apply(null, e.data.args);
break;
case 'factorize':
result = pqPrimeFactorization.apply(null, e.data.args);
break;
case 'mod-pow':
result = bytesModPow.apply(null, e.data.args);
break;
case 'sha1-hash':
result = sha1HashSync.apply(null, e.data.args);
break;
case 'sha256-hash':
result = sha256HashSync.apply(null, e.data.args);
break;
case 'rsa-encrypt':
result = rsaEncrypt.apply(null, e.data.args);
break;
case 'aes-encrypt':
result = aesEncryptSync.apply(null, e.data.args);
break;
case 'aes-decrypt':
result = aesDecryptSync.apply(null, e.data.args);
break;
case 'pbkdf2':
return hash_pbkdf2.apply(null, e.data.args).then(result => {
ctx.postMessage({taskID: taskID, result: result});
});
break;
default:
throw new Error('Unknown task: ' + e.data.task);
}
ctx.postMessage({taskID: taskID, result: result});
}
ctx.postMessage('ready');