Commit Graph

213 Commits

Author SHA1 Message Date
kdeme 1eae8f93f9
Fix empty ENR list in auth-response properly + potentially request new ENR on revalidation 2020-07-17 16:18:50 +02:00
kdeme 84fd39a8f8
Update enrs in buckets and replacement caches and fix empty ENR list in AuthResponse 2020-07-17 11:14:08 +02:00
kdeme c7ac9f54b3
Refactor the findNode code + add tests 2020-07-15 15:27:22 +02:00
Kim De Mey 7febbec673
Use brHmacDrbgGenerate for all random operations in discovery (#272) 2020-07-13 14:34:53 +02:00
Kim De Mey f3de959261
Discv5 readme (#278)
* Add discovery v5 readme + test_discv5 task

* Move hkdf tests to test file and add to nimble task
2020-07-12 23:53:27 +02:00
Kim De Mey 28a8d52308
Fix enr deserialization crash + more tests + fuzz test (#274)
* Fix enr deserialization crash + more tests + fuzz test

* CI: Install depsOnly
2020-07-11 01:28:53 +02:00
kdeme 4f3df3c9b2
Change update back to use var parameter of Record 2020-07-08 14:28:54 +02:00
kdeme d3db83fa0a
Extra test on newProtocol 2020-07-08 13:16:07 +02:00
kdeme 0fb21e72d7
Add updateEnr and allow for table constructor usage in newProtocol 2020-07-08 11:45:58 +02:00
kdeme 72420d7f17
Allow for passing in previous enr at discovery protocol creation 2020-07-07 23:39:32 +02:00
kdeme 57302fcf52
Allow for multiple enr fields to be inserted + enr update proc 2020-07-07 22:48:26 +02:00
kdeme 3bbe757fe3
Add record size check on init + add insertFieldPair call + tests 2020-07-07 17:19:15 +02:00
Jacek Sieka 484fbcab1b
use bearssl rng throughout (#265)
* use bearssl rng throughout

* seeder can fail

* imports and exports

* modules, sigh

* one more try

* move var

* even fewer thread vars

* remove out-of-date genrated files
2020-07-07 10:56:26 +02:00
Kim De Mey 9a467225fb
Add routing table metrics + tweaks + fixes (#261)
- routing table metrics + option in dcli
- only forward "seen" nodes on a findNode request
- setJustSeen & replace on ping AND findnode
- self lookup only at start
- revalidate 10x more
- use bitsPerHop (b) of 5
- small fix in resolve
- small fix in bucket split
2020-06-30 13:35:15 +02:00
kdeme 5ffe6bb8ff
Add more routing table kbucket tests 2020-06-23 17:54:12 +02:00
kdeme ba19465892
Functional replacement cache 2020-06-23 16:11:58 +02:00
kdeme ceb4a20463 Fix depth calculation for bucket splitting 2020-06-23 09:35:12 +02:00
kdeme 2d7b3440f2 make bitsPerHop configurable + add routing table tests 2020-06-23 09:35:12 +02:00
Jacek Sieka 61feae0f21
secp: requiresInit updates (#258)
* secp: requiresInit updates

* fixup!

* clean up mapconverts
2020-06-22 18:07:48 +02:00
Kim De Mey 225a9ad41c
Add predicate filter option for randomNodes (#251)
* Add predicate filter option for randomNodes

* Further ValidIpAddress fixes

* Add gcsafe/noSideEffect and add test case
2020-06-11 21:24:52 +02:00
Kim De Mey 1c77cc1d3d
Fix discovery after introduction of ValidIpAddress (#248) 2020-06-09 11:09:35 +02:00
kdeme 6dd820840a
Add simple auth header encode/decode test 2020-06-04 15:03:41 +02:00
Kim De Mey a110f091af
Discv5 eh2 (#240)
* Discv5: More error handling improvements

- More results usage and raises pragma annotations
- Remove ENode related code and adjust Node object
- Misc.

* Add sendMessage and catch RlpError when decoding WhoAreYou

* Make the receive proc exception free

Except for `Exception` hah...

* Address review comments

* And another bunch of results and raises annotations

* Send Nodes Message also on 0 nodes and remove usage of broken require
2020-05-28 10:19:36 +02:00
kdeme 17586c05d7 Remove waku protocol from the repository 2020-05-07 20:49:00 +03:00
kdeme 74df90e16d
discv5: further prepping for results error handling 2020-04-30 00:11:03 +02:00
kdeme 3a6d4336bc
Bunch of renames to use same nomenclature as spec 2020-04-27 14:13:00 +02:00
kdeme 5dec5c5a9b discv5 encoding: First steps to move to result based error handling 2020-04-24 15:51:04 +02:00
kdeme 59ba3704d6 Add resolve proc + test 2020-04-21 21:27:32 +02:00
kdeme d3c9ccea67 Fix FindNode to return nodes with specific distance + tests 2020-04-21 21:27:32 +02:00
Jacek Sieka fd6caa0fdc
Rlp experimental (#227)
* rlp: remove experimental features

* avoid range library

* trie: avoid reference-unsafe bitrange type
2020-04-20 20:14:39 +02:00
Zahary Karadjov ee5c9619e0
Fix test_discoveryv5 2020-04-15 05:55:08 +03:00
Zahary Karadjov 6513cd9eff
Allow application-supplied ENR fields in discv5 2020-04-15 05:32:52 +03:00
Kim De Mey 99c68d40f7
Fix idAtDistance (#219) 2020-04-14 11:08:08 +02:00
Jacek Sieka 0b110f3287
Secp more refactor (#211)
* simplify some modules

* mark several modules with raises
* fix clearing of keys in auth.nim
* fix keyfile case dropping off
* fix keyfile stream storage
* uuid should be output in lowercase

* enode: simplify API
2020-04-06 18:24:15 +02:00
Jacek Sieka ac5bbe4d3d
keys: get rid of deprecated calls (#213) 2020-04-04 18:44:01 +02:00
Jacek Sieka 02d661503f
refactor secp interface (#203)
* avoid mix of exceptions and return codes
* introduce result
* use deprecated compatibility API to avoid big-bang refactoring
* loosely based on nim-libp2p secp as well as the rust-secp256k1 wrapper
* oh, boy does our secp256k1 wrapper need updating - we're _far_
behind...
2020-04-02 14:40:29 +02:00
kdeme 65bed1ae94 discv5: allow creation of node without external ip 2020-03-30 13:32:15 +02:00
kdeme 0a33744d1c Add IP checks on ENRs received from Nodes packet 2020-03-27 14:38:45 +01:00
kdeme c3f23e5912 Minor adjustments to store bootnode records + deletion test 2020-03-24 16:45:15 +02:00
kdeme 713f2e3bff Add getNode and tests for findNode and getNode 2020-03-24 16:45:15 +02:00
kdeme f46f9f1418 discv5: add start call 2020-03-24 16:45:15 +02:00
kdeme 00c2bac465 Fix logDist and add test 2020-03-24 16:45:15 +02:00
kdeme 267a06dbe6 discv5: Pass bootstrap nodes and add deletion of nodes 2020-03-24 16:45:15 +02:00
Zahary Karadjov 2b7a25175b Prepare for Nim 1.2 2020-03-24 14:05:30 +02:00
kdeme 596f148974
Discv5: Specifically handle decryption errors 2020-03-10 16:01:04 +01:00
kdeme 0d63ff4db4 (Quick)fix hashing for handshakes by adding Ports + tests 2020-02-29 14:16:27 +01:00
kdeme 1fab56f894 Introduce more constants and type aliases 2020-02-29 14:16:27 +01:00
kdeme ad99b96e12 Drop additional handshakes with same nodeid and add timeout on handshakes 2020-02-29 14:09:12 +01:00
kdeme fc844347a4 Don't send Whoareyou on handshake failure 2020-02-29 14:09:12 +01:00
kdeme f81a87f31b Add lookupLoop and other fixes
- add lookupLoop
- protocol close / closeWait
- randomize randomNodes
- Use lookupRequestLimit
- Remove invalid check in neighbours proc
- Add lookup test
2020-02-29 14:00:58 +01:00
Andrea Maria Piana 394b65ec03
Add eventually test checks 2020-02-27 10:11:55 +01:00
Andrea Maria Piana 9dcbb91ae0
Handle waku status-update code 22
This commits adds handling of the status-update code, 22, according to
waku specs 0.4 a6a9d6bcb1

Removes unused codes 20,21
2020-02-26 14:40:21 +01:00
Zahary Karadjov 1369cf3a30 [discv5] Allow specifying the advertised IP address; Code style improvements 2020-02-22 02:24:33 +02:00
kdeme 5aebab3f41 Fix duplicates in returned values of a lookup 2020-02-20 15:09:31 +02:00
kdeme 3dd26e8526 Attempt to further add the discv5 wire test vectors 2020-02-20 15:09:31 +02:00
Zahary Karadjov cfdb26db40
[discv5] Advertise the LibP2P TCP port properly 2020-02-18 01:07:23 +02:00
kdeme 79dfe88ec8 Add Packet encodings tests 2020-02-17 22:38:56 +02:00
kdeme bb6a3c2ce1 Add basic node discovery test 2020-02-17 22:38:56 +02:00
kdeme c679b9d436 Fix priority check of topic-interest versus bloom filter 2020-02-14 11:03:47 +02:00
Zahary Karadjov a1a6862c7c More spec compliant ENR
* Don't use signed integers in RLP
* Don't store IP addresses as var-sized ints (use fixed-sized blobs instead)
* Allow constructing ENR from ENode.Address
2020-02-12 11:58:14 +02:00
kdeme 18799f1491
Add StatusOptions alist and remove WakuMode 2020-02-04 20:25:50 +01:00
kdeme ab287d234a
Fix ordering of Waku/Whisper queue and increase queue capacity 2020-01-14 18:17:37 +01:00
kdeme cb2bc388f1
rename newFilter to initFilter for correctness 2020-01-14 15:33:21 +01:00
Yuriy Glukhov 3527d47cb5 Added packet encoding tests 2020-01-08 17:22:43 +02:00
Yuriy Glukhov 992aeecd29 ENR parsing and serialization 2020-01-08 17:22:43 +02:00
kdeme f3357602e4
Allow light node to send the regular way #131 2019-12-20 11:56:12 +01:00
kdeme 4dde3af2d5
p2pRequestComplete parameters are not a separate list 2019-12-19 23:23:06 +01:00
kdeme f940162b6b
Implement Waku mode PoC 2019-12-12 23:23:26 +01:00
kdeme 7128df8838 Fix Windows test by waiting till server has added peer 2019-12-12 17:35:30 +02:00
kdeme f0582a084c Quick implementation for multiple mail requests by using cursor 2019-12-12 17:35:30 +02:00
kdeme 9bd042c265 First go on Waku mail client addition 2019-12-12 17:35:30 +02:00
kdeme 59ba63f74c
Fix double whisper types export by moving to separate file 2019-12-10 12:18:52 +01:00
kdeme 0229547c41
More explicit Exceptions + fix re-raising 2019-12-04 12:34:37 +01:00
kdeme bc2b76f09a cleaner solution for sharing the queue 2019-11-21 19:35:27 +02:00
kdeme f02f358bc3 Fix waku bridge test 2019-11-21 19:35:27 +02:00
kdeme a8a55f16dc Implement quick Waku - Whisper bridge by sharing the queue + adjust test 2019-11-21 19:35:27 +02:00
Oskar Thoren c5b42000b8 Fix waku connect tests
- WakuWhisper and Whisper peers connect
- WakuWhisper node picks up Whisper messages
2019-11-21 19:35:27 +02:00
Oskar Thoren 40cddc4eec waku 0 replace whisper waku 2019-11-21 19:35:27 +02:00
Oskar Thoren 73fcfdbad1 waku zero import shh tests 2019-11-21 19:35:27 +02:00
kdeme a54eba2757
Split off whisper config related tests 2019-11-19 14:08:20 +01:00
kdeme 44400ee549 Fix nim v1.0.2 compile issues 2019-10-29 14:44:26 +02:00
kdeme 98be627bcc Make msgId fixed int32 2019-10-23 09:35:33 +09:00
kdeme 5850186ca0 Add EIP-8 test + activate rlpx thunk test 2019-10-23 09:35:33 +09:00
kdeme 17f90920e0 Add unittest for rlpx thunk payload tests 2019-10-23 09:35:33 +09:00
kdeme ae49155ae7
add ingress mac on foo check in rlpx auth test 2019-10-22 11:11:39 +02:00
kdeme 77834d1df0 Beginning of bzz protocol + simple handshake tester 2019-10-17 21:59:32 +09:00
kdeme 18225f93a5 Clean-up test_shh_connect 2019-10-03 16:38:14 +03:00
kdeme 035b7eda24 Adress review feedback 2019-10-02 14:45:29 +03:00
kdeme 9fb79d0d88 Refactor bootnodes and whispernodes 2019-08-16 08:50:58 +02:00
Zahary Karadjov 1fe3de6c39
Changes required for the latest ETH2 spec 2019-08-07 06:13:45 +03:00
Jacek Sieka 022139db50
import fixes 2019-07-07 12:22:55 +02:00
kdeme 13a32811aa Fix leading zeroes bug + add tests from geth and parity 2019-06-27 12:03:55 +02:00
Zahary Karadjov f761889518
Refactored the p2pProtocol macro to eliminate most code duplication in the backends 2019-06-24 05:12:22 +03:00
kdeme 47c7a9887e Make connection setup in shh_connect test more deterministic 2019-06-21 15:58:40 +03:00
kdeme d1eb1070fc Make connection setup in protocol_handlers test more deterministic 2019-06-21 15:58:40 +03:00
kdeme d535bb1ade Add very basic fuzzing setup for discovery 2019-06-18 20:10:14 +03:00
kdeme 7cb5ac050b Add discovery tests against regression of recently fixed bugs 2019-06-18 20:10:14 +03:00
kdeme 1cb1168aec replace waitFor with await 2019-06-18 12:16:47 +03:00
kdeme 0966a4e9ca
Adjust deprecated use of sleepAsync 2019-06-11 15:31:00 +02:00
kdeme 9e29d2211f
Fix compilation issue for shh_basic_client 2019-06-11 14:44:57 +02:00
kdeme 3cd8172e65 Add test for failing connection handler 2019-05-09 10:35:02 +02:00
kdeme ac766bf7b3 Fix decoded dst bug + add tests 2019-04-08 14:28:50 +03:00
kdeme c3add58128 Blind attempt to fix failures in test_shh_connect on macOS 2019-04-08 14:28:50 +03:00
kdeme c599f7649d Add powTarget and other changes for Whisper RPC implementation 2019-04-08 14:28:50 +03:00
kdeme 9e5cf2086c Address review feedback 2019-04-08 13:51:32 +03:00
kdeme bf62debe93 Add test with failing disconnect handlers 2019-04-08 13:51:32 +03:00
Ștefan Talpalaru 9146e8e2f0
assert() -> doAssert() 2019-03-13 23:15:26 +01:00
Zahary Karadjov 3efec171a6 Make the APIs compatible with libp2p
Lib2P2 handles RPC requests and responses with separate streams
while DEV2P2 is relying on tagged messages transmitted over a
single stream. To cover both models through the same application
code, we introduce a new `response` variable in the request handlers.
The user is supposed to issue a call to `response.send` in order to
reply to the request. Please note that the `response.send` signature
is strongly typed and depends on the current message.
2019-03-12 13:36:39 +02:00
Ștefan Talpalaru 2864d8ce21 clean up the test suite
by removing test wrappers that are no longer used and renaming a helper
file that had a name starting with the "test_" prefix
2019-02-15 17:18:45 +02:00
Yuriy Glukhov 5f6155bd23 Fixed appveyor test compilation (#4) 2019-02-07 17:11:38 +01:00
Mamy Ratsimbazafy 07cf801b97
Rebrand asyncdispatch2 to chronos (#2)
* Rebrand asyncdispatch2 to chronos

* fix nimble path to chronos
2019-02-06 17:01:04 +01:00
Yuriy Glukhov 46656bf8c2 Disable crashing test 2019-02-05 18:37:09 +02:00
Yuriy Glukhov e75a00f86e Moved eth-p2p to eth 2019-02-05 17:40:29 +02:00