Skip to content
Snippets Groups Projects
olm_pre.js 1.62 KiB
Newer Older
  • Learn to ignore specific revisions
  • 
    if (typeof(window) !== 'undefined') {
    
    David Baker's avatar
    David Baker committed
        // We're in a browser (directly, via browserify, or via webpack).
    
        get_random_values = function(buf) {
            window.crypto.getRandomValues(buf);
        };
    } else if (module["exports"]) {
        // We're running in node.
        var nodeCrypto = require("crypto");
        get_random_values = function(buf) {
    
    David Baker's avatar
    David Baker committed
            // [''] syntax needed here rather than '.' to prevent
            // closure compiler from mangling the import(!)
            var bytes = nodeCrypto['randomBytes'](buf.length);
    
        process = global["process"];
    
    } else {
        throw new Error("Cannot find global to attach library to");
    }
    
    
    David Baker's avatar
    David Baker committed
    /* applications should define OLM_OPTIONS in the environment to override
    
     * emscripten module settings
    
    David Baker's avatar
    David Baker committed
     */
    if (typeof(OLM_OPTIONS) !== 'undefined') {
        for (var olm_option_key in OLM_OPTIONS) {
            if (OLM_OPTIONS.hasOwnProperty(olm_option_key)) {
                Module[olm_option_key] = OLM_OPTIONS[olm_option_key];
    
    David Baker's avatar
    David Baker committed
    }
    
    /* The 'length' argument to Pointer_stringify doesn't work if the input
     * includes characters >= 128, which makes Pointer_stringify unreliable. We
     * could use it on strings which are known to be ascii, but that seems
     * dangerous. Instead we add a NULL character to all of our strings and just
     * use UTF8ToString.
     */
    var NULL_BYTE_PADDING_LENGTH = 1;
    
    
    Module['onRuntimeInitialized'] = function() {
        OLM_ERROR = Module['_olm_error']();
    
        olm_exports["PRIVATE_KEY_LENGTH"] = Module['_olm_pk_private_key_length']();
    
        if (onInitSuccess) onInitSuccess();
    };
    
    Module['onAbort'] = function(err) {
        if (onInitFail) onInitFail(err);
    };