diff --git a/server.js b/server.js index 5eb8d5e5b2d5d230bbb39903fcfcf9a45704d743..30917ef7ecba7670b2faa337fdad36dd84adf97f 100644 --- a/server.js +++ b/server.js @@ -9,7 +9,6 @@ var express = require('express'); var request = require('request'); var http = require('http'); var log4js = require('log4js'); -var connectPgp = require('connect-pgp'); var models = ['Identity', 'Certification', 'Amendment', 'Coin', 'Configuration', 'Forward', 'Key', 'Link', 'TrustedKey', 'Merkle', 'Peer', 'PublicKey', 'Wallet', 'Transaction', 'TxMemory', 'Membership', 'Block']; var INNER_WRITE = true; diff --git a/test/fast/coins.js b/test/fast/coins.js deleted file mode 100644 index 1740702083129d64c5602aba1c47617610dd79a2..0000000000000000000000000000000000000000 --- a/test/fast/coins.js +++ /dev/null @@ -1,81 +0,0 @@ -var should = require('should'); -var assert = require('assert'); -var async = require('async'); -var sha1 = require('sha1'); -var fs = require('fs'); -var coiner = require('../../app/lib/algos/coins/coiner'); -var log4js = require('log4js'); -var logger = log4js.getLogger('test coins'); - -logger.setLevel('WARN'); - -describe('Testing coin distribution algo, we should have ', function(){ - - // Power 2 values - simple cases - testCoinerFor2Power(Math.pow(2, 0), 0); - testCoinerFor2Power(Math.pow(2, 1), 0); - testCoinerFor2Power(Math.pow(2, 5), 0); - testCoinerFor2Power(Math.pow(2, 5), 1); - testCoinerFor2Power(Math.pow(2, 5), 2); - testCoinerFor2Power(Math.pow(2, 6), 2); - testCoinerFor2Power(Math.pow(2, 14), 4); - - // Non-power 2 values - testCoinerForNon2Power(129, 0); - testCoinerForNon2Power(16397, 0); - testCoinerForNon2Power(10, 3, 3); - testCoinerForNon2Power(300, 3, 3); - testCoinerForNon2Power(2300300, 3, 25); - testCoinerForNon2Power(1073741824, 23, 25); - - testCoinsForDividend(1, 0, [1]); - testCoinsForDividend(2, 0, [2]); - testCoinsForDividend(3, 0, [3]); - testCoinsForDividend(4, 0, [4]); - testCoinsForDividend(5, 0, [5]); - testCoinsForDividend(6, 0, [6]); - testCoinsForDividend(7, 0, [7]); - testCoinsForDividend(8, 0, [6,1]); - testCoinsForDividend(9, 0, [7,1]); - testCoinsForDividend(12, 0, [10,1]); - testCoinsForDividend(16, 0, [8,2,1]); - testCoinsForDividend(32, 0, [10,3,2,1]); - testCoinsForDividend(100, 0, [26,7,5,3,1]); - testCoinsForDividend(150, 0, [28,7,5,3,2,1]); - testCoinsForDividend(225, 0, [37,12,9,6,3,1]); -}); - -function testCoinerFor2Power (value, sum) { - it('coins for value 2^' + value + ' = ' + sum, function(){ - logger.info('-----------'); - var computed = 0; - coiner.Base2Draft(value, 0).coins.forEach(function(Pn){ - logger.info(Pn); - Pn.forEach(function(coinPower){ - computed += Math.pow(2, coinPower); - }); - }); - assert.equal(computed, value); - }); -} - -function testCoinerForNon2Power (value, p) { - it('coins for value ' + value, function(){ - logger.info('-----------'); - var computed = 0; - coiner.Base2Draft(value, p).coins.forEach(function(Pn){ - logger.info(Pn); - Pn.forEach(function(coinPower){ - computed += Math.pow(2, coinPower); - }); - }); - assert.equal(computed, value); - }); -} - -function testCoinsForDividend (dividend, p, expectedArray) { - it('coins for dividend ' + dividend + ' should be ' + JSON.stringify(expectedArray), function(){ - var res = coiner.Base2Draft(dividend, p); - assert.deepEqual(res.coinList, expectedArray); - }); -} diff --git a/test/fast/packets.js b/test/fast/packets.js deleted file mode 100644 index 6450a2172f6e5fdcd23475d3f98b9aa4546918ab..0000000000000000000000000000000000000000 --- a/test/fast/packets.js +++ /dev/null @@ -1,290 +0,0 @@ -var should = require('should'); -var assert = require('assert'); -var async = require('async'); -var fs = require('fs'); -var openpgp = require('openpgp'); -var base64 = require('../../app/lib/base64'); -var jpgp = require('../../app/lib/jpgp'); - -var catPubkeyPackets = "" + - "xsBNBFHHC/EBCADWTLSN7EGP+n30snndS3ZNcB02foL+0opcS6LK2coPDJLg\n" + - "2nookeJRHZxF3THmZQrKwZOjiuDBinOc5DWlzIS/gD/RaXwntgPFlGKBlBU+\n" + - "g255fr28ziSb5Y1lW4N//nUFdPZzoMmPgRj0b17T0UPCoMR8ZZ/Smk5LINbQ\n" + - "wt+A+LEoxEdEVcq+Tyc0OlEabqO6RFqiKDRiPhGPiCwVQA3yPjb6iCp5gTch\n" + - "ObCxCnDbxA0Mfj9FmHrGbepNHGXxStO4xT0woCb7y02S1E8K08kOc5Bq9e1Y\n" + - "j5I/mdaw4Hn/Wp28lZl1mnO1u1z9ZU/rcglhEyaEOTwasheb44QcdGSfABEB\n" + - "AAHNTUxvTCBDYXQgKHVkaWQyO2M7Q0FUO0xPTDsyMDAwLTA0LTE5O2UrNDMu\n" + - "NzAtMDc5LjQyOzA7KSA8Y2VtLm1vcmVhdUBnbWFpbC5jb20+wsB9BBMBCAAn\n" + - "BQJRxwvxAhsDBQkLR5jvBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJEOnK\n" + - "t20ZqGUeZYcH/0ItH4b/O0y7V1Jzc1DZAdn4iDiI7/SF3fN4f6cJCu/SOVb+\n" + - "ERFIb6JK+HNHdVAcMHKaPW625R0FahHUkcXWkkGmQ6+sLIsVZwVN1oeZtlD1\n" + - "2cq9A4UJyfJUXkinMKkI8xpdV8J7s5wFRavOS/qaF5beah0Z+IGwQK0nuXxW\n" + - "pT6UZWbpUfXPQB2Mz2/rpjSWKwO3X4FwwOfDiuZExyH2JPDYshdPcj/x+gnz\n" + - "YW9XfWCJw3rOK42vtM+aLtUpJO0Jh6X/sj/iqyS4rPB4DVCmEgSXPx1P+kqn\n" + - "sz3aNTOIujXS8Faz+TC+eNhn+z3SoTl5gBlNNM171fWFr0BR3nIfIu7CwFwE\n" + - "EAEIAAYFAlOm/AEACgkQJFehWHyg7Zw7KggAnOaLv+/B/szpz+qE61qIVMOB\n" + - "b77R3AcIJW4excA4yWUQIyzhBH/srvp/9OG5aMHuxj5SpNITPMiPgUcH6IEc\n" + - "Dao+5IZSFzV9mfeWvRkHPzjFvVPakLheKK8yFjUzyZPYORs6OO67eSCCKfIp\n" + - "CuCgIFbL9GnBMVUhIxRN12+DkJu9jxDyaEwa0mShRibMWfU/lIBxrWVJIXMN\n" + - "zIQF/IMr19BBT83mfH6h4e4Tg3yat64zYxAlF81xG8k8oaS8/P4DPAISq6Ua\n" + - "hMUN3UJwGzk7HdO7wo0F3e5onOinit7RTpg/tAZX+r3VIj8TzZnl4QpCS15A\n" + - "9r9tAcdC0An1ji4sVQ==\n"; - -describe('A packetlist of one element', function(){ - - var packets = new openpgp.packet.List(); - packets.read(base64.decode(catPubkeyPackets)); - var oneElementList = packets.filterByTag(openpgp.enums.packet.publicKey); - - it('should have one element', function(){ - assert.equal(oneElementList.length, 1); - }); - - it('should NOT be the same as the element', function(){ - assert.notEqual(base64.encode(oneElementList.write()), base64.encode(oneElementList[0].write())); - }); -}); - -describe('Reading key packets:', function(){ - - var packets = new openpgp.packet.List(); - packets.read(base64.decode(catPubkeyPackets)); - var key = new openpgp.key.Key(packets); - - it('fingerprint should be cat\'s one', function(){ - assert.equal(key.primaryKey.getFingerprint().toUpperCase(), 'C73882B64B7E72237A2F460CE9CAB76D19A8651E'); - }); - - it('basic pubkey should give a 1 key array', function(){ - var keys = [key]; - assert.equal(keys.length, 1); - assert.equal(keys[0].getKeyIds().length, 1); - assert.equal(keys[0].getKeyIds()[0].toHex().toUpperCase(), 'E9CAB76D19A8651E'); - assert.equal(keys[0].getUserIds().length, 1); - assert.equal(keys[0].getUserIds()[0], 'LoL Cat (udid2;c;CAT;LOL;2000-04-19;e+43.70-079.42;0;) <cem.moreau@gmail.com>'); - assert.equal(keys[0].isPublic(), true); - assert.equal(keys[0].isPrivate(), false); - assert.notEqual(keys[0].getPrimaryUser(), null); - assert.notEqual(keys[0].getPrimaryUser().user, null); - assert.equal(keys[0].getPrimaryUser().user.userId.userid, keys[0].getUserIds()[0]); - }); -}); - - -var asciiCatPubkey = fs.readFileSync(__dirname + "/../data/lolcat.pub", 'utf8'); - -describe('Extracting', function(){ - - describe('pubkey packet of Cat\'s certificate', function(){ - - var pubkeys, pubkey; - - before(function(done) { - - pubkeys = openpgp.key.readArmored(asciiCatPubkey).keys; - pubkey = pubkeys[0]; - done(); - }); - - it('pubkey should give a 1 key array', function(){ - pubkeys.should.be.an.Array; - assert.equal(pubkeys.length, 1); - }); - - it('pubkey should give a 8 packets list', function(){ - var packets = pubkey.toPacketlist(); - var binConcat = packets.write(); - var base64result = base64.encode(binConcat); - assert.equal(base64result, base64packetList); - assert.equal(packets.length, 8); - }); - }); -}); - -describe('Recomposing', function(){ - - describe('pubkey of Cat\'s certificate', function(){ - - it('with base64 encoded should give a 8 packets list', function(){ - var packets = new openpgp.packet.List(); - var base64decoded = base64.decode(base64packetList); - var base64recoded = base64.encode(base64decoded); - packets.read(base64decoded); - assert.equal(base64recoded, base64packetList); - assert.equal(packets.length, 8); - }); - - it('keep only pubkey, subkeys, uid and certifications', function(){ - var packets = new openpgp.packet.List(); - var packetsFinal = new openpgp.packet.List(); - var base64decoded = base64.decode(base64packetList); - var base64recoded = base64.encode(base64decoded); - packets.read(base64decoded); - packets = packets.filterByTag( - openpgp.enums.packet.publicKey, - openpgp.enums.packet.publicSubkey, - openpgp.enums.packet.userid, - 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, - openpgp.enums.signature.subkey_binding - ]; - if (~signaturesToKeep.indexOf(p.signatureType)) - packetsFinal.push(p); - } - else packetsFinal.push(p); - }); - // console.log(base64.encode(packetsFinal.write())); - assert.equal(base64recoded, base64packetList); - assert.equal(packetsFinal.length, 8); - }); - - it('keep only pubkey, subkeys, uid and SELF-certifications', function(){ - var fingerprint = 'C73882B64B7E72237A2F460CE9CAB76D19A8651E'; - var packets = new openpgp.packet.List(); - var packetsFinal = new openpgp.packet.List(); - var base64decoded = base64.decode(base64packetList); - var base64recoded = base64.encode(base64decoded); - packets.read(base64decoded); - packets = packets.filterByTag( - openpgp.enums.packet.publicKey, - openpgp.enums.packet.publicSubkey, - openpgp.enums.packet.userid, - 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, - openpgp.enums.signature.subkey_binding - ]; - if (~signaturesToKeep.indexOf(p.signatureType) && fingerprint.match(new RegExp(p.issuerKeyId.toHex().toUpperCase() + '$'))) - packetsFinal.push(p); - } - else packetsFinal.push(p); - }); - // console.log(base64.encode(packetsFinal.write())); - assert.equal(base64recoded, base64packetList); - assert.equal(packetsFinal.length, 7); - }); - - it('should give same fingerprint', function(){ - var packets = new openpgp.packet.List(); - var base64decoded = base64.decode(base64packetList); - packets.read(base64decoded); - var key = new openpgp.key.Key(packets); - var fingerprint = key.getKeyPacket().getFingerprint().toUpperCase(); - assert.equal("C73882B64B7E72237A2F460CE9CAB76D19A8651E", fingerprint); - }); - }); -}); - -describe('Extracting', function(){ - - describe('signature of Cat\'s membership', function(){ - - it('with base64 encoded should give a 8 packets list', function(){ - var clearsigned = jpgp().toClearSign(catMSBody, catMSSignature); - var clearTextMessage = openpgp.cleartext.readArmored(clearsigned); - var packets = clearTextMessage.packets; - assert.equal(packets.length, 1); - }); - - it('encoding/recoding is OK', function(){ - var clearsigned = jpgp().toClearSign(catMSBody, catMSSignature); - var clearTextMessage = openpgp.cleartext.readArmored(clearsigned); - var packets = clearTextMessage.packets; - var base64encoded = base64.encode(packets.write()); - // console.log(clearTextMessage.armor()); - var base64decoded = base64.decode(base64encoded); - var base64recoded = base64.encode(base64decoded); - assert.equal(packets.write(), base64decoded); - assert.equal(base64encoded, base64recoded); - assert.equal(packets.length, 1); - }); - }); -}); - -var base64packetList = "" + - "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"; - -var catMSBody = "" + - "Version: 1\r\n" + - "Currency: beta_brousouf\r\n" + - "Issuer: 405715EC64289D1F43808F57EC51F273CBC0FA17\r\n" + - "Date: 1406918607\r\n" + - "Membership: IN\r\n" + - "UserID: LoL Cat (udid2;c;CAT;LOL;2000-04-19;e+43.70-079.42;0;) <cem.moreau@gmail.com>\r\n"; - - -var catMSSignature = "" + - "-----BEGIN PGP SIGNATURE-----\r\n" + - "Version: GnuPG v1\r\n" + - "\r\n" + - "iQEcBAABCAAGBQJT3WuoAAoJED0ZtAvOQO31XFsH/176LaUfmN7S1TIdbFtRMLm8\r\n" + - "URXW7Tyfh8fYYMMtMjV8F5SBzly6o3bkXv16gJ5q/EkebxBgCKP4IuLHLP1k4wcP\r\n" + - "XHM8bjXKnzr731V2KvRevlBQhsjMppS5/KPpN/w0JujGQ36UMYMR+8zskq1mkcjX\r\n" + - "0PE4b9y0cdQRmz+nJ90fSynH98RkbswgOp/DZg+OgNsuwS5wPFeXfxNnPY9HTjIj\r\n" + - "IEbrjy9Zitlahkm1LVm6zgQAX0eTc8tWOR6AHzsf1Bz4y5ZPbIa6cbaOUf0GUNWb\r\n" + - "zpmn8aPRRxX7QWBlIh9MCExS5jduwZmJ4uFLroATeJUnTXjVkQ68wJaBFrif1+U=\r\n" + - "=P+eB\r\n" + - "-----END PGP SIGNATURE-----\r\n";