mirror of https://github.com/wolfSSL/wolfssl.git
Merge pull request #169 from lchristina26/master
updates for VxWorks Update example client/server to be compatible with VxWorks buildspull/171/head
commit
8dfa1af9e9
|
@ -1,23 +1,103 @@
|
||||||
## Wind River Workbench using VxWorks with wolfSSL
|
## Wind River Workbench using VxWorks with wolfSSL
|
||||||
###SETUP:
|
###1 SETUP:
|
||||||
####Steps (There are many ways to set this up, this is one example)
|
####1.1 Steps
|
||||||
1. Open WorkBench and go to File > Import > Existing Projects Into Workspace
|
1. Start by creating a new VxWorks image in Workbench by going to File > New >
|
||||||
2. Make sure the correct path to wolfSSL header files(wolfssl/wolfssl) is
|
Project and then select VxWorks Image Project.
|
||||||
selected by right clicking the project and going to Properties > Build
|
2. Include the path to the wolfSSL header files(wolfssl/wolfssl):
|
||||||
Properties > Paths. If you need to change this to a different path, do so now.
|
Right click the project and go to Properties > Build Properties > Paths.
|
||||||
3. Right click on the project and go to Import > Filesystem. Choose your path
|
Choose Browse and select the wolfssl directory. Click ok.
|
||||||
to the wolfSSL library here. Uncheck everything except the src and wolfcrypt
|
3. Add preprocessor definitions:
|
||||||
directories. Only keep wolfcrypt/test/test.h, not test.c. Also uncheck test
|
Right click on project, go to Properties > Build Properties > Variables.
|
||||||
and benchmark directories and aes\_asm.asm and aes\_asm.s files from wolfcrypt/src.
|
Highlight EXTRA\_DEFINE. Click Edit and add the following to this line:
|
||||||
4. In wolfSSL/test.h, make sure certs are in the proper directory, or move.
|
-DWOLFSSL\_VXWORKS.
|
||||||
5. The wolfcrypt source files, namely misc.c, may need to be moved directly under
|
This can also be done in wolfssl/wolfcrypt/settings.h by uncommenting the
|
||||||
a wolfcrypt folder within the project. It will be \<name\_of\_project\>/wolfcrypt/src/misc.c.
|
#define WOLFSSL_VXWORKS
|
||||||
Alnternatively, add wolfssl to the include path, #include
|
line.
|
||||||
\<wolfssl/wolfcrypt/src/misc.c\>.
|
If there is not a filesystem set up, add -DUSE\_CERT\_BUFFERS\_2048 and
|
||||||
6. Make sure TFM\_X86 is undefined.
|
-DNO\_FILESYSTEM to the variables or #define USE\_CERT\_BUFFERS\_2048 and
|
||||||
|
\#define NO\_FILESYSTEM at the top of settings.h.
|
||||||
|
If there is a filesystem, paths may need to be changed to the path of
|
||||||
|
filesystem for certificate files in wolfssl/test.h.
|
||||||
|
4. Right click on the project and go to Import > Filesystem. Choose the path
|
||||||
|
to the wolfSSL library here. Uncheck everything except the src and wolfcrypt
|
||||||
|
directories.
|
||||||
|
In the wolfcrypt/src folder, uncheck aes\_asm.asm and aes\_asm.s.
|
||||||
|
5. If NO\_\_DEV\_RANDOM remains defined in wolfssl/wolfcrypt/settings.h under
|
||||||
|
\#ifdef WOLFSSL\_VXWORKS, a new GenerateSeed() function will need to be defined
|
||||||
|
in wolfcrypt/src/random.c.
|
||||||
|
|
||||||
####Necessary Files
|
####1.2 Testing wolfSSL with VxWorks:
|
||||||
You will need the following files to replicate this build:
|
#####1.2.1 wolfCrypt Test Application
|
||||||
|
The wolfCrypt test application will test each of the cryptographic algorithms
|
||||||
|
and output the status for each. This should return success for each algorithm
|
||||||
|
if everything is working.
|
||||||
|
|
||||||
|
1. In usrAppInit.c, make a call to the wolfCrypt test application by adding
|
||||||
|
the following to the usrAppInit() function:
|
||||||
|
|
||||||
|
typedef struct func_args {
|
||||||
|
int argc;
|
||||||
|
char** argv;
|
||||||
|
int return_code;
|
||||||
|
} func_args;
|
||||||
|
|
||||||
|
func_args args;
|
||||||
|
|
||||||
|
wolfcrypt_test(&args);
|
||||||
|
2. Include these header files in usrAppInit.c:
|
||||||
|
#include <wolfcrypt/test/test.h>
|
||||||
|
#include <wolfssl/ssl.h>
|
||||||
|
#include <wolfssl/wolfcrypt/settings.h>
|
||||||
|
#include <wolfssl/test.h>
|
||||||
|
3. Start the simulator and check that all wolfCrypt tests pass. If there is a
|
||||||
|
certificate file error, adjust the caCert file locations in
|
||||||
|
wolfcrypt/test/test.c or wolfssl/test.h to those of the filesystem in use.
|
||||||
|
|
||||||
|
#####1.2.2 Example Client
|
||||||
|
The wolfSSL example client can be found in wolfssl/examples/client.
|
||||||
|
|
||||||
|
1. Add client.c and client.h from the examples/client folder to the Workbench
|
||||||
|
project.
|
||||||
|
2. In usrAppInit.c, inlucde the func\_args as described in the Test Application
|
||||||
|
section, and add a call to the client function:
|
||||||
|
client_test(&args);
|
||||||
|
3. Add the client.h header file to the includes at the top of usrAppInit.c.
|
||||||
|
4. The wolfSSLIP will need to be changed to the IP address the server is
|
||||||
|
running on. If using the VxWorks Simulator, localhost will not work. NAT should
|
||||||
|
be selected in the Simulator Connection Advanced setup.
|
||||||
|
5. Start the example server from within the wolfSSL directory on the host
|
||||||
|
machine:
|
||||||
|
./examples/server/server -d -b
|
||||||
|
The -d option disables peer checks, -b allows for binding to any interface.
|
||||||
|
6. Start the example client in Workbench.
|
||||||
|
|
||||||
|
#####1.2.3 Example Server
|
||||||
|
The example server requires more configuration than the client if using the
|
||||||
|
VxWorks simulator.
|
||||||
|
|
||||||
|
1. Add server.c and server.h from the wolfssl/examples/server folder to the
|
||||||
|
Workbench project.
|
||||||
|
2. In usrAppInit.c, inlcude the func\args as described in the Test and Client
|
||||||
|
applications and add a call to the server function:
|
||||||
|
|
||||||
|
func_args args = { 0 };
|
||||||
|
tcp_ready ready;
|
||||||
|
InitTcpReady(&ready);
|
||||||
|
args.signal = &ready;
|
||||||
|
server_test(&args);
|
||||||
|
|
||||||
|
3. Add the server.h header file to the includes at the top of usrAppInit.c.
|
||||||
|
4. Start the server by following the directions in Section 2 for setting up
|
||||||
|
the VxWorks Simulator.
|
||||||
|
5. Start the client on the host machine:
|
||||||
|
./examples/client/client -d
|
||||||
|
The -d option disables peer checks.
|
||||||
|
Note: If there are certificate file errors, the file paths in wolfssl/test.h
|
||||||
|
will need to be adjusted to follow the paths located on the filesystem used
|
||||||
|
by the VxWorks project.
|
||||||
|
|
||||||
|
####1.3 Necessary Files
|
||||||
|
The following files are required to replicate this build:
|
||||||
* vxsim\_linux\_1\_0\_2\_2 (directory)
|
* vxsim\_linux\_1\_0\_2\_2 (directory)
|
||||||
* Includes
|
* Includes
|
||||||
* compilers/gnu-4.8.1.5/include/c++/4.8
|
* compilers/gnu-4.8.1.5/include/c++/4.8
|
||||||
|
@ -29,7 +109,7 @@ You will need the following files to replicate this build:
|
||||||
* vsb\_vxsim\_linux/krnl/h/public
|
* vsb\_vxsim\_linux/krnl/h/public
|
||||||
* vsb\_vxsim\_linux/krnl/configlette
|
* vsb\_vxsim\_linux/krnl/configlette
|
||||||
* vsb\_vxsim\_linux/h
|
* vsb\_vxsim\_linux/h
|
||||||
* usrAppInit.c (should be created when you create a new VxWorks image)
|
* usrAppInit.c (should be created when with new VxWorks image)
|
||||||
* Include this at the top:
|
* Include this at the top:
|
||||||
#include <wolfssl/wolfcrypt/settings.h>
|
#include <wolfssl/wolfcrypt/settings.h>
|
||||||
#include <wolfcrypt/test/test.h>
|
#include <wolfcrypt/test/test.h>
|
||||||
|
@ -47,20 +127,24 @@ You will need the following files to replicate this build:
|
||||||
wolfcrypt\_test(NULL);
|
wolfcrypt\_test(NULL);
|
||||||
/* client\_test(NULL); */
|
/* client\_test(NULL); */
|
||||||
/*server\_test(&args);*/
|
/*server\_test(&args);*/
|
||||||
* usrRtpAppInit.c (should be created when you create a new VxWorks image)
|
* usrRtpAppInit.c (should be created when with new VxWorks image)
|
||||||
Leave unchanged
|
Leave unchanged
|
||||||
* This project was tested with a pre-built image in the VxWorks distribution
|
* This project was tested with a pre-built image in the VxWorks distribution
|
||||||
called vsb\_vxsim\_linux. \<BEGIN\> $(VSB\_DIR) line in the .wpj file may need to be
|
called vsb\_vxsim\_linux.
|
||||||
changed according to the VxWorks package being used.
|
|
||||||
|
|
||||||
###VXWORKS SIMULATOR:
|
###2 VXWORKS SIMULATOR:
|
||||||
In "Open Connection Details" under VxWorks Simulator which is in the connections
|
######The VxWorks simulator was used for testing the wolfSSL example applications (server, client, benchmark, and test).
|
||||||
dropdown. After the project has been build, choose the corresponding kernel image, typically called project/default/VxWorks. Select simnetd from the dropdown and enter 192.168.200.1 as the IP address.
|
######These are the steps to reproduce this testing method.
|
||||||
|
|
||||||
|
Go to "Open Connection Details" under VxWorks Simulator which is in the connections
|
||||||
|
dropdown. Choose the corresponding kernel image, typically called
|
||||||
|
project/default/VxWorks. Select simnetd from the dropdown and enter
|
||||||
|
192.168.200.1 as the IP address.
|
||||||
|
|
||||||
To connect to a server running on the VxWorks Simulator, enter these commands
|
To connect to a server running on the VxWorks Simulator, enter these commands
|
||||||
into the host terminal (for Ubuntu 14.04):
|
into the host terminal (for Ubuntu 14.04):
|
||||||
sudo openvpn --mktun --dev tap0
|
sudo openvpn --mktun --dev tap0
|
||||||
In Wind River directory:
|
In Wind River directory:
|
||||||
vxworks-7/host/x86-linux2/bin/vxsimnetd
|
sudo vxworks-7/host/x86-linux2/bin/vxsimnetd
|
||||||
This will start the vxsimnetd application. Leave it open. The IP address to
|
This will start the vxsimnetd application. Leave it open. The IP address to
|
||||||
connect to the server is the same as above.
|
connect to the server is the same as above.
|
||||||
|
|
|
@ -464,6 +464,7 @@ THREAD_RETURN WOLFSSL_THREAD client_test(void* args)
|
||||||
|
|
||||||
StackTrap();
|
StackTrap();
|
||||||
|
|
||||||
|
#ifndef WOLFSSL_VXWORKS
|
||||||
while ((ch = mygetopt(argc, argv,
|
while ((ch = mygetopt(argc, argv,
|
||||||
"?gdeDusmNrwRitfxXUPCh:p:v:l:A:c:k:Z:b:zS:L:ToO:aB:"))
|
"?gdeDusmNrwRitfxXUPCh:p:v:l:A:c:k:Z:b:zS:L:ToO:aB:"))
|
||||||
!= -1) {
|
!= -1) {
|
||||||
|
@ -697,6 +698,7 @@ THREAD_RETURN WOLFSSL_THREAD client_test(void* args)
|
||||||
}
|
}
|
||||||
|
|
||||||
myoptind = 0; /* reset for test cases */
|
myoptind = 0; /* reset for test cases */
|
||||||
|
#endif /* !WOLFSSL_VXWORKS */
|
||||||
|
|
||||||
if (externalTest) {
|
if (externalTest) {
|
||||||
/* detect build cases that wouldn't allow test against wolfssl.com */
|
/* detect build cases that wouldn't allow test against wolfssl.com */
|
||||||
|
|
|
@ -314,6 +314,7 @@ THREAD_RETURN CYASSL_THREAD server_test(void* args)
|
||||||
fdOpenSession(Task_self());
|
fdOpenSession(Task_self());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef WOLFSSL_VXWORKS
|
||||||
while ((ch = mygetopt(argc, argv, "?dbstnNufrRawPIp:v:l:A:c:k:Z:S:oO:D:L:ieB:"))
|
while ((ch = mygetopt(argc, argv, "?dbstnNufrRawPIp:v:l:A:c:k:Z:S:oO:D:L:ieB:"))
|
||||||
!= -1) {
|
!= -1) {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
|
@ -494,6 +495,7 @@ THREAD_RETURN CYASSL_THREAD server_test(void* args)
|
||||||
}
|
}
|
||||||
|
|
||||||
myoptind = 0; /* reset for test cases */
|
myoptind = 0; /* reset for test cases */
|
||||||
|
#endif /* !WOLFSSL_VXWORKS */
|
||||||
|
|
||||||
/* sort out DTLS versus TLS versions */
|
/* sort out DTLS versus TLS versions */
|
||||||
if (version == CLIENT_INVALID_VERSION) {
|
if (version == CLIENT_INVALID_VERSION) {
|
||||||
|
|
|
@ -305,6 +305,10 @@
|
||||||
|
|
||||||
|
|
||||||
#ifdef WOLFSSL_VXWORKS
|
#ifdef WOLFSSL_VXWORKS
|
||||||
|
#define WOLFSSL_HAVE_MIN
|
||||||
|
#define USE_FAST_MATH
|
||||||
|
#define TFM_TIMING_RESISTANT
|
||||||
|
#define NO_MAIN_DRIVER
|
||||||
#define NO_DEV_RANDOM
|
#define NO_DEV_RANDOM
|
||||||
#define NO_WRITEV
|
#define NO_WRITEV
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue