diff --git a/browserid/static/dialog/resources/browserid-identities.js b/browserid/static/dialog/resources/browserid-identities.js index 75ea84e5b70e780b3abeb6121954410722ccc471..9ea8c24963d70cc1902d73f2d0e167504575f6a6 100644 --- a/browserid/static/dialog/resources/browserid-identities.js +++ b/browserid/static/dialog/resources/browserid-identities.js @@ -35,17 +35,24 @@ * * ***** END LICENSE BLOCK ***** */ -var jwk = require("./jwk"); -var jwt = require("./jwt"); -var vep = require("./vep"); - var BrowserIDIdentities = (function() { + var jwk, jwt, vep; + + function prepareDeps() { + if (!jwk) { + jwk= require("./jwk"); + jwt = require("./jwt"); + vep = require("./vep"); + } + } + "use strict"; function getIssuedIdentities() { var emails = getEmails(); var issued_identities = {}; _(emails).each(function(email_obj, email_address) { try { + prepareDeps(); email_obj.pub = jwk.PublicKey.fromSimpleObject(email_obj.pub); } catch (x) { delete emails[email_address]; @@ -147,6 +154,7 @@ var BrowserIDIdentities = (function() { stageIdentity: function(email, password, onSuccess, onFailure) { var self=this; // FIXME: keysize + prepareDeps(); var keypair = jwk.KeyPair.generate(vep.params.algorithm, 64); self.stagedEmail = email; @@ -271,6 +279,7 @@ var BrowserIDIdentities = (function() { */ syncIdentity: function(email, onSuccess, onFailure) { // FIXME use true key sizes + prepareDeps(); //var keypair = jwk.KeyPair.generate(vep.params.algorithm, vep.params.keysize); var keypair = jwk.KeyPair.generate(vep.params.algorithm, 64); Identities.certifyIdentity(email, keypair, onSuccess, onFailure); @@ -288,6 +297,7 @@ var BrowserIDIdentities = (function() { */ addIdentity: function(email, onSuccess, onFailure) { var self = this; + prepareDeps(); var keypair = jwk.KeyPair.generate(vep.params.algorithm, 64); self.stagedEmail = email; @@ -353,6 +363,7 @@ var BrowserIDIdentities = (function() { if (storedID) { // parse the secret key + prepareDeps(); var sk = jwk.SecretKey.fromSimpleObject(storedID.priv); var tok = new jwt.JWT(null, new Date(), network.origin); assertion = vep.bundleCertsAndAssertion([storedID.cert], tok.sign(sk)); diff --git a/browserid/static/dialog/resources/storage.js b/browserid/static/dialog/resources/storage.js index 8a57a426dc56bf8d9818d3f45a33143a3ab4fa10..e27f80da7e2701ee03c6790905d84d5bd15cdb40 100644 --- a/browserid/static/dialog/resources/storage.js +++ b/browserid/static/dialog/resources/storage.js @@ -33,57 +33,67 @@ * * ***** END LICENSE BLOCK ***** */ -var jwk = require("./jwk"); - -var getEmails = function() { - try { - var emails = JSON.parse(window.localStorage.emails); - if (emails != null) - return emails; - } catch(e) { - } +(function() { + + var jwk; - // if we had a problem parsing or the emails are null - clearEmails(); - return {}; -}; + function prepareDeps() { + if (!jwk) { + jwk = require("./jwk"); + } + } -var _storeEmails = function(emails) { - window.localStorage.emails = JSON.stringify(emails); -}; + window.getEmails = function() { + try { + var emails = JSON.parse(window.localStorage.emails); + if (emails != null) + return emails; + } catch(e) { + } + + // if we had a problem parsing or the emails are null + clearEmails(); + return {}; + }; -var addEmail = function(email, obj) { - var emails = getEmails(); - emails[email] = obj; - _storeEmails(emails); -}; + var _storeEmails = function(emails) { + window.localStorage.emails = JSON.stringify(emails); + }; -var removeEmail = function(email) { - var emails = getEmails(); - delete emails[email]; - _storeEmails(emails); -}; + window.addEmail = function(email, obj) { + var emails = getEmails(); + emails[email] = obj; + _storeEmails(emails); + }; -var clearEmails = function() { - _storeEmails({}); -}; + window.removeEmail = function(email) { + var emails = getEmails(); + delete emails[email]; + _storeEmails(emails); + }; -var storeTemporaryKeypair = function(keypair) { - window.localStorage.tempKeypair = JSON.stringify({ - publicKey: keypair.publicKey.toSimpleObject(), - secretKey: keypair.secretKey.toSimpleObject() - }); -}; + window.clearEmails = function() { + _storeEmails({}); + }; -var retrieveTemporaryKeypair = function() { - var raw_kp = JSON.parse(window.localStorage.tempKeypair); - window.localStorage.tempKeypair = null; - if (raw_kp) { - var kp = new jwk.KeyPair(); - kp.publicKey = jwk.PublicKey.fromSimpleObject(raw_kp.publicKey); - kp.secretKey = jwk.SecretKey.fromSimpleObject(raw_kp.secretKey); - return kp; - } else { - return null; - } -}; \ No newline at end of file + window.storeTemporaryKeypair = function(keypair) { + window.localStorage.tempKeypair = JSON.stringify({ + publicKey: keypair.publicKey.toSimpleObject(), + secretKey: keypair.secretKey.toSimpleObject() + }); + }; + + window.retrieveTemporaryKeypair = function() { + var raw_kp = JSON.parse(window.localStorage.tempKeypair); + window.localStorage.tempKeypair = null; + if (raw_kp) { + prepareDeps(); + var kp = new jwk.KeyPair(); + kp.publicKey = jwk.PublicKey.fromSimpleObject(raw_kp.publicKey); + kp.secretKey = jwk.SecretKey.fromSimpleObject(raw_kp.secretKey); + return kp; + } else { + return null; + } + }; +}());