Commit Graph

211 Commits (a813f9c93ad49df6c64c86f039afe2d0c821023f)

Author SHA1 Message Date
Jacob Barthelmeh 03fac18efd graceful shutdown with scp interop 2020-08-19 10:55:45 -06:00
John Safranek bfa3d5717c
SSH-AGENT Touchup
1. Add function to request the channel ID for the last message received.
2. Changed the send channel functions to use the self channel ID rather
   than the peer's channel ID.
3. Modified client and echoserver to use the channel ID for the agent
   to send messages.
4. Modify client to receive the entire message from the agent before
   trying to relay it to the peer.
2020-07-30 14:00:28 -07:00
John Safranek 2be3f15106
Remove the select.h header from examples if autoconf cannot find it. 2020-07-22 15:25:51 -07:00
John Safranek 2bf3d5bd87
SSH-AGENT (peer review)
1. Cleanup redundant includes.
2. Add comments to the Read Key function pair.
3. Remove my name as an example user.
4. Change ECC sig build arrays to use macro for size rather than
   bare number.
5. Remove empty if state for agent.
6. Added a couple needed NULL checks on allocs for the agent.
7. If unable to create an agent object on connect, disable agent use.
2020-07-22 14:48:45 -07:00
John Safranek 365d1fd8ea
SSH-AGENT
1. Added option to client to load a public key.
2. Added function ReadKey to load a key from a buffer or from a file
   and store it. Utility for the client.
2020-07-17 14:54:36 -07:00
John Safranek 636cd81d32
SSH-AGENT
1. Example client should check the authType passed into the function,
   not the type stored in the authData.
2. Restore the hansel keys to example client.
3. Add user ECC option to the example client for selecting
   hansel's RSA or ECC key.
4. Restore the ordering of public key and password in
   SendUserAuthRequest().
2020-07-15 09:30:41 -07:00
John Safranek 1250e1f9d8
SSH-AGENT
1. Added the agent support to the configure.ac script.
2. Updated the gitignore file to ignore any stamp-h file.
3. Changed to use the parsing functions and to make the parsing functions
   local.
4. Updates to multichannel.
5. Add -lutil only if needed.
6. Add configure checks for some headers that change based on target OS.
7. Bump version.
8. Test doesn't have real account or real key so agent doesn't test well.
2020-07-15 09:29:49 -07:00
John Safranek a996d1e1c2
Clean up some scan-build complaints. 2020-07-09 09:33:30 -07:00
John Safranek bd4ebe1a1d
Add check of return value of chdir(). 2020-07-08 15:23:26 -07:00
John Safranek 9c4739e3b2
Shell Worker
1. Add the echoserver shell support as a configure option.
2. Added some header and function checks to configure.
3. Use the new header and function checks to select includes
   in the echoserver.
2020-07-08 13:40:00 -07:00
John Safranek 49bd9ad518
Shell Worker
1. Fixed issue with the testsuite failing when the shell is enabled.
2. Added option to echoserver to force the echo behavior instead of
the shell when shell is enabled.
2020-07-08 12:02:27 -07:00
John Safranek 18ec6d927c
Shell Worker
Add customer contributed code to the echoserver for handling spawning a shell.
2020-07-08 12:00:32 -07:00
John Safranek df74449ea1
Auth Type None
1. Added a compile time option to allow None as an authentication type, mainly
for testing.
2. Added a couple updates for VxWorks builds.
2020-05-28 15:15:38 -07:00
John Safranek 0ea40ec85f
Release Rollup
1. Fix some C++ compiler errors.
2. Added "static" to the globals in the client and SFTP client.
3. Removed an unused string.
2020-04-24 10:50:22 -07:00
John Safranek 2c710dcfd8
Merge pull request #251 from JacobBarthelmeh/sftp
free name list after done and fix clean_path
2020-03-03 15:06:40 -08:00
Jacob Barthelmeh cc7db42475 free name list after done and fix clean_path 2020-03-03 15:33:01 -07:00
John Safranek 9d1cbbab8e
wolfSCP
Add support for an example SCP client.
2020-03-03 11:27:02 -08:00
Chris Conlon 86ee47bd33
Merge pull request #246 from JacobBarthelmeh/memory
fix XFREE/MALLOC typo to be WFREE/MALLOC
2020-02-28 09:12:57 -07:00
John Safranek 380a53554b
Merge pull request #241 from JacobBarthelmeh/scp
exit channel in echoserver before sending disconnect
2020-02-27 19:18:30 -08:00
Jacob Barthelmeh 22cab294b1 fix XFREE/MALLOC typo to be WFREE/MALLOC 2020-02-26 13:19:43 -07:00
JacobBarthelmeh 552b763e4f
Merge pull request #243 from ejohnstown/vxworks
VxWorks Customizations
2020-02-18 17:08:00 -07:00
John Safranek 7c8ae04b44
VxWorks Customizations
Also includes some bug fixes.
1. Add a function that returns a pointer to a session's username string.
2. Add a function to set a "raw" username copied from an incoming packet.
3. Add tests for 1 and 2.
4. Server saves a copy of the username on successful authentication.
5. Fix bug with GetString() where it would choke on a 0 length string.
6. Clean up the termios macros and mode creation.
7. Add some options for when WOLFSSL_VXWORKS is set.
2020-02-18 16:01:00 -08:00
John Safranek 52183c3018
Merge pull request #242 from JacobBarthelmeh/auth
updates to auth callback
2020-02-18 14:29:22 -08:00
Jacob Barthelmeh 9b7700cd6b adjust stream exit in scp case 2020-02-14 17:52:25 -07:00
Jacob Barthelmeh 67851e5c10 updates to auth callback 2020-02-11 15:04:50 -07:00
Jacob Barthelmeh 84785ffe39 exit channel in echoserver before sending disconnect 2020-02-11 14:41:14 -07:00
John Safranek 51d4b14155
Automake Include Maintenance
Remove redundant items from the automake includes. They were including files already included.
2020-02-10 15:44:55 -08:00
Jacob Barthelmeh 31131c0e03 public key vs password is now decision of user callback 2020-01-27 10:33:28 -07:00
Jacob Barthelmeh f1d00102ba fix for no old name build 2020-01-23 08:54:21 -08:00
Chris Conlon 83f8372458 update copyright to 2020 2020-01-03 15:16:47 -08:00
John Safranek e68e6620ce Update and clarify the ECC options to the echoserver. (Added -E to the list.) 2019-12-05 13:18:16 -08:00
John Safranek 1cc53ef330 removed a dead assign from the echoserver 2019-10-29 14:51:55 -07:00
John Safranek 56be98ae5e
Merge pull request #210 from JacobBarthelmeh/sftp
adjust example sftp client chmod command parsing
2019-10-28 08:15:22 -07:00
JacobBarthelmeh f0c93bdd08
Merge pull request #206 from ejohnstown/auto-test
Automatic Client Test
2019-10-25 14:11:27 -06:00
John Safranek 8328ad57a6
Added an error message when the wolfsftp client fails to copy a file on autopilot. Prints out the whole remote file name. Deleted a now unused constant. 2019-10-25 13:07:18 -07:00
Jacob Barthelmeh ca1f59d7fc adjust example sftp client chmod command parsing 2019-10-25 14:00:37 -06:00
John Safranek c07a743c1a
Autopilot SFTP Test
1. Added some command line options to the wolfSFTP client to show how to
use a hardcoded automatic file transfer rather than using the command
shell. On top of that, added a script to get and put some sample files.
It was built into the wolfSFTP client to allow for using all forms of
authentication as well as using the command line password.
2. Update wolfSSH_SFTP_STAT() with clearing the error register if it is WANT_READ.
2019-10-25 10:51:36 -07:00
John Safranek 8d2900cbab
1. Reflowed some whitespace.
2. Removed a redundant function that was an artifact of the rebase.
3. Added a reset of the retry count.
2019-10-24 11:10:28 -07:00
Takashi Kojo 55c0352a76 sendDisconnect at password reject, example code in echoserver 2019-10-24 10:55:05 -07:00
John Safranek 744a67e53b
Echoserver Maintenance
1. When printing server worker errors, print out the error string on the
stored error code, not the return value.
2. If the error is a socket error, don't try to send a shutdown message
to the peer.
3. Update the echoserver to close the connection cleanly when the SFTP
peer exits.
4. Added a function to check a WOLFSSL_CHANNEL if it is in eof.
2019-10-10 10:57:39 -07:00
JacobBarthelmeh 4a246abc76
Merge pull request #197 from ejohnstown/maintenance
Maintenance
2019-09-19 22:36:48 -06:00
John Safranek 365be7d63c Maintenance
1. Clean up a few compiler warnings.
2. Between Windows, MacOS, and Linux, the %llu printf tag varies
slightly, add a typecast of the word64 to unsigned long long to hush the
compiler warning.
2019-09-11 14:10:16 -07:00
John Safranek f59ea6f1ac Maintenance
Fix a typo in a string.
2019-09-11 10:54:26 -07:00
Takashi Kojo 968c1dd30c MSGID_REQUEST_FAILURE to response MSGID_GLOBAL_REQUEST 2019-09-08 07:27:32 +09:00
kaleb-himes 051764972b Remove void cast on non-existent variable in single threaded mode 2019-07-05 17:00:05 -06:00
John Safranek ff6c167aad
Merge pull request #175 from kojo1/PW_retry
Password retry out
2019-07-01 16:46:42 -07:00
Takashi Kojo 3e58768b7e WS_USER_AUTH_E for wolfSSH_get_error 2019-06-29 13:02:21 +09:00
Takashi Kojo 58a768df29 WOLFSSH_USERAUTH_REJECTED 2019-06-29 12:37:34 +09:00
Takashi Kojo 153fa4798b WS_PASSWORD_RETRYOUT 2019-06-29 12:11:51 +09:00
Takashi Kojo 650bdf40b4 Pasword retry out 2019-06-26 13:27:14 +09:00
John Safranek 62f309c8ae
Merge pull request #170 from kojo1/GlobalReq
Global request
2019-06-18 10:18:46 -07:00
John Safranek 56616d3416 Public key authentication
1. Cleanup some debug printouts.
2. Add option to the echoserver and wolfSFTP client to use ECC keys or RSA
keys for user authentication.
3. Add option to the echoserver to use ECC keys for peer authentication.

Note, the user authentication type is still hardcoded in the library as
password. To use public key, need to update the authId in
SendUserAuthFailure().
2019-06-06 11:59:35 -07:00
John Safranek d755132ccf Public key authentication
1. Refactor of the RSA public key and password user auth code.
2. In the userauth code remove some usused variable names or use some orphaned variables.
3. Fix the sizes used for calculating the buffer size for ECC public keys.
4. Add in the length of the ECDSA signature wrapping the set r,s.
5. Return the public key rejected error code from DoUserAuthRequestPublicKey when the callback returns invalid public key.
2019-06-06 10:37:22 -07:00
Takashi Kojo faa9764753 add Global Request callback 2019-06-06 07:10:44 +09:00
Takashi Kojo fd4b2a69ee Global Request Failed case in echoserver callback 2019-06-06 07:10:44 +09:00
Takashi Kojo 86cbb26868 Add send Global Request 2019-06-06 07:10:44 +09:00
John Safranek 150ad93a07 Memory Refactor
1. Add functions to print out the sizes of various structures.
2019-05-09 09:37:29 -07:00
Jacob Barthelmeh cfe2aafbf0 static analysis and cast of argument 2019-04-30 13:02:08 -06:00
Jacob Barthelmeh fbbd3aa552 fixes for infer test 2019-04-30 13:02:08 -06:00
Jacob Barthelmeh 9f66a16ed5 add wc_ecc_fp_free to test treads for ecc caching 2019-04-09 15:46:11 -06:00
John Safranek 9aaebbb146 Update the copyright to 2019 2019-04-08 10:24:08 -07:00
Jacob Barthelmeh d27454d567 remove duplicate line 2019-04-03 17:09:07 -06:00
Jacob Barthelmeh 9df6e300f8 do not exit on want read with console parsing 2019-04-01 13:16:59 -06:00
Jacob Barthelmeh ff84dea8a0 add function to get extended data and example remote command execute
update client example remote command execute for Windows

add wolfSSH_stream_peek and console translation

improvements to console translation and add client side psuedo terminal

windows client -c fix, clang build, sanity check on side for exec

fix for warnings with VS 2010 build

cast return value of WSTRLEN

update termios guard and fix for scan-build check

advance extended data buffer index on read

fix for error.h after rebase
2019-03-29 09:25:27 -06:00
John Safranek 8a267e2bd2 Public Key Check Callback
The public key check callback hook is given a pointer to the public key, the size of the key, and the application-specific context data.
1. Added a callback function hook for checking the public key sent to the client by the server. It defaults to accepting the key.
2. Added accessors for the public key check callback function and context data.
3. Added a dummy callback to all the example tools.
2019-03-26 13:51:35 -07:00
John Safranek a2bfd7749c 1. Update the Windows build README.
2. Add a guard to the sftpclient.c so it builds without SFTP enabled.
2019-03-04 16:46:25 -08:00
John Safranek ea515ca1b2 Add configure option to disable building the example tools. 2019-02-27 13:25:55 -08:00
John Safranek 2350ffe00e Review Fixes
1. Add a wrapper to the key-gen code that checks for wolfCrypt's keygen flag and errors if keygen isn't available.
2. The main loops around wolfSSH_stream_read() for the example client and server needed to check the error register for WANT_READ or WANT_WRITE, not the return code.
2019-02-27 11:28:24 -08:00
Jacob Barthelmeh aa7330f7fc nonblocking chmod, add chmod sftp test 2019-02-07 17:51:52 -07:00
Jacob Barthelmeh a6a1297c93 check for socket disconnect error 2019-02-07 11:07:10 -07:00
John Safranek accd3c299d Add a function to assign-add a 32-bit value to a 64-bit value. The
64-bit value is an array 2 of 32-bit values. In SFTP, changed up all the
uses (most) of word64 to word32 arrays. Not all systems we support have
64-bit types available.
2019-02-06 14:31:31 -08:00
Jacob Barthelmeh a92bcdc074 add test cases for more SFTP commands 2019-02-06 13:45:18 -07:00
Jacob Barthelmeh 9c73700f25 add SFTP tests to testsuite 2019-02-04 12:22:31 -07:00
John Safranek 5512128aa5 1. Fix allocation for UNICODE strings. Need to be (count+1)*2 octets.
2. Added a local dynamic memory type in the ports for strings.
3. Removed the includes for winsock2.h. It is included by windows.h.
4. In the example client, switched fin and fout to macros to stdin and
stdout. While they are FILE in POSIX, in Windows they are a function.
2019-01-25 11:45:46 -08:00
Jacob Barthelmeh f2cb7a3356 scan-build fixes 2019-01-25 10:47:24 -07:00
Jacob Barthelmeh b8ae2fab59 add non blocking testing and better support for non blocking edge cases 2019-01-24 15:48:34 -07:00
John Safranek a611c02211 Merge remote-tracking branch 'origin/nbsftp' into nbsftp 2019-01-23 18:27:56 -08:00
John Safranek ae6144f596 1. Add the default path parameter to the wolfsftp client.
2. Split the error check on the Windows file write into two checks.
3. Check the success of closing the local file in Windows.
4. Rearrange the Get state machine to attempt to close the remote file
first then the local file. The local file close is always attempted.
2019-01-23 18:22:56 -08:00
Jacob Barthelmeh 58186064de clean up closing directory with SFTP 2019-01-23 17:47:20 -07:00
Jacob Barthelmeh df6955866d add sftp test cases, fix build for C89, add flag print out to echoserver 2019-01-23 12:02:35 -07:00
Jacob Barthelmeh d54a42161e move sftp client example to examples directory 2019-01-23 11:23:32 -07:00
Jacob Barthelmeh fff773213a change wolffwd example name to portfwd 2019-01-23 11:23:21 -07:00
Jacob Barthelmeh ee85cc552e add more support for want writes on server side 2019-01-23 10:37:21 -07:00
John Safranek d13607d889 1. Add a defaultSftpPath to the server, with an API function.
2. Add option to echoserver for the SFTP path.
3. Fix issues with the Get() and Put() state machines with respect to
file access. Windows builds to use Win32 API. Windows builds do not use
fseek().
4. RecvRealPath() to use the new default path option if available. It
does not call getcwd() for Windows builds.
2019-01-22 11:38:28 -08:00
Jacob Barthelmeh 61a41b5b7b remove possible double free and fix non blocking echoserver 2019-01-17 17:22:41 -07:00
Jacob Barthelmeh 19a4ce6403 initial sftp server non blocking 2019-01-16 18:03:36 -07:00
Jacob Barthelmeh 0f77f67bdf check for scp + no server and have print outs for servers 2019-01-11 09:48:58 -07:00
John Safranek 7e9981c6ec Updated the main API, echoserver, client, and server for the NO_WOLFSSH_SERVER and NO_WOLFSSH_CLIENT options. 2019-01-09 14:25:50 -08:00
John Safranek 42675723e2 Fixed some issues with NO_WOLFSSH_SERVER builds. wolfSSH proper still
has the server code, but the wolfSFTP code excludes the server side.
2019-01-09 13:14:25 -08:00
John Safranek 2e92d9c1ee Add check if building echoserver to test.h so the static functions aren't included when building not-inline. 2018-12-14 13:58:47 -08:00
Jacob Barthelmeh fc92e85853 use int type for getting example args 2018-12-11 17:01:56 -07:00
John Safranek d2a1c2ab1b Non-blocking fix
1. Added a non-blocking socket option to the client.
2. Added a non-blocking socket option to the server.
3. Added support for select to the test header.
4. Updated the usage strings so they are formatted the same.
2018-11-21 11:38:33 -08:00
John Safranek b97b237695 Static Analysis Fixes
Ran the clang static analysis and infer and fixed most of the reported
items. There were many that infer found that looked like false
positives.
2018-11-15 13:28:42 -08:00
John Safranek bbf818c587 also added test-locking group. tweaked misc.c, misc.h so they played nice with NO_INLINE 2018-09-20 16:19:25 -07:00
John Safranek cf959db741 Grouping test header functions into test-client, test-server, or
test-threading blocks. Adding flags to the examples and testsuite to
enable various test functions.
2018-09-20 16:10:13 -07:00
John Safranek 8a13a829df scan-build fixes
1. Didn't initialize errFd before calling select() in wolffwd.
2. Wasn't checking the accepted appFd in wolffwd.
3. For the test_KDF() unit test, a call to ConvertHexToBin() could succeed and leave eKey NULL, and pass it to memcmp().
2018-09-13 17:19:39 -07:00
John Safranek dbd59aea4a TCP/IP Forwarding
1. Removed the "direction" flag from the wolffwd example. Only works in one direction at this point.
2. Added the GPL header to the wolffwd example source.
3. Removed the stray prints from the wolffwd example.
4. wolfFwd example fails out if any of the sockets report failure.
2018-09-12 15:30:18 -07:00
John Safranek cbeb2cf566 TCP/IP Forwarding
1. Fixed an issue with the FD_SET copy.
2. Fixed some memory issues discovered with Valgrind.
2018-09-04 15:17:14 -07:00
John Safranek dfbfe8d93f TCP/IP Forwarding
1. Removed an unused data type and unused functions.
2. Do a couple fixes for scan-build.
2018-08-31 14:26:56 -07:00
John Safranek a42075d823 TCP/IP Forwarding
1. Removed some unused macros in the configure.ac script.
2. Added option for enabling TCP/IP Forwarding.
3. Coalesced the option enable checks to one location in the configure script.
4. Removed redundant compile flags from the wolfSSH automake include.
5. Added a check of the BUILD_SCP option to leave out the wolfcsp file as needed.
6. Removed the redundant debug flags from the ax_harden macro since we add them at the configure level.
7. Modified the ax_harden macro to add the flags to AM_CFLAGS rather than CFLAGS.
8. Removed redundant AM_CFLAGS from the include.am that are adding them to their build's CFLAGS.
9. Replaced the have-wolfssl macro with AC_CHECK_LIB.
10. When adding per-target CPPFLAGS, add the AM_CPPFLAGS back in.
11. remove redundant call to wolfSSH_Init() from echoserver
12. Add runtime configuration of the session window size and max packet size.
13. Parse the TCP/IP direct connect flavor of the Channel Open message.
14. Save and release the host and origin addresses.
15. Added an example forwarding tool.
16. Move and rename the FIND_SELF and FIND_PEER constants.
17. Add planned functions ChannelSend, ChannelRead, ChannelExit, worker.
18. Add new function ChannelNext, which returns the next channel in the list.
19. Changed SendBuffered() from static to local so it could be used by the worker.
20. Separated creating a channel and sending an channel open request.
21. Added status code for pending open channel and for received data.
2018-08-31 11:21:42 -07:00