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