mirror of
https://github.com/YunoHost-Apps/movim_ynh.git
synced 2024-09-03 19:46:19 +02:00
52 lines
1.1 KiB
JavaScript
52 lines
1.1 KiB
JavaScript
|
;(function (root) {
|
||
|
"use strict";
|
||
|
|
||
|
root.OTR = {}
|
||
|
root.DSA = {}
|
||
|
root.crypto = {
|
||
|
randomBytes: function () {
|
||
|
throw new Error("Haven't seeded yet.")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// default imports
|
||
|
var imports = [
|
||
|
'vendor/salsa20.js'
|
||
|
, 'vendor/bigint.js'
|
||
|
, 'vendor/crypto.js'
|
||
|
, 'vendor/eventemitter.js'
|
||
|
, 'lib/const.js'
|
||
|
, 'lib/helpers.js'
|
||
|
, 'lib/dsa.js'
|
||
|
]
|
||
|
|
||
|
function sendMsg(type, val) {
|
||
|
postMessage({ type: type, val: val })
|
||
|
}
|
||
|
|
||
|
onmessage = function (e) {
|
||
|
var data = e.data;
|
||
|
|
||
|
if (data.imports) imports = data.imports
|
||
|
importScripts.apply(root, imports);
|
||
|
|
||
|
// use salsa20 since there's no prng in webworkers
|
||
|
var state = new root.Salsa20(data.seed.slice(0, 32), data.seed.slice(32))
|
||
|
root.crypto.randomBytes = function (n) {
|
||
|
return state.getBytes(n)
|
||
|
}
|
||
|
|
||
|
if (data.debug) sendMsg('debug', 'DSA key creation started')
|
||
|
var dsa
|
||
|
try {
|
||
|
dsa = new root.DSA()
|
||
|
} catch (e) {
|
||
|
if (data.debug) sendMsg('debug', e.toString())
|
||
|
return
|
||
|
}
|
||
|
if (data.debug) sendMsg('debug', 'DSA key creation finished')
|
||
|
|
||
|
sendMsg('data', dsa.packPrivate())
|
||
|
}
|
||
|
|
||
|
}(this))
|