mirror of
https://github.com/openpgpjs/openpgpjs.git
synced 2025-03-30 15:08:32 +00:00
Fixed bug where empty strings can't be decrypted.
This commit is contained in:
parent
93e653f187
commit
c0a6caa177
@ -7424,7 +7424,7 @@ function openpgp_config() {
|
||||
keyserver: "keyserver.linux.it" // "pgp.mit.edu:11371"
|
||||
};
|
||||
|
||||
this.versionstring ="OpenPGP.js v.1.20131026";
|
||||
this.versionstring ="OpenPGP.js v.1.20131028";
|
||||
this.commentstring ="http://openpgpjs.org";
|
||||
/**
|
||||
* Reads the config out of the HTML5 local storage
|
||||
@ -8765,7 +8765,7 @@ function openpgp_msg_message() {
|
||||
var messages = this.decryptMessages(private_key, sessionkey);
|
||||
var texts = [];
|
||||
for(var m in messages){
|
||||
if (messages[m].signature) {
|
||||
if (messages[m].messagePacket.tagType == 2) {
|
||||
texts.push({text:messages[m].text, signatureValid:messages[m].verifySignature(pubkey)})
|
||||
}
|
||||
}
|
||||
@ -8783,7 +8783,7 @@ function openpgp_msg_message() {
|
||||
var messages = this.decryptMessages(private_key, sessionkey);
|
||||
var texts = [];
|
||||
for(var m in messages){
|
||||
if(messages[m].data){
|
||||
if(messages[m].messagePacket.tagType == 11) {
|
||||
texts.push(messages[m].data);
|
||||
}
|
||||
}
|
||||
|
12
resources/openpgp.min.js
vendored
12
resources/openpgp.min.js
vendored
@ -286,7 +286,7 @@ JXG.Util.asciiCharCodeAt=function(b,a){var c=b.charCodeAt(a);if(255<c)switch(c){
|
||||
151;break;case 732:c=152;break;case 8482:c=153;break;case 353:c=154;break;case 8250:c=155;break;case 339:c=156;break;case 382:c=158;break;case 376:c=159}return c};
|
||||
JXG.Util.utf8Decode=function(b){var a=[],c=0,d=0,e=0,f;if(!JXG.exists(b))return"";for(;c<b.length;)d=b.charCodeAt(c),128>d?(a.push(String.fromCharCode(d)),c++):191<d&&224>d?(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:8,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.20131026";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:8,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.20131028";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))}}var b64s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
function s2r(b){var a,c,d,e="",f=0,g=0,h=b.length;for(d=0;d<h;d++)c=b.charCodeAt(d),0==g?(e+=b64s.charAt(c>>2&63),a=(c&3)<<4):1==g?(e+=b64s.charAt(a|c>>4&15),a=(c&15)<<2):2==g&&(e+=b64s.charAt(a|c>>6&3),f+=1,0==f%60&&(e+="\n"),e+=b64s.charAt(c&63)),f+=1,0==f%60&&(e+="\n"),g+=1,3==g&&(g=0);0<g&&(e+=b64s.charAt(a),f+=1,0==f%60&&(e+="\n"),e+="=",f+=1);1==g&&(0==f%60&&(e+="\n"),e+="=");"\n"===e.charAt(e.length-1)&&(e=e.slice(0,-1));return e}
|
||||
function r2s(b){var a,c,d="",e=0,f=0,g=b.length;for(c=0;c<g;c++)a=b64s.indexOf(b.charAt(c)),0<=a&&(e&&(d+=String.fromCharCode(f|a>>6-e&255)),e=e+2&7,f=a<<e&255);return d}
|
||||
@ -332,11 +332,11 @@ this.privateKeys[b].obj.userIds[c].text.toLowerCase().indexOf(d)&&(a[a.length]=t
|
||||
this.privateKeys[c].obj.getKeyId()&&(a[a.length]={key:this.privateKeys[c],keymaterial:this.privateKeys[c].obj.privateKeyPacket}),null!=this.privateKeys[c].obj.subKeys)for(var d=this.privateKeys[c].obj.getSubKeyIds(),e=0;e<d.length;e++)b==util.hexstrdump(d[e])&&(a[a.length]={key:this.privateKeys[c],keymaterial:this.privateKeys[c].obj.subKeys[e]});return a};this.importPublicKey=function(b){for(var a=openpgp.read_publicKey(b),c=0;c<a.length;c++)this.publicKeys[this.publicKeys.length]={armored:b,obj:a[c],
|
||||
keyId:a[c].getKeyId()};return!0};this.importPrivateKey=function(b,a){var c=openpgp.read_privateKey(b);if(!c[0].decryptSecretMPIs(a))return!1;for(var d=0;d<c.length;d++)this.privateKeys[this.privateKeys.length]={armored:b,obj:c[d],keyId:c[d].getKeyId()};return!0};this.exportPublicKey=function(b){return this.publicKey[b]};this.removePublicKey=function(b){b=this.publicKeys.splice(b,1);this.store();return b};this.exportPrivateKey=function(b){return this.privateKeys[b]};this.removePrivateKey=function(b){b=
|
||||
this.privateKeys.splice(b,1);this.store();return b}}
|
||||
function openpgp_msg_message(){this.text="";this.type=this.messagePacket=null;this.decrypt=function(b,a){var c=this.decryptAndVerifySignature(b,a);if(null==c)return null;for(var d=[],e=0;e<c.length;e++){if(!1==c[e].signatureValid)return null;d.push(c[e].text)}return d.join("\n")};this.decryptAndVerifySignature=function(b,a,c){var b=this.decryptMessages(b,a),a=[],d;for(d in b)b[d].signature&&a.push({text:b[d].text,signatureValid:b[d].verifySignature(c)});return a};this.decryptWithoutVerification=function(b,
|
||||
a){var c=this.decryptMessages(b,a),d=[],e;for(e in c)c[e].data&&d.push(c[e].data);return d};this.decryptMessages=function(b,a){if(null==b||null==a||""==a)return null;var c=a.decrypt(this,b.keymaterial);if(null==c)return null;util.print_debug_hexstr_dump("openpgp.msg.messge decrypt:\n",c);return openpgp.read_messages_dearmored({text:c,openpgp:c})};this.verifySignature=function(b){var a=!1;if(2==this.signature.tagType){if(!b||0==b.length)if(4==this.signature.version)b=openpgp.keyring.getPublicKeysForKeyId(this.signature.issuerKeyId);
|
||||
else if(3==this.signature.version)b=openpgp.keyring.getPublicKeysForKeyId(this.signature.keyId);else return util.print_error("unknown signature type on message!"),!1;if(0==b.length)util.print_warning("Unable to verify signature of issuer: "+util.hexstrdump(this.signature.issuerKeyId)+". Public key not found in keyring.");else for(var c=0;c<b.length;c++)this.signature.verify(this.text.replace(/\r\n/g,"\n").replace(/\n/g,"\r\n"),b[c])?(util.print_info("Found Good Signature from "+b[c].obj.userIds[0].text+
|
||||
" (0x"+util.hexstrdump(b[c].obj.getKeyId()).substring(8)+")"),a=!0):util.print_error("Signature verification failed: Bad Signature from "+b[c].obj.userIds[0].text+" (0x"+util.hexstrdump(b[0].obj.getKeyId()).substring(8)+")")}return a};this.toString=function(){var b="Session Keys:\n";if(null!=this.sessionKeys)for(var a=0;a<this.sessionKeys.length;a++)b+=this.sessionKeys[a].toString();b+="\n\n EncryptedData:\n";null!=this.encryptedData&&(b+=this.encryptedData.toString());b+="\n\n Signature:\n";null!=
|
||||
this.signature&&(b+=this.signature.toString());b+="\n\n Text:\n";null!=this.signature&&(b+=this.text);return b}}
|
||||
function openpgp_msg_message(){this.text="";this.type=this.messagePacket=null;this.decrypt=function(b,a){var c=this.decryptAndVerifySignature(b,a);if(null==c)return null;for(var d=[],e=0;e<c.length;e++){if(!1==c[e].signatureValid)return null;d.push(c[e].text)}return d.join("\n")};this.decryptAndVerifySignature=function(b,a,c){var b=this.decryptMessages(b,a),a=[],d;for(d in b)2==b[d].messagePacket.tagType&&a.push({text:b[d].text,signatureValid:b[d].verifySignature(c)});return a};this.decryptWithoutVerification=
|
||||
function(b,a){var c=this.decryptMessages(b,a),d=[],e;for(e in c)11==c[e].messagePacket.tagType&&d.push(c[e].data);return d};this.decryptMessages=function(b,a){if(null==b||null==a||""==a)return null;var c=a.decrypt(this,b.keymaterial);if(null==c)return null;util.print_debug_hexstr_dump("openpgp.msg.messge decrypt:\n",c);return openpgp.read_messages_dearmored({text:c,openpgp:c})};this.verifySignature=function(b){var a=!1;if(2==this.signature.tagType){if(!b||0==b.length)if(4==this.signature.version)b=
|
||||
openpgp.keyring.getPublicKeysForKeyId(this.signature.issuerKeyId);else if(3==this.signature.version)b=openpgp.keyring.getPublicKeysForKeyId(this.signature.keyId);else return util.print_error("unknown signature type on message!"),!1;if(0==b.length)util.print_warning("Unable to verify signature of issuer: "+util.hexstrdump(this.signature.issuerKeyId)+". Public key not found in keyring.");else for(var c=0;c<b.length;c++)this.signature.verify(this.text.replace(/\r\n/g,"\n").replace(/\n/g,"\r\n"),b[c])?
|
||||
(util.print_info("Found Good Signature from "+b[c].obj.userIds[0].text+" (0x"+util.hexstrdump(b[c].obj.getKeyId()).substring(8)+")"),a=!0):util.print_error("Signature verification failed: Bad Signature from "+b[c].obj.userIds[0].text+" (0x"+util.hexstrdump(b[0].obj.getKeyId()).substring(8)+")")}return a};this.toString=function(){var b="Session Keys:\n";if(null!=this.sessionKeys)for(var a=0;a<this.sessionKeys.length;a++)b+=this.sessionKeys[a].toString();b+="\n\n EncryptedData:\n";null!=this.encryptedData&&
|
||||
(b+=this.encryptedData.toString());b+="\n\n Signature:\n";null!=this.signature&&(b+=this.signature.toString());b+="\n\n Text:\n";null!=this.signature&&(b+=this.text);return b}}
|
||||
function openpgp_msg_privatekey(){this.subKeys=[];this.privateKeyPacket=null;this.userIds=[];this.userAttributes=[];this.revocationSignatures=[];this.subKeys=[];this.extractPublicKey=function(){for(var b=this.privateKeyPacket.publicKey.header+this.privateKeyPacket.publicKey.data,a=0;a<this.userIds.length;a++){if(0===this.userIds[a].certificationSignatures.length)return util.print_error("extractPublicKey - missing certification signatures"),null;for(var c=new openpgp_packet_userid,b=b+c.write_packet(this.userIds[a].text),
|
||||
c=0;c<this.userIds[a].certificationSignatures.length;c++)var d=this.userIds[a].certificationSignatures[c],b=b+(openpgp_packet.write_packet_header(2,d.data.length)+d.data)}for(a=0;a<this.subKeys.length;a++)if(c=this.subKeys[a].publicKey,b+=openpgp_packet.write_old_packet_header(14,c.data.length)+c.data,c=this.subKeys[a].subKeySignature,null!==c)b+=openpgp_packet.write_packet_header(2,c.data.length)+c.data;else return util.print_error("extractPublicKey - missing subkey signature"),null;return openpgp_encoding_armor(4,
|
||||
b)};this.getSigningKey=function(){if((17==this.privateKeyPacket.publicKey.publicKeyAlgorithm||2!=this.privateKeyPacket.publicKey.publicKeyAlgorithm)&&3==this.privateKeyPacket.publicKey.verifyKey())return this.privateKeyPacket;if(4==this.privateKeyPacket.publicKey.version)for(var b=0;b<this.privateKeyPacket.subKeys.length;b++)if((17==this.privateKeyPacket.subKeys[b].publicKey.publicKeyAlgorithm||2!=this.privateKeyPacket.subKeys[b].publicKey.publicKeyAlgorithm)&&3==this.privateKeyPacket.subKeys[b].publicKey.verifyKey())return this.privateKeyPacket.subKeys[b];
|
||||
|
@ -65,7 +65,7 @@ function openpgp_msg_message() {
|
||||
var messages = this.decryptMessages(private_key, sessionkey);
|
||||
var texts = [];
|
||||
for(var m in messages){
|
||||
if (messages[m].signature) {
|
||||
if (messages[m].messagePacket.tagType == 2) {
|
||||
texts.push({text:messages[m].text, signatureValid:messages[m].verifySignature(pubkey)})
|
||||
}
|
||||
}
|
||||
@ -83,7 +83,7 @@ function openpgp_msg_message() {
|
||||
var messages = this.decryptMessages(private_key, sessionkey);
|
||||
var texts = [];
|
||||
for(var m in messages){
|
||||
if(messages[m].data){
|
||||
if(messages[m].messagePacket.tagType == 11) {
|
||||
texts.push(messages[m].data);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user