From f98339d6ce552145dc046886d6fc8978563e2b5e Mon Sep 17 00:00:00 2001 From: cgeek <cem.moreau@gmail.com> Date: Sat, 23 Aug 2014 22:37:20 +0200 Subject: [PATCH] Fix: certifications for NEWCOMERS were not recorded --- app/lib/keyhelper.js | 7 +++++++ app/models/keyblock.js | 4 ++-- app/service/KeychainService.js | 5 ++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/lib/keyhelper.js b/app/lib/keyhelper.js index e61ca3497..9b908e2ef 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 8a0e78b82..cce0243ec 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 cc5a87931..c9f1ddaa3 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){ -- GitLab