From 84850a29ae6d7c9e724f1e4cba1c34767380f41d Mon Sep 17 00:00:00 2001 From: cgeek <cem.moreau@gmail.com> Date: Tue, 19 Aug 2014 21:57:45 +0200 Subject: [PATCH] Cleaning old unused code --- app/models/keyblock.js | 53 ------ app/service/KeychainService.js | 290 +-------------------------------- 2 files changed, 2 insertions(+), 341 deletions(-) diff --git a/app/models/keyblock.js b/app/models/keyblock.js index d5a34a4e7..0fe24a605 100644 --- a/app/models/keyblock.js +++ b/app/models/keyblock.js @@ -117,59 +117,6 @@ KeyBlockSchema.methods = { return pubkeys; }, - getTierCertificationPackets: function() { - var certifications = []; - this.publicKeys.forEach(function(obj){ - var fingerprint = obj.fingerprint; - var packets = new openpgp.packet.List(); - var base64decoded = base64.decode(obj.packets); - packets.read(base64decoded); - packets = packets.filterByTag(openpgp.enums.packet.signature); - packets.forEach(function(p){ - if (p.tag == openpgp.enums.packet.signature) { - var signaturesToKeep = [ - openpgp.enums.signature.cert_generic, - openpgp.enums.signature.cert_persona, - openpgp.enums.signature.cert_casual, - openpgp.enums.signature.cert_positive - ]; - var selfSig = fingerprint.match(new RegExp(p.issuerKeyId.toHex().toUpperCase() + '$')); - if (~signaturesToKeep.indexOf(p.signatureType) && !selfSig) - certifications.push(p); - } - }); - }); - return certifications; - }, - - getTierCertificationPacketsFor: function(fingerprint) { - var certifications = []; - this.publicKeys.forEach(function(obj){ - if (obj.fingerprint == fingerprint) { - var fingerprint = obj.fingerprint; - var packets = new openpgp.packet.List(); - var base64decoded = base64.decode(obj.packets); - packets.read(base64decoded); - packets = packets.filterByTag(openpgp.enums.packet.signature); - packets.forEach(function(p){ - if (p.tag == openpgp.enums.packet.signature) { - var signaturesToKeep = [ - openpgp.enums.signature.cert_generic, - openpgp.enums.signature.cert_persona, - openpgp.enums.signature.cert_casual, - openpgp.enums.signature.cert_positive - ]; - var selfSig = fingerprint.match(new RegExp(p.issuerKeyId.toHex().toUpperCase() + '$')); - p.target = fingerprint; - if (~signaturesToKeep.indexOf(p.signatureType) && !selfSig) - certifications.push(p); - } - }); - } - }); - return certifications; - }, - getMemberships: function() { var notFoundMembership = 0; var mss = {}; diff --git a/app/service/KeychainService.js b/app/service/KeychainService.js index 74780585f..8f2304ce6 100644 --- a/app/service/KeychainService.js +++ b/app/service/KeychainService.js @@ -275,6 +275,8 @@ function KeyService (conn, conf, PublicKeyService) { return; } + // TODO: check subkeys? + // Check against signature var entity = new Membership(ms); var armoredPubkey = key.getArmored(); @@ -352,126 +354,6 @@ function KeyService (conn, conf, PublicKeyService) { } } - /** - * Find the pubkey matching fingerprint + test its validity against WoT constraints (signatures). - **/ - function getValidMemberPubkey (now, block, fingerprint, done) { - var wotKey; - async.waterfall([ - function (next){ - getMemberOrNewcomerPubkey(block, fingerprint, next); - }, - function (wotPubkey, next) { - wotKey = wotPubkey; - // Check signatures' quantity + distance to WoT - var nbLinks = wotKey.getSignatories().length; - // wotKey.getSignatories().forEach(function(link){ - // if (Math.max(now - link.timestamp, 0) < LINK_DURATION) { - // nbLinks++; - // } - // }); - // Check against quantity - if (block.number > 0 && nbLinks < LINK_QUANTITY_MIN) { - next('Not enough links to join the Web of Trust'); - return; - } - Key.getMembers(next); - }, - function (members, next){ - // Check against distance to the WoT - async.forEach(members, function(member, callback){ - findExistingPath(wotKey, member, MAX_STEPS, callback); - }, next); - }, - function (next){ - next(null, wotKey.armor()); - }, - ], done); - } - - /** - * Find a member's pubkey, wether it is in the memory block or persisted keychain, - * and returns it as WOTPubkey object. - **/ - function getMemberOrNewcomerPubkey (block, fingerprint, done) { - var wotPubkey; - block.publicKeys.forEach(function(pk){ - if (pk.fingerprint == fingerprint) - wotPubkey = new WOTPubkey(fingerprint, pk.packets); - }); - // New PubKey - if (wotPubkey) { - async.waterfall([ - function (next) { - // Check each pubkey packet has a UserID, and only one - // Check the self-certification exists with pubkey - // Only one self-certification - if (!wotPubkey.hasOnlyOneValidUserID()) { - next('One and only one UserID required & allowed for a pubkey'); - return; - } - if (wotPubkey.getSelfCertifications().length != 1) { - next('Only one self certification allowed for a key'); - return; - } - // Check each pubkey is here for first time - // Check no KeyID conflict - Key.isMember(fingerprint.substring(24), next); - }, - function (isMember, next){ - if (isMember) { - next('Cannot add a pubkey for an existing member'); - return; - } - // Check signatures (good signature + from member) - if (block.number == 0) { - // No tier-signature allowed (no existing member to justify it) - if (wotPubkey.getSignatories().length > 0) { - next('No tier-certification allowed for root keyblock'); - return; - } - else next(); - } - else { - async.forEach(wotPubkey.getSignatories(), function(signatory, callback){ - async.waterfall([ - function (next){ - getMemberPubkey(signatory.keyID, next); - }, - function (wotKey, next){ - // Tiers certif: only from members - if (!signatory.packet.verify(wotPubkey.userid, tierPubkey)) { - next('Signature verification failed for userid'); - return; - } - next(); - }, - ], callback); - }, next); - } - }, - ], function (err) { - done(err, wotPubkey); - }); - } - else { - // Existing pubkey - async.waterfall([ - function (next){ - PublicKey.getTheOne(fingerprint, next); - }, - function (pubk, next){ - next(null, new WOTPubkey(fingerprint, pubk.keychain)); - }, - function (wotPubk, next){ - var certifs = block.getTierCertificationPacketsFor(wotPubk.fingerprint); - wotPubk.addAll(certifs); - next(null, wotPubk); - }, - ], done); - } - } - function checkProofOfWork (block, done) { var powRegexp = new RegExp('^0{' + MINIMUM_ZERO_START + '}'); if (!block.hash.match(powRegexp)) @@ -480,32 +362,6 @@ function KeyService (conn, conf, PublicKeyService) { done(); } - /** - * Find a member's pubkey, wether it is in the memory block or persisted keychain, - * and returns it as WOTPubkey object. - **/ - function getMemberPubkey (fingerprint, done) { - async.waterfall([ - function (next){ - Key.isMember(fingerprint, next); - }, - function (isMember, next){ - if (!isMember) { - next('Not a member key'); - return; - } - PublicKey.getTheOne(fingerprint, next); - }, - function (pubkey, next){ - next(null, new WOTPubkey(fingerprint, pubkey.keychain)); - }, - ], done); - } - - function findExistingPath(wotKey, member, maxSteps, callback) { - callback('No path found!'); - } - function checkKicked (block, newLinks, done) { var membersChanges = block.membersChanges; async.waterfall([ @@ -556,23 +412,6 @@ function KeyService (conn, conf, PublicKeyService) { ], done); } - function checkCertificationsUpdates (block, done) { - // Only *members* signatures can be here (not newcomers, nor leaving members) - if (block.number == 0) { - done(); - return; - } - var certifications = block.getTierCertificationPackets(); - async.forEach(certifications, function(cert, callback){ - Key.isStayingMember(cert.issuerKeyId.toHex().toUpperCase(), function (err, willBeMember) { - if (!willBeMember || err) - callback(err || 'Signatory is not a member'); - else - callback(); - }); - }, done); - } - function updateMembers (block, done) { async.forEach(block.membersChanges, function(mc, callback){ var isPlus = mc[0] == '+'; @@ -732,131 +571,6 @@ function KeyService (conn, conf, PublicKeyService) { }, done); } - function WOTPubkey (fingerprint, rawPackets) { - - this.packets = new openpgp.packet.List(); - - var that = this; - - // Get signatories' certification packet of the userid (not checked yet) - this.addAll = function (packets) { - var thePackets = new openpgp.packet.List(); - var base64decoded = base64.decode(packets); - thePackets.read(base64decoded); - thePackets = thePackets.filterByTag( - openpgp.enums.packet.publicKey, - openpgp.enums.packet.publicSubkey, - openpgp.enums.packet.userid, - openpgp.enums.packet.signature); - thePackets.forEach(function(p){ - if (p.tag == openpgp.enums.packet.signature) { - var signaturesToKeep = [ - openpgp.enums.signature.cert_generic, - openpgp.enums.signature.cert_persona, - openpgp.enums.signature.cert_casual, - openpgp.enums.signature.cert_positive, - openpgp.enums.signature.subkey_binding - ]; - if (~signaturesToKeep.indexOf(p.signatureType)) - that.packets.push(p); - } - else that.packets.push(p); - }); - } - - this.addAll(rawPackets); - - // Get signatories' certification packet of the userid (not checked yet) - this.getSignatories = function () { - var signatories = []; - this.packets.filterByTag(openpgp.enums.packet.signature).forEach(function(packet){ - var issuerKeyId = packet.issuerKeyId.toHex().toUpperCase(); - var isSelfSig = fingerprint.match(new RegExp(issuerKeyId + '$')); - if (!isSelfSig) { - signatories.push({ - keyID: issuerKeyId, - packet: packet - }); - } - }); - return signatories; - }; - - // Get signatories' certification packet of the userid (not checked yet) - this.hasOnlyOneValidUserID = function () { - return this.getPubKey().getPrimaryUser() != null && this.getUserIDs().length == 1; - }; - - // Get signatories' certification packet of the userid (not checked yet) - this.getSelfCertifications = function () { - var certifs = []; - this.packets.filterByTag(openpgp.enums.packet.signature).forEach(function(packet){ - var signaturesToKeep = [ - openpgp.enums.signature.cert_generic, - openpgp.enums.signature.cert_persona, - openpgp.enums.signature.cert_casual, - openpgp.enums.signature.cert_positive - ]; - if (~signaturesToKeep.indexOf(packet.signatureType)) { - var issuerKeyId = packet.issuerKeyId.toHex().toUpperCase(); - var isSelfSig = fingerprint.match(new RegExp(issuerKeyId + '$')); - if (isSelfSig) { - certifs.push({ - keyID: issuerKeyId, - packet: packet - }); - } - } - }); - return certifs; - }; - - this.getPurePubkey = function () { - return new openpgp.key.Key(this.getPurePackets()); - }; - - // Get signatories' certification packet of the userid (not checked yet) - this.getPurePackets = function () { - var purePackets = []; - var packets = this.packets.filterByTag( - openpgp.enums.packet.publicKey, - openpgp.enums.packet.publicSubkey, - openpgp.enums.packet.userid, - openpgp.enums.packet.signature); - packets.forEach(function(packet){ - var signaturesToKeep = [ - openpgp.enums.signature.cert_generic, - openpgp.enums.signature.cert_persona, - openpgp.enums.signature.cert_casual, - openpgp.enums.signature.cert_positive, - openpgp.enums.signature.subkey_binding - ]; - if (~signaturesToKeep.indexOf(packet.signatureType)) { - var issuerKeyId = packet.issuerKeyId.toHex().toUpperCase(); - var isSelfSig = fingerprint.match(new RegExp(issuerKeyId + '$')); - if (isSelfSig) { - purePackets.push(packet); - } - } - }); - return purePackets; - }; - - this.getPubKey = function () { - return new openpgp.key.Key(this.packets); - }; - - this.getUserIDs = function () { - var pk = this.getPubKey(); - return pk.getUserIds(); - } - - this.armor = function () { - var armor = new openpgp.key.Key(this.packets).armor(); - return armor; - } - } - this.current = function (done) { KeyBlock.current(function (err, kb) { done(err, kb || null); -- GitLab