Commit Graph

62 Commits

Author SHA1 Message Date
Lorenzo Delgado 833818e9c7
Make discv5 `protocol-id` configurable at compile time
Co-authored-by: ksr <kaiserd@users.noreply.github.com>
2022-11-30 12:59:41 +01:00
Justin Traglia e7d3de6ebf
Fix some typos (#557) 2022-11-16 17:44:00 +01:00
Kim De Mey bd8d9c65a3
Seperate discv5 protocol message encoding from packet encoding (#539)
And some additional clean-ups
2022-10-10 12:13:20 +02:00
Jacek Sieka 5e4123fda8
tighter nimcrypto imports (#532) 2022-09-05 11:09:38 +02:00
Jacek Sieka 1b516682bd
bearssl: use split api (#510) 2022-06-17 22:45:37 +02:00
Kim De Mey 4463a28fd6
Add discv5 max packet size limit (#505) 2022-05-02 16:49:19 +02:00
Kim De Mey 05ef9a8e00
More --styleCheck fixes for discoveryv5 and eth/common (#473) 2022-02-03 15:51:08 +01:00
Kim De Mey 42e257796f
Add discoveryv5 session metrics (#454) 2021-12-21 15:09:46 +01:00
Kim De Mey 2c236f6495
Style fixes according to --styleCheck:usages (#452)
Currently only setting `--styleCheck:hint` as there are some
dependency fixes required and the compiler seems to trip over the
findnode MessageKind, findnode Message field and the findNode
proc. Also over protocol.Protocol usage.
2021-12-20 13:14:50 +01:00
Etan Kissling 5655bd035c
Merge pull request #450 from etan-status/reject-whoareyou-len
reject WHOAREYOU packets with non-empty message
2021-12-14 16:22:25 +01:00
Etan Kissling 45387ad4d2
reject WHOAREYOU packets with non-empty message
This changes the `discv5` parser to reject malformed WHOAREYOU packets
that have a non-0 message length. The extra data used to be ignored.
The `message` part of WHOAREYOU packets is always empty.
See https://github.com/ethereum/devp2p/blob/master/discv5/discv5-wire.md
2021-12-11 15:55:14 +01:00
Etan Kissling fb7ea69eb4
Merge pull request #449 from etan-status/encryptgcm-type
more specific type check in `encryptGCM`
2021-12-11 14:50:35 +01:00
Etan Kissling 172dad7968
more specific type check in `encryptGCM`
Narrowed the type of `encryptGCM`'s `key` parameter from
`openarray[byte]` to `AesKey`, same as already used for `decryptGCM`.
2021-12-11 12:41:18 +01:00
Kim De Mey 22757db83b
Fix logDistance for BE arch and remove toBytes for NodeId (#427)
toBytes for NodeId wasn't selected by compiler byt if it does
get selected, it will fail on the test cases due to the
countdown that is done in logDistance.
Set to toBytesBE properly now and do countup, that should make
it correct also for BE architecture.

Removed toBytes to avoid confusion and avoid this one being
selected ever. The only place toBytes for NodeId was used is in
sessions.nim makeKey func and there also the stint one
(thus native endianness) was selected in Nim 1.2.x.
Native endianness is fine there as it is only an internal
representation.
2021-11-17 22:55:19 +01:00
Kim De Mey 2557fd35c6
Use aesKeySize const for aes key instead if ivSize (same values) (#375) 2021-07-16 14:55:52 +02:00
kdeme 00a45a7b91
Remove inline pragmas 2021-05-11 09:59:58 +02:00
kdeme e10ef19f81
Move push raises to top and add/update license info where needed 2021-04-28 16:20:05 +02:00
Kim De Mey 762415319c
Add build_dcli target and add it to CI (#344)
* Add build_dcli target and add it to CI

* Fix local imports for dcli

* And use local imports for all other files too

* Use local imports in tests and rlpx protocols
2021-04-06 13:33:24 +02:00
Kim De Mey a339944bcf
Some discv5 cleanup / refactor (#326)
* Use Address in HandshakeKey

* Refactor + comments + dcli use queryRandom

* Rename types.nim to messages.nim
2021-02-02 22:47:21 +01:00
kdeme 44637cdd8e
Remove support for discovery v5.0 2020-11-13 12:33:07 +01:00
Kim De Mey 6b17531d48
Improvements on dropping of challenges and handling of too large distance (#296)
- drop handshake challenge on invalid handshake
- send empty nodes reponse when distance is > 256
- misc
2020-09-30 09:43:51 +02:00
Kim De Mey c9caafb2a4
Replace memory db with lrucache for temporary storage of sessions (#292) 2020-09-10 14:49:48 +02:00
kdeme f0638eb3f1
Add rlp_decode fuzz test + some corpus generate code 2020-07-20 17:09:15 +02:00
kdeme 4e4836a0fe
Add discv5 fuzzing test targets 2020-07-20 14:17:44 +02:00
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
Kim De Mey 0888667ac0
Comments and cleanup (#276)
* Fix dcli + add more comments

* Fix pong enr sequence number + varia cleanup

* Send randomData in case no handshake was done yet. Fix #277
2020-07-12 17:25:18 +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
Jacek Sieka 61feae0f21
secp: requiresInit updates (#258)
* secp: requiresInit updates

* fixup!

* clean up mapconverts
2020-06-22 18:07:48 +02:00
kdeme 6dd820840a
Add simple auth header encode/decode test 2020-06-04 15:03:41 +02:00
kdeme 12627b34d3
Don't allow to use HandshareSecrets if auth response is invalid 2020-06-04 13:38:04 +02:00
kdeme 47602e634c
Add node id check and id-nonce-sig verification #204 2020-06-04 12:19:06 +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 887cbba563
discv5: Address review comments 2020-05-01 22:34:26 +02: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 09a127ef1b
Pass packet as decoding result 2020-04-24 16:52:41 +02:00
kdeme 5dec5c5a9b discv5 encoding: First steps to move to result based error handling 2020-04-24 15:51:04 +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
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
kdeme a9ff761d68 For now use directly address/id instead of Node to workaround node isNil problem in edge cases 2020-03-24 16:45:15 +02:00
kdeme 55b8e3e23f Update address to UDP endpoint and delete keys on removal from DHT 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
kdeme 172173b863
Discv5: set recordSeq in whoareyou to 0 so we receive always an ENR 2020-03-10 22:44:10 +01: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 6b01ada194 Add address to handshakes key 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