* sign and verify agent messages with key sent in HELLO (TODO: hardcoded block size - should use size from handshake; verify signature of HELLO message itself; possibly, different MSG status if signature was not verified (currently ignored) or failed to verify (currently fails with AGENT A_ENCRYPTION - alternatively, change it to AGENT A_SIGNATURE))
* remove hardcoded block size, make it 4096 bytes
* verify signature of HELLO message before it is added to RcvQueue
* refactor
* update doc
* rename functions
* inventory of error handling problems and types
* Change SMP protocol errors syntax
* connection errors in agent protocol (ERR CONN), STORE error -> AGENT error
* include exception in SEInternal error
* add MESSAGE errors, remove CRYPTO and SIZE errors
* agent protocol SYNTAX and AGENT errors
* BROKER errors
* group all client command (and agent response) errors
* BROKER TRANSPORT error
* simplify Client
* clean up
* transport errors
* simplify client
* parse / serialize agent errors
* differentiate crypto errors
* update errors.md
* make agent and SMP protocol errors consistent, simplify
* update doc
* test: parse / serialize protocol errors with QuickCheck
* add String to internal error
* exponential back-off when retrying to send HELLO
* refactor Client.hs
* replace fold with recursion in startTCPClient
* fail test if server did not start, refactor
* test: wait till TCP server stops
* test: refactor waiting for server to stop
* test: fail with error if server did not start/stop
* key encoding primitives (WIP)
* use X509/PKCS8 to read/write server key files
* make PrivateKey type class
* clean up
* remove separate public key file
* specific import
* remove current user name
* rename /accept to /connect, remove /chat, add /reset, allow 1-letter abbreviations
* update help
* /delete contact, separate response for confirmation
* update invatation instruction
* unset active contact only if it is the same as current
* use System.Terminal for "editor" mode (WIP, does not work in POSIX)
* fix getKey - only return one event on control keys
* fix printing with System.Terminal
* different markdown escape for color, added black color
* fix color escapes
* make black invisible
* markdown fixes
* remove Key type, fix editor bug, refactor
* refactor: use getKey in getTermLine
* default mode is "editor", remove windows warning
* markdown: code snippet
* use ! for color markdown
* edit previous input
* clean up
* use getWindowSize from System.Terminal
* move server keys to config
* add server keys from files
* create server keys if key files do not exist
* validate loaded server key pair
* refactor fromString functions
* key files in /etc/opt/simplex
* add terminal package
* basic terminal mode with utf8 support in windows
* fix terminal input in basic mode on mac
* test code
* send StyledString to ChatTerminal
* clean up
* support StyledString with System.Terminal
* minor style change
* clean up
* minor style change
* transport encryption (WIP - using fixed key, parsing/serialization works, SMP tests fail)
* transport encryption
* transport encryption: separate keys to receive and to send, counter-based IVs
* docs: update transport encryption and handshake
* transport encryption handshake (TODO: validate key hash, welcome block, move keys to system environment)
* change KeyHash type to newtype of Digest SHA256
* transport encryption: validate public key hash
* send and receive welcome block with SMP version
* refactor: parsing SMPServer
* remove unused function
* verify that client version is compatible with server version (major version is not smaller)
* update (fix) SMP server tests
* windows-compatible getChar without buffering, option to use terminal without editing
* option to choose terminal mode, conditional compilation for Windows
* conditional extension
* add basic terminal mode (no contact insertion)
* option help