Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
duniter
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Monitor
Service Desk
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
nodes
typescript
duniter
Commits
20dae07d
Commit
20dae07d
authored
10 years ago
by
Cédric Moreau
Browse files
Options
Downloads
Patches
Plain Diff
Make tests pass
parent
83d2bcd4
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
server.js
+0
-1
0 additions, 1 deletion
server.js
test/fast/coins.js
+0
-81
0 additions, 81 deletions
test/fast/coins.js
test/fast/packets.js
+0
-290
0 additions, 290 deletions
test/fast/packets.js
with
0 additions
and
372 deletions
server.js
+
0
−
1
View file @
20dae07d
...
...
@@ -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
;
...
...
This diff is collapsed.
Click to expand it.
test/fast/coins.js
deleted
100644 → 0
+
0
−
81
View file @
83d2bcd4
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
);
});
}
This diff is collapsed.
Click to expand it.
test/fast/packets.js
deleted
100644 → 0
+
0
−
290
View file @
83d2bcd4
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
"
;
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment