Drop key packets not in a meaningful order according to RFC4880 "11. Packet Composition"

This commit is contained in:
Thomas Oberndörfer 2014-04-02 18:28:08 +02:00
parent d28eb4406d
commit 9413cd6e7f

View File

@ -26,7 +26,8 @@
var packet = require('./packet'), var packet = require('./packet'),
enums = require('./enums.js'), enums = require('./enums.js'),
armor = require('./encoding/armor.js'), armor = require('./encoding/armor.js'),
config = require('./config'); config = require('./config'),
util = require('./util');
/** /**
* @class * @class
@ -83,6 +84,10 @@ Key.prototype.packetlist2structure = function(packetlist) {
case enums.signature.cert_persona: case enums.signature.cert_persona:
case enums.signature.cert_casual: case enums.signature.cert_casual:
case enums.signature.cert_positive: case enums.signature.cert_positive:
if (!user) {
util.print_debug('Dropping certification signatures without preceding user packet');
continue;
}
if (packetlist[i].issuerKeyId.equals(primaryKeyId)) { if (packetlist[i].issuerKeyId.equals(primaryKeyId)) {
if (!user.selfCertifications) user.selfCertifications = []; if (!user.selfCertifications) user.selfCertifications = [];
user.selfCertifications.push(packetlist[i]); user.selfCertifications.push(packetlist[i]);
@ -105,12 +110,20 @@ Key.prototype.packetlist2structure = function(packetlist) {
this.directSignatures.push(packetlist[i]); this.directSignatures.push(packetlist[i]);
break; break;
case enums.signature.subkey_binding: case enums.signature.subkey_binding:
if (!subKey) {
util.print_debug('Dropping subkey binding signature without preceding subkey packet');
continue;
}
subKey.bindingSignature = packetlist[i]; subKey.bindingSignature = packetlist[i];
break; break;
case enums.signature.key_revocation: case enums.signature.key_revocation:
this.revocationSignature = packetlist[i]; this.revocationSignature = packetlist[i];
break; break;
case enums.signature.subkey_revocation: case enums.signature.subkey_revocation:
if (!subKey) {
util.print_debug('Dropping subkey revocation signature without preceding subkey packet');
continue;
}
subKey.revocationSignature = packetlist[i]; subKey.revocationSignature = packetlist[i];
break; break;
} }