1. Change the block size in the key decoding to a named constant rather
than a bare number.
2. Change the comparison from a difference of two unsigned values
against zero to comparing them directly.
1. Add two error codes for the new key format decoding.
2. Add in some better error and bound checking.
3. Fix ordering on a WOLFSSH_UNUSED and variable declaration.
4. Remove redundant ; from WOLFSSH_UNUSED function-like macro.
1. Move the KeySignature struct around in internal.c so it can be used
for a couple tasks.
2. Add decoder for the OpenSSH-format keys.
3. Add an identification function for the new key.
4. Update ReadKey to handle the new format.
A couple changes to keep the echoserver from spin-locking.
1. The SFTP worker should wait for data if the channel window is full.
If the client isn't sending a window adjust, it might be because of a
human time scale issue. New timeout is 60 seconds.
2. When the echoserver is waiting for something from the user and the
select times out, wait a second instead.
1. The wolfSSL version number to check for the old threading code was
v5.5.2, not v5.5.1.
2. A new wrapper was introduced around return for threading in what will
be wolfSSL v5.6.4. Added that wrapper if it didn't exist.
3. Some other types for threading are added in v5.6.4, wolfSSH needs to
use the old threading model if using wolfSSL v5.6.3.
1. Changed the function client_test()'s name to wolfSSH_Client().
2. Added "destination" to the usage text.
3. Improved the handling of the termios settings.
4. Remove the file names from the ClientFreeBuffers() function.
5. Changed ClientFreeBuffers() to free if the pointers aren't pointing
at the static buffers. They may not load because the file is bad, but
it will still have a file name.
6. Only try to load the public key or cert if loading the private key
was successful. Do not fail out if key cannot load, password may
still be possible.
1. Remove the global req test code.
2. Remove the check for having both both private key and public key
specified. It currently derives a public key name from the private
key name.
1. In the windowMonitor(), move the check for quit outside the
conditional build so it works for both macOS and Linux.
2. Removed a dead store in readPeer(). If the socket wants read, that's
fine. Don't need to override it.
3. When allocating memory for the hostname, don't forget the nul.
4. When parsing the command line and storing a copy of it to send to the
peer, stash it in the config.
5. When allocating memory for the username, add 1 for the nul outside
the strlen().
6. When canceling a thread, be sure to join it afterwards.
7. Added a read me document for wolfSSH client. Just a quick note. To be
replaced later with something more formal.
1. Remove stray print when the client isn't going to ask for a password.
2. Remove adding the CR to the end of the string sent to the server.
The appropriate solution is to fix the issue in the Windows build of
the server. For POSIX, the LF is converted to CR/LF, so we get a
CR/CR/LF in the end, which looks like the enter key double-striking.
1. Update to use a default public key based on the name of the private
key.
2. Stash the public key name in the config structure, removing it from
the list of globals.
1. Add quit parameter to the example client's thread_args structure.
This will be used to let the windowMonitor thread know the
application is quitting.
2. If the windowMonitor's quit flag is set, it will exit and not call
wait again.
3. Join the windowMonitor thread rather than cancel it.
1. Allocating the user and hostname separately, makes updates from
default to set value easier.
2. Set a default user name based and private key file name based on the
environment.
3. Changed the visibility of the client common functions to
WOLFSSL_LOCAL.
4. Removed the userEcc varible from the main loop, and from the client
utility functions. Key type should be figured from the key.
5. Removed the hardcoded default keys for fake user Hansel. The key
loading functions will error out if a file name isn't used.
1. Added a comment regarding the potential leak. It is confirmed NOT A
LEAK.
2. Fixed the connection fail. Added a check for WANT_READ and treat that
as a success.
3. Put back a couple things removed from the last commit regarding
agent.
4. Change ShowUsage to use basename(). (Linux build didn't have
basename_r().)
5. Add NULL for the fs context parameter of the file wrapper macros.
6. Printing config checks any pointers for null then uses a default
value.
7. Minor cleanups.
1. Since the base of the client is copied from the example client,
remove the command line options used by the client. Start populating
with a few of the options used by the other client, and decode the
destination and optional command from the command line.
2. Move parsing the command line to its own function. It is a member of
a set of functions for reading the command line options, the config
file, and the environment to config the client.
3. Trim out many includes. Some will be added back later. Some don't
need to be there.
4. The client will only use non-blocking sockets.
Note/Todo:
(a) The connection fails to start some of the time.
(b) The user name has the potential to leak.