Avril
271e861169
Started BufferedEsock: A task-based ``wrapper" around an ESock that buffers its input and output.
...
Fortune for rsh's current commit: Small blessing − 小吉
3 years ago
Avril
5fa9bccc52
Added const_generics to smallvec.
...
Fortune for rsh's current commit: Future blessing − 末吉
3 years ago
Avril
f8b6e3a0c6
This bug may make ESock **unusable** in this project entirely. Individual `SerializedMessage` sending/receiving _might_ work reliably since that is based on rigid size communication, but streamed data may be untenable. Any desync in streaming buffers causes complete failure.
...
This really is unacceptable but I don"t even know where to start to find the issue with it. It is likely a very deep design flaw with how we interact with the cipher, making this bug impossible to fix without a complete rewrite. Just like all other software I write. Worthless.
Fortune for rsh's current commit: Blessing − 吉
3 years ago
Avril
2a3d9e0c3a
For some reaosn, any difference between exact bytes written and read (even if they are identical, just spread over different `write` calls) causes the reading half to produce garbage?
...
For ESock to work, a `write(n)` needs to be paired with a `read(n)` for identical sizes of `n`. Not using `write_all(n)`+`read_exact(n)` causes this disjoint too? (Test with `write_all(n)`+`while read(...)` produced garbage.)
I have no idea what is going on here. I think there"s some disconnect with the cipher, but it"s a stream cipher, so positioning (i.e. where byte pattern `A` appears in slice `B` on the writing side, and slice `C` on the reading size) shouldn"t matter right? Clearly it seems to.
This is extremely disappointing.
Fortune for rsh's current commit: Future small blessing − 末小吉
3 years ago
Avril
e5fce0a045
XXX: ESock doesn"t work! :/ The first encrypted write/read succeeds, but any subsequent calls to write/read produce garbage...
...
Fortune for rsh's current commit: Future blessing − 末吉
3 years ago
Avril
20bf0f1649
Removed install of a panic hook in unit test
...
Fortune for rsh's current commit: Middle blessing − 中吉
3 years ago
Avril
2a49d17528
ESock tested: Exchange OK, Session OK, Encrypted + Unencrypted reads + writes OK. All works (so far)! :^)
...
TODO: Inspect contents of the duplex stream throughout transit. Make sure the encryption is happening properly.
Fortune for rsh's current commit: Half curse − 半凶
3 years ago
Avril
dc307c6d06
ESock: Added `split()` and `unsplit()`
...
TODO: Implement AsyncWrite/Read for the write/read halves
TODO: Implement set_encrypted_write/read for the write/read halves
Fortune for rsh's current commit: Half blessing − 半吉
3 years ago
Avril
edeb2ffee7
Added AsyncWrite and AsyncRead impls to `ESock<W,R>`
...
Fortune for rsh's current commit: Half blessing − 半吉
3 years ago
Avril
b6b3bb0fd5
Improved error messages for `set_encrypted_read()` and `exchange()`.
...
Fortune for rsh's current commit: Future small blessing − 末小吉
3 years ago
Avril
087a076b40
Added better error messages and context to `ESockSessionKey::from_ciphertext()`
...
Fortune for rsh's current commit: Small blessing − 小吉
3 years ago
Avril
3991d82f93
Added better error messages and context to `ESockSessionKey::to_ciphertext()`
...
Fortune for rsh's current commit: Blessing − 吉
3 years ago
Avril
3a5331b5f1
Added `bin` module for byte slice concat.
...
Removed !Unpin `exchange()` function.
Removed `Exchange<"sock,W,R>` future
Tests for RSA ciphertext len passing. (512 bytes static.)
Fortune for rsh's current commit: Future small blessing − 末小吉
3 years ago
Avril
0f7f22f290
ESock: Added `exchange_unpin()`. Start `Exchange` future for `exchange()` method that will work on non-Unpin types too. (Requires specific implemented future.)
...
Fortune for rsh's current commit: Middle blessing − 中吉
3 years ago
Avril
7f44c83ce3
Added AsyncSource to ESock<W, R>
...
Fortune for rsh's current commit: Small curse − 小凶
3 years ago
Avril
d349c018c2
Using AsyncSource instead of dump Duplex hack.
...
Fortune for rsh's current commit: Future small blessing − 末小吉
3 years ago
Avril
7f8acbba7f
Bumped version of `chacha20stream` to 2.0: Added support for `Read` and `AsyncRead` en/decryption.
...
Fortune for rsh's current commit: Future small blessing − 末小吉
3 years ago
Avril
7216f0f8de
Added `ReverseSink<R>`, temporary type for handling reads (chacha20stream currently only has a wrapper type for writes.)
...
Fortune for rsh's current commit: Curse − 凶
3 years ago
Avril
62f3c384b2
Start `enc` socket wrapper
...
Fortune for rsh's current commit: Curse − 凶
3 years ago
Avril
d271f164fa
Start sock capabilities
...
Fortune for rsh's current commit: Future blessing − 末吉
3 years ago
Avril
538080a6f1
Added MAX_BODY_SIZE
...
Fortune for rsh's current commit: Small blessing − 小吉
3 years ago
Avril
cf71fe20ab
Set `StackVec` stack size to 2KB (from 4KB).
...
Fortune for rsh's current commit: Small blessing − 小吉
3 years ago
Avril
37a00d1099
Improved de/serialise error messages
...
Fortune for rsh's current commit: Half curse − 半凶
3 years ago
Avril
46cd0e4a9f
from_buffer(): Implemented.
...
Fortune for rsh's current commit: Great blessing − 大吉
3 years ago
Avril
52d19c730b
Start reworking SerializedMessage -> binary pipeline.
...
Moved from `io::Write` to `bytes::BufMut`, etc.
TODO: Move from `io::Read` to `bytes::Buf` (SerializedMessage::<impl MessageValue>::from_buffer(impl Buf))
Fortune for rsh's current commit: Future small blessing − 末小吉
3 years ago
Avril
6afb148068
Added `UntypedSerializedMessage`: A `SerializedMessage` whos original value type has been erased. A `SerializedMessage<V>` can be converted into this with `.into_untyped()`, and can be converted back with the `unsafe` function `into_typed<V>()`.
...
Untyped serialized mmessages cannot be deserialized, they must first be given a type with `into_typed<V>()`. This operation is unsafe as it may cause a potential type confusion if the message"s original `V` is different from the newly specified `V`.
Fortune for rsh's current commit: Half curse − 半凶
3 years ago
Avril
c286708bff
Start: `UntypedMessageValue` for unsafe casting of `SerializedMessage`s
...
Fortune for rsh's current commit: Half blessing − 半吉
3 years ago
Avril
7765c33070
Moved `MessageValue` to own file
...
Fortune for rsh's current commit: Curse − 凶
3 years ago
Avril
ab97278dbd
Added `subtrait!` macro for creating a blanket-impl trait that ``inherits" from one or more different traits in a few different ways (normal -> `Sized` types only, `dyn`: Sized and unsized types , `virtual`: Sized and unsized types, downcastable.)
...
Fortune for rsh's current commit: Curse − 凶
3 years ago
Avril
2308b61b58
Start: Raw socket handling function
...
Fortune for rsh's current commit: Middle blessing − 中吉
3 years ago
Avril
d3c43b323b
Added task cancelling module
...
Fortune for rsh's current commit: Future blessing − 末吉
3 years ago
Avril
c98f1c5c6c
Added message header accessors.
...
Fortune for rsh's current commit: Future small blessing − 末小吉
3 years ago
Avril
2931a3e8cb
Moved message tests to own file.
...
Fortune for rsh's current commit: Small blessing − 小吉
3 years ago
Avril
674c7a1171
Sign & Encrypt tests working okay
...
Fortune for rsh's current commit: Half blessing − 半吉
3 years ago
Avril
101ce28602
Encrypt + Sign tests work.
...
Fortune for rsh's current commit: Future blessing − 末吉
3 years ago
Avril
226901861a
Start adding stack-allocation helper functions. (ext.rs)
...
Fortune for rsh's current commit: Half curse − 半凶
3 years ago
Avril
4877a843bd
Added `DefaultMessageSender`, `DefaultMessageReceiver`, `DefaultMessageSenderReceiver` types, which function the same as `()` for the cases of the trait(s) that they implement.
...
Fortune for rsh's current commit: Half blessing − 半吉
3 years ago
Avril
36f3ed4586
Abstracted message serialisation test code.
...
When implementing tests for signing and/or encrypting messages, we can just implement the `MessageSender`/`MessageReceiver` traits when needed then call into this function.
(Those traits may need refactoring if the format of the adapter is not desireable (i.e. `&self` instead of `&mut self` or `self`; we could only blanket-impl those function to `Fn()` closures, not `FnMut()` or `FnOnce()`. (not that we should try this.)), but for now we"ll leave it as it is.)
Fortune for rsh's current commit: Small blessing − 小吉
3 years ago
Avril
1f2655a7f2
Basic message de/serialisation test passes. (Value -> Message -> SerializedMessage -> Bytes -> SerializedMessage -> Message -> Value). No encryption tests yet.
...
TODO: Better size checks.
TODO: Test message de/serialisation with encryption and/or signing enabled.
Fortune for rsh's current commit: Half curse − 半凶
3 years ago
Avril
3e59440609
Message de/serial test written (currently failing due to serde_cbor being greedy when deserialising from reader)
...
Fortune for rsh's current commit: Middle blessing − 中吉
3 years ago
Avril
c41d5c2c28
Added `SerializedMessage::from_reader()` (reading untrusted messages)
...
TODO: XXX: Validate the length of message bodies somehow before naively trying to read them.
Fortune for rsh's current commit: Half curse − 半凶
3 years ago
Avril
9142244bca
Started `Message` protocol.
...
Fortune for rsh's current commit: Small curse − 小凶
3 years ago