diff --git a/resources/openpgp.js b/resources/openpgp.js index fec55f85..e0b7c1e4 100644 --- a/resources/openpgp.js +++ b/resources/openpgp.js @@ -2969,7 +2969,7 @@ function openpgp_config() { keyserver: "keyserver.linux.it" // "pgp.mit.edu:11371" }; - this.versionstring ="OpenPGP.js v.1.20130206"; + this.versionstring ="OpenPGP.js v.1.20130213"; this.commentstring ="http://openpgpjs.org"; /** * reads the config out of the HTML5 local storage @@ -9233,9 +9233,22 @@ function openpgp_keyring() { */ function getPublicKeysForKeyId(keyId) { var result = new Array(); - for (var i=0; i < this.publicKeys.length; i++) - if (keyId == this.publicKeys[i].obj.getKeyId()) - result[result.length] = this.publicKeys[i]; + for (var i=0; i < this.publicKeys.length; i++) { + var key = this.publicKeys[i]; + if (keyId == key.obj.getKeyId()) + result[result.length] = key; + else if (key.obj.subKeys != null) { + for (var j=0; j < key.obj.subKeys.length; j++) { + var subkey = key.obj.subKeys[j]; + if (keyId == subkey.getKeyId()) { + result[result.length] = { + obj: key.obj.getSubKeyAsKey(j), + keyId: subkey.getKeyId() + } + } + } + } + } return result; } this.getPublicKeysForKeyId = getPublicKeysForKeyId; @@ -9585,6 +9598,15 @@ function openpgp_msg_publickey() { return null; } + /* Returns the i-th subKey as a openpgp_msg_publickey object */ + function getSubKeyAsKey(i) { + var ret = new openpgp_msg_publickey(); + ret.userIds = this.userIds; + ret.userAttributes = this.userAttributes; + ret.publicKeyPacket = this.subKeys[i]; + return ret; + } + this.getEncryptionKey = getEncryptionKey; this.getSigningKey = getSigningKey; this.read_nodes = read_nodes; @@ -9594,6 +9616,7 @@ function openpgp_msg_publickey() { this.getFingerprint = getFingerprint; this.getKeyId = getKeyId; this.verifyBasicSignatures = verifyBasicSignatures; + this.getSubKeyAsKey = getSubKeyAsKey; } // GPG4Browsers - An OpenPGP implementation in javascript // Copyright (C) 2011 Recurity Labs GmbH diff --git a/resources/openpgp.min.js b/resources/openpgp.min.js index e703ddd1..b66b8684 100644 --- a/resources/openpgp.min.js +++ b/resources/openpgp.min.js @@ -80,7 +80,7 @@ JXG.Util.asciiCharCodeAt=function(b,a){var c=b.charCodeAt(a);if(255d?(a.push(String.fromCharCode(d)),c++):191d?(e=b.charCodeAt(c+1),a.push(String.fromCharCode((d&31)<<6|e&63)),c+=2):(e=b.charCodeAt(c+1),f=b.charCodeAt(c+2),a.push(String.fromCharCode((d&15)<<12|(e&63)<<6|f&63)),c+=3);return a.join("")}; JXG.Util.genUUID=function(){for(var b="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),a=Array(36),c=0,d,e=0;36>e;e++)8==e||13==e||18==e||23==e?a[e]="-":14==e?a[e]="4":(2>=c&&(c=33554432+16777216*Math.random()|0),d=c&15,c>>=4,a[e]=b[19==e?d&3|8:d]);return a.join("")}; -function openpgp_config(){this.config=null;this.default_config={prefer_hash_algorithm:2,encryption_cipher:9,compression:1,show_version:!0,show_comment:!0,integrity_protect:!0,composition_behavior:0,keyserver:"keyserver.linux.it"};this.versionstring="OpenPGP.js v.1.20130206";this.commentstring="http://openpgpjs.org";this.debug=!1;this.read=function(){var b=JSON.parse(window.localStorage.getItem("config"));null==b?(this.config=this.default_config,this.write()):this.config=b};this.write=function(){window.localStorage.setItem("config", +function openpgp_config(){this.config=null;this.default_config={prefer_hash_algorithm:2,encryption_cipher:9,compression:1,show_version:!0,show_comment:!0,integrity_protect:!0,composition_behavior:0,keyserver:"keyserver.linux.it"};this.versionstring="OpenPGP.js v.1.20130213";this.commentstring="http://openpgpjs.org";this.debug=!1;this.read=function(){var b=JSON.parse(window.localStorage.getItem("config"));null==b?(this.config=this.default_config,this.write()):this.config=b};this.write=function(){window.localStorage.setItem("config", JSON.stringify(this.config))}} function openpgp_cfb_encrypt(b,a,c,d,e,f){var g=Array(d),h=Array(d),b=b+b.charAt(d-2)+b.charAt(d-1);util.print_debug("prefixrandom:"+util.hexstrdump(b));for(var j="",k=0;k")[0]: b.trim(),d=d.toLowerCase();if(!util.emailRegEx.test(d))return a;for(b=0;b")[0]:b.trim(),d=d.toLowerCase();if(!util.emailRegEx.test(d))return a;for(b=0;b