view scripts/minifier/otr/dsa-webworker.js @ 116:d0a5db5b9bdf

docker: fixed bad stopping: - use exec when it was missing, so the TERM signal is properly catched, and containers can be stopped instead of being killed after 10s - for a unknown reason, exec and su don't handle correctly "$@" with Docker in base.scripts/sat. It's working as expected when launched from withing a running container, but not when launched with "docker run", so a workaround is used with trap and wait
author Goffi <goffi@goffi.org>
date Fri, 04 Mar 2016 23:31:26 +0100
parents 1596660ddf72
children
line wrap: on
line source

;(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))