Tweak the javascript bindings so that they will work with Node.js
This commit is contained in:
parent
36d17d1cb2
commit
bede3a8499
2 changed files with 34 additions and 4 deletions
|
@ -15,7 +15,7 @@ function array_from_string(string) {
|
||||||
function random_stack(size) {
|
function random_stack(size) {
|
||||||
var ptr = stack(size);
|
var ptr = stack(size);
|
||||||
var array = new Uint8Array(Module['HEAPU8'].buffer, ptr, size);
|
var array = new Uint8Array(Module['HEAPU8'].buffer, ptr, size);
|
||||||
window.crypto.getRandomValues(array);
|
get_random_values(array);
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@ Account.prototype['unpickle'] = restore_stack(function(key, pickle) {
|
||||||
var key_array = array_from_string(key);
|
var key_array = array_from_string(key);
|
||||||
var key_buffer = stack(key_array);
|
var key_buffer = stack(key_array);
|
||||||
var pickle_array = array_from_string(pickle);
|
var pickle_array = array_from_string(pickle);
|
||||||
var pickle_buffer = stack(pickle_length);
|
var pickle_buffer = stack(pickle_array);
|
||||||
account_method(Module['_olm_unpickle_account'])(
|
account_method(Module['_olm_unpickle_account'])(
|
||||||
this.ptr, key_buffer, key_array.length, pickle_buffer,
|
this.ptr, key_buffer, key_array.length, pickle_buffer,
|
||||||
pickle_array.length
|
pickle_array.length
|
||||||
|
@ -280,5 +280,7 @@ Session.prototype['decrypt'] = restore_stack(function(
|
||||||
return Pointer_stringify(plaintext_buffer, plaintext_length);
|
return Pointer_stringify(plaintext_buffer, plaintext_length);
|
||||||
});
|
});
|
||||||
|
|
||||||
return {"Account": Account, "Session": Session};
|
olm_exports["Account"] = Account;
|
||||||
|
olm_exports["Session"] = Session;
|
||||||
|
|
||||||
}();
|
}();
|
||||||
|
|
|
@ -1 +1,29 @@
|
||||||
Olm = function() {
|
var olm_exports = {};
|
||||||
|
var get_random_values;
|
||||||
|
if (typeof(window) !== 'undefined') {
|
||||||
|
// We've been imported directly into a browser.
|
||||||
|
window["Olm"] = olm_exports;
|
||||||
|
get_random_values = function(buf) {
|
||||||
|
window.crypto.getRandomValues(buf);
|
||||||
|
};
|
||||||
|
} else if (global.window) {
|
||||||
|
// We're running with browserify
|
||||||
|
global.window["Olm"] = olm_exports;
|
||||||
|
get_random_values = function(buf) {
|
||||||
|
window.crypto.getRandomValues(buf);
|
||||||
|
};
|
||||||
|
} else if (module["exports"]) {
|
||||||
|
// We're running in node.
|
||||||
|
module["exports"] = olm_exports;
|
||||||
|
var nodeCrypto = require("crypto");
|
||||||
|
get_random_values = function(buf) {
|
||||||
|
var bytes = nodeCrypto.randomBytes(buf.length);
|
||||||
|
buf.set(bytes);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new Error("Cannot find global to attach library to");
|
||||||
|
}
|
||||||
|
|
||||||
|
var init = function() {
|
||||||
|
var module; // Shadow the Node 'module' object so that emscripten won't try
|
||||||
|
// to fiddle with it.
|
||||||
|
|
Loading…
Reference in a new issue