Changelog
=========
v1.4.0:
- 8e95779: mention voice chat in rustdoc
- 98aa334: remove voice feature from pipelines
- 4e7c740: use Relaxed Ordering instead of SeqCst
- 47eb0cf: use server config to enable chat
- b5e97bc: add enable_voice_chat server config entry
- 173ad3d: make voice chat default on client
- c0012c4: add helper function for removing voice connection
- 2e4b73a: simplify server enabled info log
- 6c6d48f: ignore ureq & rustls info logs
- edcf54d: implement logger on chat servers
- fd9e130: add logging dependencies
- 6f02fb4: specify registration on max_auth_tries config entry
- 9d10140: implement channels to voice chat
- ecadba6: lower gate tresholds
- a901fc4: fix noise reduction
- 7185e1a: fix active speaker bug
- 326baaa: use global sample rate for voice processing
- 2c852bc: implement noise reduction
- 38536da: add nnnoiseless dependency
- 480a644: update dependencies
- a5a5446: fix fluctuating normalization
- 3249c7f: implement audio normalization & soft clipping
- 7b94b9d: implement voice activity detection
- a7259c6: remove cpal config duplicity
- 6313d03: implement client output audio mixing
- ad2539e: print server voice log
- a69e26d: use proper recipient_id for server-seq in send fn
- 614fa43: fix client input resampling
- c4f781a: update license year
- b7d802f: use voice SAMPLE_RATE const for constructing SampleRate
- 8d24fa1: resample input stream
- 2beb10e: resample output stream
- fadf5de: allow multi-channel output device
- 40019d8: install audio dependencies in chat pipelines
- 6e7fcbe: use voice feature for build pipelines
- 952865a: fix client voice reconnection seq problems
- c152f18: implement voice disconnection
- ab794c9: fix client rekey hmac failure
- ff63ca0: verify hmac on voice receive
- 2ed2ced: use updated client keys on voice
- 9e3fb18: implement voice packet encryption
- a2dab2f: collect keys for voice encryption
- 95aa8bf: move chat packet encryption to chat::crypto
- e091eb3: implement seq
- f6e47f1: verify server seq on client
- 3bc0a42: implement server_seq
- d15a7ce: implement Default trait for VoicePacket
- c2c0d1d: implement VoicePacket & Connection structs on voice chat
- 5c5e56f: use voice::send on server & client
- 8bbf91f: fix client underrun code formatting
- ec27ac4: correct client help output formatting
- 5460a33: verify voice packet id on server properly
- 2b2e012: increase jitter buffer to ~400ms
- 5c577f5: include id len in client voice packets
- 5d5441c: fix voice client crash on non-voice server auth
- a4bc15d: fix non-voice server build error
- 906b90c: prepend id to voice packet
- 312e18a: implement receive section on client
- f68976e: use gag for supressing alsa errors
- a934048: add voice options warning
- 0e4741f: send client voice to server
- 5916bbf: segment client voice input & encode to opus
- 50ada25: send test UDP message from client to server
- f076ae3: create simple udp server handler
- e88732f: allow voice on server
- e93ba7b: add voice command
- 24d4be8: disallow voice feature on its own
- 1a93bc0: add voice chat dependencies
v1.3.5:
- 1cef7a8: update documentation for new ctr mode implementation
- f44732d: implement new Grid::from_bytes on chat
- 637a536: optimize Grid IntoIterator implementation
- 080d64b: use string slice as encrypt_string input parameter
- 4e9db00: use byte slice as Grid::from_bytes parameter
- 38638b1: move shared CTR application from to crypto::apply_ctr
- 5266540: implement parallel CTR
- d23e58f: add rayon dependency
- c8e735f: remove build-why2-chat job needs
- ea81f44: split github WHY2 tests
- 1ddd65f: split gitlab WHY2 tests
- ecfdf02: make REX encryption test test more inputs
- b3c701b: implement constant-time array rotation for Grid::shift_rows
- 7898f14: implement fisher-yates for constant-time shuffle
v1.3.4:
- f165f8b: move serde_json dependency to chat only
- 3dd3985: implement Display & FromStr traits for SerColor
- a64b501: replace bincode with wincode
- 03c1b93: update dependencies
- 422e7be: implement constant-time for Grid::shift_rows
- ff775ba: implement constant-time in decrypter
- cb59426: implement constant-time for Grid::increment
- bb5e236: replace native-endian with BE in docs
- e2522db: use legacy feature in docs
- 2ada555: add legacy & constant-time features to doc
- 5e5021a: make doc LaTeX notations more explicit
- 883477e: use legacy feature in test pipelines
- a919e29: disable legacy modules by default
- b2379f3: update code example for new structure
- a7ea3d7: use new structure on chat
- 762a9a3: use new structure in docs
- e1ee99c: move WHY2 legacy to separate module
- 3fe9780: add missing LaTeX notations
- aaedd93: implement CTR on server
- c182c91: update old pkcs usage in doc
- ca61359: use LaTeX syntax in rustdoc
- 9dc397e: clean unused Grid CBC invert operations
- 72cc4ab: use CTR instead of CBC
- b61047b: change Grid BitXorAssign implementation to Grid<W, H>
- a0c2314: fix rustdoc unresolved links
- 23090a1: include noise in rustdoc for mix_matrix
- 9f571a4: use release profile for benchmarks
v1.3.3:
- ec2aae2: create SharedKeys type
- 1d42786: implement Zeroize for chat shared keys
- 1015376: update code example for zeroizing
- 29a64d0: implement zeroize on whole REX
- af7e987: implement PartialEq for non constant-time usage
- c325f7a: add constant-time eq default feature
- c124c97: check for invalid padding on decryption
- e3036ee: output hex Grid in REX encryption test
- a18ba36: implement LowerHex display for Grid
- ed5b624: replace REX String errors with GridError
- e863e58: implement Zeroize for Grid
- 2f89495: add zeroize dependency
- 3b0ed6d: fix mix_matrix code duplicity
- 0dee53d: add LWE noise to mix_matrix operation
- 1dd81b2: use read timeout on ask_version
v1.3.2:
- 112f190: update dependencies
- abc980e: use TCP_NODELAY
- da22dfd: replace reqwest with ureq
- fa3d2b1: fix invalid CONFIG_URL
- 4240bbc: optimize release builds
- 69b651c: print result times to 3 decimal places
- 5bef446: simplify env checks
- 9dbcbbf: explicitly use features in pipelines
- a20f786: remove default client feature
- fb46bf8: add cargo features to root doc
- fbbf11d: update root docs
- f20664e: remove chat module lib
- 001505a: fix AUR version extraction
- 5901ed3: fix code example
v1.3.1:
- 3e8c5fd: fix aur pipeline versioning
- 191903a: fix PM server deadlock
- 43bbc05: prevent peer_addr unwrapping
- 556b31e: add stream shutdown to remove_connection fn
v0.3.0-rex.1:
- cd4b916: fix crates.io problems caused by rust workspaces
v0.3.0-rex:
- 2dd1a62: update dependencies
- ca24431: implement rekeying
- 7ee70f9: use looser seq verification
- 07a50ca: decrease max_packet_size to 2048
- b3c88c4: implement persistent buffer on receive fn
- 9098c6c: use output parameter for key_exchange fns
- 4acf5c0: modify keys variable directly from key_exchange fns
- 053ae48: use inline on cheap rex grid operations
- 66b347e: use unified identifier across chat
- 36614d8: replace key derivation seeding with HKDF
- 8063a3e: implement sequence numbers on server packets
- eb57e76: add channels alias for list command
- c88d197: implement sequence numbers on client packets
- f97480d: use big endian instead of native endian
- 2b81e59: verify hmac on receive fn
- b7e7c0a: prepend hmac to ciphertext on send
- 20fc606: add hmac dependency for chat
- 7ef594f: simplify send fn
- 3711acf: implement diagonal mixing to round iterations
- 537ff3e: optimize user search
- 18ff11b: fix last_activity iterations
- b6354d2: prevent stream poisoning on thread crash
- da7f062: remove unused Arc from CONNECTIONS list
- 1c9228d: use DashMap instead of RwLock<Vec> on CONNECTIONS list
- fd96ddd: update dependencies
- ecd31fb: add raw mode guard for client
- 3095ec9: increase SUBCELL_ROUNDS TO 32
- f5a64b9: remove unwrap from receive fn
- 3467fa8: optimize packet encoding
- 8857910: implement random initialization vector for cipher block chaining mode
- f0c4f29: raise max_packet_size to 4096
- e6639a9: use ISO 10126 padding instead of PKCS#7
- 5bfa432: fix channel name condition logic
- 173fc4c: add build.rs bypass env variable
- 8eb67a7: update dependencies
- 5f98acc: return trimmed parameters
- 45ae000: test whole WHY2 instead of core only
- 1d0ea56: use only why2-tests workspace for core-test
- 9de1e32: move core/tests to separate workspace
- c3aaed3: update workflow chat compilations
- cbd748a: fix url for chat configuration templates
- d9b0b94: fix type mismatch in readme code example
- fa379e6: add why2_core alias
- 90ef62b: typo fix
- 62bfd67: update dependencies
- f5faa9c: split on core & chat workspaces
- 685d8d9: bind C-l to list command
- eeaba94: replace empty string expect calls with unwrap
- 8563604: remove unwrap from decrypter cbc
- 135e559: add diffusion test for rex
- b366de4: add cipher block chaining to Grids
- 178cb2e: add matrix mixing operation
- 2b3b7ef: remove rex prefix from rex-tests
- 4db3819: create rex test module
- 05c70df: fix message history crash on special chars
- ab391f6: enable ssh host key checking for gitlab ci
- 048061e: fix comment typos
- 01dc33c: send messages only to matching channel
- b9737ab: implement max_channel_length config entry
- b29f4ec: display channel in list command
- f88405d: display channel in client ui
- f1984be: update dependencies
- e25e4aa: process channel change on server
- 867fc22: add channel property to Authorized Connection
- 611021a: recreate PM on server-side
- c46e437: use unified connection finder
- da5fcff: create peer_addr method for Connection
- f514eba: optimize connection modifications
- e23299c: implement channel change request on client
- 84d9253: disable raw mode on invalid server pkey abort
- 3007a78: abort server-side key exchange on too many invalid packets
- 7dbab33: run max_clients check before listen_client
- 0af5e96: prevent server crash on invalid peer pkey
- 5d4b299: prevent zombie connections on key exchange
- 11d7929: prevent RST crash on new server connections
- b17e368: check for invalid packets on receive fn
- 0fe2e6a: optimize listen_server fn memory usage
- a251c1e: add conditional compilation to chat config
- bd4605a: optimize rex round key fns
- 74a9f95: optimize rex-mix fn
- dbecf19: force user to verify new remote pubkeys
- bbe6e81: rename chat sha256_seed fn to sha256
- 050cb85: check key validity on client
- 3da8ebb: use static key on server & store them on client
- ea3629d: implement height and width fns in Grid
- 1a850e4: send server pubkey first
- 649f0f1: update dependencies
- 6db8ee8: use timeout for fetch_data
- 6edef51: propagate fetch_data errors
- f7ef4f0: add encrypt duration measure to rex test
- ada4ca1: apply non-linear mixing to Grid#from_key
- 4d0611c: use 'fake' login on disabled registrations
- 9c03e52: use ephemeral ecc keys
- 3266c35: update dependencies
v0.2.9-rex:
- 51ac87b: update changelog
- 68f7043: update dependencies
- 3459a33: upload to aur only on release
- cb9c24d: add git identity
- 9e8193e: revert aur to rust image
- 4763df9: aur noconfirm typo fix
- be4a907: revert "add private ssh key verification"
- 650ec74: use archlinuxarm image for aur stage
- f42159f: use archlinux image for aur stage
- 67be9b4: revert "add openssh-client install to aur ci"
- 061f222: add openssh-client install to aur ci
- b12ef55: add private ssh key verification
- a321a4a: remove curl install from aur
- 9468806: remove unused packages from aur ci
- 0284f1d: test: vim typo fix
- 94fc833: test: remove colon from gitlab-ci
- 13fd575: remove ci blank lines
- 13ba74b: test: fix rules & only ci error
- cc4ab04: test: add aur publish to gitlab ci
- d1a9fbe: add aur to readme
- d4c7ef6: move TEST_TEXT from tests to test::core
- 8bfeb2f: add changelog to cargo build
- f7d4107: create handler for reqwest
- e169bb2: add underscore to changelog & mirrors
- 1b1d10c: add changelog
- 63cb425: add scripts to ignored
- 7cf72b9: revert win & mac builds
- e874269: add clang installation to mac build
- 5b4b5cf: add missing binary compilation to mac & win
- 4ddb71c: optimize build downloads
- 5215f1c: add mingw-w64 installation to windows build
- b8f2af4: add rustup targets to gitlab pipeline
- 72da2bd: add cross-compilation to gitlab-ci
- f682e7c: add binary optimization for release profile
- 50aaa1c: prevent from using Grid where W = 1
- dfcdc48: prevent from using 1x1 grid
- f9c05ff: move server port from options to config
- 65d9a21: use u16 for port on client
- bd810fe: move password strength verification to server
- 5742217: implement argon2 on server
- 2a7a798: add argon2 dependency for chat::server
- 1e705be: update dependencies
- 13d382d: add option to disable id displaying
- f15797d: make help command more explanatory
- adab2ee: add option to disable colors on client
- 289edcf: add colored API usage link
- a60e398: fix client config writing
- 9733320: send colors serialized instead of as a string
- 56906ef: display colors on client
- 700ec95: save & send colors from client
- 98783a9: use option for each color type, not for whole colors
- 1f27af2: create config::client_write fn
- f8ca731: forward colors to other users
- fde94db: remove aggressive comment from server_users
- 21293d5: use colors on client-side, rather than requesting them from server
- 80699c3: avoid unwrap in network::server
- eb8af59: simplify client command codes handling
- e47c2f8: implement color request commands on client
- 8c28fa1: implement Default for MessagePacket
- 9b21791: add colors to MessagePacket
- 3ed5561: add colored dependency for chat
- ff9e9f3: update dependencies
- 2703c21: avoid using unwrap for peer_addr
- 8e985e5: revert "run chat-build gh workflow only after core-test succeeds"
- bcc4531: run chat-build gh workflow only after core-test succeeds
- 02ec3e7: implement BitXorAssign for Grid
v0.2.8-rex:
- 01cdb12: fix spam warning on auth
- da56ef8: add code quality badge to readme
- 06b4f45: move server connetion log to network::server
- 227dcad: add max_clients to server config
- eb0a398: prevent reading message from inactive connections
- e1e911e: add client to connection list before key exchange
- 6d42f8a: prevent from incorrect feature usage
- 33c3f09: add release branch to codeql
- 25dea67: add permissions to gh workflows
- d0bb4e4: change codacy workflow for codeql
- 94a6ffc: remove client-side tools from codacy
- 1f396f4: add codacy workflow
- 99ef7b5: wrap readme example code
v0.2.7-rex:
- 3a42858: add prebuilt binaries link to readme
- 5d965dc: add mac & wInDoWs to github chat-build workflow
- 38a62f2: fix combined features workflow issue
- 2bd3a14: allow big packets for authenticated users, with spam filter turned off
- b21f274: use spam violations only where spam_protection is enabled
- 082b68e: use reqwest only in chat module
- befb0ed: add section comments to configs
- aa068c0: remove authority_ip from configs
- d77fce1: use max_packet_size only on server
- dad562e: avoid deprecated api in chat::crypto
- df64a6a: allow deprecation in legacy files
- 744e13b: deprecate whole core module
- e968891: ignore key release input in client binary
- e86a0a3: update dependencies
- af4b239: remove chat feature from docs
- 72c066c: add code example to readme
v0.2.6-rex:
- ba9dceb: fix gnu link
- 7b0b3ec: use markdown readme instead of plaintext
- aef1f3a: add versioning note to docs
- 619510d: prevent client from using commands before auth
- 1c5bd8c: simplify server_config call in if statement
- 7a96b80: add chat build workflows
v0.2.5-rex:
- 88b28da: return Result from encrypt fns
- aaf5778: add license and philosophy to main doc page
- fb4acc3: enable docs for all features
v0.2.4-rex:
- 849fa47: link docs in readme
- 8941b1b: add core documentation
- 9613502: use Result as output of Grid::from_bytes
- 8d30200: remove unused generics in config_read call
- 7a120f9: simplify config reading using generics
- dfd5e99: use private mirror for downloading configs
- 8baeb80: merge client-server ke codes to single code
- ff504a3: check version compatibility on connection
v0.2.3-rex:
- 07c38c8: implement Ctrl+A & Ctrl+E on client
- 92a5936: add gitlab workflow
- f33ee21: create crates.io publish workflow
- 606c648: revert "specify rust-toolchain url"
- 77a1881: specify rust-toolchain url
- 3e91f7b: add core test workflow
- 4404541: rename chat binaries to have why2 prefix
v0.2.2-rex:
- 3e94c1b: move config directory fns to chat
- dce255f: move check_version to chat only
- d0ee103: use crates.io api for version checking
- 75e4295: add semver dependency
- f76cab6: implement RegisterDisabled on client
- 4d3ceea: add allow_register option to server config
- fcc8b45: use valid license expression
- 6eb1948: prevent two clients from having same username during login
- de1c88a: prevent orphan connections on invalid packet
- 3b724f9: make chat dependencies optional
- 5aea26b: replace openssl crate with r521 crate
- faaee7a: add compile condition to chat module
- fd9c55e: replace once_cell crate with std
- f57f55a: use 11x7 grid for rex-test
- 29f4415: update dependencies
- 1cbd7dd: fix invalid Grid indexing
- 21fe8d1: use generics for core-rex functions, consts for chat
- 577e455: add width & height method to Grid
- aa348bf: move str_to_grids to Grid from_bytes method
v0.2.1-rex:
- 833539e: implement Display for Grid
- 496a264: implement Clone & Debug for Grid
- 3f6dafc: move rex-misc to grid implementation block
- d205a46: update repository url to private mirror
- 1d3ae5e: remove unused imports
- 4d9e794: add client compile condition to formatting options
- c146c42: add feature compile condition to binaries
- 8d1ebdd: auto-update configuration files
- 08f6818: use crossterm dependency only on client
- 9a8a408: merge config files and config.rs into one directory
- d7553bc: move connection creating to authenticate_client
- 904b169: feature typo fix
- edff9f6: update private mirror
- c7a4563: move clear_lines fn to misc
- 18233dd: remove module suffix from key_exchange fns
- 0db7488: update dependencies
- 471fb45: split network to client & server module
- 97218c3: create client feature
- 4b8f2bb: create network submodule
- d61fd7d: add anti-spamming system
- c830f36: change max_message_delay_violations to 3
- 5fa84f1: simplify reseting last_activity
- db4a037: simplify connection matching using is_authenticated method
- eed74a5: raise min_message_delay to 1000ms
- 29fbd86: replace is_server with feature conditional compilation
- 9f92337: implement cloned_stream method in disconnect_inactive
- 8796206: append commands to input history
- f0614a7: process invalid commands on client
- a5bb561: update dependencies
- 483012e: simplify network using ? operator
- 0c66f28: simplify Connection usage with methods
- d008c28: simplify disconnect_inactive fn
- f1d9ceb: remove inactive clients on timeout
- 72971b2: correct communication_time comment
- ccaa50c: add last_activity time to Connection
- 74a1b1c: prevent client from crashing on Disconnect code in NonAuthorized stage
- ab82370: prevent client from using remove_connection
- 7cd91a3: allow only ascii alphanumeric usernames
- 6c2456c: authenticate client after login
- c7c118c: prepare network for unauthenticated connections
- e39db89: use global flag for is_server
- e7560cb: version typo fix
- 31b8618: deprecated legacy encryption fns
v0.2.0-rex:
- e53eb1b: create rex_encryption test
- adc8912: apply max_packet_size on client
- 4608d2a: lower max_message_length to 1024
- 403b99f: migrate to rex encryption in chat
- fc393b8: create decrypt_string fn
- 172f227: split rex Data to EncryptedData & DecryptedData
- 58eb762: use string reference in encrypt_string
- 2945ad0: make generate_key_handler fn public
- ef5e07d: replace StdRng with ChaCha20Rng in rex
- e4dff1c: update cargo dependencies
- e3bd885: de-shuffle in decrypter
- ae0f2e1: use correct grid names
- bb4bda9: remove pointless grid_dims variable
- 08eee73: implement invert fns in decrypter
- e888c27: create invert fns for round operation fns
- dc64ae9: rewrite subcell fn
- a14e2d8: make Data structs be Option themselves
- 70810d4: add subcell
- 3d69718: return output in encrypter
- 3486bfa: mix columns
- 6faf1dc: create shift_rows fn
- c82c66b: xor input with round keys
- c0c4fb2: remove REX prefix from options
- f41c329: create xor_grids fn
- de6a385: remove Rex prefix from RexData and RexGrid
- fab791e: move rex-related stuff to separate directory
- 75f9ec0: create round keys
- 1edd60f: move key reshaping code to misc
- 4a9cc1c: remove length parameter from generate_rex fn
- 0e759a6: move grid properties to options
- 5c0aba3: create generate_rex_round_keys fn in crypto
- da044c1: change sha256_seed_rex_key to take grid parameter
- 4bce52d: move crypto-related fns from misc to crypto
- 7955974: move Grid type to Options
- b5165e3: shape key to 8x8 grid
- f280c7b: shuffle input grid using dprng
- d645026: move helper rex fns to core
- c0e89ab: create sha256_seed_rex_key fn
- d73f997: use [i64; 128] keys
- 7a3c6cc: shape input to 8x8 grid, apply PKCS#7
- 27adc7d: create encrypt_string handler fn
- 208da92: load client key in rex-encrypter
- f9301e3: create generate_key fn for rex-misc
- 5bccd12: implement empty method for RexData
- 284ddcc: add rex options
- 332e246: re-add versions.json
- 09f904e: process PrivateMessage
- f65c102: check for invalid encrypted text on server
- d42a567: implement InvalidUsage code
- fb65691: do not send username on every server packet
- 05bfcca: implement PrivateMessage command on client
- 6dcac3b: prepare commands for parameters & simplify uppercase
- 5642290: process list code
- 6b20b4b: code formatting fix
- d87601f: add list command
- 18e8595: add extra space on help command
- 75ec78b: implement help command & shortcut
- f61b41a: simplify client message formatting
- 96000e0: make get_command return tuple of Command and parameters
- 703508b: switch from consts to enum in command handling
- 726f33e: implement Ctrl+C shortcut on client
- 75af294: move exit command to const
- 7fc8b7f: fix username prompt formatting
- 2d295ec: send Leave code on client disconnect
- 9a9a3d8: remove unused server_username variable
- f7132a6: add id to MessagePacket
- 637199b: add id to connection struct
- da5f50d: implement ArrowDown for history
- 79becfe: add message history browsing on ArrowUp
- 1f9de59: remove unused chat username option
- 3f74d67: move client read to separate fn
- 147aab2: fix client imports
- a21c486: implement Delete code in client input
- 2ed0c43: implement ArrowRight code in client input
- 858dfcd: use Vec<char> instead of String for partially read input
- 4b91379: implement ArrowLeft code in client input
- 4463c4b: show password as asterisks
- c7ba9db: fix password prompt formatting
- 49ac88d: replace termios with own crossterm implementation
- 1c9b442: make stdin persistent on message receive
- 745c018: add crossterm dependency
- a509a26: update dependencies
- 44bf933: remove max_tries from client side
- 321683c: implement max_packet_size on server receive
- 9eaa7b1: create max_packet_size option in server config
- 87d0601: fix client crash bug
- 8fd8f24: fix user_pick_username crash
- 80ec17d: add ctrl+c handler to server
- 157ec8d: implement command handler in server input
- 047b7d0: fix empty text on code bug
- 09c0cb3: implement get_command in client binary
- a1b3c9f: return tuple of (command, parameters) in get_command
- e613286: simplify client send
- 1ec6f6e: rename commands to command
- 66ac369: create get_command fn
- 5249604: create commands source file
- 17e185f: process client codes in listen_client fn
- 62d6a96: remove anon users
- 4ab581e: replace Lazy<RwLock<bool>> with AtomicBool in chat-options
- c3bcc3c: clear_lines formatting fix
- db180c0: send join message on client auth
- 30aed08: prevent two clients from having same username
- 3c1f49b: remove client on disconnect
- 2372d15: disconnect all users on server exit
- a375b33: replace hex with base91
- a91de78: disable version check for chat binaries
- a69e824: simplify send_to_all message parameter
- 47b97af: send client messages to all users
- c4e9dbf: add client to connection list after verification
- dd70722: use local shared_key instead of global option on server
- 4c0213f: make receive fn loop until message arrives
- 4b95bf0: sexify password prompt formatting
- 3ee846e: fix password echo bug
- fbc6739: send Accept code to client on login
- 43746ba: remove trailing space
- e02bf59: check password length on client
- b4ce983: make clear_lines fn public
- 4db1a27: enable echo after sending password
- bca2037: prompt user for login
- ad84167: config init bugfix
- c0aaf59: add server login code
- 43d5794: save client password on register
- 713dc6e: create server_users_write fn
- 28f69e5: simplify config
- e7d3822: send hashed password
- 9ecaefb: disable echo on password prompt
- c948d94: replace rpassword with termios
- 6ef596b: create asking_password getter & setter
- 6162014: add rpassword dependency
- 83a0549: prompt client for password
- 266a6a2: send register code to client
- 42f618c: create server_users_contains fn
- fd9b35d: create handler fn for sending code
- 3f4ccc0: rename PickUsername code to Username
- a1e8008: send Disconnect code to client on invalid unames
- 284cdb3: format invalid username message
- 0136456: ask client for usernames
- 08533cd: wait for username from user
- c5c3f91: fix welcome print formatting
- 642a8c3: ask user for username
- cff84ab: simplify as_deref
- 6fdc3a7: format welcome message on client
- 61c401a: loop input on client
- 0fc4d81: use Option<String> for SHARED_KEY option
- 2bdb90f: replace lazy_static with once_cell
- 41fa591: use string slice in send & receive fns
- 6a2c876: process welcome packet on client
- 1f86732: send welcome message with a code
- 50e648f: add receive fn todo
- f6fcd51: remove Cargo.lock from .gitignore
- 7b511bf: simplify reading messages
- 40bd9b8: flush stream on message send
- bb10fe3: send welcome packet to client
- 98b369e: add shared_key option to chat-options
- ea2d4e8: send server_username with key exchange code
- 6986981: use server username in key exchange
- ec5432b: implement diffie-hellman in key_exchange fns
- daecd62: create get_shared_key fn
- 39325ff: finish key_exchange fns
- dc375cd: create receive fn
- f3ba1ed: send encoded packet string to stream
- f652a48: make TcpStream parameters mutable
- ffc0a58: encrypt text in send_packet
- 72c5251: encode MessagePacket to Vec<u8> in send fn
- dd838d5: add serde & bincode dependency
- cfd39a7: create get_public_key fn
- 0fc425d: add hex dependency
- d321dd8: move accept_connections fn to server bin
- 1d2edd8: implement listen_server in client
- aec4024: fix client ip spacer formatting
- c0ed9ce: declare listen_server
- 0306df8: connect to user specified ip in client
- f04658d: add default_port to client config
- fabfd73: remove unused variable from server
- 5976eb9: create client_config fn
- 2873270: accept clients in server bin
- e2e3470: create server-side client accept fns
- 5ddbe2c: implement functions in client bin
- a59dfde: create init_client_config fn
- 132cd0d: create client config
- 88b6ccf: add server_ip to server config
- 122d580: create SERVER_PORT const
- af8ba3a: create ecc keys in server bin
- 9e8cc04: create init_keys function
- cb95bc0: create ecc key constants
- a454e43: add openssl dependency
- 39f8ba8: create & implement init_server_config fn
- 51a4240: create config constants
- 55ec1d9: comment public functions
- 391283c: add cargo dependency
- 079dea2: create CONFIG_URL constant
- 7ca2fa7: add comments to core-options constants
- c3984e3: add server config
- 32b01e7: make get_why2_dir public
- 7979d51: revert "make get_config_dir fn public"
- 4abf128: simplify check_directory
- a6a8c79: create SERVER_CONFIG const
- 2fcc33c: make get_config_dir fn public
- 5c2c582: add more info to Cargo.toml
- 1c48710: create chat modules
- c5fe4f4: remove special characters note
- e004faf: make encryption test fail when values do not match
- ee74649: create encryption test
- cf55244: using self in imports
- f33d4e1: use Option for encrypter key parameter
- 7342c8d: remove ExitCode struct
- 909b5c8: use Option for text in Data structures
- e6d9094: use Option in Data structs
- 3ea66f7: create recommended_padding_rate fn
- 1525c8b: remove trailing space from encrypter
- 7552d57: create decrypter
- 5883c7a: use i64 in text_key_chain instead of i32
- 9411914: create DecryptedData
- 50e1564: remove test from encrypter
- 2dc8cff: implement Data::from in encrypter
- 5565dc2: create from method for Data
- 9437a61: move empty implementation for Data to misc
- 0c1e6a2: remove unused format from options
- 57fc8f9: change Data's output to vector of i32
- aade2db: implement text_key_chain in encrypter
- 07ab9e6: make text_key_chain vector of i32
- 944b90e: add encryption_operation fn pointer to CORE_OPTIONS
- 27e2f99: load text_key_chain in encrypter
- 95c8d12: implement PartialEq for Version
- 018decc: create generate_text_key_chain fn
- 7010d27: insert padding in encryption
- c353dc9: remove unused use
- 45af368: key length comparation fix
- 6e03992: use sha2 crate
- 69b4aba: change seed function to sha256
- 87eff73: create crypto file & seed fn
- d373d2b: impl Default trait for Options
- 9aaa468: use Self in misc methods
- a60828d: implement reqwest in misc
- 8f998ee: replace curl with reqwest
- b6c3c5a: use dirs crate as replacement for env
- 45976ad: use &str instead of String in encrypter parameters
- ccce6f6: implement generate_key in encrypter
- 8806ffa: create generate_key fn
- 5845a99: add rust crate
- 3d3e294: move key_lenght to core options
- 3761478: check for short key in encrypter
- 1d0a00e: create key length option
- 10e288d: check version & text in encrypter
- 70e121a: implement empty method for Data
- 0618149: remove ExitCode return in check_version
- 3e68f52: count versions behind
- a564076: create VERSION const
- 7a51834: parse versions.json
- 8e6c624: swap json crate for serde_json
- 767f06a: remove unused VERSIONS_FILE const
- 05bda93: add json crate
- 4eaa47e: optimize & bugfix versions.json
- 54da5c6: download versions.json
- 65d6f0c: create VERSIONS_FILE const
- 0257216: simplify check_directory fn
- c890249: create VERSIONS_URL const
- 4948726: add curl dependency
- f9c615b: create check_directory function
- 3b99fa4: create config path consts
- 61ce9ba: implement options in check_version
- d57941c: make options' struct values public
- 0de1ba4: rename core_settings to core_options
- 0c8e8a8: create options
- aa2b998: use lazy_static dependency
- ee6a7d2: add misc source file && create WHY2Data & ExitCode
- 77006a5: remove tests dir
- 51ad286: create very basic rust project