From 0f16fc4be4a2d002bd44b9e6794d50fb519510ef Mon Sep 17 00:00:00 2001 From: Lars Olzem Date: Wed, 5 Feb 2014 13:14:23 +0100 Subject: [PATCH 1/5] add variable item name in localstore --- src/keyring/localstore.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/keyring/localstore.js b/src/keyring/localstore.js index 587a0430..e3877431 100644 --- a/src/keyring/localstore.js +++ b/src/keyring/localstore.js @@ -19,25 +19,31 @@ * The class that deals with storage of the keyring. Currently the only option is to use HTML5 local storage. * @requires openpgp * @module keyring/localstore + * @param {String} item itemname in localstore */ module.exports = LocalStore; var openpgp = require('../'); -function LocalStore() { +function LocalStore(item) { if (typeof window != 'undefined' && window.localStorage) { this.storage = window.localStorage; } else { this.storage = new (require('node-localstorage').LocalStorage)(openpgp.config.node_store); } + if(typeof item == 'string') { + this.item = item; + } } +LocalStore.item = 'armoredKeys'; + /** * Load the keyring from HTML5 local storage and initializes this instance. * @return {Array} array of keys retrieved from localstore */ LocalStore.prototype.load = function () { - var armoredKeys = JSON.parse(this.storage.getItem('armoredKeys')); + var armoredKeys = JSON.parse(this.storage.getItem(this.item)); var keys = []; if (armoredKeys !== null && armoredKeys.length !== 0) { var key; @@ -59,5 +65,5 @@ LocalStore.prototype.store = function (keys) { for (var i = 0; i < keys.length; i++) { armoredKeys.push(keys[i].armor()); } - this.storage.setItem('armoredKeys', JSON.stringify(armoredKeys)); + this.storage.setItem(this.item, JSON.stringify(armoredKeys)); }; From f5b88ea2aca16619a4eb05fc4701cc9f1b68c211 Mon Sep 17 00:00:00 2001 From: Lars Olzem Date: Wed, 5 Feb 2014 14:01:27 +0100 Subject: [PATCH 2/5] fix calue access --- src/keyring/localstore.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/keyring/localstore.js b/src/keyring/localstore.js index e3877431..555926ac 100644 --- a/src/keyring/localstore.js +++ b/src/keyring/localstore.js @@ -36,7 +36,7 @@ function LocalStore(item) { } } -LocalStore.item = 'armoredKeys'; +LocalStore.prototype.item = 'armoredKeys'; /** * Load the keyring from HTML5 local storage and initializes this instance. From c88718d1b6572300e2c136f59c8ea804f8847f83 Mon Sep 17 00:00:00 2001 From: Lars Olzem Date: Wed, 5 Feb 2014 14:29:40 +0100 Subject: [PATCH 3/5] add description --- src/keyring/localstore.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/keyring/localstore.js b/src/keyring/localstore.js index 555926ac..4d169646 100644 --- a/src/keyring/localstore.js +++ b/src/keyring/localstore.js @@ -36,6 +36,9 @@ function LocalStore(item) { } } +/* + * Declare the localstore itemname + */ LocalStore.prototype.item = 'armoredKeys'; /** From 69bf01fb863df0b36bce6951a9208b41cd19b6ac Mon Sep 17 00:00:00 2001 From: Lars Olzem Date: Wed, 5 Feb 2014 17:10:25 +0100 Subject: [PATCH 4/5] fix keyring email check --- src/keyring/keyring.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/keyring/keyring.js b/src/keyring/keyring.js index ad13793c..84233492 100644 --- a/src/keyring/keyring.js +++ b/src/keyring/keyring.js @@ -67,7 +67,7 @@ Keyring.prototype.clear = function() { function emailCheck(email, key) { email = email.toLowerCase(); var keyEmails = key.getUserIds(); - for (var i; i < keyEmails.length; i++) { + for (var i = 0; i < keyEmails.length; i++) { //we need to get just the email from the userid key keyEmail = keyEmails[i].split('<')[1].split('>')[0].trim().toLowerCase(); if (keyEmail == email) { From d46ef403907e180a9d6ea272df362b404d832fc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Obernd=C3=B6rfer?= Date: Thu, 6 Feb 2014 12:20:52 +0100 Subject: [PATCH 5/5] Add unit test for custom localstorage item name --- test/general/keyring.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/general/keyring.js b/test/general/keyring.js index 31979f90..cab9715c 100644 --- a/test/general/keyring.js +++ b/test/general/keyring.js @@ -87,5 +87,15 @@ describe("Keyring", function() { expect(keys).to.exist.and.have.length(1); done(); }); + it('customize localstorage itemname', function() { + var localstore1 = new openpgp.Keyring.localstore('my-custom-name'); + var localstore2 = new openpgp.Keyring.localstore('my-custom-name'); + var localstore3 = new openpgp.Keyring.localstore(); + localstore3.store([]); + var key = openpgp.key.readArmored(pubkey).keys[0]; + localstore1.store([key]); + expect(localstore2.load()[0].primaryKey.getKeyId().equals(key.primaryKey.getKeyId())).to.be.true; + expect(localstore3.load()).to.have.length(0); + }); });