1 | import { pqPrimeFactorization, bytesModPow, sha1HashSync, aesEncryptSync, aesDecryptSync } from './bin';
|
2 |
|
3 | console.info('Crypto worker registered');
|
4 |
|
5 | const runTask = data => {
|
6 | switch (data.task) {
|
7 | case 'factorize':
|
8 | return pqPrimeFactorization(data.bytes);
|
9 | case 'mod-pow':
|
10 | return bytesModPow(data.x, data.y, data.m);
|
11 | case 'sha1-hash':
|
12 | return sha1HashSync(data.bytes);
|
13 | case 'aes-encrypt':
|
14 | return aesEncryptSync(data.bytes, data.keyBytes, data.ivBytes);
|
15 | case 'aes-decrypt':
|
16 | return aesDecryptSync(data.encryptedBytes, data.keyBytes, data.ivBytes);
|
17 | default:
|
18 | throw new Error(`Unknown task: ${data.task}`);
|
19 | }
|
20 | };
|
21 |
|
22 | onmessage = function (e) {
|
23 | if (e.data === '') {
|
24 | console.info('empty crypto task');
|
25 | } else if (typeof e.data === 'string') {
|
26 | console.info('crypto task string message', e.data);
|
27 | } else {
|
28 | const taskID = e.data.taskID;
|
29 | const result = runTask(e.data);
|
30 | postMessage({ taskID, result });
|
31 | }
|
32 | };
|
33 |
|
34 | postMessage('ready');
|
35 |
|
\ | No newline at end of file |