[修改] 增加freeRTOS
1. 版本FreeRTOSv202212.01,命名为kernel;
This commit is contained in:
158
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/README.md
vendored
Normal file
158
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/README.md
vendored
Normal file
@ -0,0 +1,158 @@
|
||||
# tenAsys INtime RTOS Port
|
||||
|
||||
## Overview
|
||||
|
||||
This port is for the tenAsys INtime RTOS available [here](http://www.tenasys.com/intime).
|
||||
|
||||
To enable use the define `INTIME_RTOS`.
|
||||
|
||||
## Usage
|
||||
|
||||
The wolfExamples.sln is a Visual Studio 2015 project. You must have the INtime SDK installed and an INtime RTOS agent running.
|
||||
|
||||
The default configuration is set inside the `IDE/INTIME-RTOS/user_settings.h` file.
|
||||
|
||||
The example application provides a simple menu interface to select difference application functions to test.
|
||||
|
||||
```
|
||||
wolfExamples started
|
||||
wolfExamples finished initialization
|
||||
|
||||
MENU
|
||||
|
||||
t. WolfCrypt Test
|
||||
b. WolfCrypt Benchmark
|
||||
c. WolfSSL Client Example
|
||||
s. WolfSSL Server Example
|
||||
l. WolfSSL Localhost Client/Server Example
|
||||
Please select one of the above options:
|
||||
```
|
||||
|
||||
### `t`wolfCrypt Test
|
||||
|
||||
Performs testing of all crypto algorithms.
|
||||
|
||||
```
|
||||
Crypt Test
|
||||
error test passed!
|
||||
base64 test passed!
|
||||
base64 test passed!
|
||||
MD5 test passed!
|
||||
SHA test passed!
|
||||
SHA-256 test passed!
|
||||
SHA-384 test passed!
|
||||
SHA-512 test passed!
|
||||
Hash test passed!
|
||||
HMAC-MD5 test passed!
|
||||
HMAC-SHA test passed!
|
||||
HMAC-SHA256 test passed!
|
||||
HMAC-SHA384 test passed!
|
||||
HMAC-SHA512 test passed!
|
||||
HMAC-KDF test passed!
|
||||
X963-KDF test passed!
|
||||
GMAC test passed!
|
||||
Chacha test passed!
|
||||
POLY1305 test passed!
|
||||
ChaCha20-Poly1305 AEAD test passed!
|
||||
DES test passed!
|
||||
DES3 test passed!
|
||||
AES test passed!
|
||||
AES-GCM test passed!
|
||||
AES-CCM test passed!
|
||||
AES Key Wrap test passed!
|
||||
RANDOM test passed!
|
||||
RSA test passed!
|
||||
DH test passed!
|
||||
DSA test passed!
|
||||
SRP test passed!
|
||||
PWDBASED test passed!
|
||||
openSSL extra test
|
||||
OPENSSL test passed!
|
||||
ECC test passed!
|
||||
ECC Enc test passed!
|
||||
ECC buffer test passed!
|
||||
CURVE25519 test passed!
|
||||
ED25519 test passed!
|
||||
CMAC test passed!
|
||||
PKCS7enveloped test passed!
|
||||
PKCS7signed test passed!
|
||||
PKCS7encrypted test passed!
|
||||
mutex test passed!
|
||||
memcb test passed!
|
||||
Crypt Test: Return code 0
|
||||
```
|
||||
|
||||
### `b` wolfCrypt Benchmark
|
||||
|
||||
Performs benchmark of crypto algorithms.
|
||||
|
||||
```
|
||||
Benchmark Test
|
||||
RNG 25 kB took 0.002 seconds, 11.017 MB/s
|
||||
AES enc 25 kB took 0.002 seconds, 15.090 MB/s
|
||||
AES dec 25 kB took 0.002 seconds, 15.119 MB/s
|
||||
AES-GCM 25 kB took 0.003 seconds, 9.433 MB/s
|
||||
AES-CTR 25 kB took 0.001 seconds, 22.378 MB/s
|
||||
AES-CCM 25 kB took 0.002 seconds, 15.306 MB/s
|
||||
CHACHA 25 kB took 0.002 seconds, 16.063 MB/s
|
||||
CHA-POLY 25 kB took 0.001 seconds, 20.447 MB/s
|
||||
3DES 25 kB took 0.002 seconds, 10.717 MB/s
|
||||
|
||||
MD5 25 kB took 0.00 seconds, 31.576 MB/s
|
||||
POLY1305 25 kB took 0.000 seconds, 201.575 MB/s
|
||||
SHA 25 kB took 0.00 seconds, 43.761 MB/s
|
||||
SHA-256 25 kB took 0.001 seconds, 19.299 MB/s
|
||||
SHA-384 25 kB took 0.002 seconds, 14.577 MB/s
|
||||
SHA-512 25 kB took 0.001 seconds, 21.718 MB/s
|
||||
AES-CMAC 25 kB took 0.00 seconds, 34.925 MB/s
|
||||
|
||||
RSA 2048 public 2.445 milliseconds, avg over 1 iterations
|
||||
RSA 2048 private 64.711 milliseconds, avg over 1 iterations
|
||||
|
||||
RSA 1024 key generation 318.755 milliseconds, avg over 5 iterations
|
||||
RSA 2048 key generation 22648.396 milliseconds, avg over 5 iterations
|
||||
DH 2048 key generation 23.119 milliseconds, avg over 1 iterations
|
||||
DH 2048 key agreement 26.756 milliseconds, avg over 1 iterations
|
||||
|
||||
ECC 256 key generation 2.984 milliseconds, avg over 5 iterations
|
||||
EC-DHE key agreement 2.967 milliseconds, avg over 5 iterations
|
||||
EC-DSA sign time 1.448 milliseconds, avg over 5 iterations
|
||||
EC-DSA verify time 3.304 milliseconds, avg over 5 iterations
|
||||
ECC encrypt 5.860 milliseconds, avg over 1 iterations
|
||||
ECC decrypt 6.360 milliseconds, avg over 1 iterations
|
||||
|
||||
CURVE25519 256 key generation 1.416 milliseconds, avg over 5 iterations
|
||||
CURVE25519 key agreement 1.332 milliseconds, avg over 5 iterations
|
||||
|
||||
ED25519 key generation 0.320 milliseconds, avg over 5 iterations
|
||||
ED25519 sign time 0.595 milliseconds, avg over 5 iterations
|
||||
ED25519 verify time 1.310 milliseconds, avg over 5 iterations
|
||||
Benchmark Test: Return code 0
|
||||
```
|
||||
|
||||
### `c` wolfSSL Client
|
||||
|
||||
To configure the host address and port modify the `TLS_HOST_REMOTE` and `TLS_PORT` macros at top of `wolfExamples.c`. This example uses TLS 1.2 to connect to a remote host.
|
||||
|
||||
### `s` wolfSSL Server
|
||||
|
||||
To configure the port to listen on modify `TLS_PORT` at top of `wolfExamples.c`.
|
||||
|
||||
### `l` wolfSSL Localhost Server/Client
|
||||
|
||||
Starts a TLS server thread listening on localhost. Starts the TLS client and performs connect, exchanges some data and disconnects.
|
||||
|
||||
```
|
||||
Waiting for a connection...
|
||||
Client connected successfully
|
||||
Using Non-Blocking I/O: 0
|
||||
Message for server: Client:
|
||||
|
||||
Received: I hear ya fa shizzle!
|
||||
|
||||
The client has closed the connection.
|
||||
```
|
||||
|
||||
## References
|
||||
|
||||
For more information please contact info@wolfssl.com.
|
||||
13
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/include.am
vendored
Normal file
13
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/include.am
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
# vim:ft=automake
|
||||
# included from Top Level Makefile.am
|
||||
# All paths should be given relative to the root
|
||||
|
||||
EXTRA_DIST += \
|
||||
IDE/INTIME-RTOS/README.md \
|
||||
IDE/INTIME-RTOS/user_settings.h \
|
||||
IDE/INTIME-RTOS/libwolfssl.c \
|
||||
IDE/INTIME-RTOS/libwolfssl.vcxproj \
|
||||
IDE/INTIME-RTOS/wolfExamples.c \
|
||||
IDE/INTIME-RTOS/wolfExamples.h \
|
||||
IDE/INTIME-RTOS/wolfExamples.vcxproj \
|
||||
IDE/INTIME-RTOS/wolfExamples.sln
|
||||
20
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/libwolfssl.c
vendored
Normal file
20
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/libwolfssl.c
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
// libwolfssl.c
|
||||
// Defines the entry point for the DLL application
|
||||
|
||||
#include <rt.h>
|
||||
|
||||
BOOLEAN __stdcall RslMain( RTHANDLE hModule,
|
||||
DWORD ul_reason_for_call,
|
||||
LPVOID lpReserved
|
||||
)
|
||||
{
|
||||
switch (ul_reason_for_call) {
|
||||
case RSL_PROCESS_ATTACH:
|
||||
case RSL_THREAD_ATTACH:
|
||||
case RSL_THREAD_DETACH:
|
||||
case RSL_PROCESS_DETACH:
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
215
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/libwolfssl.vcxproj
vendored
Executable file
215
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/libwolfssl.vcxproj
vendored
Executable file
@ -0,0 +1,215 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|INtime">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>INtime</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|INtime">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>INtime</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="README.md" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="libwolfssl.c" />
|
||||
<ClCompile Include="..\..\src\crl.c" />
|
||||
<ClCompile Include="..\..\src\internal.c" />
|
||||
<ClCompile Include="..\..\src\wolfio.c" />
|
||||
<ClCompile Include="..\..\src\keys.c" />
|
||||
<ClCompile Include="..\..\src\ocsp.c" />
|
||||
<ClCompile Include="..\..\src\sniffer.c" />
|
||||
<ClCompile Include="..\..\src\ssl.c" />
|
||||
<ClCompile Include="..\..\src\tls.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\aes.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\arc4.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\asm.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\asn.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\blake2b.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\camellia.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\chacha.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\chacha20_poly1305.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\cmac.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\coding.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\compress.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\curve25519.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\des3.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\dh.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\dsa.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\ecc.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\ed25519.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\error.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\fe_low_mem.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\fe_operations.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\ge_low_mem.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\ge_operations.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\hash.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\hc128.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\hmac.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\idea.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\integer.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\logging.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\md2.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\md4.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\md5.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\memory.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\pkcs12.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\pkcs7.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\poly1305.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\pwdbased.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\rabbit.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\random.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\ripemd.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\rsa.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\sha.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\sha256.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\sha512.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\signature.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\srp.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\tfm.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\wc_encrypt.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\wc_port.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\wolfevent.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\src\wolfmath.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="user_settings.h" />
|
||||
<ClInclude Include="..\..\wolfssl\callbacks.h" />
|
||||
<ClInclude Include="..\..\wolfssl\certs_test.h" />
|
||||
<ClInclude Include="..\..\wolfssl\crl.h" />
|
||||
<ClInclude Include="..\..\wolfssl\error-ssl.h" />
|
||||
<ClInclude Include="..\..\wolfssl\internal.h" />
|
||||
<ClInclude Include="..\..\wolfssl\ocsp.h" />
|
||||
<ClInclude Include="..\..\wolfssl\options.h" />
|
||||
<ClInclude Include="..\..\wolfssl\sniffer.h" />
|
||||
<ClInclude Include="..\..\wolfssl\sniffer_error.h" />
|
||||
<ClInclude Include="..\..\wolfssl\ssl.h" />
|
||||
<ClInclude Include="..\..\wolfssl\test.h" />
|
||||
<ClInclude Include="..\..\wolfssl\version.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\aes.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\arc4.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\asn.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\asn_public.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\async.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\blake2-impl.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\blake2-int.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\blake2.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\camellia.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\chacha.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\chacha20_poly1305.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\cmac.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\coding.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\compress.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\curve25519.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\des3.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\dh.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\dsa.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\ecc.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\ed25519.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\error-crypt.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\fe_operations.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\fips_test.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\ge_operations.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\hash.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\hc128.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\hmac.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\idea.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\integer.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\logging.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\md2.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\md4.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\md5.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\memory.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\mem_track.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\misc.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\mpi_class.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\mpi_superclass.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\pkcs12.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\pkcs7.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\poly1305.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\pwdbased.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\rabbit.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\random.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\ripemd.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\rsa.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\settings.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\sha.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\sha256.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\sha512.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\signature.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\srp.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\tfm.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\types.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\visibility.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\wc_encrypt.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\wc_port.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\wolfevent.h" />
|
||||
<ClInclude Include="..\..\wolfssl\wolfcrypt\wolfmath.h" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{1731767D-573F-45C9-A466-191DA0D180CF}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|INtime'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|INtime'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|INtime'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|INtime'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|INtime'">
|
||||
<IntDir>$(Configuration)_$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|INtime'">
|
||||
<IntDir>$(Configuration)_$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|INtime'">
|
||||
<ClCompile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<Version>21076.20052</Version>
|
||||
<AdditionalOptions>/SAFESEH:NO %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalDependencies>rt.lib;pcibus.lib;netlib.lib;clib.lib;vshelper.lib</AdditionalDependencies>
|
||||
<OutputFile>$(SolutionDir)$(Configuration)\\libwolfssl.rsl</OutputFile>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<PreprocessorDefinitions>_USRDLL;WOLFSSL_DLL;BUILDING_WOLFSSL;WOLFSSL_USER_SETTINGS;_USE_64BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|INtime'">
|
||||
<ClCompile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<Version>21076.20052</Version>
|
||||
<AdditionalOptions>/SAFESEH:NO %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalDependencies>rt.lib;pcibus.lib;netlib.lib;clib.lib;vshelper.lib</AdditionalDependencies>
|
||||
<OutputFile>$(SolutionDir)$(Configuration)\\libwolfssl.rsl</OutputFile>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<PreprocessorDefinitions>_USRDLL;WOLFSSL_DLL;BUILDING_WOLFSSL;WOLFSSL_USER_SETTINGS;_USE_64BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
511
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/user_settings.h
vendored
Normal file
511
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/user_settings.h
vendored
Normal file
@ -0,0 +1,511 @@
|
||||
/* Example custom user settings for wolfSSL and INtime RTOS port */
|
||||
|
||||
#ifndef WOLFSSL_USER_SETTINGS_H
|
||||
#define WOLFSSL_USER_SETTINGS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* Port - Platform */
|
||||
/* ------------------------------------------------------------------------- */
|
||||
#undef INTIME_RTOS
|
||||
#define INTIME_RTOS
|
||||
|
||||
#undef WOLF_EXAMPLES_STACK
|
||||
#define WOLF_EXAMPLES_STACK 65536
|
||||
|
||||
#undef WOLFSSL_GENERAL_ALIGNMENT
|
||||
#define WOLFSSL_GENERAL_ALIGNMENT 4
|
||||
|
||||
/* platform already has min()/max() */
|
||||
#undef WOLFSSL_HAVE_MIN
|
||||
#define WOLFSSL_HAVE_MIN
|
||||
#undef WOLFSSL_HAVE_MAX
|
||||
#define WOLFSSL_HAVE_MAX
|
||||
|
||||
/* disable directory support */
|
||||
#undef NO_WOLFSSL_DIR
|
||||
#define NO_WOLFSSL_DIR
|
||||
|
||||
/* disable writev */
|
||||
#undef NO_WRITEV
|
||||
#define NO_WRITEV
|
||||
|
||||
/* we provide main entry point */
|
||||
#undef NO_MAIN_DRIVER
|
||||
#define NO_MAIN_DRIVER
|
||||
|
||||
/* if using in single threaded mode */
|
||||
#undef SINGLE_THREADED
|
||||
//#define SINGLE_THREADED
|
||||
/* Note: HAVE_THREAD_LS is not support for INtime RTOS */
|
||||
|
||||
/* reduces stack usage, by using malloc/free for stack variables over 100 bytes */
|
||||
#undef WOLFSSL_SMALL_STACK
|
||||
//#define WOLFSSL_SMALL_STACK
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* Math Configuration */
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* fast math uses stack and inline assembly to speed up math */
|
||||
#undef USE_FAST_MATH
|
||||
#define USE_FAST_MATH
|
||||
|
||||
#ifdef USE_FAST_MATH
|
||||
/* timing resistance for side-channel attack protection */
|
||||
#undef TFM_TIMING_RESISTANT
|
||||
#define TFM_TIMING_RESISTANT
|
||||
#endif
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* Crypto */
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* ECC */
|
||||
#if 1
|
||||
#undef HAVE_ECC
|
||||
#define HAVE_ECC
|
||||
|
||||
/* Support for custom curves */
|
||||
#define WOLFSSL_CUSTOM_CURVES
|
||||
|
||||
/* Curve types */
|
||||
//#define NO_ECC_SECP
|
||||
#define HAVE_ECC_SECPR2
|
||||
#define HAVE_ECC_SECPR3
|
||||
#define HAVE_ECC_BRAINPOOL
|
||||
#define HAVE_ECC_KOBLITZ
|
||||
|
||||
/* Curve sizes */
|
||||
#undef HAVE_ALL_CURVES
|
||||
//#define HAVE_ALL_CURVES
|
||||
#ifndef HAVE_ALL_CURVES
|
||||
/* allows enabling custom curve sizes */
|
||||
#undef ECC_USER_CURVES
|
||||
#define ECC_USER_CURVES
|
||||
|
||||
//#define HAVE_ECC112
|
||||
//#define HAVE_ECC128
|
||||
//#define HAVE_ECC160
|
||||
#define HAVE_ECC192
|
||||
#define HAVE_ECC224
|
||||
//#define NO_ECC256
|
||||
#define HAVE_ECC384
|
||||
#define HAVE_ECC521
|
||||
#endif
|
||||
|
||||
/* Fixed point cache (speeds repeated operations against same private key) */
|
||||
#undef FP_ECC
|
||||
#define FP_ECC
|
||||
#ifdef FP_ECC
|
||||
/* Bits / Entries */
|
||||
#undef FP_ENTRIES
|
||||
#define FP_ENTRIES 2
|
||||
#undef FP_LUT
|
||||
#define FP_LUT 4
|
||||
#endif
|
||||
|
||||
/* Optional ECC calculation method */
|
||||
/* Note: doubles heap usage, but slightly faster */
|
||||
#undef ECC_SHAMIR
|
||||
#define ECC_SHAMIR
|
||||
|
||||
/* Reduces heap usage, but slower */
|
||||
/* timing resistance for side-channel attack protection */
|
||||
#undef ECC_TIMING_RESISTANT
|
||||
#define ECC_TIMING_RESISTANT
|
||||
|
||||
#ifdef USE_FAST_MATH
|
||||
/* use reduced size math buffers for ecc points */
|
||||
#undef ALT_ECC_SIZE
|
||||
#define ALT_ECC_SIZE
|
||||
|
||||
/* Enable TFM optimizations for ECC */
|
||||
#if defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)
|
||||
#define TFM_ECC192
|
||||
#endif
|
||||
#if defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES)
|
||||
#define TFM_ECC224
|
||||
#endif
|
||||
#if !defined(NO_ECC256) || defined(HAVE_ALL_CURVES)
|
||||
#define TFM_ECC256
|
||||
#endif
|
||||
#if defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)
|
||||
#define TFM_ECC384
|
||||
#endif
|
||||
#if defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)
|
||||
#define TFM_ECC521
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* RSA */
|
||||
#undef NO_RSA
|
||||
#if 1
|
||||
#ifdef USE_FAST_MATH
|
||||
/* Maximum math bits (Max RSA key bits * 2) */
|
||||
#undef FP_MAX_BITS
|
||||
#define FP_MAX_BITS 4096
|
||||
#endif
|
||||
|
||||
/* half as much memory but twice as slow */
|
||||
#undef RSA_LOW_MEM
|
||||
//#define RSA_LOW_MEM
|
||||
|
||||
/* RSA blinding countermeasures */
|
||||
#undef WC_RSA_BLINDING
|
||||
#define WC_RSA_BLINDING
|
||||
#else
|
||||
#define NO_RSA
|
||||
#endif
|
||||
|
||||
/* AES */
|
||||
#undef NO_AES
|
||||
#if 1
|
||||
#undef HAVE_AESGCM
|
||||
#define HAVE_AESGCM
|
||||
|
||||
#ifdef HAVE_AESGCM
|
||||
/* GCM Method: GCM_SMALL, GCM_WORD32 or GCM_TABLE */
|
||||
//#define GCM_SMALL
|
||||
#define GCM_TABLE
|
||||
#endif
|
||||
|
||||
#undef WOLFSSL_AES_COUNTER
|
||||
#define WOLFSSL_AES_COUNTER
|
||||
|
||||
#undef HAVE_AESCCM
|
||||
#define HAVE_AESCCM
|
||||
|
||||
#undef WOLFSSL_AES_DIRECT
|
||||
#define WOLFSSL_AES_DIRECT
|
||||
|
||||
#undef HAVE_AES_KEYWRAP
|
||||
#define HAVE_AES_KEYWRAP
|
||||
#else
|
||||
#define NO_AES
|
||||
#endif
|
||||
|
||||
/* ChaCha20 / Poly1305 */
|
||||
#undef HAVE_CHACHA
|
||||
#undef HAVE_POLY1305
|
||||
#if 1
|
||||
#define HAVE_CHACHA
|
||||
#define HAVE_POLY1305
|
||||
|
||||
/* Needed for Poly1305 */
|
||||
#undef HAVE_ONE_TIME_AUTH
|
||||
#define HAVE_ONE_TIME_AUTH
|
||||
#endif
|
||||
|
||||
/* Ed25519 / Curve25519 */
|
||||
#undef HAVE_CURVE25519
|
||||
#undef HAVE_ED25519
|
||||
#if 1
|
||||
#define HAVE_CURVE25519
|
||||
#define HAVE_ED25519
|
||||
|
||||
/* Optionally use small math (less flash usage, but much slower) */
|
||||
#if 0
|
||||
#define CURVED25519_SMALL
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* Hashing */
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* Sha */
|
||||
#undef NO_SHA
|
||||
#if 1
|
||||
/* 1k smaller, but 25% slower */
|
||||
//#define USE_SLOW_SHA
|
||||
#else
|
||||
#define NO_SHA
|
||||
#endif
|
||||
|
||||
/* Sha256 */
|
||||
#undef NO_SHA256
|
||||
#if 1
|
||||
#else
|
||||
#define NO_SHA256
|
||||
#endif
|
||||
|
||||
/* Sha512 */
|
||||
#undef WOLFSSL_SHA512
|
||||
#if 1
|
||||
#define WOLFSSL_SHA512
|
||||
|
||||
/* Sha384 */
|
||||
#undef WOLFSSL_SHA384
|
||||
#if 1
|
||||
#define WOLFSSL_SHA384
|
||||
#endif
|
||||
|
||||
/* over twice as small, but 50% slower */
|
||||
//#define USE_SLOW_SHA2
|
||||
#endif
|
||||
|
||||
/* MD5 */
|
||||
#undef NO_MD5
|
||||
#if 1
|
||||
#else
|
||||
#define NO_MD5
|
||||
#endif
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* Enable Features */
|
||||
/* ------------------------------------------------------------------------- */
|
||||
#undef KEEP_PEER_CERT
|
||||
#define KEEP_PEER_CERT
|
||||
|
||||
#undef HAVE_COMP_KEY
|
||||
#define HAVE_COMP_KEY
|
||||
|
||||
#undef HAVE_ECC_ENCRYPT
|
||||
#define HAVE_ECC_ENCRYPT
|
||||
|
||||
#undef HAVE_TLS_EXTENSIONS
|
||||
#define HAVE_TLS_EXTENSIONS
|
||||
|
||||
#undef HAVE_SUPPORTED_CURVES
|
||||
#define HAVE_SUPPORTED_CURVES
|
||||
|
||||
#undef HAVE_EXTENDED_MASTER
|
||||
#define HAVE_EXTENDED_MASTER
|
||||
|
||||
#undef WOLFSSL_DTLS
|
||||
#define WOLFSSL_DTLS
|
||||
|
||||
#undef OPENSSL_EXTRA
|
||||
#define OPENSSL_EXTRA
|
||||
|
||||
#undef WOLFSSL_BASE64_ENCODE
|
||||
#define WOLFSSL_BASE64_ENCODE
|
||||
|
||||
#undef HAVE_HKDF
|
||||
#define HAVE_HKDF
|
||||
|
||||
#undef WOLFSSL_CMAC
|
||||
#define WOLFSSL_CMAC
|
||||
|
||||
#undef WOLFSSL_KEY_GEN
|
||||
#define WOLFSSL_KEY_GEN
|
||||
|
||||
#undef WOLFSSL_CERT_GEN
|
||||
#define WOLFSSL_CERT_GEN
|
||||
|
||||
#undef WOLFSSL_CERT_REQ
|
||||
#define WOLFSSL_CERT_REQ
|
||||
|
||||
#undef WOLFSSL_CERT_EXT
|
||||
#define WOLFSSL_CERT_EXT
|
||||
|
||||
#undef HAVE_PK_CALLBACKS
|
||||
#define HAVE_PK_CALLBACKS
|
||||
|
||||
#undef HAVE_ALPN
|
||||
#define HAVE_ALPN
|
||||
|
||||
#undef HAVE_SNI
|
||||
#define HAVE_SNI
|
||||
|
||||
#undef HAVE_MAX_FRAGMENT
|
||||
#define HAVE_MAX_FRAGMENT
|
||||
|
||||
#undef HAVE_TRUNCATED_HMAC
|
||||
#define HAVE_TRUNCATED_HMAC
|
||||
|
||||
#undef SESSION_CERTS
|
||||
#define SESSION_CERTS
|
||||
|
||||
#undef HAVE_SESSION_TICKET
|
||||
#define HAVE_SESSION_TICKET
|
||||
|
||||
#undef WOLFCRYPT_HAVE_SRP
|
||||
#define WOLFCRYPT_HAVE_SRP
|
||||
|
||||
#undef WOLFSSL_HAVE_CERT_SERVICE
|
||||
#define WOLFSSL_HAVE_CERT_SERVICE
|
||||
|
||||
#undef HAVE_PKCS7
|
||||
#define HAVE_PKCS7
|
||||
|
||||
#undef HAVE_X963_KDF
|
||||
#define HAVE_X963_KDF
|
||||
|
||||
#undef WOLFSSL_HAVE_WOLFSCEP
|
||||
#define WOLFSSL_HAVE_WOLFSCEP
|
||||
|
||||
#undef WOLFSSL_ALWAYS_KEEP_SNI
|
||||
#define WOLFSSL_ALWAYS_KEEP_SNI
|
||||
|
||||
#undef WOLFSSL_ALWAYS_VERIFY_CB
|
||||
#define WOLFSSL_ALWAYS_VERIFY_CB
|
||||
|
||||
#undef WOLFSSL_SEP
|
||||
#define WOLFSSL_SEP
|
||||
|
||||
#undef ATOMIC_USER
|
||||
#define ATOMIC_USER
|
||||
|
||||
#undef HAVE_OCSP
|
||||
#define HAVE_OCSP
|
||||
|
||||
#undef HAVE_CERTIFICATE_STATUS_REQUEST
|
||||
#define HAVE_CERTIFICATE_STATUS_REQUEST
|
||||
|
||||
#undef HAVE_CERTIFICATE_STATUS_REQUEST_V2
|
||||
#define HAVE_CERTIFICATE_STATUS_REQUEST_V2
|
||||
|
||||
#undef HAVE_CRL
|
||||
#define HAVE_CRL
|
||||
|
||||
#undef PERSIST_CERT_CACHE
|
||||
//#define PERSIST_CERT_CACHE
|
||||
|
||||
#undef PERSIST_SESSION_CACHE
|
||||
//#define PERSIST_SESSION_CACHE
|
||||
|
||||
#undef WOLFSSL_DER_LOAD
|
||||
//#define WOLFSSL_DER_LOAD
|
||||
|
||||
#undef WOLFSSL_DES_ECB
|
||||
//#define WOLFSSL_DES_ECB
|
||||
|
||||
#undef HAVE_CAMELLIA
|
||||
//#define HAVE_CAMELLIA
|
||||
|
||||
#undef HAVE_NULL_CIPHER
|
||||
//#define HAVE_NULL_CIPHER
|
||||
|
||||
#undef WOLFSSL_RIPEMD
|
||||
//#define WOLFSSL_RIPEMD
|
||||
|
||||
|
||||
/* TLS Session Cache */
|
||||
#if 1
|
||||
#define SMALL_SESSION_CACHE
|
||||
//#define MEDIUM_SESSION_CACHE
|
||||
//#define BIG_SESSION_CACHE
|
||||
//#define HUGE_SESSION_CACHE
|
||||
#else
|
||||
#define NO_SESSION_CACHE
|
||||
#endif
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* Disable Features */
|
||||
/* ------------------------------------------------------------------------- */
|
||||
#undef NO_WOLFSSL_SERVER
|
||||
//#define NO_WOLFSSL_SERVER
|
||||
|
||||
#undef NO_WOLFSSL_CLIENT
|
||||
//#define NO_WOLFSSL_CLIENT
|
||||
|
||||
/* disables TLS 1.0/1.1 support */
|
||||
#undef NO_OLD_TLS
|
||||
//#define NO_OLD_TLS
|
||||
|
||||
/* disable access to filesystem */
|
||||
#undef NO_FILESYSTEM
|
||||
//#define NO_FILESYSTEM
|
||||
|
||||
#undef NO_RC4
|
||||
#define NO_RC4
|
||||
|
||||
#undef NO_HC128
|
||||
#define NO_HC128
|
||||
|
||||
#undef NO_RABBIT
|
||||
#define NO_RABBIT
|
||||
|
||||
#undef NO_MD4
|
||||
#define NO_MD4
|
||||
|
||||
/* Pre-shared keys */
|
||||
#undef NO_PSK
|
||||
//#define NO_PSK
|
||||
|
||||
#undef NO_DSA
|
||||
//#define NO_DSA
|
||||
|
||||
#undef NO_DH
|
||||
//#define NO_DH
|
||||
|
||||
#undef NO_DES3
|
||||
//#define NO_DES3
|
||||
|
||||
#undef NO_PWDBASED
|
||||
//#define NO_PWDBASED
|
||||
|
||||
/* encoding/decoding support */
|
||||
#undef NO_CODING
|
||||
//#define NO_CODING
|
||||
|
||||
/* memory wrappers and memory callbacks */
|
||||
#undef NO_WOLFSSL_MEMORY
|
||||
//#define NO_WOLFSSL_MEMORY
|
||||
|
||||
/* In-lining of misc.c functions */
|
||||
/* If defined, must include wolfcrypt/src/misc.c in build */
|
||||
/* Slower, but about 1k smaller */
|
||||
#undef NO_INLINE
|
||||
//#define NO_INLINE
|
||||
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* Benchmark / Test */
|
||||
/* ------------------------------------------------------------------------- */
|
||||
#undef NO_CRYPT_TEST
|
||||
//#define NO_CRYPT_TEST
|
||||
|
||||
#undef NO_CRYPT_BENCHMARK
|
||||
//#define NO_CRYPT_BENCHMARK
|
||||
|
||||
/* Use reduced benchmark / test sizes */
|
||||
#undef BENCH_EMBEDDED
|
||||
#define BENCH_EMBEDDED
|
||||
|
||||
#undef USE_CERT_BUFFERS_2048
|
||||
#define USE_CERT_BUFFERS_2048
|
||||
|
||||
#undef USE_CERT_BUFFERS_256
|
||||
#define USE_CERT_BUFFERS_256
|
||||
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* Debugging */
|
||||
/* ------------------------------------------------------------------------- */
|
||||
#undef DEBUG_WOLFSSL
|
||||
//#define DEBUG_WOLFSSL
|
||||
#ifdef DEBUG_WOLFSSL
|
||||
/* Use this to measure / print heap usage */
|
||||
#if 0
|
||||
#undef USE_WOLFSSL_MEMORY
|
||||
#define USE_WOLFSSL_MEMORY
|
||||
|
||||
#undef WOLFSSL_TRACK_MEMORY
|
||||
#define WOLFSSL_TRACK_MEMORY
|
||||
#endif
|
||||
|
||||
/* Math debugging (adds support for mp_dump) */
|
||||
#undef WOLFSSL_DEBUG_MATH
|
||||
//#define WOLFSSL_DEBUG_MATH
|
||||
#else
|
||||
#undef NO_ERROR_STRINGS
|
||||
//#define NO_ERROR_STRINGS
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* WOLFSSL_USER_SETTINGS_H */
|
||||
619
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/wolfExamples.c
vendored
Normal file
619
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/wolfExamples.c
vendored
Normal file
@ -0,0 +1,619 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include <rt.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netdb.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <io.h>
|
||||
|
||||
#include "wolfExamples.h"
|
||||
#include <wolfssl/wolfcrypt/settings.h>
|
||||
#include <wolfssl/ssl.h>
|
||||
#include <wolfssl/certs_test.h>
|
||||
#include <wolfcrypt/test/test.h>
|
||||
#include <wolfcrypt/benchmark/benchmark.h>
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* Globals
|
||||
****************************************************************************/
|
||||
RTHANDLE hRootProcess;
|
||||
DWORD dwKtickInUsecs;
|
||||
INIT_STRUCT gInit;
|
||||
static int gServerExit = 0;
|
||||
static int gServerReady = 0;
|
||||
|
||||
static const char menu1[] = "\r\n"
|
||||
"\tt. WolfCrypt Test\r\n"
|
||||
"\tb. WolfCrypt Benchmark\r\n"
|
||||
"\tc. WolfSSL Client Example\r\n"
|
||||
"\ts. WolfSSL Server Example\r\n"
|
||||
"\tl. WolfSSL Localhost Client/Server Example\r\n";
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* Configuration
|
||||
****************************************************************************/
|
||||
|
||||
#define TLS_MAXDATASIZE 4096 /* maximum acceptable amount of data */
|
||||
#define TLS_PORT 11111 /* define default port number */
|
||||
#define TLS_HOST_LOCAL "127.0.0.1"
|
||||
#define TLS_HOST_REMOTE "192.168.0.112"
|
||||
#define SOCK_MAX_PENDING 5
|
||||
#define THREAD_BASE_PRIO 150
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* TLS Client
|
||||
****************************************************************************/
|
||||
int wolfExample_TLSClient(const char* ip, int port)
|
||||
{
|
||||
int ret = 0;
|
||||
WOLFSSL_CTX* ctx = NULL;
|
||||
WOLFSSL* ssl = NULL; /* create WOLFSSL object */
|
||||
int sockFd; /* socket file descriptor */
|
||||
struct sockaddr_in servAddr; /* struct for server address */
|
||||
char sendBuff[TLS_MAXDATASIZE], rcvBuff[TLS_MAXDATASIZE];
|
||||
|
||||
sockFd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (sockFd < 0) {
|
||||
printf("Failed to create socket. Error: %d\n", errno);
|
||||
return errno;
|
||||
}
|
||||
|
||||
memset(&servAddr, 0, sizeof(servAddr)); /* clears memory block for use */
|
||||
servAddr.sin_family = AF_INET; /* sets addressfamily to internet*/
|
||||
servAddr.sin_port = htons(port); /* sets port to defined port */
|
||||
|
||||
/* looks for the server at the entered address (ip in the command line) */
|
||||
if (inet_pton(AF_INET, ip, &servAddr.sin_addr) < 1) {
|
||||
/* checks validity of address */
|
||||
ret = errno;
|
||||
printf("Invalid Address. Error: %d\n", ret);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (connect(sockFd, (struct sockaddr *)&servAddr, sizeof(servAddr)) < 0) {
|
||||
/* if socket fails to connect to the server*/
|
||||
ret = errno;
|
||||
printf("Connect error. Error: %d\n", ret);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* create and initialize WOLFSSL_CTX structure */
|
||||
if ((ctx = wolfSSL_CTX_new(wolfTLSv1_2_client_method())) == NULL) {
|
||||
printf("SSL_CTX_new error.\n");
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* load CA certificates into wolfSSL_CTX. which will verify the server */
|
||||
ret = wolfSSL_CTX_load_verify_buffer(ctx, ca_cert_der_2048,
|
||||
sizeof_ca_cert_der_2048, SSL_FILETYPE_ASN1);
|
||||
if (ret != SSL_SUCCESS) {
|
||||
printf("Error %d loading CA cert\n", ret);
|
||||
goto exit;
|
||||
}
|
||||
if ((ssl = wolfSSL_new(ctx)) == NULL) {
|
||||
printf("wolfSSL_new error.\n");
|
||||
goto exit;
|
||||
}
|
||||
wolfSSL_set_fd(ssl, sockFd);
|
||||
|
||||
ret = wolfSSL_connect(ssl);
|
||||
if (ret == SSL_SUCCESS) {
|
||||
printf("Message for server:\t");
|
||||
fgets(sendBuff, TLS_MAXDATASIZE, stdin);
|
||||
|
||||
if (wolfSSL_write(ssl, sendBuff, strlen(sendBuff)) != strlen(sendBuff)) {
|
||||
/* the message is not able to send, or error trying */
|
||||
ret = wolfSSL_get_error(ssl, 0);
|
||||
printf("Write error: Error: %d\n", ret);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
memset(rcvBuff, 0, TLS_MAXDATASIZE);
|
||||
if (wolfSSL_read(ssl, rcvBuff, TLS_MAXDATASIZE) < 0) {
|
||||
/* the server failed to send data, or error trying */
|
||||
ret = wolfSSL_get_error(ssl, 0);
|
||||
printf("Read error. Error: %d\n", ret);
|
||||
goto exit;
|
||||
}
|
||||
printf("Received: \t%s\n", rcvBuff);
|
||||
}
|
||||
|
||||
exit:
|
||||
/* frees all data before client termination */
|
||||
if (sockFd != -1)
|
||||
close(sockFd);
|
||||
wolfSSL_free(ssl);
|
||||
wolfSSL_CTX_free(ctx);
|
||||
gServerExit = 1;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* TLS Server
|
||||
****************************************************************************/
|
||||
int wolfExample_TLSServer(int port)
|
||||
{
|
||||
int ret = 0;
|
||||
WOLFSSL_CTX* ctx = NULL;
|
||||
WOLFSSL* ssl = NULL;
|
||||
int sockFd, clientFd = -1;
|
||||
struct sockaddr_in serverAddr = {0}, clientAddr = {0};
|
||||
const char reply[] = "I hear ya fa shizzle!\n";
|
||||
int addrSize = sizeof(clientAddr);
|
||||
char buff[256];
|
||||
|
||||
sockFd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (sockFd < 0) {
|
||||
printf("Failed to create socket. Error: %d\n", errno);
|
||||
return errno;
|
||||
}
|
||||
|
||||
/* create and initialize WOLFSSL_CTX structure */
|
||||
if ((ctx = wolfSSL_CTX_new(wolfTLSv1_2_server_method())) == NULL) {
|
||||
fprintf(stderr, "wolfSSL_CTX_new error.\n");
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* Load server certificate into WOLFSSL_CTX */
|
||||
ret = wolfSSL_CTX_use_certificate_buffer(ctx, server_cert_der_2048,
|
||||
sizeof_server_cert_der_2048, SSL_FILETYPE_ASN1);
|
||||
if (ret != SSL_SUCCESS) {
|
||||
fprintf(stderr, "Error %d loading server-cert!\n", ret);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* Load server key into WOLFSSL_CTX */
|
||||
ret = wolfSSL_CTX_use_PrivateKey_buffer(ctx, server_key_der_2048,
|
||||
sizeof_server_key_der_2048, SSL_FILETYPE_ASN1);
|
||||
if (ret != SSL_SUCCESS) {
|
||||
fprintf(stderr, "Error %d loading server-key!\n", ret);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* Initialize the server address struct to zero */
|
||||
memset((char *)&serverAddr, 0, sizeof(serverAddr));
|
||||
|
||||
/* Fill the server's address family */
|
||||
serverAddr.sin_family = AF_INET;
|
||||
serverAddr.sin_addr.s_addr = INADDR_ANY;
|
||||
serverAddr.sin_port = htons(port);
|
||||
|
||||
/* Attach the server socket to our port */
|
||||
if (bind(sockFd, (struct sockaddr *)&serverAddr, sizeof(serverAddr)) < 0) {
|
||||
printf("ERROR: failed to bind\n");
|
||||
goto exit;
|
||||
}
|
||||
|
||||
printf("Waiting for a connection...\n");
|
||||
gServerReady = 1;
|
||||
|
||||
/* Continuously accept connects while not in an active connection */
|
||||
while (gServerExit == 0) {
|
||||
/* listen for a new connection */
|
||||
ret = listen(sockFd, SOCK_MAX_PENDING);
|
||||
if (ret == 0) {
|
||||
/* Wait until a client connects */
|
||||
clientFd = accept(sockFd, (struct sockaddr*)&clientAddr, &addrSize);
|
||||
|
||||
/* If fails to connect, loop back up and wait for a new connection */
|
||||
if (clientFd == -1) {
|
||||
printf("failed to accept the connection..\n");
|
||||
}
|
||||
/* If it connects, read in and reply to the client */
|
||||
else {
|
||||
printf("Client connected successfully\n");
|
||||
|
||||
ssl = wolfSSL_new(ctx);
|
||||
if (ssl == NULL) {
|
||||
fprintf(stderr, "wolfSSL_new error.\n");
|
||||
break;
|
||||
}
|
||||
|
||||
/* direct our ssl to our clients connection */
|
||||
wolfSSL_set_fd(ssl, clientFd);
|
||||
|
||||
printf("Using Non-Blocking I/O: %d\n",
|
||||
wolfSSL_get_using_nonblock(ssl));
|
||||
|
||||
for ( ; ; ) {
|
||||
/* Clear the buffer memory for anything possibly left over */
|
||||
memset(&buff, 0, sizeof(buff));
|
||||
|
||||
/* Read the client data into our buff array */
|
||||
ret = wolfSSL_read(ssl, buff, sizeof(buff) - 1);
|
||||
if (ret > 0) {
|
||||
/* Print any data the client sends to the console */
|
||||
printf("Client: %s\n", buff);
|
||||
|
||||
/* Reply back to the client */
|
||||
ret = wolfSSL_write(ssl, reply, sizeof(reply) - 1);
|
||||
if (ret < 0) {
|
||||
printf("wolfSSL_write error = %d\n",
|
||||
wolfSSL_get_error(ssl, ret));
|
||||
gServerExit = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* if the client disconnects break the loop */
|
||||
else {
|
||||
if (ret < 0)
|
||||
printf("wolfSSL_read error = %d\n",
|
||||
wolfSSL_get_error(ssl, ret));
|
||||
else if (ret == 0)
|
||||
printf("The client has closed the connection.\n");
|
||||
gServerExit = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
wolfSSL_free(ssl); /* Free the WOLFSSL object */
|
||||
ssl = NULL;
|
||||
}
|
||||
close(clientFd); /* close the connected socket */
|
||||
clientFd = -1;
|
||||
}
|
||||
} /* while */
|
||||
|
||||
exit:
|
||||
if (clientFd != -1)
|
||||
close(clientFd);
|
||||
if (sockFd != -1)
|
||||
close(sockFd);
|
||||
wolfSSL_free(ssl); /* Free the WOLFSSL object */
|
||||
wolfSSL_CTX_free(ctx); /* Free WOLFSSL_CTX */
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* TLS Local Test
|
||||
****************************************************************************/
|
||||
static void wolfSSLLocalServerThread(void* param)
|
||||
{
|
||||
int port = (int)((int*)param);
|
||||
wolfExample_TLSServer(port);
|
||||
}
|
||||
|
||||
int wolfExample_TLSLocal(int port)
|
||||
{
|
||||
int ret;
|
||||
RTHANDLE srvHandle;
|
||||
|
||||
/* start server thread */
|
||||
srvHandle = CreateRtThread(THREAD_BASE_PRIO + 10,
|
||||
(LPPROC)wolfSSLLocalServerThread, WOLF_EXAMPLES_STACK, (void*)port);
|
||||
if (srvHandle == BAD_RTHANDLE) {
|
||||
Fail("Cannot create server thread");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* wait for server to be ready */
|
||||
while (gServerReady != 1) {
|
||||
RtSleep(0);
|
||||
}
|
||||
|
||||
/* run client */
|
||||
ret = wolfExample_TLSClient(TLS_HOST_LOCAL, port);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* Thread
|
||||
memset(&args, 0, sizeof(args));
|
||||
****************************************************************************/
|
||||
typedef struct func_args {
|
||||
int argc;
|
||||
char** argv;
|
||||
int return_code;
|
||||
} func_args;
|
||||
|
||||
static void wolfExampleThread(void* param)
|
||||
{
|
||||
func_args args;
|
||||
|
||||
#ifdef DEBUG_WOLFSSL
|
||||
wolfSSL_Debugging_ON();
|
||||
#endif
|
||||
|
||||
/* initialize wolfSSL */
|
||||
wolfSSL_Init();
|
||||
|
||||
while (1) {
|
||||
char rc;
|
||||
|
||||
gServerExit = 0;
|
||||
gServerReady = 0;
|
||||
|
||||
printf("\r\n\t\t\t\tMENU\r\n");
|
||||
printf(menu1);
|
||||
printf("Please select one of the above options: ");
|
||||
|
||||
rc = getchar();
|
||||
switch (rc) {
|
||||
case 't':
|
||||
printf("\nCrypt Test\n");
|
||||
wolfcrypt_test(&args);
|
||||
printf("Crypt Test: Return code %d\n", args.return_code);
|
||||
break;
|
||||
|
||||
case 'b':
|
||||
printf("\nBenchmark Test\n");
|
||||
benchmark_test(&args);
|
||||
printf("Benchmark Test: Return code %d\n", args.return_code);
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
wolfExample_TLSClient(TLS_HOST_REMOTE, TLS_PORT);
|
||||
break;
|
||||
|
||||
case 's':
|
||||
wolfExample_TLSServer(TLS_PORT);
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
wolfExample_TLSLocal(TLS_PORT);
|
||||
break;
|
||||
|
||||
// All other cases go here
|
||||
default:
|
||||
if (rc != '\r' && rc != '\n')
|
||||
printf("\r\nSelection %c out of range\r\n", rc);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
wolfSSL_Cleanup();
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* FUNCTION: Catalog
|
||||
*
|
||||
* PARAMETERS: 1. handle of the process whose object directory must be used
|
||||
* 2. the object whose handle must be cataloged
|
||||
* 3. the name to be used (upto 14 characters)
|
||||
*
|
||||
* RETURNS: TRUE on success
|
||||
*
|
||||
* DESCRIPTION: If the given name already exists,
|
||||
* and the existing name refers to a non-existing object,
|
||||
* then the existing name is removed before cataloging.
|
||||
\*****************************************************************************/
|
||||
BOOLEAN Catalog(
|
||||
RTHANDLE hProcess,
|
||||
RTHANDLE hObject,
|
||||
LPSTR lpszName)
|
||||
{
|
||||
RTHANDLE hOld;
|
||||
|
||||
if (CatalogRtHandle(hProcess, hObject, lpszName))
|
||||
return TRUE;
|
||||
|
||||
// something wrong: check for the case mentioned above
|
||||
if (((hOld = LookupRtHandle(hProcess, lpszName, NO_WAIT)) != BAD_RTHANDLE) &&
|
||||
(GetRtHandleType(hOld) == INVALID_TYPE))
|
||||
{
|
||||
// this is the case mentioned above: remove the old entry and try again
|
||||
if (UncatalogRtHandle(hProcess, lpszName))
|
||||
return (CatalogRtHandle(hProcess, hObject, lpszName));
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* FUNCTION: Cleanup (local function)
|
||||
*
|
||||
* DESCRIPTION:
|
||||
* Tell threads to delete themselves and wait a while;
|
||||
* if any thread still exists, kill it.
|
||||
* Remove all other objects as far as they have been created.
|
||||
\*****************************************************************************/
|
||||
void Cleanup(void)
|
||||
{
|
||||
// indicate that we are cleaning up
|
||||
gInit.state = CLEANUP_BUSY;
|
||||
gInit.bShutdown = TRUE;
|
||||
|
||||
#ifdef _DEBUG
|
||||
fprintf(stderr, "wolfExamples started cleaning up\n");
|
||||
#endif
|
||||
|
||||
// remove our name from the root process
|
||||
if (gInit.bCataloged) {
|
||||
if (!UncatalogRtHandle(hRootProcess, "wolfExample"))
|
||||
Fail("Cannot remove my own name");
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
fprintf(stderr, "wolfExamples finished cleaning up\n");
|
||||
#endif
|
||||
|
||||
// lie down
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* FUNCTION: Fail
|
||||
*
|
||||
* PARAMETERS: same parameters as expected by printf
|
||||
*
|
||||
* DESCRIPTION:
|
||||
* If in debug mode, prints the message, appending a new line and the error number.
|
||||
* Then the current process is killed graciously:
|
||||
* If the current thread is the main thread, this is done directly.
|
||||
* if the current thread is another one, a terminate request is sent and
|
||||
* the function returns to the calling thread.
|
||||
\*****************************************************************************/
|
||||
void Fail(LPSTR lpszMessage, ...)
|
||||
{
|
||||
EXCEPTION eh;
|
||||
RTHANDLE hDelMbx;
|
||||
DWORD dwTerminate;
|
||||
|
||||
#ifdef _DEBUG
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, lpszMessage);
|
||||
vfprintf(stderr, lpszMessage, ap);
|
||||
va_end(ap);
|
||||
fprintf(stderr, "\nError nr=%x %s\n", GetLastRtError(), GetRtErrorText(GetLastRtError()));
|
||||
#endif
|
||||
|
||||
// make sure that exceptions are returned for inline handling
|
||||
GetRtExceptionHandlerInfo(THREAD_HANDLER, &eh);
|
||||
eh.ExceptionMode = 0;
|
||||
SetRtExceptionHandler(&eh);
|
||||
|
||||
// if we had not started initializing yet, just get out
|
||||
if (BEFORE_INIT == gInit.state)
|
||||
exit(0);
|
||||
|
||||
if (gInit.hMain == GetRtThreadHandles(THIS_THREAD))
|
||||
{
|
||||
// this is the main thread:
|
||||
// if we are busy initializing, then do Cleanup
|
||||
if (INIT_BUSY == gInit.state)
|
||||
Cleanup(); // does not return
|
||||
|
||||
// this is the main thread, but we are not initializing: just return
|
||||
return;
|
||||
}
|
||||
|
||||
// this is not the main thread:
|
||||
// ask main thread to do cleanup
|
||||
// (allow some time to setup the deletion mailbox, ignore errors)
|
||||
hDelMbx = LookupRtHandle(NULL_RTHANDLE, "R?EXIT_MBOX", 5000);
|
||||
dwTerminate = TERMINATE;
|
||||
SendRtData(hDelMbx, &dwTerminate, 4);
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* FUNCTION: UsecsToKticks
|
||||
*
|
||||
* PARAMETERS: 1. number of usecs
|
||||
*
|
||||
* RETURNS: number of low level ticks
|
||||
*
|
||||
* DESCRIPTION: returns the parameter if it is WAIT_FOREVER
|
||||
* otherwise rounds up to number of low level ticks
|
||||
\*****************************************************************************/
|
||||
DWORD UsecsToKticks(DWORD dwUsecs)
|
||||
{
|
||||
if (dwUsecs == WAIT_FOREVER)
|
||||
return WAIT_FOREVER;
|
||||
|
||||
return (dwUsecs + dwKtickInUsecs - 1) / dwKtickInUsecs;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* FUNCTION: main
|
||||
*
|
||||
* DESCRIPTION:
|
||||
* This is the main program module.
|
||||
* It creates global objects and all threads.
|
||||
* The main thread then waits for notifications and acts accordingly
|
||||
\*****************************************************************************/
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
SYSINFO sysinfo;
|
||||
EVENTINFO eiEventInfo;
|
||||
RTHANDLE taskHandle;
|
||||
|
||||
#ifdef _DEBUG
|
||||
fprintf(stderr, "wolfExamples started\n");
|
||||
#endif
|
||||
|
||||
// obtain handle of root process (cannot fail)
|
||||
hRootProcess = GetRtThreadHandles(ROOT_PROCESS);
|
||||
|
||||
// initialize the structure for cleaning up
|
||||
memset(&gInit, 0, sizeof(gInit));
|
||||
gInit.state = BEFORE_INIT;
|
||||
|
||||
// get low level tick length in usecs
|
||||
if (!CopyRtSystemInfo(&sysinfo))
|
||||
Fail("Cannot copy system info");
|
||||
dwKtickInUsecs = 10000 / sysinfo.KernelTickRatio;
|
||||
if (dwKtickInUsecs == 0)
|
||||
Fail("Invalid low level tick length");
|
||||
|
||||
// adjust process max priority (ignore error)
|
||||
// TODO adjust the 2nd parameter to a value closer to zero if you want to allow more priorities
|
||||
SetRtProcessMaxPriority(NULL_RTHANDLE, THREAD_BASE_PRIO);
|
||||
|
||||
// obtain main thread's handle
|
||||
gInit.hMain = GetRtThreadHandles(THIS_THREAD);
|
||||
gInit.state = INIT_BUSY;
|
||||
|
||||
// attempt to catalog the thread but ignore error
|
||||
Catalog(NULL_RTHANDLE, gInit.hMain, "TMain");
|
||||
|
||||
// catalog the handle of this process in the root process
|
||||
if (!Catalog(hRootProcess, GetRtThreadHandles(THIS_PROCESS), "wolfExample")) {
|
||||
Fail("Cannot catalog process name");
|
||||
}
|
||||
gInit.bCataloged = TRUE;
|
||||
|
||||
// create thread
|
||||
taskHandle = CreateRtThread(THREAD_BASE_PRIO + 20,
|
||||
(LPPROC)wolfExampleThread, WOLF_EXAMPLES_STACK, 0);
|
||||
if (taskHandle == BAD_RTHANDLE) {
|
||||
Fail("Cannot create thread");
|
||||
}
|
||||
|
||||
// indicate that initialization has finished
|
||||
gInit.state = INIT_DONE;
|
||||
#ifdef _DEBUG
|
||||
fprintf(stderr, "wolfExamples finished initialization\n");
|
||||
#endif
|
||||
|
||||
// wait for notifications
|
||||
while (RtNotifyEvent(RT_SYSTEM_NOTIFICATIONS | RT_EXIT_NOTIFICATIONS,
|
||||
WAIT_FOREVER, &eiEventInfo))
|
||||
{
|
||||
switch(eiEventInfo.dwNotifyType)
|
||||
{
|
||||
case TERMINATE:
|
||||
// TODO: this process should terminate
|
||||
// cleanup the environment
|
||||
Cleanup(); // does not return
|
||||
|
||||
case NT_HOST_UP:
|
||||
// TODO: react to a Windows host that has come back
|
||||
break;
|
||||
|
||||
case NT_BLUESCREEN:
|
||||
// TODO: react to a Windows blue screen
|
||||
break;
|
||||
|
||||
case KERNEL_STOPPING:
|
||||
// TODO: react to the INtime kernel stopping
|
||||
break;
|
||||
|
||||
case NT_HOST_HIBERNATE:
|
||||
// TODO: react to the Windows host going in hibernation
|
||||
break;
|
||||
|
||||
case NT_HOST_STANDBY:
|
||||
// TODO: react to the Windows host going in standby mode
|
||||
break;
|
||||
|
||||
case NT_HOST_SHUTDOWN_PENDING:
|
||||
// TODO: react to a Windows host that is about to shutdown
|
||||
break;
|
||||
}
|
||||
}
|
||||
Fail("Notify failed");
|
||||
return 0;
|
||||
}
|
||||
47
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/wolfExamples.h
vendored
Normal file
47
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/wolfExamples.h
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
#ifndef _WOLFEXAMPLES_H_
|
||||
#define _WOLFEXAMPLES_H_
|
||||
|
||||
#include <rt.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// support functions for all threads
|
||||
BOOLEAN Catalog(RTHANDLE hProcess, RTHANDLE hObject, LPSTR lpszName);
|
||||
void Cleanup(void);
|
||||
void Fail(LPSTR lpszMessage, ...);
|
||||
DWORD UsecsToKticks(DWORD dwUsecs);
|
||||
|
||||
|
||||
/* Example API's */
|
||||
int wolfExample_TLSServer(int port);
|
||||
int wolfExample_TLSClient(const char* ip, int port);
|
||||
int wolfExample_TLSLocal(int port);
|
||||
|
||||
|
||||
// global type definitions
|
||||
typedef enum {
|
||||
BEFORE_INIT,
|
||||
INIT_BUSY,
|
||||
INIT_DONE,
|
||||
CLEANUP_BUSY
|
||||
} INIT_STATE;
|
||||
|
||||
typedef struct {
|
||||
RTHANDLE hMain; // RTHANDLE of main thread
|
||||
INIT_STATE state; // main thread state
|
||||
BOOLEAN bCataloged; // TRUE if we cataloged process name in root
|
||||
BOOLEAN bShutdown; // TRUE if all threads have to terminate
|
||||
} INIT_STRUCT;
|
||||
|
||||
// global variables
|
||||
extern RTHANDLE hRootProcess; // RTHANDLE of root process
|
||||
extern DWORD dwKtickInUsecs; // length of one low level tick in usecs
|
||||
extern INIT_STRUCT gInit; // structure describing all global objects
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /* _WOLFEXAMPLES_H_ */
|
||||
31
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/wolfExamples.sln
vendored
Executable file
31
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/wolfExamples.sln
vendored
Executable file
@ -0,0 +1,31 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.23107.0
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wolfExamples", "wolfExamples.vcxproj", "{557A7EFD-2627-478A-A855-50F518DD13EE}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{1731767D-573F-45C9-A466-191DA0D180CF} = {1731767D-573F-45C9-A466-191DA0D180CF}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libwolfssl", "libwolfssl.vcxproj", "{1731767D-573F-45C9-A466-191DA0D180CF}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|INtime = Debug|INtime
|
||||
Release|INtime = Release|INtime
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{557A7EFD-2627-478A-A855-50F518DD13EE}.Debug|INtime.ActiveCfg = Debug|INtime
|
||||
{557A7EFD-2627-478A-A855-50F518DD13EE}.Debug|INtime.Build.0 = Debug|INtime
|
||||
{557A7EFD-2627-478A-A855-50F518DD13EE}.Release|INtime.ActiveCfg = Release|INtime
|
||||
{557A7EFD-2627-478A-A855-50F518DD13EE}.Release|INtime.Build.0 = Release|INtime
|
||||
{1731767D-573F-45C9-A466-191DA0D180CF}.Debug|INtime.ActiveCfg = Debug|INtime
|
||||
{1731767D-573F-45C9-A466-191DA0D180CF}.Debug|INtime.Build.0 = Debug|INtime
|
||||
{1731767D-573F-45C9-A466-191DA0D180CF}.Release|INtime.ActiveCfg = Release|INtime
|
||||
{1731767D-573F-45C9-A466-191DA0D180CF}.Release|INtime.Build.0 = Release|INtime
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
93
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/wolfExamples.vcxproj
vendored
Executable file
93
kernel/FreeRTOS-Plus/ThirdParty/wolfSSL/IDE/INTIME-RTOS/wolfExamples.vcxproj
vendored
Executable file
@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|INtime">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>INtime</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|INtime">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>INtime</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="README.md" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="wolfExamples.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\test\test.c" />
|
||||
<ClCompile Include="..\..\wolfcrypt\benchmark\benchmark.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="user_settings.h" />
|
||||
<ClInclude Include="wolfExamples.h" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{557A7EFD-2627-478A-A855-50F518DD13EE}</ProjectGuid>
|
||||
<ProjectName>wolfExamples</ProjectName>
|
||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|INtime'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|INtime'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|INtime'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|INtime'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|INtime'">
|
||||
<IntDir>$(Configuration)_$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|INtime'">
|
||||
<IntDir>$(Configuration)_$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|INtime'">
|
||||
<ClCompile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<Version>21076.20053</Version>
|
||||
<AdditionalOptions>/SAFESEH:NO %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalDependencies>rt.lib;pcibus.lib;netlib.lib;clib.lib;vshelper.lib;libwolfssl.lib</AdditionalDependencies>
|
||||
<OutputFile>$(SolutionDir)$(Configuration)\\wolfExamples.rta</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<PreprocessorDefinitions>WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|INtime'">
|
||||
<ClCompile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<Version>21076.20053</Version>
|
||||
<AdditionalOptions>/SAFESEH:NO %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalDependencies>rt.lib;pcibus.lib;netlib.lib;clib.lib;vshelper.lib;libwolfssl.lib</AdditionalDependencies>
|
||||
<OutputFile>$(SolutionDir)$(Configuration)\\wolfExamples.rta</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<PreprocessorDefinitions>WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user