summaryrefslogtreecommitdiffhomepage
path: root/Types.hs
Commit message (Collapse)AuthorAge
* use cereal for efficient serialization for wire formatJoey Hess2017-04-21
| | | | | | | | | | | I tried both binary and cereal. For a ActivityMessage that takes 341 bytes in JSON and has a dataSize of 129, both used 165 bytes. Went with cereal since lazy bytestrings are not needed, and I might want to use https://hackage.haskell.org/package/safecopy later. (Perhaps I should be using protocol buffers or something to make it easier for non-haskell implementations? But that would complicate things a lot.)
* fully working signaturesJoey Hess2017-04-19
| | | | This commit was sponsored by Ethan Aubin.
* reorganized message typesJoey Hess2017-04-19
| | | | | | | | | Make Control messages be out-of-band async messages, without a pointer to a previous message. And then followed the type change through the code for hours.. This commit was sponsored by Nick Daly on Patreon.
* initial CryptoJoey Hess2017-04-18
| | | | | Will use Ed25519 because it's from DJB and well regarded and in common use now.
* memory DOS preventionJoey Hess2017-04-18
| | | | | | | | | | | | Prevent DOS of user side by limiting the size of the BackLog that is maintained. This should not cause problems in even high latency environments, and should prevent memory use > 16 mb. The developer side does not keep much data, other than a list of the Hashes of things it has recently sent, so is not susceptable to memory DOS. This commit was sponsored by Brock Spratlen on Patreon.
* refactor out LogJoey Hess2017-04-18
|
* improve JSON, removing "tag" for sum typesJoey Hess2017-04-18
|
* improve typesJoey Hess2017-04-18
| | | | Including adding a timestamp to logs
* Include Entered in the Activity chainJoey Hess2017-04-17
| | | | | | | | So when the developer makes 2 keypresses close together, they send the second Activity Entered with the first Activity Entered as its HashPointer. This allows the developer to prove the order they did things. This commit was sponsored by Peter Hogg on Patreon.
* add Rejected and tag hashes by typeJoey Hess2017-04-17
| | | | | | | | | | | | | | Need a way for the user to indicate when an Activity Entered is Rejected. Changed hashing to include type tags, so Acticity Entered and Activity Seen can never hash to the same hash. Got debug-me.hs to compile after these changes, but currently it's buggy after Activity Entered is Rejected. Started protocol.txt documentation. This commit was sponsored by Francois Marier on Patreon.
* add --graphviz modeJoey Hess2017-04-14
| | | | This commit was sponsored by Shane-o on Patreon.
* log JSON to debug-me.log (for now)Joey Hess2017-04-14
| | | | | | useful for debugging, etc This commit was sponsored by Alexander Thompson on Patreon.
* improve JSONJoey Hess2017-04-14
| | | | | | | | | | | | | | | | | | | | | | | Most of the time, ByteStrings will be able to be encoded as utf8, so avoid base64 when not needed. Adjusted some of the types in order to generate more usual JSON. In particular, removed StartActivity. The JSON now looks like this (with the signature still not populated): {"signature":{"v":""},"prevActivity":{"hashValue":{"v":"3b1abe614dd43bdb2d9a56777884e2d0f3bac9796e2d25c1ad52bb689c117286"},"hashMethod":"SHA256"},"activity":{"echoData":{"v":""},"enteredData":{"v":"l"}}} 203 bytes to send a single keystroke is not great when there's really only 1+64(hash) bytes of unique data. So, may end up adding a wire encoding on top of this. But, JSON is good to have for storage of the proofs, etc. Also, it does compress well. Two such JSON objects gzip -9 to 219 bytes, and three to 265 bytes. So, 37 bytes per keystroke. This is *exactly* as efficient as gzip -9 of $c$hash formatted data. This commit was sponsored by Jack Hill on Patreon.
* add JSON serializationJoey Hess2017-04-14
| | | | | | | Fairly straightforward, but did have to decide how to encode all the ByteStrings, since they are not necessarily utf-8. Used base64. This commit was sponsored by Henrik Riomar on Patreon.
* simulate laggy networkJoey Hess2017-04-12
|
* use Activity types for user<->developer communicationJoey Hess2017-04-12
| | | | | | | | | | | | | | | Still all in a single process with no serialization, but now there are separate threads for the user and developer sides, and they communicate Activity back and forth. Signatures are not checked yet, but both user and developer check that the other side is sending Activity that forms a valid hash chain with previous Activity. The echo simulation is included, but may be buggy. This seems to work well enough with 0 latency at least. This commit was sponsored by Thom May on Patreon.
* some basic data types and hashing to start debug-meJoey Hess2017-04-11
This commit was sponsored by Denis Dzyubenko on Patreon.