Commit Graph

17 Commits

Author SHA1 Message Date
Jędrzej Stuczyński 860a69b246 Feature/sphinx socket packet encoder (#245)
* Ability to send sphinx packets of different sizes + more efficient decoding

* Closing connection on connection corruption

* Missing semicolons

* Missing license notices

* Default for packetsize
2020-05-27 10:08:08 +01:00
Jędrzej Stuczyński 54114f03b5 Feature/explicit gateway addressing (#239)
* validator: fixing a warning, untestify this when you need it for real code

* webassembly: minor readme changes.

* README changes in wasm

* Updated wasm version

* clients/webassembly: security vuln updates

* typo fix

* WIP commit

* Significantly simplified the API

* Changed switch to have default branch

* Managed to get rid of `this` bind

* Moved 'Recipient' definition

* Examples update

* Slightly more generalised 'try_from_string' for recipient

* Updated to use client@gateway addressing

* Updated tests

Co-authored-by: Dave Hrycyszyn <futurechimp@users.noreply.github.com>
2020-05-19 12:16:04 +01:00
Jędrzej Stuczyński a38a9f604d Feature/addressing update (#237)
* Typo I've never noticed before

* Sphinx version update

* Updated 'address' to be 'recipient' (i.e. address + gateway)

* Updated websocket examples to use the updated structure
2020-05-18 13:01:51 +01:00
Jędrzej Stuczyński a3192a190f Removed having to care about SURB_ID (#222) 2020-05-07 16:55:05 +01:00
Jędrzej Stuczyński f9d3ee7fc4 Moved relevant parts of old mix-client to nymsphinx (#221) 2020-05-06 16:18:27 +01:00
Jędrzej Stuczyński abbf7041a4 Feature/gateway provider merge (#208)
* Initial draft for ClientsHandler

* Created listener struct

* typo

* Stateful websocket connection handler

* Exposing modules

* Depdendencies updates

* Moved listener to correct file + made start consume listener

* Main starting new listener

* Catching sigint

* Copied client storage from provider into gateway

* Exposed websocket listener type for nicer import path

* Defined websocket message receiver concrete type

* Client ledger struct without implementation

* ClientsHandler using more concrete types

* Mixnet sender + receiver and exposed listener type

* Handling mix packets

* Ability to forward mix packets

* "starting" both listeners at main

* Depedencies updates

* Initial type definitions for client messages

* Initial "gateway-requests" with AuthToken

* ibid.

* Restored most of ledger's functionalities

* Ability to retrieve all messages regardless of rate limit

* ClientsHandler request handling logic

* Required 'new' dependencies

* Main changes required for compilation

* PacketProcessor getting private key pointer

* "moved" types into gateway requests crate

* Moved and renamed types

* ibid.

* Added required serde_json dependency

* Skeleton for websocket request handling

* helper methods on ServerResponse

* WebSocket Handler pushing received mix messages directly to client

* PacketForwarder returning JoinHandle alongside the channel

* ClientsHandler following the same pattern

* Made websocket listener start method consistent with mix listener

* Syntax error + formatting

* Websocket handler having access to mix forwarder

* Minimal binary request parsing

* Implicitly derived std::error::Error on GatewayRequestsError

* Handling of all websocket requests

* Types import cleanup

* Updated placeholder fields

* Everything put into main

* Missing license notices

* Cleaned up unused code

* Copied and did initial minor changes to commands and config

* It's actually gateway

* Gateway sending its regular presence to directory server

* Re-organisation of gateway code + Gateway struct

* Updated provider argument description

* Restored duplicate ip check without importing NymTopology trait

* Moved hardcoded values into config

* Cargo fmt

* Compilation errors in other crates due to topology adjustments

* Test fixes

* Initial gateway-client

* Seemingly working version with bunch of hardcoded and temporary values

* cargo fmt

* Removed provider poller

* Updated config with gateway values instead of provider

* Gateway address including ws

* Removed hardcoded gateway address

* Properly skipping loop cover messages

* Updated log filter with tokio tungstenite related modules

* Updated sphinx version used

* Very minor cleanup

* unused import
2020-04-30 10:14:21 +01:00
Jędrzej Stuczyński 4af5788bba Feature/limit direct sphinx dependency + remove direct curve25519 dependency from wasm client (#189)
* Initial set of re-exported sphinx types and constants

* Removed direct sphinx dependency from healthchecker

* Crypto module

* nym-client no longer needing sphinx

* All common modules

* mix-client until removed

* Sfw-provider no longer depending on sphinx crate

* Mixnode no longe depending directly on sphinx crate

* Ibid. for sfw-provider-requests

* Corrected import inside nymsphinx itself

* wasm client no longer needing direct sphinx dependency

* Required gateway change due to re-exporting constants in one place

* Missing import path changes in tests

* Removed direct dependency on curve25519 from wasm client

* Lock file changes
2020-04-20 16:59:51 +01:00
Dave Hrycyszyn bf2ff5cd78 Ditching comment that told me where to start work one morning. 2020-04-17 10:33:40 +01:00
Dave Hrycyszyn d3bb0b216d nym-sphinx-wasm: using the Try that was already available and reverting foolish change to public API of addressing/nodes 2020-04-17 10:28:10 +01:00
Dave Hrycyszyn d7150cfa58 nymsphinx: re-exporting NODE_ADDRESS_LENGTH so gateway can use it 2020-04-16 20:57:53 +01:00
Dave Hrycyszyn 7088fb3ffc Upgraded all Sphinx commits to latest. 2020-04-15 13:08:31 +01:00
Dave Hrycyszyn 53c1aaa256 nymsphinx: adding wasm-bindgen feature to rand crate 2020-04-15 12:54:44 +01:00
Dave Hrycyszyn 0d33d35437 nym-sphinx-wasm: updating to latest Sphinx 2020-04-09 16:41:01 +01:00
Dave Hrycyszyn 213fd12ff7 nym-sphinx-wasm: broken WIP commit so the Stuczynski can be unleashed 2020-04-09 15:12:31 +01:00
Dave Hrycyszyn 3f06ccc36b Adding Apache 2 license headers to all files (#178) 2020-04-09 11:24:24 +01:00
Jędrzej Stuczyński b564cd935e Feature/addressing move (#169)
* Moved 'addressing' to nymsphinx + slightly better API + tests

* Replaced all usages of above in the project

* Removed 'split_and_encapsulate_message' from chunking API to get rid of circular dependency + to prefer usage of TopologyAccessor

* changes in Cargo.lock

* formatting
2020-04-03 15:07:02 +01:00
Jędrzej Stuczyński aee3286793 Feature/packet chunking (#158)
Basic support for message chunking and reconstruction. It's now possible to take arbitrarily-sized input and send it through the mixnet. The sending Nym client will automatically chunk the input into Sphinx packets, and the receiving Nym client will then reconstruct the message at the other end.
2020-03-31 16:00:41 +01:00