mirror of https://github.com/vacp2p/nim-libp2p.git
Add PeerID test vectors.
This commit is contained in:
parent
39129d0ec1
commit
b185ad79f8
|
@ -24,4 +24,5 @@ task test, "Runs the test suite":
|
|||
exec "nim c -r tests/testrsa"
|
||||
exec "nim c -r tests/tested25519"
|
||||
exec "nim c -r tests/testcrypto"
|
||||
exec "nim c -r tests/testpeer"
|
||||
exec "nim c -r tests/testdaemon"
|
||||
|
|
|
@ -0,0 +1,155 @@
|
|||
## Nim-Libp2p
|
||||
## Copyright (c) 2018 Status Research & Development GmbH
|
||||
## Licensed under either of
|
||||
## * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE))
|
||||
## * MIT license ([LICENSE-MIT](LICENSE-MIT))
|
||||
## at your option.
|
||||
## This file may not be copied, modified, or distributed except according to
|
||||
## those terms.
|
||||
|
||||
## Test vectors was made using Go implementation
|
||||
## https://github.com/libp2p/go-libp2p-peer
|
||||
import unittest
|
||||
import nimcrypto/utils
|
||||
import ../libp2p/crypto/crypto, ../libp2p/peer, ../libp2p/base58
|
||||
|
||||
const
|
||||
# Test vectors are generated using
|
||||
# https://github.com/libp2p/go-libp2p-crypto/blob/master/key.go
|
||||
# https://github.com/libp2p/go-libp2p-peer/blob/master/peer.go
|
||||
PrivateKeys = [
|
||||
# RSA512 keys
|
||||
"""080012BE023082013A020100024100CCE59D6260E7D511DB3DD2C8A3CD5B0F1
|
||||
D16C8A6FD6A331A211305B677EADF48A7B06F0A74088E96458F23B453EC03A6
|
||||
63985D32105017A26F7EEE8CF43FAB110203010001024056D5609396B9E9447
|
||||
E037F56E4845CF8D4BD19201BF96BDAC0F58CD03D95DE35EBB015A88FD8B8CF
|
||||
731F5604C3895E05A1268D218E64E0C077422AAB3762E801022100F5C1FAAC2
|
||||
59F7A765C2F7B5639EF537CFAB102989924552C0EB3608936623DC1022100D5
|
||||
6FAFBD6ED32E7C02D310CC5355EA4B85704D1F73AECCCAB28BDD3BBEC461510
|
||||
220056286B796EB73A77C459E12399AC0DD9030A8B9E741208CA295D39BAE11
|
||||
6101022016D390070170427B6ECDE5F104449EFF1EB148FE412003B4F5ED716
|
||||
6AF5B4F51022100B9F2F54717615B6B34C08571098BAE081B5DDA58A35440BC
|
||||
BD0222EB250682BB""",
|
||||
"""080012BD0230820139020100024100A0C957A3EC20A90D511F732ECC650E4EA
|
||||
EC501EC8349E8891BAF786E6AB424B5665AC229BCB241217FFC51FB7A443C85
|
||||
688CE0D12A4C9C267B511488B537D2BB0203010001024068AD8CA448F79E77F
|
||||
007A4AAA4216AA6293C539B52824CA4EEE45768B3896297BABA5CFDAE4D1345
|
||||
3BF3B7CEC8DF4623693B7CA7F046982A6B0CFEC722338D19022100CEC09F191
|
||||
08A63E059DE14B057D08D81D6F8583D9CDCB89300A8D11DED084C4D022100C7
|
||||
15CDBEDAF98D9F0A73DF4880A511B70E17835DA94C32D765B57E88AC827F270
|
||||
220040684127CDBF4EDDD52119D0D58A628AD02D0D50244D9E322D4269E2A8B
|
||||
4AD102201316D81F90C794F8C6FBCD511A64B98A1FE3C948D5CEE4A11AB3886
|
||||
A7A8018C9022075677C2486F633F74E5718681D0C75477B62F0CD14A5C2226A
|
||||
11DEC5CFA96299""",
|
||||
"""080012C0023082013C020100024100D6E4788FBF4FCD607D6F61E01E910CE58
|
||||
14B8BBA5A0F878EDF1C5ACC46A7C3FDECDEEE990D67C3DE5AE4A0301A1621BA
|
||||
1903938D08451F475393E2C863A8FE230203010001024100980168DE95BF475
|
||||
197A8F01CEEC23FD3205065F85DB85A754F90E91152715D8AB693A37504D700
|
||||
703C09F3B171BB5441CD6B5BF462FADDAAB896F2E4047D8681022100DFEE0F7
|
||||
3DC6C9DC269E44A722007D937238299EEB7D07CE7B527AD9EE40A30E1022100
|
||||
F5AB120334B11F27C475385B2769448A53D40B47AA48D40AF623C7E4CB525B8
|
||||
3022100B340507451754CCFAC8E471D9610524BB60C3C867FF3CF987745DCD0
|
||||
7D00BF61022100DBCAC400CE41B18818C26F3B4E9565D7048CEFD29C4D3038E
|
||||
662B8D2BFFDDD1502206BC3E38AA82EBA2B99D2FF56AB19B2CE118B9A8A2AD1
|
||||
AEAF45F3ED4FE957619F""",
|
||||
# Ed25519 keys
|
||||
"""08011240B6F99B4E4422C516F1BD135B4D2B02AE62C48388CE31AFBA16496D2
|
||||
42FABE09BF3848ADABAA9F1E1230A3B94EDD3247C2395397EAFB59790B86595
|
||||
F94F1CD6B9""",
|
||||
"""08011240C1F64B208C6D3F52DDDC2CFDB41D5555956C6D6AC6A006C0547C94D
|
||||
8AD00A639AF87C6EA4451B2C7ACF7E24AB3B8FDE206A984BB0F1C1338CB17AA
|
||||
F65E944007""",
|
||||
"""080112401C2228F2880999FEC64401DD33A48C9C56FAF47EEB715CEA57F9F3B
|
||||
FEAA6E9E132EFF1CABC2A629690CCE7978241315A965F3A1702AC63860BE42D
|
||||
72265EF250""",
|
||||
# ECDSA keys
|
||||
"""08031279307702010104203E5B1FE9712E6C314942A750BD67485DE3C1EFE85
|
||||
B1BFB520AE8F9AE3DFA4A4CA00A06082A8648CE3D030107A14403420004DE3D
|
||||
300FA36AE0E8F5D530899D83ABAB44ABF3161F162A4BC901D8E6ECDA020E8B6
|
||||
D5F8DA30525E71D6851510C098E5C47C646A597FB4DCEC034E9F77C409E62""",
|
||||
"""080312793077020101042027DD515F39628504923D5A8935A95DE4AECE05AF2
|
||||
451067A8B584887D67B6799A00A06082A8648CE3D030107A14403420004B544
|
||||
92DA731A868A0F249288F43BBAEEC5FB166BB430F4AD256399FBD67FD6255BD
|
||||
5ADE57BA29BC6EF680D66A574788A03EC30B9D2F1C27A483E59FA62F6B03C""",
|
||||
"""0803127930770201010420746C012FB8E6882BC696AFAAFBCC4B16F8674C1B0
|
||||
07A7F949EF0D6D485171ACEA00A06082A8648CE3D030107A144034200043E41
|
||||
50BEB59FEAAC43389ABC490E11172750A94A01D155FE553DA9F559CE6687CDF
|
||||
6160B6C11BDD02F58D5E28A2BB1C59F991CE52A49618185C82E750A044979""",
|
||||
# Secp256k1 keys
|
||||
# "0802122053DADF1D5A164D6B4ACDB15E24AA4C5B1D3461BDBD42ABEDB0A4404D56CED8FB",
|
||||
# "08021220FD659951E2ED440CC7ECE436357D123D4C8B3CF1056E3F1607FF3641FB578A1B",
|
||||
# "08021220B333BE3E843339E0E2CE9E083ABC119BE05C7B65B8665ADE19E172D47BF91305"
|
||||
]
|
||||
|
||||
PeerIDs = [
|
||||
"Qmdxy8GAu1pvi35xBAie9sMpMN4G9p6GK6WCNbSCDCDgyp",
|
||||
"QmczLMwRH4cNaLZx1t7PTe5b7k6xKkd3RCJZSxmG3azXJK",
|
||||
"QmS9Sg4ZA5Fd1hHjNNkqfuMUXX9QnEXxgvT5hfSRuKHp8p",
|
||||
"12D3KooWSCxTfVvMBJbpF75PQmnFdxdBfC1ZxAGYbFc3U9MjALXz",
|
||||
"12D3KooWMdZbdEudjgnCvQLoSoiqhQ4ET2gaA1d4JpC1CBkUnfzn",
|
||||
"12D3KooWDFCm93uCnm8tVdk3DYxNeMFxMGBaywVSt8a8ULtdLoeX",
|
||||
"QmVMT29id3TUASyfZZ6k9hmNyc2nYabCo4uMSpDw4zrgDk",
|
||||
"QmXz4wPSQqYF33qB7JRdSExETu56HgWRpE9bsf75HgeXL5",
|
||||
"Qmcfz2MaPjw44RfVpHKFgXwhW3uFBRBxByVEkgPhefKCJW",
|
||||
# Secp256k1 peer ids
|
||||
# "16Uiu2HAmLhLvBoYaoZfaMUKuibM6ac163GwKY74c5kiSLg5KvLpY",
|
||||
# "16Uiu2HAmRRrT319h5upVoC3E8vs1Qej4UF3vPPnLgrhbpHhUb2Av",
|
||||
# "16Uiu2HAmDrDaty3uYPgqSr1h5Cup32S2UdYo46rhqZfXPjJMABZL"
|
||||
]
|
||||
|
||||
suite "Peer testing suite":
|
||||
test "Go PeerID test vectors":
|
||||
for i in 0..<len(PrivateKeys):
|
||||
var seckey = PrivateKey.init(stripSpaces(PrivateKeys[i]))
|
||||
var pubkey = seckey.getKey()
|
||||
var p1 = PeerID.init(seckey)
|
||||
var p2 = PeerID.init(pubkey)
|
||||
var p3 = PeerID.init(PeerIDs[i])
|
||||
var b1 = Base58.decode(PeerIDs[i])
|
||||
var p4 = PeerID.init(b1)
|
||||
var buf1 = newSeq[byte](len(p1))
|
||||
var buf2 = newSeq[byte](len(p2))
|
||||
var buf3 = newSeq[byte](len(p3))
|
||||
var buf4 = newSeq[byte](len(p4))
|
||||
check:
|
||||
p1 == p3
|
||||
p2 == p3
|
||||
p4 == p3
|
||||
p1 == p2
|
||||
p1 == p4
|
||||
p2 == p4
|
||||
p1.pretty() == PeerIDs[i]
|
||||
p2.pretty() == PeerIDs[i]
|
||||
p3.pretty() == PeerIDs[i]
|
||||
p4.pretty() == PeerIDs[i]
|
||||
p1.match(seckey) == true
|
||||
p1.match(pubkey) == true
|
||||
p1.getBytes() == p2.getBytes()
|
||||
p1.getBytes() == p3.getBytes()
|
||||
p1.getBytes() == p4.getBytes()
|
||||
p1.toBytes(buf1) == len(p1)
|
||||
p1.toBytes(buf2) == len(p2)
|
||||
p1.toBytes(buf3) == len(p3)
|
||||
p1.toBytes(buf4) == len(p4)
|
||||
p1.validate() == true
|
||||
p2.validate() == true
|
||||
p3.validate() == true
|
||||
p4.validate() == true
|
||||
$p1 == $p2
|
||||
$p1 == $p3
|
||||
$p1 == $p4
|
||||
if i in {3, 4, 5}:
|
||||
var ekey1, ekey2, ekey3, ekey4: PublicKey
|
||||
check:
|
||||
p1.hasPublicKey() == true
|
||||
p2.hasPublicKey() == true
|
||||
p3.hasPublicKey() == true
|
||||
p4.hasPublicKey() == true
|
||||
p1.extractPublicKey(ekey1) == true
|
||||
p2.extractPublicKey(ekey2) == true
|
||||
p3.extractPublicKey(ekey3) == true
|
||||
p4.extractPublicKey(ekey4) == true
|
||||
ekey1 == pubkey
|
||||
ekey2 == pubkey
|
||||
ekey3 == pubkey
|
||||
ekey4 == pubkey
|
Loading…
Reference in New Issue