diff --git a/app/lib/keyhelper.js b/app/lib/keyhelper.js index e61ca34973576bab44395a88f280870634234c80..9b908e2ef734dc7661cc4c39a147b6739e36c46c 100644 --- a/app/lib/keyhelper.js +++ b/app/lib/keyhelper.js @@ -32,6 +32,13 @@ module.exports = { return new KeyHelper(packets); }, + fromEncodedSeparatedPackets: function (encodedKeyPackets, encodedOtherCertifications){ + var key = this.fromDecodedPackets(base64.decode(encodedKeyPackets)); + if (encodedOtherCertifications) + key.setOtherCertifications(this.toPacketlist(encodedOtherCertifications)); + return key; + }, + toPacketlist: function (encodedPackets){ var packets = new PacketList(); packets.read(base64.decode(encodedPackets)); diff --git a/app/models/keyblock.js b/app/models/keyblock.js index 8a0e78b82cb042f0eacb3d115fc714bfef839a95..cce0243ec7b6b8e435b32b116fb4e5d881c8d1e1 100644 --- a/app/models/keyblock.js +++ b/app/models/keyblock.js @@ -75,8 +75,8 @@ KeyBlockSchema.methods = { getNewPubkeys: function() { var pubkeys = []; this.keysChanges.forEach(function(kc){ - if (kc.type == 'F' || kc.type == 'N') { - pubkeys.push(kc.keypackets); + if (kc.type == 'N') { + pubkeys.push(keyhelper.fromEncodedSeparatedPackets(kc.keypackets, kc.certpackets)); } }); return pubkeys; diff --git a/app/service/KeychainService.js b/app/service/KeychainService.js index cc5a87931ab0f15f0d59cd8eb726c6d5eacac3a7..c9f1ddaa3a8ebc5d9699a31ae47a918f8f3daa42 100644 --- a/app/service/KeychainService.js +++ b/app/service/KeychainService.js @@ -520,8 +520,7 @@ function KeyService (conn, conf, PublicKeyService) { function (next){ // Save new pubkeys (from NEWCOMERS) var pubkeys = block.getNewPubkeys(); - async.forEach(pubkeys, function(encodedPackets, callback){ - var key = keyhelper.fromEncodedPackets(encodedPackets); + async.forEach(pubkeys, function(key, callback){ var fpr = key.getFingerprint(); var uid = key.getUserID(); var kid = fpr.substring(24); @@ -529,7 +528,7 @@ function KeyService (conn, conf, PublicKeyService) { fingerprint: fpr, keyID: kid, uid: uid, - packets: encodedPackets + packets: key.getEncodedPacketList() }); async.parallel({ trusted: function(callback){