why2 1.3.1

Lightweight, fast, secure, and easy to use encryption system.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
Changelog
=========

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