diff --git a/mysql-5.6.23-wolfssl.patch b/mysql-5.6.23-wolfssl.patch new file mode 100644 index 0000000..36eb460 --- /dev/null +++ b/mysql-5.6.23-wolfssl.patch @@ -0,0 +1,376211 @@ +diff -ruNp mysql-5.6.23/CTestTestfile.cmake mysql-5.6.23-wolfssl/CTestTestfile.cmake +--- mysql-5.6.23/CTestTestfile.cmake 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/CTestTestfile.cmake 2015-02-23 16:49:25.000000000 -0700 +@@ -0,0 +1,61 @@ ++# CMake generated Testfile for ++# Source directory: /usr/local/src/mysql-5.6.23-wolfssl ++# Build directory: /usr/local/src/mysql-5.6.23-wolfssl ++# ++# This file includes the relevant testing commands required for ++# testing this directory and lists subdirectories to be tested as well. ++subdirs(zlib) ++subdirs(extra/wolfssl) ++subdirs(extra/wolfssl/wolfcrypt) ++subdirs(cmd-line-utils/libedit) ++subdirs(libevent) ++subdirs(storage/archive) ++subdirs(storage/blackhole) ++subdirs(storage/csv) ++subdirs(storage/example) ++subdirs(storage/federated) ++subdirs(storage/heap) ++subdirs(storage/innobase) ++subdirs(storage/myisam) ++subdirs(storage/myisammrg) ++subdirs(storage/ndb) ++subdirs(storage/perfschema) ++subdirs(plugin/audit_null) ++subdirs(plugin/auth) ++subdirs(plugin/daemon_example) ++subdirs(plugin/fulltext) ++subdirs(plugin/innodb_memcached) ++subdirs(plugin/password_validation) ++subdirs(plugin/semisync) ++subdirs(include) ++subdirs(dbug) ++subdirs(strings) ++subdirs(vio) ++subdirs(regex) ++subdirs(mysys) ++subdirs(mysys_ssl) ++subdirs(libmysql) ++subdirs(unittest) ++subdirs(unittest/examples) ++subdirs(unittest/mytap) ++subdirs(unittest/mytap/t) ++subdirs(unittest/gunit) ++subdirs(extra) ++subdirs(client) ++subdirs(sql/share) ++subdirs(libservices) ++subdirs(man) ++subdirs(tests) ++subdirs(sql) ++subdirs(libmysqld) ++subdirs(libmysqld/examples) ++subdirs(scripts) ++subdirs(mysql-test) ++subdirs(mysql-test/lib/My/SafeProcess) ++subdirs(support-files) ++subdirs(sql-bench) ++subdirs(packaging/rpm-oel) ++subdirs(packaging/rpm-fedora) ++subdirs(packaging/rpm-sles) ++subdirs(packaging/WiX) ++subdirs(packaging/solaris) +diff -ruNp mysql-5.6.23/Docs/INFO_BIN mysql-5.6.23-wolfssl/Docs/INFO_BIN +--- mysql-5.6.23/Docs/INFO_BIN 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/Docs/INFO_BIN 2015-02-23 17:47:13.000000000 -0700 +@@ -0,0 +1,63 @@ ++===== Information about the build process: ===== ++Build was run at 2015-02-23 17:47:13 on host 'jaks-mbp' ++ ++Build was done on Darwin-13.4.0 using x86_64 ++Build was done using cmake 3.0.2 ++ ++===== Compiler flags used (from the 'sql/' subdirectory): ===== ++# compile C with /usr/bin/cc ++# compile CXX with /usr/bin/c++ ++C_FLAGS = -Wall -Wextra -Wformat-security -Wvla -Wwrite-strings -Wdeclaration-after-statement -O3 -g -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF -I/usr/local/src/mysql-5.6.23-wolfssl/include -I/usr/local/src/mysql-5.6.23-wolfssl/sql -I/usr/local/src/mysql-5.6.23-wolfssl/regex -I/usr/local/src/mysql-5.6.23-wolfssl/zlib -I/usr/local/src/mysql-5.6.23-wolfssl/extra/wolfssl -I/usr/local/src/mysql-5.6.23-wolfssl/extra/wolfssl/wolfssl -I/usr/local/src/mysql-5.6.23-wolfssl/extra/wolfssl/wolfssl/wolfcrypt -DHAVE_ONE_TIME_AUTH -DHAVE_CHACHA -DHAVE_POLY1305 -DHAVE_ECC -DBUILDING_WOLFSSL -DHAVE_WOLFSSL -DWOLFSSL_PREFIX -DHAVE_OPENSSL -DOPENSSL_EXTRA -DMULTI_THREADED -DHAVE_HASHDRBG -DUSE_FAST_MATH -DWOLFSSL_AES_DIRECT -DWOLFSSL_SHA384 -DWOLFSSL_SHA512 ++C_DEFINES = -DGTEST_USE_OWN_TR1_TUPLE=1 -DHAVE_CONFIG_H -DHAVE_EVENT_SCHEDULER -DMYSQL_SERVER ++CXX_FLAGS = -Wall -Wextra -Wformat-security -Wvla -Woverloaded-virtual -Wno-unused-parameter -Wno-null-conversion -Wno-unused-private-field -O3 -g -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF -I/usr/local/src/mysql-5.6.23-wolfssl/include -I/usr/local/src/mysql-5.6.23-wolfssl/sql -I/usr/local/src/mysql-5.6.23-wolfssl/regex -I/usr/local/src/mysql-5.6.23-wolfssl/zlib -I/usr/local/src/mysql-5.6.23-wolfssl/extra/wolfssl -I/usr/local/src/mysql-5.6.23-wolfssl/extra/wolfssl/wolfssl -I/usr/local/src/mysql-5.6.23-wolfssl/extra/wolfssl/wolfssl/wolfcrypt -DHAVE_ONE_TIME_AUTH -DHAVE_CHACHA -DHAVE_POLY1305 -DHAVE_ECC -DBUILDING_WOLFSSL -DHAVE_WOLFSSL -DWOLFSSL_PREFIX -DHAVE_OPENSSL -DOPENSSL_EXTRA -DMULTI_THREADED -DHAVE_HASHDRBG -DUSE_FAST_MATH -DWOLFSSL_AES_DIRECT -DWOLFSSL_SHA384 -DWOLFSSL_SHA512 ++CXX_DEFINES = -DGTEST_USE_OWN_TR1_TUPLE=1 -DHAVE_CONFIG_H -DHAVE_EVENT_SCHEDULER -DMYSQL_SERVER ++ ++Pointer size: 8 ++ ++===== Feature flags used: ===== ++-- Cache values ++CMAKE_BUILD_TYPE:STRING=RelWithDebInfo ++CMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql ++CMAKE_OSX_ARCHITECTURES:STRING= ++CMAKE_OSX_DEPLOYMENT_TARGET:STRING= ++CMAKE_OSX_SYSROOT:STRING= ++COMMUNITY_BUILD:BOOL=ON ++CORESERVICES:FILEPATH=/System/Library/Frameworks/CoreServices.framework ++ENABLED_PROFILING:BOOL=ON ++ENABLE_DEBUG_SYNC:BOOL=ON ++ENABLE_DOWNLOADS:BOOL=OFF ++ENABLE_DTRACE:BOOL=ON ++ENABLE_GCOV:BOOL=OFF ++ENABLE_GPROF:BOOL=OFF ++ENABLE_MEMCACHED_SASL:BOOL=OFF ++ENABLE_MEMCACHED_SASL_PWDB:BOOL=OFF ++FEATURE_SET:STRING=community ++INSTALL_LAYOUT:STRING=STANDALONE ++MYSQL_DATADIR:PATH=/usr/local/mysql/data ++MYSQL_MAINTAINER_MODE:BOOL=OFF ++OPTIMIZER_TRACE:BOOL=ON ++TMPDIR:PATH=P_tmpdir ++WITH_ARCHIVE_STORAGE_ENGINE:BOOL=ON ++WITH_ASAN:BOOL=OFF ++WITH_BLACKHOLE_STORAGE_ENGINE:BOOL=ON ++WITH_DEBUG:BOOL=OFF ++WITH_DEFAULT_COMPILER_OPTIONS:BOOL=ON ++WITH_DEFAULT_FEATURE_SET:BOOL=ON ++WITH_EDITLINE:STRING=bundled ++WITH_EMBEDDED_SERVER:BOOL=ON ++WITH_EMBEDDED_SHARED_LIBRARY:BOOL=OFF ++WITH_EXAMPLE_STORAGE_ENGINE:BOOL=OFF ++WITH_EXTRA_CHARSETS:STRING=all ++WITH_FEDERATED_STORAGE_ENGINE:BOOL=ON ++WITH_INNOBASE_STORAGE_ENGINE:BOOL=ON ++WITH_INNODB_MEMCACHED:BOOL=OFF ++WITH_LIBEVENT:STRING=bundled ++WITH_LIBWRAP:BOOL=OFF ++WITH_PARTITION_STORAGE_ENGINE:BOOL=ON ++WITH_PERFSCHEMA_STORAGE_ENGINE:BOOL=ON ++WITH_SSL:STRING=bundled ++WITH_UNIT_TESTS:BOOL=ON ++WITH_VALGRIND:BOOL=OFF ++WITH_ZLIB:STRING=bundled ++ ++===== EOF ===== +diff -ruNp mysql-5.6.23/VERSION.dep mysql-5.6.23-wolfssl/VERSION.dep +--- mysql-5.6.23/VERSION.dep 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/VERSION.dep 2015-02-23 16:48:37.000000000 -0700 +@@ -0,0 +1,4 @@ ++MYSQL_VERSION_MAJOR=5 ++MYSQL_VERSION_MINOR=6 ++MYSQL_VERSION_PATCH=23 ++MYSQL_VERSION_EXTRA= +diff -ruNp mysql-5.6.23/client/CTestTestfile.cmake mysql-5.6.23-wolfssl/client/CTestTestfile.cmake +--- mysql-5.6.23/client/CTestTestfile.cmake 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/client/CTestTestfile.cmake 2015-02-23 16:49:27.000000000 -0700 +@@ -0,0 +1,6 @@ ++# CMake generated Testfile for ++# Source directory: /usr/local/src/mysql-5.6.23-wolfssl/client ++# Build directory: /usr/local/src/mysql-5.6.23-wolfssl/client ++# ++# This file includes the relevant testing commands required for ++# testing this directory and lists subdirectories to be tested as well. +diff -ruNp mysql-5.6.23/cmake/ssl.cmake mysql-5.6.23-wolfssl/cmake/ssl.cmake +--- mysql-5.6.23/cmake/ssl.cmake 2015-01-19 06:48:32.000000000 -0700 ++++ mysql-5.6.23-wolfssl/cmake/ssl.cmake 2015-02-23 16:35:20.000000000 -0700 +@@ -14,7 +14,7 @@ + # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + # We support different versions of SSL: +-# - "bundled" uses source code in /extra/yassl ++# - "bundled" uses source code in /extra/wolfssl + # - "system" (typically) uses headers/libraries in /usr/lib and /usr/lib64 + # - a custom installation of openssl can be used like this + # - cmake -DCMAKE_PREFIX_PATH= -DWITH_SSL="system" +@@ -34,7 +34,7 @@ + # 'set path=\bin;%PATH% + # in order to find the .dll files at runtime. + +-SET(WITH_SSL_DOC "bundled (use yassl)") ++SET(WITH_SSL_DOC "bundled (use wolfssl)") + SET(WITH_SSL_DOC + "${WITH_SSL_DOC}, yes (prefer os library if present, otherwise use bundled)") + SET(WITH_SSL_DOC +@@ -48,27 +48,28 @@ ENDMACRO() + + MACRO (MYSQL_USE_BUNDLED_SSL) + SET(INC_DIRS +- ${CMAKE_SOURCE_DIR}/extra/yassl/include +- ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include ++ ${CMAKE_SOURCE_DIR}/extra/wolfssl ++ ${CMAKE_SOURCE_DIR}/extra/wolfssl/wolfssl ++ ${CMAKE_SOURCE_DIR}/extra/wolfssl/wolfssl/wolfcrypt + ) +- SET(SSL_LIBRARIES yassl taocrypt) ++ SET(SSL_LIBRARIES wolfssl wolfcrypt) + IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") + SET(SSL_LIBRARIES ${SSL_LIBRARIES} ${LIBSOCKET}) + ENDIF() + SET(SSL_INCLUDE_DIRS ${INC_DIRS}) +- SET(SSL_INTERNAL_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL) +- SET(SSL_DEFINES "-DHAVE_YASSL -DYASSL_PREFIX -DHAVE_OPENSSL -DMULTI_THREADED") ++ SET(SSL_INTERNAL_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extra/wolfssl) ++ SET(SSL_DEFINES "-DHAVE_ONE_TIME_AUTH -DHAVE_CHACHA -DHAVE_POLY1305 -DHAVE_ECC -DBUILDING_WOLFSSL -DHAVE_WOLFSSL -DWOLFSSL_PREFIX -DHAVE_OPENSSL -DOPENSSL_EXTRA -DMULTI_THREADED -DHAVE_HASHDRBG -DUSE_FAST_MATH -DWOLFSSL_AES_DIRECT -DWOLFSSL_SHA384 -DWOLFSSL_SHA512") + CHANGE_SSL_SETTINGS("bundled") +- ADD_SUBDIRECTORY(extra/yassl) +- ADD_SUBDIRECTORY(extra/yassl/taocrypt) +- GET_TARGET_PROPERTY(src yassl SOURCES) ++ ADD_SUBDIRECTORY(extra/wolfssl) ++ ADD_SUBDIRECTORY(extra/wolfssl/wolfcrypt) ++ GET_TARGET_PROPERTY(src wolfssl SOURCES) + FOREACH(file ${src}) +- SET(SSL_SOURCES ${SSL_SOURCES} ${CMAKE_SOURCE_DIR}/extra/yassl/${file}) ++ SET(SSL_SOURCES ${SSL_SOURCES} ${CMAKE_SOURCE_DIR}/extra/wolfssl/${file}) + ENDFOREACH() +- GET_TARGET_PROPERTY(src taocrypt SOURCES) ++ GET_TARGET_PROPERTY(src wolfcrypt SOURCES) + FOREACH(file ${src}) + SET(SSL_SOURCES ${SSL_SOURCES} +- ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/${file}) ++ ${CMAKE_SOURCE_DIR}/extra/wolfssl/wolfcrypt/${file}) + ENDFOREACH() + ENDMACRO() + +diff -ruNp mysql-5.6.23/cmd-line-utils/libedit/makelist mysql-5.6.23-wolfssl/cmd-line-utils/libedit/makelist +--- mysql-5.6.23/cmd-line-utils/libedit/makelist 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/cmd-line-utils/libedit/makelist 2015-02-23 16:49:21.000000000 -0700 +@@ -0,0 +1,264 @@ ++#!/bin/sh - ++# $NetBSD: makelist,v 1.16 2010/04/18 21:17:05 christos Exp $ ++# ++# Copyright (c) 1992, 1993 ++# The Regents of the University of California. All rights reserved. ++# ++# This code is derived from software contributed to Berkeley by ++# Christos Zoulas of Cornell University. ++# ++# Redistribution and use in source and binary forms, with or without ++# modification, are permitted provided that the following conditions ++# are met: ++# 1. Redistributions of source code must retain the above copyright ++# notice, this list of conditions and the following disclaimer. ++# 2. Redistributions in binary form must reproduce the above copyright ++# notice, this list of conditions and the following disclaimer in the ++# documentation and/or other materials provided with the distribution. ++# 3. Neither the name of the University nor the names of its contributors ++# may be used to endorse or promote products derived from this software ++# without specific prior written permission. ++# ++# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++# SUCH DAMAGE. ++# ++# @(#)makelist 5.3 (Berkeley) 6/4/93 ++ ++# makelist.sh: Automatically generate header files... ++ ++AWK=/usr/bin/awk ++USAGE="Usage: $0 -n|-h|-e|-fc|-fh|-bc|-bh|-m " ++ ++if [ "x$1" = "x" ] ++then ++ echo $USAGE 1>&2 ++ exit 1 ++fi ++ ++FLAG="$1" ++shift ++ ++FILES="$@" ++ ++case $FLAG in ++ ++# generate foo.h file from foo.c ++# ++-n) ++ cat << _EOF ++#undef WIDECHAR ++#define NARROWCHAR ++#include "${FILES}" ++_EOF ++ ;; ++ ++-h) ++ set - `echo $FILES | sed -e 's/\\./_/g'` ++ hdr="_h_`basename $1`" ++ cat $FILES | $AWK ' ++ BEGIN { ++ printf("/* Automatically generated file, do not edit */\n"); ++ printf("#ifndef %s\n#define %s\n", "'$hdr'", "'$hdr'"); ++ } ++ /\(\):/ { ++ pr = substr($2, 1, 2); ++ if (pr == "vi" || pr == "em" || pr == "ed") { ++ # XXXMYSQL: support CRLF ++ name = substr($2, 1, index($2,"(") - 1); ++# ++# XXX: need a space between name and prototype so that -fc and -fh ++# parsing is much easier ++# ++ printf("protected el_action_t\t%s (EditLine *, Int);\n", name); ++ } ++ } ++ END { ++ printf("#endif /* %s */\n", "'$hdr'"); ++ }' ++ ;; ++ ++# generate help.c from various .c files ++# ++-bc) ++ cat $FILES | $AWK ' ++ BEGIN { ++ printf("/* Automatically generated file, do not edit */\n"); ++ printf("#include \"config.h\"\n#include \"el.h\"\n"); ++ printf("#include \"chartype.h\"\n"); ++ printf("private const struct el_bindings_t el_func_help[] = {\n"); ++ low = "abcdefghijklmnopqrstuvwxyz_"; ++ high = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_"; ++ for (i = 1; i <= length(low); i++) ++ tr[substr(low, i, 1)] = substr(high, i, 1); ++ } ++ /\(\):/ { ++ pr = substr($2, 1, 2); ++ if (pr == "vi" || pr == "em" || pr == "ed") { ++ # XXXMYSQL: support CRLF ++ name = substr($2, 1, index($2,"(") - 1); ++ uname = ""; ++ fname = ""; ++ for (i = 1; i <= length(name); i++) { ++ s = substr(name, i, 1); ++ uname = uname tr[s]; ++ if (s == "_") ++ s = "-"; ++ fname = fname s; ++ } ++ ++ printf(" { %-30.30s %-30.30s\n","STR(\"" fname "\"),", uname ","); ++ ok = 1; ++ } ++ } ++ /^ \*/ { ++ if (ok) { ++ printf(" STR(\""); ++ for (i = 2; i < NF; i++) ++ printf("%s ", $i); ++ # XXXMYSQL: support CRLF ++ sub("\r", "", $i); ++ printf("%s\") },\n", $i); ++ ok = 0; ++ } ++ } ++ END { ++ printf("};\n"); ++ printf("\nprotected const el_bindings_t* help__get()"); ++ printf("{ return el_func_help; }\n"); ++ }' ++ ;; ++ ++# generate help.h from various .c files ++# ++-bh) ++ $AWK ' ++ BEGIN { ++ printf("/* Automatically generated file, do not edit */\n"); ++ printf("#ifndef _h_help_c\n#define _h_help_c\n"); ++ printf("protected const el_bindings_t *help__get(void);\n"); ++ printf("#endif /* _h_help_c */\n"); ++ }' /dev/null ++ ;; ++ ++# generate fcns.h from various .h files ++# ++# XXXMYSQL: use portable tr syntax ++-fh) ++ cat $FILES | $AWK '/el_action_t/ { print $3 }' | \ ++ sort | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | $AWK ' ++ BEGIN { ++ printf("/* Automatically generated file, do not edit */\n"); ++ printf("#ifndef _h_fcns_c\n#define _h_fcns_c\n"); ++ count = 0; ++ } ++ { ++ printf("#define\t%-30.30s\t%3d\n", $1, count++); ++ } ++ END { ++ printf("#define\t%-30.30s\t%3d\n", "EL_NUM_FCNS", count); ++ ++ printf("typedef el_action_t (*el_func_t)(EditLine *, Int);"); ++ printf("\nprotected const el_func_t* func__get(void);\n"); ++ printf("#endif /* _h_fcns_c */\n"); ++ }' ++ ;; ++ ++# generate fcns.c from various .h files ++# ++-fc) ++ cat $FILES | $AWK '/el_action_t/ { print $3 }' | sort | $AWK ' ++ BEGIN { ++ printf("/* Automatically generated file, do not edit */\n"); ++ printf("#include \"config.h\"\n#include \"el.h\"\n"); ++ printf("private const el_func_t el_func[] = {"); ++ maxlen = 80; ++ needn = 1; ++ len = 0; ++ } ++ { ++ clen = 25 + 2; ++ len += clen; ++ if (len >= maxlen) ++ needn = 1; ++ if (needn) { ++ printf("\n "); ++ needn = 0; ++ len = 4 + clen; ++ } ++ s = $1 ","; ++ printf("%-26.26s ", s); ++ } ++ END { ++ printf("\n};\n"); ++ printf("\nprotected const el_func_t* func__get() { return el_func; }\n"); ++ }' ++ ;; ++ ++# generate editline.c from various .c files ++# ++-e) ++ echo "$FILES" | tr ' ' '\012' | $AWK ' ++ BEGIN { ++ printf("/* Automatically generated file, do not edit */\n"); ++ printf("#define protected static\n"); ++ printf("#define SCCSID\n"); ++ } ++ { ++ printf("#include \"%s\"\n", $1); ++ }' ++ ;; ++ ++# generate man page fragment from various .c files ++# ++-m) ++ cat $FILES | $AWK ' ++ BEGIN { ++ printf(".\\\" Section automatically generated with makelist\n"); ++ printf(".Bl -tag -width 4n\n"); ++ } ++ /\(\):/ { ++ pr = substr($2, 1, 2); ++ if (pr == "vi" || pr == "em" || pr == "ed") { ++ # XXXMYSQL: support CRLF ++ name = substr($2, 1, index($2, "(") - 1); ++ fname = ""; ++ for (i = 1; i <= length(name); i++) { ++ s = substr(name, i, 1); ++ if (s == "_") ++ s = "-"; ++ fname = fname s; ++ } ++ ++ printf(".It Ic %s\n", fname); ++ ok = 1; ++ } ++ } ++ /^ \*/ { ++ if (ok) { ++ for (i = 2; i < NF; i++) ++ printf("%s ", $i); ++ printf("%s.\n", $i); ++ ok = 0; ++ } ++ } ++ END { ++ printf(".El\n"); ++ printf(".\\\" End of section automatically generated with makelist\n"); ++ }' ++ ;; ++ ++*) ++ echo $USAGE 1>&2 ++ exit 1 ++ ;; ++ ++esac +diff -ruNp mysql-5.6.23/dbug/CTestTestfile.cmake mysql-5.6.23-wolfssl/dbug/CTestTestfile.cmake +--- mysql-5.6.23/dbug/CTestTestfile.cmake 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/dbug/CTestTestfile.cmake 2015-02-23 16:49:26.000000000 -0700 +@@ -0,0 +1,6 @@ ++# CMake generated Testfile for ++# Source directory: /usr/local/src/mysql-5.6.23-wolfssl/dbug ++# Build directory: /usr/local/src/mysql-5.6.23-wolfssl/dbug ++# ++# This file includes the relevant testing commands required for ++# testing this directory and lists subdirectories to be tested as well. +diff -ruNp mysql-5.6.23/extra/CTestTestfile.cmake mysql-5.6.23-wolfssl/extra/CTestTestfile.cmake +--- mysql-5.6.23/extra/CTestTestfile.cmake 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/CTestTestfile.cmake 2015-02-23 16:49:27.000000000 -0700 +@@ -0,0 +1,6 @@ ++# CMake generated Testfile for ++# Source directory: /usr/local/src/mysql-5.6.23-wolfssl/extra ++# Build directory: /usr/local/src/mysql-5.6.23-wolfssl/extra ++# ++# This file includes the relevant testing commands required for ++# testing this directory and lists subdirectories to be tested as well. +diff -ruNp mysql-5.6.23/extra/wolfssl/CMakeLists.txt mysql-5.6.23-wolfssl/extra/wolfssl/CMakeLists.txt +--- mysql-5.6.23/extra/wolfssl/CMakeLists.txt 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/CMakeLists.txt 2015-02-15 14:28:51.000000000 -0700 +@@ -0,0 +1,37 @@ ++# Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved. ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; version 2 of the License. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++INCLUDE_DIRECTORIES( ++ ${CMAKE_SOURCE_DIR}/include ++ ${CMAKE_SOURCE_DIR}/extra/wolfssl ++ ${CMAKE_SOURCE_DIR}/extra/wolfssl/wolfssl ++ ${CMAKE_SOURCE_DIR}/extra/wolfssl/wolfssl/wolfcrypt) ++ ++ADD_DEFINITIONS(${SSL_DEFINES}) ++ ++# rename get_tty_password to avoid collisions with the main binary ++ADD_DEFINITIONS(-Dget_tty_password_ext=wolfssl_mysql_get_tty_password_ext) ++ADD_DEFINITIONS(-Dget_tty_password=wolfssl_mysql_get_tty_password) ++ ++SET(WOLFSSL_SOURCES src/crl.c src/internal.c src/keys.c src/sniffer.c ++ src/tls.c src/io.c src/ocsp.c src/ssl.c ++ ../../client/get_password.c ) ++ ++ADD_CONVENIENCE_LIBRARY(wolfssl ${WOLFSSL_SOURCES}) ++RESTRICT_SYMBOL_EXPORTS(wolfssl) ++ ++IF(MSVC) ++ INSTALL_DEBUG_TARGET(wolfssl DESTINATION ${INSTALL_LIBDIR}/debug) ++ENDIF() +diff -ruNp mysql-5.6.23/extra/wolfssl/COPYING mysql-5.6.23-wolfssl/extra/wolfssl/COPYING +--- mysql-5.6.23/extra/wolfssl/COPYING 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/COPYING 2015-02-15 14:28:51.000000000 -0700 +@@ -0,0 +1,339 @@ ++ GNU GENERAL PUBLIC LICENSE ++ Version 2, June 1991 ++ ++ Copyright (C) 1989, 1991 Free Software Foundation, Inc., ++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ Everyone is permitted to copy and distribute verbatim copies ++ of this license document, but changing it is not allowed. ++ ++ Preamble ++ ++ The licenses for most software are designed to take away your ++freedom to share and change it. By contrast, the GNU General Public ++License is intended to guarantee your freedom to share and change free ++software--to make sure the software is free for all its users. This ++General Public License applies to most of the Free Software ++Foundation's software and to any other program whose authors commit to ++using it. (Some other Free Software Foundation software is covered by ++the GNU Lesser General Public License instead.) You can apply it to ++your programs, too. ++ ++ When we speak of free software, we are referring to freedom, not ++price. Our General Public Licenses are designed to make sure that you ++have the freedom to distribute copies of free software (and charge for ++this service if you wish), that you receive source code or can get it ++if you want it, that you can change the software or use pieces of it ++in new free programs; and that you know you can do these things. ++ ++ To protect your rights, we need to make restrictions that forbid ++anyone to deny you these rights or to ask you to surrender the rights. ++These restrictions translate to certain responsibilities for you if you ++distribute copies of the software, or if you modify it. ++ ++ For example, if you distribute copies of such a program, whether ++gratis or for a fee, you must give the recipients all the rights that ++you have. You must make sure that they, too, receive or can get the ++source code. And you must show them these terms so they know their ++rights. ++ ++ We protect your rights with two steps: (1) copyright the software, and ++(2) offer you this license which gives you legal permission to copy, ++distribute and/or modify the software. ++ ++ Also, for each author's protection and ours, we want to make certain ++that everyone understands that there is no warranty for this free ++software. If the software is modified by someone else and passed on, we ++want its recipients to know that what they have is not the original, so ++that any problems introduced by others will not reflect on the original ++authors' reputations. ++ ++ Finally, any free program is threatened constantly by software ++patents. We wish to avoid the danger that redistributors of a free ++program will individually obtain patent licenses, in effect making the ++program proprietary. To prevent this, we have made it clear that any ++patent must be licensed for everyone's free use or not licensed at all. ++ ++ The precise terms and conditions for copying, distribution and ++modification follow. ++ ++ GNU GENERAL PUBLIC LICENSE ++ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ++ ++ 0. This License applies to any program or other work which contains ++a notice placed by the copyright holder saying it may be distributed ++under the terms of this General Public License. The "Program", below, ++refers to any such program or work, and a "work based on the Program" ++means either the Program or any derivative work under copyright law: ++that is to say, a work containing the Program or a portion of it, ++either verbatim or with modifications and/or translated into another ++language. (Hereinafter, translation is included without limitation in ++the term "modification".) Each licensee is addressed as "you". ++ ++Activities other than copying, distribution and modification are not ++covered by this License; they are outside its scope. The act of ++running the Program is not restricted, and the output from the Program ++is covered only if its contents constitute a work based on the ++Program (independent of having been made by running the Program). ++Whether that is true depends on what the Program does. ++ ++ 1. You may copy and distribute verbatim copies of the Program's ++source code as you receive it, in any medium, provided that you ++conspicuously and appropriately publish on each copy an appropriate ++copyright notice and disclaimer of warranty; keep intact all the ++notices that refer to this License and to the absence of any warranty; ++and give any other recipients of the Program a copy of this License ++along with the Program. ++ ++You may charge a fee for the physical act of transferring a copy, and ++you may at your option offer warranty protection in exchange for a fee. ++ ++ 2. You may modify your copy or copies of the Program or any portion ++of it, thus forming a work based on the Program, and copy and ++distribute such modifications or work under the terms of Section 1 ++above, provided that you also meet all of these conditions: ++ ++ a) You must cause the modified files to carry prominent notices ++ stating that you changed the files and the date of any change. ++ ++ b) You must cause any work that you distribute or publish, that in ++ whole or in part contains or is derived from the Program or any ++ part thereof, to be licensed as a whole at no charge to all third ++ parties under the terms of this License. ++ ++ c) If the modified program normally reads commands interactively ++ when run, you must cause it, when started running for such ++ interactive use in the most ordinary way, to print or display an ++ announcement including an appropriate copyright notice and a ++ notice that there is no warranty (or else, saying that you provide ++ a warranty) and that users may redistribute the program under ++ these conditions, and telling the user how to view a copy of this ++ License. (Exception: if the Program itself is interactive but ++ does not normally print such an announcement, your work based on ++ the Program is not required to print an announcement.) ++ ++These requirements apply to the modified work as a whole. If ++identifiable sections of that work are not derived from the Program, ++and can be reasonably considered independent and separate works in ++themselves, then this License, and its terms, do not apply to those ++sections when you distribute them as separate works. But when you ++distribute the same sections as part of a whole which is a work based ++on the Program, the distribution of the whole must be on the terms of ++this License, whose permissions for other licensees extend to the ++entire whole, and thus to each and every part regardless of who wrote it. ++ ++Thus, it is not the intent of this section to claim rights or contest ++your rights to work written entirely by you; rather, the intent is to ++exercise the right to control the distribution of derivative or ++collective works based on the Program. ++ ++In addition, mere aggregation of another work not based on the Program ++with the Program (or with a work based on the Program) on a volume of ++a storage or distribution medium does not bring the other work under ++the scope of this License. ++ ++ 3. You may copy and distribute the Program (or a work based on it, ++under Section 2) in object code or executable form under the terms of ++Sections 1 and 2 above provided that you also do one of the following: ++ ++ a) Accompany it with the complete corresponding machine-readable ++ source code, which must be distributed under the terms of Sections ++ 1 and 2 above on a medium customarily used for software interchange; or, ++ ++ b) Accompany it with a written offer, valid for at least three ++ years, to give any third party, for a charge no more than your ++ cost of physically performing source distribution, a complete ++ machine-readable copy of the corresponding source code, to be ++ distributed under the terms of Sections 1 and 2 above on a medium ++ customarily used for software interchange; or, ++ ++ c) Accompany it with the information you received as to the offer ++ to distribute corresponding source code. (This alternative is ++ allowed only for noncommercial distribution and only if you ++ received the program in object code or executable form with such ++ an offer, in accord with Subsection b above.) ++ ++The source code for a work means the preferred form of the work for ++making modifications to it. For an executable work, complete source ++code means all the source code for all modules it contains, plus any ++associated interface definition files, plus the scripts used to ++control compilation and installation of the executable. However, as a ++special exception, the source code distributed need not include ++anything that is normally distributed (in either source or binary ++form) with the major components (compiler, kernel, and so on) of the ++operating system on which the executable runs, unless that component ++itself accompanies the executable. ++ ++If distribution of executable or object code is made by offering ++access to copy from a designated place, then offering equivalent ++access to copy the source code from the same place counts as ++distribution of the source code, even though third parties are not ++compelled to copy the source along with the object code. ++ ++ 4. You may not copy, modify, sublicense, or distribute the Program ++except as expressly provided under this License. Any attempt ++otherwise to copy, modify, sublicense or distribute the Program is ++void, and will automatically terminate your rights under this License. ++However, parties who have received copies, or rights, from you under ++this License will not have their licenses terminated so long as such ++parties remain in full compliance. ++ ++ 5. You are not required to accept this License, since you have not ++signed it. However, nothing else grants you permission to modify or ++distribute the Program or its derivative works. These actions are ++prohibited by law if you do not accept this License. Therefore, by ++modifying or distributing the Program (or any work based on the ++Program), you indicate your acceptance of this License to do so, and ++all its terms and conditions for copying, distributing or modifying ++the Program or works based on it. ++ ++ 6. Each time you redistribute the Program (or any work based on the ++Program), the recipient automatically receives a license from the ++original licensor to copy, distribute or modify the Program subject to ++these terms and conditions. You may not impose any further ++restrictions on the recipients' exercise of the rights granted herein. ++You are not responsible for enforcing compliance by third parties to ++this License. ++ ++ 7. If, as a consequence of a court judgment or allegation of patent ++infringement or for any other reason (not limited to patent issues), ++conditions are imposed on you (whether by court order, agreement or ++otherwise) that contradict the conditions of this License, they do not ++excuse you from the conditions of this License. If you cannot ++distribute so as to satisfy simultaneously your obligations under this ++License and any other pertinent obligations, then as a consequence you ++may not distribute the Program at all. For example, if a patent ++license would not permit royalty-free redistribution of the Program by ++all those who receive copies directly or indirectly through you, then ++the only way you could satisfy both it and this License would be to ++refrain entirely from distribution of the Program. ++ ++If any portion of this section is held invalid or unenforceable under ++any particular circumstance, the balance of the section is intended to ++apply and the section as a whole is intended to apply in other ++circumstances. ++ ++It is not the purpose of this section to induce you to infringe any ++patents or other property right claims or to contest validity of any ++such claims; this section has the sole purpose of protecting the ++integrity of the free software distribution system, which is ++implemented by public license practices. Many people have made ++generous contributions to the wide range of software distributed ++through that system in reliance on consistent application of that ++system; it is up to the author/donor to decide if he or she is willing ++to distribute software through any other system and a licensee cannot ++impose that choice. ++ ++This section is intended to make thoroughly clear what is believed to ++be a consequence of the rest of this License. ++ ++ 8. If the distribution and/or use of the Program is restricted in ++certain countries either by patents or by copyrighted interfaces, the ++original copyright holder who places the Program under this License ++may add an explicit geographical distribution limitation excluding ++those countries, so that distribution is permitted only in or among ++countries not thus excluded. In such case, this License incorporates ++the limitation as if written in the body of this License. ++ ++ 9. The Free Software Foundation may publish revised and/or new versions ++of the General Public License from time to time. Such new versions will ++be similar in spirit to the present version, but may differ in detail to ++address new problems or concerns. ++ ++Each version is given a distinguishing version number. If the Program ++specifies a version number of this License which applies to it and "any ++later version", you have the option of following the terms and conditions ++either of that version or of any later version published by the Free ++Software Foundation. If the Program does not specify a version number of ++this License, you may choose any version ever published by the Free Software ++Foundation. ++ ++ 10. If you wish to incorporate parts of the Program into other free ++programs whose distribution conditions are different, write to the author ++to ask for permission. For software which is copyrighted by the Free ++Software Foundation, write to the Free Software Foundation; we sometimes ++make exceptions for this. Our decision will be guided by the two goals ++of preserving the free status of all derivatives of our free software and ++of promoting the sharing and reuse of software generally. ++ ++ NO WARRANTY ++ ++ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY ++FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN ++OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES ++PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED ++OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ++MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS ++TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE ++PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, ++REPAIR OR CORRECTION. ++ ++ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING ++WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR ++REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, ++INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING ++OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED ++TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY ++YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER ++PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE ++POSSIBILITY OF SUCH DAMAGES. ++ ++ END OF TERMS AND CONDITIONS ++ ++ How to Apply These Terms to Your New Programs ++ ++ If you develop a new program, and you want it to be of the greatest ++possible use to the public, the best way to achieve this is to make it ++free software which everyone can redistribute and change under these terms. ++ ++ To do so, attach the following notices to the program. It is safest ++to attach them to the start of each source file to most effectively ++convey the exclusion of warranty; and each file should have at least ++the "copyright" line and a pointer to where the full notice is found. ++ ++ ++ Copyright (C) ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License along ++ with this program; if not, write to the Free Software Foundation, Inc., ++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++ ++Also add information on how to contact you by electronic and paper mail. ++ ++If the program is interactive, make it output a short notice like this ++when it starts in an interactive mode: ++ ++ Gnomovision version 69, Copyright (C) year name of author ++ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. ++ This is free software, and you are welcome to redistribute it ++ under certain conditions; type `show c' for details. ++ ++The hypothetical commands `show w' and `show c' should show the appropriate ++parts of the General Public License. Of course, the commands you use may ++be called something other than `show w' and `show c'; they could even be ++mouse-clicks or menu items--whatever suits your program. ++ ++You should also get your employer (if you work as a programmer) or your ++school, if any, to sign a "copyright disclaimer" for the program, if ++necessary. Here is a sample; alter the names: ++ ++ Yoyodyne, Inc., hereby disclaims all copyright interest in the program ++ `Gnomovision' (which makes passes at compilers) written by James Hacker. ++ ++ , 1 April 1989 ++ Ty Coon, President of Vice ++ ++This General Public License does not permit incorporating your program into ++proprietary programs. If your program is a subroutine library, you may ++consider it more useful to permit linking proprietary applications with the ++library. If this is what you want to do, use the GNU Lesser General ++Public License instead of this License. +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/CyaSSL-Lib.ewp mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/CyaSSL-Lib.ewp +--- mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/CyaSSL-Lib.ewp 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/CyaSSL-Lib.ewp 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,2000 @@ ++ ++ ++ ++ 2 ++ ++ Debug ++ ++ ARM ++ ++ 1 ++ ++ General ++ 3 ++ ++ 22 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ICCARM ++ 2 ++ ++ 29 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ AARM ++ 2 ++ ++ 9 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ OBJCOPY ++ 0 ++ ++ 1 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ CUSTOM ++ 3 ++ ++ ++ ++ ++ ++ ++ BICOMP ++ 0 ++ ++ ++ ++ BUILDACTION ++ 1 ++ ++ ++ ++ ++ ++ ++ ILINK ++ 0 ++ ++ 16 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ IARCHIVE ++ 0 ++ ++ 0 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ BILINK ++ 0 ++ ++ ++ ++ ++ Release ++ ++ ARM ++ ++ 0 ++ ++ General ++ 3 ++ ++ 22 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ICCARM ++ 2 ++ ++ 29 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ AARM ++ 2 ++ ++ 9 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ OBJCOPY ++ 0 ++ ++ 1 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ CUSTOM ++ 3 ++ ++ ++ ++ ++ ++ ++ BICOMP ++ 0 ++ ++ ++ ++ BUILDACTION ++ 1 ++ ++ ++ ++ ++ ++ ++ ILINK ++ 0 ++ ++ 16 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ IARCHIVE ++ 0 ++ ++ 0 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ BILINK ++ 0 ++ ++ ++ ++ ++ CyaSSL ++ ++ $PROJ_DIR$\..\..\..\..\src\crl.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\src\internal.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\src\io.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\src\keys.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\src\ocsp.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\src\sniffer.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\src\ssl.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\src\tls.c ++ ++ ++ ++ wolfCrypt ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\aes.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\arc4.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\asm.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\asn.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\blake2b.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\camellia.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\coding.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\compress.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\des3.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\dh.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\dsa.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\ecc.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\ecc_fp.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\error.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\hc128.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\hmac.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\integer.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\logging.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\md2.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\md4.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\md5.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\memory.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\misc.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\wc_port.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\pwdbased.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\rabbit.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\random.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\ripemd.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\rsa.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\sha.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\sha256.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\sha512.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\src\tfm.c ++ ++ ++ ++ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/CyaSSL-Lib.eww mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/CyaSSL-Lib.eww +--- mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/CyaSSL-Lib.eww 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/CyaSSL-Lib.eww 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,16 @@ ++ ++ ++ ++ ++ $WS_DIR$\CyaSSL-Lib.ewp ++ ++ ++ $WS_DIR$\wolfCrypt-benchmark.ewp ++ ++ ++ $WS_DIR$\wolfCrypt-test.ewp ++ ++ ++ ++ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/benchmark-main.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/benchmark-main.c +--- mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/benchmark-main.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/benchmark-main.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,40 @@ ++/* benchmark-main.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++#include "stdio.h" ++ ++typedef struct func_args { ++ int argc; ++ char** argv; ++ int return_code; ++} func_args; ++ ++func_args args = { 0 } ; ++ ++extern int benchmark_test(void *args) ; ++ ++main(void) { ++ benchmark_test(&args) ; ++ return 0; ++} ++ ++ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/test-main.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/test-main.c +--- mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/test-main.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/test-main.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,36 @@ ++/* test-main.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++ ++typedef struct func_args { ++ int argc; ++ char** argv; ++ int return_code; ++} func_args; ++ ++func_args args = { 0 } ; ++ ++extern int ctaocrypt_test(void *args) ; ++ ++main(void) { ++ ctaocrypt_test(&args) ; ++ return 0; ++} +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-benchmark.ewd mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-benchmark.ewd +--- mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-benchmark.ewd 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-benchmark.ewd 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,2601 @@ ++ ++ ++ ++ 2 ++ ++ Debug ++ ++ ARM ++ ++ 1 ++ ++ C-SPY ++ 2 ++ ++ 25 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ARMSIM_ID ++ 2 ++ ++ 1 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ANGEL_ID ++ 2 ++ ++ 0 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CMSISDAP_ID ++ 2 ++ ++ 0 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ GDBSERVER_ID ++ 2 ++ ++ 0 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ IARROM_ID ++ 2 ++ ++ 1 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ IJET_ID ++ 2 ++ ++ 2 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ JLINK_ID ++ 2 ++ ++ 15 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ LMIFTDI_ID ++ 2 ++ ++ 2 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ MACRAIGOR_ID ++ 2 ++ ++ 3 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ PEMICRO_ID ++ 2 ++ ++ 1 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ RDI_ID ++ 2 ++ ++ 2 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ STLINK_ID ++ 2 ++ ++ 2 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ THIRDPARTY_ID ++ 2 ++ ++ 0 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ XDS100_ID ++ 2 ++ ++ 2 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ $TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin ++ 0 ++ ++ ++ $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin ++ 1 ++ ++ ++ $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin ++ 0 ++ ++ ++ $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin ++ 1 ++ ++ ++ $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin ++ 0 ++ ++ ++ ++ ++ Release ++ ++ ARM ++ ++ 0 ++ ++ C-SPY ++ 2 ++ ++ 25 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ARMSIM_ID ++ 2 ++ ++ 1 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ANGEL_ID ++ 2 ++ ++ 0 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CMSISDAP_ID ++ 2 ++ ++ 0 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ GDBSERVER_ID ++ 2 ++ ++ 0 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ IARROM_ID ++ 2 ++ ++ 1 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ IJET_ID ++ 2 ++ ++ 2 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ JLINK_ID ++ 2 ++ ++ 15 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ LMIFTDI_ID ++ 2 ++ ++ 2 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ MACRAIGOR_ID ++ 2 ++ ++ 3 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ PEMICRO_ID ++ 2 ++ ++ 1 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ RDI_ID ++ 2 ++ ++ 2 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ STLINK_ID ++ 2 ++ ++ 2 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ THIRDPARTY_ID ++ 2 ++ ++ 0 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ XDS100_ID ++ 2 ++ ++ 2 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ $TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin ++ 0 ++ ++ ++ $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin ++ 1 ++ ++ ++ $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin ++ 0 ++ ++ ++ $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin ++ 1 ++ ++ ++ $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin ++ 0 ++ ++ ++ ++ ++ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-benchmark.ewp mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-benchmark.ewp +--- mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-benchmark.ewp 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-benchmark.ewp 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,1877 @@ ++ ++ ++ ++ 2 ++ ++ Debug ++ ++ ARM ++ ++ 1 ++ ++ General ++ 3 ++ ++ 22 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ICCARM ++ 2 ++ ++ 29 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ AARM ++ 2 ++ ++ 9 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ OBJCOPY ++ 0 ++ ++ 1 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ CUSTOM ++ 3 ++ ++ ++ ++ ++ ++ ++ BICOMP ++ 0 ++ ++ ++ ++ BUILDACTION ++ 1 ++ ++ ++ ++ ++ ++ ++ ILINK ++ 0 ++ ++ 16 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ IARCHIVE ++ 0 ++ ++ 0 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ BILINK ++ 0 ++ ++ ++ ++ ++ Release ++ ++ ARM ++ ++ 0 ++ ++ General ++ 3 ++ ++ 22 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ICCARM ++ 2 ++ ++ 29 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ AARM ++ 2 ++ ++ 9 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ OBJCOPY ++ 0 ++ ++ 1 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ CUSTOM ++ 3 ++ ++ ++ ++ ++ ++ ++ BICOMP ++ 0 ++ ++ ++ ++ BUILDACTION ++ 1 ++ ++ ++ ++ ++ ++ ++ ILINK ++ 0 ++ ++ 16 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ IARCHIVE ++ 0 ++ ++ 0 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ BILINK ++ 0 ++ ++ ++ ++ ++ $PROJ_DIR$\benchmark-main.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\benchmark\benchmark.c ++ ++ ++ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-benchmark.icf mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-benchmark.icf +--- mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-benchmark.icf 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-benchmark.icf 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,32 @@ ++/*###ICF### Section handled by ICF editor, don't touch! ****/ ++/*-Editor annotation file-*/ ++/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ ++/*-Specials-*/ ++define symbol __ICFEDIT_intvec_start__ = 0x00000000; ++/*-Memory Regions-*/ ++define symbol __ICFEDIT_region_ROM_start__ = 0x00000000; ++define symbol __ICFEDIT_region_ROM_end__ = 0x0007FFFF; ++define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; ++define symbol __ICFEDIT_region_RAM_end__ = 0x2000FFFF; ++/*-Sizes-*/ ++define symbol __ICFEDIT_size_cstack__ = 0x2000; ++define symbol __ICFEDIT_size_heap__ = 0x2000; ++/**** End of ICF editor section. ###ICF###*/ ++ ++ ++define memory mem with size = 4G; ++define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; ++define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; ++ ++define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; ++define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; ++ ++initialize by copy { readwrite }; ++//initialize by copy with packing = none { section __DLIB_PERTHREAD }; // Required in a multi-threaded application ++do not initialize { section .noinit }; ++ ++place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; ++ ++place in ROM_region { readonly }; ++place in RAM_region { readwrite, ++ block CSTACK, block HEAP }; +\ No newline at end of file +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-test.ewd mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-test.ewd +--- mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-test.ewd 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-test.ewd 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,2601 @@ ++ ++ ++ ++ 2 ++ ++ Debug ++ ++ ARM ++ ++ 1 ++ ++ C-SPY ++ 2 ++ ++ 25 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ARMSIM_ID ++ 2 ++ ++ 1 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ANGEL_ID ++ 2 ++ ++ 0 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CMSISDAP_ID ++ 2 ++ ++ 0 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ GDBSERVER_ID ++ 2 ++ ++ 0 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ IARROM_ID ++ 2 ++ ++ 1 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ IJET_ID ++ 2 ++ ++ 2 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ JLINK_ID ++ 2 ++ ++ 15 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ LMIFTDI_ID ++ 2 ++ ++ 2 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ MACRAIGOR_ID ++ 2 ++ ++ 3 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ PEMICRO_ID ++ 2 ++ ++ 1 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ RDI_ID ++ 2 ++ ++ 2 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ STLINK_ID ++ 2 ++ ++ 2 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ THIRDPARTY_ID ++ 2 ++ ++ 0 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ XDS100_ID ++ 2 ++ ++ 2 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ $TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin ++ 0 ++ ++ ++ $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin ++ 1 ++ ++ ++ $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin ++ 0 ++ ++ ++ $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin ++ 1 ++ ++ ++ $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin ++ 0 ++ ++ ++ ++ ++ Release ++ ++ ARM ++ ++ 0 ++ ++ C-SPY ++ 2 ++ ++ 25 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ARMSIM_ID ++ 2 ++ ++ 1 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ANGEL_ID ++ 2 ++ ++ 0 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CMSISDAP_ID ++ 2 ++ ++ 0 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ GDBSERVER_ID ++ 2 ++ ++ 0 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ IARROM_ID ++ 2 ++ ++ 1 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ IJET_ID ++ 2 ++ ++ 2 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ JLINK_ID ++ 2 ++ ++ 15 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ LMIFTDI_ID ++ 2 ++ ++ 2 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ MACRAIGOR_ID ++ 2 ++ ++ 3 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ PEMICRO_ID ++ 2 ++ ++ 1 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ RDI_ID ++ 2 ++ ++ 2 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ STLINK_ID ++ 2 ++ ++ 2 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ THIRDPARTY_ID ++ 2 ++ ++ 0 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ XDS100_ID ++ 2 ++ ++ 2 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ $TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin ++ 0 ++ ++ ++ $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin ++ 0 ++ ++ ++ $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin ++ 1 ++ ++ ++ $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin ++ 0 ++ ++ ++ $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin ++ 1 ++ ++ ++ $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin ++ 0 ++ ++ ++ ++ ++ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-test.ewp mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-test.ewp +--- mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-test.ewp 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-test.ewp 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,1877 @@ ++ ++ ++ ++ 2 ++ ++ Debug ++ ++ ARM ++ ++ 1 ++ ++ General ++ 3 ++ ++ 22 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ICCARM ++ 2 ++ ++ 29 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ AARM ++ 2 ++ ++ 9 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ OBJCOPY ++ 0 ++ ++ 1 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ CUSTOM ++ 3 ++ ++ ++ ++ ++ ++ ++ BICOMP ++ 0 ++ ++ ++ ++ BUILDACTION ++ 1 ++ ++ ++ ++ ++ ++ ++ ILINK ++ 0 ++ ++ 16 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ IARCHIVE ++ 0 ++ ++ 0 ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ BILINK ++ 0 ++ ++ ++ ++ ++ Release ++ ++ ARM ++ ++ 0 ++ ++ General ++ 3 ++ ++ 22 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ICCARM ++ 2 ++ ++ 29 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ AARM ++ 2 ++ ++ 9 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ OBJCOPY ++ 0 ++ ++ 1 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ CUSTOM ++ 3 ++ ++ ++ ++ ++ ++ ++ BICOMP ++ 0 ++ ++ ++ ++ BUILDACTION ++ 1 ++ ++ ++ ++ ++ ++ ++ ILINK ++ 0 ++ ++ 16 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ IARCHIVE ++ 0 ++ ++ 0 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ BILINK ++ 0 ++ ++ ++ ++ ++ $PROJ_DIR$\test-main.c ++ ++ ++ $PROJ_DIR$\..\..\..\..\ctaocrypt\test\test.c ++ ++ ++ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-test.icf mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-test.icf +--- mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-test.icf 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/Projects/CyaSSL-Lib/wolfCrypt-test.icf 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,31 @@ ++/*###ICF### Section handled by ICF editor, don't touch! ****/ ++/*-Editor annotation file-*/ ++/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ ++/*-Specials-*/ ++define symbol __ICFEDIT_intvec_start__ = 0x0; ++/*-Memory Regions-*/ ++define symbol __ICFEDIT_region_ROM_start__ = 0x0; ++define symbol __ICFEDIT_region_ROM_end__ = 0x000FFFFF; ++define symbol __ICFEDIT_region_RAM_start__ = 0x1FFF0000; ++define symbol __ICFEDIT_region_RAM_end__ = 0x2000FFFF; ++/*-Sizes-*/ ++define symbol __ICFEDIT_size_cstack__ = 0x2000; ++define symbol __ICFEDIT_size_heap__ = 0x3000; ++/**** End of ICF editor section. ###ICF###*/ ++ ++ ++define memory mem with size = 4G; ++define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; ++define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; ++ ++define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; ++define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; ++ ++initialize by copy { readwrite }; ++do not initialize { section .noinit }; ++ ++place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; ++ ++place in ROM_region { readonly }; ++place in RAM_region { readwrite, ++ block CSTACK, block HEAP }; +\ No newline at end of file +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/README mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/README +--- mysql-5.6.23/extra/wolfssl/IDE/IAR-EWARM/README 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/IAR-EWARM/README 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,49 @@ ++CyaSSL IAR Project Files ++ ++This directory contains project files for IAR EWARM IDE. These ++projects have been set up to generic ARM Cortex-M MPUs. ++In order to generate project for specific target MPU, take following steps. ++ ++ ++Included Project Files ++----------------------- ++1. Workspace: CyaSSL-Lib.eww ++ The workspace includes CyaSSL-Lib library and wolfCrypt-test, wolfCrypt-benchmark ++ executable projects. The library project generates full set library of wolfCrypt ++ and CyaSSL functions. ++ ++2. Test suites Project: wolfCrypt-test.ewp ++ generates test.out test suites executable ++ ++3. Benchmark Project: wolfCrypt-benchmark.ewp ++ generates benchmark.out benchmark executable ++ ++Set Up Steps ++------------ ++0. Default Setting ++ Default Target of the projects are set to Cortex-M3 Simulator. ++ For check the projects, you can build and download to the simulator. ++ Open Terminal I/O window, by "view"->"Terminal I/O", and start execution. ++ ++1. Project option settings ++ For each project,... ++ General Options: Choose appropriate "Target" options ++ ++ For executable projects,... ++ Add "SystemInit" and "startup" for your MPU ++ Debugger: Choose your debug "Driver" ++ ++2. For benchmark project,... ++ Write your own "current_time" benchmark timer under "defined(CYASSL_IAR_ARM)" in benchmark.c ++ ++3. settings.h ++ Uncomment the "CYASSL_IAR_ARM" define located in: ++ /cyassl/ctaocrypt/settings. ++ ++4. Build and download ++ Go to "Project->Make" and "Download and Debug" in Menu bar for EWARM build and download. ++ ++ ++Support ++------- ++Please send questions or comments to support@wolfssl.com +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/LPC43xx/time-LCP43xx.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/LPC43xx/time-LCP43xx.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/LPC43xx/time-LCP43xx.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/LPC43xx/time-LCP43xx.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,166 @@ ++/* time.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++ ++/*----------------------------------------------------------------------------- ++ * initialize RTC ++ *----------------------------------------------------------------------------*/ ++#include ++#include "lpc43xx_rtc.h" ++#include "lpc43xx_cgu.h" ++ ++static void init_RTC() ++{ ++ /* Enable GPIO register interface clock */ ++ LPC_CCU1->CLK_M4_GPIO_CFG |= 1; ++ while (!(LPC_CCU1->CLK_M4_GPIO_STAT & 1)) ; ++ ++ /* RTC Block section ------------------------------------------------------ */ ++ /* Init RTC module */ ++ RTC_Init(LPC_RTC); ++ ++ /* Set ALARM time for second */ ++ RTC_SetAlarmTime (LPC_RTC, RTC_TIMETYPE_SECOND, 30); ++ ++ /* Set the AMR for 30s match alarm interrupt */ ++ RTC_AlarmIntConfig (LPC_RTC, RTC_TIMETYPE_SECOND, ENABLE); ++ ++ /* Set the CIIR for minute counter interrupt*/ ++ RTC_CntIncrIntConfig (LPC_RTC, RTC_TIMETYPE_MINUTE, ENABLE); ++ ++ /* Enable rtc (starts increase the tick counter and second counter register) */ ++ RTC_Cmd(LPC_RTC, ENABLE); ++ ++} ++ ++/*----------------------------------------------------------------------------- ++ * initialize TIM ++ *----------------------------------------------------------------------------*/ ++ ++#include "lpc43xx_timer.h" ++ ++static void init_TIM() ++{ ++ TIM_TIMERCFG_Type TIM_ConfigStruct; ++ /* Initialize timer 0, prescale count time of 1uS */ ++ TIM_ConfigStruct.PrescaleOption = TIM_PRESCALE_TICKVAL; ++ TIM_ConfigStruct.PrescaleValue = 204; /* 204MHz */ ++ /* Set configuration for Tim_config and Tim_MatchConfig */ ++ TIM_Init(LPC_TIMER2, TIM_TIMER_MODE,&TIM_ConfigStruct); ++ TIM_ResetCounter(LPC_TIMER2); ++ /* To start timer 2 */ ++ TIM_Cmd(LPC_TIMER2,ENABLE); ++} ++ ++double current_time() ++{ ++ return (double)LPC_TIMER2->TC/1000000.0; ++} ++ ++ ++void init_time(void) { ++ init_RTC() ; ++ init_TIM() ; ++} ++ ++#include ++ ++struct tm *Cyassl_MDK_gmtime(const time_t *c) ++{ ++ static struct tm date ; ++ ++ RTC_TIME_Type RTCFullTime; ++ RTC_GetFullTime (LPC_RTC, &RTCFullTime); ++ ++ date.tm_year = RTCFullTime.YEAR + 100 ; ++ date.tm_mon = RTCFullTime.MONTH - 1 ; ++ date.tm_mday = RTCFullTime.DOM ; ++ date.tm_hour = RTCFullTime.HOUR ; ++ date.tm_min = RTCFullTime.MIN ; ++ date.tm_sec = RTCFullTime.SEC ; ++ ++ #if defined(DEBUG_CYASSL) ++ { ++ extern void CYASSL_MSG(char *msg) ; ++ char msg[100] ; ++ sprintf(msg, "Debug::Cyassl_KEIL_gmtime(DATE=/%4d/%02d/%02d TIME=%02d:%02d:%02d)\n", ++ RTCFullTime.YEAR+2000, RTCFullTime.MONTH, RTCFullTime.DOM, ++ RTCFullTime.HOUR, RTCFullTime.MIN, RTCFullTime.SEC) ; ++ CYASSL_MSG(msg) ; ++ } ++ #endif ++ ++ return(&date) ; ++} ++ ++typedef struct func_args { ++ int argc; ++ char** argv; ++ int return_code; ++} func_args; ++ ++#include ++ ++void time_main(void *args) ++{ ++ char * datetime ; ++ int year ; ++ RTC_TIME_Type RTCFullTime; ++ ++ if( args == NULL || ((func_args *)args)->argc == 1) { ++ RTC_GetFullTime (LPC_RTC, &RTCFullTime); ++ printf("Date: %d/%d/%d, Time: %02d:%02d:%02d\n", ++ RTCFullTime.MONTH, RTCFullTime.DOM, RTCFullTime.YEAR+2000, ++ RTCFullTime.HOUR, RTCFullTime.MIN, RTCFullTime.SEC) ; ++ } else if(((func_args *)args)->argc == 3 && ++ ((func_args *)args)->argv[1][0] == '-' && ++ ((func_args *)args)->argv[1][1] == 'd' ) { ++ ++ datetime = ((func_args *)args)->argv[2]; ++ sscanf(datetime, "%d/%d/%d", ++ (int *)&RTCFullTime.MONTH, (int *)&RTCFullTime.DOM, &year) ; ++ RTCFullTime.YEAR = year - 2000 ; ++ RTC_SetTime (LPC_RTC, RTC_TIMETYPE_MONTH, RTCFullTime.MONTH); ++ RTC_SetTime (LPC_RTC, RTC_TIMETYPE_YEAR, RTCFullTime.YEAR); ++ RTC_SetTime (LPC_RTC, RTC_TIMETYPE_DAYOFMONTH, RTCFullTime.DOM); ++ } else if(((func_args *)args)->argc == 3 && ++ ((func_args *)args)->argv[1][0] == '-' && ++ ((func_args *)args)->argv[1][1] == 't' ) { ++ RTC_GetFullTime (LPC_RTC, &RTCFullTime); ++ datetime = ((func_args *)args)->argv[2]; ++ sscanf(datetime, "%d:%d:%d", ++ (int *)&RTCFullTime.HOUR, ++ (int *)&RTCFullTime.MIN, ++ (int *)&RTCFullTime.SEC ++ ) ; ++ RTC_SetTime (LPC_RTC, RTC_TIMETYPE_SECOND, RTCFullTime.SEC); ++ RTC_SetTime (LPC_RTC, RTC_TIMETYPE_MINUTE, RTCFullTime.MIN); ++ RTC_SetTime (LPC_RTC, RTC_TIMETYPE_HOUR, RTCFullTime.HOUR); ++ } else printf("Invalid argument\n") ; ++} ++ ++ ++ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/Retarget.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/Retarget.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/Retarget.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/Retarget.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,261 @@ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++#include ++#include ++#include ++#include ++ ++ ++#include ++ ++#pragma import(__use_no_semihosting_swi) ++ ++/* The following macro definitions may be used to translate this file: ++ ++ STDIO - use standard Input/Output device ++ (default is NOT used) ++ */ ++ ++/* Standard IO device handles. */ ++#define STDIN 0x8001 ++#define STDOUT 0x8002 ++#define STDERR 0x8003 ++ ++/* Standard IO device name defines. */ ++const char __stdin_name[] = "STDIN"; ++const char __stdout_name[] = "STDOUT"; ++const char __stderr_name[] = "STDERR"; ++ ++struct __FILE { int handle; /* Add whatever you need here */ }; ++ ++#ifdef STDIO ++extern int SER_GetChar (void); ++extern int SER_PutChar (int ch); ++ ++/*----------------------------------------------------------------------------- ++ Write character to the Serial Port ++ *----------------------------------------------------------------------------*/ ++int sendchar (int c) ++{ ++ if (c == '\n') { ++ SER_PutChar ('\r'); ++ } ++ SER_PutChar (c); ++ return (c); ++} ++ ++ ++/*----------------------------------------------------------------------------- ++ Read character from the Serial Port ++ *----------------------------------------------------------------------------*/ ++int getkey (void) ++{ ++ int ch = SER_GetChar(); ++ ++ if (ch < 0) { ++ return 0; ++ } ++ return ch; ++} ++#endif ++ ++/*--------------------------- _ttywrch ---------------------------------------*/ ++ ++void _ttywrch (int ch) ++{ ++#ifdef STDIO ++ sendchar (ch); ++#endif ++} ++ ++/*--------------------------- _sys_open --------------------------------------*/ ++#ifndef NO_FILESYSTEM ++static int KEIL_FS_open(const char *name, int openmode) ++{ ++ int i ; int ret ; ++ #define PATHSIZE 100 ++ char path[PATHSIZE] ; char *p ; ++ ++ if(strlen(name) > PATHSIZE)return(-1) ; ++ ++ for(i = 0; i<= strlen(name); i++) { ++ if(name[i] == '/')path[i] = '\\' ; ++ else path[i] = name[i] ; ++ } ++ if(path[0] == '.' && path[1] == '\\') p = path + 2 ; ++ else p = path ; ++ ++ ret = __sys_open (p, openmode) ; ++ ++ return(ret) ; ++} ++#endif ++ ++FILEHANDLE _sys_open (const char *name, int openmode) ++{ ++ /* Register standard Input Output devices. */ ++ if (strcmp(name, "STDIN") == 0) { ++ return (STDIN); ++ } ++ if (strcmp(name, "STDOUT") == 0) { ++ return (STDOUT); ++ } ++ if (strcmp(name, "STDERR") == 0) { ++ return (STDERR); ++ } ++ #ifndef NO_FILESYSTEM ++ return (KEIL_FS_open(name, openmode)); ++ #else ++ return(0) ; ++ #endif ++} ++ ++/*--------------------------- _sys_close -------------------------------------*/ ++ ++int _sys_close (FILEHANDLE fh) ++{ ++ if (fh > 0x8000) { ++ return (0); ++ } ++ #ifndef NO_FILESYSTEM ++ return (__sys_close (fh)); ++ #else ++ return(0) ; ++ #endif ++} ++ ++/*--------------------------- _sys_write -------------------------------------*/ ++ ++int _sys_write (FILEHANDLE fh, const U8 *buf, U32 len, int mode) ++{ ++#ifdef STDIO ++ if (fh == STDOUT) { ++ /* Standard Output device. */ ++ for ( ; len; len--) { ++ sendchar (*buf++); ++ } ++ return (0); ++ } ++#endif ++ if (fh > 0x8000) { ++ return (-1); ++ } ++ #ifndef NO_FILESYSTEM ++ return (__sys_write (fh, buf, len)); ++ #else ++ return(0) ; ++ #endif ++} ++ ++/*--------------------------- _sys_read --------------------------------------*/ ++ ++int _sys_read (FILEHANDLE fh, U8 *buf, U32 len, int mode) ++{ ++#ifdef STDIO ++ if (fh == STDIN) { ++ /* Standard Input device. */ ++ int sz ; ++ while((buf[0] = getkey()) == 0) ; ++ ; ++ for (sz = 0 ; sz <= len ; sz ++ ) { ++ if(buf[sz] == 0) break ; ++ else sz++ ; ++ buf[sz] = getkey (); ++ } ++ return (sz); ++ } ++#endif ++ if (fh > 0x8000) { ++ return (-1); ++ } ++ #ifndef NO_FILESYSTEM ++ return (__sys_read (fh, buf, len)); ++ #else ++ return(0) ; ++ #endif ++} ++ ++/*--------------------------- _sys_istty -------------------------------------*/ ++ ++int _sys_istty (FILEHANDLE fh) ++{ ++ if (fh > 0x8000) { ++ return (1); ++ } ++ return (0); ++} ++ ++/*--------------------------- _sys_seek --------------------------------------*/ ++ ++int _sys_seek (FILEHANDLE fh, long pos) ++{ ++ if (fh > 0x8000) { ++ return (-1); ++ } ++ #ifndef NO_FILESYSTEM ++ return (__sys_seek (fh, pos)); ++ #else ++ return(0) ; ++ #endif ++} ++ ++/*--------------------------- _sys_ensure ------------------------------------*/ ++ ++int _sys_ensure (FILEHANDLE fh) ++{ ++ if (fh > 0x8000) { ++ return (-1); ++ } ++ #ifndef NO_FILESYSTEM ++ return (__sys_ensure (fh)); ++ #else ++ return(0) ; ++ #endif ++} ++ ++/*--------------------------- _sys_flen --------------------------------------*/ ++ ++long _sys_flen (FILEHANDLE fh) ++{ ++ if (fh > 0x8000) { ++ return (0); ++ } ++ #ifndef NO_FILESYSTEM ++ return (__sys_flen (fh)); ++ #else ++ return(0) ; ++ #endif ++} ++ ++ ++/*--------------------------- _sys_tmpnam ------------------------------------*/ ++ ++int _sys_tmpnam (char *name, int sig, unsigned maxlen) ++{ ++ return (1); ++} ++ ++/*--------------------------- _sys_command_string ----------------------------*/ ++ ++char *_sys_command_string (char *cmd, int len) ++{ ++ return (cmd); ++} ++ ++/*--------------------------- _sys_exit --------------------------------------*/ ++ ++void _sys_exit (int return_code) ++{ ++#ifdef CYASSL_MDK_SHELL ++ return ; ++#else ++ /* Endless loop. */ ++ while (1); ++#endif ++ ++} ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/cert_data.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/cert_data.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/cert_data.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/cert_data.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,28 @@ ++/* certs_test.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++/* Define initial data for cert buffers */ ++#include ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/cert_data.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/cert_data.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/cert_data.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/cert_data.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,39 @@ ++#ifndef CYASSL_CERT_DATA_H ++#define CYASSL_CERT_DATA_H ++ ++#ifdef USE_CERT_BUFFERS_1024 ++extern const unsigned char client_key_der_1024[] ; ++extern int sizeof_client_key_der_1024 ; ++/* ./certs/1024/client-cert.der, 1024-bit */ ++extern const unsigned char client_cert_der_1024[] ; ++extern int sizeof_client_cert_der_1024 ; ++/* ./certs/1024/dh1024.der, 1024-bit */ ++extern const unsigned char dh_key_der_1024[] ; ++extern int sizeof_dh_key_der_1024 ; ++/* ./certs/1024/dsa1024.der, 1024-bit */ ++extern const unsigned char dsa_key_der_1024[] ; ++extern int sizeof_dsa_key_der_1024 ; ++/* ./certs/1024/rsa1024.der, 1024-bit */ ++extern const unsigned char rsa_key_der_1024[] ; ++extern int sizeof_rsa_key_der_1024 ; ++ ++#elif defined(USE_CERT_BUFFERS_2048) ++/* ./certs/client-key.der, 2048-bit */ ++extern const unsigned char client_key_der_2048[] ; ++extern int sizeof_client_key_der_2048 ; ++/* ./certs/client-cert.der, 2048-bit */ ++extern const unsigned char client_cert_der_2048[] ; ++extern int sizeof_client_cert_der_2048 ; ++/* ./certs/dh2048.der, 2048-bit */ ++extern const unsigned char dh_key_der_2048[] ; ++extern int sizeof_dh_key_der_2048 ; ++/* ./certs/dsa2048.der, 2048-bit */ ++extern const unsigned char dsa_key_der_2048[] ; ++extern int sizeof_dsa_key_der_2048; ++/* ./certs/rsa2048.der, 2048-bit */ ++extern const unsigned char rsa_key_der_2048[] ; ++extern int sizeof_rsa_key_der_2048 ; ++#endif ++ ++#endif ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/config-BARE-METAL.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/config-BARE-METAL.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/config-BARE-METAL.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/config-BARE-METAL.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,291 @@ ++/* config-BEREFOOT.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++ ++/**** CyaSSL for KEIL-RL Configuration ****/ ++ ++#define __CORTEX_M3__ ++#define CYASSL_MDK_ARM ++#define NO_WRITEV ++#define NO_CYASSL_DIR ++#define NO_MAIN_DRIVER ++ ++#define CYASSL_DER_LOAD ++#define HAVE_NULL_CIPHER ++ ++#define SINGLE_THREADED ++#define NO_FILESYSTEM ++#define NO_TLS ++ ++#define NO_ECHOSERVER ++#define NO_ECHOCLIENT ++#define NO_SIMPLE_SERVER ++#define NO_SIMPLE_CLIENT ++ ++// <<< Use Configuration Wizard in Context Menu >>> ++ ++// Build Target: KEIL-BAREFOOT ++// Single Threaded, No File System, No TCP-net ++// ++// Command Shell ++#define MDK_CONF_SHELL 1 ++#if MDK_CONF_SHELL == 1 ++#define CYASSL_MDK_SHELL ++#endif ++// ++// CyaSSL Apps ++// Crypt/Cipher ++// Cert Storage <1=> Mem Buff (1024bytes) <2=> Mem Buff (2048bytes) ++#define MDK_CONF_CERT_BUFF 1 ++#if MDK_CONF_CERT_BUFF == 1 ++#define USE_CERT_BUFFERS_1024 ++#elif MDK_CONF_CERT_BUFF == 2 ++#define USE_CERT_BUFFERS_2048 ++#endif ++ ++// Crypt/Cipher Test Suite ++#define MDK_CONF_CTaoCryptTest 1 ++#if MDK_CONF_CTaoCryptTest == 0 ++#define NO_CRYPT_TEST ++#endif ++// ++// Crypt/Cipher Benchmark ++#define MDK_CONF_CTaoCryptBenchmark 1 ++#if MDK_CONF_CTaoCryptBenchmark == 0 ++#define NO_CRYPT_BENCHMARK ++#define BENCH_EMBEDDED ++#endif ++// ++// ++ ++// STM32 Hardware Crypt ++// STM32F2 Hardware RNG ++#define MDK_CONF_STM32F2_RNG 0 ++#if MDK_CONF_STM32F2_RNG == 1 ++#define STM32F2_RNG ++#else ++#define NO_DEV_RANDOM ++#endif ++// ++// STM32F2 Hardware Crypt ++#define MDK_CONF_STM32F2_CRYPTO 0 ++#if MDK_CONF_STM32F2_CRYPTO == 1 ++#define STM32F2_CRYPTO ++#endif ++// ++ ++// ++ ++ ++// CTaoCrypt Library ++ ++// MD5, SHA, SHA-256, AES, RC4, ASN, RSA ++// ++// MD2 ++#define MDK_CONF_MD2 0 ++#if MDK_CONF_MD2 == 1 ++#define CYASSL_MD2 ++#endif ++// ++// MD4 ++#define MDK_CONF_MD4 1 ++#if MDK_CONF_MD4 == 0 ++#define NO_MD4 ++#endif ++// ++// SHA-384 ++// This has to be with SHA512 ++#define MDK_CONF_SHA384 0 ++#if MDK_CONF_SHA384 == 1 ++#define CYASSL_SHA384 ++#endif ++// ++// SHA-512 ++#define MDK_CONF_SHA512 0 ++#if MDK_CONF_SHA512 == 1 ++#define CYASSL_SHA512 ++#endif ++// ++// RIPEMD ++#define MDK_CONF_RIPEMD 0 ++#if MDK_CONF_RIPEMD == 1 ++#define CYASSL_RIPEMD ++#endif ++// ++// HMAC ++#define MDK_CONF_HMAC 1 ++#if MDK_CONF_HMAC == 0 ++#define NO_HMAC ++#endif ++// ++// HC128 ++#define MDK_CONF_HC128 0 ++#if MDK_CONF_HC128 == 1 ++#define HAVE_HC128 ++#endif ++// ++// RABBIT ++#define MDK_CONF_RABBIT 1 ++#if MDK_CONF_RABBI == 0 ++#define NO_RABBIT ++#endif ++// ++ ++// AEAD ++#define MDK_CONF_AEAD 0 ++#if MDK_CONF_AEAD == 1 ++#define HAVE_AEAD ++#endif ++// ++// DES3 ++#define MDK_CONF_DES3 1 ++#if MDK_CONF_DES3 == 0 ++#define NO_DES3 ++#endif ++// ++// CAMELLIA ++#define MDK_CONF_CAMELLIA 0 ++#if MDK_CONF_CAMELLIA == 1 ++#define HAVE_CAMELLIA ++#endif ++// ++ ++// DH ++// need this for CYASSL_SERVER, OPENSSL_EXTRA ++#define MDK_CONF_DH 1 ++#if MDK_CONF_DH == 0 ++#define NO_DH ++#endif ++// ++// DSA ++#define MDK_CONF_DSA 1 ++#if MDK_CONF_DSA == 0 ++#define NO_DSA ++#endif ++// ++// PWDBASED ++#define MDK_CONF_PWDBASED 1 ++#if MDK_CONF_PWDBASED == 0 ++#define NO_PWDBASED ++#endif ++// ++ ++// ECC ++#define MDK_CONF_ECC 0 ++#if MDK_CONF_ECC == 1 ++#define HAVE_ECC ++#endif ++// ++// PSK ++#define MDK_CONF_PSK 1 ++#if MDK_CONF_PSK == 0 ++#define NO_PSK ++#endif ++// ++// AESCCM (Turn off Hardware Crypt) ++#define MDK_CONF_AESCCM 0 ++#if MDK_CONF_AESCCM == 1 ++#define HAVE_AESCCM ++#endif ++// ++// AESGCM (Turn off Hardware Crypt) ++#define MDK_CONF_AESGCM 0 ++#if MDK_CONF_AESGCM == 1 ++#define HAVE_AESGCM ++#define BUILD_AESGCM ++#endif ++// ++// NTRU (need License, "crypto_ntru.h") ++#define MDK_CONF_NTRU 0 ++#if MDK_CONF_NTRU == 1 ++#define HAVE_NTRU ++#endif ++// ++// ++ ++// Others ++ ++// Inline ++#define MDK_CONF_INLINE 0 ++#if MDK_CONF_INLINE == 0 ++#define NO_INLINE ++#endif ++// ++// Debug ++// Debug Message ++#define MDK_CONF_DebugMessage 0 ++#if MDK_CONF_DebugMessage == 1 ++#define DEBUG_CYASSL ++#endif ++// ++// Check malloc ++#define MDK_CONF_CheckMalloc 1 ++#if MDK_CONF_CheckMalloc == 1 ++#define CYASSL_MALLOC_CHECK ++#endif ++// ++ ++ ++// ++// ErrNo.h ++#define MDK_CONF_ErrNo 0 ++#if MDK_CONF_ErrNo == 1 ++#define HAVE_ERRNO ++#endif ++// ++// zlib (need "zlib.h") ++#define MDK_CONF_LIBZ 0 ++#if MDK_CONF_LIBZ == 1 ++#define HAVE_LIBZ ++#endif ++// ++// CAVIUM (need CAVIUM headers) ++#define MDK_CONF_CAVIUM 0 ++#if MDK_CONF_CAVIUM == 1 ++#define HAVE_CAVIUM ++#endif ++// ++ ++// Error Strings ++#define MDK_CONF_ErrorStrings 1 ++#if MDK_CONF_ErrorStrings == 0 ++#define NO_ERROR_STRINGS ++#endif ++// ++ ++// Small Stack ++#define MDK_CONF_SmallStack 1 ++#if MDK_CONF_SmallStack == 0 ++#define NO_CYASSL_SMALL_STACK ++#endif ++// ++// Use Fast Math ++#define MDK_CONF_FASTMATH 0 ++#if MDK_CONF_FASTMATH == 1 ++#define USE_FAST_MATH ++#endif ++// ++ ++ ++// ++ ++// ++// <<< end of configuration section >>> +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/config-FS.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/config-FS.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/config-FS.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/config-FS.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,329 @@ ++/* config-FS.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++ ++/**** CyaSSL for KEIL-RL Configuration ****/ ++ ++#define __CORTEX_M3__ ++#define CYASSL_KEIL_RL ++#define NO_WRITEV ++#define NO_CYASSL_DIR ++#define NO_MAIN_DRIVER ++ ++ ++#define CYASSL_DER_LOAD ++#define HAVE_NULL_CIPHER ++ ++#define SINGLE_THREADED ++ ++#define NO_ECHOSERVER ++#define NO_ECHOCLIENT ++#define NO_SIMPLE_SERVER ++#define NO_SIMPLE_CLIENT ++ ++// <<< Use Configuration Wizard in Context Menu >>> ++ ++// Build Target: KEIL-FS ++// Single Threaded, With File System, No TCP-net ++// ++// Command Shell ++#define MDK_CONF_SHELL 1 ++#if MDK_CONF_SHELL == 1 ++#define CYASSL_MDK_SHELL ++#endif ++// ++// CyaSSL Apps ++// Crypt/Cipher ++// Cert Storage <0=> SD Card <1=> Mem Buff (1024bytes) <2=> Mem Buff (2048bytes) ++#define MDK_CONF_CERT_BUFF 0 ++#if MDK_CONF_CERT_BUFF== 1 ++#define USE_CERT_BUFFERS_1024 ++#elif MDK_CONF_CERT_BUFF == 2 ++#define USE_CERT_BUFFERS_2048 ++#endif ++ ++// Crypt/Cipher Test Suite ++#define MDK_CONF_CTaoCryptTest 1 ++#if MDK_CONF_CTaoCryptTest == 0 ++#define NO_CRYPT_TEST ++#endif ++// ++// Crypt/Cipher Benchmark ++#define MDK_CONF_CTaoCryptBenchmark 1 ++#if MDK_CONF_CTaoCryptBenchmark == 0 ++#define NO_CRYPT_BENCHMARK ++#endif ++// ++// ++ ++// STM32 Hardware Crypt ++// STM32F2 Hardware RNG ++#define MDK_CONF_STM32F2_RNG 0 ++#if MDK_CONF_STM32F2_RNG == 1 ++#define STM32F2_RNG ++#else ++#define NO_DEV_RANDOM ++#endif ++// ++// STM32F2 Hardware Crypt ++#define MDK_CONF_STM32F2_CRYPTO 0 ++#if MDK_CONF_STM32F2_CRYPTO == 1 ++#define STM32F2_CRYPTO ++#endif ++// ++ ++// ++ ++// CyaSSL Library ++// SSL (Included by default) ++// ++ ++// TLS ++#define MDK_CONF_TLS 1 ++#if MDK_CONF_TLS == 0 ++#define NO_TLS ++#endif ++// ++ ++// CertGen ++#define MDK_CONF_CERT_GEN 0 ++#if MDK_CONF_CERT_GEN == 1 ++#define CYASSL_CERT_GEN ++#endif ++// ++// KeyGen ++#define MDK_CONF_KEY_GEN 0 ++#if MDK_CONF_KEY_GEN == 1 ++#define CYASSL_KEY_GEN ++#endif ++// ++// CRL ++#define MDK_CONF_DER_LOAD 0 ++#if MDK_CONF_DER_LOAD == 1 ++#define CYASSL_DER_LOAD ++#endif ++// ++// OpenSSL Extra ++#define MDK_CONF_OPENSSL_EXTRA 0 ++#if MDK_CONF_OPENSSL_EXTRA == 1 ++#define OPENSSL_EXTRA ++#endif ++// ++// CRL Monitor, OCSP (not supported with KEIL) ++// ++ ++// ++ ++// CTaoCrypt Library ++ ++// MD5, SHA, SHA-256, AES, RC4, ASN, RSA ++// ++ ++// MD2 ++#define MDK_CONF_MD2 0 ++#if MDK_CONF_MD2 == 1 ++#define CYASSL_MD2 ++#endif ++// ++// MD4 ++#define MDK_CONF_MD4 1 ++#if MDK_CONF_MD4 == 0 ++#define NO_MD4 ++#endif ++// ++// SHA-384 ++// This has to be with SHA512 ++#define MDK_CONF_SHA384 0 ++#if MDK_CONF_SHA384 == 1 ++#define CYASSL_SHA384 ++#endif ++// ++// SHA-512 ++#define MDK_CONF_SHA512 0 ++#if MDK_CONF_SHA512 == 1 ++#define CYASSL_SHA512 ++#endif ++// ++// RIPEMD ++#define MDK_CONF_RIPEMD 0 ++#if MDK_CONF_RIPEMD == 1 ++#define CYASSL_RIPEMD ++#endif ++// ++// HMAC ++#define MDK_CONF_HMAC 1 ++#if MDK_CONF_HMAC == 0 ++#define NO_HMAC ++#endif ++// ++// HC128 ++#define MDK_CONF_HC128 0 ++#if MDK_CONF_HC128 == 1 ++#define HAVE_HC128 ++#endif ++// ++// RABBIT ++#define MDK_CONF_RABBIT 1 ++#if MDK_CONF_RABBI == 0 ++#define NO_RABBIT ++#endif ++// ++ ++// AEAD ++#define MDK_CONF_AEAD 0 ++#if MDK_CONF_AEAD == 1 ++#define HAVE_AEAD ++#endif ++// ++// DES3 ++#define MDK_CONF_DES3 1 ++#if MDK_CONF_DES3 == 0 ++#define NO_DES3 ++#endif ++// ++// CAMELLIA ++#define MDK_CONF_CAMELLIA 0 ++#if MDK_CONF_CAMELLIA == 1 ++#define HAVE_CAMELLIA ++#endif ++// ++ ++// DH ++// need this for CYASSL_SERVER, OPENSSL_EXTRA ++#define MDK_CONF_DH 1 ++#if MDK_CONF_DH == 0 ++#define NO_DH ++#endif ++// ++// DSA ++#define MDK_CONF_DSA 1 ++#if MDK_CONF_DSA == 0 ++#define NO_DSA ++#endif ++// ++// PWDBASED ++#define MDK_CONF_PWDBASED 1 ++#if MDK_CONF_PWDBASED == 0 ++#define NO_PWDBASED ++#endif ++// ++ ++// ECC ++#define MDK_CONF_ECC 0 ++#if MDK_CONF_ECC == 1 ++#define HAVE_ECC ++#endif ++// ++// PSK ++#define MDK_CONF_PSK 1 ++#if MDK_CONF_PSK == 0 ++#define NO_PSK ++#endif ++// ++// AESCCM (Turn off Hardware Crypt) ++#define MDK_CONF_AESCCM 0 ++#if MDK_CONF_AESCCM == 1 ++#define HAVE_AESCCM ++#endif ++// ++// AESGCM (Turn off Hardware Crypt) ++#define MDK_CONF_AESGCM 0 ++#if MDK_CONF_AESGCM == 1 ++#define HAVE_AESGCM ++#define BUILD_AESGCM ++#endif ++// ++// NTRU (need License, "crypto_ntru.h") ++#define MDK_CONF_NTRU 0 ++#if MDK_CONF_NTRU == 1 ++#define HAVE_NTRU ++#endif ++// ++// ++ ++// Others ++ ++// Inline ++#define MDK_CONF_INLINE 0 ++#if MDK_CONF_INLINE == 0 ++#define NO_INLINE ++#endif ++// ++// Debug ++// Debug Message ++#define MDK_CONF_DebugMessage 0 ++#if MDK_CONF_DebugMessage == 1 ++#define DEBUG_CYASSL ++#endif ++// ++// Check malloc ++#define MDK_CONF_CheckMalloc 1 ++#if MDK_CONF_CheckMalloc == 1 ++#define CYASSL_MALLOC_CHECK ++#endif ++// ++ ++ ++// ++// ErrNo.h ++#define MDK_CONF_ErrNo 0 ++#if MDK_CONF_ErrNo == 1 ++#define HAVE_ERRNO ++#endif ++// ++// zlib (need "zlib.h") ++#define MDK_CONF_LIBZ 0 ++#if MDK_CONF_LIBZ == 1 ++#define HAVE_LIBZ ++#endif ++// ++// CAVIUM (need CAVIUM headers) ++#define MDK_CONF_CAVIUM 0 ++#if MDK_CONF_CAVIUM == 1 ++#define HAVE_CAVIUM ++#endif ++// ++ ++// Error Strings ++#define MDK_CONF_ErrorStrings 1 ++#if MDK_CONF_ErrorStrings == 0 ++#define NO_ERROR_STRINGS ++#endif ++// ++ ++// Small Stack ++#define MDK_CONF_SmallStack 1 ++#if MDK_CONF_SmallStack == 0 ++#define NO_CYASSL_SMALL_STACK ++#endif ++// ++// Use Fast Math ++#define MDK_CONF_FASTMATH 0 ++#if MDK_CONF_FASTMATH == 1 ++#define USE_FAST_MATH ++#endif ++// ++ ++ ++// ++ ++// ++// <<< end of configuration section >>> +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/config-RTX-TCP-FS.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/config-RTX-TCP-FS.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/config-RTX-TCP-FS.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/config-RTX-TCP-FS.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,351 @@ ++/* config-RTX-TCP-FS.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++ ++/**** CyaSSL for KEIL-RL Configuration ****/ ++ ++#define __CORTEX_M3__ ++#define CYASSL_MDK_ARM ++#define NO_WRITEV ++#define NO_CYASSL_DIR ++#define NO_MAIN_DRIVER ++ ++ ++#define CYASSL_DER_LOAD ++#define HAVE_NULL_CIPHER ++ ++#define HAVE_KEIL_RTX ++#define CYASSL_KEIL_TCP_NET ++ ++ ++// <<< Use Configuration Wizard in Context Menu >>> ++// Build Target: KEIL-RTX-TCP-FS ++// RTOS, File System and TCP-net ++// ++// Command Shell ++#define MDK_CONF_SHELL 1 ++#if MDK_CONF_SHELL == 1 ++#define CYASSL_MDK_SHELL ++#endif ++// ++// CyaSSL Apps ++// Crypt/Cipher ++// Cert Storage <0=> SD Card <1=> Mem Buff (1024bytes) <2=> Mem Buff (2048bytes) ++#define MDK_CONF_CERT_BUFF 0 ++#if MDK_CONF_CERT_BUFF== 1 ++#define USE_CERT_BUFFERS_1024 ++#elif MDK_CONF_CERT_BUFF == 2 ++#define USE_CERT_BUFFERS_2048 ++#endif ++ ++// Crypt/Cipher Test Suite ++#define MDK_CONF_CTaoCryptTest 1 ++#if MDK_CONF_CTaoCryptTest == 0 ++#define NO_CRYPT_TEST ++#endif ++// ++// Crypt/Cipher Benchmark ++#define MDK_CONF_CTaoCryptBenchmark 1 ++#if MDK_CONF_CTaoCryptBenchmark == 0 ++#define NO_CRYPT_BENCHMARK ++#define BENCH_EMBEDDED ++#endif ++// ++// ++// SSL/TLS Server/Client ++// echoServer ++#define MDK_CONF_echoServer 1 ++#if MDK_CONF_echoServer == 0 ++#define NO_ECHOSERVER ++#endif ++// ++// echoClient ++#define MDK_CONF_echoClient 1 ++#if MDK_CONF_echoClient == 0 ++#define NO_ECHOCLIENT ++#endif ++// ++// SimpleServer ++#define MDK_CONF_simpleServer 1 ++#if MDK_CONF_simpleServer == 0 ++#define NO_SIMPLE_SERVER ++#endif ++// ++// SimpleCliet ++#define MDK_CONF_simpleClient 1 ++#if MDK_CONF_simpleClient == 0 ++#define NO_SIMPLE_CLIENT ++#endif ++// ++// ++// ++// STM32 Hardware Crypt ++// STM32F2 Hardware RNG ++#define MDK_CONF_STM32F2_RNG 0 ++#if MDK_CONF_STM32F2_RNG == 1 ++#define STM32F2_RNG ++#else ++#define NO_DEV_RANDOM ++#endif ++// ++// STM32F2 Hardware Crypt ++#define MDK_CONF_STM32F2_CRYPTO 0 ++#if MDK_CONF_STM32F2_CRYPTO == 1 ++#define STM32F2_CRYPTO ++#endif ++// ++ ++// ++ ++// CyaSSL Library ++// SSL (Included by default) ++// ++ ++// TLS ++#define MDK_CONF_TLS 1 ++#if MDK_CONF_TLS == 0 ++#define NO_TLS ++#endif ++// ++ ++// CertGen ++#define MDK_CONF_CERT_GEN 0 ++#if MDK_CONF_CERT_GEN == 1 ++#define CYASSL_CERT_GEN ++#endif ++// ++// KeyGen ++#define MDK_CONF_KEY_GEN 0 ++#if MDK_CONF_KEY_GEN == 1 ++#define CYASSL_KEY_GEN ++#endif ++// ++// CRL ++#define MDK_CONF_DER_LOAD 0 ++#if MDK_CONF_DER_LOAD == 1 ++#define CYASSL_DER_LOAD ++#endif ++// ++// OpenSSL Extra ++#define MDK_CONF_OPENSSL_EXTRA 1 ++#if MDK_CONF_OPENSSL_EXTRA == 1 ++#define OPENSSL_EXTRA ++#endif ++// ++// CRL Monitor, OCSP (not supported with KEIL) ++// ++ ++// ++ ++// CTaoCrypt Library ++ ++// MD5, SHA, SHA-256, AES, RC4, ASN, RSA ++// ++// MD2 ++#define MDK_CONF_MD2 0 ++#if MDK_CONF_MD2 == 1 ++#define CYASSL_MD2 ++#endif ++// ++// MD4 ++#define MDK_CONF_MD4 1 ++#if MDK_CONF_MD4 == 0 ++#define NO_MD4 ++#endif ++// ++// SHA-384 ++// This has to be with SHA512 ++#define MDK_CONF_SHA384 0 ++#if MDK_CONF_SHA384 == 1 ++#define CYASSL_SHA384 ++#endif ++// ++// SHA-512 ++#define MDK_CONF_SHA512 0 ++#if MDK_CONF_SHA512 == 1 ++#define CYASSL_SHA512 ++#endif ++// ++// RIPEMD ++#define MDK_CONF_RIPEMD 1 ++#if MDK_CONF_RIPEMD == 1 ++#define CYASSL_RIPEMD ++#endif ++// ++// HMAC ++#define MDK_CONF_HMAC 1 ++#if MDK_CONF_HMAC == 0 ++#define NO_HMAC ++#endif ++// ++// HC128 ++#define MDK_CONF_HC128 0 ++#if MDK_CONF_HC128 == 1 ++#define HAVE_HC128 ++#endif ++// ++// RABBIT ++#define MDK_CONF_RABBIT 1 ++#if MDK_CONF_RABBI == 0 ++#define NO_RABBIT ++#endif ++// ++ ++// AEAD ++#define MDK_CONF_AEAD 0 ++#if MDK_CONF_AEAD == 1 ++#define HAVE_AEAD ++#endif ++// ++// DES3 ++#define MDK_CONF_DES3 1 ++#if MDK_CONF_DES3 == 0 ++#define NO_DES3 ++#endif ++// ++// CAMELLIA ++#define MDK_CONF_CAMELLIA 0 ++#if MDK_CONF_CAMELLIA == 1 ++#define HAVE_CAMELLIA ++#endif ++// ++ ++// DH ++// need this for CYASSL_SERVER, OPENSSL_EXTRA ++#define MDK_CONF_DH 1 ++#if MDK_CONF_DH == 0 ++#define NO_DH ++#endif ++// ++// DSA ++#define MDK_CONF_DSA 1 ++#if MDK_CONF_DSA == 0 ++#define NO_DSA ++#endif ++// ++// PWDBASED ++#define MDK_CONF_PWDBASED 1 ++#if MDK_CONF_PWDBASED == 0 ++#define NO_PWDBASED ++#endif ++// ++ ++// ECC ++#define MDK_CONF_ECC 1 ++#if MDK_CONF_ECC == 1 ++#define HAVE_ECC ++#endif ++// ++// PSK ++#define MDK_CONF_PSK 1 ++#if MDK_CONF_PSK == 0 ++#define NO_PSK ++#endif ++// ++// AESCCM (Turn off Hardware Crypt) ++#define MDK_CONF_AESCCM 0 ++#if MDK_CONF_AESCCM == 1 ++#define HAVE_AESCCM ++#endif ++// ++// AESGCM (Turn off Hardware Crypt) ++#define MDK_CONF_AESGCM 0 ++#if MDK_CONF_AESGCM == 1 ++#define HAVE_AESGCM ++#define BUILD_AESGCM ++#endif ++// ++// NTRU (need License, "crypto_ntru.h") ++#define MDK_CONF_NTRU 0 ++#if MDK_CONF_NTRU == 1 ++#define HAVE_NTRU ++#endif ++// ++// ++ ++// Others ++ ++// Inline ++#define MDK_CONF_INLINE 0 ++#if MDK_CONF_INLINE == 0 ++#define NO_INLINE ++#endif ++// ++// Debug ++// Debug Message ++#define MDK_CONF_DEBUG_MSG 0 ++#if MDK_CONF_DEBUG_MSG == 1 ++#define DEBUG_CYASSL ++#endif ++// ++// Check malloc ++#define MDK_CONF_CHECK_MALLOC 1 ++#if MDK_CONF_CHECK_MALLOC == 1 ++#define CYASSL_MALLOC_CHECK ++#endif ++// ++ ++ ++// ++// ErrNo.h ++#define MDK_CONF_ERR_NO 0 ++#if MDK_CONF_ERR_NO == 1 ++#define HAVE_ERRNO ++#endif ++// ++// zlib (need "zlib.h") ++#define MDK_CONF_LIBZ 0 ++#if MDK_CONF_LIBZ == 1 ++#define HAVE_LIBZ ++#endif ++// ++// CAVIUM (need CAVIUM headers) ++#define MDK_CONF_CAVIUM 0 ++#if MDK_CONF_CAVIUM == 1 ++#define HAVE_CAVIUM ++#endif ++// ++ ++// Error Strings ++#define MDK_CONF_ErrorStrings 1 ++#if MDK_CONF_ErrorStrings == 0 ++#define NO_ERROR_STRINGS ++#endif ++// ++ ++// Small Stack ++#define MDK_CONF_SMALL_STACK 1 ++#if MDK_CONF_SMALL_STACK == 0 ++#define NO_CYASSL_SMALL_STACK ++#endif ++// ++// Use Fast Math ++#define MDK_CONF_FASTMATH 0 ++#if MDK_CONF_FASTMATH == 1 ++#define USE_FAST_MATH ++#endif ++// ++ ++ ++// ++ ++// ++// <<< end of configuration section >>> +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/config.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/config.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/config.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/config.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,46 @@ ++/* config.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++ ++/**** CyaSSL for KEIL-RL Configuration ****/ ++ ++#define __CORTEX_M3__ ++#define CYASSL_MDK_ARM ++#define NO_WRITEV ++#define NO_CYASSL_DIR ++ ++/* for Retarget.c */ ++#define STDIO ++#define BENCH_EMBEDDED ++ ++#define CYASSL_DER_LOAD ++#define HAVE_NULL_CIPHER ++ ++#if defined(MDK_CONF_RTX_TCP_FS) ++#include "config-RTX-TCP-FS.h" ++#elif defined(MDK_CONF_TCP_FS) ++#include "config-TCP-FS.h" ++#elif defined(MDK_CONF_FS) ++#include "config-FS.h" ++#elif defined(MDK_CONF_BARE_METAL) ++#include "config-BARE-METAL.h" ++#endif ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/cyassl_MDK_ARM.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/cyassl_MDK_ARM.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/cyassl_MDK_ARM.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/cyassl_MDK_ARM.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,249 @@ ++/* cyassl_MDK_ARM.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++ ++/***************************************************************************************/ ++/** This file is for defining functions for specific to KEIL-RL. **/ ++/***************************************************************************************/ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++#if defined (CYASSL_MDK5) ++ #include "cmsis_os.h" ++ #if defined(CYASSL_KEIL_TCP_NET) ++ #include "rl_net.h" ++ #endif ++#else ++ #include ++#endif ++ ++#include "cyassl_MDK_ARM.h" ++ ++#include ++#include ++ ++#if defined (CYASSL_CMSIS_RTOS) ++ #define os_dly_wait(t) osDelay(10*t) ++#endif ++ ++ ++/** KEIL-RL TCPnet ****/ ++/** TCPnet BSD socket does not have following functions. **/ ++ ++#if defined(CYASSL_KEIL_TCP_NET) ++char *inet_ntoa(struct in_addr in) ++{ ++ #define NAMESIZE 16 ++ static char name[NAMESIZE] ; ++ sprintf(name, "%d.%d.%d.%d", (in.s_addr>>24)&0xff, (in.s_addr>>16)&0xff, (in.s_addr>>8)&0xff, in.s_addr&0xff) ; ++ return name ; ++} ++ ++unsigned long inet_addr(const char *cp) ++{ ++ unsigned int a[4] ; unsigned long ret ; ++ sscanf(cp, "%d.%d.%d.%d", &a[0], &a[1], &a[2], &a[3]) ; ++ ret = ((a[3]<<24) + (a[2]<<16) + (a[1]<<8) + a[0]) ; ++ return(ret) ; ++} ++ ++ ++/*** tcp_connect is actually associated with following syassl_tcp_connect. ***/ ++int Cyassl_connect(int sd, const struct sockaddr* sa, int sz) ++{ ++ int ret = 0 ; ++ #if defined(CYASSL_KEIL_TCP_NET) ++ ++ SOCKADDR_IN addr ; ++ ++ addr = *(SOCKADDR_IN *)sa ; ++ ++ do { ++ #undef connect /* Go to KEIL TCPnet connect */ ++ ret = connect(sd, (SOCKADDR *)&addr, sizeof(addr)) ; ++ os_dly_wait(50); ++ } while(ret == SCK_EWOULDBLOCK) ; ++ #ifdef DEBUG_CYASSL ++ { ++ char msg[50] ; ++ sprintf(msg, "BSD Connect return code: %d\n", ret) ; ++ CYASSL_MSG(msg) ; ++ } ++ #endif ++ ++ #endif /* CYASSL_KEIL_TCP_NET */ ++ return(ret ) ; ++} ++ ++ ++int Cyassl_accept(int sd, struct sockaddr *addr, int *addrlen) ++{ ++ int ret = 0 ; ++ ++ #if defined(CYASSL_KEIL_TCP_NET) ++ while(1) { ++ #undef accept /* Go to KEIL TCPnet accept */ ++ ret = accept(sd, addr, addrlen) ; ++ if(ret != SCK_EWOULDBLOCK) break ; ++ os_dly_wait(1); ++ } ++ #ifdef DEBUG_CYASSL ++ { ++ char msg[50] ; ++ sprintf(msg, "BSD Accept return code: %d\n", ret) ; ++ CYASSL_MSG(msg) ; ++ } ++ #endif ++ ++ #endif /* CYASSL_KEIL_TCP_NET */ ++ return(ret ) ; ++ ++} ++ ++int Cyassl_recv(int sd, void *buf, size_t len, int flags) ++{ ++ int ret = 0; ++ #if defined(CYASSL_KEIL_TCP_NET) ++ while(1) { ++ #undef recv /* Go to KEIL TCPnet recv */ ++ ret = recv(sd, buf, len, flags) ; ++ if((ret != SCK_EWOULDBLOCK) &&( ret != SCK_ETIMEOUT)) break ; ++ os_dly_wait(1); ++ } ++ #ifdef DEBUG_CYASSL ++ { ++ char msg[50] ; ++ sprintf(msg, "BSD Recv return code: %d\n", ret) ; ++ CYASSL_MSG(msg) ; ++ } ++ #endif ++ ++ #endif /* CYASSL_KEIL_TCP_NET */ ++ return(ret ) ; ++} ++ ++int Cyassl_send(int sd, const void *buf, size_t len, int flags) ++{ ++ int ret = 0 ; ++ ++ #if defined(CYASSL_KEIL_TCP_NET) ++ while(1) { ++ #undef send /* Go to KEIL TCPnet send */ ++ ret = send(sd, buf, len, flags) ; ++ if(ret != SCK_EWOULDBLOCK) break ; ++ os_dly_wait(1); ++ } ++ #ifdef DEBUG_CYASSL ++ { ++ char msg[50] ; ++ sprintf(msg, "BSD Send return code: %d\n", ret) ; ++ CYASSL_MSG(msg) ; ++ } ++ #endif ++ ++#endif /* CYASSL_KEIL_TCP_NET */ ++ return(ret) ; ++ ++} ++ ++#endif /* CYASSL_KEIL_TCP_NET */ ++ ++#if defined(CYASSL_KEIL_TCP_NET) ++void Cyassl_sleep(int t) ++{ ++ #if defined(HAVE_KEIL_RTX) ++ os_dly_wait(t/1000+1) ; ++ #endif ++} ++ ++int Cyassl_tcp_select(int sd, int timeout) ++{ ++ ++ return 0 ; ++ ++} ++#endif ++ ++extern int strlen(const char *s) ; ++ ++FILE * CyaSSL_fopen(const char *name, const char *openmode) ++{ ++ int i ; FILE * ret ; ++ #define PATHSIZE 100 ++ char path[PATHSIZE] ; char *p ; ++ ++ if(strlen(name) > PATHSIZE)return(NULL) ; ++ ++ for(i = 0; i<= strlen(name); i++) { ++ if(name[i] == '/')path[i] = '\\' ; ++ else path[i] = name[i] ; ++ } ++ if(path[0] == '.' && path[1] == '\\') p = path + 2 ; ++ else p = path ; ++ ++ ret = fopen (p, openmode) ; ++ ++ return(ret) ; ++} ++ ++#if defined (CYASSL_MDK5) ++#define getkey getchar ++#define sendchar putchar ++#else ++extern int getkey(void) ; ++extern int sendchar(int c) ; ++#endif ++ ++char * Cyassl_fgets ( char * str, int num, FILE * f ) ++{ ++ int i ; ++ ++ for(i = 0 ; i< num ; i++) { ++ while((str[i] = getkey()) == 0) { ++ #if defined (HAVE_KEIL_RTX) ++ #if !defined(CYASSL_CMSIS_RTOS) ++ os_tsk_pass (); ++ #else ++ osThreadYield (); ++ #endif ++ #endif ++ } ++ if(str[i] == '\n' || str[i] == '\012' || str[i] == '\015') { ++ sendchar('\n') ; ++ str[i++] = '\n' ; ++ str[i] = '\0' ; ++ break ; ++ } else if(str[i] == '\010') { /* BS */ ++ if(i) { /* erace one char */ ++ sendchar('\010') ; sendchar(' ') ; sendchar('\010') ; ++ i = (i>0 ? (i-2) : -1 ) ; ++ continue ; ++ } ++ } else if(str[i] == '\033' || str[i] == '\004' ) { /* ESC or ^D */ ++ str[i] = '\0' ; ++ return(0) ; ++ } ++ sendchar(str[i]) ; ++ } ++ return(str) ; ++} +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/cyassl_MDK_ARM.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/cyassl_MDK_ARM.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/cyassl_MDK_ARM.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/cyassl_MDK_ARM.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,103 @@ ++/* cyassl_KEIL_RL.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++/******************************************************************************/ ++/** This file is for defining types, values for specific to KEIL-MDK-ARM. **/ ++/******************************************************************************/ ++#ifndef CYASSL_KEIL_RL_H ++#define CYASSL_KEIL_RL_H ++ ++ ++ ++#include ++ ++/* Go to STDIN */ ++#define fgets(buff, sz, fd) Cyassl_fgets(buff, sz, fd) ++extern char * Cyassl_fgets ( char * str, int num, FILE * f ) ; ++ ++#define SOCKET_T int ++ ++/*** #include ***/ ++#define NUMBITSPERBYTE 8 ++#define FD_SETSIZE 10 ++ ++typedef long fd_mask; ++#define NFDBITS (sizeof(fd_mask) * NUMBITSPERBYTE) /* bits per mask */ ++ ++typedef struct fd_set { ++ fd_mask fds_bits[(FD_SETSIZE + NFDBITS - 1) / NFDBITS]; ++} fd_set; ++ ++/*** #include ***/ ++struct timeval { ++ long tv_sec; /* seconds */ ++ long tv_usec; /* microseconds */ ++}; ++ ++ ++/*** #include **/ ++/* ++ int select(int nfds, fd_set *readfds, fd_set *writefds, ++ fd_set *exceptfds, const struct timeval *timeout); ++ void FD_CLR(int fd, fd_set *set); ++ int FD_ISSET(int fd, fd_set *set); ++ void FD_SET(int fd, fd_set *set); ++ void FD_ZERO(fd_set *set); ++*/ ++typedef int socklen_t ; ++ ++/* for avoiding conflict with KEIL-TCPnet BSD socket */ ++/* Bodies are in cyassl_KEIL_RL.c */ ++#define connect Cyassl_connect ++#define accept Cyassl_accept ++#define recv Cyassl_recv ++#define send Cyassl_send ++#define sleep Cyassl_sleep ++ ++/* for avoiding conflicting with KEIL-TCPnet TCP socket */ ++/* Bodies are in test.h */ ++#define tcp_connect Cyassl_tcp_connect ++#define tcp_socket Cyassl_tcp_soket ++#define tcp_listen Cyassl_tcp_listen ++#define tcp_select Cyassl_tcp_select ++ ++extern int Cyassl_connect(int sd, const struct sockaddr * sa, int sz) ; ++extern int Cyassl_accept(int sd, struct sockaddr *addr, socklen_t *addrlen); ++extern int Cyassl_recv(int sd, void *buf, size_t len, int flags); ++extern int Cyassl_send(int sd, const void *buf, size_t len, int flags); ++extern void Cyassl_sleep(int sec) ; ++extern int Cyassl_tcp_select(int sd, int timeout) ; ++ ++/** KEIL-RL TCPnet ****/ ++/* TCPnet BSD socket does not have following functions. */ ++extern char *inet_ntoa(struct in_addr in); ++extern unsigned long inet_addr(const char *cp); ++extern int setsockopt(int sockfd, int level, int optname, ++ const void *optval, socklen_t optlen); ++extern int select(int nfds, fd_set *readfds, fd_set *writefds, ++ fd_set *exceptfds, const struct timeval *timeout); ++ ++/* CyaSSL MDK-ARM time functions */ ++#include ++struct tm *Cyassl_MDK_gmtime(const time_t *c) ; ++extern double current_time(void) ; ++ ++#endif /* CYASSL_KEIL_RL_H */ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/main.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/main.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/main.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/main.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,172 @@ ++/* main.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++#include ++ ++#include ++#include ++#include "cyassl_MDK_ARM.h" ++ ++/*----------------------------------------------------------------------------- ++ * Initialize a Flash Memory Card ++ *----------------------------------------------------------------------------*/ ++#if !defined(NO_FILESYSTEM) ++static void init_card (void) ++{ ++ U32 retv; ++ ++ while ((retv = finit (NULL)) != 0) { /* Wait until the Card is ready */ ++ if (retv == 1) { ++ printf ("\nSD/MMC Init Failed"); ++ printf ("\nInsert Memory card and press key...\n"); ++ } else { ++ printf ("\nSD/MMC Card is Unformatted"); ++ } ++ } ++} ++#endif ++ ++ ++/*----------------------------------------------------------------------------- ++ * TCP/IP tasks ++ *----------------------------------------------------------------------------*/ ++#ifdef CYASSL_KEIL_TCP_NET ++__task void tcp_tick (void) ++{ ++ ++ CYASSL_MSG("Time tick started.") ; ++ #if defined (HAVE_KEIL_RTX) ++ os_itv_set (10); ++ #endif ++ ++ while (1) { ++ #if defined (HAVE_KEIL_RTX) ++ os_itv_wait (); ++ #endif ++ /* Timer tick every 100 ms */ ++ timer_tick (); ++ } ++} ++ ++__task void tcp_poll (void) ++{ ++ CYASSL_MSG("TCP polling started.\n") ; ++ while (1) { ++ main_TcpNet (); ++ #if defined (HAVE_KEIL_RTX) ++ os_tsk_pass (); ++ #endif ++ } ++} ++#endif ++ ++#if defined(HAVE_KEIL_RTX) && defined(CYASSL_MDK_SHELL) ++#define SHELL_STACKSIZE 1000 ++static unsigned char Shell_stack[SHELL_STACKSIZE] ; ++#endif ++ ++ ++#if defined(CYASSL_MDK_SHELL) ++extern void shell_main(void) ; ++#endif ++ ++extern void time_main(int) ; ++extern void benchmark_test(void) ; ++extern void SER_Init(void) ; ++ ++/*----------------------------------------------------------------------------- ++ * mian entry ++ *----------------------------------------------------------------------------*/ ++ ++/*** This is the parent task entry ***/ ++void main_task (void) ++{ ++ #ifdef CYASSL_KEIL_TCP_NET ++ init_TcpNet (); ++ ++ os_tsk_create (tcp_tick, 2); ++ os_tsk_create (tcp_poll, 1); ++ #endif ++ ++ #ifdef CYASSL_MDK_SHELL ++ #ifdef HAVE_KEIL_RTX ++ os_tsk_create_user(shell_main, 1, Shell_stack, SHELL_STACKSIZE) ; ++ #else ++ shell_main() ; ++ #endif ++ #else ++ ++ /************************************/ ++ /*** USER APPLICATION HERE ***/ ++ /************************************/ ++ printf("USER LOGIC STARTED\n") ; ++ ++ #endif ++ ++ #ifdef HAVE_KEIL_RTX ++ CYASSL_MSG("Terminating tcp_main\n") ; ++ os_tsk_delete_self (); ++ #endif ++ ++} ++ ++ ++ int myoptind = 0; ++ char* myoptarg = NULL; ++ ++#if defined(DEBUG_CYASSL) ++ extern void CyaSSL_Debugging_ON(void) ; ++#endif ++ ++ ++/*** main entry ***/ ++extern void init_time(void) ; ++extern void SystemInit(void); ++ ++int main() { ++ ++ SystemInit(); ++ SER_Init() ; ++ #if !defined(NO_FILESYSTEM) ++ init_card () ; /* initializing SD card */ ++ #endif ++ ++ init_time() ; ++ ++ #if defined(DEBUG_CYASSL) ++ printf("Turning ON Debug message\n") ; ++ CyaSSL_Debugging_ON() ; ++ #endif ++ ++ #ifdef HAVE_KEIL_RTX ++ os_sys_init (main_task) ; ++ #else ++ main_task() ; ++ #endif ++ ++ return 0 ; /* There should be no return here */ ++ ++} +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/shell.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/shell.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/shell.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/shell.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,595 @@ ++/*shell.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++ /*** tiny Shell for CyaSSL apps ***/ ++ ++ #ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include "cyassl/internal.h" ++#undef RNG ++#include ++ ++#if defined(CYASSL_MDK_ARM) ++ #include ++ #include ++ #include ++ #include ++ #include "cyassl_MDK_ARM.h" ++#endif ++ ++#ifdef CYASSL_KEIL_NET ++#include "cyassl/test.h" ++#else ++typedef struct func_args { ++ int argc; ++ char** argv; ++ int return_code; ++} func_args; ++#endif ++ ++#ifdef NO_ECHOCLIENT ++#define echoclient_test command_not_found ++#endif ++#ifdef NO_ECHOSERVER ++#define echoserver_test command_not_found ++#endif ++#ifdef NO_SIMPLE_CLIENT ++#define client_test command_not_found ++#endif ++#ifdef NO_SIMPLE_SERVER ++#define server_test command_not_found ++#endif ++#ifdef NO_CRYPT_BENCHMARK ++#define benchmark_test command_not_found ++#endif ++#ifdef NO_CRYPT_TEST ++#define ctaocrypt_test command_not_found ++#endif ++ ++#ifndef CYASSL_KEIL_NET ++#define ipaddr_comm command_not_found ++#endif ++ ++#if !defined(HAVE_KEIL_RTX) ++#define stack_comm command_not_found ++#endif ++ ++ ++#if !defined(DEBUG_CYASSL) ++#define dbg_comm command_not_found ++#endif ++ ++ ++void command_not_found(void *argv) { ++ printf("Command not found\n") ; ++} ++ ++extern void echoclient_test(void *args) ; ++extern void echoserver_test(void *args) ; ++extern void benchmark_test(void *args) ; ++extern void ctaocrypt_test(void *args) ; ++extern void client_test(void *args) ; ++extern void server_test(void *args) ; ++extern void kill_task(void *args) ; ++extern void time_main(void *args) ; ++extern void ipaddr_comm(void *args) ; ++extern void stack_comm(void *args) ; ++extern void for_command(void *args) ; ++extern void dbg_comm(void *arg) ; ++extern void help_comm(void *arg) ; ++ ++#if !defined(NO_CRYPT_TEST) ++ ++#ifndef NO_MD5 ++extern void md5_test(void *arg) ; ++#endif ++#ifdef CYASSL_MD2 ++extern void md2_test(void *arg) ; ++#endif ++#ifndef NO_MD4 ++extern void md4_test(void *arg) ; ++#endif ++ ++extern void sha_test(void *arg) ; ++ ++#ifndef NO_SHA256 ++extern void sha256_test(void *arg) ; ++#endif ++#ifdef CYASSL_SHA384 ++extern void sha384_test(void *arg) ; ++#endif ++ ++#ifdef CYASSL_SHA512 ++extern void sha512_test(void *arg) ; ++#endif ++ ++#ifdef CYASSL_RIPEMD ++extern void ripemd_test(void *arg) ; ++#endif ++#ifndef NO_HMAC ++ #ifndef NO_MD5 ++extern void hmac_md5_test(void *arg) ; ++ #endif ++extern void hmac_sha_test(void *arg) ; ++ ++ #ifndef NO_SHA256 ++extern void hmac_sha256_test(void *arg) ; ++ #endif ++ ++ #ifdef CYASSL_SHA384 ++extern void hmac_sha384_test(void *arg) ; ++ #endif ++#endif ++#ifndef NO_RC4 ++extern void arc4_test(void *arg) ; ++#endif ++ ++#ifndef NO_HC128 ++extern void hc128_test(void *arg) ; ++#endif ++ ++#ifndef NO_RABBIT ++extern void rabbit_test(void *arg) ; ++#endif ++ ++#ifndef NO_DES3 ++extern void des_test(void *arg) ; ++extern void des3_test(void *arg) ; ++#endif ++ ++#ifndef NO_AES ++extern void aes_test(void *arg) ; ++#ifdef HAVE_AESGCM ++extern void aesgcm_test(void *arg) ; ++#endif ++ ++#ifdef HAVE_AESCCM ++extern void aesccm_test(void *arg) ; ++#endif ++#endif ++ ++#ifdef HAVE_CAMELLIA ++extern void camellia_test(void *arg) ; ++#endif ++extern void random_test(void *arg) ; ++ ++#ifndef NO_RSA ++extern void rsa_test(void *arg) ; ++#endif ++ ++#ifndef NO_DH ++extern void dh_test(void *arg) ; ++#endif ++ ++#ifndef NO_DSA ++extern void dsa_test(void *arg) ; ++#endif ++ ++#ifndef NO_PWDBASED ++extern void pwdbased_test(void *arg) ; ++#endif ++ ++#ifdef HAVE_ECC ++extern void openssl_test(void *arg) ; ++#endif ++ ++#ifdef HAVE_ECC ++extern void ecc_test(void *arg) ; ++#endif ++ ++#endif /* NO_CRYPT_TEST */ ++ ++static struct { ++ const char *command ; ++ void (*func)(void *args) ; ++} commandTable[] = { ++ "echoclient", echoclient_test, ++ "echoserver", echoserver_test, ++ "benchmark", benchmark_test, ++ "test", ctaocrypt_test, ++ "client", client_test, ++ "server", server_test, ++ "time", time_main, /* get/set RTC: [-d yy/mm/dd] [-t hh:mm:ss]*/ ++ "ipaddr", ipaddr_comm, /* TBD */ ++ "stack", stack_comm, /* On/Off check stack size */ ++ "for", for_command, /* iterate next command X times */ ++ "debug", dbg_comm, /* On/Off debug message */ ++ "help", help_comm, /* Breif description about the commands */ ++ ++ /** short name **/ ++ "ec", echoclient_test, ++ "es", echoserver_test, ++ "bm", benchmark_test, ++ "te", ctaocrypt_test, ++ "cl", client_test, ++ "sv", server_test, ++ "ip", ipaddr_comm, ++ "st", stack_comm, ++ "dbg", dbg_comm, ++ "?", help_comm, ++ ++/*** test suites ****/ ++#if !defined(NO_CRYPT_TEST) ++#ifndef NO_MD5 ++ "md5", md5_test, ++#endif ++#ifdef CYASSL_MD2 ++ "md2", md2_test, ++#endif ++#ifndef NO_MD4 ++ "md4", md4_test, ++#endif ++ "sha", sha_test, ++#ifndef NO_SHA256 ++ "sha256", sha256_test, ++#endif ++#ifdef CYASSL_SHA384 ++ "sha384", sha384_test, ++#endif ++#ifdef CYASSL_SHA512 ++ "sha512", sha512_test, ++#endif ++#ifdef CYASSL_RIPEMD ++ "ripemd", ripemd_test, ++#endif ++#ifndef NO_HMAC ++ #ifndef NO_MD5 ++ "hmac_md5", hmac_md5_test, ++ #endif ++ "hmac_sha", hmac_sha_test, ++ #ifndef NO_SHA256 ++ "hmac_sha256", hmac_sha256_test, ++ #endif ++ #ifdef CYASSL_SHA384 ++ "hmac_sha384", hmac_sha384_test, ++ #endif ++#endif ++#ifndef NO_RC4 ++ "arc4", arc4_test, ++#endif ++#ifndef NO_HC128 ++ "hc128", hc128_test, ++#endif ++#ifndef NO_RABBIT ++ "rabbit", rabbit_test, ++#endif ++#ifndef NO_DES3 ++ "des", des_test, ++ "des3", des3_test, ++#endif ++#ifndef NO_AES ++ "aes", aes_test, ++ #ifdef HAVE_AESGCM ++ "aesgcm", aesgcm_test, ++ #endif ++ #ifdef HAVE_AESCCM ++ "aesccm", aesccm_test, ++ #endif ++#endif ++ ++#ifdef HAVE_CAMELLIA ++ "camellia", camellia_test, ++#endif ++ "random", random_test, ++#ifndef NO_RSA ++ "rsa", rsa_test, ++#endif ++#ifndef NO_DH ++ "dh", dh_test, ++#endif ++#ifndef NO_DSA ++ "dsa", dsa_test, ++#endif ++#ifndef NO_PWDBASED ++ "pwdbased", pwdbased_test, ++#endif ++#ifdef OPENSSL_EXTRA ++ "openssl", openssl_test, ++#endif ++#ifdef HAVE_ECC ++ "ecc", ecc_test, ++#endif ++ ++#endif /* NO_CRYPT_TEST */ ++ ++ "", NULL ++} ; ++ ++enum jobtype { FORGROUND, BACKGROUND } ; ++ ++#define IF_DELIMITER(ch) ((ch) == ' ' || (ch) == '\n') ++ ++/******* Get Command Line *****************************/ ++static int getline(char * line, int sz, func_args *args, int*bf_flg) ++{ ++ char * ret ; ++ int i ; ++ ++ #define MAXARGS 10 ++ #define MAXARGLEN 30 ++ static char *argv[MAXARGS] ; ++ args->argv = argv ; ++ ++ putchar('>') ; ++ fflush(stdout) ; ++ ret = fgets(line, sz, stdin) ; ++ #define SHELL_ERROR_FGETS -102 ++ if(ret != line) return(SHELL_ERROR_FGETS) ; ++ ++ if(line[strlen(line)-2] == '&') { ++ (*bf_flg) = BACKGROUND ; ++ line[strlen(line)-2] = '\n' ; ++ } else { ++ (*bf_flg) = FORGROUND ; ++ } ++ args->argc = 0 ; ++ for(i=0; iargv[args->argc] = &(line[i]) ; ++ while(!IF_DELIMITER(line[i])) i++ ; ++ args->argc++ ; ++ if(line[i] == '\n') { ++ line[i] = '\0' ; ++ break ; ++ } else { ++ line[i] = '\0' ; ++ } ++ } ++ return i ; ++} ++ ++static int BackGround = 0 ; /* 1: background job is running */ ++ ++/************* Embedded Shell Commands **********************************/ ++#define IP_SIZE 16 ++ ++#ifdef CYASSL_KEIL_NET ++static void ipaddr_comm(void *args) ++{ ++ if(((func_args *)args)->argc == 1) { ++ printf("IP addr: %s, port %d\n", yasslIP, yasslPort) ; ++ } else { ++ if(BackGround != 0) { ++ printf("Cannot change IP addr while background server is running\n") ; ++ } else if(((func_args *)args)->argc == 3 && ++ ((func_args *)args)->argv[1][0] == '-'&& ++ ((func_args *)args)->argv[1][1] == 'a' ) { ++/* strcpy(yasslIP, ((func_args *)args)->argv[2]) ; */ ++ } else if(((func_args *)args)->argc == 3 && ++ ((func_args *)args)->argv[1][0] == '-' && ++ ((func_args *)args)->argv[1][1] == 'p' ) { ++/* yasslPort = atoi(((func_args *)args)->argv[2]) ; */ ++ } else printf("Invalid argument\n") ; ++ } ++} ++ ++#endif ++ ++ ++ ++#if defined(HAVE_KEIL_RTX) ++static int stack_ck = 0 ; ++ ++static void stack_comm(void *args) ++{ ++ if(stack_ck) { ++ printf("Stack Check: Off\n") ; ++ stack_ck = 0 ; ++ } else { ++ printf("Stack Check: On\n") ; ++ stack_ck = 1 ; ++ } ++} ++ ++#define FILL_PATTERN 0xa596695a ++void stack_fill(char * stack, int size) ++{ ++ int i ; ++ ++ if(stack_ck == 0)return ; ++ for(i=1; iargc == 1) { ++ printf("For %d times\n", for_iteration) ; ++ } else if( args == NULL || ((func_args *)args)->argc == 2) { ++ for_iteration = atoi(((func_args *)args)->argv[1]) ; ++ } else printf("Invalid argument\n") ; ++} ++ ++ ++#if defined(DEBUG_CYASSL) ++ ++static int CyasslDebug = 1 ; ++ ++static void dbg_comm(void *args) ++{ ++ if(CyasslDebug == 1) { ++ CyasslDebug = 0 ; ++ printf("Turning OFF Debug message\n") ; ++ CyaSSL_Debugging_OFF() ; ++ } else { ++ CyasslDebug = 1 ; ++ printf("Turning ON Debug message\n") ; ++ CyaSSL_Debugging_ON() ; ++ } ++} ++#endif ++ ++static void help_comm(void *args) ++{ ++ ++} ++ ++ ++ ++#define BG_JOB_STACK_SIZE 12000 ++#if (!defined(NO_SIMPLE_SERVER) && !defined(NO_ECHOSERVER)) && \ ++ defined(HAVE_KEIL_RTX) ++static char bg_job_stack[BG_JOB_STACK_SIZE] ; ++#endif ++ ++#define COMMAND_STACK_SIZE 12000 ++#if defined(HAVE_KEIL_RTX) ++static char command_stack[COMMAND_STACK_SIZE] ; ++#endif ++ ++ ++#ifdef HAVE_KEIL_RTX ++static CyaSSL_Mutex command_mutex ; ++#endif ++ ++/*********** Invoke Forground Command *********************/ ++static void command_invoke(void *args) ++{ ++ void (*func)(void * ) ; ++ int i,iteration ; ++ ++ func = (void(*)(void *))((func_args *)args)->argv[0] ; ++ #ifdef HAVE_KEIL_RTX ++ LockMutex((CyaSSL_Mutex *)&command_mutex) ; ++ #endif ++ iteration = for_iteration ; ++ for(i=0; i< iteration; i++) { ++ if(iteration > 1) printf("--- Start for %d ---->\n", i) ; ++ #if defined(HAVE_KEIL_RTX) ++ stack_fill(command_stack, COMMAND_STACK_SIZE) ; ++ #endif ++ ++ func(args) ; /* invoke command */ ++ ++ #if defined(HAVE_KEIL_RTX) ++ stack_check(command_stack, COMMAND_STACK_SIZE) ; ++ #endif ++ } ++ if(iteration > 1) ++ for_iteration = 1 ; ++ #ifdef HAVE_KEIL_RTX ++ UnLockMutex((CyaSSL_Mutex *)&command_mutex) ; ++ os_tsk_delete_self() ; ++ #endif ++} ++ ++#if (!defined(NO_SIMPLE_SERVER) && !defined(NO_ECHOSERVER)) && \ ++ defined(HAVE_KEIL_RTX) ++/******* Invoke Background Job *******************************/ ++static void bg_job_invoke(void *args) ++{ ++ void (*func)(void * ) ; ++ BackGround = 1 ; ++ stack_fill(bg_job_stack, BG_JOB_STACK_SIZE) ; ++ func = (void(*)(void *))((func_args *)args)->argv[0] ; ++ func(args) ; /* invoke command */ ++ stack_check(bg_job_stack, BG_JOB_STACK_SIZE) ; ++ #ifdef CYASSL_KEIL_NET ++ init_TcpNet (); ++ #endif ++ BackGround = 0 ; ++ os_tsk_delete_self() ; ; ++} ++#endif ++ ++#define LINESIZE 100 ++static char line[LINESIZE] ; ++ ++ ++/********* SHEULL MAIN LOOP ***********************************/ ++void shell_main(void) { ++ int i ; ++ func_args args ; ++ int bf_flg ; ++ ++ i = BackGround ; ++ /* Dummy for avoiding warning: BackGround is defined but not used. */ ++ ++ ++ #if defined(HAVE_KEIL_RTX) ++ InitMutex(&command_mutex) ; ++#endif ++ time_main(NULL) ; ++ printf("Starting Shell\n") ; ++ while(1) { ++ if(getline(line, LINESIZE, &args, &bf_flg) > 0) { ++ for(i=0; commandTable[i].func != NULL; i++) { ++ if(strcmp(commandTable[i].command, args.argv[0]) == 0) { ++ args.argv[0] = (char *) commandTable[i].func ; ++ if(bf_flg == FORGROUND) { ++ #ifdef HAVE_KEIL_RTX ++ UnLockMutex((CyaSSL_Mutex *)&command_mutex) ; ++ os_tsk_create_user_ex( (void(*)(void *))&command_invoke, 7, ++ command_stack, COMMAND_STACK_SIZE, &args) ; ++ #else ++ command_invoke(&args) ; ++ #endif ++ #ifdef HAVE_KEIL_RTX ++ LockMutex((CyaSSL_Mutex *)&command_mutex) ; ++ #endif ++ } else { ++ #if (!defined(NO_SIMPLE_SERVER) && \ ++ !defined(NO_ECHOSERVER)) && \ ++ defined(HAVE_KEIL_RTX) ++ if(BackGround != 0) { ++ printf("Multiple background servers not supported.\n") ; ++ } else { ++ printf("\"%s\" is running with the background mode.\n", ++ commandTable[i].command) ; ++ os_tsk_create_user_ex( (void(*)(void *))&bg_job_invoke, ++ 6, bg_job_stack, BG_JOB_STACK_SIZE, &args) ; ++ } ++ #else ++ printf("Invalid Command: no background job\n") ; ++ #endif ++ } ++ break ; ++ } ++ } ++ if(commandTable[i].func == NULL) ++ printf("Command not found\n") ; ++ } ++ } ++} ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/ssl-dummy.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/ssl-dummy.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/ssl-dummy.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/MDK-ARM/CyaSSL/ssl-dummy.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,53 @@ ++/* ssl-dummy.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++#include ++#include ++#include ++ ++Signer* GetCA(void* vp, byte* hash) ++{ ++ Signer*s ; ++ return s ; ++} ++ ++int CyaSSL_dtls(CYASSL* ssl) ++{ ++ return ssl->options.dtls; ++} ++ ++int CyaSSL_get_using_nonblock(CYASSL* ssl) ++{ ++ CYASSL_ENTER("CyaSSL_get_using_nonblock"); ++ CYASSL_LEAVE("CyaSSL_get_using_nonblock", ssl->options.usingNonblock); ++ return ssl->options.usingNonblock; ++} ++ ++Signer* GetCAByName(void* vp, byte* hash) ++{ ++ Signer * ca ; ++ return(ca) ; ++} +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/Projects/MDK-ARM-LPC43xx.uvopt mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/Projects/MDK-ARM-LPC43xx.uvopt +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/Projects/MDK-ARM-LPC43xx.uvopt 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/Projects/MDK-ARM-LPC43xx.uvopt 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,1757 @@ ++ ++ ++ ++ 1.0 ++ ++
### uVision Project, (C) Keil Software
++ ++ ++ *.c ++ *.s*; *.src; *.a* ++ *.obj ++ *.lib ++ *.txt; *.h; *.inc ++ *.plm ++ *.cpp ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ MDK-RTX-TCP-FS ++ 0x4 ++ ARM-ADS ++ ++ 12000000 ++ ++ 1 ++ 0 ++ 1 ++ 0 ++ ++ ++ 1 ++ 65535 ++ 0 ++ 0 ++ 0 ++ ++ ++ 79 ++ 66 ++ 8 ++ .\Lst\ ++ ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ ++ ++ 1 ++ 0 ++ 1 ++ ++ 8 ++ ++ SARMCM3.DLL ++ -MPU ++ DCM.DLL ++ -pCM4 ++ SARMCM3.DLL ++ -MPU ++ TCM.DLL ++ -pCM4 ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 9 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ..\MDK-ARM\config\Dbg_Flash.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ 0 ++ DLGTARM ++ (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) ++ ++ ++ 0 ++ ARMDBGFLAGS ++ ++ ++ ++ 0 ++ DLGUARM ++ ++ ++ ++ 0 ++ ULP2CM3 ++ -UP1135060 -O974 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO23 -TC10000000 -TP18 -TDX0 -TDD0 -TDS7 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD10000000 -FC800 -FN2 -FF0LPC18xx43xx_512_BA -FS01A000000 -FL080000 -FF1LPC18xx43xx_512_BB -FS11B000000 -FL180000 ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0x10005960 ++ ++ ++ ++ ++ 0 ++ Reset Peripherals ++ Per_Reset() ++ ++ ++ ++ 0 ++ ++ ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ MDK-FS ++ 0x4 ++ ARM-ADS ++ ++ 12000000 ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ ++ ++ 1 ++ 65535 ++ 0 ++ 0 ++ 0 ++ ++ ++ 79 ++ 66 ++ 8 ++ .\Lst\ ++ ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ ++ ++ 1 ++ 0 ++ 0 ++ ++ 8 ++ ++ SARMCM3.DLL ++ -MPU ++ DCM.DLL ++ -pCM4 ++ SARMCM3.DLL ++ -MPU ++ TCM.DLL ++ -pCM4 ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 9 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ..\MDK-ARM\config\Dbg_Flash.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ 0 ++ DLGTARM ++ (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) ++ ++ ++ 0 ++ ARMDBGFLAGS ++ ++ ++ ++ 0 ++ DLGUARM ++ ++ ++ ++ 0 ++ ULP2CM3 ++ -UP1135060 -O974 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO23 -TC10000000 -TP18 -TDX0 -TDD0 -TDS7 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD10000000 -FC800 -FN2 -FF0LPC18xx43xx_512_BA -FS01A000000 -FL080000 -FF1LPC18xx43xx_512_BB -FS11B000000 -FL180000 ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0x10005960 ++ ++ ++ ++ ++ 0 ++ Reset Peripherals ++ Per_Reset() ++ ++ ++ ++ 0 ++ ++ ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ MDK-BARE-METAL ++ 0x4 ++ ARM-ADS ++ ++ 12000000 ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ ++ ++ 1 ++ 65535 ++ 0 ++ 0 ++ 0 ++ ++ ++ 79 ++ 66 ++ 8 ++ .\Lst\ ++ ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ ++ ++ 1 ++ 0 ++ 0 ++ ++ 8 ++ ++ SARMCM3.DLL ++ -MPU ++ DCM.DLL ++ -pCM4 ++ SARMCM3.DLL ++ -MPU ++ TCM.DLL ++ -pCM4 ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 9 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ..\MDK-ARM\config\Dbg_Flash.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ 0 ++ DLGTARM ++ (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) ++ ++ ++ 0 ++ ARMDBGFLAGS ++ ++ ++ ++ 0 ++ DLGUARM ++ ++ ++ ++ 0 ++ ULP2CM3 ++ -UP1135060 -O975 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO23 -TC120000000 -TP18 -TDX0 -TDD0 -TDS7 -TDT0 -TDC1F -TIEFFFFFFFF -TIP9 -FO7 -FD10000000 -FC800 -FN2 -FF0LPC18xx43xx_512_BA -FS01A000000 -FL080000 -FF1LPC18xx43xx_512_BB -FS11B000000 -FL180000 ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0x10005960 ++ ++ ++ ++ ++ 0 ++ Reset Peripherals ++ Per_Reset() ++ ++ ++ ++ 0 ++ ++ ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ CyaSSL Apps ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\examples\echoclient\echoclient.c ++ echoclient.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 2 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\examples\echoserver\echoserver.c ++ echoserver.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 3 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\test\test.c ++ test.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 4 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\benchmark\benchmark.c ++ benchmark.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 5 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\examples\client\client.c ++ client.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 6 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\examples\server\server.c ++ server.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 7 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\shell.c ++ shell.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 8 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\main.c ++ main.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 9 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\cert_data.c ++ cert_data.c ++ 0 ++ 0 ++ ++ ++ ++ ++ LPC43xx ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 2 ++ 10 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\LPC43xx\Drivers\source\lpc43xx_rtc.c ++ lpc43xx_rtc.c ++ 0 ++ 0 ++ ++ ++ 2 ++ 11 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\LPC43xx\Drivers\source\lpc43xx_timer.c ++ lpc43xx_timer.c ++ 0 ++ 0 ++ ++ ++ 2 ++ 12 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\LPC43xx\Drivers\source\lpc43xx_cgu.c ++ lpc43xx_cgu.c ++ 0 ++ 0 ++ ++ ++ 2 ++ 13 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\LPC43xx\Drivers\source\lpc43xx_scu.c ++ lpc43xx_scu.c ++ 0 ++ 0 ++ ++ ++ ++ ++ MDK-ARM ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 3 ++ 14 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ c:\Keil\ARM\RV31\LIB\FS_CM3.lib ++ FS_CM3.lib ++ 0 ++ 0 ++ ++ ++ 3 ++ 15 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ c:\Keil\ARM\RV31\LIB\\RTX_CM3.lib ++ RTX_CM3.lib ++ 0 ++ 0 ++ ++ ++ 3 ++ 16 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ c:\Keil\ARM\RV31\LIB\TCPD_CM3.lib ++ TCPD_CM3.lib ++ 0 ++ 0 ++ ++ ++ 3 ++ 17 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ c:\Keil\ARM\RV31\LIB\TCP_CM3.lib ++ TCP_CM3.lib ++ 0 ++ 0 ++ ++ ++ 3 ++ 18 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil\ARM\Boards\Keil\MCB4300\RL\FlashFS\SD_File\Serial.c ++ Serial.c ++ 0 ++ 0 ++ ++ ++ 3 ++ 19 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil\ARM\RL\TCPnet\Drivers\ETH_LPC43xx.c ++ ETH_LPC43xx.c ++ 0 ++ 0 ++ ++ ++ 3 ++ 20 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil\ARM\Boards\Keil\MCB4300\RL\FlashFS\SD_File\SDIO_LPC43xx.c ++ SDIO_LPC43xx.c ++ 0 ++ 0 ++ ++ ++ 3 ++ 21 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil\ARM\Boards\Keil\MCB4300\RL\FlashFS\SD_File\system_LPC43xx.c ++ system_LPC43xx.c ++ 0 ++ 0 ++ ++ ++ ++ ++ CyaSSL Library ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ 4 ++ 22 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\src\crl.c ++ crl.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 23 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\src\internal.c ++ internal.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 24 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\src\io.c ++ io.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 25 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\src\keys.c ++ keys.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 26 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\src\ocsp.c ++ ocsp.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 27 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\src\sniffer.c ++ sniffer.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 28 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\src\ssl.c ++ ssl.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 29 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\src\tls.c ++ tls.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 30 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\ssl-dummy.c ++ ssl-dummy.c ++ 0 ++ 0 ++ ++ ++ ++ ++ Crypt/Cipher Library ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 5 ++ 31 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\aes.c ++ aes.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 32 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\arc4.c ++ arc4.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 33 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\asm.c ++ asm.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 34 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\asn.c ++ asn.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 35 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\camellia.c ++ camellia.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 36 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\coding.c ++ coding.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 37 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\des3.c ++ des3.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 38 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\dh.c ++ dh.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 39 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\dsa.c ++ dsa.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 40 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\ecc.c ++ ecc.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 41 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\ecc_fp.c ++ ecc_fp.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 42 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\error.c ++ error.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 43 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\hc128.c ++ hc128.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 44 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\hmac.c ++ hmac.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 45 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\integer.c ++ integer.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 46 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\logging.c ++ logging.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 47 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\md2.c ++ md2.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 48 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\md4.c ++ md4.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 49 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\md5.c ++ md5.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 50 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\memory.c ++ memory.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 51 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\misc.c ++ misc.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 52 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\pwdbased.c ++ pwdbased.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 53 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\rabbit.c ++ rabbit.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 54 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\random.c ++ random.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 55 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\ripemd.c ++ ripemd.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 56 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\rsa.c ++ rsa.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 57 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\sha.c ++ sha.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 58 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\sha256.c ++ sha256.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 59 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\sha512.c ++ sha512.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 60 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\tfm.c ++ tfm.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 61 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\wc_port.c ++ wc_port.c ++ 0 ++ 0 ++ ++ ++ ++ ++ Configuration ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 6 ++ 62 ++ 1 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\config\File_Config.c ++ File_Config.c ++ 0 ++ 0 ++ ++ ++ 6 ++ 63 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\config\Net_Config.c ++ Net_Config.c ++ 0 ++ 0 ++ ++ ++ 6 ++ 64 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\config.h ++ config.h ++ 0 ++ 0 ++ ++ ++ 6 ++ 65 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\config\RTX_Conf_CM.c ++ RTX_Conf_CM.c ++ 0 ++ 0 ++ ++ ++ 6 ++ 66 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\config\Net_Debug.c ++ Net_Debug.c ++ 0 ++ 0 ++ ++ ++ 6 ++ 67 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\config-FS.h ++ config-FS.h ++ 0 ++ 0 ++ ++ ++ 6 ++ 68 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\config-RTX-TCP-FS.h ++ config-RTX-TCP-FS.h ++ 0 ++ 0 ++ ++ ++ 6 ++ 69 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\config-BARE-METAL.h ++ config-BARE-METAL.h ++ 0 ++ 0 ++ ++ ++ 6 ++ 70 ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\LPC43xx\startup_LPC43xx.s ++ startup_LPC43xx.s ++ 0 ++ 0 ++ ++ ++ ++ ++ CyaSSL-MDK ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 7 ++ 71 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\cyassl_MDK_ARM.c ++ cyassl_MDK_ARM.c ++ 0 ++ 0 ++ ++ ++ 7 ++ 72 ++ 1 ++ 0 ++ 0 ++ 8 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\Retarget.c ++ Retarget.c ++ 0 ++ 0 ++ ++ ++ 7 ++ 73 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\LPC43xx\time-LCP43xx.c ++ time-LCP43xx.c ++ 0 ++ 0 ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/Projects/MDK-ARM-LPC43xx.uvproj mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/Projects/MDK-ARM-LPC43xx.uvproj +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/Projects/MDK-ARM-LPC43xx.uvproj 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/Projects/MDK-ARM-LPC43xx.uvproj 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,3510 @@ ++ ++ ++ ++ 1.1 ++ ++
### uVision Project, (C) Keil Software
++ ++ ++ ++ MDK-RTX-TCP-FS ++ 0x4 ++ ARM-ADS ++ ++ ++ LPC4357 ++ NXP (founded by Philips) ++ IRAM(0x10000000-0x10007FFF) IRAM2(0x20000000-0x2000FFFF) IROM(0x1A000000-0x1A07FFFF) IROM2(0x1B000000-0x1B07FFFF) CLOCK(12000000) CPUTYPE("Cortex-M4") FPU2 ++ ++ "STARTUP\NXP\LPC43xx\startup_LPC43xx.s" ("NXP LPC43xx Startup Code") ++ UL2CM3(-O975 -S0 -C0 -FO7 -FD10000000 -FC800 -FN2 -FF0LPC18xx43xx_512_BA -FS01A000000 -FL080000 -FF1LPC18xx43xx_512_BB -FS11B000000 -FL180000) ++ 6414 ++ LPC43xx.H ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ SFD\NXP\LPC43xx\LPC43xx.SFR ++ 0 ++ ++ ++ ++ NXP\LPC43xx\ ++ NXP\LPC43xx\ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ .\MDK-RTX-TCP-FS\ ++ LCP43xx-MDK-RTX-TCP-FS ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ .\Lst\ ++ 1 ++ 0 ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 1 ++ 0 ++ $K\ARM\BIN\ElfDwT.exe !L BASEADDRESS(0x1A000000) ++ ++ 0 ++ 0 ++ ++ 0 ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 3 ++ ++ ++ ++ ++ SARMCM3.DLL ++ -MPU ++ DCM.DLL ++ -pCM4 ++ SARMCM3.DLL ++ -MPU ++ TCM.DLL ++ -pCM4 ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 16 ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ ++ ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ ++ 0 ++ 9 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ..\MDK-ARM\config\Dbg_Flash.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 4100 ++ ++ 0 ++ BIN\ULP2CM3.DLL ++ "" () ++ ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ "Cortex-M4" ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 8 ++ 0 ++ 0 ++ 0 ++ 3 ++ 3 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x10000000 ++ 0x8000 ++ ++ ++ 1 ++ 0x1a000000 ++ 0x80000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x1a000000 ++ 0x80000 ++ ++ ++ 1 ++ 0x1b000000 ++ 0x80000 ++ ++ ++ 0 ++ 0x10080000 ++ 0xa000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x10000000 ++ 0x8000 ++ ++ ++ 0 ++ 0x20000000 ++ 0x10000 ++ ++ ++ ++ ++ ++ 1 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ HAVE_CONFIG_H CYASSL_LPC43xx __DBG_ITM CORE_M4 __RTX USE_STDPERIPH_DRIVER MDK_CONF_RTX_TCP_FS ++ ++ ..\MDK-ARM\CyaSSL;../../..;..\LPC43xx\Drivers\include;..\LPC43xx\LPC43xx\Include ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CyaSSL Apps ++ ++ ++ echoclient.c ++ 1 ++ ..\..\..\examples\echoclient\echoclient.c ++ ++ ++ echoserver.c ++ 1 ++ ..\..\..\examples\echoserver\echoserver.c ++ ++ ++ test.c ++ 1 ++ ..\..\..\ctaocrypt\test\test.c ++ ++ ++ benchmark.c ++ 1 ++ ..\..\..\ctaocrypt\benchmark\benchmark.c ++ ++ ++ client.c ++ 1 ++ ..\..\..\examples\client\client.c ++ ++ ++ server.c ++ 1 ++ ..\..\..\examples\server\server.c ++ ++ ++ shell.c ++ 1 ++ ..\MDK-ARM\CyaSSL\shell.c ++ ++ ++ main.c ++ 1 ++ ..\MDK-ARM\CyaSSL\main.c ++ ++ ++ cert_data.c ++ 1 ++ ..\MDK-ARM\CyaSSL\cert_data.c ++ ++ ++ ++ ++ LPC43xx ++ ++ ++ lpc43xx_rtc.c ++ 1 ++ ..\LPC43xx\Drivers\source\lpc43xx_rtc.c ++ ++ ++ lpc43xx_timer.c ++ 1 ++ ..\LPC43xx\Drivers\source\lpc43xx_timer.c ++ ++ ++ lpc43xx_cgu.c ++ 1 ++ ..\LPC43xx\Drivers\source\lpc43xx_cgu.c ++ ++ ++ lpc43xx_scu.c ++ 1 ++ ..\LPC43xx\Drivers\source\lpc43xx_scu.c ++ ++ ++ ++ ++ MDK-ARM ++ ++ ++ FS_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\FS_CM3.lib ++ ++ ++ RTX_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\\RTX_CM3.lib ++ ++ ++ TCPD_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\TCPD_CM3.lib ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ ++ ++ TCP_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\TCP_CM3.lib ++ ++ ++ Serial.c ++ 1 ++ C:\Keil\ARM\Boards\Keil\MCB4300\RL\FlashFS\SD_File\Serial.c ++ ++ ++ ETH_LPC43xx.c ++ 1 ++ C:\Keil\ARM\RL\TCPnet\Drivers\ETH_LPC43xx.c ++ ++ ++ SDIO_LPC43xx.c ++ 1 ++ C:\Keil\ARM\Boards\Keil\MCB4300\RL\FlashFS\SD_File\SDIO_LPC43xx.c ++ ++ ++ system_LPC43xx.c ++ 1 ++ C:\Keil\ARM\Boards\Keil\MCB4300\RL\FlashFS\SD_File\system_LPC43xx.c ++ ++ ++ ++ ++ CyaSSL Library ++ ++ ++ crl.c ++ 1 ++ ..\..\..\src\crl.c ++ ++ ++ internal.c ++ 1 ++ ..\..\..\src\internal.c ++ ++ ++ io.c ++ 1 ++ ..\..\..\src\io.c ++ ++ ++ keys.c ++ 1 ++ ..\..\..\src\keys.c ++ ++ ++ ocsp.c ++ 1 ++ ..\..\..\src\ocsp.c ++ ++ ++ sniffer.c ++ 1 ++ ..\..\..\src\sniffer.c ++ ++ ++ ssl.c ++ 1 ++ ..\..\..\src\ssl.c ++ ++ ++ tls.c ++ 1 ++ ..\..\..\src\tls.c ++ ++ ++ ssl-dummy.c ++ 1 ++ ..\MDK-ARM\CyaSSL\ssl-dummy.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Crypt/Cipher Library ++ ++ ++ aes.c ++ 1 ++ ..\..\..\ctaocrypt\src\aes.c ++ ++ ++ arc4.c ++ 1 ++ ..\..\..\ctaocrypt\src\arc4.c ++ ++ ++ asm.c ++ 1 ++ ..\..\..\ctaocrypt\src\asm.c ++ ++ ++ asn.c ++ 1 ++ ..\..\..\ctaocrypt\src\asn.c ++ ++ ++ camellia.c ++ 1 ++ ..\..\..\ctaocrypt\src\camellia.c ++ ++ ++ coding.c ++ 1 ++ ..\..\..\ctaocrypt\src\coding.c ++ ++ ++ des3.c ++ 1 ++ ..\..\..\ctaocrypt\src\des3.c ++ ++ ++ dh.c ++ 1 ++ ..\..\..\ctaocrypt\src\dh.c ++ ++ ++ dsa.c ++ 1 ++ ..\..\..\ctaocrypt\src\dsa.c ++ ++ ++ ecc.c ++ 1 ++ ..\..\..\ctaocrypt\src\ecc.c ++ ++ ++ ecc_fp.c ++ 1 ++ ..\..\..\ctaocrypt\src\ecc_fp.c ++ ++ ++ error.c ++ 1 ++ ..\..\..\ctaocrypt\src\error.c ++ ++ ++ hc128.c ++ 1 ++ ..\..\..\ctaocrypt\src\hc128.c ++ ++ ++ hmac.c ++ 1 ++ ..\..\..\ctaocrypt\src\hmac.c ++ ++ ++ integer.c ++ 1 ++ ..\..\..\ctaocrypt\src\integer.c ++ ++ ++ logging.c ++ 1 ++ ..\..\..\ctaocrypt\src\logging.c ++ ++ ++ md2.c ++ 1 ++ ..\..\..\ctaocrypt\src\md2.c ++ ++ ++ md4.c ++ 1 ++ ..\..\..\ctaocrypt\src\md4.c ++ ++ ++ md5.c ++ 1 ++ ..\..\..\ctaocrypt\src\md5.c ++ ++ ++ memory.c ++ 1 ++ ..\..\..\ctaocrypt\src\memory.c ++ ++ ++ misc.c ++ 1 ++ ..\..\..\ctaocrypt\src\misc.c ++ ++ ++ wc_port.c ++ 1 ++ ..\..\..\ctaocrypt\src\wc_port.c ++ ++ ++ pwdbased.c ++ 1 ++ ..\..\..\ctaocrypt\src\pwdbased.c ++ ++ ++ rabbit.c ++ 1 ++ ..\..\..\ctaocrypt\src\rabbit.c ++ ++ ++ random.c ++ 1 ++ ..\..\..\ctaocrypt\src\random.c ++ ++ ++ ripemd.c ++ 1 ++ ..\..\..\ctaocrypt\src\ripemd.c ++ ++ ++ rsa.c ++ 1 ++ ..\..\..\ctaocrypt\src\rsa.c ++ ++ ++ sha.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha.c ++ ++ ++ sha256.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha256.c ++ ++ ++ sha512.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha512.c ++ ++ ++ tfm.c ++ 1 ++ ..\..\..\ctaocrypt\src\tfm.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Configuration ++ ++ ++ File_Config.c ++ 1 ++ ..\MDK-ARM\config\File_Config.c ++ ++ ++ Net_Config.c ++ 1 ++ ..\MDK-ARM\config\Net_Config.c ++ ++ ++ config.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config.h ++ ++ ++ RTX_Conf_CM.c ++ 1 ++ ..\MDK-ARM\config\RTX_Conf_CM.c ++ ++ ++ Net_Debug.c ++ 1 ++ ..\MDK-ARM\config\Net_Debug.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ config-FS.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-FS.h ++ ++ ++ config-RTX-TCP-FS.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-RTX-TCP-FS.h ++ ++ ++ config-BARE-METAL.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-BARE-METAL.h ++ ++ ++ startup_LPC43xx.s ++ 2 ++ ..\LPC43xx\startup_LPC43xx.s ++ ++ ++ ++ ++ CyaSSL-MDK ++ ++ ++ cyassl_MDK_ARM.c ++ 1 ++ ..\MDK-ARM\CyaSSL\cyassl_MDK_ARM.c ++ ++ ++ Retarget.c ++ 1 ++ ..\MDK-ARM\CyaSSL\Retarget.c ++ ++ ++ time-LCP43xx.c ++ 1 ++ ..\LPC43xx\time-LCP43xx.c ++ ++ ++ ++ ++ ++ ++ MDK-FS ++ 0x4 ++ ARM-ADS ++ ++ ++ LPC4357 ++ NXP (founded by Philips) ++ IRAM(0x10000000-0x10007FFF) IRAM2(0x20000000-0x2000FFFF) IROM(0x1A000000-0x1A07FFFF) IROM2(0x1B000000-0x1B07FFFF) CLOCK(12000000) CPUTYPE("Cortex-M4") FPU2 ++ ++ "STARTUP\NXP\LPC43xx\startup_LPC43xx.s" ("NXP LPC43xx Startup Code") ++ UL2CM3(-O975 -S0 -C0 -FO7 -FD10000000 -FC800 -FN2 -FF0LPC18xx43xx_512_BA -FS01A000000 -FL080000 -FF1LPC18xx43xx_512_BB -FS11B000000 -FL180000) ++ 6414 ++ LPC43xx.H ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ SFD\NXP\LPC43xx\LPC43xx.SFR ++ 0 ++ ++ ++ ++ NXP\LPC43xx\ ++ NXP\LPC43xx\ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ .\MDK-FS\ ++ LCP43xx-MDK-FS ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ .\Lst\ ++ 1 ++ 0 ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 1 ++ 0 ++ $K\ARM\BIN\ElfDwT.exe !L BASEADDRESS(0x1A000000) ++ ++ 0 ++ 0 ++ ++ 0 ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 3 ++ ++ ++ ++ ++ SARMCM3.DLL ++ -MPU ++ DCM.DLL ++ -pCM4 ++ SARMCM3.DLL ++ -MPU ++ TCM.DLL ++ -pCM4 ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 16 ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ ++ 0 ++ 9 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ..\MDK-ARM\config\Dbg_Flash.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 4100 ++ ++ 0 ++ BIN\ULP2CM3.DLL ++ "" () ++ ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ "Cortex-M4" ++ ++ 0 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 8 ++ 0 ++ 0 ++ 0 ++ 3 ++ 3 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x10000000 ++ 0x8000 ++ ++ ++ 1 ++ 0x1a000000 ++ 0x80000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x1a000000 ++ 0x80000 ++ ++ ++ 1 ++ 0x1b000000 ++ 0x80000 ++ ++ ++ 0 ++ 0x10080000 ++ 0xa000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x10000000 ++ 0x8000 ++ ++ ++ 0 ++ 0x20000000 ++ 0x10000 ++ ++ ++ ++ ++ ++ 1 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ HAVE_CONFIG_H CYASSL_LPC43xx __DBG_ITM CORE_M4 __RTX USE_STDPERIPH_DRIVER MDK_CONF_FS ++ ++ ..\MDK-ARM\CyaSSL;../../..;..\LPC43xx\Drivers\include;..\LPC43xx\LPC43xx\Include ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CyaSSL Apps ++ ++ ++ echoclient.c ++ 1 ++ ..\..\..\examples\echoclient\echoclient.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ echoserver.c ++ 1 ++ ..\..\..\examples\echoserver\echoserver.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ test.c ++ 1 ++ ..\..\..\ctaocrypt\test\test.c ++ ++ ++ benchmark.c ++ 1 ++ ..\..\..\ctaocrypt\benchmark\benchmark.c ++ ++ ++ client.c ++ 1 ++ ..\..\..\examples\client\client.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ server.c ++ 1 ++ ..\..\..\examples\server\server.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ shell.c ++ 1 ++ ..\MDK-ARM\CyaSSL\shell.c ++ ++ ++ main.c ++ 1 ++ ..\MDK-ARM\CyaSSL\main.c ++ ++ ++ cert_data.c ++ 1 ++ ..\MDK-ARM\CyaSSL\cert_data.c ++ ++ ++ ++ ++ LPC43xx ++ ++ ++ lpc43xx_rtc.c ++ 1 ++ ..\LPC43xx\Drivers\source\lpc43xx_rtc.c ++ ++ ++ lpc43xx_timer.c ++ 1 ++ ..\LPC43xx\Drivers\source\lpc43xx_timer.c ++ ++ ++ lpc43xx_cgu.c ++ 1 ++ ..\LPC43xx\Drivers\source\lpc43xx_cgu.c ++ ++ ++ lpc43xx_scu.c ++ 1 ++ ..\LPC43xx\Drivers\source\lpc43xx_scu.c ++ ++ ++ ++ ++ MDK-ARM ++ ++ ++ FS_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\FS_CM3.lib ++ ++ ++ RTX_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\\RTX_CM3.lib ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ ++ ++ TCPD_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\TCPD_CM3.lib ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ ++ ++ TCP_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\TCP_CM3.lib ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ ++ ++ Serial.c ++ 1 ++ C:\Keil\ARM\Boards\Keil\MCB4300\RL\FlashFS\SD_File\Serial.c ++ ++ ++ ETH_LPC43xx.c ++ 1 ++ C:\Keil\ARM\RL\TCPnet\Drivers\ETH_LPC43xx.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ SDIO_LPC43xx.c ++ 1 ++ C:\Keil\ARM\Boards\Keil\MCB4300\RL\FlashFS\SD_File\SDIO_LPC43xx.c ++ ++ ++ system_LPC43xx.c ++ 1 ++ C:\Keil\ARM\Boards\Keil\MCB4300\RL\FlashFS\SD_File\system_LPC43xx.c ++ ++ ++ ++ ++ CyaSSL Library ++ ++ ++ crl.c ++ 1 ++ ..\..\..\src\crl.c ++ ++ ++ internal.c ++ 1 ++ ..\..\..\src\internal.c ++ ++ ++ io.c ++ 1 ++ ..\..\..\src\io.c ++ ++ ++ keys.c ++ 1 ++ ..\..\..\src\keys.c ++ ++ ++ ocsp.c ++ 1 ++ ..\..\..\src\ocsp.c ++ ++ ++ sniffer.c ++ 1 ++ ..\..\..\src\sniffer.c ++ ++ ++ ssl.c ++ 1 ++ ..\..\..\src\ssl.c ++ ++ ++ tls.c ++ 1 ++ ..\..\..\src\tls.c ++ ++ ++ ssl-dummy.c ++ 1 ++ ..\MDK-ARM\CyaSSL\ssl-dummy.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Crypt/Cipher Library ++ ++ ++ aes.c ++ 1 ++ ..\..\..\ctaocrypt\src\aes.c ++ ++ ++ arc4.c ++ 1 ++ ..\..\..\ctaocrypt\src\arc4.c ++ ++ ++ asm.c ++ 1 ++ ..\..\..\ctaocrypt\src\asm.c ++ ++ ++ asn.c ++ 1 ++ ..\..\..\ctaocrypt\src\asn.c ++ ++ ++ camellia.c ++ 1 ++ ..\..\..\ctaocrypt\src\camellia.c ++ ++ ++ coding.c ++ 1 ++ ..\..\..\ctaocrypt\src\coding.c ++ ++ ++ des3.c ++ 1 ++ ..\..\..\ctaocrypt\src\des3.c ++ ++ ++ dh.c ++ 1 ++ ..\..\..\ctaocrypt\src\dh.c ++ ++ ++ dsa.c ++ 1 ++ ..\..\..\ctaocrypt\src\dsa.c ++ ++ ++ ecc.c ++ 1 ++ ..\..\..\ctaocrypt\src\ecc.c ++ ++ ++ ecc_fp.c ++ 1 ++ ..\..\..\ctaocrypt\src\ecc_fp.c ++ ++ ++ error.c ++ 1 ++ ..\..\..\ctaocrypt\src\error.c ++ ++ ++ hc128.c ++ 1 ++ ..\..\..\ctaocrypt\src\hc128.c ++ ++ ++ hmac.c ++ 1 ++ ..\..\..\ctaocrypt\src\hmac.c ++ ++ ++ integer.c ++ 1 ++ ..\..\..\ctaocrypt\src\integer.c ++ ++ ++ logging.c ++ 1 ++ ..\..\..\ctaocrypt\src\logging.c ++ ++ ++ md2.c ++ 1 ++ ..\..\..\ctaocrypt\src\md2.c ++ ++ ++ md4.c ++ 1 ++ ..\..\..\ctaocrypt\src\md4.c ++ ++ ++ md5.c ++ 1 ++ ..\..\..\ctaocrypt\src\md5.c ++ ++ ++ memory.c ++ 1 ++ ..\..\..\ctaocrypt\src\memory.c ++ ++ ++ misc.c ++ 1 ++ ..\..\..\ctaocrypt\src\misc.c ++ ++ ++ pwdbased.c ++ 1 ++ ..\..\..\ctaocrypt\src\pwdbased.c ++ ++ ++ rabbit.c ++ 1 ++ ..\..\..\ctaocrypt\src\rabbit.c ++ ++ ++ random.c ++ 1 ++ ..\..\..\ctaocrypt\src\random.c ++ ++ ++ ripemd.c ++ 1 ++ ..\..\..\ctaocrypt\src\ripemd.c ++ ++ ++ rsa.c ++ 1 ++ ..\..\..\ctaocrypt\src\rsa.c ++ ++ ++ sha.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha.c ++ ++ ++ sha256.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha256.c ++ ++ ++ sha512.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha512.c ++ ++ ++ tfm.c ++ 1 ++ ..\..\..\ctaocrypt\src\tfm.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ wc_port.c ++ 1 ++ ..\..\..\ctaocrypt\src\wc_port.c ++ ++ ++ ++ ++ Configuration ++ ++ ++ File_Config.c ++ 1 ++ ..\MDK-ARM\config\File_Config.c ++ ++ ++ Net_Config.c ++ 1 ++ ..\MDK-ARM\config\Net_Config.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ config.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config.h ++ ++ ++ RTX_Conf_CM.c ++ 1 ++ ..\MDK-ARM\config\RTX_Conf_CM.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Net_Debug.c ++ 1 ++ ..\MDK-ARM\config\Net_Debug.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ config-FS.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-FS.h ++ ++ ++ config-RTX-TCP-FS.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-RTX-TCP-FS.h ++ ++ ++ config-BARE-METAL.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-BARE-METAL.h ++ ++ ++ startup_LPC43xx.s ++ 2 ++ ..\LPC43xx\startup_LPC43xx.s ++ ++ ++ ++ ++ CyaSSL-MDK ++ ++ ++ cyassl_MDK_ARM.c ++ 1 ++ ..\MDK-ARM\CyaSSL\cyassl_MDK_ARM.c ++ ++ ++ Retarget.c ++ 1 ++ ..\MDK-ARM\CyaSSL\Retarget.c ++ ++ ++ time-LCP43xx.c ++ 1 ++ ..\LPC43xx\time-LCP43xx.c ++ ++ ++ ++ ++ ++ ++ MDK-BARE-METAL ++ 0x4 ++ ARM-ADS ++ ++ ++ LPC4357 ++ NXP (founded by Philips) ++ IRAM(0x10000000-0x10007FFF) IRAM2(0x20000000-0x2000FFFF) IROM(0x1A000000-0x1A07FFFF) IROM2(0x1B000000-0x1B07FFFF) CLOCK(12000000) CPUTYPE("Cortex-M4") FPU2 ++ ++ "STARTUP\NXP\LPC43xx\startup_LPC43xx.s" ("NXP LPC43xx Startup Code") ++ UL2CM3(-O975 -S0 -C0 -FO7 -FD10000000 -FC800 -FN2 -FF0LPC18xx43xx_512_BA -FS01A000000 -FL080000 -FF1LPC18xx43xx_512_BB -FS11B000000 -FL180000) ++ 6414 ++ LPC43xx.H ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ SFD\NXP\LPC43xx\LPC43xx.SFR ++ 0 ++ ++ ++ ++ NXP\LPC43xx\ ++ NXP\LPC43xx\ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ .\MDK-BARE-METAL\ ++ LCP43xx-MDK-BARE-METAL ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ .\Lst\ ++ 1 ++ 0 ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 1 ++ 0 ++ $K\ARM\BIN\ElfDwT.exe !L BASEADDRESS(0x1A000000) ++ ++ 0 ++ 0 ++ ++ 0 ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 3 ++ ++ ++ ++ ++ SARMCM3.DLL ++ -MPU ++ DCM.DLL ++ -pCM4 ++ SARMCM3.DLL ++ -MPU ++ TCM.DLL ++ -pCM4 ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 16 ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ ++ 0 ++ 9 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ..\MDK-ARM\config\Dbg_Flash.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 4100 ++ ++ 0 ++ BIN\ULP2CM3.DLL ++ "" () ++ ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ "Cortex-M4" ++ ++ 0 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 8 ++ 0 ++ 0 ++ 0 ++ 3 ++ 3 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x10000000 ++ 0x8000 ++ ++ ++ 1 ++ 0x1a000000 ++ 0x80000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x1a000000 ++ 0x80000 ++ ++ ++ 1 ++ 0x1b000000 ++ 0x80000 ++ ++ ++ 0 ++ 0x10080000 ++ 0xa000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x10000000 ++ 0x8000 ++ ++ ++ 0 ++ 0x20000000 ++ 0x10000 ++ ++ ++ ++ ++ ++ 1 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ HAVE_CONFIG_H CYASSL_LPC43xx __DBG_ITM CORE_M4 __RTX USE_STDPERIPH_DRIVER MDK_CONF_BARE_METAL ++ ++ ..\MDK-ARM\CyaSSL;../../..;..\LPC43xx\Drivers\include;..\LPC43xx\LPC43xx\Include ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CyaSSL Apps ++ ++ ++ echoclient.c ++ 1 ++ ..\..\..\examples\echoclient\echoclient.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ echoserver.c ++ 1 ++ ..\..\..\examples\echoserver\echoserver.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ test.c ++ 1 ++ ..\..\..\ctaocrypt\test\test.c ++ ++ ++ benchmark.c ++ 1 ++ ..\..\..\ctaocrypt\benchmark\benchmark.c ++ ++ ++ client.c ++ 1 ++ ..\..\..\examples\client\client.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ server.c ++ 1 ++ ..\..\..\examples\server\server.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ shell.c ++ 1 ++ ..\MDK-ARM\CyaSSL\shell.c ++ ++ ++ main.c ++ 1 ++ ..\MDK-ARM\CyaSSL\main.c ++ ++ ++ cert_data.c ++ 1 ++ ..\MDK-ARM\CyaSSL\cert_data.c ++ ++ ++ ++ ++ LPC43xx ++ ++ ++ lpc43xx_rtc.c ++ 1 ++ ..\LPC43xx\Drivers\source\lpc43xx_rtc.c ++ ++ ++ lpc43xx_timer.c ++ 1 ++ ..\LPC43xx\Drivers\source\lpc43xx_timer.c ++ ++ ++ lpc43xx_cgu.c ++ 1 ++ ..\LPC43xx\Drivers\source\lpc43xx_cgu.c ++ ++ ++ lpc43xx_scu.c ++ 1 ++ ..\LPC43xx\Drivers\source\lpc43xx_scu.c ++ ++ ++ ++ ++ MDK-ARM ++ ++ ++ FS_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\FS_CM3.lib ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ ++ ++ RTX_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\\RTX_CM3.lib ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ ++ ++ TCPD_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\TCPD_CM3.lib ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ ++ ++ TCP_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\TCP_CM3.lib ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ ++ ++ Serial.c ++ 1 ++ C:\Keil\ARM\Boards\Keil\MCB4300\RL\FlashFS\SD_File\Serial.c ++ ++ ++ ETH_LPC43xx.c ++ 1 ++ C:\Keil\ARM\RL\TCPnet\Drivers\ETH_LPC43xx.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ SDIO_LPC43xx.c ++ 1 ++ C:\Keil\ARM\Boards\Keil\MCB4300\RL\FlashFS\SD_File\SDIO_LPC43xx.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ system_LPC43xx.c ++ 1 ++ C:\Keil\ARM\Boards\Keil\MCB4300\RL\FlashFS\SD_File\system_LPC43xx.c ++ ++ ++ ++ ++ CyaSSL Library ++ ++ ++ crl.c ++ 1 ++ ..\..\..\src\crl.c ++ ++ ++ internal.c ++ 1 ++ ..\..\..\src\internal.c ++ ++ ++ io.c ++ 1 ++ ..\..\..\src\io.c ++ ++ ++ keys.c ++ 1 ++ ..\..\..\src\keys.c ++ ++ ++ ocsp.c ++ 1 ++ ..\..\..\src\ocsp.c ++ ++ ++ sniffer.c ++ 1 ++ ..\..\..\src\sniffer.c ++ ++ ++ ssl.c ++ 1 ++ ..\..\..\src\ssl.c ++ ++ ++ tls.c ++ 1 ++ ..\..\..\src\tls.c ++ ++ ++ ssl-dummy.c ++ 1 ++ ..\MDK-ARM\CyaSSL\ssl-dummy.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Crypt/Cipher Library ++ ++ ++ aes.c ++ 1 ++ ..\..\..\ctaocrypt\src\aes.c ++ ++ ++ arc4.c ++ 1 ++ ..\..\..\ctaocrypt\src\arc4.c ++ ++ ++ asm.c ++ 1 ++ ..\..\..\ctaocrypt\src\asm.c ++ ++ ++ asn.c ++ 1 ++ ..\..\..\ctaocrypt\src\asn.c ++ ++ ++ camellia.c ++ 1 ++ ..\..\..\ctaocrypt\src\camellia.c ++ ++ ++ coding.c ++ 1 ++ ..\..\..\ctaocrypt\src\coding.c ++ ++ ++ des3.c ++ 1 ++ ..\..\..\ctaocrypt\src\des3.c ++ ++ ++ dh.c ++ 1 ++ ..\..\..\ctaocrypt\src\dh.c ++ ++ ++ dsa.c ++ 1 ++ ..\..\..\ctaocrypt\src\dsa.c ++ ++ ++ ecc.c ++ 1 ++ ..\..\..\ctaocrypt\src\ecc.c ++ ++ ++ ecc_fp.c ++ 1 ++ ..\..\..\ctaocrypt\src\ecc_fp.c ++ ++ ++ error.c ++ 1 ++ ..\..\..\ctaocrypt\src\error.c ++ ++ ++ hc128.c ++ 1 ++ ..\..\..\ctaocrypt\src\hc128.c ++ ++ ++ hmac.c ++ 1 ++ ..\..\..\ctaocrypt\src\hmac.c ++ ++ ++ integer.c ++ 1 ++ ..\..\..\ctaocrypt\src\integer.c ++ ++ ++ logging.c ++ 1 ++ ..\..\..\ctaocrypt\src\logging.c ++ ++ ++ md2.c ++ 1 ++ ..\..\..\ctaocrypt\src\md2.c ++ ++ ++ md4.c ++ 1 ++ ..\..\..\ctaocrypt\src\md4.c ++ ++ ++ md5.c ++ 1 ++ ..\..\..\ctaocrypt\src\md5.c ++ ++ ++ memory.c ++ 1 ++ ..\..\..\ctaocrypt\src\memory.c ++ ++ ++ misc.c ++ 1 ++ ..\..\..\ctaocrypt\src\misc.c ++ ++ ++ pwdbased.c ++ 1 ++ ..\..\..\ctaocrypt\src\pwdbased.c ++ ++ ++ rabbit.c ++ 1 ++ ..\..\..\ctaocrypt\src\rabbit.c ++ ++ ++ random.c ++ 1 ++ ..\..\..\ctaocrypt\src\random.c ++ ++ ++ ripemd.c ++ 1 ++ ..\..\..\ctaocrypt\src\ripemd.c ++ ++ ++ rsa.c ++ 1 ++ ..\..\..\ctaocrypt\src\rsa.c ++ ++ ++ sha.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha.c ++ ++ ++ sha256.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha256.c ++ ++ ++ sha512.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha512.c ++ ++ ++ tfm.c ++ 1 ++ ..\..\..\ctaocrypt\src\tfm.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ wc_port.c ++ 1 ++ ..\..\..\ctaocrypt\src\wc_port.c ++ ++ ++ ++ ++ Configuration ++ ++ ++ File_Config.c ++ 1 ++ ..\MDK-ARM\config\File_Config.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Net_Config.c ++ 1 ++ ..\MDK-ARM\config\Net_Config.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ config.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config.h ++ ++ ++ RTX_Conf_CM.c ++ 1 ++ ..\MDK-ARM\config\RTX_Conf_CM.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Net_Debug.c ++ 1 ++ ..\MDK-ARM\config\Net_Debug.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ config-FS.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-FS.h ++ ++ ++ config-RTX-TCP-FS.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-RTX-TCP-FS.h ++ ++ ++ config-BARE-METAL.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-BARE-METAL.h ++ ++ ++ startup_LPC43xx.s ++ 2 ++ ..\LPC43xx\startup_LPC43xx.s ++ ++ ++ ++ ++ CyaSSL-MDK ++ ++ ++ cyassl_MDK_ARM.c ++ 1 ++ ..\MDK-ARM\CyaSSL\cyassl_MDK_ARM.c ++ ++ ++ Retarget.c ++ 1 ++ ..\MDK-ARM\CyaSSL\Retarget.c ++ ++ ++ time-LCP43xx.c ++ 1 ++ ..\LPC43xx\time-LCP43xx.c ++ ++ ++ ++ ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/Projects/MDK-ARM-STM32F2xx.uvopt mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/Projects/MDK-ARM-STM32F2xx.uvopt +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/Projects/MDK-ARM-STM32F2xx.uvopt 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/Projects/MDK-ARM-STM32F2xx.uvopt 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,1656 @@ ++ ++ ++ ++ 1.0 ++ ++
### uVision Project, (C) Keil Software
++ ++ ++ *.c ++ *.s*; *.src; *.a* ++ *.obj ++ *.lib ++ *.txt; *.h; *.inc ++ *.plm ++ *.cpp ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ MDK-RTX-TCP-FS ++ 0x4 ++ ARM-ADS ++ ++ 25000000 ++ ++ 1 ++ 1 ++ 0 ++ 1 ++ ++ ++ 1 ++ 65535 ++ 0 ++ 0 ++ 0 ++ ++ ++ 79 ++ 66 ++ 8 ++ .\Flash\ ++ ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ ++ ++ 1 ++ 0 ++ 0 ++ ++ 255 ++ ++ SARMCM3.DLL ++ -MPU ++ DARMSTM.DLL ++ -pSTM32F207IG ++ SARMCM3.DLL ++ -MPU ++ TARMSTM.DLL ++ -pSTM32F207IG ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 9 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ..\MDK-ARM\config\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ 0 ++ UL2CM3 ++ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm)) ++ ++ ++ 0 ++ DLGTARM ++ (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) ++ ++ ++ 0 ++ ARMDBGFLAGS ++ ++ ++ ++ 0 ++ DLGUARM ++ ++ ++ ++ 0 ++ ULP2CM3 ++ -UP1135060 -O206 -S0 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO23 -TC10000000 -TP18 -TDX0 -TDD0 -TDS7 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000 ++ ++ ++ ++ ++ 0 ++ ++ ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ MDK-FS ++ 0x4 ++ ARM-ADS ++ ++ 25000000 ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ ++ ++ 1 ++ 65535 ++ 0 ++ 0 ++ 0 ++ ++ ++ 79 ++ 66 ++ 8 ++ .\Flash\ ++ ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ ++ ++ 1 ++ 0 ++ 1 ++ ++ 255 ++ ++ SARMCM3.DLL ++ -MPU ++ DARMSTM.DLL ++ -pSTM32F207IG ++ SARMCM3.DLL ++ -MPU ++ TARMSTM.DLL ++ -pSTM32F207IG ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 9 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ..\MDK-ARM\config\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ 0 ++ DLGTARM ++ (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) ++ ++ ++ 0 ++ ARMDBGFLAGS ++ ++ ++ ++ 0 ++ DLGUARM ++ ++ ++ ++ 0 ++ ULP2CM3 ++ -UP1135060 -O206 -S0 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO23 -TC10000000 -TP18 -TDX0 -TDD0 -TDS7 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000 ++ ++ ++ ++ ++ 0 ++ ++ ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ MDK-BARE-METAL ++ 0x4 ++ ARM-ADS ++ ++ 25000000 ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ ++ ++ 1 ++ 65535 ++ 0 ++ 0 ++ 0 ++ ++ ++ 79 ++ 66 ++ 8 ++ .\Flash\ ++ ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ ++ ++ 1 ++ 0 ++ 0 ++ ++ 255 ++ ++ SARMCM3.DLL ++ -MPU ++ DARMSTM.DLL ++ -pSTM32F207IG ++ SARMCM3.DLL ++ -MPU ++ TARMSTM.DLL ++ -pSTM32F207IG ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 9 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ..\MDK-ARM\config\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ 0 ++ DLGTARM ++ (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) ++ ++ ++ 0 ++ ARMDBGFLAGS ++ ++ ++ ++ 0 ++ DLGUARM ++ ++ ++ ++ 0 ++ ULP2CM3 ++ -UP1135060 -O206 -S0 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO23 -TC10000000 -TP18 -TDX0 -TDD0 -TDS7 -TDT0 -TDC1F -TIEFFFFFFFF -TIP0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000 ++ ++ ++ ++ ++ 0 ++ ++ ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ CyaSSL Apps ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\examples\echoclient\echoclient.c ++ echoclient.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 2 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\examples\echoserver\echoserver.c ++ echoserver.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 3 ++ 1 ++ 0 ++ 0 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\test\test.c ++ test.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 4 ++ 1 ++ 0 ++ 0 ++ 21 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\benchmark\benchmark.c ++ benchmark.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 5 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\examples\client\client.c ++ client.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 6 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\examples\server\server.c ++ server.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 7 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\shell.c ++ shell.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 8 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 106 ++ 149 ++ 0 ++ ..\MDK-ARM\CyaSSL\main.c ++ main.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 9 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\cert_data.c ++ cert_data.c ++ 0 ++ 0 ++ ++ ++ ++ ++ STM32F2xx_StdPeriph_Lib ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ MDK-ARM ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 3 ++ 10 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ c:\Keil\ARM\Boards\Keil\MCBSTM32F200\RL\FlashFS\SD_File\Serial.c ++ Serial.c ++ 0 ++ 0 ++ ++ ++ 3 ++ 11 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ c:\Keil\ARM\RL\FlashFS\Drivers\SDIO_STM32F2xx.c ++ SDIO_STM32F2xx.c ++ 0 ++ 0 ++ ++ ++ 3 ++ 12 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ c:\Keil\ARM\RV31\LIB\FS_CM3.lib ++ FS_CM3.lib ++ 0 ++ 0 ++ ++ ++ 3 ++ 13 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ c:\Keil\ARM\RV31\LIB\\RTX_CM3.lib ++ RTX_CM3.lib ++ 0 ++ 0 ++ ++ ++ 3 ++ 14 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ c:\Keil\ARM\RL\TCPnet\Drivers\ETH_STM32F2xx.c ++ ETH_STM32F2xx.c ++ 0 ++ 0 ++ ++ ++ 3 ++ 15 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ c:\Keil\ARM\RV31\LIB\TCPD_CM3.lib ++ TCPD_CM3.lib ++ 0 ++ 0 ++ ++ ++ 3 ++ 16 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ c:\Keil\ARM\RV31\LIB\TCP_CM3.lib ++ TCP_CM3.lib ++ 0 ++ 0 ++ ++ ++ 3 ++ 17 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil\ARM\Startup\ST\STM32F2xx\system_stm32f2xx.c ++ system_stm32f2xx.c ++ 0 ++ 0 ++ ++ ++ ++ ++ CyaSSL Library ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 4 ++ 18 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\src\crl.c ++ crl.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 19 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\src\internal.c ++ internal.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 20 ++ 1 ++ 0 ++ 0 ++ 23 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\src\io.c ++ io.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 21 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\src\keys.c ++ keys.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 22 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\src\ocsp.c ++ ocsp.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 23 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\src\sniffer.c ++ sniffer.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 24 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\src\ssl.c ++ ssl.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 25 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\src\tls.c ++ tls.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 26 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\ssl-dummy.c ++ ssl-dummy.c ++ 0 ++ 0 ++ ++ ++ ++ ++ Crypt/Cipher Library ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 5 ++ 27 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\aes.c ++ aes.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 28 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\arc4.c ++ arc4.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 29 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\asm.c ++ asm.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 30 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\asn.c ++ asn.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 31 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\camellia.c ++ camellia.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 32 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\coding.c ++ coding.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 33 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\des3.c ++ des3.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 34 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\dh.c ++ dh.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 35 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\dsa.c ++ dsa.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 36 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\ecc.c ++ ecc.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 37 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\ecc_fp.c ++ ecc_fp.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 38 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\error.c ++ error.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 39 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\hc128.c ++ hc128.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 40 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\hmac.c ++ hmac.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 41 ++ 1 ++ 0 ++ 0 ++ 19 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\integer.c ++ integer.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 42 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\logging.c ++ logging.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 43 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\md2.c ++ md2.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 44 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\md4.c ++ md4.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 45 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\md5.c ++ md5.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 46 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\memory.c ++ memory.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 47 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\misc.c ++ misc.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 48 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\wc_port.c ++ wc_port.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 49 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\pwdbased.c ++ pwdbased.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 50 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\rabbit.c ++ rabbit.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 51 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\random.c ++ random.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 52 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\ripemd.c ++ ripemd.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 53 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\rsa.c ++ rsa.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 54 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\sha.c ++ sha.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 55 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\sha256.c ++ sha256.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 56 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\sha512.c ++ sha512.c ++ 0 ++ 0 ++ ++ ++ 5 ++ 57 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\..\..\ctaocrypt\src\tfm.c ++ tfm.c ++ 0 ++ 0 ++ ++ ++ ++ ++ Configuration ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 6 ++ 58 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\config\File_Config.c ++ File_Config.c ++ 0 ++ 0 ++ ++ ++ 6 ++ 59 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\config\Net_Config.c ++ Net_Config.c ++ 0 ++ 0 ++ ++ ++ 6 ++ 60 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\config.h ++ config.h ++ 0 ++ 0 ++ ++ ++ 6 ++ 61 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\config\RTX_Conf_CM.c ++ RTX_Conf_CM.c ++ 0 ++ 0 ++ ++ ++ 6 ++ 62 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\config\Net_Debug.c ++ Net_Debug.c ++ 0 ++ 0 ++ ++ ++ 6 ++ 63 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ ..\MDK-ARM\CyaSSL\config-FS.h ++ config-FS.h ++ 0 ++ 0 ++ ++ ++ 6 ++ 64 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\config-RTX-TCP-FS.h ++ config-RTX-TCP-FS.h ++ 0 ++ 0 ++ ++ ++ 6 ++ 65 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\config-BARE-METAL.h ++ config-BARE-METAL.h ++ 0 ++ 0 ++ ++ ++ 6 ++ 66 ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 152 ++ 169 ++ 0 ++ ..\MDK-ARM\config\startup_stm32f2xx.s ++ startup_stm32f2xx.s ++ 0 ++ 0 ++ ++ ++ ++ ++ CyaSSL-MDK ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 7 ++ 67 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 182 ++ 222 ++ 0 ++ ..\MDK-ARM\CyaSSL\cyassl_MDK_ARM.c ++ cyassl_MDK_ARM.c ++ 0 ++ 0 ++ ++ ++ 7 ++ 68 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\MDK-ARM\CyaSSL\Retarget.c ++ Retarget.c ++ 0 ++ 0 ++ ++ ++ 7 ++ 69 ++ 1 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ..\STM32F2xx_StdPeriph_Lib\time-STM32F2xx.c ++ time-STM32F2xx.c ++ 0 ++ 0 ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/Projects/MDK-ARM-STM32F2xx.uvproj mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/Projects/MDK-ARM-STM32F2xx.uvproj +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/Projects/MDK-ARM-STM32F2xx.uvproj 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/Projects/MDK-ARM-STM32F2xx.uvproj 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,3964 @@ ++ ++ ++ ++ 1.1 ++ ++
### uVision Project, (C) Keil Software
++ ++ ++ ++ MDK-RTX-TCP-FS ++ 0x4 ++ ARM-ADS ++ ++ ++ STM32F207IG ++ STMicroelectronics ++ IRAM(0x20000000-0x2001FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(25000000) CPUTYPE("Cortex-M3") ++ ++ "STARTUP\ST\STM32F2xx\startup_stm32f2xx.s" ("STM32F2xx Startup Code") ++ UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000) ++ 5124 ++ stm32f2xx.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ SFD\ST\STM32F2xx\STM32F20x.sfr ++ 0 ++ ++ ++ ++ ST\STM32F2xx\ ++ ST\STM32F2xx\ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ .\MDK-RTX-TCP-FS\ ++ STM32F2xx-MDK-RTX-TCP-FS ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ .\Flash\ ++ 1 ++ 0 ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ 0 ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 3 ++ ++ ++ ++ ++ SARMCM3.DLL ++ -MPU ++ DARMSTM.DLL ++ -pSTM32F207IG ++ SARMCM3.DLL ++ -MPU ++ TARMSTM.DLL ++ -pSTM32F207IG ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 16 ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ ++ ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ ++ 0 ++ 9 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ..\MDK-ARM\config\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 4100 ++ ++ 1 ++ BIN\ULP2CM3.DLL ++ "" () ++ ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ "Cortex-M3" ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 8 ++ 0 ++ 0 ++ 0 ++ 3 ++ 3 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ ++ ++ ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ HAVE_CONFIG_H CYASSL_STM32F2xx __DBG_ITM __RTX MDK_CONF_RTX_TCP_FS ++ ++ ..\MDK-ARM\CyaSSL;C:..\STM32F2xx_StdPeriph_Lib\inc;..\..\..\ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0x08000000 ++ 0x20000000 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CyaSSL Apps ++ ++ ++ echoclient.c ++ 1 ++ ..\..\..\examples\echoclient\echoclient.c ++ ++ ++ echoserver.c ++ 1 ++ ..\..\..\examples\echoserver\echoserver.c ++ ++ ++ test.c ++ 1 ++ ..\..\..\ctaocrypt\test\test.c ++ ++ ++ benchmark.c ++ 1 ++ ..\..\..\ctaocrypt\benchmark\benchmark.c ++ ++ ++ client.c ++ 1 ++ ..\..\..\examples\client\client.c ++ ++ ++ server.c ++ 1 ++ ..\..\..\examples\server\server.c ++ ++ ++ shell.c ++ 1 ++ ..\MDK-ARM\CyaSSL\shell.c ++ ++ ++ main.c ++ 1 ++ ..\MDK-ARM\CyaSSL\main.c ++ ++ ++ cert_data.c ++ 1 ++ ..\MDK-ARM\CyaSSL\cert_data.c ++ ++ ++ ++ ++ STM32F2xx_StdPeriph_Lib ++ ++ ++ MDK-ARM ++ ++ ++ Serial.c ++ 1 ++ c:\Keil\ARM\Boards\Keil\MCBSTM32F200\RL\FlashFS\SD_File\Serial.c ++ ++ ++ SDIO_STM32F2xx.c ++ 1 ++ c:\Keil\ARM\RL\FlashFS\Drivers\SDIO_STM32F2xx.c ++ ++ ++ FS_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\FS_CM3.lib ++ ++ ++ RTX_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\\RTX_CM3.lib ++ ++ ++ ETH_STM32F2xx.c ++ 1 ++ c:\Keil\ARM\RL\TCPnet\Drivers\ETH_STM32F2xx.c ++ ++ ++ TCPD_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\TCPD_CM3.lib ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ ++ ++ TCP_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\TCP_CM3.lib ++ ++ ++ system_stm32f2xx.c ++ 1 ++ C:\Keil\ARM\Startup\ST\STM32F2xx\system_stm32f2xx.c ++ ++ ++ ++ ++ CyaSSL Library ++ ++ ++ crl.c ++ 1 ++ ..\..\..\src\crl.c ++ ++ ++ internal.c ++ 1 ++ ..\..\..\src\internal.c ++ ++ ++ io.c ++ 1 ++ ..\..\..\src\io.c ++ ++ ++ keys.c ++ 1 ++ ..\..\..\src\keys.c ++ ++ ++ ocsp.c ++ 1 ++ ..\..\..\src\ocsp.c ++ ++ ++ sniffer.c ++ 1 ++ ..\..\..\src\sniffer.c ++ ++ ++ ssl.c ++ 1 ++ ..\..\..\src\ssl.c ++ ++ ++ tls.c ++ 1 ++ ..\..\..\src\tls.c ++ ++ ++ ssl-dummy.c ++ 1 ++ ..\MDK-ARM\CyaSSL\ssl-dummy.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Crypt/Cipher Library ++ ++ ++ aes.c ++ 1 ++ ..\..\..\ctaocrypt\src\aes.c ++ ++ ++ arc4.c ++ 1 ++ ..\..\..\ctaocrypt\src\arc4.c ++ ++ ++ asm.c ++ 1 ++ ..\..\..\ctaocrypt\src\asm.c ++ ++ ++ asn.c ++ 1 ++ ..\..\..\ctaocrypt\src\asn.c ++ ++ ++ camellia.c ++ 1 ++ ..\..\..\ctaocrypt\src\camellia.c ++ ++ ++ coding.c ++ 1 ++ ..\..\..\ctaocrypt\src\coding.c ++ ++ ++ des3.c ++ 1 ++ ..\..\..\ctaocrypt\src\des3.c ++ ++ ++ dh.c ++ 1 ++ ..\..\..\ctaocrypt\src\dh.c ++ ++ ++ dsa.c ++ 1 ++ ..\..\..\ctaocrypt\src\dsa.c ++ ++ ++ ecc.c ++ 1 ++ ..\..\..\ctaocrypt\src\ecc.c ++ ++ ++ ecc_fp.c ++ 1 ++ ..\..\..\ctaocrypt\src\ecc_fp.c ++ ++ ++ error.c ++ 1 ++ ..\..\..\ctaocrypt\src\error.c ++ ++ ++ hc128.c ++ 1 ++ ..\..\..\ctaocrypt\src\hc128.c ++ ++ ++ hmac.c ++ 1 ++ ..\..\..\ctaocrypt\src\hmac.c ++ ++ ++ integer.c ++ 1 ++ ..\..\..\ctaocrypt\src\integer.c ++ ++ ++ logging.c ++ 1 ++ ..\..\..\ctaocrypt\src\logging.c ++ ++ ++ md2.c ++ 1 ++ ..\..\..\ctaocrypt\src\md2.c ++ ++ ++ md4.c ++ 1 ++ ..\..\..\ctaocrypt\src\md4.c ++ ++ ++ md5.c ++ 1 ++ ..\..\..\ctaocrypt\src\md5.c ++ ++ ++ memory.c ++ 1 ++ ..\..\..\ctaocrypt\src\memory.c ++ ++ ++ misc.c ++ 1 ++ ..\..\..\ctaocrypt\src\misc.c ++ ++ ++ wc_port.c ++ 1 ++ ..\..\..\ctaocrypt\src\wc_port.c ++ ++ ++ pwdbased.c ++ 1 ++ ..\..\..\ctaocrypt\src\pwdbased.c ++ ++ ++ rabbit.c ++ 1 ++ ..\..\..\ctaocrypt\src\rabbit.c ++ ++ ++ random.c ++ 1 ++ ..\..\..\ctaocrypt\src\random.c ++ ++ ++ ripemd.c ++ 1 ++ ..\..\..\ctaocrypt\src\ripemd.c ++ ++ ++ rsa.c ++ 1 ++ ..\..\..\ctaocrypt\src\rsa.c ++ ++ ++ sha.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha.c ++ ++ ++ sha256.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha256.c ++ ++ ++ sha512.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha512.c ++ ++ ++ tfm.c ++ 1 ++ ..\..\..\ctaocrypt\src\tfm.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Configuration ++ ++ ++ File_Config.c ++ 1 ++ ..\MDK-ARM\config\File_Config.c ++ ++ ++ Net_Config.c ++ 1 ++ ..\MDK-ARM\config\Net_Config.c ++ ++ ++ config.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config.h ++ ++ ++ RTX_Conf_CM.c ++ 1 ++ ..\MDK-ARM\config\RTX_Conf_CM.c ++ ++ ++ Net_Debug.c ++ 1 ++ ..\MDK-ARM\config\Net_Debug.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ config-FS.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-FS.h ++ ++ ++ config-RTX-TCP-FS.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-RTX-TCP-FS.h ++ ++ ++ config-BARE-METAL.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-BARE-METAL.h ++ ++ ++ startup_stm32f2xx.s ++ 2 ++ ..\MDK-ARM\config\startup_stm32f2xx.s ++ ++ ++ ++ ++ CyaSSL-MDK ++ ++ ++ cyassl_MDK_ARM.c ++ 1 ++ ..\MDK-ARM\CyaSSL\cyassl_MDK_ARM.c ++ ++ ++ Retarget.c ++ 1 ++ ..\MDK-ARM\CyaSSL\Retarget.c ++ ++ ++ time-STM32F2xx.c ++ 1 ++ ..\STM32F2xx_StdPeriph_Lib\time-STM32F2xx.c ++ ++ ++ ++ ++ ++ ++ MDK-FS ++ 0x4 ++ ARM-ADS ++ ++ ++ STM32F207IG ++ STMicroelectronics ++ IRAM(0x20000000-0x2001FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(25000000) CPUTYPE("Cortex-M3") ++ ++ "STARTUP\ST\STM32F2xx\startup_stm32f2xx.s" ("STM32F2xx Startup Code") ++ UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000) ++ 5124 ++ stm32f2xx.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ SFD\ST\STM32F2xx\STM32F20x.sfr ++ 0 ++ ++ ++ ++ ST\STM32F2xx\ ++ ST\STM32F2xx\ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ .\MDK-FS\ ++ STM32F2xx-MDK-FS ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ .\Flash\ ++ 1 ++ 0 ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ 0 ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 3 ++ ++ ++ ++ ++ SARMCM3.DLL ++ -MPU ++ DARMSTM.DLL ++ -pSTM32F207IG ++ SARMCM3.DLL ++ -MPU ++ TARMSTM.DLL ++ -pSTM32F207IG ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 16 ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ ++ 0 ++ 9 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ..\MDK-ARM\config\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 4100 ++ ++ 0 ++ BIN\ULP2CM3.DLL ++ "" () ++ ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ "Cortex-M3" ++ ++ 0 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 8 ++ 0 ++ 0 ++ 0 ++ 3 ++ 3 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ ++ ++ ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ HAVE_CONFIG_H CYASSL_STM32F2xx __DBG_ITM MDK_CONF_FS ++ ++ ..\MDK-ARM\CyaSSL;..\MDK-ARM\inc;..\STM32F2xx_StdPeriph_Lib\inc;..\POSIX\..\..\..\ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0x08000000 ++ 0x20000000 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CyaSSL Apps ++ ++ ++ echoclient.c ++ 1 ++ ..\..\..\examples\echoclient\echoclient.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ echoserver.c ++ 1 ++ ..\..\..\examples\echoserver\echoserver.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ test.c ++ 1 ++ ..\..\..\ctaocrypt\test\test.c ++ ++ ++ benchmark.c ++ 1 ++ ..\..\..\ctaocrypt\benchmark\benchmark.c ++ ++ ++ client.c ++ 1 ++ ..\..\..\examples\client\client.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ server.c ++ 1 ++ ..\..\..\examples\server\server.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ shell.c ++ 1 ++ ..\MDK-ARM\CyaSSL\shell.c ++ ++ ++ main.c ++ 1 ++ ..\MDK-ARM\CyaSSL\main.c ++ ++ ++ cert_data.c ++ 1 ++ ..\MDK-ARM\CyaSSL\cert_data.c ++ ++ ++ ++ ++ STM32F2xx_StdPeriph_Lib ++ ++ ++ MDK-ARM ++ ++ ++ Serial.c ++ 1 ++ c:\Keil\ARM\Boards\Keil\MCBSTM32F200\RL\FlashFS\SD_File\Serial.c ++ ++ ++ SDIO_STM32F2xx.c ++ 1 ++ c:\Keil\ARM\RL\FlashFS\Drivers\SDIO_STM32F2xx.c ++ ++ ++ FS_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\FS_CM3.lib ++ ++ ++ RTX_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\\RTX_CM3.lib ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ ++ ++ ETH_STM32F2xx.c ++ 1 ++ c:\Keil\ARM\RL\TCPnet\Drivers\ETH_STM32F2xx.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ TCPD_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\TCPD_CM3.lib ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ ++ ++ TCP_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\TCP_CM3.lib ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ ++ ++ system_stm32f2xx.c ++ 1 ++ C:\Keil\ARM\Startup\ST\STM32F2xx\system_stm32f2xx.c ++ ++ ++ ++ ++ CyaSSL Library ++ ++ ++ crl.c ++ 1 ++ ..\..\..\src\crl.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ internal.c ++ 1 ++ ..\..\..\src\internal.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ io.c ++ 1 ++ ..\..\..\src\io.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ keys.c ++ 1 ++ ..\..\..\src\keys.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ocsp.c ++ 1 ++ ..\..\..\src\ocsp.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ sniffer.c ++ 1 ++ ..\..\..\src\sniffer.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ssl.c ++ 1 ++ ..\..\..\src\ssl.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ tls.c ++ 1 ++ ..\..\..\src\tls.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ssl-dummy.c ++ 1 ++ ..\MDK-ARM\CyaSSL\ssl-dummy.c ++ ++ ++ ++ ++ Crypt/Cipher Library ++ ++ ++ aes.c ++ 1 ++ ..\..\..\ctaocrypt\src\aes.c ++ ++ ++ arc4.c ++ 1 ++ ..\..\..\ctaocrypt\src\arc4.c ++ ++ ++ asm.c ++ 1 ++ ..\..\..\ctaocrypt\src\asm.c ++ ++ ++ asn.c ++ 1 ++ ..\..\..\ctaocrypt\src\asn.c ++ ++ ++ camellia.c ++ 1 ++ ..\..\..\ctaocrypt\src\camellia.c ++ ++ ++ coding.c ++ 1 ++ ..\..\..\ctaocrypt\src\coding.c ++ ++ ++ des3.c ++ 1 ++ ..\..\..\ctaocrypt\src\des3.c ++ ++ ++ dh.c ++ 1 ++ ..\..\..\ctaocrypt\src\dh.c ++ ++ ++ dsa.c ++ 1 ++ ..\..\..\ctaocrypt\src\dsa.c ++ ++ ++ ecc.c ++ 1 ++ ..\..\..\ctaocrypt\src\ecc.c ++ ++ ++ ecc_fp.c ++ 1 ++ ..\..\..\ctaocrypt\src\ecc_fp.c ++ ++ ++ error.c ++ 1 ++ ..\..\..\ctaocrypt\src\error.c ++ ++ ++ hc128.c ++ 1 ++ ..\..\..\ctaocrypt\src\hc128.c ++ ++ ++ hmac.c ++ 1 ++ ..\..\..\ctaocrypt\src\hmac.c ++ ++ ++ integer.c ++ 1 ++ ..\..\..\ctaocrypt\src\integer.c ++ ++ ++ logging.c ++ 1 ++ ..\..\..\ctaocrypt\src\logging.c ++ ++ ++ md2.c ++ 1 ++ ..\..\..\ctaocrypt\src\md2.c ++ ++ ++ md4.c ++ 1 ++ ..\..\..\ctaocrypt\src\md4.c ++ ++ ++ md5.c ++ 1 ++ ..\..\..\ctaocrypt\src\md5.c ++ ++ ++ memory.c ++ 1 ++ ..\..\..\ctaocrypt\src\memory.c ++ ++ ++ misc.c ++ 1 ++ ..\..\..\ctaocrypt\src\misc.c ++ ++ ++ wc_port.c ++ 1 ++ ..\..\..\ctaocrypt\src\wc_port.c ++ ++ ++ pwdbased.c ++ 1 ++ ..\..\..\ctaocrypt\src\pwdbased.c ++ ++ ++ rabbit.c ++ 1 ++ ..\..\..\ctaocrypt\src\rabbit.c ++ ++ ++ random.c ++ 1 ++ ..\..\..\ctaocrypt\src\random.c ++ ++ ++ ripemd.c ++ 1 ++ ..\..\..\ctaocrypt\src\ripemd.c ++ ++ ++ rsa.c ++ 1 ++ ..\..\..\ctaocrypt\src\rsa.c ++ ++ ++ sha.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha.c ++ ++ ++ sha256.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha256.c ++ ++ ++ sha512.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha512.c ++ ++ ++ tfm.c ++ 1 ++ ..\..\..\ctaocrypt\src\tfm.c ++ ++ ++ ++ ++ Configuration ++ ++ ++ File_Config.c ++ 1 ++ ..\MDK-ARM\config\File_Config.c ++ ++ ++ Net_Config.c ++ 1 ++ ..\MDK-ARM\config\Net_Config.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ config.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config.h ++ ++ ++ RTX_Conf_CM.c ++ 1 ++ ..\MDK-ARM\config\RTX_Conf_CM.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Net_Debug.c ++ 1 ++ ..\MDK-ARM\config\Net_Debug.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ config-FS.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-FS.h ++ ++ ++ config-RTX-TCP-FS.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-RTX-TCP-FS.h ++ ++ ++ config-BARE-METAL.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-BARE-METAL.h ++ ++ ++ startup_stm32f2xx.s ++ 2 ++ ..\MDK-ARM\config\startup_stm32f2xx.s ++ ++ ++ ++ ++ CyaSSL-MDK ++ ++ ++ cyassl_MDK_ARM.c ++ 1 ++ ..\MDK-ARM\CyaSSL\cyassl_MDK_ARM.c ++ ++ ++ Retarget.c ++ 1 ++ ..\MDK-ARM\CyaSSL\Retarget.c ++ ++ ++ time-STM32F2xx.c ++ 1 ++ ..\STM32F2xx_StdPeriph_Lib\time-STM32F2xx.c ++ ++ ++ ++ ++ ++ ++ MDK-BARE-METAL ++ 0x4 ++ ARM-ADS ++ ++ ++ STM32F207IG ++ STMicroelectronics ++ IRAM(0x20000000-0x2001FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(25000000) CPUTYPE("Cortex-M3") ++ ++ "STARTUP\ST\STM32F2xx\startup_stm32f2xx.s" ("STM32F2xx Startup Code") ++ UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000) ++ 5124 ++ stm32f2xx.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ SFD\ST\STM32F2xx\STM32F20x.sfr ++ 0 ++ ++ ++ ++ ST\STM32F2xx\ ++ ST\STM32F2xx\ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ .\MDK-BARE-METAL\ ++ STM32F2xx-MDK-BARE-METAL ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ .\Flash\ ++ 1 ++ 0 ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ 0 ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 3 ++ ++ ++ ++ ++ SARMCM3.DLL ++ -MPU ++ DARMSTM.DLL ++ -pSTM32F207IG ++ SARMCM3.DLL ++ -MPU ++ TARMSTM.DLL ++ -pSTM32F207IG ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 16 ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ ++ ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ ++ 0 ++ 9 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ..\MDK-ARM\config\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 4100 ++ ++ 0 ++ BIN\ULP2CM3.DLL ++ "" () ++ ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ "Cortex-M3" ++ ++ 0 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 8 ++ 0 ++ 0 ++ 0 ++ 3 ++ 3 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ ++ ++ ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ HAVE_CONFIG_H CYASSL_STM32F2xx __DBG_ITM MDK_CONF_BARE_METAL ++ ++ ..\MDK-ARM\CyaSSL;..\MDK-ARM\inc;..\STM32F2xx_StdPeriph_Lib\inc;..\POSIX;..\..\..\ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0x08000000 ++ 0x20000000 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CyaSSL Apps ++ ++ ++ echoclient.c ++ 1 ++ ..\..\..\examples\echoclient\echoclient.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ echoserver.c ++ 1 ++ ..\..\..\examples\echoserver\echoserver.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ test.c ++ 1 ++ ..\..\..\ctaocrypt\test\test.c ++ ++ ++ benchmark.c ++ 1 ++ ..\..\..\ctaocrypt\benchmark\benchmark.c ++ ++ ++ client.c ++ 1 ++ ..\..\..\examples\client\client.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ server.c ++ 1 ++ ..\..\..\examples\server\server.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ shell.c ++ 1 ++ ..\MDK-ARM\CyaSSL\shell.c ++ ++ ++ main.c ++ 1 ++ ..\MDK-ARM\CyaSSL\main.c ++ ++ ++ cert_data.c ++ 1 ++ ..\MDK-ARM\CyaSSL\cert_data.c ++ ++ ++ ++ ++ STM32F2xx_StdPeriph_Lib ++ ++ ++ MDK-ARM ++ ++ ++ Serial.c ++ 1 ++ c:\Keil\ARM\Boards\Keil\MCBSTM32F200\RL\FlashFS\SD_File\Serial.c ++ ++ ++ SDIO_STM32F2xx.c ++ 1 ++ c:\Keil\ARM\RL\FlashFS\Drivers\SDIO_STM32F2xx.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ FS_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\FS_CM3.lib ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ ++ ++ RTX_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\\RTX_CM3.lib ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ ++ ++ ETH_STM32F2xx.c ++ 1 ++ c:\Keil\ARM\RL\TCPnet\Drivers\ETH_STM32F2xx.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ TCPD_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\TCPD_CM3.lib ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ ++ ++ TCP_CM3.lib ++ 4 ++ c:\Keil\ARM\RV31\LIB\TCP_CM3.lib ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ ++ ++ system_stm32f2xx.c ++ 1 ++ C:\Keil\ARM\Startup\ST\STM32F2xx\system_stm32f2xx.c ++ ++ ++ ++ ++ CyaSSL Library ++ ++ ++ crl.c ++ 1 ++ ..\..\..\src\crl.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ internal.c ++ 1 ++ ..\..\..\src\internal.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ io.c ++ 1 ++ ..\..\..\src\io.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ keys.c ++ 1 ++ ..\..\..\src\keys.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ocsp.c ++ 1 ++ ..\..\..\src\ocsp.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ sniffer.c ++ 1 ++ ..\..\..\src\sniffer.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ssl.c ++ 1 ++ ..\..\..\src\ssl.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ tls.c ++ 1 ++ ..\..\..\src\tls.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ssl-dummy.c ++ 1 ++ ..\MDK-ARM\CyaSSL\ssl-dummy.c ++ ++ ++ ++ ++ Crypt/Cipher Library ++ ++ ++ aes.c ++ 1 ++ ..\..\..\ctaocrypt\src\aes.c ++ ++ ++ arc4.c ++ 1 ++ ..\..\..\ctaocrypt\src\arc4.c ++ ++ ++ asm.c ++ 1 ++ ..\..\..\ctaocrypt\src\asm.c ++ ++ ++ asn.c ++ 1 ++ ..\..\..\ctaocrypt\src\asn.c ++ ++ ++ camellia.c ++ 1 ++ ..\..\..\ctaocrypt\src\camellia.c ++ ++ ++ coding.c ++ 1 ++ ..\..\..\ctaocrypt\src\coding.c ++ ++ ++ des3.c ++ 1 ++ ..\..\..\ctaocrypt\src\des3.c ++ ++ ++ dh.c ++ 1 ++ ..\..\..\ctaocrypt\src\dh.c ++ ++ ++ dsa.c ++ 1 ++ ..\..\..\ctaocrypt\src\dsa.c ++ ++ ++ ecc.c ++ 1 ++ ..\..\..\ctaocrypt\src\ecc.c ++ ++ ++ ecc_fp.c ++ 1 ++ ..\..\..\ctaocrypt\src\ecc_fp.c ++ ++ ++ error.c ++ 1 ++ ..\..\..\ctaocrypt\src\error.c ++ ++ ++ hc128.c ++ 1 ++ ..\..\..\ctaocrypt\src\hc128.c ++ ++ ++ hmac.c ++ 1 ++ ..\..\..\ctaocrypt\src\hmac.c ++ ++ ++ integer.c ++ 1 ++ ..\..\..\ctaocrypt\src\integer.c ++ ++ ++ logging.c ++ 1 ++ ..\..\..\ctaocrypt\src\logging.c ++ ++ ++ md2.c ++ 1 ++ ..\..\..\ctaocrypt\src\md2.c ++ ++ ++ md4.c ++ 1 ++ ..\..\..\ctaocrypt\src\md4.c ++ ++ ++ md5.c ++ 1 ++ ..\..\..\ctaocrypt\src\md5.c ++ ++ ++ memory.c ++ 1 ++ ..\..\..\ctaocrypt\src\memory.c ++ ++ ++ misc.c ++ 1 ++ ..\..\..\ctaocrypt\src\misc.c ++ ++ ++ wc_port.c ++ 1 ++ ..\..\..\ctaocrypt\src\wc_port.c ++ ++ ++ pwdbased.c ++ 1 ++ ..\..\..\ctaocrypt\src\pwdbased.c ++ ++ ++ rabbit.c ++ 1 ++ ..\..\..\ctaocrypt\src\rabbit.c ++ ++ ++ random.c ++ 1 ++ ..\..\..\ctaocrypt\src\random.c ++ ++ ++ ripemd.c ++ 1 ++ ..\..\..\ctaocrypt\src\ripemd.c ++ ++ ++ rsa.c ++ 1 ++ ..\..\..\ctaocrypt\src\rsa.c ++ ++ ++ sha.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha.c ++ ++ ++ sha256.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha256.c ++ ++ ++ sha512.c ++ 1 ++ ..\..\..\ctaocrypt\src\sha512.c ++ ++ ++ tfm.c ++ 1 ++ ..\..\..\ctaocrypt\src\tfm.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Configuration ++ ++ ++ File_Config.c ++ 1 ++ ..\MDK-ARM\config\File_Config.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Net_Config.c ++ 1 ++ ..\MDK-ARM\config\Net_Config.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ config.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config.h ++ ++ ++ RTX_Conf_CM.c ++ 1 ++ ..\MDK-ARM\config\RTX_Conf_CM.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Net_Debug.c ++ 1 ++ ..\MDK-ARM\config\Net_Debug.c ++ ++ ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 11 ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 2 ++ 0 ++ 2 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ config-FS.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-FS.h ++ ++ ++ config-RTX-TCP-FS.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-RTX-TCP-FS.h ++ ++ ++ config-BARE-METAL.h ++ 5 ++ ..\MDK-ARM\CyaSSL\config-BARE-METAL.h ++ ++ ++ startup_stm32f2xx.s ++ 2 ++ ..\MDK-ARM\config\startup_stm32f2xx.s ++ ++ ++ ++ ++ CyaSSL-MDK ++ ++ ++ cyassl_MDK_ARM.c ++ 1 ++ ..\MDK-ARM\CyaSSL\cyassl_MDK_ARM.c ++ ++ ++ Retarget.c ++ 1 ++ ..\MDK-ARM\CyaSSL\Retarget.c ++ ++ ++ time-STM32F2xx.c ++ 1 ++ ..\STM32F2xx_StdPeriph_Lib\time-STM32F2xx.c ++ ++ ++ ++ ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/STM32F2xx_StdPeriph_Lib/time-STM32F2xx.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/STM32F2xx_StdPeriph_Lib/time-STM32F2xx.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK-ARM/STM32F2xx_StdPeriph_Lib/time-STM32F2xx.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK-ARM/STM32F2xx_StdPeriph_Lib/time-STM32F2xx.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,299 @@ ++/* main.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include "time.h" ++ ++#define PERIPH_BASE ((uint32_t)0x40000000) ++/*----------------------------------------------------------------------------- ++ * initialize RTC ++ *----------------------------------------------------------------------------*/ ++#include "stm32f2xx.h" ++ ++#define assert_param(a) ++ ++#define RTC_RSF_MASK ((uint32_t)0xFFFFFF5F) ++#define SYNCHRO_TIMEOUT ((uint32_t) 0x00008000) ++#define Bcd2ToByte(v) \ ++ ((((uint8_t)(v & (uint8_t)0xF0) >> (uint8_t)0x4) * 10) + (v & (uint8_t)0x0F)) ++#define RTC_TR_RESERVED_MASK ((uint32_t)0x007F7F7F) ++#define RTC_TR_MNT ((uint32_t)0x00007000) ++#define RTC_TR_MNU ((uint32_t)0x00000F00) ++ ++#define PWR_OFFSET (PWR_BASE - PERIPH_BASE) ++#define CR_OFFSET (PWR_OFFSET + 0x00) ++#define DBP_BitNumber 0x08 ++#define CR_DBP_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (DBP_BitNumber * 4)) ++#define RTC_INIT_MASK ((uint32_t)0xFFFFFFFF) ++#define INITMODE_TIMEOUT ((uint32_t) 0x00010000) ++ ++static void init_RTC() ++{ ++ __IO uint32_t initcounter = 0x00 ; ++ uint32_t initstatus = 0x00; /* Enable the PWR clock : RCC_APB1Periph_PWR */ ++ ((uint32_t *)RCC)[0x10] |= ((uint32_t)0x10000000) ; ++ ++ /* Allow access to RTC */ ++ *(__IO uint32_t *) CR_DBP_BB = ENABLE ; ++ /* RCC_LSEConfig(RCC_LSE_ON) */ ++ *(__IO uint8_t *) (RCC_BASE + 0x70) = ((uint8_t)0x00); ++ /* Reset LSEBYP bit */ ++ *(__IO uint8_t *) (RCC_BASE + 0x70) = ((uint8_t)0x00); ++ *(__IO uint8_t *) (RCC_BASE + 0x70) = ((uint8_t)0x01); ++ /* Wait till LSE is ready */ ++ while((RCC->BDCR << 0x2) == 0x0) { } ++ /* Select the RTC clock source: RCC_RTCCLKSource_LSE */ ++ ((RCC_TypeDef *)RCC)->BDCR |= (uint32_t)0x00000100; ++ ++ /* Enable the RTC Clock */ ++ *(__IO uint32_t *) (PERIPH_BB_BASE + (((RCC_BASE - PERIPH_BASE)+ 0x70) * 32) + (0x0F* 4)) = (uint32_t)ENABLE; ++ ++ *(__IO uint32_t *) CR_DBP_BB = (uint32_t)ENABLE; ++ RTC->ISR = (uint32_t) RTC_INIT_MASK; ++ do { ++ initstatus = RTC->ISR & RTC_ISR_INITF; ++ initcounter++; ++ } while((initcounter != INITMODE_TIMEOUT) && (initstatus == 0x00)); ++ ++ /* Disable the write protection for RTC registers */ ++ RTC->WPR = 0xCA; ++ RTC->WPR = 0x53; ++ ++ RTC->CR &= ((uint32_t)~(RTC_CR_FMT)); /* Clear RTC CR FMT Bit */ ++ /* Set RTC_CR register */ ++ RTC->CR |= ((uint32_t)0x00000000) ; /* RTC_HourFormat_24 */ ++ ++ /* Configure the RTC PRER */ ++ RTC->PRER = 0x7f ; ++ RTC->PRER |= (uint32_t)(0xff << 16); ++ ++ /* Exit Initialization mode */ ++ RTC->ISR &= (uint32_t)~RTC_ISR_INIT; ++ ++ /* Enable the write protection for RTC registers */ ++ RTC->WPR = 0xFF; ++} ++ ++/*----------------------------------------------------------------------------- ++ * initialize TIM ++ *----------------------------------------------------------------------------*/ ++#define RCC_APB1Periph_TIM2 ((uint32_t)0x00000001) ++ ++static void init_TIM() ++{ ++ uint16_t tmpcr1 = 0; ++ ++ ((uint32_t *)RCC)[0x10] |= RCC_APB1Periph_TIM2 ; ++ ++ tmpcr1 = TIM2->CR1 ; ++ tmpcr1 &= (uint16_t) (~(((uint16_t)0x0010) | ((uint16_t)0x0060) )); ++ /* CR1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS) */ ++ tmpcr1 |= (uint16_t)0x0000 ; /* CR1 |= TIM_CounterMode_Up */ ++ TIM2->CR1= tmpcr1 ; ++ ++ TIM2->ARR = 0xffffffff ; /* ARR= TIM_Period */ ++ TIM2->PSC = 60 ; /* PSC = TIM_Prescaler */ ++ TIM2->EGR = ((uint16_t)0x0001) ; /* EGR = TIM_PSCReloadMode_Immediate */ ++ ++ *(uint16_t *)(PERIPH_BASE+0x0) |=((uint16_t)0x0001) ; ++ /* TIM_Cmd(TIM2, ENABLE) ; */ ++} ++ ++void init_time(void) { ++ init_RTC() ; ++ init_TIM() ; ++} ++ ++static void GetTime(uint8_t *h, uint8_t *m, uint8_t *s) ++{ ++ uint32_t tmpreg = 0; ++ tmpreg = (uint32_t)(RTC->TR & RTC_TR_RESERVED_MASK); ++ *h = (uint8_t)Bcd2ToByte((uint8_t)((tmpreg & (RTC_TR_HT | RTC_TR_HU)) >> 16)); ++ *m = (uint8_t)Bcd2ToByte((uint8_t)((tmpreg & (RTC_TR_MNT | RTC_TR_MNU)) >>8)); ++ *s = (uint8_t)Bcd2ToByte((tmpreg & (RTC_TR_ST | RTC_TR_SU))); ++} ++ ++static uint32_t ByteToBcd2(uint8_t Value) ++{ ++ uint8_t bcdhigh = 0; ++ while (Value >= 10) { ++ bcdhigh++; ++ Value -= 10; ++ } ++ return ((uint8_t)(bcdhigh << 4) | Value); ++} ++ ++static void SetTime(uint8_t h, uint8_t m, uint8_t s) ++{ ++ __IO uint32_t synchrocounter = 0; ++ uint32_t synchrostatus = 0x00; ++ __IO uint32_t initcounter = 0; ++ uint32_t initstatus = 0x00; ++ uint32_t tmpreg ; ++ ++ tmpreg = ((ByteToBcd2(h) << 16) | (ByteToBcd2(m) << 8) | ByteToBcd2(s)) ; ++ /* Disable the write protection for RTC registers */ ++ RTC->WPR = 0xCA; ++ RTC->WPR = 0x53; ++ RTC->ISR &= (uint32_t)~RTC_ISR_INIT; ++ ++ RTC->ISR = (uint32_t)RTC_INIT_MASK; ++ ++ /* Wait till RTC is in INIT state and if Time out is reached exit */ ++ do { ++ initstatus = RTC->ISR & RTC_ISR_INITF; ++ initcounter++; ++ } while((initcounter != INITMODE_TIMEOUT) && (initstatus == 0x00)); ++ ++ RTC->TR = (uint32_t)(tmpreg & RTC_TR_RESERVED_MASK); ++ ++ RTC->ISR &= (uint32_t)RTC_RSF_MASK; ++ /* Wait the registers to be synchronised */ ++ do { ++ synchrostatus = RTC->ISR & RTC_ISR_RSF; ++ synchrocounter++; ++ } while((synchrocounter != SYNCHRO_TIMEOUT) && (synchrostatus == 0x00)); ++ ++ RTC->WPR = 0xFF; ++} ++ ++static void GetDate(uint8_t *y, uint8_t *m, uint8_t *d) ++{ ++ uint32_t tmpreg = 0; ++ tmpreg = (uint32_t)(RTC->DR & RTC_TR_RESERVED_MASK); ++ *y = (uint8_t)Bcd2ToByte((uint8_t)((tmpreg & (RTC_DR_YT|RTC_DR_YU)) >>16)); ++ *m = (uint8_t)Bcd2ToByte((uint8_t)((tmpreg & (RTC_DR_MT|RTC_DR_MU)) >> 8)); ++ *d = (uint8_t)Bcd2ToByte((uint8_t)(tmpreg & (RTC_DR_DT |RTC_DR_DU))); ++} ++ ++static void SetDate(uint8_t y, uint8_t m, uint8_t d) ++{ ++ __IO uint32_t synchrocounter = 0; ++ uint32_t synchrostatus = 0x00; ++ __IO uint32_t initcounter = 0; ++ uint32_t initstatus = 0x00; ++ uint32_t tmpreg = 0 ; ++ ++ tmpreg = ((ByteToBcd2(y) << 16) | (ByteToBcd2(m) << 8) | ByteToBcd2(d)) ; ++ /* Disable the write protection for RTC registers */ ++ RTC->WPR = 0xCA; ++ RTC->WPR = 0x53; ++ RTC->ISR &= (uint32_t)~RTC_ISR_INIT; ++ ++ RTC->ISR = (uint32_t)RTC_INIT_MASK; ++ ++ /* Wait till RTC is in INIT state and if Time out is reached exit */ ++ do { ++ initstatus = RTC->ISR & RTC_ISR_INITF; ++ initcounter++; ++ } while((initcounter != INITMODE_TIMEOUT) && (initstatus == 0x00)); ++ ++ RTC->DR = (uint32_t)(tmpreg & RTC_TR_RESERVED_MASK); ++ ++ RTC->ISR &= (uint32_t)RTC_RSF_MASK; ++ /* Wait the registers to be synchronised */ ++ do { ++ synchrostatus = RTC->ISR & RTC_ISR_RSF; ++ synchrocounter++; ++ } while((synchrocounter != SYNCHRO_TIMEOUT) && (synchrostatus == 0x00)); ++ ++ RTC->WPR = 0xFF; ++} ++ ++ ++#include ++void CYASSL_MSG(const char *msg) ; ++ ++struct tm *Cyassl_MDK_gmtime(const time_t *c) ++{ ++ uint8_t h, m, s ; ++ uint8_t y, mo, d ; ++ static struct tm date ; ++ ++ GetTime(&h, &m, &s) ; ++ GetDate(&y, &mo, &d) ; ++ ++ date.tm_year = y + 100 ; ++ date.tm_mon = mo - 1 ; ++ date.tm_mday = d ; ++ date.tm_hour = h ; ++ date.tm_min = m ; ++ date.tm_sec = s ; ++ ++ #if defined(DEBUG_CYASSL) ++ { ++ char msg[100] ; ++ sprintf(msg, ++ "Debug::Cyassl_KEIL_gmtime(DATE=/%2d/%02d/%04d TIME=%02d:%02d:%02d)\n", ++ d, mo, y+2000, h, m, s) ; ++ CYASSL_MSG(msg) ; ++ } ++ #endif ++ ++ return(&date) ; ++} ++ ++double current_time() ++{ ++ return ((double)TIM2->CNT/1000000.0) ; ++} ++ ++typedef struct func_args { ++ int argc; ++ char** argv; ++ int return_code; ++} func_args; ++ ++void time_main(void *args) ++{ ++ char * datetime ; ++ uint8_t h, m, s ; ++ uint8_t y, mo, d ; ++ ++ if( args == NULL || ((func_args *)args)->argc == 1) { ++ GetTime(&h, &m, &s) ; ++ GetDate(&y, &mo, &d) ; ++ printf("Date: %d/%d/%d, Time: %02d:%02d:%02d\n", ++ mo, d, y+2000, h, m, s) ; ++ } else if(((func_args *)args)->argc == 3 && ++ ((func_args *)args)->argv[1][0] == '-' && ++ ((func_args *)args)->argv[1][1] == 'd' ) { ++ datetime = ((func_args *)args)->argv[2]; ++ sscanf(datetime, "%d/%d/%d", (int *)&mo, (int *)&d, (int *) &y) ; ++ SetDate(y-2000, mo, d) ; ++ } else if(((func_args *)args)->argc == 3 && ++ ((func_args *)args)->argv[1][0] == '-' && ++ ((func_args *)args)->argv[1][1] == 't' ) { ++ datetime = ((func_args *)args)->argv[2]; ++ sscanf(datetime, "%d:%d:%d", ++ (int *)&h, (int *)&m, (int *)&s) ; ++ SetTime(h, m, s) ; ++ } else printf("Invalid argument\n") ; ++} ++ ++ ++/******************************************************************* ++ time() ++********************************************************************/ ++time_t time(time_t * t) { return 0 ; } +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Conf/config-Crypt.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Conf/config-Crypt.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Conf/config-Crypt.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Conf/config-Crypt.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,185 @@ ++/* config-FS.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++ ++// <<< Use Configuration Wizard in Context Menu >>> ++ ++// wolfCrypt Configuration ++ ++// Cert/Key Strage ++// Cert Storage <0=> SD Card <1=> Mem Buff (1024bytes) <2=> Mem Buff (2048bytes) ++#define MDK_CONF_CERT_BUFF 0 ++#if MDK_CONF_CERT_BUFF== 1 ++#define USE_CERT_BUFFERS_1024 ++#elif MDK_CONF_CERT_BUFF == 2 ++#define USE_CERT_BUFFERS_2048 ++#endif ++// ++ ++// Crypt Algrithm ++ ++// MD5, SHA, SHA-256, AES, RC4, ASN, RSA ++// ++ ++// MD2 ++#define MDK_CONF_MD2 0 ++#if MDK_CONF_MD2 == 1 ++#define CYASSL_MD2 ++#endif ++// ++// MD4 ++#define MDK_CONF_MD4 1 ++#if MDK_CONF_MD4 == 0 ++#define NO_MD4 ++#endif ++// ++// SHA-384 ++// This has to be with SHA512 ++#define MDK_CONF_SHA384 0 ++#if MDK_CONF_SHA384 == 1 ++#define CYASSL_SHA384 ++#endif ++// ++// SHA-512 ++#define MDK_CONF_SHA512 0 ++#if MDK_CONF_SHA512 == 1 ++#define CYASSL_SHA512 ++#endif ++// ++// RIPEMD ++#define MDK_CONF_RIPEMD 0 ++#if MDK_CONF_RIPEMD == 1 ++#define CYASSL_RIPEMD ++#endif ++// ++// HMAC ++#define MDK_CONF_HMAC 1 ++#if MDK_CONF_HMAC == 0 ++#define NO_HMAC ++#endif ++// ++// HC128 ++#define MDK_CONF_HC128 0 ++#if MDK_CONF_HC128 == 1 ++#define HAVE_HC128 ++#endif ++// ++// RABBIT ++#define MDK_CONF_RABBIT 1 ++#if MDK_CONF_RABBI == 0 ++#define NO_RABBIT ++#endif ++// ++ ++// AEAD ++#define MDK_CONF_AEAD 0 ++#if MDK_CONF_AEAD == 1 ++#define HAVE_AEAD ++#endif ++// ++// DES3 ++#define MDK_CONF_DES3 1 ++#if MDK_CONF_DES3 == 0 ++#define NO_DES3 ++#endif ++// ++// CAMELLIA ++#define MDK_CONF_CAMELLIA 0 ++#if MDK_CONF_CAMELLIA == 1 ++#define HAVE_CAMELLIA ++#endif ++// ++ ++// DH ++// need this for CYASSL_SERVER, OPENSSL_EXTRA ++#define MDK_CONF_DH 1 ++#if MDK_CONF_DH == 0 ++#define NO_DH ++#endif ++// ++// DSA ++#define MDK_CONF_DSA 1 ++#if MDK_CONF_DSA == 0 ++#define NO_DSA ++#endif ++// ++// PWDBASED ++#define MDK_CONF_PWDBASED 1 ++#if MDK_CONF_PWDBASED == 0 ++#define NO_PWDBASED ++#endif ++// ++ ++// ECC ++#define MDK_CONF_ECC 0 ++#if MDK_CONF_ECC == 1 ++#define HAVE_ECC ++#endif ++// ++// PSK ++#define MDK_CONF_PSK 1 ++#if MDK_CONF_PSK == 0 ++#define NO_PSK ++#endif ++// ++// AESCCM (Turn off Hardware Crypt) ++#define MDK_CONF_AESCCM 0 ++#if MDK_CONF_AESCCM == 1 ++#define HAVE_AESCCM ++#endif ++// ++// AESGCM (Turn off Hardware Crypt) ++#define MDK_CONF_AESGCM 0 ++#if MDK_CONF_AESGCM == 1 ++#define HAVE_AESGCM ++#define BUILD_AESGCM ++#endif ++// ++// NTRU (need License, "crypto_ntru.h") ++#define MDK_CONF_NTRU 0 ++#if MDK_CONF_NTRU == 1 ++#define HAVE_NTRU ++#endif ++// ++// ++ ++// Hardware Crypt (See document for usage) ++// Hardware RNG ++#define MDK_CONF_STM32F2_RNG 0 ++#if MDK_CONF_STM32F2_RNG == 1 ++#define STM32F2_RNG ++#else ++ ++#endif ++// ++// Hardware Crypt ++#define MDK_CONF_STM32F2_CRYPTO 0 ++#if MDK_CONF_STM32F2_CRYPTO == 1 ++#define STM32F2_CRYPTO ++#endif ++// ++ ++// ++ ++ ++ ++// ++// <<< end of configuration section >>> +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Conf/config-CyaSSL.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Conf/config-CyaSSL.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Conf/config-CyaSSL.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Conf/config-CyaSSL.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,144 @@ ++/* config-RTX-TCP-FS.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++ ++/**** CyaSSL for KEIL-RL Configuration ****/ ++ ++#define __CORTEX_M3__ ++#define CYASSL_MDK_ARM ++#define NO_WRITEV ++#define NO_CYASSL_DIR ++#define NO_MAIN_DRIVER ++ ++ ++#define CYASSL_DER_LOAD ++#define HAVE_NULL_CIPHER ++ ++#define HAVE_KEIL_RTX ++#define CYASSL_CMSIS_RTOS ++#define CYASSL_KEIL_TCP_NET ++ ++ ++// <<< Use Configuration Wizard in Context Menu >>> ++// CyaSSL Configuration ++ ++// SSL (Included by default) ++// ++ ++// TLS ++#define MDK_CONF_TLS 1 ++#if MDK_CONF_TLS == 0 ++#define NO_TLS ++#endif ++// ++ ++// CRL ++#define MDK_CONF_DER_LOAD 0 ++#if MDK_CONF_DER_LOAD == 1 ++#define CYASSL_DER_LOAD ++#endif ++// ++// OpenSSL Extra ++#define MDK_CONF_OPENSSL_EXTRA 1 ++#if MDK_CONF_OPENSSL_EXTRA == 1 ++#define OPENSSL_EXTRA ++#endif ++// ++// ++ ++// Cert/Key Generation ++// CertGen ++#define MDK_CONF_CERT_GEN 0 ++#if MDK_CONF_CERT_GEN == 1 ++#define CYASSL_CERT_GEN ++#endif ++// ++// KeyGen ++#define MDK_CONF_KEY_GEN 0 ++#if MDK_CONF_KEY_GEN == 1 ++#define CYASSL_KEY_GEN ++#endif ++// ++// ++ ++// Others ++ ++// Inline ++#define MDK_CONF_INLINE 0 ++#if MDK_CONF_INLINE == 0 ++#define NO_INLINE ++#endif ++// ++// Debug ++// Debug Message ++#define MDK_CONF_DebugMessage 0 ++#if MDK_CONF_DebugMessage == 1 ++#define DEBUG_CYASSL ++#endif ++// ++// Check malloc ++#define MDK_CONF_CheckMalloc 1 ++#if MDK_CONF_CheckMalloc == 1 ++#define CYASSL_MALLOC_CHECK ++#endif ++// ++ ++ ++// ++// ErrNo.h ++#define MDK_CONF_ErrNo 0 ++#if MDK_CONF_ErrNo == 1 ++#define HAVE_ERRNO ++#endif ++// ++// Error Strings ++#define MDK_CONF_ErrorStrings 1 ++#if MDK_CONF_ErrorStrings == 0 ++#define NO_ERROR_STRINGS ++#endif ++// ++// zlib (need "zlib.h") ++#define MDK_CONF_LIBZ 0 ++#if MDK_CONF_LIBZ == 1 ++#define HAVE_LIBZ ++#endif ++// ++// CAVIUM (need CAVIUM headers) ++#define MDK_CONF_CAVIUM 0 ++#if MDK_CONF_CAVIUM == 1 ++#define HAVE_CAVIUM ++#endif ++// ++// Small Stack ++#define MDK_CONF_SmallStack 1 ++#if MDK_CONF_SmallStack == 0 ++#define NO_CYASSL_SMALL_STACK ++#endif ++// ++// Use Fast Math ++#define MDK_CONF_FASTMATH 0 ++#if MDK_CONF_FASTMATH == 1 ++#define USE_FAST_MATH ++#endif ++// ++// ++ ++// <<< end of configuration section >>> +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Inc/cert_data.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Inc/cert_data.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Inc/cert_data.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Inc/cert_data.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,39 @@ ++#ifndef CYASSL_CERT_DATA_H ++#define CYASSL_CERT_DATA_H ++ ++#ifdef USE_CERT_BUFFERS_1024 ++extern const unsigned char client_key_der_1024[] ; ++extern int sizeof_client_key_der_1024 ; ++/* ./certs/1024/client-cert.der, 1024-bit */ ++extern const unsigned char client_cert_der_1024[] ; ++extern int sizeof_client_cert_der_1024 ; ++/* ./certs/1024/dh1024.der, 1024-bit */ ++extern const unsigned char dh_key_der_1024[] ; ++extern int sizeof_dh_key_der_1024 ; ++/* ./certs/1024/dsa1024.der, 1024-bit */ ++extern const unsigned char dsa_key_der_1024[] ; ++extern int sizeof_dsa_key_der_1024 ; ++/* ./certs/1024/rsa1024.der, 1024-bit */ ++extern const unsigned char rsa_key_der_1024[] ; ++extern int sizeof_rsa_key_der_1024 ; ++ ++#elif defined(USE_CERT_BUFFERS_2048) ++/* ./certs/client-key.der, 2048-bit */ ++extern const unsigned char client_key_der_2048[] ; ++extern int sizeof_client_key_der_2048 ; ++/* ./certs/client-cert.der, 2048-bit */ ++extern const unsigned char client_cert_der_2048[] ; ++extern int sizeof_client_cert_der_2048 ; ++/* ./certs/dh2048.der, 2048-bit */ ++extern const unsigned char dh_key_der_2048[] ; ++extern int sizeof_dh_key_der_2048 ; ++/* ./certs/dsa2048.der, 2048-bit */ ++extern const unsigned char dsa_key_der_2048[] ; ++extern int sizeof_dsa_key_der_2048; ++/* ./certs/rsa2048.der, 2048-bit */ ++extern const unsigned char rsa_key_der_2048[] ; ++extern int sizeof_rsa_key_der_2048 ; ++#endif ++ ++#endif ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Inc/config.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Inc/config.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Inc/config.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Inc/config.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,62 @@ ++/* config.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++#define __CORTEX_M3__ ++#define CYASSL_MDK_ARM ++#define CYASSL_MDK5 ++#define CYASSL_CMSIS_RTOS ++ ++#define NO_WRITEV ++#define NO_CYASSL_DIR ++#define BENCH_EMBEDDED ++ ++#define CYASSL_DER_LOAD ++#define HAVE_NULL_CIPHER ++#define NO_MAIN_DRIVER ++ ++#if defined(MDK_CONF_CYASSL) ++#define CYASSL_MDK_SHELL ++#include "config-Crypt.h" ++#include "config-CyaSSL.h" ++#elif defined(MDK_CONF_SimpleClient) ++#include "config-Crypt.h" ++#include "config-CyaSSL.h" ++#elif defined(MDK_CONF_SimpleServer) ++#include "config-Crypt.h" ++#include "config-CyaSSL.h" ++#elif defined(MDK_CONF_EchoClient) ++#include "config-Crypt.h" ++#include "config-CyaSSL.h" ++#elif defined(MDK_CONF_EchoServer) ++#include "config-Crypt.h" ++#include "config-CyaSSL.h" ++#elif defined(MDK_CONF_Benchmark) ++#define SINGLE_THREADED ++#define NO_INLINE ++#include "config-Crypt.h" ++#elif defined(MDK_CONF_CryptTest) ++#define SINGLE_THREADED ++#define NO_INLINE ++#include "config-Crypt.h" ++ ++#endif ++ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Inc/cyassl_MDK_ARM.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Inc/cyassl_MDK_ARM.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Inc/cyassl_MDK_ARM.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Inc/cyassl_MDK_ARM.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,106 @@ ++/* cyassl_KEIL_RL.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++/******************************************************************************/ ++/** This file is for defining types, values for specific to KEIL-MDK-ARM. **/ ++/******************************************************************************/ ++#ifndef CYASSL_KEIL_RL_H ++#define CYASSL_KEIL_RL_H ++ ++ ++ ++#include ++ ++/* Go to STDIN */ ++#define fgets(buff, sz, fd) Cyassl_fgets(buff, sz, fd) ++extern char * Cyassl_fgets ( char * str, int num, FILE * f ) ; ++ ++#define SOCKET_T int ++ ++/*** #include ***/ ++#define NUMBITSPERBYTE 8 ++#define FD_SETSIZE 10 ++ ++typedef long fd_mask; ++#define NFDBITS (sizeof(fd_mask) * NUMBITSPERBYTE) /* bits per mask */ ++ ++typedef struct fd_set { ++ fd_mask fds_bits[(FD_SETSIZE + NFDBITS - 1) / NFDBITS]; ++} fd_set; ++ ++/*** #include ***/ ++struct timeval { ++ long tv_sec; /* seconds */ ++ long tv_usec; /* microseconds */ ++}; ++ ++ ++#if defined(CYASSL_KEIL_TCP_NET) ++ ++ ++#if defined(CYASSL_MDK5) ++#define SCK_EWOULDBLOCK BSD_ERROR_WOULDBLOCK ++#define SCK_ETIMEOUT BSD_ERROR_TIMEOUT ++#include "rl_net.h" ++#endif ++ ++typedef int socklen_t ; ++ ++/* for avoiding conflict with KEIL-TCPnet BSD socket */ ++/* Bodies are in cyassl_KEIL_RL.c */ ++#define connect Cyassl_connect ++#define accept Cyassl_accept ++#define recv Cyassl_recv ++#define send Cyassl_send ++#define sleep Cyassl_sleep ++ ++/* for avoiding conflicting with KEIL-TCPnet TCP socket */ ++/* Bodies are in test.h */ ++#define tcp_connect Cyassl_tcp_connect ++#define tcp_socket Cyassl_tcp_soket ++#define tcp_listen Cyassl_tcp_listen ++#define tcp_select Cyassl_tcp_select ++ ++extern int Cyassl_connect(int sd, const struct sockaddr * sa, int sz) ; ++extern int Cyassl_accept(int sd, struct sockaddr *addr, socklen_t *addrlen); ++extern int Cyassl_recv(int sd, void *buf, size_t len, int flags); ++extern int Cyassl_send(int sd, const void *buf, size_t len, int flags); ++extern void Cyassl_sleep(int sec) ; ++extern int Cyassl_tcp_select(int sd, int timeout) ; ++ ++/** KEIL-RL TCPnet ****/ ++/* TCPnet BSD socket does not have following functions. */ ++extern char *inet_ntoa(struct in_addr in); ++extern unsigned long inet_addr(const char *cp); ++extern int setsockopt(int sockfd, int level, int optname, ++ const void *optval, socklen_t optlen); ++extern int select(int nfds, fd_set *readfds, fd_set *writefds, ++ fd_set *exceptfds, const struct timeval *timeout); ++ ++#endif /* CYASSL_KEIL_TCP_NET */ ++ ++ ++/* CyaSSL MDK-ARM time functions */ ++#include ++struct tm *Cyassl_MDK_gmtime(const time_t *c) ; ++extern double current_time(void) ; ++ ++#endif /* CYASSL_KEIL_RL_H */ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/Abstract.txt mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/Abstract.txt +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/Abstract.txt 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/Abstract.txt 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,15 @@ ++This program is a simple benchmark of wolfCrypt library. ++ ++In order to run this benchmark, copy ++{PACK}\wolfSSL\CyaSSL\{version}\cyassl\certs folder and files to the SD memory. ++ ++For benchmark configuration, refer config-Crypt.h. ++ ++For the hardware crypt on config-Crypt.h, download ++STSW-STM32062: STM32F2xx standard peripherals library at ++http://www.st.com/. Copy Libraries\STM32F2xx_StdPeriph_Driver\{inc,src} to ++ {PACK}\cyassl\IDE\MDK5-ARM\STM32F2xx_StdPeriph_Lib ++ ++Support ++------- ++Please send questions or comments to support@wolfssl.com +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/CryptBenchmark.uvoptx mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/CryptBenchmark.uvoptx +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/CryptBenchmark.uvoptx 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/CryptBenchmark.uvoptx 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,995 @@ ++ ++ ++ ++ 1.0 ++ ++
### uVision Project, (C) Keil Software
++ ++ ++ *.c ++ *.s*; *.src; *.a* ++ *.obj ++ *.lib ++ *.txt; *.h; *.inc ++ *.plm ++ *.cpp ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ CryptBenchmark ++ 0x4 ++ ARM-ADS ++ ++ 120000000 ++ ++ 1 ++ 1 ++ 0 ++ 1 ++ ++ ++ 1 ++ 65535 ++ 0 ++ 0 ++ 0 ++ ++ ++ 79 ++ 66 ++ 8 ++ .\Object\ ++ ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ ++ ++ 1 ++ 0 ++ 1 ++ ++ 255 ++ ++ ++ 0 ++ Schematics (MCBSTM32F200) ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\Documents\mcbstm32f200-schematics.pdf ++ ++ ++ 1 ++ User Manual (MCBSTM32F200) ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\Documents\mcbstm32f200.chm ++ ++ ++ 2 ++ MCBSTM32F200 Evaluation Board Web Page (MCBSTM32F200) ++ http://www.keil.com/mcbstm32f200/ ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 8 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ .\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ 0 ++ DLGTARM ++ (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) ++ ++ ++ 0 ++ ARMDBGFLAGS ++ ++ ++ ++ 0 ++ ULP2CM3 ++ -UP1135060 -O206 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO19 -TC120000000 -TP18 -TDX0 -TDD0 -TDS8000 -TDT0 -TDC1F -TIE1 -TIP1 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024.flm -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm) ++ ++ ++ 0 ++ DLGUARM ++ ++ ++ ++ 0 ++ UL2CM3 ++ UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32F2xx_1024 -FL0100000 -FS08000000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.FLM) ++ ++ ++ ++ ++ ++ 1 ++ 8 ++ 0x20000408 ++ ++ ++ ++ ++ 2 ++ 8 ++ 0x8004dc8 ++ ++ ++ ++ 0 ++ ++ ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ Source ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\main.c ++ main.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 2 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\benchmark.c ++ benchmark.c ++ 0 ++ 0 ++ ++ ++ ++ ++ Configuration ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 2 ++ 3 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\wolfSSL\config-Crypt.h ++ config-Crypt.h ++ 0 ++ 0 ++ ++ ++ 2 ++ 4 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\wolfSSL\settings.h ++ settings.h ++ 0 ++ 0 ++ ++ ++ ++ ++ Documentation ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 3 ++ 5 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\Abstract.txt ++ Abstract.txt ++ 0 ++ 0 ++ ++ ++ ++ ++ Devices ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 4 ++ 6 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\time-CortexM3-4.c ++ time-CortexM3-4.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 7 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\time-dummy.c ++ time-dummy.c ++ 0 ++ 0 ++ ++ ++ ++ ++ ::CMSIS ++ 1 ++ 0 ++ 0 ++ 1 ++ ++ 5 ++ 8 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\CMSIS\RTX_Conf_CM.c ++ RTX_Conf_CM.c ++ 1 ++ 0 ++ ++ ++ 5 ++ 9 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.4\CMSIS_RTX\Lib\ARM\RTX_CM3.lib ++ RTX_CM3.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Device ++ 1 ++ 0 ++ 0 ++ 1 ++ ++ 6 ++ 10 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\RTE_Device.h ++ RTE_Device.h ++ 1 ++ 0 ++ ++ ++ 6 ++ 11 ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ startup_stm32f2xx.s ++ 1 ++ 0 ++ ++ ++ 6 ++ 12 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ system_stm32f2xx.c ++ 1 ++ 0 ++ ++ ++ 6 ++ 13 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\DMA_STM32F2xx.c ++ DMA_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 6 ++ 14 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\GPIO_STM32F2xx.c ++ GPIO_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Drivers ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 7 ++ 15 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\MCI_STM32F2xx.c ++ MCI_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ ++ ++ ::File System ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 8 ++ 16 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\File_System\FS_Config.c ++ FS_Config.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 17 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\File_System\FS_Config_MC_0.h ++ FS_Config_MC_0.h ++ 1 ++ 0 ++ ++ ++ 8 ++ 18 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\FileSystem\Lib\ARM\FS_LFN_CM3_L.lib ++ FS_LFN_CM3_L.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::wolfSSL ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 9 ++ 19 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\config-Crypt.h ++ config-Crypt.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 20 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\settings.h ++ settings.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 21 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\cyassl_MDK_ARM.c ++ cyassl_MDK_ARM.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 22 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\ssl-dummy.c ++ ssl-dummy.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 23 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\aes.c ++ aes.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 24 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\arc4.c ++ arc4.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 25 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asm.c ++ asm.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 26 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asn.c ++ asn.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 27 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\blake2b.c ++ blake2b.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 28 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\camellia.c ++ camellia.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 29 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\coding.c ++ coding.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 30 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\compress.c ++ compress.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 31 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\des3.c ++ des3.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 32 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dh.c ++ dh.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 33 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dsa.c ++ dsa.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 34 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc.c ++ ecc.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 35 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc_fp.c ++ ecc_fp.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 36 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\error.c ++ error.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 37 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hc128.c ++ hc128.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 38 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hmac.c ++ hmac.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 39 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\integer.c ++ integer.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 40 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\logging.c ++ logging.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 41 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md2.c ++ md2.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 42 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md4.c ++ md4.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 43 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md5.c ++ md5.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 44 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\memory.c ++ memory.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 45 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\misc.c ++ misc.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 46 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\pwdbased.c ++ pwdbased.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 47 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rabbit.c ++ rabbit.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 48 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\random.c ++ random.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 49 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ripemd.c ++ ripemd.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 50 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rsa.c ++ rsa.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 51 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha.c ++ sha.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 52 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha256.c ++ sha256.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 53 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha512.c ++ sha512.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 54 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\tfm.c ++ tfm.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 55 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\wc_port.c ++ wc_port.c ++ 1 ++ 0 ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/CryptBenchmark.uvprojx mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/CryptBenchmark.uvprojx +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/CryptBenchmark.uvprojx 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/CryptBenchmark.uvprojx 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,975 @@ ++ ++ ++ ++ 2.1 ++ ++
### uVision Project, (C) Keil Software
++ ++ ++ ++ CryptBenchmark ++ 0x4 ++ ARM-ADS ++ ++ ++ STM32F207IG ++ STMicroelectronics ++ IRAM(0x20000000,0x20000) IROM(0x08000000,0x100000) CPUTYPE("Cortex-M3") CLOCK(120000000) ELITTLE ++ ++ ++ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm)) ++ 0 ++ $$Device:STM32F207IG$Device\Include\stm32f2xx.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ $$Device:STM32F207IG$SVD\STM32F20x.svd ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ .\Object\ ++ CryptBenchmark ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ .\Object\ ++ 1 ++ 0 ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ 0 ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 3 ++ ++ ++ 1 ++ ++ ++ SARMCM3.DLL ++ -REMAP -MPU ++ DCM.DLL ++ -pCM3 ++ SARMCM3.DLL ++ -MPU ++ TCM.DLL ++ -pCM3 ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 16 ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ ++ 0 ++ 8 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ .\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 4100 ++ ++ 1 ++ BIN\ULP2CM3.DLL ++ "" () ++ ++ ++ ++ ++ 0 ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ "Cortex-M3" ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 8 ++ 0 ++ 0 ++ 0 ++ 3 ++ 3 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ ++ ++ ++ 1 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ HAVE_CONFIG_H MDK_CONF_Benchmark ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0x08000000 ++ 0x20000000 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Source ++ ++ ++ main.c ++ 1 ++ .\main.c ++ ++ ++ benchmark.c ++ 1 ++ .\benchmark.c ++ ++ ++ ++ ++ Configuration ++ ++ ++ config-Crypt.h ++ 5 ++ .\RTE\wolfSSL\config-Crypt.h ++ ++ ++ settings.h ++ 5 ++ .\RTE\wolfSSL\settings.h ++ ++ ++ ++ ++ Documentation ++ ++ ++ Abstract.txt ++ 5 ++ .\Abstract.txt ++ ++ ++ ++ ++ Devices ++ ++ ++ time-CortexM3-4.c ++ 1 ++ .\time-CortexM3-4.c ++ ++ ++ time-dummy.c ++ 1 ++ .\time-dummy.c ++ ++ ++ ++ ++ ::CMSIS ++ ++ ++ RTX_Conf_CM.c ++ 1 ++ RTE\CMSIS\RTX_Conf_CM.c ++ ++ ++ RTX_CM3.lib ++ 4 ++ C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.4\CMSIS_RTX\Lib\ARM\RTX_CM3.lib ++ ++ ++ ++ ++ ::Device ++ ++ ++ RTE_Device.h ++ 5 ++ RTE\Device\STM32F207IG\RTE_Device.h ++ ++ ++ startup_stm32f2xx.s ++ 2 ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ ++ ++ system_stm32f2xx.c ++ 1 ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ ++ ++ DMA_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\DMA_STM32F2xx.c ++ ++ ++ GPIO_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\GPIO_STM32F2xx.c ++ ++ ++ ++ ++ ::Drivers ++ ++ ++ MCI_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\MCI_STM32F2xx.c ++ ++ ++ ++ ++ ::File System ++ ++ ++ FS_Config.c ++ 1 ++ RTE\File_System\FS_Config.c ++ ++ ++ FS_Config_MC_0.h ++ 5 ++ RTE\File_System\FS_Config_MC_0.h ++ ++ ++ FS_LFN_CM3_L.lib ++ 4 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\FileSystem\Lib\ARM\FS_LFN_CM3_L.lib ++ ++ ++ ++ ++ ::wolfSSL ++ ++ ++ config-Crypt.h ++ 5 ++ RTE\wolfSSL\config-Crypt.h ++ ++ ++ settings.h ++ 5 ++ RTE\wolfSSL\settings.h ++ ++ ++ cyassl_MDK_ARM.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\cyassl_MDK_ARM.c ++ ++ ++ ssl-dummy.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\ssl-dummy.c ++ ++ ++ aes.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\aes.c ++ ++ ++ arc4.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\arc4.c ++ ++ ++ asm.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asm.c ++ ++ ++ asn.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asn.c ++ ++ ++ blake2b.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\blake2b.c ++ ++ ++ camellia.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\camellia.c ++ ++ ++ coding.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\coding.c ++ ++ ++ compress.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\compress.c ++ ++ ++ des3.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\des3.c ++ ++ ++ dh.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dh.c ++ ++ ++ dsa.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dsa.c ++ ++ ++ ecc.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc.c ++ ++ ++ ecc_fp.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc_fp.c ++ ++ ++ error.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\error.c ++ ++ ++ hc128.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hc128.c ++ ++ ++ hmac.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hmac.c ++ ++ ++ integer.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\integer.c ++ ++ ++ logging.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\logging.c ++ ++ ++ md2.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md2.c ++ ++ ++ md4.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md4.c ++ ++ ++ md5.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md5.c ++ ++ ++ memory.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\memory.c ++ ++ ++ misc.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\misc.c ++ ++ ++ pwdbased.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\pwdbased.c ++ ++ ++ rabbit.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rabbit.c ++ ++ ++ random.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\random.c ++ ++ ++ ripemd.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ripemd.c ++ ++ ++ rsa.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rsa.c ++ ++ ++ sha.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha.c ++ ++ ++ sha256.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha256.c ++ ++ ++ sha512.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha512.c ++ ++ ++ tfm.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\tfm.c ++ ++ ++ wc_port.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\wc_port.c ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ RTE\CMSIS\RTX_Conf_CM.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\RTE_Device.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\File_System\FS_Config.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\File_System\FS_Config_MC_0.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config.c ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_BSD.h ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_DNS_Client.h ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_ETH_0.h ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_TCP.h ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_UDP.h ++ ++ ++ ++ ++ ++ RTE\Network\Net_Debug.c ++ ++ ++ ++ ++ ++ RTE\Other\config-Crypt.h ++ ++ ++ ++ ++ ++ RTE\Other\config-FS.h ++ ++ ++ ++ ++ ++ RTE\Other\config-RTX-TCP-FS.h ++ ++ ++ ++ ++ ++ RTE\Other\config.h ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config-Crypt.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config.h ++ ++ ++ ++ ++ ++ RTE\wolfSSL\settings.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/RTE/wolfSSL/settings.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/RTE/wolfSSL/settings.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/RTE/wolfSSL/settings.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/RTE/wolfSSL/settings.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,667 @@ ++/* settings.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++/* Place OS specific preprocessor flags, defines, includes here, will be ++ included into every file because types.h includes it */ ++ ++ ++#ifndef CTAO_CRYPT_SETTINGS_H ++#define CTAO_CRYPT_SETTINGS_H ++ ++#ifdef __cplusplus ++ extern "C" { ++#endif ++ ++/* Uncomment next line if using IPHONE */ ++/* #define IPHONE */ ++ ++/* Uncomment next line if using ThreadX */ ++/* #define THREADX */ ++ ++/* Uncomment next line if using Micrium ucOS */ ++/* #define MICRIUM */ ++ ++/* Uncomment next line if using Mbed */ ++/* #define MBED */ ++ ++/* Uncomment next line if using Microchip PIC32 ethernet starter kit */ ++/* #define MICROCHIP_PIC32 */ ++ ++/* Uncomment next line if using Microchip TCP/IP stack, version 5 */ ++/* #define MICROCHIP_TCPIP_V5 */ ++ ++/* Uncomment next line if using Microchip TCP/IP stack, version 6 or later */ ++/* #define MICROCHIP_TCPIP */ ++ ++/* Uncomment next line if using PIC32MZ Crypto Engine */ ++/* #define CYASSL_MICROCHIP_PIC32MZ */ ++ ++/* Uncomment next line if using FreeRTOS */ ++/* #define FREERTOS */ ++ ++/* Uncomment next line if using FreeRTOS Windows Simulator */ ++/* #define FREERTOS_WINSIM */ ++ ++/* Uncomment next line if using RTIP */ ++/* #define EBSNET */ ++ ++/* Uncomment next line if using lwip */ ++/* #define CYASSL_LWIP */ ++ ++/* Uncomment next line if building CyaSSL for a game console */ ++/* #define CYASSL_GAME_BUILD */ ++ ++/* Uncomment next line if building CyaSSL for LSR */ ++/* #define CYASSL_LSR */ ++ ++/* Uncomment next line if building CyaSSL for Freescale MQX/RTCS/MFS */ ++/* #define FREESCALE_MQX */ ++ ++/* Uncomment next line if using STM32F2 */ ++/* #define CYASSL_STM32F2 */ ++ ++/* Uncomment next line if using Comverge settings */ ++/* #define COMVERGE */ ++ ++/* Uncomment next line if using QL SEP settings */ ++/* #define CYASSL_QL */ ++ ++/* Uncomment next line if using LwIP native TCP socket settings */ ++/* #define HAVE_LWIP_NATIVE */ ++ ++/* Uncomment next line if building for EROAD */ ++/* #define CYASSL_EROAD */ ++ ++#include ++ ++#ifdef IPHONE ++ #define SIZEOF_LONG_LONG 8 ++#endif ++ ++ ++#ifdef CYASSL_USER_SETTINGS ++ #include ++#endif ++ ++ ++#ifdef COMVERGE ++ #define THREADX ++ #define HAVE_NETX ++ #define CYASSL_USER_IO ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_FILESYSTEM ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++ #define NO_RSA ++ #define NO_SESSION_CACHE ++ #define HAVE_ECC ++#endif ++ ++ ++#ifdef THREADX ++ #define SIZEOF_LONG_LONG 8 ++#endif ++ ++#ifdef HAVE_NETX ++ #include "nx_api.h" ++#endif ++ ++#if defined(HAVE_LWIP_NATIVE) /* using LwIP native TCP socket */ ++ #define CYASSL_LWIP ++ #define NO_WRITEV ++ #define SINGLE_THREADED ++ #define CYASSL_USER_IO ++ #define NO_FILESYSTEM ++#endif ++ ++#ifdef MICROCHIP_PIC32 ++ /* #define CYASSL_MICROCHIP_PIC32MZ */ ++ #define SIZEOF_LONG_LONG 8 ++ #define SINGLE_THREADED ++ #define CYASSL_USER_IO ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_FILESYSTEM ++ #define USE_FAST_MATH ++ #define TFM_TIMING_RESISTANT ++#endif ++ ++#ifdef CYASSL_MICROCHIP_PIC32MZ ++ #define CYASSL_PIC32MZ_CE ++ #define CYASSL_PIC32MZ_CRYPT ++ #define HAVE_AES_ENGINE ++ #define CYASSL_PIC32MZ_RNG ++ /* #define CYASSL_PIC32MZ_HASH */ ++ #define CYASSL_AES_COUNTER ++ #define HAVE_AESGCM ++ #define NO_BIG_INT ++ ++#endif ++ ++#ifdef MICROCHIP_TCPIP_V5 ++ /* include timer functions */ ++ #include "TCPIP Stack/TCPIP.h" ++#endif ++ ++#ifdef MICROCHIP_TCPIP ++ /* include timer, NTP functions */ ++ #ifdef MICROCHIP_MPLAB_HARMONY ++ #include "tcpip/tcpip.h" ++ #else ++ #include "system/system_services.h" ++ #include "tcpip/sntp.h" ++ #endif ++#endif ++ ++#ifdef MBED ++ #define CYASSL_USER_IO ++ #define NO_FILESYSTEM ++ #define NO_CERT ++ #define USE_CERT_BUFFERS_1024 ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++ #define HAVE_ECC ++ #define NO_SESSION_CACHE ++ #define CYASSL_CMSIS_RTOS ++#endif ++ ++ ++#ifdef CYASSL_EROAD ++ #define FREESCALE_MQX ++ #define FREESCALE_MMCAU ++ #define SINGLE_THREADED ++ #define NO_STDIO_FILESYSTEM ++ #define CYASSL_LEANPSK ++ #define HAVE_NULL_CIPHER ++ #define NO_OLD_TLS ++ #define NO_ASN ++ #define NO_BIG_INT ++ #define NO_RSA ++ #define NO_DSA ++ #define NO_DH ++ #define NO_CERTS ++ #define NO_PWDBASED ++ #define NO_DES3 ++ #define NO_MD4 ++ #define NO_RC4 ++ #define NO_MD5 ++ #define NO_SESSION_CACHE ++ #define NO_MAIN_DRIVER ++#endif ++ ++#ifdef FREERTOS_WINSIM ++ #define FREERTOS ++ #define USE_WINDOWS_API ++#endif ++ ++ ++/* Micrium will use Visual Studio for compilation but not the Win32 API */ ++#if defined(_WIN32) && !defined(MICRIUM) && !defined(FREERTOS) \ ++ && !defined(EBSNET) && !defined(CYASSL_EROAD) ++ #define USE_WINDOWS_API ++#endif ++ ++ ++#if defined(CYASSL_LEANPSK) && !defined(XMALLOC_USER) ++ #include ++ #define XMALLOC(s, h, type) malloc((s)) ++ #define XFREE(p, h, type) free((p)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++#endif ++ ++#if defined(XMALLOC_USER) && defined(SSN_BUILDING_LIBYASSL) ++ #undef XMALLOC ++ #define XMALLOC yaXMALLOC ++ #undef XFREE ++ #define XFREE yaXFREE ++ #undef XREALLOC ++ #define XREALLOC yaXREALLOC ++#endif ++ ++ ++#ifdef FREERTOS ++ #ifndef NO_WRITEV ++ #define NO_WRITEV ++ #endif ++ #ifndef NO_SHA512 ++ #define NO_SHA512 ++ #endif ++ #ifndef NO_DH ++ #define NO_DH ++ #endif ++ #ifndef NO_DSA ++ #define NO_DSA ++ #endif ++ #ifndef NO_HC128 ++ #define NO_HC128 ++ #endif ++ ++ #ifndef SINGLE_THREADED ++ #include "FreeRTOS.h" ++ #include "semphr.h" ++ #endif ++#endif ++ ++#ifdef EBSNET ++ #include "rtip.h" ++ ++ /* #define DEBUG_CYASSL */ ++ #define NO_CYASSL_DIR /* tbd */ ++ ++ #if (POLLOS) ++ #define SINGLE_THREADED ++ #endif ++ ++ #if (RTPLATFORM) ++ #if (!RTP_LITTLE_ENDIAN) ++ #define BIG_ENDIAN_ORDER ++ #endif ++ #else ++ #if (!KS_LITTLE_ENDIAN) ++ #define BIG_ENDIAN_ORDER ++ #endif ++ #endif ++ ++ #if (WINMSP3) ++ #undef SIZEOF_LONG ++ #define SIZEOF_LONG_LONG 8 ++ #else ++ #sslpro: settings.h - please implement SIZEOF_LONG and SIZEOF_LONG_LONG ++ #endif ++ ++ #define XMALLOC(s, h, type) ((void *)rtp_malloc((s), SSL_PRO_MALLOC)) ++ #define XFREE(p, h, type) (rtp_free(p)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++ ++#endif /* EBSNET */ ++ ++#ifdef CYASSL_GAME_BUILD ++ #define SIZEOF_LONG_LONG 8 ++ #if defined(__PPU) || defined(__XENON) ++ #define BIG_ENDIAN_ORDER ++ #endif ++#endif ++ ++#ifdef CYASSL_LSR ++ #define HAVE_WEBSERVER ++ #define SIZEOF_LONG_LONG 8 ++ #define CYASSL_LOW_MEMORY ++ #define NO_WRITEV ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++ #define NO_DEV_RANDOM ++ #define NO_CYASSL_DIR ++ #define NO_RABBIT ++ #ifndef NO_FILESYSTEM ++ #define LSR_FS ++ #include "inc/hw_types.h" ++ #include "fs.h" ++ #endif ++ #define CYASSL_LWIP ++ #include /* for tcp errno */ ++ #define CYASSL_SAFERTOS ++ #if defined(__IAR_SYSTEMS_ICC__) ++ /* enum uses enum */ ++ #pragma diag_suppress=Pa089 ++ #endif ++#endif ++ ++#ifdef CYASSL_SAFERTOS ++ #ifndef SINGLE_THREADED ++ #include "SafeRTOS/semphr.h" ++ #endif ++ ++ #include "SafeRTOS/heap.h" ++ #define XMALLOC(s, h, type) pvPortMalloc((s)) ++ #define XFREE(p, h, type) vPortFree((p)) ++ #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n)) ++#endif ++ ++#ifdef CYASSL_LOW_MEMORY ++ #undef RSA_LOW_MEM ++ #define RSA_LOW_MEM ++ #undef CYASSL_SMALL_STACK ++ #define CYASSL_SMALL_STACK ++ #undef TFM_TIMING_RESISTANT ++ #define TFM_TIMING_RESISTANT ++#endif ++ ++#ifdef FREESCALE_MQX ++ #define SIZEOF_LONG_LONG 8 ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_RABBIT ++ #define NO_CYASSL_DIR ++ #define USE_FAST_MATH ++ #define TFM_TIMING_RESISTANT ++ #define FREESCALE_K70_RNGA ++ /* #define FREESCALE_K53_RNGB */ ++ #include "mqx.h" ++ #ifndef NO_FILESYSTEM ++ #include "mfs.h" ++ #include "fio.h" ++ #endif ++ #ifndef SINGLE_THREADED ++ #include "mutex.h" ++ #endif ++ ++ #define XMALLOC(s, h, t) (void *)_mem_alloc_system((s)) ++ #define XFREE(p, h, t) {void* xp = (p); if ((xp)) _mem_free((xp));} ++ /* Note: MQX has no realloc, using fastmath above */ ++#endif ++ ++#ifdef CYASSL_STM32F2 ++ #define SIZEOF_LONG_LONG 8 ++ #define NO_DEV_RANDOM ++ #define NO_CYASSL_DIR ++ #define NO_RABBIT ++ #define STM32F2_RNG ++ #define STM32F2_CRYPTO ++ #define KEIL_INTRINSICS ++#endif ++ ++#ifdef MICRIUM ++ ++ #include "stdlib.h" ++ #include "net_cfg.h" ++ #include "ssl_cfg.h" ++ #include "net_secure_os.h" ++ ++ #define CYASSL_TYPES ++ ++ typedef CPU_INT08U byte; ++ typedef CPU_INT16U word16; ++ typedef CPU_INT32U word32; ++ ++ #if (NET_SECURE_MGR_CFG_WORD_SIZE == CPU_WORD_SIZE_32) ++ #define SIZEOF_LONG 4 ++ #undef SIZEOF_LONG_LONG ++ #else ++ #undef SIZEOF_LONG ++ #define SIZEOF_LONG_LONG 8 ++ #endif ++ ++ #define STRING_USER ++ ++ #define XSTRLEN(pstr) ((CPU_SIZE_T)Str_Len((CPU_CHAR *)(pstr))) ++ #define XSTRNCPY(pstr_dest, pstr_src, len_max) \ ++ ((CPU_CHAR *)Str_Copy_N((CPU_CHAR *)(pstr_dest), \ ++ (CPU_CHAR *)(pstr_src), (CPU_SIZE_T)(len_max))) ++ #define XSTRNCMP(pstr_1, pstr_2, len_max) \ ++ ((CPU_INT16S)Str_Cmp_N((CPU_CHAR *)(pstr_1), \ ++ (CPU_CHAR *)(pstr_2), (CPU_SIZE_T)(len_max))) ++ #define XSTRSTR(pstr, pstr_srch) \ ++ ((CPU_CHAR *)Str_Str((CPU_CHAR *)(pstr), \ ++ (CPU_CHAR *)(pstr_srch))) ++ #define XMEMSET(pmem, data_val, size) \ ++ ((void)Mem_Set((void *)(pmem), (CPU_INT08U) (data_val), \ ++ (CPU_SIZE_T)(size))) ++ #define XMEMCPY(pdest, psrc, size) ((void)Mem_Copy((void *)(pdest), \ ++ (void *)(psrc), (CPU_SIZE_T)(size))) ++ #define XMEMCMP(pmem_1, pmem_2, size) \ ++ (((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), (void *)(pmem_2), \ ++ (CPU_SIZE_T)(size))) ? DEF_NO : DEF_YES) ++ #define XMEMMOVE XMEMCPY ++ ++#if (NET_SECURE_MGR_CFG_EN == DEF_ENABLED) ++ #define MICRIUM_MALLOC ++ #define XMALLOC(s, h, type) ((void *)NetSecure_BlkGet((CPU_INT08U)(type), \ ++ (CPU_SIZE_T)(s), (void *)0)) ++ #define XFREE(p, h, type) (NetSecure_BlkFree((CPU_INT08U)(type), \ ++ (p), (void *)0)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++#endif ++ ++ #if (NET_SECURE_MGR_CFG_FS_EN == DEF_ENABLED) ++ #undef NO_FILESYSTEM ++ #else ++ #define NO_FILESYSTEM ++ #endif ++ ++ #if (SSL_CFG_TRACE_LEVEL == CYASSL_TRACE_LEVEL_DBG) ++ #define DEBUG_CYASSL ++ #else ++ #undef DEBUG_CYASSL ++ #endif ++ ++ #if (SSL_CFG_OPENSSL_EN == DEF_ENABLED) ++ #define OPENSSL_EXTRA ++ #else ++ #undef OPENSSL_EXTRA ++ #endif ++ ++ #if (SSL_CFG_MULTI_THREAD_EN == DEF_ENABLED) ++ #undef SINGLE_THREADED ++ #else ++ #define SINGLE_THREADED ++ #endif ++ ++ #if (SSL_CFG_DH_EN == DEF_ENABLED) ++ #undef NO_DH ++ #else ++ #define NO_DH ++ #endif ++ ++ #if (SSL_CFG_DSA_EN == DEF_ENABLED) ++ #undef NO_DSA ++ #else ++ #define NO_DSA ++ #endif ++ ++ #if (SSL_CFG_PSK_EN == DEF_ENABLED) ++ #undef NO_PSK ++ #else ++ #define NO_PSK ++ #endif ++ ++ #if (SSL_CFG_3DES_EN == DEF_ENABLED) ++ #undef NO_DES ++ #else ++ #define NO_DES ++ #endif ++ ++ #if (SSL_CFG_AES_EN == DEF_ENABLED) ++ #undef NO_AES ++ #else ++ #define NO_AES ++ #endif ++ ++ #if (SSL_CFG_RC4_EN == DEF_ENABLED) ++ #undef NO_RC4 ++ #else ++ #define NO_RC4 ++ #endif ++ ++ #if (SSL_CFG_RABBIT_EN == DEF_ENABLED) ++ #undef NO_RABBIT ++ #else ++ #define NO_RABBIT ++ #endif ++ ++ #if (SSL_CFG_HC128_EN == DEF_ENABLED) ++ #undef NO_HC128 ++ #else ++ #define NO_HC128 ++ #endif ++ ++ #if (CPU_CFG_ENDIAN_TYPE == CPU_ENDIAN_TYPE_BIG) ++ #define BIG_ENDIAN_ORDER ++ #else ++ #undef BIG_ENDIAN_ORDER ++ #define LITTLE_ENDIAN_ORDER ++ #endif ++ ++ #if (SSL_CFG_MD4_EN == DEF_ENABLED) ++ #undef NO_MD4 ++ #else ++ #define NO_MD4 ++ #endif ++ ++ #if (SSL_CFG_WRITEV_EN == DEF_ENABLED) ++ #undef NO_WRITEV ++ #else ++ #define NO_WRITEV ++ #endif ++ ++ #if (SSL_CFG_USER_RNG_SEED_EN == DEF_ENABLED) ++ #define NO_DEV_RANDOM ++ #else ++ #undef NO_DEV_RANDOM ++ #endif ++ ++ #if (SSL_CFG_USER_IO_EN == DEF_ENABLED) ++ #define CYASSL_USER_IO ++ #else ++ #undef CYASSL_USER_IO ++ #endif ++ ++ #if (SSL_CFG_DYNAMIC_BUFFERS_EN == DEF_ENABLED) ++ #undef LARGE_STATIC_BUFFERS ++ #undef STATIC_CHUNKS_ONLY ++ #else ++ #define LARGE_STATIC_BUFFERS ++ #define STATIC_CHUNKS_ONLY ++ #endif ++ ++ #if (SSL_CFG_DER_LOAD_EN == DEF_ENABLED) ++ #define CYASSL_DER_LOAD ++ #else ++ #undef CYASSL_DER_LOAD ++ #endif ++ ++ #if (SSL_CFG_DTLS_EN == DEF_ENABLED) ++ #define CYASSL_DTLS ++ #else ++ #undef CYASSL_DTLS ++ #endif ++ ++ #if (SSL_CFG_CALLBACKS_EN == DEF_ENABLED) ++ #define CYASSL_CALLBACKS ++ #else ++ #undef CYASSL_CALLBACKS ++ #endif ++ ++ #if (SSL_CFG_FAST_MATH_EN == DEF_ENABLED) ++ #define USE_FAST_MATH ++ #else ++ #undef USE_FAST_MATH ++ #endif ++ ++ #if (SSL_CFG_TFM_TIMING_RESISTANT_EN == DEF_ENABLED) ++ #define TFM_TIMING_RESISTANT ++ #else ++ #undef TFM_TIMING_RESISTANT ++ #endif ++ ++#endif /* MICRIUM */ ++ ++ ++#ifdef CYASSL_QL ++ #ifndef CYASSL_SEP ++ #define CYASSL_SEP ++ #endif ++ #ifndef OPENSSL_EXTRA ++ #define OPENSSL_EXTRA ++ #endif ++ #ifndef SESSION_CERTS ++ #define SESSION_CERTS ++ #endif ++ #ifndef HAVE_AESCCM ++ #define HAVE_AESCCM ++ #endif ++ #ifndef ATOMIC_USER ++ #define ATOMIC_USER ++ #endif ++ #ifndef CYASSL_DER_LOAD ++ #define CYASSL_DER_LOAD ++ #endif ++ #ifndef KEEP_PEER_CERT ++ #define KEEP_PEER_CERT ++ #endif ++ #ifndef HAVE_ECC ++ #define HAVE_ECC ++ #endif ++ #ifndef SESSION_INDEX ++ #define SESSION_INDEX ++ #endif ++#endif /* CYASSL_QL */ ++ ++ ++#if !defined(XMALLOC_USER) && !defined(MICRIUM_MALLOC) && \ ++ !defined(CYASSL_LEANPSK) && !defined(NO_CYASSL_MEMORY) ++ #define USE_CYASSL_MEMORY ++#endif ++ ++ ++#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) ++ #undef KEEP_PEER_CERT ++ #define KEEP_PEER_CERT ++#endif ++ ++ ++/* stream ciphers except arc4 need 32bit alignment, intel ok without */ ++#ifndef XSTREAM_ALIGNMENT ++ #if defined(__x86_64__) || defined(__ia64__) || defined(__i386__) ++ #define NO_XSTREAM_ALIGNMENT ++ #else ++ #define XSTREAM_ALIGNMENT ++ #endif ++#endif ++ ++ ++/* if using hardware crypto and have alignment requirements, specify the ++ requirement here. The record header of SSL/TLS will prvent easy alignment. ++ This hint tries to help as much as possible. */ ++#ifndef CYASSL_GENERAL_ALIGNMENT ++ #ifdef CYASSL_AESNI ++ #define CYASSL_GENERAL_ALIGNMENT 16 ++ #elif defined(XSTREAM_ALIGNMENT) ++ #define CYASSL_GENERAL_ALIGNMENT 4 ++ #else ++ #define CYASSL_GENERAL_ALIGNMENT 0 ++ #endif ++#endif ++ ++#ifdef HAVE_CRL ++ /* not widely supported yet */ ++ #undef NO_SKID ++ #define NO_SKID ++#endif ++ ++/* Place any other flags or defines here */ ++ ++ ++#ifdef __cplusplus ++ } /* extern "C" */ ++#endif ++ ++ ++#endif /* CTAO_CRYPT_SETTINGS_H */ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/benchmark.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/benchmark.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/benchmark.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/benchmark.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,1313 @@ ++/* benchmark.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++/* CTaoCrypt benchmark */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++ ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#ifdef HAVE_CAVIUM ++ #include "cavium_sysdep.h" ++ #include "cavium_common.h" ++ #include "cavium_ioctl.h" ++#endif ++#ifdef HAVE_NTRU ++ #include "ntru_crypto.h" ++#endif ++ ++#if defined(CYASSL_MDK_ARM) ++ extern FILE * CyaSSL_fopen(const char *fname, const char *mode) ; ++ #define fopen CyaSSL_fopen ++#endif ++ ++#if defined(USE_CERT_BUFFERS_1024) || defined(USE_CERT_BUFFERS_2048) ++ /* include test cert and key buffers for use with NO_FILESYSTEM */ ++ #if defined(CYASSL_MDK_ARM) ++ #include "cert_data.h" /* use certs_test.c for initial data, ++ so other commands can share the data. */ ++ #else ++ #include ++ #endif ++#endif ++ ++ ++#ifdef HAVE_BLAKE2 ++ #include ++ void bench_blake2(void); ++#endif ++ ++#ifdef _MSC_VER ++ /* 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy */ ++ #pragma warning(disable: 4996) ++#endif ++ ++void bench_des(void); ++void bench_arc4(void); ++void bench_hc128(void); ++void bench_rabbit(void); ++void bench_aes(int); ++void bench_aesgcm(void); ++void bench_aesccm(void); ++void bench_aesctr(void); ++void bench_camellia(void); ++ ++void bench_md5(void); ++void bench_sha(void); ++void bench_sha256(void); ++void bench_sha512(void); ++void bench_ripemd(void); ++ ++void bench_rsa(void); ++void bench_rsaKeyGen(void); ++void bench_dh(void); ++#ifdef HAVE_ECC ++void bench_eccKeyGen(void); ++void bench_eccKeyAgree(void); ++#endif ++#ifdef HAVE_NTRU ++void bench_ntruKeyGen(void); ++#endif ++ ++double current_time(int); ++ ++ ++#ifdef HAVE_CAVIUM ++ ++static int OpenNitroxDevice(int dma_mode,int dev_id) ++{ ++ Csp1CoreAssignment core_assign; ++ Uint32 device; ++ ++ if (CspInitialize(CAVIUM_DIRECT,CAVIUM_DEV_ID)) ++ return -1; ++ if (Csp1GetDevType(&device)) ++ return -1; ++ if (device != NPX_DEVICE) { ++ if (ioctl(gpkpdev_hdlr[CAVIUM_DEV_ID], IOCTL_CSP1_GET_CORE_ASSIGNMENT, ++ (Uint32 *)&core_assign)!= 0) ++ return -1; ++ } ++ CspShutdown(CAVIUM_DEV_ID); ++ ++ return CspInitialize(dma_mode, dev_id); ++} ++ ++#endif ++ ++#if defined(DEBUG_CYASSL) && !defined(HAVE_VALGRIND) ++ CYASSL_API int CyaSSL_Debugging_ON(); ++#endif ++ ++/* so embedded projects can pull in tests on their own */ ++#if !defined(NO_MAIN_DRIVER) ++ ++int main(int argc, char** argv) ++ ++{ ++ (void)argc; ++ (void)argv; ++#else ++int benchmark_test(void *args) ++{ ++#endif ++ ++ #if defined(DEBUG_CYASSL) && !defined(HAVE_VALGRIND) ++ CyaSSL_Debugging_ON(); ++ #endif ++ ++ #ifdef HAVE_CAVIUM ++ int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID); ++ if (ret != 0) { ++ printf("Cavium OpenNitroxDevice failed\n"); ++ exit(-1); ++ } ++#endif /* HAVE_CAVIUM */ ++#ifndef NO_AES ++ bench_aes(0); ++ bench_aes(1); ++#endif ++#ifdef HAVE_AESGCM ++ bench_aesgcm(); ++#endif ++ ++#ifdef CYASSL_AES_COUNTER ++ bench_aesctr(); ++#endif ++ ++#ifdef HAVE_AESCCM ++ bench_aesccm(); ++#endif ++#ifdef HAVE_CAMELLIA ++ bench_camellia(); ++#endif ++#ifndef NO_RC4 ++ bench_arc4(); ++#endif ++#ifdef HAVE_HC128 ++ bench_hc128(); ++#endif ++#ifndef NO_RABBIT ++ bench_rabbit(); ++#endif ++#ifndef NO_DES3 ++ bench_des(); ++#endif ++ ++ printf("\n"); ++ ++#ifndef NO_MD5 ++ bench_md5(); ++#endif ++#ifndef NO_SHA ++ bench_sha(); ++#endif ++#ifndef NO_SHA256 ++ bench_sha256(); ++#endif ++#ifdef CYASSL_SHA512 ++ bench_sha512(); ++#endif ++#ifdef CYASSL_RIPEMD ++ bench_ripemd(); ++#endif ++#ifdef HAVE_BLAKE2 ++ bench_blake2(); ++#endif ++ ++ printf("\n"); ++ ++#ifndef NO_RSA ++ bench_rsa(); ++#endif ++ ++#ifndef NO_DH ++ bench_dh(); ++#endif ++ ++#if defined(CYASSL_KEY_GEN) && !defined(NO_RSA) ++ bench_rsaKeyGen(); ++#endif ++ ++#ifdef HAVE_NTRU ++ bench_ntruKeyGen(); ++#endif ++ ++#ifdef HAVE_ECC ++ bench_eccKeyGen(); ++ bench_eccKeyAgree(); ++#endif ++ ++ return 0; ++} ++ ++ ++#ifdef BENCH_EMBEDDED ++enum BenchmarkBounds { ++ numBlocks = 25, /* how many kB to test (en/de)cryption */ ++ ntimes = 1, ++ genTimes = 5, /* public key iterations */ ++ agreeTimes = 5 ++}; ++static const char blockType[] = "kB"; /* used in printf output */ ++#else ++enum BenchmarkBounds { ++ numBlocks = 5, /* how many megs to test (en/de)cryption */ ++ ntimes = 100, ++ genTimes = 100, ++ agreeTimes = 100 ++}; ++static const char blockType[] = "megs"; /* used in printf output */ ++#endif ++ ++ ++/* use kB instead of mB for embedded benchmarking */ ++#ifdef BENCH_EMBEDDED ++static byte plain [1024]; ++#else ++static byte plain [1024*1024]; ++#endif ++ ++ ++#ifndef NO_AES ++ ++static const byte key[] = ++{ ++ 0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef, ++ 0xfe,0xde,0xba,0x98,0x76,0x54,0x32,0x10, ++ 0x89,0xab,0xcd,0xef,0x01,0x23,0x45,0x67 ++}; ++ ++static const byte iv[] = ++{ ++ 0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef, ++ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, ++ 0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81 ++ ++}; ++ ++ ++/* use kB instead of mB for embedded benchmarking */ ++#ifdef BENCH_EMBEDDED ++static byte cipher[1024]; ++#else ++static byte cipher[1024*1024]; ++#endif ++ ++ ++void bench_aes(int show) ++{ ++ Aes enc; ++ double start, total, persec; ++ int i; ++ int ret; ++ ++#ifdef HAVE_CAVIUM ++ if (AesInitCavium(&enc, CAVIUM_DEV_ID) != 0) { ++ printf("aes init cavium failed\n"); ++ return; ++ } ++#endif ++ ++ ret = AesSetKey(&enc, key, 16, iv, AES_ENCRYPTION); ++ if (ret != 0) { ++ printf("AesSetKey failed, ret = %d\n", ret); ++ return; ++ } ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ AesCbcEncrypt(&enc, plain, cipher, sizeof(plain)); ++ ++ total = current_time(0) - start; ++ ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ if (show) ++ printf("AES %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++#ifdef HAVE_CAVIUM ++ AesFreeCavium(&enc); ++#endif ++} ++#endif ++ ++ ++#if defined(HAVE_AESGCM) || defined(HAVE_AESCCM) ++ static byte additional[13]; ++ static byte tag[16]; ++#endif ++ ++ ++#ifdef HAVE_AESGCM ++void bench_aesgcm(void) ++{ ++ Aes enc; ++ double start, total, persec; ++ int i; ++ ++ AesGcmSetKey(&enc, key, 16); ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ AesGcmEncrypt(&enc, cipher, plain, sizeof(plain), iv, 12, ++ tag, 16, additional, 13); ++ ++ total = current_time(0) - start; ++ ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("AES-GCM %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif ++ ++#ifdef CYASSL_AES_COUNTER ++void bench_aesctr(void) ++{ ++ Aes enc; ++ double start, total, persec; ++ int i; ++ ++ AesSetKeyDirect(&enc, key, AES_BLOCK_SIZE, iv, AES_ENCRYPTION); ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ AesCtrEncrypt(&enc, plain, cipher, sizeof(plain)); ++ ++ total = current_time(0) - start; ++ ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("AES-CTR %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif ++ ++ ++ ++#ifdef HAVE_AESCCM ++void bench_aesccm(void) ++{ ++ Aes enc; ++ double start, total, persec; ++ int i; ++ ++ AesCcmSetKey(&enc, key, 16); ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ AesCcmEncrypt(&enc, cipher, plain, sizeof(plain), iv, 12, ++ tag, 16, additional, 13); ++ ++ total = current_time(0) - start; ++ ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("AES-CCM %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif ++ ++ ++#ifdef HAVE_CAMELLIA ++void bench_camellia(void) ++{ ++ Camellia cam; ++ double start, total, persec; ++ int i, ret; ++ ++ ret = CamelliaSetKey(&cam, key, 16, iv); ++ if (ret != 0) { ++ printf("CamelliaSetKey failed, ret = %d\n", ret); ++ return; ++ } ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ CamelliaCbcEncrypt(&cam, plain, cipher, sizeof(plain)); ++ ++ total = current_time(0) - start; ++ ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("Camellia %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif ++ ++ ++#ifndef NO_DES3 ++void bench_des(void) ++{ ++ Des3 enc; ++ double start, total, persec; ++ int i, ret; ++ ++#ifdef HAVE_CAVIUM ++ if (Des3_InitCavium(&enc, CAVIUM_DEV_ID) != 0) ++ printf("des3 init cavium failed\n"); ++#endif ++ ret = Des3_SetKey(&enc, key, iv, DES_ENCRYPTION); ++ if (ret != 0) { ++ printf("Des3_SetKey failed, ret = %d\n", ret); ++ return; ++ } ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ Des3_CbcEncrypt(&enc, plain, cipher, sizeof(plain)); ++ ++ total = current_time(0) - start; ++ ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("3DES %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++#ifdef HAVE_CAVIUM ++ Des3_FreeCavium(&enc); ++#endif ++} ++#endif ++ ++ ++#ifndef NO_RC4 ++void bench_arc4(void) ++{ ++ Arc4 enc; ++ double start, total, persec; ++ int i; ++ ++#ifdef HAVE_CAVIUM ++ if (Arc4InitCavium(&enc, CAVIUM_DEV_ID) != 0) ++ printf("arc4 init cavium failed\n"); ++#endif ++ ++ Arc4SetKey(&enc, key, 16); ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ Arc4Process(&enc, cipher, plain, sizeof(plain)); ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("ARC4 %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++#ifdef HAVE_CAVIUM ++ Arc4FreeCavium(&enc); ++#endif ++} ++#endif ++ ++ ++#ifdef HAVE_HC128 ++void bench_hc128(void) ++{ ++ HC128 enc; ++ double start, total, persec; ++ int i; ++ ++ Hc128_SetKey(&enc, key, iv); ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ Hc128_Process(&enc, cipher, plain, sizeof(plain)); ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("HC128 %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif /* HAVE_HC128 */ ++ ++ ++#ifndef NO_RABBIT ++void bench_rabbit(void) ++{ ++ Rabbit enc; ++ double start, total, persec; ++ int i; ++ ++ RabbitSetKey(&enc, key, iv); ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ RabbitProcess(&enc, cipher, plain, sizeof(plain)); ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("RABBIT %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif /* NO_RABBIT */ ++ ++ ++#ifndef NO_MD5 ++void bench_md5(void) ++{ ++ Md5 hash; ++ byte digest[MD5_DIGEST_SIZE]; ++ double start, total, persec; ++ int i; ++ ++ InitMd5(&hash); ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ Md5Update(&hash, plain, sizeof(plain)); ++ ++ Md5Final(&hash, digest); ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("MD5 %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif /* NO_MD5 */ ++ ++ ++#ifndef NO_SHA ++void bench_sha(void) ++{ ++ Sha hash; ++ byte digest[SHA_DIGEST_SIZE]; ++ double start, total, persec; ++ int i, ret; ++ ++ ret = InitSha(&hash); ++ if (ret != 0) { ++ printf("InitSha failed, ret = %d\n", ret); ++ return; ++ } ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ ShaUpdate(&hash, plain, sizeof(plain)); ++ ++ ShaFinal(&hash, digest); ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("SHA %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif /* NO_SHA */ ++ ++ ++#ifndef NO_SHA256 ++void bench_sha256(void) ++{ ++ Sha256 hash; ++ byte digest[SHA256_DIGEST_SIZE]; ++ double start, total, persec; ++ int i, ret; ++ ++ ret = InitSha256(&hash); ++ if (ret != 0) { ++ printf("InitSha256 failed, ret = %d\n", ret); ++ return; ++ } ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) { ++ ret = Sha256Update(&hash, plain, sizeof(plain)); ++ if (ret != 0) { ++ printf("Sha256Update failed, ret = %d\n", ret); ++ return; ++ } ++ } ++ ++ ret = Sha256Final(&hash, digest); ++ if (ret != 0) { ++ printf("Sha256Final failed, ret = %d\n", ret); ++ return; ++ } ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("SHA-256 %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif ++ ++#ifdef CYASSL_SHA512 ++void bench_sha512(void) ++{ ++ Sha512 hash; ++ byte digest[SHA512_DIGEST_SIZE]; ++ double start, total, persec; ++ int i, ret; ++ ++ ret = InitSha512(&hash); ++ if (ret != 0) { ++ printf("InitSha512 failed, ret = %d\n", ret); ++ return; ++ } ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) { ++ ret = Sha512Update(&hash, plain, sizeof(plain)); ++ if (ret != 0) { ++ printf("Sha512Update failed, ret = %d\n", ret); ++ return; ++ } ++ } ++ ++ ret = Sha512Final(&hash, digest); ++ if (ret != 0) { ++ printf("Sha512Final failed, ret = %d\n", ret); ++ return; ++ } ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("SHA-512 %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif ++ ++#ifdef CYASSL_RIPEMD ++void bench_ripemd(void) ++{ ++ RipeMd hash; ++ byte digest[RIPEMD_DIGEST_SIZE]; ++ double start, total, persec; ++ int i; ++ ++ InitRipeMd(&hash); ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ RipeMdUpdate(&hash, plain, sizeof(plain)); ++ ++ RipeMdFinal(&hash, digest); ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("RIPEMD %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif ++ ++ ++#ifdef HAVE_BLAKE2 ++void bench_blake2(void) ++{ ++ Blake2b b2b; ++ byte digest[64]; ++ double start, total, persec; ++ int i, ret; ++ ++ ret = InitBlake2b(&b2b, 64); ++ if (ret != 0) { ++ printf("InitBlake2b failed, ret = %d\n", ret); ++ return; ++ } ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) { ++ ret = Blake2bUpdate(&b2b, plain, sizeof(plain)); ++ if (ret != 0) { ++ printf("Blake2bUpdate failed, ret = %d\n", ret); ++ return; ++ } ++ } ++ ++ ret = Blake2bFinal(&b2b, digest, 64); ++ if (ret != 0) { ++ printf("Blake2bFinal failed, ret = %d\n", ret); ++ return; ++ } ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("BLAKE2b %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif ++ ++ ++#if !defined(NO_RSA) || !defined(NO_DH) \ ++ || defined(CYASSL_KEYGEN) || defined(HAVE_ECC) ++static RNG rng; ++#endif ++ ++#ifndef NO_RSA ++ ++ ++#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) ++ #if defined(CYASSL_MDK_SHELL) ++ static char *certRSAname = "certs/rsa2048.der"; ++ /* set by shell command */ ++ static void set_Bench_RSA_File(char * cert) { certRSAname = cert ; } ++ #else ++ static const char *certRSAname = "certs/rsa2048.der"; ++ #endif ++#endif ++ ++void bench_rsa(void) ++{ ++ int i; ++ int ret; ++ byte tmp[3072]; ++ size_t bytes; ++ word32 idx = 0; ++ ++ byte message[] = "Everyone gets Friday off."; ++ byte enc[512]; /* for up to 4096 bit */ ++ const int len = (int)strlen((char*)message); ++ double start, total, each, milliEach; ++ ++ RsaKey rsaKey; ++ int rsaKeySz = 2048; /* used in printf */ ++ ++#ifdef USE_CERT_BUFFERS_1024 ++ XMEMCPY(tmp, rsa_key_der_1024, sizeof_rsa_key_der_1024); ++ bytes = sizeof_rsa_key_der_1024; ++ rsaKeySz = 1024; ++#elif defined(USE_CERT_BUFFERS_2048) ++ XMEMCPY(tmp, rsa_key_der_2048, sizeof_rsa_key_der_2048); ++ bytes = sizeof_rsa_key_der_2048; ++#else ++ FILE* file = fopen(certRSAname, "rb"); ++ ++ if (!file) { ++ printf("can't find %s, Please run from CyaSSL home dir\n", certRSAname); ++ return; ++ } ++ ++ bytes = fread(tmp, 1, sizeof(tmp), file); ++ fclose(file); ++#endif /* USE_CERT_BUFFERS */ ++ ++ ++#ifdef HAVE_CAVIUM ++ if (RsaInitCavium(&rsaKey, CAVIUM_DEV_ID) != 0) ++ printf("RSA init cavium failed\n"); ++#endif ++ ret = InitRng(&rng); ++ if (ret < 0) { ++ printf("InitRNG failed\n"); ++ return; ++ } ++ ret = InitRsaKey(&rsaKey, 0); ++ if (ret < 0) { ++ printf("InitRsaKey failed\n"); ++ return; ++ } ++ ret = RsaPrivateKeyDecode(tmp, &idx, &rsaKey, (word32)bytes); ++ ++ start = current_time(1); ++ ++ for (i = 0; i < ntimes; i++) ++ ret = RsaPublicEncrypt(message,len,enc,sizeof(enc), &rsaKey, &rng); ++ ++ total = current_time(0) - start; ++ each = total / ntimes; /* per second */ ++ milliEach = each * 1000; /* milliseconds */ ++ ++ printf("RSA %d encryption took %6.3f milliseconds, avg over %d" ++ " iterations\n", rsaKeySz, milliEach, ntimes); ++ ++ if (ret < 0) { ++ printf("Rsa Public Encrypt failed\n"); ++ return; ++ } ++ ++ start = current_time(1); ++ ++ for (i = 0; i < ntimes; i++) { ++ byte out[512]; /* for up to 4096 bit */ ++ RsaPrivateDecrypt(enc, (word32)ret, out, sizeof(out), &rsaKey); ++ } ++ ++ total = current_time(0) - start; ++ each = total / ntimes; /* per second */ ++ milliEach = each * 1000; /* milliseconds */ ++ ++ printf("RSA %d decryption took %6.3f milliseconds, avg over %d" ++ " iterations\n", rsaKeySz, milliEach, ntimes); ++ ++ FreeRsaKey(&rsaKey); ++#ifdef HAVE_CAVIUM ++ RsaFreeCavium(&rsaKey); ++#endif ++} ++#endif ++ ++ ++#ifndef NO_DH ++ ++ ++#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) ++ #if defined(CYASSL_MDK_SHELL) ++ static char *certDHname = "certs/dh2048.der"; ++ /* set by shell command */ ++ void set_Bench_DH_File(char * cert) { certDHname = cert ; } ++ #else ++ static const char *certDHname = "certs/dh2048.der"; ++ #endif ++#endif ++ ++void bench_dh(void) ++{ ++#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) ++ int ret; ++#endif ++ int i ; ++ byte tmp[1024]; ++ size_t bytes; ++ word32 idx = 0, pubSz, privSz = 0, pubSz2, privSz2, agreeSz; ++ ++ byte pub[256]; /* for 2048 bit */ ++ byte priv[256]; /* for 2048 bit */ ++ byte pub2[256]; /* for 2048 bit */ ++ byte priv2[256]; /* for 2048 bit */ ++ byte agree[256]; /* for 2048 bit */ ++ ++ double start, total, each, milliEach; ++ DhKey dhKey; ++ int dhKeySz = 2048; /* used in printf */ ++ ++ ++#ifdef USE_CERT_BUFFERS_1024 ++ XMEMCPY(tmp, dh_key_der_1024, sizeof_dh_key_der_1024); ++ bytes = sizeof_dh_key_der_1024; ++ dhKeySz = 1024; ++#elif defined(USE_CERT_BUFFERS_2048) ++ XMEMCPY(tmp, dh_key_der_2048, sizeof_dh_key_der_2048); ++ bytes = sizeof_dh_key_der_2048; ++#else ++ FILE* file = fopen(certDHname, "rb"); ++ ++ if (!file) { ++ printf("can't find %s, Please run from CyaSSL home dir\n", certDHname); ++ return; ++ } ++ ++ ret = InitRng(&rng); ++ if (ret < 0) { ++ printf("InitRNG failed\n"); ++ return; ++ } ++ bytes = fread(tmp, 1, sizeof(tmp), file); ++#endif /* USE_CERT_BUFFERS */ ++ ++ ++ InitDhKey(&dhKey); ++ bytes = DhKeyDecode(tmp, &idx, &dhKey, (word32)bytes); ++ if (bytes != 0) { ++ printf("dhekydecode failed, can't benchmark\n"); ++ #if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) ++ fclose(file); ++ #endif ++ return; ++ } ++ ++ start = current_time(1); ++ ++ for (i = 0; i < ntimes; i++) ++ DhGenerateKeyPair(&dhKey, &rng, priv, &privSz, pub, &pubSz); ++ ++ total = current_time(0) - start; ++ each = total / ntimes; /* per second */ ++ milliEach = each * 1000; /* milliseconds */ ++ ++ printf("DH %d key generation %6.3f milliseconds, avg over %d" ++ " iterations\n", dhKeySz, milliEach, ntimes); ++ ++ DhGenerateKeyPair(&dhKey, &rng, priv2, &privSz2, pub2, &pubSz2); ++ start = current_time(1); ++ ++ for (i = 0; i < ntimes; i++) ++ DhAgree(&dhKey, agree, &agreeSz, priv, privSz, pub2, pubSz2); ++ ++ total = current_time(0) - start; ++ each = total / ntimes; /* per second */ ++ milliEach = each * 1000; /* milliseconds */ ++ ++ printf("DH %d key agreement %6.3f milliseconds, avg over %d" ++ " iterations\n", dhKeySz, milliEach, ntimes); ++ ++#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) ++ fclose(file); ++#endif ++ FreeDhKey(&dhKey); ++} ++#endif ++ ++#if defined(CYASSL_KEY_GEN) && !defined(NO_RSA) ++void bench_rsaKeyGen(void) ++{ ++ RsaKey genKey; ++ double start, total, each, milliEach; ++ int i; ++ ++ /* 1024 bit */ ++ start = current_time(1); ++ ++ for(i = 0; i < genTimes; i++) { ++ InitRsaKey(&genKey, 0); ++ MakeRsaKey(&genKey, 1024, 65537, &rng); ++ FreeRsaKey(&genKey); ++ } ++ ++ total = current_time(0) - start; ++ each = total / genTimes; /* per second */ ++ milliEach = each * 1000; /* millisconds */ ++ printf("\n"); ++ printf("RSA 1024 key generation %6.3f milliseconds, avg over %d" ++ " iterations\n", milliEach, genTimes); ++ ++ /* 2048 bit */ ++ start = current_time(1); ++ ++ for(i = 0; i < genTimes; i++) { ++ InitRsaKey(&genKey, 0); ++ MakeRsaKey(&genKey, 2048, 65537, &rng); ++ FreeRsaKey(&genKey); ++ } ++ ++ total = current_time(0) - start; ++ each = total / genTimes; /* per second */ ++ milliEach = each * 1000; /* millisconds */ ++ printf("RSA 2048 key generation %6.3f milliseconds, avg over %d" ++ " iterations\n", milliEach, genTimes); ++} ++#endif /* CYASSL_KEY_GEN */ ++#ifdef HAVE_NTRU ++byte GetEntropy(ENTROPY_CMD cmd, byte* out); ++ ++byte GetEntropy(ENTROPY_CMD cmd, byte* out) ++{ ++ if (cmd == INIT) ++ return (InitRng(&rng) == 0) ? 1 : 0; ++ ++ if (out == NULL) ++ return 0; ++ ++ if (cmd == GET_BYTE_OF_ENTROPY) ++ return (RNG_GenerateBlock(&rng, out, 1) == 0) ? 1 : 0; ++ ++ if (cmd == GET_NUM_BYTES_PER_BYTE_OF_ENTROPY) { ++ *out = 1; ++ return 1; ++ } ++ ++ return 0; ++} ++void bench_ntruKeyGen(void) ++{ ++ double start, total, each, milliEach; ++ int i; ++ ++ byte public_key[557]; /* 2048 key equivalent to rsa */ ++ word16 public_key_len = sizeof(public_key); ++ byte private_key[607]; ++ word16 private_key_len = sizeof(private_key); ++ ++ DRBG_HANDLE drbg; ++ static uint8_t const pers_str[] = { ++ 'C', 'y', 'a', 'S', 'S', 'L', ' ', 't', 'e', 's', 't' ++ }; ++ ++ word32 rc = ntru_crypto_drbg_instantiate(112, pers_str, sizeof(pers_str), ++ GetEntropy, &drbg); ++ if(rc != DRBG_OK) { ++ printf("NTRU drbg instantiate failed\n"); ++ return; ++ } ++ ++ start = current_time(1); ++ ++ for(i = 0; i < genTimes; i++) { ++ ntru_crypto_ntru_encrypt_keygen(drbg, NTRU_EES401EP2, &public_key_len, ++ public_key, &private_key_len, private_key); ++ } ++ ++ total = current_time(0) - start; ++ ++ rc = ntru_crypto_drbg_uninstantiate(drbg); ++ ++ if (rc != NTRU_OK) { ++ printf("NTRU drbg uninstantiate failed\n"); ++ return; ++ } ++ ++ each = total / genTimes; ++ milliEach = each * 1000; ++ ++ printf("\n"); ++ printf("NTRU 112 key generation %6.3f milliseconds, avg over %d" ++ " iterations\n", milliEach, genTimes); ++ ++} ++#endif ++ ++#ifdef HAVE_ECC ++void bench_eccKeyGen(void) ++{ ++ ecc_key genKey; ++ double start, total, each, milliEach; ++ int i, ret; ++ ++ ret = InitRng(&rng); ++ if (ret < 0) { ++ printf("InitRNG failed\n"); ++ return; ++ } ++ /* 256 bit */ ++ start = current_time(1); ++ ++ for(i = 0; i < genTimes; i++) { ++ ecc_make_key(&rng, 32, &genKey); ++ ecc_free(&genKey); ++ } ++ ++ total = current_time(0) - start; ++ each = total / genTimes; /* per second */ ++ milliEach = each * 1000; /* millisconds */ ++ printf("\n"); ++ printf("ECC 256 key generation %6.3f milliseconds, avg over %d" ++ " iterations\n", milliEach, genTimes); ++} ++ ++ ++void bench_eccKeyAgree(void) ++{ ++ ecc_key genKey, genKey2; ++ double start, total, each, milliEach; ++ int i, ret; ++ byte shared[1024]; ++ byte sig[1024]; ++ byte digest[32]; ++ word32 x = 0; ++ ++ ecc_init(&genKey); ++ ecc_init(&genKey2); ++ ++ ret = InitRng(&rng); ++ if (ret < 0) { ++ printf("InitRNG failed\n"); ++ return; ++ } ++ ++ ret = ecc_make_key(&rng, 32, &genKey); ++ if (ret != 0) { ++ printf("ecc_make_key failed\n"); ++ return; ++ } ++ ret = ecc_make_key(&rng, 32, &genKey2); ++ if (ret != 0) { ++ printf("ecc_make_key failed\n"); ++ return; ++ } ++ ++ /* 256 bit */ ++ start = current_time(1); ++ ++ for(i = 0; i < agreeTimes; i++) { ++ x = sizeof(shared); ++ ret = ecc_shared_secret(&genKey, &genKey2, shared, &x); ++ if (ret != 0) { ++ printf("ecc_shared_secret failed\n"); ++ return; ++ } ++ } ++ ++ total = current_time(0) - start; ++ each = total / agreeTimes; /* per second */ ++ milliEach = each * 1000; /* millisconds */ ++ printf("EC-DHE key agreement %6.3f milliseconds, avg over %d" ++ " iterations\n", milliEach, agreeTimes); ++ ++ /* make dummy digest */ ++ for (i = 0; i < (int)sizeof(digest); i++) ++ digest[i] = (byte)i; ++ ++ ++ start = current_time(1); ++ ++ for(i = 0; i < agreeTimes; i++) { ++ x = sizeof(sig); ++ ret = ecc_sign_hash(digest, sizeof(digest), sig, &x, &rng, &genKey); ++ if (ret != 0) { ++ printf("ecc_sign_hash failed\n"); ++ return; ++ } ++ } ++ ++ total = current_time(0) - start; ++ each = total / agreeTimes; /* per second */ ++ milliEach = each * 1000; /* millisconds */ ++ printf("EC-DSA sign time %6.3f milliseconds, avg over %d" ++ " iterations\n", milliEach, agreeTimes); ++ ++ start = current_time(1); ++ ++ for(i = 0; i < agreeTimes; i++) { ++ int verify = 0; ++ ret = ecc_verify_hash(sig, x, digest, sizeof(digest), &verify, &genKey); ++ if (ret != 0) { ++ printf("ecc_verify_hash failed\n"); ++ return; ++ } ++ } ++ ++ total = current_time(0) - start; ++ each = total / agreeTimes; /* per second */ ++ milliEach = each * 1000; /* millisconds */ ++ printf("EC-DSA verify time %6.3f milliseconds, avg over %d" ++ " iterations\n", milliEach, agreeTimes); ++ ++ ecc_free(&genKey2); ++ ecc_free(&genKey); ++} ++#endif /* HAVE_ECC */ ++ ++#ifdef _WIN32 ++ ++ #define WIN32_LEAN_AND_MEAN ++ #include ++ ++ double current_time(int reset) ++ { ++ static int init = 0; ++ static LARGE_INTEGER freq; ++ ++ LARGE_INTEGER count; ++ ++ (void)reset; ++ ++ if (!init) { ++ QueryPerformanceFrequency(&freq); ++ init = 1; ++ } ++ ++ QueryPerformanceCounter(&count); ++ ++ return (double)count.QuadPart / freq.QuadPart; ++ } ++ ++#elif defined MICROCHIP_PIC32 ++ #if defined(CYASSL_MICROCHIP_PIC32MZ) ++ #define CLOCK 80000000.0 ++ #else ++ #include ++ #define CLOCK 40000000.0 ++ #endif ++ ++ double current_time(int reset) ++ { ++ unsigned int ns; ++ ++ if (reset) { ++ WriteCoreTimer(0); ++ } ++ ++ /* get timer in ns */ ++ ns = ReadCoreTimer(); ++ ++ /* return seconds as a double */ ++ return ( ns / CLOCK * 2.0); ++ } ++ ++#elif defined(CYASSL_IAR_ARM) || defined (CYASSL_MDK_ARM) ++ ++#elif defined FREERTOS ++ ++ double current_time(int reset) ++ { ++ (void) reset; ++ ++ portTickType tickCount; ++ ++ /* tick count == ms, if configTICK_RATE_HZ is set to 1000 */ ++ tickCount = xTaskGetTickCount(); ++ return (double)tickCount / 1000; ++ } ++ ++#else ++ ++ #include ++ ++ double current_time(int reset) ++ { ++ struct timeval tv; ++ ++ (void)reset; ++ ++ gettimeofday(&tv, 0); ++ ++ return (double)tv.tv_sec + (double)tv.tv_usec / 1000000; ++ } ++ ++#endif /* _WIN32 */ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/main.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/main.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/main.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/main.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,71 @@ ++/* main.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++#include ++ ++#include "cmsis_os.h" ++#include "rl_fs.h" ++ ++#include ++ ++/*----------------------------------------------------------------------------- ++ * Initialize a Flash Memory Card ++ *----------------------------------------------------------------------------*/ ++static void init_filesystem (void) { ++ int32_t retv; ++ ++ retv = finit ("M0:"); ++ if (retv == 0) { ++ retv = fmount ("M0:"); ++ if (retv == 0) { ++ printf ("Drive M0 ready!\n"); ++ } ++ else { ++ printf ("Drive M0 mount failed!\n"); ++ } ++ } ++ else { ++ printf ("Drive M0 initialization failed!\n"); ++ } ++} ++extern void benchmark_test(void * arg) ; ++extern void init_time(void) ; ++ ++/*----------------------------------------------------------------------------- ++ * mian entry ++ *----------------------------------------------------------------------------*/ ++ ++int main() ++{ ++ void * arg = NULL ; ++ ++ init_filesystem (); ++ ++ printf("=== Start: Crypt Benchmark ===\n") ; ++ benchmark_test(arg) ; ++ printf("=== End: Crypt Benchmark ===\n") ; ++ ++} +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/time-CortexM3-4.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/time-CortexM3-4.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/time-CortexM3-4.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/time-CortexM3-4.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,41 @@ ++/* time-STM32F2.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++ ++#include ++#define DWT ((DWT_Type *) (0xE0001000UL) ) ++typedef struct ++{ ++ uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ ++ uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ ++} DWT_Type; ++ ++extern uint32_t SystemCoreClock ; ++ ++double current_time(int reset) ++{ ++ if(reset) DWT->CYCCNT = 0 ; ++ return ((double)DWT->CYCCNT/SystemCoreClock) ; ++} +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/time-dummy.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/time-dummy.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/time-dummy.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptBenchmark/time-dummy.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,34 @@ ++/* time-dummy.c.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include "time.h" ++ ++struct tm *Cyassl_MDK_gmtime(const time_t *c) ++{ ++ static struct tm date ; ++ return(&date) ; ++} ++ ++time_t time(time_t * t) { return 0 ; } +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/Abstract.txt mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/Abstract.txt +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/Abstract.txt 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/Abstract.txt 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,16 @@ ++This program is a simple test suite of wolfCrypt library. ++ ++In order to run this test suite, copy ++{PACK}\wolfSSL\CyaSSL\{version}\cyassl\certs folder and files to the SD memory. ++ ++For selecting test crypt algorism options, refer config-Crypt.h. ++ ++For the hardware crypt on config-Crypt.h, download ++STSW-STM32062: STM32F2xx standard peripherals library at ++http://www.st.com/. Copy Libraries\STM32F2xx_StdPeriph_Driver\{inc,src} to ++ {PACK}\cyassl\IDE\MDK5-ARM\STM32F2xx_StdPeriph_Lib ++ ++ ++ Support ++------- ++Please send questions or comments to support@wolfssl.com +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/CryptTest.uvoptx mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/CryptTest.uvoptx +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/CryptTest.uvoptx 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/CryptTest.uvoptx 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,987 @@ ++ ++ ++ ++ 1.0 ++ ++
### uVision Project, (C) Keil Software
++ ++ ++ *.c ++ *.s*; *.src; *.a* ++ *.obj ++ *.lib ++ *.txt; *.h; *.inc ++ *.plm ++ *.cpp ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ CryptTest ++ 0x4 ++ ARM-ADS ++ ++ 120000000 ++ ++ 1 ++ 1 ++ 0 ++ 1 ++ ++ ++ 1 ++ 65535 ++ 0 ++ 0 ++ 0 ++ ++ ++ 79 ++ 66 ++ 8 ++ .\Object\ ++ ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ ++ ++ 1 ++ 0 ++ 1 ++ ++ 255 ++ ++ ++ 0 ++ Schematics (MCBSTM32F200) ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\Documents\mcbstm32f200-schematics.pdf ++ ++ ++ 1 ++ User Manual (MCBSTM32F200) ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\Documents\mcbstm32f200.chm ++ ++ ++ 2 ++ MCBSTM32F200 Evaluation Board Web Page (MCBSTM32F200) ++ http://www.keil.com/mcbstm32f200/ ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 8 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ .\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ 0 ++ DLGUARM ++ ++ ++ ++ 0 ++ DLGTARM ++ (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) ++ ++ ++ 0 ++ ARMDBGFLAGS ++ ++ ++ ++ 0 ++ ULP2CM3 ++ -UP1135060 -O206 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO3 -TC10000000 -TP18 -TDX0 -TDD0 -TDS8000 -TDT0 -TDC1F -TIE1 -TIP1 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024.flm -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm) ++ ++ ++ 0 ++ UL2CM3 ++ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm)) ++ ++ ++ ++ ++ ++ 1 ++ 8 ++ 0x20000408 ++ ++ ++ ++ ++ 2 ++ 8 ++ 0x8004dc8 ++ ++ ++ ++ 0 ++ ++ ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ Source ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\main.c ++ main.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 2 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\test.c ++ test.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 3 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\cert_data.c ++ cert_data.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 4 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\time-dummy.c ++ time-dummy.c ++ 0 ++ 0 ++ ++ ++ ++ ++ Configuration ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 2 ++ 5 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\wolfSSL\config-Crypt.h ++ config-Crypt.h ++ 0 ++ 0 ++ ++ ++ 2 ++ 6 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\wolfSSL\settings.h ++ settings.h ++ 0 ++ 0 ++ ++ ++ ++ ++ Documentation ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ 3 ++ 7 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\Abstract.txt ++ Abstract.txt ++ 0 ++ 0 ++ ++ ++ ++ ++ ::CMSIS ++ 1 ++ 0 ++ 0 ++ 1 ++ ++ 4 ++ 8 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\CMSIS\RTX_Conf_CM.c ++ RTX_Conf_CM.c ++ 1 ++ 0 ++ ++ ++ 4 ++ 9 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.4\CMSIS_RTX\Lib\ARM\RTX_CM3.lib ++ RTX_CM3.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Device ++ 1 ++ 0 ++ 0 ++ 1 ++ ++ 5 ++ 10 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\RTE_Device.h ++ RTE_Device.h ++ 1 ++ 0 ++ ++ ++ 5 ++ 11 ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ startup_stm32f2xx.s ++ 1 ++ 0 ++ ++ ++ 5 ++ 12 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ system_stm32f2xx.c ++ 1 ++ 0 ++ ++ ++ 5 ++ 13 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\DMA_STM32F2xx.c ++ DMA_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 5 ++ 14 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\GPIO_STM32F2xx.c ++ GPIO_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Drivers ++ 1 ++ 0 ++ 0 ++ 1 ++ ++ 6 ++ 15 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\MCI_STM32F2xx.c ++ MCI_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ ++ ++ ::File System ++ 1 ++ 0 ++ 0 ++ 1 ++ ++ 7 ++ 16 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\File_System\FS_Config.c ++ FS_Config.c ++ 1 ++ 0 ++ ++ ++ 7 ++ 17 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\File_System\FS_Config_MC_0.h ++ FS_Config_MC_0.h ++ 1 ++ 0 ++ ++ ++ 7 ++ 18 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\FileSystem\Lib\ARM\FS_LFN_CM3_L.lib ++ FS_LFN_CM3_L.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::wolfSSL ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 8 ++ 19 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\config-Crypt.h ++ config-Crypt.h ++ 1 ++ 0 ++ ++ ++ 8 ++ 20 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\settings.h ++ settings.h ++ 1 ++ 0 ++ ++ ++ 8 ++ 21 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\cyassl_MDK_ARM.c ++ cyassl_MDK_ARM.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 22 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\ssl-dummy.c ++ ssl-dummy.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 23 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\aes.c ++ aes.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 24 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\arc4.c ++ arc4.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 25 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asm.c ++ asm.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 26 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asn.c ++ asn.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 27 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\blake2b.c ++ blake2b.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 28 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\camellia.c ++ camellia.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 29 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\coding.c ++ coding.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 30 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\compress.c ++ compress.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 31 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\des3.c ++ des3.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 32 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dh.c ++ dh.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 33 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dsa.c ++ dsa.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 34 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc.c ++ ecc.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 35 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc_fp.c ++ ecc_fp.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 36 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\error.c ++ error.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 37 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hc128.c ++ hc128.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 38 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hmac.c ++ hmac.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 39 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\integer.c ++ integer.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 40 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\logging.c ++ logging.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 41 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md2.c ++ md2.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 42 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md4.c ++ md4.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 43 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md5.c ++ md5.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 44 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\memory.c ++ memory.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 45 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\misc.c ++ misc.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 46 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\pwdbased.c ++ pwdbased.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 47 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rabbit.c ++ rabbit.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 48 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\random.c ++ random.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 49 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ripemd.c ++ ripemd.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 50 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rsa.c ++ rsa.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 51 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha.c ++ sha.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 52 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha256.c ++ sha256.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 53 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha512.c ++ sha512.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 54 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\tfm.c ++ tfm.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 55 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\wc_port.c ++ wc_port.c ++ 1 ++ 0 ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/CryptTest.uvprojx mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/CryptTest.uvprojx +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/CryptTest.uvprojx 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/CryptTest.uvprojx 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,970 @@ ++ ++ ++ ++ 2.1 ++ ++
### uVision Project, (C) Keil Software
++ ++ ++ ++ CryptTest ++ 0x4 ++ ARM-ADS ++ ++ ++ STM32F207IG ++ STMicroelectronics ++ IRAM(0x20000000,0x20000) IROM(0x08000000,0x100000) CPUTYPE("Cortex-M3") CLOCK(120000000) ELITTLE ++ ++ ++ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm)) ++ 0 ++ $$Device:STM32F207IG$Device\Include\stm32f2xx.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ $$Device:STM32F207IG$SVD\STM32F20x.svd ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ .\Object\ ++ CryptTest ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ .\Object\ ++ 1 ++ 0 ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ 0 ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 3 ++ ++ ++ 1 ++ ++ ++ SARMCM3.DLL ++ -REMAP -MPU ++ DCM.DLL ++ -pCM3 ++ SARMCM3.DLL ++ -REMAP -MPU ++ TCM.DLL ++ -pCM3 ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 16 ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ ++ 0 ++ 8 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ .\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 4100 ++ ++ 1 ++ BIN\ULP2CM3.DLL ++ "" () ++ ++ ++ ++ ++ 0 ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ "Cortex-M3" ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 8 ++ 0 ++ 0 ++ 0 ++ 3 ++ 3 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ ++ ++ ++ 1 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ HAVE_CONFIG_H MDK_CONF_CryptTest ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0x08000000 ++ 0x20000000 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Source ++ ++ ++ main.c ++ 1 ++ .\main.c ++ ++ ++ test.c ++ 1 ++ .\test.c ++ ++ ++ cert_data.c ++ 1 ++ .\cert_data.c ++ ++ ++ time-dummy.c ++ 1 ++ .\time-dummy.c ++ ++ ++ ++ ++ Configuration ++ ++ ++ config-Crypt.h ++ 5 ++ .\RTE\wolfSSL\config-Crypt.h ++ ++ ++ settings.h ++ 5 ++ .\RTE\wolfSSL\settings.h ++ ++ ++ ++ ++ Documentation ++ ++ ++ Abstract.txt ++ 5 ++ .\Abstract.txt ++ ++ ++ ++ ++ ::CMSIS ++ ++ ++ RTX_Conf_CM.c ++ 1 ++ RTE\CMSIS\RTX_Conf_CM.c ++ ++ ++ RTX_CM3.lib ++ 4 ++ C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.4\CMSIS_RTX\Lib\ARM\RTX_CM3.lib ++ ++ ++ ++ ++ ::Device ++ ++ ++ RTE_Device.h ++ 5 ++ RTE\Device\STM32F207IG\RTE_Device.h ++ ++ ++ startup_stm32f2xx.s ++ 2 ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ ++ ++ system_stm32f2xx.c ++ 1 ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ ++ ++ DMA_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\DMA_STM32F2xx.c ++ ++ ++ GPIO_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\GPIO_STM32F2xx.c ++ ++ ++ ++ ++ ::Drivers ++ ++ ++ MCI_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\MCI_STM32F2xx.c ++ ++ ++ ++ ++ ::File System ++ ++ ++ FS_Config.c ++ 1 ++ RTE\File_System\FS_Config.c ++ ++ ++ FS_Config_MC_0.h ++ 5 ++ RTE\File_System\FS_Config_MC_0.h ++ ++ ++ FS_LFN_CM3_L.lib ++ 4 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\FileSystem\Lib\ARM\FS_LFN_CM3_L.lib ++ ++ ++ ++ ++ ::wolfSSL ++ ++ ++ config-Crypt.h ++ 5 ++ RTE\wolfSSL\config-Crypt.h ++ ++ ++ settings.h ++ 5 ++ RTE\wolfSSL\settings.h ++ ++ ++ cyassl_MDK_ARM.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\cyassl_MDK_ARM.c ++ ++ ++ ssl-dummy.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\ssl-dummy.c ++ ++ ++ aes.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\aes.c ++ ++ ++ arc4.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\arc4.c ++ ++ ++ asm.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asm.c ++ ++ ++ asn.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asn.c ++ ++ ++ blake2b.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\blake2b.c ++ ++ ++ camellia.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\camellia.c ++ ++ ++ coding.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\coding.c ++ ++ ++ compress.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\compress.c ++ ++ ++ des3.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\des3.c ++ ++ ++ dh.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dh.c ++ ++ ++ dsa.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dsa.c ++ ++ ++ ecc.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc.c ++ ++ ++ ecc_fp.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc_fp.c ++ ++ ++ error.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\error.c ++ ++ ++ hc128.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hc128.c ++ ++ ++ hmac.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hmac.c ++ ++ ++ integer.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\integer.c ++ ++ ++ logging.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\logging.c ++ ++ ++ md2.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md2.c ++ ++ ++ md4.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md4.c ++ ++ ++ md5.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md5.c ++ ++ ++ memory.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\memory.c ++ ++ ++ misc.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\misc.c ++ ++ ++ pwdbased.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\pwdbased.c ++ ++ ++ rabbit.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rabbit.c ++ ++ ++ random.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\random.c ++ ++ ++ ripemd.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ripemd.c ++ ++ ++ rsa.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rsa.c ++ ++ ++ sha.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha.c ++ ++ ++ sha256.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha256.c ++ ++ ++ sha512.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha512.c ++ ++ ++ tfm.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\tfm.c ++ ++ ++ wc_port.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\wc_port.c ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ RTE\CMSIS\RTX_Conf_CM.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\RTE_Device.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\File_System\FS_Config.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\File_System\FS_Config_MC_0.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config.c ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_BSD.h ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_DNS_Client.h ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_ETH_0.h ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_TCP.h ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_UDP.h ++ ++ ++ ++ ++ ++ RTE\Network\Net_Debug.c ++ ++ ++ ++ ++ ++ RTE\Other\config-Crypt.h ++ ++ ++ ++ ++ ++ RTE\Other\config-FS.h ++ ++ ++ ++ ++ ++ RTE\Other\config-RTX-TCP-FS.h ++ ++ ++ ++ ++ ++ RTE\Other\config.h ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config-Crypt.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config.h ++ ++ ++ ++ ++ ++ RTE\wolfSSL\settings.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/RTE/wolfSSL/settings.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/RTE/wolfSSL/settings.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/RTE/wolfSSL/settings.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/RTE/wolfSSL/settings.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,667 @@ ++/* settings.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++/* Place OS specific preprocessor flags, defines, includes here, will be ++ included into every file because types.h includes it */ ++ ++ ++#ifndef CTAO_CRYPT_SETTINGS_H ++#define CTAO_CRYPT_SETTINGS_H ++ ++#ifdef __cplusplus ++ extern "C" { ++#endif ++ ++/* Uncomment next line if using IPHONE */ ++/* #define IPHONE */ ++ ++/* Uncomment next line if using ThreadX */ ++/* #define THREADX */ ++ ++/* Uncomment next line if using Micrium ucOS */ ++/* #define MICRIUM */ ++ ++/* Uncomment next line if using Mbed */ ++/* #define MBED */ ++ ++/* Uncomment next line if using Microchip PIC32 ethernet starter kit */ ++/* #define MICROCHIP_PIC32 */ ++ ++/* Uncomment next line if using Microchip TCP/IP stack, version 5 */ ++/* #define MICROCHIP_TCPIP_V5 */ ++ ++/* Uncomment next line if using Microchip TCP/IP stack, version 6 or later */ ++/* #define MICROCHIP_TCPIP */ ++ ++/* Uncomment next line if using PIC32MZ Crypto Engine */ ++/* #define CYASSL_MICROCHIP_PIC32MZ */ ++ ++/* Uncomment next line if using FreeRTOS */ ++/* #define FREERTOS */ ++ ++/* Uncomment next line if using FreeRTOS Windows Simulator */ ++/* #define FREERTOS_WINSIM */ ++ ++/* Uncomment next line if using RTIP */ ++/* #define EBSNET */ ++ ++/* Uncomment next line if using lwip */ ++/* #define CYASSL_LWIP */ ++ ++/* Uncomment next line if building CyaSSL for a game console */ ++/* #define CYASSL_GAME_BUILD */ ++ ++/* Uncomment next line if building CyaSSL for LSR */ ++/* #define CYASSL_LSR */ ++ ++/* Uncomment next line if building CyaSSL for Freescale MQX/RTCS/MFS */ ++/* #define FREESCALE_MQX */ ++ ++/* Uncomment next line if using STM32F2 */ ++/* #define CYASSL_STM32F2 */ ++ ++/* Uncomment next line if using Comverge settings */ ++/* #define COMVERGE */ ++ ++/* Uncomment next line if using QL SEP settings */ ++/* #define CYASSL_QL */ ++ ++/* Uncomment next line if using LwIP native TCP socket settings */ ++/* #define HAVE_LWIP_NATIVE */ ++ ++/* Uncomment next line if building for EROAD */ ++/* #define CYASSL_EROAD */ ++ ++#include ++ ++#ifdef IPHONE ++ #define SIZEOF_LONG_LONG 8 ++#endif ++ ++ ++#ifdef CYASSL_USER_SETTINGS ++ #include ++#endif ++ ++ ++#ifdef COMVERGE ++ #define THREADX ++ #define HAVE_NETX ++ #define CYASSL_USER_IO ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_FILESYSTEM ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++ #define NO_RSA ++ #define NO_SESSION_CACHE ++ #define HAVE_ECC ++#endif ++ ++ ++#ifdef THREADX ++ #define SIZEOF_LONG_LONG 8 ++#endif ++ ++#ifdef HAVE_NETX ++ #include "nx_api.h" ++#endif ++ ++#if defined(HAVE_LWIP_NATIVE) /* using LwIP native TCP socket */ ++ #define CYASSL_LWIP ++ #define NO_WRITEV ++ #define SINGLE_THREADED ++ #define CYASSL_USER_IO ++ #define NO_FILESYSTEM ++#endif ++ ++#ifdef MICROCHIP_PIC32 ++ /* #define CYASSL_MICROCHIP_PIC32MZ */ ++ #define SIZEOF_LONG_LONG 8 ++ #define SINGLE_THREADED ++ #define CYASSL_USER_IO ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_FILESYSTEM ++ #define USE_FAST_MATH ++ #define TFM_TIMING_RESISTANT ++#endif ++ ++#ifdef CYASSL_MICROCHIP_PIC32MZ ++ #define CYASSL_PIC32MZ_CE ++ #define CYASSL_PIC32MZ_CRYPT ++ #define HAVE_AES_ENGINE ++ #define CYASSL_PIC32MZ_RNG ++ /* #define CYASSL_PIC32MZ_HASH */ ++ #define CYASSL_AES_COUNTER ++ #define HAVE_AESGCM ++ #define NO_BIG_INT ++ ++#endif ++ ++#ifdef MICROCHIP_TCPIP_V5 ++ /* include timer functions */ ++ #include "TCPIP Stack/TCPIP.h" ++#endif ++ ++#ifdef MICROCHIP_TCPIP ++ /* include timer, NTP functions */ ++ #ifdef MICROCHIP_MPLAB_HARMONY ++ #include "tcpip/tcpip.h" ++ #else ++ #include "system/system_services.h" ++ #include "tcpip/sntp.h" ++ #endif ++#endif ++ ++#ifdef MBED ++ #define CYASSL_USER_IO ++ #define NO_FILESYSTEM ++ #define NO_CERT ++ #define USE_CERT_BUFFERS_1024 ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++ #define HAVE_ECC ++ #define NO_SESSION_CACHE ++ #define CYASSL_CMSIS_RTOS ++#endif ++ ++ ++#ifdef CYASSL_EROAD ++ #define FREESCALE_MQX ++ #define FREESCALE_MMCAU ++ #define SINGLE_THREADED ++ #define NO_STDIO_FILESYSTEM ++ #define CYASSL_LEANPSK ++ #define HAVE_NULL_CIPHER ++ #define NO_OLD_TLS ++ #define NO_ASN ++ #define NO_BIG_INT ++ #define NO_RSA ++ #define NO_DSA ++ #define NO_DH ++ #define NO_CERTS ++ #define NO_PWDBASED ++ #define NO_DES3 ++ #define NO_MD4 ++ #define NO_RC4 ++ #define NO_MD5 ++ #define NO_SESSION_CACHE ++ #define NO_MAIN_DRIVER ++#endif ++ ++#ifdef FREERTOS_WINSIM ++ #define FREERTOS ++ #define USE_WINDOWS_API ++#endif ++ ++ ++/* Micrium will use Visual Studio for compilation but not the Win32 API */ ++#if defined(_WIN32) && !defined(MICRIUM) && !defined(FREERTOS) \ ++ && !defined(EBSNET) && !defined(CYASSL_EROAD) ++ #define USE_WINDOWS_API ++#endif ++ ++ ++#if defined(CYASSL_LEANPSK) && !defined(XMALLOC_USER) ++ #include ++ #define XMALLOC(s, h, type) malloc((s)) ++ #define XFREE(p, h, type) free((p)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++#endif ++ ++#if defined(XMALLOC_USER) && defined(SSN_BUILDING_LIBYASSL) ++ #undef XMALLOC ++ #define XMALLOC yaXMALLOC ++ #undef XFREE ++ #define XFREE yaXFREE ++ #undef XREALLOC ++ #define XREALLOC yaXREALLOC ++#endif ++ ++ ++#ifdef FREERTOS ++ #ifndef NO_WRITEV ++ #define NO_WRITEV ++ #endif ++ #ifndef NO_SHA512 ++ #define NO_SHA512 ++ #endif ++ #ifndef NO_DH ++ #define NO_DH ++ #endif ++ #ifndef NO_DSA ++ #define NO_DSA ++ #endif ++ #ifndef NO_HC128 ++ #define NO_HC128 ++ #endif ++ ++ #ifndef SINGLE_THREADED ++ #include "FreeRTOS.h" ++ #include "semphr.h" ++ #endif ++#endif ++ ++#ifdef EBSNET ++ #include "rtip.h" ++ ++ /* #define DEBUG_CYASSL */ ++ #define NO_CYASSL_DIR /* tbd */ ++ ++ #if (POLLOS) ++ #define SINGLE_THREADED ++ #endif ++ ++ #if (RTPLATFORM) ++ #if (!RTP_LITTLE_ENDIAN) ++ #define BIG_ENDIAN_ORDER ++ #endif ++ #else ++ #if (!KS_LITTLE_ENDIAN) ++ #define BIG_ENDIAN_ORDER ++ #endif ++ #endif ++ ++ #if (WINMSP3) ++ #undef SIZEOF_LONG ++ #define SIZEOF_LONG_LONG 8 ++ #else ++ #sslpro: settings.h - please implement SIZEOF_LONG and SIZEOF_LONG_LONG ++ #endif ++ ++ #define XMALLOC(s, h, type) ((void *)rtp_malloc((s), SSL_PRO_MALLOC)) ++ #define XFREE(p, h, type) (rtp_free(p)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++ ++#endif /* EBSNET */ ++ ++#ifdef CYASSL_GAME_BUILD ++ #define SIZEOF_LONG_LONG 8 ++ #if defined(__PPU) || defined(__XENON) ++ #define BIG_ENDIAN_ORDER ++ #endif ++#endif ++ ++#ifdef CYASSL_LSR ++ #define HAVE_WEBSERVER ++ #define SIZEOF_LONG_LONG 8 ++ #define CYASSL_LOW_MEMORY ++ #define NO_WRITEV ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++ #define NO_DEV_RANDOM ++ #define NO_CYASSL_DIR ++ #define NO_RABBIT ++ #ifndef NO_FILESYSTEM ++ #define LSR_FS ++ #include "inc/hw_types.h" ++ #include "fs.h" ++ #endif ++ #define CYASSL_LWIP ++ #include /* for tcp errno */ ++ #define CYASSL_SAFERTOS ++ #if defined(__IAR_SYSTEMS_ICC__) ++ /* enum uses enum */ ++ #pragma diag_suppress=Pa089 ++ #endif ++#endif ++ ++#ifdef CYASSL_SAFERTOS ++ #ifndef SINGLE_THREADED ++ #include "SafeRTOS/semphr.h" ++ #endif ++ ++ #include "SafeRTOS/heap.h" ++ #define XMALLOC(s, h, type) pvPortMalloc((s)) ++ #define XFREE(p, h, type) vPortFree((p)) ++ #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n)) ++#endif ++ ++#ifdef CYASSL_LOW_MEMORY ++ #undef RSA_LOW_MEM ++ #define RSA_LOW_MEM ++ #undef CYASSL_SMALL_STACK ++ #define CYASSL_SMALL_STACK ++ #undef TFM_TIMING_RESISTANT ++ #define TFM_TIMING_RESISTANT ++#endif ++ ++#ifdef FREESCALE_MQX ++ #define SIZEOF_LONG_LONG 8 ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_RABBIT ++ #define NO_CYASSL_DIR ++ #define USE_FAST_MATH ++ #define TFM_TIMING_RESISTANT ++ #define FREESCALE_K70_RNGA ++ /* #define FREESCALE_K53_RNGB */ ++ #include "mqx.h" ++ #ifndef NO_FILESYSTEM ++ #include "mfs.h" ++ #include "fio.h" ++ #endif ++ #ifndef SINGLE_THREADED ++ #include "mutex.h" ++ #endif ++ ++ #define XMALLOC(s, h, t) (void *)_mem_alloc_system((s)) ++ #define XFREE(p, h, t) {void* xp = (p); if ((xp)) _mem_free((xp));} ++ /* Note: MQX has no realloc, using fastmath above */ ++#endif ++ ++#ifdef CYASSL_STM32F2 ++ #define SIZEOF_LONG_LONG 8 ++ #define NO_DEV_RANDOM ++ #define NO_CYASSL_DIR ++ #define NO_RABBIT ++ #define STM32F2_RNG ++ #define STM32F2_CRYPTO ++ #define KEIL_INTRINSICS ++#endif ++ ++#ifdef MICRIUM ++ ++ #include "stdlib.h" ++ #include "net_cfg.h" ++ #include "ssl_cfg.h" ++ #include "net_secure_os.h" ++ ++ #define CYASSL_TYPES ++ ++ typedef CPU_INT08U byte; ++ typedef CPU_INT16U word16; ++ typedef CPU_INT32U word32; ++ ++ #if (NET_SECURE_MGR_CFG_WORD_SIZE == CPU_WORD_SIZE_32) ++ #define SIZEOF_LONG 4 ++ #undef SIZEOF_LONG_LONG ++ #else ++ #undef SIZEOF_LONG ++ #define SIZEOF_LONG_LONG 8 ++ #endif ++ ++ #define STRING_USER ++ ++ #define XSTRLEN(pstr) ((CPU_SIZE_T)Str_Len((CPU_CHAR *)(pstr))) ++ #define XSTRNCPY(pstr_dest, pstr_src, len_max) \ ++ ((CPU_CHAR *)Str_Copy_N((CPU_CHAR *)(pstr_dest), \ ++ (CPU_CHAR *)(pstr_src), (CPU_SIZE_T)(len_max))) ++ #define XSTRNCMP(pstr_1, pstr_2, len_max) \ ++ ((CPU_INT16S)Str_Cmp_N((CPU_CHAR *)(pstr_1), \ ++ (CPU_CHAR *)(pstr_2), (CPU_SIZE_T)(len_max))) ++ #define XSTRSTR(pstr, pstr_srch) \ ++ ((CPU_CHAR *)Str_Str((CPU_CHAR *)(pstr), \ ++ (CPU_CHAR *)(pstr_srch))) ++ #define XMEMSET(pmem, data_val, size) \ ++ ((void)Mem_Set((void *)(pmem), (CPU_INT08U) (data_val), \ ++ (CPU_SIZE_T)(size))) ++ #define XMEMCPY(pdest, psrc, size) ((void)Mem_Copy((void *)(pdest), \ ++ (void *)(psrc), (CPU_SIZE_T)(size))) ++ #define XMEMCMP(pmem_1, pmem_2, size) \ ++ (((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), (void *)(pmem_2), \ ++ (CPU_SIZE_T)(size))) ? DEF_NO : DEF_YES) ++ #define XMEMMOVE XMEMCPY ++ ++#if (NET_SECURE_MGR_CFG_EN == DEF_ENABLED) ++ #define MICRIUM_MALLOC ++ #define XMALLOC(s, h, type) ((void *)NetSecure_BlkGet((CPU_INT08U)(type), \ ++ (CPU_SIZE_T)(s), (void *)0)) ++ #define XFREE(p, h, type) (NetSecure_BlkFree((CPU_INT08U)(type), \ ++ (p), (void *)0)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++#endif ++ ++ #if (NET_SECURE_MGR_CFG_FS_EN == DEF_ENABLED) ++ #undef NO_FILESYSTEM ++ #else ++ #define NO_FILESYSTEM ++ #endif ++ ++ #if (SSL_CFG_TRACE_LEVEL == CYASSL_TRACE_LEVEL_DBG) ++ #define DEBUG_CYASSL ++ #else ++ #undef DEBUG_CYASSL ++ #endif ++ ++ #if (SSL_CFG_OPENSSL_EN == DEF_ENABLED) ++ #define OPENSSL_EXTRA ++ #else ++ #undef OPENSSL_EXTRA ++ #endif ++ ++ #if (SSL_CFG_MULTI_THREAD_EN == DEF_ENABLED) ++ #undef SINGLE_THREADED ++ #else ++ #define SINGLE_THREADED ++ #endif ++ ++ #if (SSL_CFG_DH_EN == DEF_ENABLED) ++ #undef NO_DH ++ #else ++ #define NO_DH ++ #endif ++ ++ #if (SSL_CFG_DSA_EN == DEF_ENABLED) ++ #undef NO_DSA ++ #else ++ #define NO_DSA ++ #endif ++ ++ #if (SSL_CFG_PSK_EN == DEF_ENABLED) ++ #undef NO_PSK ++ #else ++ #define NO_PSK ++ #endif ++ ++ #if (SSL_CFG_3DES_EN == DEF_ENABLED) ++ #undef NO_DES ++ #else ++ #define NO_DES ++ #endif ++ ++ #if (SSL_CFG_AES_EN == DEF_ENABLED) ++ #undef NO_AES ++ #else ++ #define NO_AES ++ #endif ++ ++ #if (SSL_CFG_RC4_EN == DEF_ENABLED) ++ #undef NO_RC4 ++ #else ++ #define NO_RC4 ++ #endif ++ ++ #if (SSL_CFG_RABBIT_EN == DEF_ENABLED) ++ #undef NO_RABBIT ++ #else ++ #define NO_RABBIT ++ #endif ++ ++ #if (SSL_CFG_HC128_EN == DEF_ENABLED) ++ #undef NO_HC128 ++ #else ++ #define NO_HC128 ++ #endif ++ ++ #if (CPU_CFG_ENDIAN_TYPE == CPU_ENDIAN_TYPE_BIG) ++ #define BIG_ENDIAN_ORDER ++ #else ++ #undef BIG_ENDIAN_ORDER ++ #define LITTLE_ENDIAN_ORDER ++ #endif ++ ++ #if (SSL_CFG_MD4_EN == DEF_ENABLED) ++ #undef NO_MD4 ++ #else ++ #define NO_MD4 ++ #endif ++ ++ #if (SSL_CFG_WRITEV_EN == DEF_ENABLED) ++ #undef NO_WRITEV ++ #else ++ #define NO_WRITEV ++ #endif ++ ++ #if (SSL_CFG_USER_RNG_SEED_EN == DEF_ENABLED) ++ #define NO_DEV_RANDOM ++ #else ++ #undef NO_DEV_RANDOM ++ #endif ++ ++ #if (SSL_CFG_USER_IO_EN == DEF_ENABLED) ++ #define CYASSL_USER_IO ++ #else ++ #undef CYASSL_USER_IO ++ #endif ++ ++ #if (SSL_CFG_DYNAMIC_BUFFERS_EN == DEF_ENABLED) ++ #undef LARGE_STATIC_BUFFERS ++ #undef STATIC_CHUNKS_ONLY ++ #else ++ #define LARGE_STATIC_BUFFERS ++ #define STATIC_CHUNKS_ONLY ++ #endif ++ ++ #if (SSL_CFG_DER_LOAD_EN == DEF_ENABLED) ++ #define CYASSL_DER_LOAD ++ #else ++ #undef CYASSL_DER_LOAD ++ #endif ++ ++ #if (SSL_CFG_DTLS_EN == DEF_ENABLED) ++ #define CYASSL_DTLS ++ #else ++ #undef CYASSL_DTLS ++ #endif ++ ++ #if (SSL_CFG_CALLBACKS_EN == DEF_ENABLED) ++ #define CYASSL_CALLBACKS ++ #else ++ #undef CYASSL_CALLBACKS ++ #endif ++ ++ #if (SSL_CFG_FAST_MATH_EN == DEF_ENABLED) ++ #define USE_FAST_MATH ++ #else ++ #undef USE_FAST_MATH ++ #endif ++ ++ #if (SSL_CFG_TFM_TIMING_RESISTANT_EN == DEF_ENABLED) ++ #define TFM_TIMING_RESISTANT ++ #else ++ #undef TFM_TIMING_RESISTANT ++ #endif ++ ++#endif /* MICRIUM */ ++ ++ ++#ifdef CYASSL_QL ++ #ifndef CYASSL_SEP ++ #define CYASSL_SEP ++ #endif ++ #ifndef OPENSSL_EXTRA ++ #define OPENSSL_EXTRA ++ #endif ++ #ifndef SESSION_CERTS ++ #define SESSION_CERTS ++ #endif ++ #ifndef HAVE_AESCCM ++ #define HAVE_AESCCM ++ #endif ++ #ifndef ATOMIC_USER ++ #define ATOMIC_USER ++ #endif ++ #ifndef CYASSL_DER_LOAD ++ #define CYASSL_DER_LOAD ++ #endif ++ #ifndef KEEP_PEER_CERT ++ #define KEEP_PEER_CERT ++ #endif ++ #ifndef HAVE_ECC ++ #define HAVE_ECC ++ #endif ++ #ifndef SESSION_INDEX ++ #define SESSION_INDEX ++ #endif ++#endif /* CYASSL_QL */ ++ ++ ++#if !defined(XMALLOC_USER) && !defined(MICRIUM_MALLOC) && \ ++ !defined(CYASSL_LEANPSK) && !defined(NO_CYASSL_MEMORY) ++ #define USE_CYASSL_MEMORY ++#endif ++ ++ ++#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) ++ #undef KEEP_PEER_CERT ++ #define KEEP_PEER_CERT ++#endif ++ ++ ++/* stream ciphers except arc4 need 32bit alignment, intel ok without */ ++#ifndef XSTREAM_ALIGNMENT ++ #if defined(__x86_64__) || defined(__ia64__) || defined(__i386__) ++ #define NO_XSTREAM_ALIGNMENT ++ #else ++ #define XSTREAM_ALIGNMENT ++ #endif ++#endif ++ ++ ++/* if using hardware crypto and have alignment requirements, specify the ++ requirement here. The record header of SSL/TLS will prvent easy alignment. ++ This hint tries to help as much as possible. */ ++#ifndef CYASSL_GENERAL_ALIGNMENT ++ #ifdef CYASSL_AESNI ++ #define CYASSL_GENERAL_ALIGNMENT 16 ++ #elif defined(XSTREAM_ALIGNMENT) ++ #define CYASSL_GENERAL_ALIGNMENT 4 ++ #else ++ #define CYASSL_GENERAL_ALIGNMENT 0 ++ #endif ++#endif ++ ++#ifdef HAVE_CRL ++ /* not widely supported yet */ ++ #undef NO_SKID ++ #define NO_SKID ++#endif ++ ++/* Place any other flags or defines here */ ++ ++ ++#ifdef __cplusplus ++ } /* extern "C" */ ++#endif ++ ++ ++#endif /* CTAO_CRYPT_SETTINGS_H */ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/cert_data.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/cert_data.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/cert_data.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/cert_data.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,28 @@ ++/* certs_test.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++/* Define initial data for cert buffers */ ++#include ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/main.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/main.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/main.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/main.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,76 @@ ++/* main.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++#include ++ ++#include "cmsis_os.h" ++ ++#include ++ ++/*----------------------------------------------------------------------------- ++ * Initialize a Flash Memory Card ++ *----------------------------------------------------------------------------*/ ++#if !defined(NO_FILESYSTEM) ++#include "rl_fs.h" ++ ++static void init_filesystem (void) { ++ int32_t retv; ++ ++ retv = finit ("M0:"); ++ if (retv == 0) { ++ retv = fmount ("M0:"); ++ if (retv == 0) { ++ printf ("Drive M0 ready!\n"); ++ } ++ else { ++ printf ("Drive M0 mount failed!\n"); ++ } ++ } ++ else { ++ printf ("Drive M0 initialization failed!\n"); ++ } ++} ++#endif ++ ++extern void ctaocrypt_test(void * arg) ; ++ ++/*----------------------------------------------------------------------------- ++ * mian entry ++ *----------------------------------------------------------------------------*/ ++ ++int main() ++{ ++ void * arg = NULL ; ++ ++ #if !defined(NO_FILESYSTEM) ++ init_filesystem (); ++ #endif ++ ++ printf("=== Start: Crypt test ===\n") ; ++ ctaocrypt_test(arg) ; ++ printf("=== End: Crypt test ===\n") ; ++ ++} +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/test.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/test.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/test.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/test.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,4863 @@ ++/* test.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++ ++#ifdef XMALLOC_USER ++ #include /* we're using malloc / free direct here */ ++#endif ++ ++#ifndef NO_CRYPT_TEST ++ ++#ifdef CYASSL_TEST_CERT ++ #include ++#else ++ #include ++#endif ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#ifdef HAVE_ECC ++ #include ++#endif ++#ifdef HAVE_BLAKE2 ++ #include ++#endif ++#ifdef HAVE_LIBZ ++ #include ++#endif ++#ifdef HAVE_PKCS7 ++ #include ++#endif ++ ++#ifdef _MSC_VER ++ /* 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy */ ++ #pragma warning(disable: 4996) ++#endif ++ ++#ifdef OPENSSL_EXTRA ++ #include ++ #include ++ #include ++ #include ++#endif ++ ++ ++#if defined(USE_CERT_BUFFERS_1024) || defined(USE_CERT_BUFFERS_2048) ++ /* include test cert and key buffers for use with NO_FILESYSTEM */ ++ #if defined(CYASSL_MDK_ARM) ++ #include "cert_data.h" ++ /* use certs_test.c for initial data, so other ++ commands can share the data. */ ++ #else ++ #include ++ #endif ++#endif ++ ++#if defined(CYASSL_MDK_ARM) ++ #include ++ #include ++ extern FILE * CyaSSL_fopen(const char *fname, const char *mode) ; ++ #define fopen CyaSSL_fopen ++#endif ++ ++#ifdef HAVE_NTRU ++ #include "ntru_crypto.h" ++#endif ++#ifdef HAVE_CAVIUM ++ #include "cavium_sysdep.h" ++ #include "cavium_common.h" ++ #include "cavium_ioctl.h" ++#endif ++ ++#ifdef FREESCALE_MQX ++ #include ++ #include ++ #include ++#else ++ #include ++#endif ++ ++ ++#ifdef THREADX ++ /* since just testing, use THREADX log printf instead */ ++ int dc_log_printf(char*, ...); ++ #undef printf ++ #define printf dc_log_printf ++#endif ++ ++#include "ctaocrypt/test/test.h" ++ ++ ++typedef struct testVector { ++ const char* input; ++ const char* output; ++ size_t inLen; ++ size_t outLen; ++} testVector; ++ ++int md2_test(void); ++int md5_test(void); ++int md4_test(void); ++int sha_test(void); ++int sha256_test(void); ++int sha512_test(void); ++int sha384_test(void); ++int hmac_md5_test(void); ++int hmac_sha_test(void); ++int hmac_sha256_test(void); ++int hmac_sha384_test(void); ++int hmac_sha512_test(void); ++int hmac_blake2b_test(void); ++int hkdf_test(void); ++int arc4_test(void); ++int hc128_test(void); ++int rabbit_test(void); ++int des_test(void); ++int des3_test(void); ++int aes_test(void); ++int aesgcm_test(void); ++int gmac_test(void); ++int aesccm_test(void); ++int camellia_test(void); ++int rsa_test(void); ++int dh_test(void); ++int dsa_test(void); ++int random_test(void); ++int pwdbased_test(void); ++int ripemd_test(void); ++int openssl_test(void); /* test mini api */ ++int pbkdf1_test(void); ++int pkcs12_test(void); ++int pbkdf2_test(void); ++#ifdef HAVE_ECC ++ int ecc_test(void); ++ #ifdef HAVE_ECC_ENCRYPT ++ int ecc_encrypt_test(void); ++ #endif ++#endif ++#ifdef HAVE_BLAKE2 ++ int blake2b_test(void); ++#endif ++#ifdef HAVE_LIBZ ++ int compress_test(void); ++#endif ++#ifdef HAVE_PKCS7 ++ int pkcs7enveloped_test(void); ++ int pkcs7signed_test(void); ++#endif ++ ++ ++ ++static void err_sys(const char* msg, int es) ++{ ++ printf("%s error = %d\n", msg, es); ++ #if !defined(THREADX) && !defined(CYASSL_MDK_ARM) ++ if (msg) ++ exit(es); ++ #endif ++ return; ++} ++ ++/* func_args from test.h, so don't have to pull in other junk */ ++typedef struct func_args { ++ int argc; ++ char** argv; ++ int return_code; ++} func_args; ++ ++ ++ ++void ctaocrypt_test(void* args) ++{ ++ int ret = 0; ++ ++ ((func_args*)args)->return_code = -1; /* error state */ ++ ++#if !defined(NO_BIG_INT) ++ if (CheckCtcSettings() != 1) ++ err_sys("Build vs runtime math mismatch\n", -1234); ++ ++#ifdef USE_FAST_MATH ++ if (CheckFastMathSettings() != 1) ++ err_sys("Build vs runtime fastmath FP_MAX_BITS mismatch\n", -1235); ++#endif /* USE_FAST_MATH */ ++#endif /* !NO_BIG_INT */ ++ ++ ++#ifndef NO_MD5 ++ if ( (ret = md5_test()) != 0) ++ err_sys("MD5 test failed!\n", ret); ++ else ++ printf( "MD5 test passed!\n"); ++#endif ++ ++#ifdef CYASSL_MD2 ++ if ( (ret = md2_test()) != 0) ++ err_sys("MD2 test failed!\n", ret); ++ else ++ printf( "MD2 test passed!\n"); ++#endif ++ ++#ifndef NO_MD4 ++ if ( (ret = md4_test()) != 0) ++ err_sys("MD4 test failed!\n", ret); ++ else ++ printf( "MD4 test passed!\n"); ++#endif ++ ++#ifndef NO_SHA ++ if ( (ret = sha_test()) != 0) ++ err_sys("SHA test failed!\n", ret); ++ else ++ printf( "SHA test passed!\n"); ++#endif ++ ++#ifndef NO_SHA256 ++ if ( (ret = sha256_test()) != 0) ++ err_sys("SHA-256 test failed!\n", ret); ++ else ++ printf( "SHA-256 test passed!\n"); ++#endif ++ ++#ifdef CYASSL_SHA384 ++ if ( (ret = sha384_test()) != 0) ++ err_sys("SHA-384 test failed!\n", ret); ++ else ++ printf( "SHA-384 test passed!\n"); ++#endif ++ ++#ifdef CYASSL_SHA512 ++ if ( (ret = sha512_test()) != 0) ++ err_sys("SHA-512 test failed!\n", ret); ++ else ++ printf( "SHA-512 test passed!\n"); ++#endif ++ ++#ifdef CYASSL_RIPEMD ++ if ( (ret = ripemd_test()) != 0) ++ err_sys("RIPEMD test failed!\n", ret); ++ else ++ printf( "RIPEMD test passed!\n"); ++#endif ++ ++#ifdef HAVE_BLAKE2 ++ if ( (ret = blake2b_test()) != 0) ++ err_sys("BLAKE2b test failed!\n", ret); ++ else ++ printf( "BLAKE2b test passed!\n"); ++#endif ++ ++#ifndef NO_HMAC ++ #ifndef NO_MD5 ++ if ( (ret = hmac_md5_test()) != 0) ++ err_sys("HMAC-MD5 test failed!\n", ret); ++ else ++ printf( "HMAC-MD5 test passed!\n"); ++ #endif ++ ++ #ifndef NO_SHA ++ if ( (ret = hmac_sha_test()) != 0) ++ err_sys("HMAC-SHA test failed!\n", ret); ++ else ++ printf( "HMAC-SHA test passed!\n"); ++ #endif ++ ++ #ifndef NO_SHA256 ++ if ( (ret = hmac_sha256_test()) != 0) ++ err_sys("HMAC-SHA256 test failed!\n", ret); ++ else ++ printf( "HMAC-SHA256 test passed!\n"); ++ #endif ++ ++ #ifdef CYASSL_SHA384 ++ if ( (ret = hmac_sha384_test()) != 0) ++ err_sys("HMAC-SHA384 test failed!\n", ret); ++ else ++ printf( "HMAC-SHA384 test passed!\n"); ++ #endif ++ ++ #ifdef CYASSL_SHA512 ++ if ( (ret = hmac_sha512_test()) != 0) ++ err_sys("HMAC-SHA512 test failed!\n", ret); ++ else ++ printf( "HMAC-SHA512 test passed!\n"); ++ #endif ++ ++ #ifdef HAVE_BLAKE2 ++ if ( (ret = hmac_blake2b_test()) != 0) ++ err_sys("HMAC-BLAKE2 test failed!\n", ret); ++ else ++ printf( "HMAC-BLAKE2 test passed!\n"); ++ #endif ++ ++ #ifdef HAVE_HKDF ++ if ( (ret = hkdf_test()) != 0) ++ err_sys("HMAC-KDF test failed!\n", ret); ++ else ++ printf( "HMAC-KDF test passed!\n"); ++ #endif ++ ++#endif ++ ++#ifdef HAVE_AESGCM ++ if ( (ret = gmac_test()) != 0) ++ err_sys("GMAC test passed!\n", ret); ++ else ++ printf( "GMAC test passed!\n"); ++#endif ++ ++#ifndef NO_RC4 ++ if ( (ret = arc4_test()) != 0) ++ err_sys("ARC4 test failed!\n", ret); ++ else ++ printf( "ARC4 test passed!\n"); ++#endif ++ ++#ifndef NO_HC128 ++ if ( (ret = hc128_test()) != 0) ++ err_sys("HC-128 test failed!\n", ret); ++ else ++ printf( "HC-128 test passed!\n"); ++#endif ++ ++#ifndef NO_RABBIT ++ if ( (ret = rabbit_test()) != 0) ++ err_sys("Rabbit test failed!\n", ret); ++ else ++ printf( "Rabbit test passed!\n"); ++#endif ++ ++#ifndef NO_DES3 ++ if ( (ret = des_test()) != 0) ++ err_sys("DES test failed!\n", ret); ++ else ++ printf( "DES test passed!\n"); ++#endif ++ ++#ifndef NO_DES3 ++ if ( (ret = des3_test()) != 0) ++ err_sys("DES3 test failed!\n", ret); ++ else ++ printf( "DES3 test passed!\n"); ++#endif ++ ++#ifndef NO_AES ++ if ( (ret = aes_test()) != 0) ++ err_sys("AES test failed!\n", ret); ++ else ++ printf( "AES test passed!\n"); ++ ++#ifdef HAVE_AESGCM ++ if ( (ret = aesgcm_test()) != 0) ++ err_sys("AES-GCM test failed!\n", ret); ++ else ++ printf( "AES-GCM test passed!\n"); ++#endif ++ ++#ifdef HAVE_AESCCM ++ if ( (ret = aesccm_test()) != 0) ++ err_sys("AES-CCM test failed!\n", ret); ++ else ++ printf( "AES-CCM test passed!\n"); ++#endif ++#endif ++ ++#ifdef HAVE_CAMELLIA ++ if ( (ret = camellia_test()) != 0) ++ err_sys("CAMELLIA test failed!\n", ret); ++ else ++ printf( "CAMELLIA test passed!\n"); ++#endif ++ ++ if ( (ret = random_test()) != 0) ++ err_sys("RANDOM test failed!\n", ret); ++ else ++ printf( "RANDOM test passed!\n"); ++ ++#ifndef NO_RSA ++ if ( (ret = rsa_test()) != 0) ++ err_sys("RSA test failed!\n", ret); ++ else ++ printf( "RSA test passed!\n"); ++#endif ++ ++#ifndef NO_DH ++ if ( (ret = dh_test()) != 0) ++ err_sys("DH test failed!\n", ret); ++ else ++ printf( "DH test passed!\n"); ++#endif ++ ++#ifndef NO_DSA ++ if ( (ret = dsa_test()) != 0) ++ err_sys("DSA test failed!\n", ret); ++ else ++ printf( "DSA test passed!\n"); ++#endif ++ ++#ifndef NO_PWDBASED ++ if ( (ret = pwdbased_test()) != 0) ++ err_sys("PWDBASED test failed!\n", ret); ++ else ++ printf( "PWDBASED test passed!\n"); ++#endif ++ ++#ifdef OPENSSL_EXTRA ++ if ( (ret = openssl_test()) != 0) ++ err_sys("OPENSSL test failed!\n", ret); ++ else ++ printf( "OPENSSL test passed!\n"); ++#endif ++ ++#ifdef HAVE_ECC ++ if ( (ret = ecc_test()) != 0) ++ err_sys("ECC test failed!\n", ret); ++ else ++ printf( "ECC test passed!\n"); ++ #ifdef HAVE_ECC_ENCRYPT ++ if ( (ret = ecc_encrypt_test()) != 0) ++ err_sys("ECC Enc test failed!\n", ret); ++ else ++ printf( "ECC Enc test passed!\n"); ++ #endif ++#endif ++ ++#ifdef HAVE_LIBZ ++ if ( (ret = compress_test()) != 0) ++ err_sys("COMPRESS test failed!\n", ret); ++ else ++ printf( "COMPRESS test passed!\n"); ++#endif ++ ++#ifdef HAVE_PKCS7 ++ if ( (ret = pkcs7enveloped_test()) != 0) ++ err_sys("PKCS7enveloped test failed!\n", ret); ++ else ++ printf( "PKCS7enveloped test passed!\n"); ++ ++ if ( (ret = pkcs7signed_test()) != 0) ++ err_sys("PKCS7signed test failed!\n", ret); ++ else ++ printf( "PKCS7signed test passed!\n"); ++#endif ++ ++ ((func_args*)args)->return_code = ret; ++} ++ ++ ++#ifndef NO_MAIN_DRIVER ++ ++#ifdef HAVE_CAVIUM ++ ++static int OpenNitroxDevice(int dma_mode,int dev_id) ++{ ++ Csp1CoreAssignment core_assign; ++ Uint32 device; ++ ++ if (CspInitialize(CAVIUM_DIRECT,CAVIUM_DEV_ID)) ++ return -1; ++ if (Csp1GetDevType(&device)) ++ return -1; ++ if (device != NPX_DEVICE) { ++ if (ioctl(gpkpdev_hdlr[CAVIUM_DEV_ID], IOCTL_CSP1_GET_CORE_ASSIGNMENT, ++ (Uint32 *)&core_assign)!= 0) ++ return -1; ++ } ++ CspShutdown(CAVIUM_DEV_ID); ++ ++ return CspInitialize(dma_mode, dev_id); ++} ++ ++#endif /* HAVE_CAVIUM */ ++ ++ /* so overall tests can pull in test function */ ++ ++ int main(int argc, char** argv) ++ { ++ ++ func_args args; ++ ++ ++#ifdef HAVE_CAVIUM ++ int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID); ++ if (ret != 0) ++ err_sys("Cavium OpenNitroxDevice failed", -1236); ++#endif /* HAVE_CAVIUM */ ++ ++ args.argc = argc; ++ args.argv = argv; ++ ++ ctaocrypt_test(&args); ++ ++#ifdef HAVE_CAVIUM ++ CspShutdown(CAVIUM_DEV_ID); ++#endif ++ ++ return args.return_code; ++ } ++ ++#endif /* NO_MAIN_DRIVER */ ++ ++ ++#ifdef CYASSL_MD2 ++int md2_test() ++{ ++ Md2 md2; ++ byte hash[MD2_DIGEST_SIZE]; ++ ++ testVector a, b, c, d, e, f, g; ++ testVector test_md2[7]; ++ int times = sizeof(test_md2) / sizeof(testVector), i; ++ ++ a.input = ""; ++ a.output = "\x83\x50\xe5\xa3\xe2\x4c\x15\x3d\xf2\x27\x5c\x9f\x80\x69" ++ "\x27\x73"; ++ a.inLen = strlen(a.input); ++ a.outLen = MD2_DIGEST_SIZE; ++ ++ b.input = "a"; ++ b.output = "\x32\xec\x01\xec\x4a\x6d\xac\x72\xc0\xab\x96\xfb\x34\xc0" ++ "\xb5\xd1"; ++ b.inLen = strlen(b.input); ++ b.outLen = MD2_DIGEST_SIZE; ++ ++ c.input = "abc"; ++ c.output = "\xda\x85\x3b\x0d\x3f\x88\xd9\x9b\x30\x28\x3a\x69\xe6\xde" ++ "\xd6\xbb"; ++ c.inLen = strlen(c.input); ++ c.outLen = MD2_DIGEST_SIZE; ++ ++ d.input = "message digest"; ++ d.output = "\xab\x4f\x49\x6b\xfb\x2a\x53\x0b\x21\x9f\xf3\x30\x31\xfe" ++ "\x06\xb0"; ++ d.inLen = strlen(d.input); ++ d.outLen = MD2_DIGEST_SIZE; ++ ++ e.input = "abcdefghijklmnopqrstuvwxyz"; ++ e.output = "\x4e\x8d\xdf\xf3\x65\x02\x92\xab\x5a\x41\x08\xc3\xaa\x47" ++ "\x94\x0b"; ++ e.inLen = strlen(e.input); ++ e.outLen = MD2_DIGEST_SIZE; ++ ++ f.input = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345" ++ "6789"; ++ f.output = "\xda\x33\xde\xf2\xa4\x2d\xf1\x39\x75\x35\x28\x46\xc3\x03" ++ "\x38\xcd"; ++ f.inLen = strlen(f.input); ++ f.outLen = MD2_DIGEST_SIZE; ++ ++ g.input = "1234567890123456789012345678901234567890123456789012345678" ++ "9012345678901234567890"; ++ g.output = "\xd5\x97\x6f\x79\xd8\x3d\x3a\x0d\xc9\x80\x6c\x3c\x66\xf3" ++ "\xef\xd8"; ++ g.inLen = strlen(g.input); ++ g.outLen = MD2_DIGEST_SIZE; ++ ++ test_md2[0] = a; ++ test_md2[1] = b; ++ test_md2[2] = c; ++ test_md2[3] = d; ++ test_md2[4] = e; ++ test_md2[5] = f; ++ test_md2[6] = g; ++ ++ InitMd2(&md2); ++ ++ for (i = 0; i < times; ++i) { ++ Md2Update(&md2, (byte*)test_md2[i].input, (word32)test_md2[i].inLen); ++ Md2Final(&md2, hash); ++ ++ if (memcmp(hash, test_md2[i].output, MD2_DIGEST_SIZE) != 0) ++ return -155 - i; ++ } ++ ++ return 0; ++} ++#endif ++ ++#ifndef NO_MD5 ++int md5_test(void) ++{ ++ Md5 md5; ++ byte hash[MD5_DIGEST_SIZE]; ++ ++ testVector a, b, c, d, e; ++ testVector test_md5[5]; ++ int times = sizeof(test_md5) / sizeof(testVector), i; ++ ++ a.input = "abc"; ++ a.output = "\x90\x01\x50\x98\x3c\xd2\x4f\xb0\xd6\x96\x3f\x7d\x28\xe1\x7f" ++ "\x72"; ++ a.inLen = strlen(a.input); ++ a.outLen = MD5_DIGEST_SIZE; ++ ++ b.input = "message digest"; ++ b.output = "\xf9\x6b\x69\x7d\x7c\xb7\x93\x8d\x52\x5a\x2f\x31\xaa\xf1\x61" ++ "\xd0"; ++ b.inLen = strlen(b.input); ++ b.outLen = MD5_DIGEST_SIZE; ++ ++ c.input = "abcdefghijklmnopqrstuvwxyz"; ++ c.output = "\xc3\xfc\xd3\xd7\x61\x92\xe4\x00\x7d\xfb\x49\x6c\xca\x67\xe1" ++ "\x3b"; ++ c.inLen = strlen(c.input); ++ c.outLen = MD5_DIGEST_SIZE; ++ ++ d.input = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345" ++ "6789"; ++ d.output = "\xd1\x74\xab\x98\xd2\x77\xd9\xf5\xa5\x61\x1c\x2c\x9f\x41\x9d" ++ "\x9f"; ++ d.inLen = strlen(d.input); ++ d.outLen = MD5_DIGEST_SIZE; ++ ++ e.input = "1234567890123456789012345678901234567890123456789012345678" ++ "9012345678901234567890"; ++ e.output = "\x57\xed\xf4\xa2\x2b\xe3\xc9\x55\xac\x49\xda\x2e\x21\x07\xb6" ++ "\x7a"; ++ e.inLen = strlen(e.input); ++ e.outLen = MD5_DIGEST_SIZE; ++ ++ test_md5[0] = a; ++ test_md5[1] = b; ++ test_md5[2] = c; ++ test_md5[3] = d; ++ test_md5[4] = e; ++ ++ InitMd5(&md5); ++ ++ for (i = 0; i < times; ++i) { ++ Md5Update(&md5, (byte*)test_md5[i].input, (word32)test_md5[i].inLen); ++ Md5Final(&md5, hash); ++ ++ if (memcmp(hash, test_md5[i].output, MD5_DIGEST_SIZE) != 0) ++ return -5 - i; ++ } ++ ++ return 0; ++} ++#endif /* NO_MD5 */ ++ ++ ++#ifndef NO_MD4 ++ ++int md4_test(void) ++{ ++ Md4 md4; ++ byte hash[MD4_DIGEST_SIZE]; ++ ++ testVector a, b, c, d, e, f, g; ++ testVector test_md4[7]; ++ int times = sizeof(test_md4) / sizeof(testVector), i; ++ ++ a.input = ""; ++ a.output = "\x31\xd6\xcf\xe0\xd1\x6a\xe9\x31\xb7\x3c\x59\xd7\xe0\xc0\x89" ++ "\xc0"; ++ a.inLen = strlen(a.input); ++ a.outLen = MD4_DIGEST_SIZE; ++ ++ b.input = "a"; ++ b.output = "\xbd\xe5\x2c\xb3\x1d\xe3\x3e\x46\x24\x5e\x05\xfb\xdb\xd6\xfb" ++ "\x24"; ++ b.inLen = strlen(b.input); ++ b.outLen = MD4_DIGEST_SIZE; ++ ++ c.input = "abc"; ++ c.output = "\xa4\x48\x01\x7a\xaf\x21\xd8\x52\x5f\xc1\x0a\xe8\x7a\xa6\x72" ++ "\x9d"; ++ c.inLen = strlen(c.input); ++ c.outLen = MD4_DIGEST_SIZE; ++ ++ d.input = "message digest"; ++ d.output = "\xd9\x13\x0a\x81\x64\x54\x9f\xe8\x18\x87\x48\x06\xe1\xc7\x01" ++ "\x4b"; ++ d.inLen = strlen(d.input); ++ d.outLen = MD4_DIGEST_SIZE; ++ ++ e.input = "abcdefghijklmnopqrstuvwxyz"; ++ e.output = "\xd7\x9e\x1c\x30\x8a\xa5\xbb\xcd\xee\xa8\xed\x63\xdf\x41\x2d" ++ "\xa9"; ++ e.inLen = strlen(e.input); ++ e.outLen = MD4_DIGEST_SIZE; ++ ++ f.input = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345" ++ "6789"; ++ f.output = "\x04\x3f\x85\x82\xf2\x41\xdb\x35\x1c\xe6\x27\xe1\x53\xe7\xf0" ++ "\xe4"; ++ f.inLen = strlen(f.input); ++ f.outLen = MD4_DIGEST_SIZE; ++ ++ g.input = "1234567890123456789012345678901234567890123456789012345678" ++ "9012345678901234567890"; ++ g.output = "\xe3\x3b\x4d\xdc\x9c\x38\xf2\x19\x9c\x3e\x7b\x16\x4f\xcc\x05" ++ "\x36"; ++ g.inLen = strlen(g.input); ++ g.outLen = MD4_DIGEST_SIZE; ++ ++ test_md4[0] = a; ++ test_md4[1] = b; ++ test_md4[2] = c; ++ test_md4[3] = d; ++ test_md4[4] = e; ++ test_md4[5] = f; ++ test_md4[6] = g; ++ ++ InitMd4(&md4); ++ ++ for (i = 0; i < times; ++i) { ++ Md4Update(&md4, (byte*)test_md4[i].input, (word32)test_md4[i].inLen); ++ Md4Final(&md4, hash); ++ ++ if (memcmp(hash, test_md4[i].output, MD4_DIGEST_SIZE) != 0) ++ return -205 - i; ++ } ++ ++ return 0; ++} ++ ++#endif /* NO_MD4 */ ++ ++#ifndef NO_SHA ++ ++int sha_test(void) ++{ ++ Sha sha; ++ byte hash[SHA_DIGEST_SIZE]; ++ ++ testVector a, b, c, d; ++ testVector test_sha[4]; ++ int ret; ++ int times = sizeof(test_sha) / sizeof(struct testVector), i; ++ ++ a.input = "abc"; ++ a.output = "\xA9\x99\x3E\x36\x47\x06\x81\x6A\xBA\x3E\x25\x71\x78\x50\xC2" ++ "\x6C\x9C\xD0\xD8\x9D"; ++ a.inLen = strlen(a.input); ++ a.outLen = SHA_DIGEST_SIZE; ++ ++ b.input = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; ++ b.output = "\x84\x98\x3E\x44\x1C\x3B\xD2\x6E\xBA\xAE\x4A\xA1\xF9\x51\x29" ++ "\xE5\xE5\x46\x70\xF1"; ++ b.inLen = strlen(b.input); ++ b.outLen = SHA_DIGEST_SIZE; ++ ++ c.input = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ++ "aaaaaa"; ++ c.output = "\x00\x98\xBA\x82\x4B\x5C\x16\x42\x7B\xD7\xA1\x12\x2A\x5A\x44" ++ "\x2A\x25\xEC\x64\x4D"; ++ c.inLen = strlen(c.input); ++ c.outLen = SHA_DIGEST_SIZE; ++ ++ d.input = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ++ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ++ "aaaaaaaaaa"; ++ d.output = "\xAD\x5B\x3F\xDB\xCB\x52\x67\x78\xC2\x83\x9D\x2F\x15\x1E\xA7" ++ "\x53\x99\x5E\x26\xA0"; ++ d.inLen = strlen(d.input); ++ d.outLen = SHA_DIGEST_SIZE; ++ ++ test_sha[0] = a; ++ test_sha[1] = b; ++ test_sha[2] = c; ++ test_sha[3] = d; ++ ++ ret = InitSha(&sha); ++ if (ret != 0) ++ return -4001; ++ ++ for (i = 0; i < times; ++i) { ++ ShaUpdate(&sha, (byte*)test_sha[i].input, (word32)test_sha[i].inLen); ++ ShaFinal(&sha, hash); ++ ++ if (memcmp(hash, test_sha[i].output, SHA_DIGEST_SIZE) != 0) ++ return -10 - i; ++ } ++ ++ return 0; ++} ++ ++#endif /* NO_SHA */ ++ ++#ifdef CYASSL_RIPEMD ++int ripemd_test(void) ++{ ++ RipeMd ripemd; ++ byte hash[RIPEMD_DIGEST_SIZE]; ++ ++ testVector a, b, c, d; ++ testVector test_ripemd[4]; ++ int times = sizeof(test_ripemd) / sizeof(struct testVector), i; ++ ++ a.input = "abc"; ++ a.output = "\x8e\xb2\x08\xf7\xe0\x5d\x98\x7a\x9b\x04\x4a\x8e\x98\xc6" ++ "\xb0\x87\xf1\x5a\x0b\xfc"; ++ a.inLen = strlen(a.input); ++ a.outLen = RIPEMD_DIGEST_SIZE; ++ ++ b.input = "message digest"; ++ b.output = "\x5d\x06\x89\xef\x49\xd2\xfa\xe5\x72\xb8\x81\xb1\x23\xa8" ++ "\x5f\xfa\x21\x59\x5f\x36"; ++ b.inLen = strlen(b.input); ++ b.outLen = RIPEMD_DIGEST_SIZE; ++ ++ c.input = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; ++ c.output = "\x12\xa0\x53\x38\x4a\x9c\x0c\x88\xe4\x05\xa0\x6c\x27\xdc" ++ "\xf4\x9a\xda\x62\xeb\x2b"; ++ c.inLen = strlen(c.input); ++ c.outLen = RIPEMD_DIGEST_SIZE; ++ ++ d.input = "12345678901234567890123456789012345678901234567890123456" ++ "789012345678901234567890"; ++ d.output = "\x9b\x75\x2e\x45\x57\x3d\x4b\x39\xf4\xdb\xd3\x32\x3c\xab" ++ "\x82\xbf\x63\x32\x6b\xfb"; ++ d.inLen = strlen(d.input); ++ d.outLen = RIPEMD_DIGEST_SIZE; ++ ++ test_ripemd[0] = a; ++ test_ripemd[1] = b; ++ test_ripemd[2] = c; ++ test_ripemd[3] = d; ++ ++ InitRipeMd(&ripemd); ++ ++ for (i = 0; i < times; ++i) { ++ RipeMdUpdate(&ripemd, (byte*)test_ripemd[i].input, ++ (word32)test_ripemd[i].inLen); ++ RipeMdFinal(&ripemd, hash); ++ ++ if (memcmp(hash, test_ripemd[i].output, RIPEMD_DIGEST_SIZE) != 0) ++ return -10 - i; ++ } ++ ++ return 0; ++} ++#endif /* CYASSL_RIPEMD */ ++ ++ ++#ifdef HAVE_BLAKE2 ++ ++ ++#define BLAKE2_TESTS 3 ++ ++static const byte blake2b_vec[BLAKE2_TESTS][BLAKE2B_OUTBYTES] = ++{ ++ { ++ 0x78, 0x6A, 0x02, 0xF7, 0x42, 0x01, 0x59, 0x03, ++ 0xC6, 0xC6, 0xFD, 0x85, 0x25, 0x52, 0xD2, 0x72, ++ 0x91, 0x2F, 0x47, 0x40, 0xE1, 0x58, 0x47, 0x61, ++ 0x8A, 0x86, 0xE2, 0x17, 0xF7, 0x1F, 0x54, 0x19, ++ 0xD2, 0x5E, 0x10, 0x31, 0xAF, 0xEE, 0x58, 0x53, ++ 0x13, 0x89, 0x64, 0x44, 0x93, 0x4E, 0xB0, 0x4B, ++ 0x90, 0x3A, 0x68, 0x5B, 0x14, 0x48, 0xB7, 0x55, ++ 0xD5, 0x6F, 0x70, 0x1A, 0xFE, 0x9B, 0xE2, 0xCE ++ }, ++ { ++ 0x2F, 0xA3, 0xF6, 0x86, 0xDF, 0x87, 0x69, 0x95, ++ 0x16, 0x7E, 0x7C, 0x2E, 0x5D, 0x74, 0xC4, 0xC7, ++ 0xB6, 0xE4, 0x8F, 0x80, 0x68, 0xFE, 0x0E, 0x44, ++ 0x20, 0x83, 0x44, 0xD4, 0x80, 0xF7, 0x90, 0x4C, ++ 0x36, 0x96, 0x3E, 0x44, 0x11, 0x5F, 0xE3, 0xEB, ++ 0x2A, 0x3A, 0xC8, 0x69, 0x4C, 0x28, 0xBC, 0xB4, ++ 0xF5, 0xA0, 0xF3, 0x27, 0x6F, 0x2E, 0x79, 0x48, ++ 0x7D, 0x82, 0x19, 0x05, 0x7A, 0x50, 0x6E, 0x4B ++ }, ++ { ++ 0x1C, 0x08, 0x79, 0x8D, 0xC6, 0x41, 0xAB, 0xA9, ++ 0xDE, 0xE4, 0x35, 0xE2, 0x25, 0x19, 0xA4, 0x72, ++ 0x9A, 0x09, 0xB2, 0xBF, 0xE0, 0xFF, 0x00, 0xEF, ++ 0x2D, 0xCD, 0x8E, 0xD6, 0xF8, 0xA0, 0x7D, 0x15, ++ 0xEA, 0xF4, 0xAE, 0xE5, 0x2B, 0xBF, 0x18, 0xAB, ++ 0x56, 0x08, 0xA6, 0x19, 0x0F, 0x70, 0xB9, 0x04, ++ 0x86, 0xC8, 0xA7, 0xD4, 0x87, 0x37, 0x10, 0xB1, ++ 0x11, 0x5D, 0x3D, 0xEB, 0xBB, 0x43, 0x27, 0xB5 ++ } ++}; ++ ++ ++ ++int blake2b_test(void) ++{ ++ Blake2b b2b; ++ byte digest[64]; ++ byte input[64]; ++ int i, ret; ++ ++ for (i = 0; i < (int)sizeof(input); i++) ++ input[i] = (byte)i; ++ ++ for (i = 0; i < BLAKE2_TESTS; i++) { ++ ret = InitBlake2b(&b2b, 64); ++ if (ret != 0) ++ return -4002; ++ ++ ret = Blake2bUpdate(&b2b, input, i); ++ if (ret != 0) ++ return -4003; ++ ++ ret = Blake2bFinal(&b2b, digest, 64); ++ if (ret != 0) ++ return -4004; ++ ++ if (memcmp(digest, blake2b_vec[i], 64) != 0) { ++ return -300 - i; ++ } ++ } ++ ++ return 0; ++} ++#endif /* HAVE_BLAKE2 */ ++ ++ ++#ifndef NO_SHA256 ++int sha256_test(void) ++{ ++ Sha256 sha; ++ byte hash[SHA256_DIGEST_SIZE]; ++ ++ testVector a, b; ++ testVector test_sha[2]; ++ int ret; ++ int times = sizeof(test_sha) / sizeof(struct testVector), i; ++ ++ a.input = "abc"; ++ a.output = "\xBA\x78\x16\xBF\x8F\x01\xCF\xEA\x41\x41\x40\xDE\x5D\xAE\x22" ++ "\x23\xB0\x03\x61\xA3\x96\x17\x7A\x9C\xB4\x10\xFF\x61\xF2\x00" ++ "\x15\xAD"; ++ a.inLen = strlen(a.input); ++ a.outLen = SHA256_DIGEST_SIZE; ++ ++ b.input = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; ++ b.output = "\x24\x8D\x6A\x61\xD2\x06\x38\xB8\xE5\xC0\x26\x93\x0C\x3E\x60" ++ "\x39\xA3\x3C\xE4\x59\x64\xFF\x21\x67\xF6\xEC\xED\xD4\x19\xDB" ++ "\x06\xC1"; ++ b.inLen = strlen(b.input); ++ b.outLen = SHA256_DIGEST_SIZE; ++ ++ test_sha[0] = a; ++ test_sha[1] = b; ++ ++ ret = InitSha256(&sha); ++ if (ret != 0) ++ return -4005; ++ ++ for (i = 0; i < times; ++i) { ++ ret = Sha256Update(&sha, (byte*)test_sha[i].input,(word32)test_sha[i].inLen); ++ if (ret != 0) ++ return -4006; ++ ret = Sha256Final(&sha, hash); ++ if (ret != 0) ++ return -4007; ++ ++ if (memcmp(hash, test_sha[i].output, SHA256_DIGEST_SIZE) != 0) ++ return -10 - i; ++ } ++ ++ return 0; ++} ++#endif ++ ++ ++#ifdef CYASSL_SHA512 ++int sha512_test(void) ++{ ++ Sha512 sha; ++ byte hash[SHA512_DIGEST_SIZE]; ++ int ret; ++ ++ testVector a, b; ++ testVector test_sha[2]; ++ int times = sizeof(test_sha) / sizeof(struct testVector), i; ++ ++ a.input = "abc"; ++ a.output = "\xdd\xaf\x35\xa1\x93\x61\x7a\xba\xcc\x41\x73\x49\xae\x20\x41" ++ "\x31\x12\xe6\xfa\x4e\x89\xa9\x7e\xa2\x0a\x9e\xee\xe6\x4b\x55" ++ "\xd3\x9a\x21\x92\x99\x2a\x27\x4f\xc1\xa8\x36\xba\x3c\x23\xa3" ++ "\xfe\xeb\xbd\x45\x4d\x44\x23\x64\x3c\xe8\x0e\x2a\x9a\xc9\x4f" ++ "\xa5\x4c\xa4\x9f"; ++ a.inLen = strlen(a.input); ++ a.outLen = SHA512_DIGEST_SIZE; ++ ++ b.input = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhi" ++ "jklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"; ++ b.output = "\x8e\x95\x9b\x75\xda\xe3\x13\xda\x8c\xf4\xf7\x28\x14\xfc\x14" ++ "\x3f\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1\x72\x99\xae\xad\xb6\x88" ++ "\x90\x18\x50\x1d\x28\x9e\x49\x00\xf7\xe4\x33\x1b\x99\xde\xc4" ++ "\xb5\x43\x3a\xc7\xd3\x29\xee\xb6\xdd\x26\x54\x5e\x96\xe5\x5b" ++ "\x87\x4b\xe9\x09"; ++ b.inLen = strlen(b.input); ++ b.outLen = SHA512_DIGEST_SIZE; ++ ++ test_sha[0] = a; ++ test_sha[1] = b; ++ ++ ret = InitSha512(&sha); ++ if (ret != 0) ++ return -4009; ++ ++ for (i = 0; i < times; ++i) { ++ ret = Sha512Update(&sha, (byte*)test_sha[i].input,(word32)test_sha[i].inLen); ++ if (ret != 0) ++ return -4010; ++ ++ ret = Sha512Final(&sha, hash); ++ if (ret != 0) ++ return -4011; ++ ++ if (memcmp(hash, test_sha[i].output, SHA512_DIGEST_SIZE) != 0) ++ return -10 - i; ++ } ++ ++ return 0; ++} ++#endif ++ ++ ++#ifdef CYASSL_SHA384 ++int sha384_test(void) ++{ ++ Sha384 sha; ++ byte hash[SHA384_DIGEST_SIZE]; ++ int ret; ++ ++ testVector a, b; ++ testVector test_sha[2]; ++ int times = sizeof(test_sha) / sizeof(struct testVector), i; ++ ++ a.input = "abc"; ++ a.output = "\xcb\x00\x75\x3f\x45\xa3\x5e\x8b\xb5\xa0\x3d\x69\x9a\xc6\x50" ++ "\x07\x27\x2c\x32\xab\x0e\xde\xd1\x63\x1a\x8b\x60\x5a\x43\xff" ++ "\x5b\xed\x80\x86\x07\x2b\xa1\xe7\xcc\x23\x58\xba\xec\xa1\x34" ++ "\xc8\x25\xa7"; ++ a.inLen = strlen(a.input); ++ a.outLen = SHA384_DIGEST_SIZE; ++ ++ b.input = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhi" ++ "jklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"; ++ b.output = "\x09\x33\x0c\x33\xf7\x11\x47\xe8\x3d\x19\x2f\xc7\x82\xcd\x1b" ++ "\x47\x53\x11\x1b\x17\x3b\x3b\x05\xd2\x2f\xa0\x80\x86\xe3\xb0" ++ "\xf7\x12\xfc\xc7\xc7\x1a\x55\x7e\x2d\xb9\x66\xc3\xe9\xfa\x91" ++ "\x74\x60\x39"; ++ b.inLen = strlen(b.input); ++ b.outLen = SHA384_DIGEST_SIZE; ++ ++ test_sha[0] = a; ++ test_sha[1] = b; ++ ++ ret = InitSha384(&sha); ++ if (ret != 0) ++ return -4012; ++ ++ for (i = 0; i < times; ++i) { ++ ret = Sha384Update(&sha, (byte*)test_sha[i].input,(word32)test_sha[i].inLen); ++ if (ret != 0) ++ return -4013; ++ ++ ret = Sha384Final(&sha, hash); ++ if (ret != 0) ++ return -4014; ++ ++ if (memcmp(hash, test_sha[i].output, SHA384_DIGEST_SIZE) != 0) ++ return -10 - i; ++ } ++ ++ return 0; ++} ++#endif /* CYASSL_SHA384 */ ++ ++ ++#if !defined(NO_HMAC) && !defined(NO_MD5) ++int hmac_md5_test(void) ++{ ++ Hmac hmac; ++ byte hash[MD5_DIGEST_SIZE]; ++ ++ const char* keys[]= ++ { ++ "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", ++ "Jefe", ++ "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA" ++ }; ++ ++ testVector a, b, c; ++ testVector test_hmac[3]; ++ ++ int ret; ++ int times = sizeof(test_hmac) / sizeof(testVector), i; ++ ++ a.input = "Hi There"; ++ a.output = "\x92\x94\x72\x7a\x36\x38\xbb\x1c\x13\xf4\x8e\xf8\x15\x8b\xfc" ++ "\x9d"; ++ a.inLen = strlen(a.input); ++ a.outLen = MD5_DIGEST_SIZE; ++ ++ b.input = "what do ya want for nothing?"; ++ b.output = "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03\xea\xa8\x6e\x31\x0a\x5d\xb7" ++ "\x38"; ++ b.inLen = strlen(b.input); ++ b.outLen = MD5_DIGEST_SIZE; ++ ++ c.input = "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD"; ++ c.output = "\x56\xbe\x34\x52\x1d\x14\x4c\x88\xdb\xb8\xc7\x33\xf0\xe8\xb3" ++ "\xf6"; ++ c.inLen = strlen(c.input); ++ c.outLen = MD5_DIGEST_SIZE; ++ ++ test_hmac[0] = a; ++ test_hmac[1] = b; ++ test_hmac[2] = c; ++ ++ for (i = 0; i < times; ++i) { ++#if defined(HAVE_FIPS) || defined(HAVE_CAVIUM) ++ if (i == 1) ++ continue; /* cavium can't handle short keys, fips not allowed */ ++#endif ++#ifdef HAVE_CAVIUM ++ if (HmacInitCavium(&hmac, CAVIUM_DEV_ID) != 0) ++ return -20009; ++#endif ++ ret = HmacSetKey(&hmac, MD5, (byte*)keys[i], (word32)strlen(keys[i])); ++ if (ret != 0) ++ return -4015; ++ ret = HmacUpdate(&hmac, (byte*)test_hmac[i].input, ++ (word32)test_hmac[i].inLen); ++ if (ret != 0) ++ return -4016; ++ ret = HmacFinal(&hmac, hash); ++ if (ret != 0) ++ return -4017; ++ ++ if (memcmp(hash, test_hmac[i].output, MD5_DIGEST_SIZE) != 0) ++ return -20 - i; ++#ifdef HAVE_CAVIUM ++ HmacFreeCavium(&hmac); ++#endif ++ } ++ ++ return 0; ++} ++#endif /* NO_HMAC && NO_MD5 */ ++ ++#if !defined(NO_HMAC) && !defined(NO_SHA) ++int hmac_sha_test(void) ++{ ++ Hmac hmac; ++ byte hash[SHA_DIGEST_SIZE]; ++ ++ const char* keys[]= ++ { ++ "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" ++ "\x0b\x0b\x0b", ++ "Jefe", ++ "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA" ++ "\xAA\xAA\xAA" ++ }; ++ ++ testVector a, b, c; ++ testVector test_hmac[3]; ++ ++ int ret; ++ int times = sizeof(test_hmac) / sizeof(testVector), i; ++ ++ a.input = "Hi There"; ++ a.output = "\xb6\x17\x31\x86\x55\x05\x72\x64\xe2\x8b\xc0\xb6\xfb\x37\x8c" ++ "\x8e\xf1\x46\xbe\x00"; ++ a.inLen = strlen(a.input); ++ a.outLen = SHA_DIGEST_SIZE; ++ ++ b.input = "what do ya want for nothing?"; ++ b.output = "\xef\xfc\xdf\x6a\xe5\xeb\x2f\xa2\xd2\x74\x16\xd5\xf1\x84\xdf" ++ "\x9c\x25\x9a\x7c\x79"; ++ b.inLen = strlen(b.input); ++ b.outLen = SHA_DIGEST_SIZE; ++ ++ c.input = "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD"; ++ c.output = "\x12\x5d\x73\x42\xb9\xac\x11\xcd\x91\xa3\x9a\xf4\x8a\xa1\x7b" ++ "\x4f\x63\xf1\x75\xd3"; ++ c.inLen = strlen(c.input); ++ c.outLen = SHA_DIGEST_SIZE; ++ ++ test_hmac[0] = a; ++ test_hmac[1] = b; ++ test_hmac[2] = c; ++ ++ for (i = 0; i < times; ++i) { ++#if defined(HAVE_FIPS) || defined(HAVE_CAVIUM) ++ if (i == 1) ++ continue; /* cavium can't handle short keys, fips not allowed */ ++#endif ++#ifdef HAVE_CAVIUM ++ if (HmacInitCavium(&hmac, CAVIUM_DEV_ID) != 0) ++ return -20010; ++#endif ++ ret = HmacSetKey(&hmac, SHA, (byte*)keys[i], (word32)strlen(keys[i])); ++ if (ret != 0) ++ return -4018; ++ ret = HmacUpdate(&hmac, (byte*)test_hmac[i].input, ++ (word32)test_hmac[i].inLen); ++ if (ret != 0) ++ return -4019; ++ ret = HmacFinal(&hmac, hash); ++ if (ret != 0) ++ return -4020; ++ ++ if (memcmp(hash, test_hmac[i].output, SHA_DIGEST_SIZE) != 0) ++ return -20 - i; ++#ifdef HAVE_CAVIUM ++ HmacFreeCavium(&hmac); ++#endif ++ } ++ ++ return 0; ++} ++#endif ++ ++ ++#if !defined(NO_HMAC) && !defined(NO_SHA256) ++int hmac_sha256_test(void) ++{ ++ Hmac hmac; ++ byte hash[SHA256_DIGEST_SIZE]; ++ ++ const char* keys[]= ++ { ++ "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" ++ "\x0b\x0b\x0b", ++ "Jefe", ++ "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA" ++ "\xAA\xAA\xAA" ++ }; ++ ++ testVector a, b, c; ++ testVector test_hmac[3]; ++ ++ int ret; ++ int times = sizeof(test_hmac) / sizeof(testVector), i; ++ ++ a.input = "Hi There"; ++ a.output = "\xb0\x34\x4c\x61\xd8\xdb\x38\x53\x5c\xa8\xaf\xce\xaf\x0b\xf1" ++ "\x2b\x88\x1d\xc2\x00\xc9\x83\x3d\xa7\x26\xe9\x37\x6c\x2e\x32" ++ "\xcf\xf7"; ++ a.inLen = strlen(a.input); ++ a.outLen = SHA256_DIGEST_SIZE; ++ ++ b.input = "what do ya want for nothing?"; ++ b.output = "\x5b\xdc\xc1\x46\xbf\x60\x75\x4e\x6a\x04\x24\x26\x08\x95\x75" ++ "\xc7\x5a\x00\x3f\x08\x9d\x27\x39\x83\x9d\xec\x58\xb9\x64\xec" ++ "\x38\x43"; ++ b.inLen = strlen(b.input); ++ b.outLen = SHA256_DIGEST_SIZE; ++ ++ c.input = "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD"; ++ c.output = "\x77\x3e\xa9\x1e\x36\x80\x0e\x46\x85\x4d\xb8\xeb\xd0\x91\x81" ++ "\xa7\x29\x59\x09\x8b\x3e\xf8\xc1\x22\xd9\x63\x55\x14\xce\xd5" ++ "\x65\xfe"; ++ c.inLen = strlen(c.input); ++ c.outLen = SHA256_DIGEST_SIZE; ++ ++ test_hmac[0] = a; ++ test_hmac[1] = b; ++ test_hmac[2] = c; ++ ++ for (i = 0; i < times; ++i) { ++#if defined(HAVE_FIPS) || defined(HAVE_CAVIUM) ++ if (i == 1) ++ continue; /* cavium can't handle short keys, fips not allowed */ ++#endif ++#ifdef HAVE_CAVIUM ++ if (HmacInitCavium(&hmac, CAVIUM_DEV_ID) != 0) ++ return -20011; ++#endif ++ ret = HmacSetKey(&hmac, SHA256, (byte*)keys[i],(word32)strlen(keys[i])); ++ if (ret != 0) ++ return -4021; ++ ret = HmacUpdate(&hmac, (byte*)test_hmac[i].input, ++ (word32)test_hmac[i].inLen); ++ if (ret != 0) ++ return -4022; ++ ret = HmacFinal(&hmac, hash); ++ if (ret != 0) ++ return -4023; ++ ++ if (memcmp(hash, test_hmac[i].output, SHA256_DIGEST_SIZE) != 0) ++ return -20 - i; ++#ifdef HAVE_CAVIUM ++ HmacFreeCavium(&hmac); ++#endif ++ } ++ ++ return 0; ++} ++#endif ++ ++ ++#if !defined(NO_HMAC) && defined(HAVE_BLAKE2) ++int hmac_blake2b_test(void) ++{ ++ Hmac hmac; ++ byte hash[BLAKE2B_256]; ++ ++ const char* keys[]= ++ { ++ "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" ++ "\x0b\x0b\x0b", ++ "Jefe", ++ "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA" ++ "\xAA\xAA\xAA" ++ }; ++ ++ testVector a, b, c; ++ testVector test_hmac[3]; ++ ++ int ret; ++ int times = sizeof(test_hmac) / sizeof(testVector), i; ++ ++ a.input = "Hi There"; ++ a.output = "\x72\x93\x0d\xdd\xf5\xf7\xe1\x78\x38\x07\x44\x18\x0b\x3f\x51" ++ "\x37\x25\xb5\x82\xc2\x08\x83\x2f\x1c\x99\xfd\x03\xa0\x16\x75" ++ "\xac\xfd"; ++ a.inLen = strlen(a.input); ++ a.outLen = BLAKE2B_256; ++ ++ b.input = "what do ya want for nothing?"; ++ b.output = "\x3d\x20\x50\x71\x05\xc0\x8c\x0c\x38\x44\x1e\xf7\xf9\xd1\x67" ++ "\x21\xff\x64\xf5\x94\x00\xcf\xf9\x75\x41\xda\x88\x61\x9d\x7c" ++ "\xda\x2b"; ++ b.inLen = strlen(b.input); ++ b.outLen = BLAKE2B_256; ++ ++ c.input = "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD"; ++ c.output = "\xda\xfe\x2a\x24\xfc\xe7\xea\x36\x34\xbe\x41\x92\xc7\x11\xa7" ++ "\x00\xae\x53\x9c\x11\x9c\x80\x74\x55\x22\x25\x4a\xb9\x55\xd3" ++ "\x0f\x87"; ++ c.inLen = strlen(c.input); ++ c.outLen = BLAKE2B_256; ++ ++ test_hmac[0] = a; ++ test_hmac[1] = b; ++ test_hmac[2] = c; ++ ++ for (i = 0; i < times; ++i) { ++#if defined(HAVE_FIPS) || defined(HAVE_CAVIUM) ++ if (i == 1) ++ continue; /* cavium can't handle short keys, fips not allowed */ ++#endif ++#ifdef HAVE_CAVIUM ++ if (HmacInitCavium(&hmac, CAVIUM_DEV_ID) != 0) ++ return -20011; ++#endif ++ ret = HmacSetKey(&hmac, BLAKE2B_ID, (byte*)keys[i], ++ (word32)strlen(keys[i])); ++ if (ret != 0) ++ return -4024; ++ ret = HmacUpdate(&hmac, (byte*)test_hmac[i].input, ++ (word32)test_hmac[i].inLen); ++ if (ret != 0) ++ return -4025; ++ ret = HmacFinal(&hmac, hash); ++ if (ret != 0) ++ return -4026; ++ ++ if (memcmp(hash, test_hmac[i].output, BLAKE2B_256) != 0) ++ return -20 - i; ++#ifdef HAVE_CAVIUM ++ HmacFreeCavium(&hmac); ++#endif ++ } ++ ++ return 0; ++} ++#endif ++ ++ ++#if !defined(NO_HMAC) && defined(CYASSL_SHA384) ++int hmac_sha384_test(void) ++{ ++ Hmac hmac; ++ byte hash[SHA384_DIGEST_SIZE]; ++ ++ const char* keys[]= ++ { ++ "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" ++ "\x0b\x0b\x0b", ++ "Jefe", ++ "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA" ++ "\xAA\xAA\xAA" ++ }; ++ ++ testVector a, b, c; ++ testVector test_hmac[3]; ++ ++ int ret; ++ int times = sizeof(test_hmac) / sizeof(testVector), i; ++ ++ a.input = "Hi There"; ++ a.output = "\xaf\xd0\x39\x44\xd8\x48\x95\x62\x6b\x08\x25\xf4\xab\x46\x90" ++ "\x7f\x15\xf9\xda\xdb\xe4\x10\x1e\xc6\x82\xaa\x03\x4c\x7c\xeb" ++ "\xc5\x9c\xfa\xea\x9e\xa9\x07\x6e\xde\x7f\x4a\xf1\x52\xe8\xb2" ++ "\xfa\x9c\xb6"; ++ a.inLen = strlen(a.input); ++ a.outLen = SHA384_DIGEST_SIZE; ++ ++ b.input = "what do ya want for nothing?"; ++ b.output = "\xaf\x45\xd2\xe3\x76\x48\x40\x31\x61\x7f\x78\xd2\xb5\x8a\x6b" ++ "\x1b\x9c\x7e\xf4\x64\xf5\xa0\x1b\x47\xe4\x2e\xc3\x73\x63\x22" ++ "\x44\x5e\x8e\x22\x40\xca\x5e\x69\xe2\xc7\x8b\x32\x39\xec\xfa" ++ "\xb2\x16\x49"; ++ b.inLen = strlen(b.input); ++ b.outLen = SHA384_DIGEST_SIZE; ++ ++ c.input = "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD"; ++ c.output = "\x88\x06\x26\x08\xd3\xe6\xad\x8a\x0a\xa2\xac\xe0\x14\xc8\xa8" ++ "\x6f\x0a\xa6\x35\xd9\x47\xac\x9f\xeb\xe8\x3e\xf4\xe5\x59\x66" ++ "\x14\x4b\x2a\x5a\xb3\x9d\xc1\x38\x14\xb9\x4e\x3a\xb6\xe1\x01" ++ "\xa3\x4f\x27"; ++ c.inLen = strlen(c.input); ++ c.outLen = SHA384_DIGEST_SIZE; ++ ++ test_hmac[0] = a; ++ test_hmac[1] = b; ++ test_hmac[2] = c; ++ ++ for (i = 0; i < times; ++i) { ++#if defined(HAVE_FIPS) ++ if (i == 1) ++ continue; /* fips not allowed */ ++#endif ++ ret = HmacSetKey(&hmac, SHA384, (byte*)keys[i],(word32)strlen(keys[i])); ++ if (ret != 0) ++ return -4027; ++ ret = HmacUpdate(&hmac, (byte*)test_hmac[i].input, ++ (word32)test_hmac[i].inLen); ++ if (ret != 0) ++ return -4028; ++ ret = HmacFinal(&hmac, hash); ++ if (ret != 0) ++ return -4029; ++ ++ if (memcmp(hash, test_hmac[i].output, SHA384_DIGEST_SIZE) != 0) ++ return -20 - i; ++ } ++ ++ return 0; ++} ++#endif ++ ++ ++#if !defined(NO_HMAC) && defined(CYASSL_SHA512) ++int hmac_sha512_test(void) ++{ ++ Hmac hmac; ++ byte hash[SHA512_DIGEST_SIZE]; ++ ++ const char* keys[]= ++ { ++ "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" ++ "\x0b\x0b\x0b", ++ "Jefe", ++ "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA" ++ "\xAA\xAA\xAA" ++ }; ++ ++ testVector a, b, c; ++ testVector test_hmac[3]; ++ ++ int ret; ++ int times = sizeof(test_hmac) / sizeof(testVector), i; ++ ++ a.input = "Hi There"; ++ a.output = "\x87\xaa\x7c\xde\xa5\xef\x61\x9d\x4f\xf0\xb4\x24\x1a\x1d\x6c" ++ "\xb0\x23\x79\xf4\xe2\xce\x4e\xc2\x78\x7a\xd0\xb3\x05\x45\xe1" ++ "\x7c\xde\xda\xa8\x33\xb7\xd6\xb8\xa7\x02\x03\x8b\x27\x4e\xae" ++ "\xa3\xf4\xe4\xbe\x9d\x91\x4e\xeb\x61\xf1\x70\x2e\x69\x6c\x20" ++ "\x3a\x12\x68\x54"; ++ a.inLen = strlen(a.input); ++ a.outLen = SHA512_DIGEST_SIZE; ++ ++ b.input = "what do ya want for nothing?"; ++ b.output = "\x16\x4b\x7a\x7b\xfc\xf8\x19\xe2\xe3\x95\xfb\xe7\x3b\x56\xe0" ++ "\xa3\x87\xbd\x64\x22\x2e\x83\x1f\xd6\x10\x27\x0c\xd7\xea\x25" ++ "\x05\x54\x97\x58\xbf\x75\xc0\x5a\x99\x4a\x6d\x03\x4f\x65\xf8" ++ "\xf0\xe6\xfd\xca\xea\xb1\xa3\x4d\x4a\x6b\x4b\x63\x6e\x07\x0a" ++ "\x38\xbc\xe7\x37"; ++ b.inLen = strlen(b.input); ++ b.outLen = SHA512_DIGEST_SIZE; ++ ++ c.input = "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" ++ "\xDD\xDD\xDD\xDD\xDD\xDD"; ++ c.output = "\xfa\x73\xb0\x08\x9d\x56\xa2\x84\xef\xb0\xf0\x75\x6c\x89\x0b" ++ "\xe9\xb1\xb5\xdb\xdd\x8e\xe8\x1a\x36\x55\xf8\x3e\x33\xb2\x27" ++ "\x9d\x39\xbf\x3e\x84\x82\x79\xa7\x22\xc8\x06\xb4\x85\xa4\x7e" ++ "\x67\xc8\x07\xb9\x46\xa3\x37\xbe\xe8\x94\x26\x74\x27\x88\x59" ++ "\xe1\x32\x92\xfb"; ++ c.inLen = strlen(c.input); ++ c.outLen = SHA512_DIGEST_SIZE; ++ ++ test_hmac[0] = a; ++ test_hmac[1] = b; ++ test_hmac[2] = c; ++ ++ for (i = 0; i < times; ++i) { ++#if defined(HAVE_FIPS) ++ if (i == 1) ++ continue; /* fips not allowed */ ++#endif ++ ret = HmacSetKey(&hmac, SHA512, (byte*)keys[i],(word32)strlen(keys[i])); ++ if (ret != 0) ++ return -4030; ++ ret = HmacUpdate(&hmac, (byte*)test_hmac[i].input, ++ (word32)test_hmac[i].inLen); ++ if (ret != 0) ++ return -4031; ++ ret = HmacFinal(&hmac, hash); ++ if (ret != 0) ++ return -4032; ++ ++ if (memcmp(hash, test_hmac[i].output, SHA512_DIGEST_SIZE) != 0) ++ return -20 - i; ++ } ++ ++ return 0; ++} ++#endif ++ ++ ++#ifndef NO_RC4 ++int arc4_test(void) ++{ ++ byte cipher[16]; ++ byte plain[16]; ++ ++ const char* keys[] = ++ { ++ "\x01\x23\x45\x67\x89\xab\xcd\xef", ++ "\x01\x23\x45\x67\x89\xab\xcd\xef", ++ "\x00\x00\x00\x00\x00\x00\x00\x00", ++ "\xef\x01\x23\x45" ++ }; ++ ++ testVector a, b, c, d; ++ testVector test_arc4[4]; ++ ++ int times = sizeof(test_arc4) / sizeof(testVector), i; ++ ++ a.input = "\x01\x23\x45\x67\x89\xab\xcd\xef"; ++ a.output = "\x75\xb7\x87\x80\x99\xe0\xc5\x96"; ++ a.inLen = 8; ++ a.outLen = 8; ++ ++ b.input = "\x00\x00\x00\x00\x00\x00\x00\x00"; ++ b.output = "\x74\x94\xc2\xe7\x10\x4b\x08\x79"; ++ b.inLen = 8; ++ b.outLen = 8; ++ ++ c.input = "\x00\x00\x00\x00\x00\x00\x00\x00"; ++ c.output = "\xde\x18\x89\x41\xa3\x37\x5d\x3a"; ++ c.inLen = 8; ++ c.outLen = 8; ++ ++ d.input = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; ++ d.output = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf\xbd\x61"; ++ d.inLen = 10; ++ d.outLen = 10; ++ ++ test_arc4[0] = a; ++ test_arc4[1] = b; ++ test_arc4[2] = c; ++ test_arc4[3] = d; ++ ++ for (i = 0; i < times; ++i) { ++ Arc4 enc; ++ Arc4 dec; ++ int keylen = 8; /* strlen with key 0x00 not good */ ++ if (i == 3) ++ keylen = 4; ++ ++#ifdef HAVE_CAVIUM ++ if (Arc4InitCavium(&enc, CAVIUM_DEV_ID) != 0) ++ return -20001; ++ if (Arc4InitCavium(&dec, CAVIUM_DEV_ID) != 0) ++ return -20002; ++#endif ++ ++ Arc4SetKey(&enc, (byte*)keys[i], keylen); ++ Arc4SetKey(&dec, (byte*)keys[i], keylen); ++ ++ Arc4Process(&enc, cipher, (byte*)test_arc4[i].input, ++ (word32)test_arc4[i].outLen); ++ Arc4Process(&dec, plain, cipher, (word32)test_arc4[i].outLen); ++ ++ if (memcmp(plain, test_arc4[i].input, test_arc4[i].outLen)) ++ return -20 - i; ++ ++ if (memcmp(cipher, test_arc4[i].output, test_arc4[i].outLen)) ++ return -20 - 5 - i; ++ ++#ifdef HAVE_CAVIUM ++ Arc4FreeCavium(&enc); ++ Arc4FreeCavium(&dec); ++#endif ++ } ++ ++ return 0; ++} ++#endif ++ ++ ++int hc128_test(void) ++{ ++#ifdef HAVE_HC128 ++ byte cipher[16]; ++ byte plain[16]; ++ ++ const char* keys[] = ++ { ++ "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", ++ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", ++ "\x00\x53\xA6\xF9\x4C\x9F\xF2\x45\x98\xEB\x3E\x91\xE4\x37\x8A\xDD", ++ "\x0F\x62\xB5\x08\x5B\xAE\x01\x54\xA7\xFA\x4D\xA0\xF3\x46\x99\xEC" ++ }; ++ ++ const char* ivs[] = ++ { ++ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", ++ "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", ++ "\x0D\x74\xDB\x42\xA9\x10\x77\xDE\x45\xAC\x13\x7A\xE1\x48\xAF\x16", ++ "\x28\x8F\xF6\x5D\xC4\x2B\x92\xF9\x60\xC7\x2E\x95\xFC\x63\xCA\x31" ++ }; ++ ++ ++ testVector a, b, c, d; ++ testVector test_hc128[4]; ++ ++ int times = sizeof(test_hc128) / sizeof(testVector), i; ++ ++ a.input = "\x00\x00\x00\x00\x00\x00\x00\x00"; ++ a.output = "\x37\x86\x02\xB9\x8F\x32\xA7\x48"; ++ a.inLen = 8; ++ a.outLen = 8; ++ ++ b.input = "\x00\x00\x00\x00\x00\x00\x00\x00"; ++ b.output = "\x33\x7F\x86\x11\xC6\xED\x61\x5F"; ++ b.inLen = 8; ++ b.outLen = 8; ++ ++ c.input = "\x00\x00\x00\x00\x00\x00\x00\x00"; ++ c.output = "\x2E\x1E\xD1\x2A\x85\x51\xC0\x5A"; ++ c.inLen = 8; ++ c.outLen = 8; ++ ++ d.input = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; ++ d.output = "\x1C\xD8\xAE\xDD\xFE\x52\xE2\x17\xE8\x35\xD0\xB7\xE8\x4E\x29"; ++ d.inLen = 15; ++ d.outLen = 15; ++ ++ test_hc128[0] = a; ++ test_hc128[1] = b; ++ test_hc128[2] = c; ++ test_hc128[3] = d; ++ ++ for (i = 0; i < times; ++i) { ++ HC128 enc; ++ HC128 dec; ++ ++ /* align keys/ivs in plain/cipher buffers */ ++ memcpy(plain, keys[i], 16); ++ memcpy(cipher, ivs[i], 16); ++ ++ Hc128_SetKey(&enc, plain, cipher); ++ Hc128_SetKey(&dec, plain, cipher); ++ ++ /* align input */ ++ memcpy(plain, test_hc128[i].input, test_hc128[i].outLen); ++ Hc128_Process(&enc, cipher, plain, (word32)test_hc128[i].outLen); ++ Hc128_Process(&dec, plain, cipher, (word32)test_hc128[i].outLen); ++ ++ if (memcmp(plain, test_hc128[i].input, test_hc128[i].outLen)) ++ return -120 - i; ++ ++ if (memcmp(cipher, test_hc128[i].output, test_hc128[i].outLen)) ++ return -120 - 5 - i; ++ } ++ ++#endif /* HAVE_HC128 */ ++ return 0; ++} ++ ++ ++#ifndef NO_RABBIT ++int rabbit_test(void) ++{ ++ byte cipher[16]; ++ byte plain[16]; ++ ++ const char* keys[] = ++ { ++ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", ++ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", ++ "\xAC\xC3\x51\xDC\xF1\x62\xFC\x3B\xFE\x36\x3D\x2E\x29\x13\x28\x91" ++ }; ++ ++ const char* ivs[] = ++ { ++ "\x00\x00\x00\x00\x00\x00\x00\x00", ++ "\x59\x7E\x26\xC1\x75\xF5\x73\xC3", ++ 0 ++ }; ++ ++ testVector a, b, c; ++ testVector test_rabbit[3]; ++ ++ int times = sizeof(test_rabbit) / sizeof(testVector), i; ++ ++ a.input = "\x00\x00\x00\x00\x00\x00\x00\x00"; ++ a.output = "\xED\xB7\x05\x67\x37\x5D\xCD\x7C"; ++ a.inLen = 8; ++ a.outLen = 8; ++ ++ b.input = "\x00\x00\x00\x00\x00\x00\x00\x00"; ++ b.output = "\x6D\x7D\x01\x22\x92\xCC\xDC\xE0"; ++ b.inLen = 8; ++ b.outLen = 8; ++ ++ c.input = "\x00\x00\x00\x00\x00\x00\x00\x00"; ++ c.output = "\x04\xCE\xCA\x7A\x1A\x86\x6E\x77"; ++ c.inLen = 8; ++ c.outLen = 8; ++ ++ test_rabbit[0] = a; ++ test_rabbit[1] = b; ++ test_rabbit[2] = c; ++ ++ for (i = 0; i < times; ++i) { ++ Rabbit enc; ++ Rabbit dec; ++ byte* iv; ++ ++ /* align keys/ivs in plain/cipher buffers */ ++ memcpy(plain, keys[i], 16); ++ if (ivs[i]) { ++ memcpy(cipher, ivs[i], 8); ++ iv = cipher; ++ } else ++ iv = NULL; ++ RabbitSetKey(&enc, plain, iv); ++ RabbitSetKey(&dec, plain, iv); ++ ++ /* align input */ ++ memcpy(plain, test_rabbit[i].input, test_rabbit[i].outLen); ++ RabbitProcess(&enc, cipher, plain, (word32)test_rabbit[i].outLen); ++ RabbitProcess(&dec, plain, cipher, (word32)test_rabbit[i].outLen); ++ ++ if (memcmp(plain, test_rabbit[i].input, test_rabbit[i].outLen)) ++ return -130 - i; ++ ++ if (memcmp(cipher, test_rabbit[i].output, test_rabbit[i].outLen)) ++ return -130 - 5 - i; ++ } ++ ++ return 0; ++} ++#endif /* NO_RABBIT */ ++ ++ ++#ifndef NO_DES3 ++int des_test(void) ++{ ++ const byte vector[] = { /* "now is the time for all " w/o trailing 0 */ ++ 0x6e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74, ++ 0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20, ++ 0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20 ++ }; ++ ++ byte plain[24]; ++ byte cipher[24]; ++ ++ Des enc; ++ Des dec; ++ ++ const byte key[] = ++ { ++ 0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef ++ }; ++ ++ const byte iv[] = ++ { ++ 0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef ++ }; ++ ++ const byte verify[] = ++ { ++ 0x8b,0x7c,0x52,0xb0,0x01,0x2b,0x6c,0xb8, ++ 0x4f,0x0f,0xeb,0xf3,0xfb,0x5f,0x86,0x73, ++ 0x15,0x85,0xb3,0x22,0x4b,0x86,0x2b,0x4b ++ }; ++ ++ int ret; ++ ++ ret = Des_SetKey(&enc, key, iv, DES_ENCRYPTION); ++ if (ret != 0) ++ return -31; ++ ++ Des_CbcEncrypt(&enc, cipher, vector, sizeof(vector)); ++ ret = Des_SetKey(&dec, key, iv, DES_DECRYPTION); ++ if (ret != 0) ++ return -32; ++ Des_CbcDecrypt(&dec, plain, cipher, sizeof(cipher)); ++ ++ if (memcmp(plain, vector, sizeof(plain))) ++ return -33; ++ ++ if (memcmp(cipher, verify, sizeof(cipher))) ++ return -34; ++ ++ return 0; ++} ++#endif /* NO_DES3 */ ++ ++ ++#ifndef NO_DES3 ++int des3_test(void) ++{ ++ const byte vector[] = { /* "Now is the time for all " w/o trailing 0 */ ++ 0x4e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74, ++ 0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20, ++ 0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20 ++ }; ++ ++ byte plain[24]; ++ byte cipher[24]; ++ ++ Des3 enc; ++ Des3 dec; ++ ++ const byte key3[] = ++ { ++ 0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef, ++ 0xfe,0xde,0xba,0x98,0x76,0x54,0x32,0x10, ++ 0x89,0xab,0xcd,0xef,0x01,0x23,0x45,0x67 ++ }; ++ const byte iv3[] = ++ { ++ 0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef, ++ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, ++ 0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81 ++ ++ }; ++ ++ const byte verify3[] = ++ { ++ 0x43,0xa0,0x29,0x7e,0xd1,0x84,0xf8,0x0e, ++ 0x89,0x64,0x84,0x32,0x12,0xd5,0x08,0x98, ++ 0x18,0x94,0x15,0x74,0x87,0x12,0x7d,0xb0 ++ }; ++ ++ int ret; ++ ++ ++#ifdef HAVE_CAVIUM ++ if (Des3_InitCavium(&enc, CAVIUM_DEV_ID) != 0) ++ return -20005; ++ if (Des3_InitCavium(&dec, CAVIUM_DEV_ID) != 0) ++ return -20006; ++#endif ++ ret = Des3_SetKey(&enc, key3, iv3, DES_ENCRYPTION); ++ if (ret != 0) ++ return -31; ++ ret = Des3_SetKey(&dec, key3, iv3, DES_DECRYPTION); ++ if (ret != 0) ++ return -32; ++ ret = Des3_CbcEncrypt(&enc, cipher, vector, sizeof(vector)); ++ if (ret != 0) ++ return -33; ++ ret = Des3_CbcDecrypt(&dec, plain, cipher, sizeof(cipher)); ++ if (ret != 0) ++ return -34; ++ ++ if (memcmp(plain, vector, sizeof(plain))) ++ return -35; ++ ++ if (memcmp(cipher, verify3, sizeof(cipher))) ++ return -36; ++ ++#ifdef HAVE_CAVIUM ++ Des3_FreeCavium(&enc); ++ Des3_FreeCavium(&dec); ++#endif ++ return 0; ++} ++#endif /* NO_DES */ ++ ++ ++#ifndef NO_AES ++int aes_test(void) ++{ ++ Aes enc; ++ Aes dec; ++ ++ const byte msg[] = { /* "Now is the time for all " w/o trailing 0 */ ++ 0x6e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74, ++ 0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20, ++ 0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20 ++ }; ++ ++ const byte verify[] = ++ { ++ 0x95,0x94,0x92,0x57,0x5f,0x42,0x81,0x53, ++ 0x2c,0xcc,0x9d,0x46,0x77,0xa2,0x33,0xcb ++ }; ++ ++ byte key[] = "0123456789abcdef "; /* align */ ++ byte iv[] = "1234567890abcdef "; /* align */ ++ ++ byte cipher[AES_BLOCK_SIZE * 4]; ++ byte plain [AES_BLOCK_SIZE * 4]; ++ int ret; ++ ++#ifdef HAVE_CAVIUM ++ if (AesInitCavium(&enc, CAVIUM_DEV_ID) != 0) ++ return -20003; ++ if (AesInitCavium(&dec, CAVIUM_DEV_ID) != 0) ++ return -20004; ++#endif ++ ret = AesSetKey(&enc, key, AES_BLOCK_SIZE, iv, AES_ENCRYPTION); ++ if (ret != 0) ++ return -1001; ++ ret = AesSetKey(&dec, key, AES_BLOCK_SIZE, iv, AES_DECRYPTION); ++ if (ret != 0) ++ return -1002; ++ ++ ret = AesCbcEncrypt(&enc, cipher, msg, AES_BLOCK_SIZE); ++ if (ret != 0) ++ return -1005; ++ ret = AesCbcDecrypt(&dec, plain, cipher, AES_BLOCK_SIZE); ++ if (ret != 0) ++ return -1006; ++ ++ if (memcmp(plain, msg, AES_BLOCK_SIZE)) ++ return -60; ++ ++ if (memcmp(cipher, verify, AES_BLOCK_SIZE)) ++ return -61; ++ ++#ifdef HAVE_CAVIUM ++ AesFreeCavium(&enc); ++ AesFreeCavium(&dec); ++#endif ++#ifdef CYASSL_AES_COUNTER ++ { ++ const byte ctrKey[] = ++ { ++ 0x2b,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6, ++ 0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x3c ++ }; ++ ++ const byte ctrIv[] = ++ { ++ 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, ++ 0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff ++ }; ++ ++ ++ const byte ctrPlain[] = ++ { ++ 0x6b,0xc1,0xbe,0xe2,0x2e,0x40,0x9f,0x96, ++ 0xe9,0x3d,0x7e,0x11,0x73,0x93,0x17,0x2a, ++ 0xae,0x2d,0x8a,0x57,0x1e,0x03,0xac,0x9c, ++ 0x9e,0xb7,0x6f,0xac,0x45,0xaf,0x8e,0x51, ++ 0x30,0xc8,0x1c,0x46,0xa3,0x5c,0xe4,0x11, ++ 0xe5,0xfb,0xc1,0x19,0x1a,0x0a,0x52,0xef, ++ 0xf6,0x9f,0x24,0x45,0xdf,0x4f,0x9b,0x17, ++ 0xad,0x2b,0x41,0x7b,0xe6,0x6c,0x37,0x10 ++ }; ++ ++ const byte ctrCipher[] = ++ { ++ 0x87,0x4d,0x61,0x91,0xb6,0x20,0xe3,0x26, ++ 0x1b,0xef,0x68,0x64,0x99,0x0d,0xb6,0xce, ++ 0x98,0x06,0xf6,0x6b,0x79,0x70,0xfd,0xff, ++ 0x86,0x17,0x18,0x7b,0xb9,0xff,0xfd,0xff, ++ 0x5a,0xe4,0xdf,0x3e,0xdb,0xd5,0xd3,0x5e, ++ 0x5b,0x4f,0x09,0x02,0x0d,0xb0,0x3e,0xab, ++ 0x1e,0x03,0x1d,0xda,0x2f,0xbe,0x03,0xd1, ++ 0x79,0x21,0x70,0xa0,0xf3,0x00,0x9c,0xee ++ }; ++ ++ const byte oddCipher[] = ++ { ++ 0xb9,0xd7,0xcb,0x08,0xb0,0xe1,0x7b,0xa0, ++ 0xc2 ++ }; ++ ++ AesSetKeyDirect(&enc, ctrKey, AES_BLOCK_SIZE, ctrIv, AES_ENCRYPTION); ++ /* Ctr only uses encrypt, even on key setup */ ++ AesSetKeyDirect(&dec, ctrKey, AES_BLOCK_SIZE, ctrIv, AES_ENCRYPTION); ++ ++ AesCtrEncrypt(&enc, cipher, ctrPlain, AES_BLOCK_SIZE*4); ++ AesCtrEncrypt(&dec, plain, cipher, AES_BLOCK_SIZE*4); ++ ++ if (memcmp(plain, ctrPlain, AES_BLOCK_SIZE*4)) ++ return -66; ++ ++ if (memcmp(cipher, ctrCipher, AES_BLOCK_SIZE*4)) ++ return -67; ++ ++ /* let's try with just 9 bytes, non block size test */ ++ AesSetKeyDirect(&enc, ctrKey, AES_BLOCK_SIZE, ctrIv, AES_ENCRYPTION); ++ /* Ctr only uses encrypt, even on key setup */ ++ AesSetKeyDirect(&dec, ctrKey, AES_BLOCK_SIZE, ctrIv, AES_ENCRYPTION); ++ ++ AesCtrEncrypt(&enc, cipher, ctrPlain, 9); ++ AesCtrEncrypt(&dec, plain, cipher, 9); ++ ++ if (memcmp(plain, ctrPlain, 9)) ++ return -68; ++ ++ if (memcmp(cipher, ctrCipher, 9)) ++ return -69; ++ ++ /* and an additional 9 bytes to reuse tmp left buffer */ ++ AesCtrEncrypt(&enc, cipher, ctrPlain, 9); ++ AesCtrEncrypt(&dec, plain, cipher, 9); ++ ++ if (memcmp(plain, ctrPlain, 9)) ++ return -70; ++ ++ if (memcmp(cipher, oddCipher, 9)) ++ return -71; ++ } ++#endif /* CYASSL_AES_COUNTER */ ++ ++#if defined(CYASSL_AESNI) && defined(CYASSL_AES_DIRECT) ++ { ++ const byte niPlain[] = ++ { ++ 0x6b,0xc1,0xbe,0xe2,0x2e,0x40,0x9f,0x96, ++ 0xe9,0x3d,0x7e,0x11,0x73,0x93,0x17,0x2a ++ }; ++ ++ const byte niCipher[] = ++ { ++ 0xf3,0xee,0xd1,0xbd,0xb5,0xd2,0xa0,0x3c, ++ 0x06,0x4b,0x5a,0x7e,0x3d,0xb1,0x81,0xf8 ++ }; ++ ++ const byte niKey[] = ++ { ++ 0x60,0x3d,0xeb,0x10,0x15,0xca,0x71,0xbe, ++ 0x2b,0x73,0xae,0xf0,0x85,0x7d,0x77,0x81, ++ 0x1f,0x35,0x2c,0x07,0x3b,0x61,0x08,0xd7, ++ 0x2d,0x98,0x10,0xa3,0x09,0x14,0xdf,0xf4 ++ }; ++ ++ XMEMSET(cipher, 0, AES_BLOCK_SIZE); ++ ret = AesSetKey(&enc, niKey, sizeof(niKey), cipher, AES_ENCRYPTION); ++ if (ret != 0) ++ return -1003; ++ AesEncryptDirect(&enc, cipher, niPlain); ++ if (XMEMCMP(cipher, niCipher, AES_BLOCK_SIZE) != 0) ++ return -20006; ++ ++ XMEMSET(plain, 0, AES_BLOCK_SIZE); ++ ret = AesSetKey(&dec, niKey, sizeof(niKey), plain, AES_DECRYPTION); ++ if (ret != 0) ++ return -1004; ++ AesDecryptDirect(&dec, plain, niCipher); ++ if (XMEMCMP(plain, niPlain, AES_BLOCK_SIZE) != 0) ++ return -20007; ++ } ++#endif /* CYASSL_AESNI && CYASSL_AES_DIRECT */ ++ ++ return 0; ++} ++ ++#ifdef HAVE_AESGCM ++int aesgcm_test(void) ++{ ++ Aes enc; ++ ++ /* ++ * This is Test Case 16 from the document Galois/ ++ * Counter Mode of Operation (GCM) by McGrew and ++ * Viega. ++ */ ++ const byte k[] = ++ { ++ 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, ++ 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, ++ 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, ++ 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 ++ }; ++ ++ const byte iv[] = ++ { ++ 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, ++ 0xde, 0xca, 0xf8, 0x88 ++ }; ++ ++ const byte p[] = ++ { ++ 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, ++ 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, ++ 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, ++ 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, ++ 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, ++ 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, ++ 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, ++ 0xba, 0x63, 0x7b, 0x39 ++ }; ++ ++ const byte a[] = ++ { ++ 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, ++ 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, ++ 0xab, 0xad, 0xda, 0xd2 ++ }; ++ ++ const byte c[] = ++ { ++ 0x52, 0x2d, 0xc1, 0xf0, 0x99, 0x56, 0x7d, 0x07, ++ 0xf4, 0x7f, 0x37, 0xa3, 0x2a, 0x84, 0x42, 0x7d, ++ 0x64, 0x3a, 0x8c, 0xdc, 0xbf, 0xe5, 0xc0, 0xc9, ++ 0x75, 0x98, 0xa2, 0xbd, 0x25, 0x55, 0xd1, 0xaa, ++ 0x8c, 0xb0, 0x8e, 0x48, 0x59, 0x0d, 0xbb, 0x3d, ++ 0xa7, 0xb0, 0x8b, 0x10, 0x56, 0x82, 0x88, 0x38, ++ 0xc5, 0xf6, 0x1e, 0x63, 0x93, 0xba, 0x7a, 0x0a, ++ 0xbc, 0xc9, 0xf6, 0x62 ++ }; ++ ++ const byte t[] = ++ { ++ 0x76, 0xfc, 0x6e, 0xce, 0x0f, 0x4e, 0x17, 0x68, ++ 0xcd, 0xdf, 0x88, 0x53, 0xbb, 0x2d, 0x55, 0x1b ++ }; ++ ++ byte t2[sizeof(t)]; ++ byte p2[sizeof(c)]; ++ byte c2[sizeof(p)]; ++ ++ int result; ++ ++ memset(t2, 0, sizeof(t2)); ++ memset(c2, 0, sizeof(c2)); ++ memset(p2, 0, sizeof(p2)); ++ ++ AesGcmSetKey(&enc, k, sizeof(k)); ++ /* AES-GCM encrypt and decrypt both use AES encrypt internally */ ++ AesGcmEncrypt(&enc, c2, p, sizeof(c2), iv, sizeof(iv), ++ t2, sizeof(t2), a, sizeof(a)); ++ if (memcmp(c, c2, sizeof(c2))) ++ return -68; ++ if (memcmp(t, t2, sizeof(t2))) ++ return -69; ++ ++ result = AesGcmDecrypt(&enc, p2, c2, sizeof(p2), iv, sizeof(iv), ++ t2, sizeof(t2), a, sizeof(a)); ++ if (result != 0) ++ return -70; ++ if (memcmp(p, p2, sizeof(p2))) ++ return -71; ++ ++ return 0; ++} ++ ++int gmac_test(void) ++{ ++ Gmac gmac; ++ ++ const byte k1[] = ++ { ++ 0x89, 0xc9, 0x49, 0xe9, 0xc8, 0x04, 0xaf, 0x01, ++ 0x4d, 0x56, 0x04, 0xb3, 0x94, 0x59, 0xf2, 0xc8 ++ }; ++ const byte iv1[] = ++ { ++ 0xd1, 0xb1, 0x04, 0xc8, 0x15, 0xbf, 0x1e, 0x94, ++ 0xe2, 0x8c, 0x8f, 0x16 ++ }; ++ const byte a1[] = ++ { ++ 0x82, 0xad, 0xcd, 0x63, 0x8d, 0x3f, 0xa9, 0xd9, ++ 0xf3, 0xe8, 0x41, 0x00, 0xd6, 0x1e, 0x07, 0x77 ++ }; ++ const byte t1[] = ++ { ++ 0x88, 0xdb, 0x9d, 0x62, 0x17, 0x2e, 0xd0, 0x43, ++ 0xaa, 0x10, 0xf1, 0x6d, 0x22, 0x7d, 0xc4, 0x1b ++ }; ++ ++ const byte k2[] = ++ { ++ 0x40, 0xf7, 0xec, 0xb2, 0x52, 0x6d, 0xaa, 0xd4, ++ 0x74, 0x25, 0x1d, 0xf4, 0x88, 0x9e, 0xf6, 0x5b ++ }; ++ const byte iv2[] = ++ { ++ 0xee, 0x9c, 0x6e, 0x06, 0x15, 0x45, 0x45, 0x03, ++ 0x1a, 0x60, 0x24, 0xa7 ++ }; ++ const byte a2[] = ++ { ++ 0x94, 0x81, 0x2c, 0x87, 0x07, 0x4e, 0x15, 0x18, ++ 0x34, 0xb8, 0x35, 0xaf, 0x1c, 0xa5, 0x7e, 0x56 ++ }; ++ const byte t2[] = ++ { ++ 0xc6, 0x81, 0x79, 0x8e, 0x3d, 0xda, 0xb0, 0x9f, ++ 0x8d, 0x83, 0xb0, 0xbb, 0x14, 0xb6, 0x91 ++ }; ++ ++ const byte k3[] = ++ { ++ 0xb8, 0xe4, 0x9a, 0x5e, 0x37, 0xf9, 0x98, 0x2b, ++ 0xb9, 0x6d, 0xd0, 0xc9, 0xb6, 0xab, 0x26, 0xac ++ }; ++ const byte iv3[] = ++ { ++ 0xe4, 0x4a, 0x42, 0x18, 0x8c, 0xae, 0x94, 0x92, ++ 0x6a, 0x9c, 0x26, 0xb0 ++ }; ++ const byte a3[] = ++ { ++ 0x9d, 0xb9, 0x61, 0x68, 0xa6, 0x76, 0x7a, 0x31, ++ 0xf8, 0x29, 0xe4, 0x72, 0x61, 0x68, 0x3f, 0x8a ++ }; ++ const byte t3[] = ++ { ++ 0x23, 0xe2, 0x9f, 0x66, 0xe4, 0xc6, 0x52, 0x48 ++ }; ++ ++ byte tag[16]; ++ ++ memset(tag, 0, sizeof(tag)); ++ GmacSetKey(&gmac, k1, sizeof(k1)); ++ GmacUpdate(&gmac, iv1, sizeof(iv1), a1, sizeof(a1), tag, sizeof(t1)); ++ if (memcmp(t1, tag, sizeof(t1)) != 0) ++ return -126; ++ ++ memset(tag, 0, sizeof(tag)); ++ GmacSetKey(&gmac, k2, sizeof(k2)); ++ GmacUpdate(&gmac, iv2, sizeof(iv2), a2, sizeof(a2), tag, sizeof(t2)); ++ if (memcmp(t2, tag, sizeof(t2)) != 0) ++ return -127; ++ ++ memset(tag, 0, sizeof(tag)); ++ GmacSetKey(&gmac, k3, sizeof(k3)); ++ GmacUpdate(&gmac, iv3, sizeof(iv3), a3, sizeof(a3), tag, sizeof(t3)); ++ if (memcmp(t3, tag, sizeof(t3)) != 0) ++ return -128; ++ ++ return 0; ++} ++#endif /* HAVE_AESGCM */ ++ ++#ifdef HAVE_AESCCM ++int aesccm_test(void) ++{ ++ Aes enc; ++ ++ /* key */ ++ const byte k[] = ++ { ++ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, ++ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf ++ }; ++ ++ /* nonce */ ++ const byte iv[] = ++ { ++ 0x00, 0x00, 0x00, 0x03, 0x02, 0x01, 0x00, 0xa0, ++ 0xa1, 0xa2, 0xa3, 0xa4, 0xa5 ++ }; ++ ++ /* plaintext */ ++ const byte p[] = ++ { ++ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, ++ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, ++ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e ++ }; ++ ++ const byte a[] = ++ { ++ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 ++ }; ++ ++ const byte c[] = ++ { ++ 0x58, 0x8c, 0x97, 0x9a, 0x61, 0xc6, 0x63, 0xd2, ++ 0xf0, 0x66, 0xd0, 0xc2, 0xc0, 0xf9, 0x89, 0x80, ++ 0x6d, 0x5f, 0x6b, 0x61, 0xda, 0xc3, 0x84 ++ }; ++ ++ const byte t[] = ++ { ++ 0x17, 0xe8, 0xd1, 0x2c, 0xfd, 0xf9, 0x26, 0xe0 ++ }; ++ ++ byte t2[sizeof(t)]; ++ byte p2[sizeof(p)]; ++ byte c2[sizeof(c)]; ++ ++ int result; ++ ++ memset(t2, 0, sizeof(t2)); ++ memset(c2, 0, sizeof(c2)); ++ memset(p2, 0, sizeof(p2)); ++ ++ AesCcmSetKey(&enc, k, sizeof(k)); ++ /* AES-CCM encrypt and decrypt both use AES encrypt internally */ ++ AesCcmEncrypt(&enc, c2, p, sizeof(c2), iv, sizeof(iv), ++ t2, sizeof(t2), a, sizeof(a)); ++ if (memcmp(c, c2, sizeof(c2))) ++ return -107; ++ if (memcmp(t, t2, sizeof(t2))) ++ return -108; ++ ++ result = AesCcmDecrypt(&enc, p2, c2, sizeof(p2), iv, sizeof(iv), ++ t2, sizeof(t2), a, sizeof(a)); ++ if (result != 0) ++ return -109; ++ if (memcmp(p, p2, sizeof(p2))) ++ return -110; ++ ++ /* Test the authentication failure */ ++ t2[0]++; /* Corrupt the authentication tag. */ ++ result = AesCcmDecrypt(&enc, p2, c, sizeof(p2), iv, sizeof(iv), ++ t2, sizeof(t2), a, sizeof(a)); ++ if (result == 0) ++ return -111; ++ ++ /* Clear c2 to compare against p2. p2 should be set to zero in case of ++ * authentication fail. */ ++ memset(c2, 0, sizeof(c2)); ++ if (memcmp(p2, c2, sizeof(p2))) ++ return -112; ++ ++ return 0; ++} ++#endif /* HAVE_AESCCM */ ++ ++ ++#endif /* NO_AES */ ++ ++ ++#ifdef HAVE_CAMELLIA ++ ++enum { ++ CAM_ECB_ENC, CAM_ECB_DEC, CAM_CBC_ENC, CAM_CBC_DEC ++}; ++ ++typedef struct { ++ int type; ++ const byte* plaintext; ++ const byte* iv; ++ const byte* ciphertext; ++ const byte* key; ++ word32 keySz; ++ int errorCode; ++} test_vector_t; ++ ++int camellia_test(void) ++{ ++ /* Camellia ECB Test Plaintext */ ++ static const byte pte[] = ++ { ++ 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, ++ 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 ++ }; ++ ++ /* Camellia ECB Test Initialization Vector */ ++ static const byte ive[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ++ ++ /* Test 1: Camellia ECB 128-bit key */ ++ static const byte k1[] = ++ { ++ 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, ++ 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 ++ }; ++ static const byte c1[] = ++ { ++ 0x67, 0x67, 0x31, 0x38, 0x54, 0x96, 0x69, 0x73, ++ 0x08, 0x57, 0x06, 0x56, 0x48, 0xea, 0xbe, 0x43 ++ }; ++ ++ /* Test 2: Camellia ECB 192-bit key */ ++ static const byte k2[] = ++ { ++ 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, ++ 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, ++ 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 ++ }; ++ static const byte c2[] = ++ { ++ 0xb4, 0x99, 0x34, 0x01, 0xb3, 0xe9, 0x96, 0xf8, ++ 0x4e, 0xe5, 0xce, 0xe7, 0xd7, 0x9b, 0x09, 0xb9 ++ }; ++ ++ /* Test 3: Camellia ECB 256-bit key */ ++ static const byte k3[] = ++ { ++ 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, ++ 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, ++ 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, ++ 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff ++ }; ++ static const byte c3[] = ++ { ++ 0x9a, 0xcc, 0x23, 0x7d, 0xff, 0x16, 0xd7, 0x6c, ++ 0x20, 0xef, 0x7c, 0x91, 0x9e, 0x3a, 0x75, 0x09 ++ }; ++ ++ /* Camellia CBC Test Plaintext */ ++ static const byte ptc[] = ++ { ++ 0x6B, 0xC1, 0xBE, 0xE2, 0x2E, 0x40, 0x9F, 0x96, ++ 0xE9, 0x3D, 0x7E, 0x11, 0x73, 0x93, 0x17, 0x2A ++ }; ++ ++ /* Camellia CBC Test Initialization Vector */ ++ static const byte ivc[] = ++ { ++ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, ++ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F ++ }; ++ ++ /* Test 4: Camellia-CBC 128-bit key */ ++ static const byte k4[] = ++ { ++ 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, ++ 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C ++ }; ++ static const byte c4[] = ++ { ++ 0x16, 0x07, 0xCF, 0x49, 0x4B, 0x36, 0xBB, 0xF0, ++ 0x0D, 0xAE, 0xB0, 0xB5, 0x03, 0xC8, 0x31, 0xAB ++ }; ++ ++ /* Test 5: Camellia-CBC 192-bit key */ ++ static const byte k5[] = ++ { ++ 0x8E, 0x73, 0xB0, 0xF7, 0xDA, 0x0E, 0x64, 0x52, ++ 0xC8, 0x10, 0xF3, 0x2B, 0x80, 0x90, 0x79, 0xE5, ++ 0x62, 0xF8, 0xEA, 0xD2, 0x52, 0x2C, 0x6B, 0x7B ++ }; ++ static const byte c5[] = ++ { ++ 0x2A, 0x48, 0x30, 0xAB, 0x5A, 0xC4, 0xA1, 0xA2, ++ 0x40, 0x59, 0x55, 0xFD, 0x21, 0x95, 0xCF, 0x93 ++ }; ++ ++ /* Test 6: CBC 256-bit key */ ++ static const byte k6[] = ++ { ++ 0x60, 0x3D, 0xEB, 0x10, 0x15, 0xCA, 0x71, 0xBE, ++ 0x2B, 0x73, 0xAE, 0xF0, 0x85, 0x7D, 0x77, 0x81, ++ 0x1F, 0x35, 0x2C, 0x07, 0x3B, 0x61, 0x08, 0xD7, ++ 0x2D, 0x98, 0x10, 0xA3, 0x09, 0x14, 0xDF, 0xF4 ++ }; ++ static const byte c6[] = ++ { ++ 0xE6, 0xCF, 0xA3, 0x5F, 0xC0, 0x2B, 0x13, 0x4A, ++ 0x4D, 0x2C, 0x0B, 0x67, 0x37, 0xAC, 0x3E, 0xDA ++ }; ++ ++ byte out[CAMELLIA_BLOCK_SIZE]; ++ Camellia cam; ++ int i, testsSz; ++ const test_vector_t testVectors[] = ++ { ++ {CAM_ECB_ENC, pte, ive, c1, k1, sizeof(k1), -114}, ++ {CAM_ECB_ENC, pte, ive, c2, k2, sizeof(k2), -115}, ++ {CAM_ECB_ENC, pte, ive, c3, k3, sizeof(k3), -116}, ++ {CAM_ECB_DEC, pte, ive, c1, k1, sizeof(k1), -117}, ++ {CAM_ECB_DEC, pte, ive, c2, k2, sizeof(k2), -118}, ++ {CAM_ECB_DEC, pte, ive, c3, k3, sizeof(k3), -119}, ++ {CAM_CBC_ENC, ptc, ivc, c4, k4, sizeof(k4), -120}, ++ {CAM_CBC_ENC, ptc, ivc, c5, k5, sizeof(k5), -121}, ++ {CAM_CBC_ENC, ptc, ivc, c6, k6, sizeof(k6), -122}, ++ {CAM_CBC_DEC, ptc, ivc, c4, k4, sizeof(k4), -123}, ++ {CAM_CBC_DEC, ptc, ivc, c5, k5, sizeof(k5), -124}, ++ {CAM_CBC_DEC, ptc, ivc, c6, k6, sizeof(k6), -125} ++ }; ++ ++ testsSz = sizeof(testVectors)/sizeof(test_vector_t); ++ for (i = 0; i < testsSz; i++) { ++ if (CamelliaSetKey(&cam, testVectors[i].key, testVectors[i].keySz, ++ testVectors[i].iv) != 0) ++ return testVectors[i].errorCode; ++ ++ switch (testVectors[i].type) { ++ case CAM_ECB_ENC: ++ CamelliaEncryptDirect(&cam, out, testVectors[i].plaintext); ++ if (memcmp(out, testVectors[i].ciphertext, CAMELLIA_BLOCK_SIZE)) ++ return testVectors[i].errorCode; ++ break; ++ case CAM_ECB_DEC: ++ CamelliaDecryptDirect(&cam, out, testVectors[i].ciphertext); ++ if (memcmp(out, testVectors[i].plaintext, CAMELLIA_BLOCK_SIZE)) ++ return testVectors[i].errorCode; ++ break; ++ case CAM_CBC_ENC: ++ CamelliaCbcEncrypt(&cam, out, testVectors[i].plaintext, ++ CAMELLIA_BLOCK_SIZE); ++ if (memcmp(out, testVectors[i].ciphertext, CAMELLIA_BLOCK_SIZE)) ++ return testVectors[i].errorCode; ++ break; ++ case CAM_CBC_DEC: ++ CamelliaCbcDecrypt(&cam, out, testVectors[i].ciphertext, ++ CAMELLIA_BLOCK_SIZE); ++ if (memcmp(out, testVectors[i].plaintext, CAMELLIA_BLOCK_SIZE)) ++ return testVectors[i].errorCode; ++ break; ++ default: ++ break; ++ } ++ } ++ ++ /* Setting the IV and checking it was actually set. */ ++ CamelliaSetIV(&cam, ivc); ++ if (XMEMCMP(cam.reg, ivc, CAMELLIA_BLOCK_SIZE)) ++ return -1; ++ ++ /* Setting the IV to NULL should be same as all zeros IV */ ++ if (CamelliaSetIV(&cam, NULL) != 0 || ++ XMEMCMP(cam.reg, ive, CAMELLIA_BLOCK_SIZE)) ++ return -1; ++ ++ /* First parameter should never be null */ ++ if (CamelliaSetIV(NULL, NULL) == 0) ++ return -1; ++ ++ /* First parameter should never be null, check it fails */ ++ if (CamelliaSetKey(NULL, k1, sizeof(k1), NULL) == 0) ++ return -1; ++ ++ /* Key should have a size of 16, 24, or 32 */ ++ if (CamelliaSetKey(&cam, k1, 0, NULL) == 0) ++ return -1; ++ ++ return 0; ++} ++#endif /* HAVE_CAMELLIA */ ++ ++ ++#if defined(HAVE_HASHDRBG) || defined(NO_RC4) ++ ++int random_test(void) ++{ ++ const byte test1Entropy[] = ++ { ++ 0xa6, 0x5a, 0xd0, 0xf3, 0x45, 0xdb, 0x4e, 0x0e, 0xff, 0xe8, 0x75, 0xc3, ++ 0xa2, 0xe7, 0x1f, 0x42, 0xc7, 0x12, 0x9d, 0x62, 0x0f, 0xf5, 0xc1, 0x19, ++ 0xa9, 0xef, 0x55, 0xf0, 0x51, 0x85, 0xe0, 0xfb, 0x85, 0x81, 0xf9, 0x31, ++ 0x75, 0x17, 0x27, 0x6e, 0x06, 0xe9, 0x60, 0x7d, 0xdb, 0xcb, 0xcc, 0x2e ++ }; ++ const byte test1Output[] = ++ { ++ 0xd3, 0xe1, 0x60, 0xc3, 0x5b, 0x99, 0xf3, 0x40, 0xb2, 0x62, 0x82, 0x64, ++ 0xd1, 0x75, 0x10, 0x60, 0xe0, 0x04, 0x5d, 0xa3, 0x83, 0xff, 0x57, 0xa5, ++ 0x7d, 0x73, 0xa6, 0x73, 0xd2, 0xb8, 0xd8, 0x0d, 0xaa, 0xf6, 0xa6, 0xc3, ++ 0x5a, 0x91, 0xbb, 0x45, 0x79, 0xd7, 0x3f, 0xd0, 0xc8, 0xfe, 0xd1, 0x11, ++ 0xb0, 0x39, 0x13, 0x06, 0x82, 0x8a, 0xdf, 0xed, 0x52, 0x8f, 0x01, 0x81, ++ 0x21, 0xb3, 0xfe, 0xbd, 0xc3, 0x43, 0xe7, 0x97, 0xb8, 0x7d, 0xbb, 0x63, ++ 0xdb, 0x13, 0x33, 0xde, 0xd9, 0xd1, 0xec, 0xe1, 0x77, 0xcf, 0xa6, 0xb7, ++ 0x1f, 0xe8, 0xab, 0x1d, 0xa4, 0x66, 0x24, 0xed, 0x64, 0x15, 0xe5, 0x1c, ++ 0xcd, 0xe2, 0xc7, 0xca, 0x86, 0xe2, 0x83, 0x99, 0x0e, 0xea, 0xeb, 0x91, ++ 0x12, 0x04, 0x15, 0x52, 0x8b, 0x22, 0x95, 0x91, 0x02, 0x81, 0xb0, 0x2d, ++ 0xd4, 0x31, 0xf4, 0xc9, 0xf7, 0x04, 0x27, 0xdf ++ }; ++ const byte test2EntropyA[] = ++ { ++ 0x63, 0x36, 0x33, 0x77, 0xe4, 0x1e, 0x86, 0x46, 0x8d, 0xeb, 0x0a, 0xb4, ++ 0xa8, 0xed, 0x68, 0x3f, 0x6a, 0x13, 0x4e, 0x47, 0xe0, 0x14, 0xc7, 0x00, ++ 0x45, 0x4e, 0x81, 0xe9, 0x53, 0x58, 0xa5, 0x69, 0x80, 0x8a, 0xa3, 0x8f, ++ 0x2a, 0x72, 0xa6, 0x23, 0x59, 0x91, 0x5a, 0x9f, 0x8a, 0x04, 0xca, 0x68 ++ }; ++ const byte test2EntropyB[] = ++ { ++ 0xe6, 0x2b, 0x8a, 0x8e, 0xe8, 0xf1, 0x41, 0xb6, 0x98, 0x05, 0x66, 0xe3, ++ 0xbf, 0xe3, 0xc0, 0x49, 0x03, 0xda, 0xd4, 0xac, 0x2c, 0xdf, 0x9f, 0x22, ++ 0x80, 0x01, 0x0a, 0x67, 0x39, 0xbc, 0x83, 0xd3 ++ }; ++ const byte test2Output[] = ++ { ++ 0x04, 0xee, 0xc6, 0x3b, 0xb2, 0x31, 0xdf, 0x2c, 0x63, 0x0a, 0x1a, 0xfb, ++ 0xe7, 0x24, 0x94, 0x9d, 0x00, 0x5a, 0x58, 0x78, 0x51, 0xe1, 0xaa, 0x79, ++ 0x5e, 0x47, 0x73, 0x47, 0xc8, 0xb0, 0x56, 0x62, 0x1c, 0x18, 0xbd, 0xdc, ++ 0xdd, 0x8d, 0x99, 0xfc, 0x5f, 0xc2, 0xb9, 0x20, 0x53, 0xd8, 0xcf, 0xac, ++ 0xfb, 0x0b, 0xb8, 0x83, 0x12, 0x05, 0xfa, 0xd1, 0xdd, 0xd6, 0xc0, 0x71, ++ 0x31, 0x8a, 0x60, 0x18, 0xf0, 0x3b, 0x73, 0xf5, 0xed, 0xe4, 0xd4, 0xd0, ++ 0x71, 0xf9, 0xde, 0x03, 0xfd, 0x7a, 0xea, 0x10, 0x5d, 0x92, 0x99, 0xb8, ++ 0xaf, 0x99, 0xaa, 0x07, 0x5b, 0xdb, 0x4d, 0xb9, 0xaa, 0x28, 0xc1, 0x8d, ++ 0x17, 0x4b, 0x56, 0xee, 0x2a, 0x01, 0x4d, 0x09, 0x88, 0x96, 0xff, 0x22, ++ 0x82, 0xc9, 0x55, 0xa8, 0x19, 0x69, 0xe0, 0x69, 0xfa, 0x8c, 0xe0, 0x07, ++ 0xa1, 0x80, 0x18, 0x3a, 0x07, 0xdf, 0xae, 0x17 ++ }; ++ int ret; ++ ++ ret = RNG_HealthTest(0, test1Entropy, sizeof(test1Entropy), NULL, 0, ++ test1Output, sizeof(test1Output)); ++ if (ret != 0) return -39; ++ ++ ret = RNG_HealthTest(1, test2EntropyA, sizeof(test2EntropyA), ++ test2EntropyB, sizeof(test2EntropyB), ++ test2Output, sizeof(test2Output)); ++ if (ret != 0) return -40; ++ ++ return 0; ++} ++ ++#else /* HAVE_HASHDRBG || NO_RC4 */ ++ ++int random_test(void) ++{ ++ RNG rng; ++ byte block[32]; ++ int ret; ++ ++#ifdef HAVE_CAVIUM ++ ret = InitRngCavium(&rng, CAVIUM_DEV_ID); ++ if (ret != 0) return -2007; ++#endif ++ ret = InitRng(&rng); ++ if (ret != 0) return -39; ++ ++ ret = RNG_GenerateBlock(&rng, block, sizeof(block)); ++ if (ret != 0) return -40; ++ ++ return 0; ++} ++ ++#endif /* HAVE_HASHDRBG || NO_RC4 */ ++ ++ ++#ifdef HAVE_NTRU ++ ++byte GetEntropy(ENTROPY_CMD cmd, byte* out); ++ ++byte GetEntropy(ENTROPY_CMD cmd, byte* out) ++{ ++ static RNG rng; ++ ++ if (cmd == INIT) ++ return (InitRng(&rng) == 0) ? 1 : 0; ++ ++ if (out == NULL) ++ return 0; ++ ++ if (cmd == GET_BYTE_OF_ENTROPY) ++ return (RNG_GenerateBlock(&rng, out, 1) == 0) ? 1 : 0; ++ ++ if (cmd == GET_NUM_BYTES_PER_BYTE_OF_ENTROPY) { ++ *out = 1; ++ return 1; ++ } ++ ++ return 0; ++} ++ ++#endif /* HAVE_NTRU */ ++ ++#ifndef NO_RSA ++ ++#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) ++ #ifdef FREESCALE_MQX ++ static const char* clientKey = "a:\\certs\\client-key.der"; ++ static const char* clientCert = "a:\\certs\\client-cert.der"; ++ #ifdef CYASSL_CERT_GEN ++ static const char* caKeyFile = "a:\\certs\\ca-key.der"; ++ static const char* caCertFile = "a:\\certs\\ca-cert.pem"; ++ #ifdef HAVE_ECC ++ static const char* eccCaKeyFile = "a:\\certs\\ecc-key.der"; ++ static const char* eccCaCertFile = "a:\\certs\\server-ecc.pem"; ++ #endif ++ #endif ++ #elif defined(CYASSL_MKD_SHELL) ++ static char* clientKey = "certs/client-key.der"; ++ static char* clientCert = "certs/client-cert.der"; ++ void set_clientKey(char *key) { clientKey = key ; } ++ void set_clientCert(char *cert) { clientCert = cert ; } ++ #ifdef CYASSL_CERT_GEN ++ static char* caKeyFile = "certs/ca-key.der"; ++ static char* caCertFile = "certs/ca-cert.pem"; ++ void set_caKeyFile (char * key) { caKeyFile = key ; } ++ void set_caCertFile(char * cert) { caCertFile = cert ; } ++ #ifdef HAVE_ECC ++ static const char* eccCaKeyFile = "certs/ecc-key.der"; ++ static const char* eccCaCertFile = "certs/server-ecc.pem"; ++ void set_eccCaKeyFile (char * key) { eccCaKeyFile = key ; } ++ void set_eccCaCertFile(char * cert) { eccCaCertFile = cert ; } ++ #endif ++ #endif ++ #else ++ static const char* clientKey = "./certs/client-key.der"; ++ static const char* clientCert = "./certs/client-cert.der"; ++ #ifdef CYASSL_CERT_GEN ++ static const char* caKeyFile = "./certs/ca-key.der"; ++ static const char* caCertFile = "./certs/ca-cert.pem"; ++ #ifdef HAVE_ECC ++ static const char* eccCaKeyFile = "./certs/ecc-key.der"; ++ static const char* eccCaCertFile = "./certs/server-ecc.pem"; ++ #endif ++ #endif ++ #endif ++#endif ++ ++ ++ ++#define FOURK_BUF 4096 ++ ++int rsa_test(void) ++{ ++ byte* tmp; ++ size_t bytes; ++ RsaKey key; ++ RNG rng; ++ word32 idx = 0; ++ int ret; ++ byte in[] = "Everyone gets Friday off."; ++ word32 inLen = (word32)strlen((char*)in); ++ byte out[256]; ++ byte plain[256]; ++#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) ++ FILE* file, * file2; ++#endif ++#ifdef CYASSL_TEST_CERT ++ DecodedCert cert; ++#endif ++ ++ tmp = (byte*)malloc(FOURK_BUF); ++ if (tmp == NULL) ++ return -40; ++ ++#ifdef USE_CERT_BUFFERS_1024 ++ XMEMCPY(tmp, client_key_der_1024, sizeof_client_key_der_1024); ++ bytes = sizeof_client_key_der_1024; ++#elif defined(USE_CERT_BUFFERS_2048) ++ XMEMCPY(tmp, client_key_der_2048, sizeof_client_key_der_2048); ++ bytes = sizeof_client_key_der_2048; ++#else ++ file = fopen(clientKey, "rb"); ++ ++ if (!file) ++ err_sys("can't open ./certs/client-key.der, " ++ "Please run from CyaSSL home dir", -40); ++ ++ bytes = fread(tmp, 1, FOURK_BUF, file); ++ fclose(file); ++#endif /* USE_CERT_BUFFERS */ ++ ++#ifdef HAVE_CAVIUM ++ RsaInitCavium(&key, CAVIUM_DEV_ID); ++#endif ++ ret = InitRsaKey(&key, 0); ++ if (ret != 0) return -39; ++ ret = RsaPrivateKeyDecode(tmp, &idx, &key, (word32)bytes); ++ if (ret != 0) return -41; ++ ++ ret = InitRng(&rng); ++ if (ret != 0) return -42; ++ ++ ret = RsaPublicEncrypt(in, inLen, out, sizeof(out), &key, &rng); ++ if (ret < 0) return -43; ++ ++ ret = RsaPrivateDecrypt(out, ret, plain, sizeof(plain), &key); ++ if (ret < 0) return -44; ++ ++ if (memcmp(plain, in, inLen)) return -45; ++ ++ ret = RsaSSL_Sign(in, inLen, out, sizeof(out), &key, &rng); ++ if (ret < 0) return -46; ++ ++ memset(plain, 0, sizeof(plain)); ++ ret = RsaSSL_Verify(out, ret, plain, sizeof(plain), &key); ++ if (ret < 0) return -47; ++ ++ if (memcmp(plain, in, ret)) return -48; ++ ++#if defined(CYASSL_MDK_ARM) ++ #define sizeof(s) strlen((char *)(s)) ++#endif ++ ++#ifdef USE_CERT_BUFFERS_1024 ++ XMEMCPY(tmp, client_cert_der_1024, sizeof_client_cert_der_1024); ++ bytes = sizeof_client_cert_der_1024; ++#elif defined(USE_CERT_BUFFERS_2048) ++ XMEMCPY(tmp, client_cert_der_2048, sizeof_client_cert_der_2048); ++ bytes = sizeof_client_cert_der_2048; ++#else ++ file2 = fopen(clientCert, "rb"); ++ if (!file2) ++ return -49; ++ ++ bytes = fread(tmp, 1, FOURK_BUF, file2); ++ fclose(file2); ++#endif ++ ++#ifdef sizeof ++ #undef sizeof ++#endif ++ ++#ifdef CYASSL_TEST_CERT ++ InitDecodedCert(&cert, tmp, (word32)bytes, 0); ++ ++ ret = ParseCert(&cert, CERT_TYPE, NO_VERIFY, 0); ++ if (ret != 0) return -491; ++ ++ FreeDecodedCert(&cert); ++#else ++ (void)bytes; ++#endif ++ ++ ++#ifdef CYASSL_KEY_GEN ++ { ++ byte* der; ++ byte* pem; ++ int derSz = 0; ++ int pemSz = 0; ++ RsaKey derIn; ++ RsaKey genKey; ++ FILE* keyFile; ++ FILE* pemFile; ++ ++ ret = InitRsaKey(&genKey, 0); ++ if (ret != 0) ++ return -300; ++ ret = MakeRsaKey(&genKey, 1024, 65537, &rng); ++ if (ret != 0) ++ return -301; ++ ++ der = (byte*)malloc(FOURK_BUF); ++ if (der == NULL) { ++ FreeRsaKey(&genKey); ++ return -307; ++ } ++ pem = (byte*)malloc(FOURK_BUF); ++ if (pem == NULL) { ++ free(der); ++ FreeRsaKey(&genKey); ++ return -308; ++ } ++ ++ derSz = RsaKeyToDer(&genKey, der, FOURK_BUF); ++ if (derSz < 0) { ++ free(der); ++ free(pem); ++ return -302; ++ } ++ ++ keyFile = fopen("./key.der", "wb"); ++ if (!keyFile) { ++ free(der); ++ free(pem); ++ FreeRsaKey(&genKey); ++ return -303; ++ } ++ ret = (int)fwrite(der, 1, derSz, keyFile); ++ fclose(keyFile); ++ if (ret != derSz) { ++ free(der); ++ free(pem); ++ FreeRsaKey(&genKey); ++ return -313; ++ } ++ ++ pemSz = DerToPem(der, derSz, pem, FOURK_BUF, PRIVATEKEY_TYPE); ++ if (pemSz < 0) { ++ free(der); ++ free(pem); ++ FreeRsaKey(&genKey); ++ return -304; ++ } ++ ++ pemFile = fopen("./key.pem", "wb"); ++ if (!pemFile) { ++ free(der); ++ free(pem); ++ FreeRsaKey(&genKey); ++ return -305; ++ } ++ ret = (int)fwrite(pem, 1, pemSz, pemFile); ++ fclose(pemFile); ++ if (ret != pemSz) { ++ free(der); ++ free(pem); ++ FreeRsaKey(&genKey); ++ return -314; ++ } ++ ++ ret = InitRsaKey(&derIn, 0); ++ if (ret != 0) { ++ free(der); ++ free(pem); ++ FreeRsaKey(&genKey); ++ return -3060; ++ } ++ idx = 0; ++ ret = RsaPrivateKeyDecode(der, &idx, &derIn, derSz); ++ if (ret != 0) { ++ free(der); ++ free(pem); ++ FreeRsaKey(&derIn); ++ FreeRsaKey(&genKey); ++ return -306; ++ } ++ ++ FreeRsaKey(&derIn); ++ FreeRsaKey(&genKey); ++ free(pem); ++ free(der); ++ } ++#endif /* CYASSL_KEY_GEN */ ++ ++ ++#ifdef CYASSL_CERT_GEN ++ /* self signed */ ++ { ++ Cert myCert; ++ byte* derCert; ++ byte* pem; ++ FILE* derFile; ++ FILE* pemFile; ++ int certSz; ++ int pemSz; ++#ifdef CYASSL_TEST_CERT ++ DecodedCert decode; ++#endif ++ ++ derCert = (byte*)malloc(FOURK_BUF); ++ if (derCert == NULL) ++ return -309; ++ pem = (byte*)malloc(FOURK_BUF); ++ if (pem == NULL) { ++ free(derCert); ++ return -310; ++ } ++ ++ InitCert(&myCert); ++ ++ strncpy(myCert.subject.country, "US", CTC_NAME_SIZE); ++ strncpy(myCert.subject.state, "OR", CTC_NAME_SIZE); ++ strncpy(myCert.subject.locality, "Portland", CTC_NAME_SIZE); ++ strncpy(myCert.subject.org, "yaSSL", CTC_NAME_SIZE); ++ strncpy(myCert.subject.unit, "Development", CTC_NAME_SIZE); ++ strncpy(myCert.subject.commonName, "www.yassl.com", CTC_NAME_SIZE); ++ strncpy(myCert.subject.email, "info@yassl.com", CTC_NAME_SIZE); ++ myCert.isCA = 1; ++ myCert.sigType = CTC_SHA256wRSA; ++ ++ certSz = MakeSelfCert(&myCert, derCert, FOURK_BUF, &key, &rng); ++ if (certSz < 0) { ++ free(derCert); ++ free(pem); ++ return -401; ++ } ++ ++#ifdef CYASSL_TEST_CERT ++ InitDecodedCert(&decode, derCert, certSz, 0); ++ ret = ParseCert(&decode, CERT_TYPE, NO_VERIFY, 0); ++ if (ret != 0) { ++ free(derCert); ++ free(pem); ++ return -402; ++ } ++ FreeDecodedCert(&decode); ++#endif ++ derFile = fopen("./cert.der", "wb"); ++ if (!derFile) { ++ free(derCert); ++ free(pem); ++ return -403; ++ } ++ ret = (int)fwrite(derCert, 1, certSz, derFile); ++ fclose(derFile); ++ if (ret != certSz) { ++ free(derCert); ++ free(pem); ++ return -414; ++ } ++ ++ pemSz = DerToPem(derCert, certSz, pem, FOURK_BUF, CERT_TYPE); ++ if (pemSz < 0) { ++ free(derCert); ++ free(pem); ++ return -404; ++ } ++ ++ pemFile = fopen("./cert.pem", "wb"); ++ if (!pemFile) { ++ free(derCert); ++ free(pem); ++ return -405; ++ } ++ ret = (int)fwrite(pem, 1, pemSz, pemFile); ++ fclose(pemFile); ++ if (ret != pemSz) { ++ free(derCert); ++ free(pem); ++ return -406; ++ } ++ free(pem); ++ free(derCert); ++ } ++ /* CA style */ ++ { ++ RsaKey caKey; ++ Cert myCert; ++ byte* derCert; ++ byte* pem; ++ FILE* derFile; ++ FILE* pemFile; ++ int certSz; ++ int pemSz; ++ size_t bytes3; ++ word32 idx3 = 0; ++ FILE* file3 ; ++#ifdef CYASSL_TEST_CERT ++ DecodedCert decode; ++#endif ++ ++ derCert = (byte*)malloc(FOURK_BUF); ++ if (derCert == NULL) ++ return -311; ++ pem = (byte*)malloc(FOURK_BUF); ++ if (pem == NULL) { ++ free(derCert); ++ return -312; ++ } ++ ++ file3 = fopen(caKeyFile, "rb"); ++ ++ if (!file3) { ++ free(derCert); ++ free(pem); ++ return -412; ++ } ++ ++ bytes3 = fread(tmp, 1, FOURK_BUF, file3); ++ fclose(file3); ++ ++ ret = InitRsaKey(&caKey, 0); ++ if (ret != 0) { ++ free(derCert); ++ free(pem); ++ return -411; ++ } ++ ret = RsaPrivateKeyDecode(tmp, &idx3, &caKey, (word32)bytes3); ++ if (ret != 0) { ++ free(derCert); ++ free(pem); ++ FreeRsaKey(&caKey); ++ return -413; ++ } ++ ++ InitCert(&myCert); ++ ++ strncpy(myCert.subject.country, "US", CTC_NAME_SIZE); ++ strncpy(myCert.subject.state, "OR", CTC_NAME_SIZE); ++ strncpy(myCert.subject.locality, "Portland", CTC_NAME_SIZE); ++ strncpy(myCert.subject.org, "yaSSL", CTC_NAME_SIZE); ++ strncpy(myCert.subject.unit, "Development", CTC_NAME_SIZE); ++ strncpy(myCert.subject.commonName, "www.yassl.com", CTC_NAME_SIZE); ++ strncpy(myCert.subject.email, "info@yassl.com", CTC_NAME_SIZE); ++ ++ ret = SetIssuer(&myCert, caCertFile); ++ if (ret < 0) { ++ free(derCert); ++ free(pem); ++ FreeRsaKey(&caKey); ++ return -405; ++ } ++ ++ certSz = MakeCert(&myCert, derCert, FOURK_BUF, &key, NULL, &rng); ++ if (certSz < 0) { ++ free(derCert); ++ free(pem); ++ FreeRsaKey(&caKey); ++ return -407; ++ } ++ ++ certSz = SignCert(myCert.bodySz, myCert.sigType, derCert, FOURK_BUF, ++ &caKey, NULL, &rng); ++ if (certSz < 0) { ++ free(derCert); ++ free(pem); ++ FreeRsaKey(&caKey); ++ return -408; ++ } ++ ++ ++#ifdef CYASSL_TEST_CERT ++ InitDecodedCert(&decode, derCert, certSz, 0); ++ ret = ParseCert(&decode, CERT_TYPE, NO_VERIFY, 0); ++ if (ret != 0) { ++ free(derCert); ++ free(pem); ++ FreeRsaKey(&caKey); ++ return -409; ++ } ++ FreeDecodedCert(&decode); ++#endif ++ ++ derFile = fopen("./othercert.der", "wb"); ++ if (!derFile) { ++ free(derCert); ++ free(pem); ++ FreeRsaKey(&caKey); ++ return -410; ++ } ++ ret = (int)fwrite(derCert, 1, certSz, derFile); ++ fclose(derFile); ++ if (ret != certSz) { ++ free(derCert); ++ free(pem); ++ FreeRsaKey(&caKey); ++ return -416; ++ } ++ ++ pemSz = DerToPem(derCert, certSz, pem, FOURK_BUF, CERT_TYPE); ++ if (pemSz < 0) { ++ free(derCert); ++ free(pem); ++ FreeRsaKey(&caKey); ++ return -411; ++ } ++ ++ pemFile = fopen("./othercert.pem", "wb"); ++ if (!pemFile) { ++ free(derCert); ++ free(pem); ++ FreeRsaKey(&caKey); ++ return -412; ++ } ++ ret = (int)fwrite(pem, 1, pemSz, pemFile); ++ if (ret != pemSz) { ++ free(derCert); ++ free(pem); ++ FreeRsaKey(&caKey); ++ return -415; ++ } ++ fclose(pemFile); ++ free(pem); ++ free(derCert); ++ FreeRsaKey(&caKey); ++ } ++#ifdef HAVE_ECC ++ /* ECC CA style */ ++ { ++ ecc_key caKey; ++ Cert myCert; ++ byte* derCert; ++ byte* pem; ++ FILE* derFile; ++ FILE* pemFile; ++ int certSz; ++ int pemSz; ++ size_t bytes3; ++ word32 idx3 = 0; ++ FILE* file3; ++#ifdef CYASSL_TEST_CERT ++ DecodedCert decode; ++#endif ++ ++ derCert = (byte*)malloc(FOURK_BUF); ++ if (derCert == NULL) ++ return -5311; ++ pem = (byte*)malloc(FOURK_BUF); ++ if (pem == NULL) { ++ free(derCert); ++ return -5312; ++ } ++ ++ file3 = fopen(eccCaKeyFile, "rb"); ++ ++ if (!file3) { ++ free(derCert); ++ free(pem); ++ return -5412; ++ } ++ ++ bytes3 = fread(tmp, 1, FOURK_BUF, file3); ++ fclose(file3); ++ ++ ecc_init(&caKey); ++ ret = EccPrivateKeyDecode(tmp, &idx3, &caKey, (word32)bytes3); ++ if (ret != 0) { ++ free(derCert); ++ free(pem); ++ return -5413; ++ } ++ ++ InitCert(&myCert); ++ myCert.sigType = CTC_SHA256wECDSA; ++ ++ strncpy(myCert.subject.country, "US", CTC_NAME_SIZE); ++ strncpy(myCert.subject.state, "OR", CTC_NAME_SIZE); ++ strncpy(myCert.subject.locality, "Portland", CTC_NAME_SIZE); ++ strncpy(myCert.subject.org, "wolfSSL", CTC_NAME_SIZE); ++ strncpy(myCert.subject.unit, "Development", CTC_NAME_SIZE); ++ strncpy(myCert.subject.commonName, "www.wolfssl.com", CTC_NAME_SIZE); ++ strncpy(myCert.subject.email, "info@wolfssl.com", CTC_NAME_SIZE); ++ ++ ret = SetIssuer(&myCert, eccCaCertFile); ++ if (ret < 0) { ++ free(pem); ++ free(derCert); ++ ecc_free(&caKey); ++ return -5405; ++ } ++ ++ certSz = MakeCert(&myCert, derCert, FOURK_BUF, NULL, &caKey, &rng); ++ if (certSz < 0) { ++ free(pem); ++ free(derCert); ++ ecc_free(&caKey); ++ return -5407; ++ } ++ ++ certSz = SignCert(myCert.bodySz, myCert.sigType, derCert, FOURK_BUF, ++ NULL, &caKey, &rng); ++ if (certSz < 0) { ++ free(pem); ++ free(derCert); ++ ecc_free(&caKey); ++ return -5408; ++ } ++ ++#ifdef CYASSL_TEST_CERT ++ InitDecodedCert(&decode, derCert, certSz, 0); ++ ret = ParseCert(&decode, CERT_TYPE, NO_VERIFY, 0); ++ if (ret != 0) { ++ free(pem); ++ free(derCert); ++ ecc_free(&caKey); ++ return -5409; ++ } ++ FreeDecodedCert(&decode); ++#endif ++ ++ derFile = fopen("./certecc.der", "wb"); ++ if (!derFile) { ++ free(pem); ++ free(derCert); ++ ecc_free(&caKey); ++ return -5410; ++ } ++ ret = (int)fwrite(derCert, 1, certSz, derFile); ++ fclose(derFile); ++ if (ret != certSz) { ++ free(pem); ++ free(derCert); ++ ecc_free(&caKey); ++ return -5414; ++ } ++ ++ pemSz = DerToPem(derCert, certSz, pem, FOURK_BUF, CERT_TYPE); ++ if (pemSz < 0) { ++ free(pem); ++ free(derCert); ++ ecc_free(&caKey); ++ return -5411; ++ } ++ ++ pemFile = fopen("./certecc.pem", "wb"); ++ if (!pemFile) { ++ free(pem); ++ free(derCert); ++ ecc_free(&caKey); ++ return -5412; ++ } ++ ret = (int)fwrite(pem, 1, pemSz, pemFile); ++ if (ret != pemSz) { ++ free(pem); ++ free(derCert); ++ ecc_free(&caKey); ++ return -5415; ++ } ++ fclose(pemFile); ++ free(pem); ++ free(derCert); ++ ecc_free(&caKey); ++ } ++#endif /* HAVE_ECC */ ++#ifdef HAVE_NTRU ++ { ++ RsaKey caKey; ++ Cert myCert; ++ byte* derCert; ++ byte* pem; ++ FILE* derFile; ++ FILE* pemFile; ++ FILE* caFile; ++ FILE* ntruPrivFile; ++ int certSz; ++ int pemSz; ++ word32 idx3; ++#ifdef CYASSL_TEST_CERT ++ DecodedCert decode; ++#endif ++ derCert = (byte*)malloc(FOURK_BUF); ++ if (derCert == NULL) ++ return -311; ++ pem = (byte*)malloc(FOURK_BUF); ++ if (pem == NULL) { ++ free(derCert); ++ return -312; ++ } ++ ++ byte public_key[557]; /* sized for EES401EP2 */ ++ word16 public_key_len; /* no. of octets in public key */ ++ byte private_key[607]; /* sized for EES401EP2 */ ++ word16 private_key_len; /* no. of octets in private key */ ++ DRBG_HANDLE drbg; ++ static uint8_t const pers_str[] = { ++ 'C', 'y', 'a', 'S', 'S', 'L', ' ', 't', 'e', 's', 't' ++ }; ++ word32 rc = ntru_crypto_drbg_instantiate(112, pers_str, ++ sizeof(pers_str), GetEntropy, &drbg); ++ if (rc != DRBG_OK) { ++ free(derCert); ++ free(pem); ++ return -448; ++ } ++ ++ rc = ntru_crypto_ntru_encrypt_keygen(drbg, NTRU_EES401EP2, ++ &public_key_len, NULL, ++ &private_key_len, NULL); ++ if (rc != NTRU_OK) { ++ free(derCert); ++ free(pem); ++ return -449; ++ } ++ ++ rc = ntru_crypto_ntru_encrypt_keygen(drbg, NTRU_EES401EP2, ++ &public_key_len, public_key, ++ &private_key_len, private_key); ++ if (rc != NTRU_OK) { ++ free(derCert); ++ free(pem); ++ return -450; ++ } ++ ++ rc = ntru_crypto_drbg_uninstantiate(drbg); ++ ++ if (rc != NTRU_OK) { ++ free(derCert); ++ free(pem); ++ return -451; ++ } ++ ++ caFile = fopen(caKeyFile, "rb"); ++ ++ if (!caFile) { ++ free(derCert); ++ free(pem); ++ return -452; ++ } ++ ++ bytes = fread(tmp, 1, FOURK_BUF, caFile); ++ fclose(caFile); ++ ++ ret = InitRsaKey(&caKey, 0); ++ if (ret != 0) { ++ free(derCert); ++ free(pem); ++ return -453; ++ } ++ ret = RsaPrivateKeyDecode(tmp, &idx3, &caKey, (word32)bytes); ++ if (ret != 0) { ++ free(derCert); ++ free(pem); ++ return -454; ++ } ++ ++ InitCert(&myCert); ++ ++ strncpy(myCert.subject.country, "US", CTC_NAME_SIZE); ++ strncpy(myCert.subject.state, "OR", CTC_NAME_SIZE); ++ strncpy(myCert.subject.locality, "Portland", CTC_NAME_SIZE); ++ strncpy(myCert.subject.org, "yaSSL", CTC_NAME_SIZE); ++ strncpy(myCert.subject.unit, "Development", CTC_NAME_SIZE); ++ strncpy(myCert.subject.commonName, "www.yassl.com", CTC_NAME_SIZE); ++ strncpy(myCert.subject.email, "info@yassl.com", CTC_NAME_SIZE); ++ ++ ret = SetIssuer(&myCert, caCertFile); ++ if (ret < 0) { ++ free(derCert); ++ free(pem); ++ FreeRsaKey(&caKey); ++ return -455; ++ } ++ ++ certSz = MakeNtruCert(&myCert, derCert, FOURK_BUF, public_key, ++ public_key_len, &rng); ++ if (certSz < 0) { ++ free(derCert); ++ free(pem); ++ FreeRsaKey(&caKey); ++ return -456; ++ } ++ ++ certSz = SignCert(myCert.bodySz, myCert.sigType, derCert, FOURK_BUF, ++ &caKey, NULL, &rng); ++ FreeRsaKey(&caKey); ++ if (certSz < 0) { ++ free(derCert); ++ free(pem); ++ return -457; ++ } ++ ++ ++#ifdef CYASSL_TEST_CERT ++ InitDecodedCert(&decode, derCert, certSz, 0); ++ ret = ParseCert(&decode, CERT_TYPE, NO_VERIFY, 0); ++ if (ret != 0) { ++ free(derCert); ++ free(pem); ++ return -458; ++ } ++ FreeDecodedCert(&decode); ++#endif ++ derFile = fopen("./ntru-cert.der", "wb"); ++ if (!derFile) { ++ free(derCert); ++ free(pem); ++ return -459; ++ } ++ ret = (int)fwrite(derCert, 1, certSz, derFile); ++ fclose(derFile); ++ if (ret != certSz) { ++ free(derCert); ++ free(pem); ++ return -473; ++ } ++ ++ pemSz = DerToPem(derCert, certSz, pem, FOURK_BUF, CERT_TYPE); ++ if (pemSz < 0) { ++ free(derCert); ++ free(pem); ++ return -460; ++ } ++ ++ pemFile = fopen("./ntru-cert.pem", "wb"); ++ if (!pemFile) { ++ free(derCert); ++ free(pem); ++ return -461; ++ } ++ ret = (int)fwrite(pem, 1, pemSz, pemFile); ++ fclose(pemFile); ++ if (ret != pemSz) { ++ free(derCert); ++ free(pem); ++ return -474; ++ } ++ ++ ntruPrivFile = fopen("./ntru-key.raw", "wb"); ++ if (!ntruPrivFile) { ++ free(derCert); ++ free(pem); ++ return -462; ++ } ++ ret = (int)fwrite(private_key, 1, private_key_len, ntruPrivFile); ++ fclose(ntruPrivFile); ++ if (ret != private_key_len) { ++ free(pem); ++ free(derCert); ++ return -475; ++ } ++ free(pem); ++ free(derCert); ++ } ++#endif /* HAVE_NTRU */ ++#ifdef CYASSL_CERT_REQ ++ { ++ Cert req; ++ byte* der; ++ byte* pem; ++ int derSz; ++ int pemSz; ++ FILE* reqFile; ++ ++ der = (byte*)malloc(FOURK_BUF); ++ if (der == NULL) ++ return -463; ++ pem = (byte*)malloc(FOURK_BUF); ++ if (pem == NULL) { ++ free(der); ++ return -464; ++ } ++ ++ InitCert(&req); ++ ++ req.version = 0; ++ req.isCA = 1; ++ strncpy(req.challengePw, "yassl123", CTC_NAME_SIZE); ++ strncpy(req.subject.country, "US", CTC_NAME_SIZE); ++ strncpy(req.subject.state, "OR", CTC_NAME_SIZE); ++ strncpy(req.subject.locality, "Portland", CTC_NAME_SIZE); ++ strncpy(req.subject.org, "yaSSL", CTC_NAME_SIZE); ++ strncpy(req.subject.unit, "Development", CTC_NAME_SIZE); ++ strncpy(req.subject.commonName, "www.yassl.com", CTC_NAME_SIZE); ++ strncpy(req.subject.email, "info@yassl.com", CTC_NAME_SIZE); ++ req.sigType = CTC_SHA256wRSA; ++ ++ derSz = MakeCertReq(&req, der, FOURK_BUF, &key, NULL); ++ if (derSz < 0) { ++ free(pem); ++ free(der); ++ return -465; ++ } ++ ++ derSz = SignCert(req.bodySz, req.sigType, der, FOURK_BUF, ++ &key, NULL, &rng); ++ if (derSz < 0) { ++ free(pem); ++ free(der); ++ return -466; ++ } ++ ++ pemSz = DerToPem(der, derSz, pem, FOURK_BUF, CERTREQ_TYPE); ++ if (pemSz < 0) { ++ free(pem); ++ free(der); ++ return -467; ++ } ++ ++ reqFile = fopen("./certreq.der", "wb"); ++ if (!reqFile) { ++ free(pem); ++ free(der); ++ return -468; ++ } ++ ++ ret = (int)fwrite(der, 1, derSz, reqFile); ++ fclose(reqFile); ++ if (ret != derSz) { ++ free(pem); ++ free(der); ++ return -471; ++ } ++ ++ reqFile = fopen("./certreq.pem", "wb"); ++ if (!reqFile) { ++ free(pem); ++ free(der); ++ return -469; ++ } ++ ret = (int)fwrite(pem, 1, pemSz, reqFile); ++ fclose(reqFile); ++ if (ret != pemSz) { ++ free(pem); ++ free(der); ++ return -470; ++ } ++ ++ free(pem); ++ free(der); ++ } ++#endif /* CYASSL_CERT_REQ */ ++#endif /* CYASSL_CERT_GEN */ ++ ++ FreeRsaKey(&key); ++#ifdef HAVE_CAVIUM ++ RsaFreeCavium(&key); ++#endif ++ free(tmp); ++ ++ return 0; ++} ++ ++#endif ++ ++ ++#ifndef NO_DH ++ ++#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) ++ #ifdef FREESCALE_MQX ++ static const char* dhKey = "a:\certs\\dh2048.der"; ++ #else ++ static const char* dhKey = "./certs/dh2048.der"; ++ #endif ++#endif ++ ++int dh_test(void) ++{ ++ int ret; ++ word32 bytes; ++ word32 idx = 0, privSz, pubSz, privSz2, pubSz2, agreeSz, agreeSz2; ++ byte tmp[1024]; ++ byte priv[256]; ++ byte pub[256]; ++ byte priv2[256]; ++ byte pub2[256]; ++ byte agree[256]; ++ byte agree2[256]; ++ DhKey key; ++ DhKey key2; ++ RNG rng; ++ ++ ++#ifdef USE_CERT_BUFFERS_1024 ++ XMEMCPY(tmp, dh_key_der_1024, sizeof_dh_key_der_1024); ++ bytes = sizeof_dh_key_der_1024; ++#elif defined(USE_CERT_BUFFERS_2048) ++ XMEMCPY(tmp, dh_key_der_2048, sizeof_dh_key_der_2048); ++ bytes = sizeof_dh_key_der_2048; ++#else ++ FILE* file = fopen(dhKey, "rb"); ++ ++ if (!file) ++ return -50; ++ ++ bytes = (word32) fread(tmp, 1, sizeof(tmp), file); ++ fclose(file); ++#endif /* USE_CERT_BUFFERS */ ++ ++ InitDhKey(&key); ++ InitDhKey(&key2); ++ ret = DhKeyDecode(tmp, &idx, &key, bytes); ++ if (ret != 0) ++ return -51; ++ ++ idx = 0; ++ ret = DhKeyDecode(tmp, &idx, &key2, bytes); ++ if (ret != 0) ++ return -52; ++ ++ ret = InitRng(&rng); ++ if (ret != 0) ++ return -53; ++ ++ ret = DhGenerateKeyPair(&key, &rng, priv, &privSz, pub, &pubSz); ++ ret += DhGenerateKeyPair(&key2, &rng, priv2, &privSz2, pub2, &pubSz2); ++ if (ret != 0) ++ return -54; ++ ++ ret = DhAgree(&key, agree, &agreeSz, priv, privSz, pub2, pubSz2); ++ ret += DhAgree(&key2, agree2, &agreeSz2, priv2, privSz2, pub, pubSz); ++ if (ret != 0) ++ return -55; ++ ++ if (memcmp(agree, agree2, agreeSz)) ++ return -56; ++ ++ FreeDhKey(&key); ++ FreeDhKey(&key2); ++ ++ return 0; ++} ++ ++#endif /* NO_DH */ ++ ++ ++#ifndef NO_DSA ++ ++#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) ++ #ifdef FREESCALE_MQX ++ static const char* dsaKey = "a:\\certs\\dsa2048.der"; ++ #else ++ static const char* dsaKey = "./certs/dsa2048.der"; ++ #endif ++#endif ++ ++int dsa_test(void) ++{ ++ int ret, answer; ++ word32 bytes; ++ word32 idx = 0; ++ byte tmp[1024]; ++ DsaKey key; ++ RNG rng; ++ Sha sha; ++ byte hash[SHA_DIGEST_SIZE]; ++ byte signature[40]; ++ ++ ++#ifdef USE_CERT_BUFFERS_1024 ++ XMEMCPY(tmp, dsa_key_der_1024, sizeof_dsa_key_der_1024); ++ bytes = sizeof_dsa_key_der_1024; ++#elif defined(USE_CERT_BUFFERS_2048) ++ XMEMCPY(tmp, dsa_key_der_2048, sizeof_dsa_key_der_2048); ++ bytes = sizeof_dsa_key_der_2048; ++#else ++ FILE* file = fopen(dsaKey, "rb"); ++ ++ if (!file) ++ return -60; ++ ++ bytes = (word32) fread(tmp, 1, sizeof(tmp), file); ++ fclose(file); ++#endif /* USE_CERT_BUFFERS */ ++ ++ ret = InitSha(&sha); ++ if (ret != 0) ++ return -4002; ++ ShaUpdate(&sha, tmp, bytes); ++ ShaFinal(&sha, hash); ++ ++ InitDsaKey(&key); ++ ret = DsaPrivateKeyDecode(tmp, &idx, &key, bytes); ++ if (ret != 0) return -61; ++ ++ ret = InitRng(&rng); ++ if (ret != 0) return -62; ++ ++ ret = DsaSign(hash, signature, &key, &rng); ++ if (ret != 0) return -63; ++ ++ ret = DsaVerify(hash, signature, &key, &answer); ++ if (ret != 0) return -64; ++ if (answer != 1) return -65; ++ ++ FreeDsaKey(&key); ++ ++ return 0; ++} ++ ++#endif /* NO_DSA */ ++ ++ ++#ifdef OPENSSL_EXTRA ++ ++int openssl_test(void) ++{ ++ EVP_MD_CTX md_ctx; ++ testVector a, b, c, d, e, f; ++ byte hash[SHA_DIGEST_SIZE*4]; /* max size */ ++ ++ (void)e; ++ (void)f; ++ ++ a.input = "1234567890123456789012345678901234567890123456789012345678" ++ "9012345678901234567890"; ++ a.output = "\x57\xed\xf4\xa2\x2b\xe3\xc9\x55\xac\x49\xda\x2e\x21\x07\xb6" ++ "\x7a"; ++ a.inLen = strlen(a.input); ++ a.outLen = MD5_DIGEST_SIZE; ++ ++ EVP_MD_CTX_init(&md_ctx); ++ EVP_DigestInit(&md_ctx, EVP_md5()); ++ ++ EVP_DigestUpdate(&md_ctx, a.input, (unsigned long)a.inLen); ++ EVP_DigestFinal(&md_ctx, hash, 0); ++ ++ if (memcmp(hash, a.output, MD5_DIGEST_SIZE) != 0) ++ return -71; ++ ++ b.input = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ++ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ++ "aaaaaaaaaa"; ++ b.output = "\xAD\x5B\x3F\xDB\xCB\x52\x67\x78\xC2\x83\x9D\x2F\x15\x1E\xA7" ++ "\x53\x99\x5E\x26\xA0"; ++ b.inLen = strlen(b.input); ++ b.outLen = SHA_DIGEST_SIZE; ++ ++ EVP_MD_CTX_init(&md_ctx); ++ EVP_DigestInit(&md_ctx, EVP_sha1()); ++ ++ EVP_DigestUpdate(&md_ctx, b.input, (unsigned long)b.inLen); ++ EVP_DigestFinal(&md_ctx, hash, 0); ++ ++ if (memcmp(hash, b.output, SHA_DIGEST_SIZE) != 0) ++ return -72; ++ ++ ++ d.input = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; ++ d.output = "\x24\x8D\x6A\x61\xD2\x06\x38\xB8\xE5\xC0\x26\x93\x0C\x3E\x60" ++ "\x39\xA3\x3C\xE4\x59\x64\xFF\x21\x67\xF6\xEC\xED\xD4\x19\xDB" ++ "\x06\xC1"; ++ d.inLen = strlen(d.input); ++ d.outLen = SHA256_DIGEST_SIZE; ++ ++ EVP_MD_CTX_init(&md_ctx); ++ EVP_DigestInit(&md_ctx, EVP_sha256()); ++ ++ EVP_DigestUpdate(&md_ctx, d.input, (unsigned long)d.inLen); ++ EVP_DigestFinal(&md_ctx, hash, 0); ++ ++ if (memcmp(hash, d.output, SHA256_DIGEST_SIZE) != 0) ++ return -78; ++ ++#ifdef CYASSL_SHA384 ++ ++ e.input = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhi" ++ "jklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"; ++ e.output = "\x09\x33\x0c\x33\xf7\x11\x47\xe8\x3d\x19\x2f\xc7\x82\xcd\x1b" ++ "\x47\x53\x11\x1b\x17\x3b\x3b\x05\xd2\x2f\xa0\x80\x86\xe3\xb0" ++ "\xf7\x12\xfc\xc7\xc7\x1a\x55\x7e\x2d\xb9\x66\xc3\xe9\xfa\x91" ++ "\x74\x60\x39"; ++ e.inLen = strlen(e.input); ++ e.outLen = SHA384_DIGEST_SIZE; ++ ++ EVP_MD_CTX_init(&md_ctx); ++ EVP_DigestInit(&md_ctx, EVP_sha384()); ++ ++ EVP_DigestUpdate(&md_ctx, e.input, e.inLen); ++ EVP_DigestFinal(&md_ctx, hash, 0); ++ ++ if (memcmp(hash, e.output, SHA384_DIGEST_SIZE) != 0) ++ return -79; ++ ++#endif /* CYASSL_SHA384 */ ++ ++ ++#ifdef CYASSL_SHA512 ++ ++ f.input = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhi" ++ "jklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"; ++ f.output = "\x8e\x95\x9b\x75\xda\xe3\x13\xda\x8c\xf4\xf7\x28\x14\xfc\x14" ++ "\x3f\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1\x72\x99\xae\xad\xb6\x88" ++ "\x90\x18\x50\x1d\x28\x9e\x49\x00\xf7\xe4\x33\x1b\x99\xde\xc4" ++ "\xb5\x43\x3a\xc7\xd3\x29\xee\xb6\xdd\x26\x54\x5e\x96\xe5\x5b" ++ "\x87\x4b\xe9\x09"; ++ f.inLen = strlen(f.input); ++ f.outLen = SHA512_DIGEST_SIZE; ++ ++ EVP_MD_CTX_init(&md_ctx); ++ EVP_DigestInit(&md_ctx, EVP_sha512()); ++ ++ EVP_DigestUpdate(&md_ctx, f.input, (unsigned long)f.inLen); ++ EVP_DigestFinal(&md_ctx, hash, 0); ++ ++ if (memcmp(hash, f.output, SHA512_DIGEST_SIZE) != 0) ++ return -80; ++ ++#endif /* CYASSL_SHA512 */ ++ ++ ++ if (RAND_bytes(hash, sizeof(hash)) != 1) ++ return -73; ++ ++ c.input = "what do ya want for nothing?"; ++ c.output = "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03\xea\xa8\x6e\x31\x0a\x5d\xb7" ++ "\x38"; ++ c.inLen = strlen(c.input); ++ c.outLen = MD5_DIGEST_SIZE; ++ ++ HMAC(EVP_md5(), "Jefe", 4, (byte*)c.input, (int)c.inLen, hash, 0); ++ ++ if (memcmp(hash, c.output, MD5_DIGEST_SIZE) != 0) ++ return -74; ++ ++ { /* des test */ ++ const byte vector[] = { /* "now is the time for all " w/o trailing 0 */ ++ 0x6e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74, ++ 0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20, ++ 0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20 ++ }; ++ ++ byte plain[24]; ++ byte cipher[24]; ++ ++ const_DES_cblock key = ++ { ++ 0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef ++ }; ++ ++ DES_cblock iv = ++ { ++ 0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef ++ }; ++ ++ DES_key_schedule sched; ++ ++ const byte verify[] = ++ { ++ 0x8b,0x7c,0x52,0xb0,0x01,0x2b,0x6c,0xb8, ++ 0x4f,0x0f,0xeb,0xf3,0xfb,0x5f,0x86,0x73, ++ 0x15,0x85,0xb3,0x22,0x4b,0x86,0x2b,0x4b ++ }; ++ ++ DES_key_sched(&key, &sched); ++ ++ DES_cbc_encrypt(vector, cipher, sizeof(vector), &sched, &iv, DES_ENCRYPT); ++ DES_cbc_encrypt(cipher, plain, sizeof(vector), &sched, &iv, DES_DECRYPT); ++ ++ if (memcmp(plain, vector, sizeof(vector)) != 0) ++ return -75; ++ ++ if (memcmp(cipher, verify, sizeof(verify)) != 0) ++ return -76; ++ ++ /* test changing iv */ ++ DES_ncbc_encrypt(vector, cipher, 8, &sched, &iv, DES_ENCRYPT); ++ DES_ncbc_encrypt(vector + 8, cipher + 8, 16, &sched, &iv, DES_ENCRYPT); ++ ++ if (memcmp(cipher, verify, sizeof(verify)) != 0) ++ return -77; ++ ++ } /* end des test */ ++ ++ { /* evp_cipher test */ ++ EVP_CIPHER_CTX ctx; ++ ++ ++ const byte msg[] = { /* "Now is the time for all " w/o trailing 0 */ ++ 0x6e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74, ++ 0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20, ++ 0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20 ++ }; ++ ++ const byte verify[] = ++ { ++ 0x95,0x94,0x92,0x57,0x5f,0x42,0x81,0x53, ++ 0x2c,0xcc,0x9d,0x46,0x77,0xa2,0x33,0xcb ++ }; ++ ++ byte key[] = "0123456789abcdef "; /* align */ ++ byte iv[] = "1234567890abcdef "; /* align */ ++ ++ byte cipher[AES_BLOCK_SIZE * 4]; ++ byte plain [AES_BLOCK_SIZE * 4]; ++ ++ EVP_CIPHER_CTX_init(&ctx); ++ if (EVP_CipherInit(&ctx, EVP_aes_128_cbc(), key, iv, 1) == 0) ++ return -81; ++ ++ if (EVP_Cipher(&ctx, cipher, (byte*)msg, 16) == 0) ++ return -82; ++ ++ if (memcmp(cipher, verify, AES_BLOCK_SIZE)) ++ return -83; ++ ++ EVP_CIPHER_CTX_init(&ctx); ++ if (EVP_CipherInit(&ctx, EVP_aes_128_cbc(), key, iv, 0) == 0) ++ return -84; ++ ++ if (EVP_Cipher(&ctx, plain, cipher, 16) == 0) ++ return -85; ++ ++ if (memcmp(plain, msg, AES_BLOCK_SIZE)) ++ return -86; ++ ++ ++ } /* end evp_cipher test */ ++ ++ return 0; ++} ++ ++#endif /* OPENSSL_EXTRA */ ++ ++ ++#ifndef NO_PWDBASED ++ ++int pkcs12_test(void) ++{ ++ const byte passwd[] = { 0x00, 0x73, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x67, ++ 0x00, 0x00 }; ++ const byte salt[] = { 0x0a, 0x58, 0xCF, 0x64, 0x53, 0x0d, 0x82, 0x3f }; ++ ++ const byte passwd2[] = { 0x00, 0x71, 0x00, 0x75, 0x00, 0x65, 0x00, 0x65, ++ 0x00, 0x67, 0x00, 0x00 }; ++ const byte salt2[] = { 0x16, 0x82, 0xC0, 0xfC, 0x5b, 0x3f, 0x7e, 0xc5 }; ++ byte derived[64]; ++ ++ const byte verify[] = { ++ 0x8A, 0xAA, 0xE6, 0x29, 0x7B, 0x6C, 0xB0, 0x46, ++ 0x42, 0xAB, 0x5B, 0x07, 0x78, 0x51, 0x28, 0x4E, ++ 0xB7, 0x12, 0x8F, 0x1A, 0x2A, 0x7F, 0xBC, 0xA3 ++ }; ++ ++ const byte verify2[] = { ++ 0x48, 0x3D, 0xD6, 0xE9, 0x19, 0xD7, 0xDE, 0x2E, ++ 0x8E, 0x64, 0x8B, 0xA8, 0xF8, 0x62, 0xF3, 0xFB, ++ 0xFB, 0xDC, 0x2B, 0xCB, 0x2C, 0x02, 0x95, 0x7F ++ }; ++ ++ int id = 1; ++ int kLen = 24; ++ int iterations = 1; ++ int ret = PKCS12_PBKDF(derived, passwd, sizeof(passwd), salt, 8, iterations, ++ kLen, SHA, id); ++ ++ if (ret < 0) ++ return -103; ++ ++ if ( (ret = memcmp(derived, verify, kLen)) != 0) ++ return -104; ++ ++ iterations = 1000; ++ ret = PKCS12_PBKDF(derived, passwd2, sizeof(passwd2), salt2, 8, iterations, ++ kLen, SHA, id); ++ if (ret < 0) ++ return -105; ++ ++ if ( (ret = memcmp(derived, verify2, 24)) != 0) ++ return -106; ++ ++ return 0; ++} ++ ++ ++int pbkdf2_test(void) ++{ ++ char passwd[] = "password"; ++ const byte salt[] = { 0x78, 0x57, 0x8E, 0x5a, 0x5d, 0x63, 0xcb, 0x06 }; ++ int iterations = 2048; ++ int kLen = 24; ++ byte derived[64]; ++ ++ const byte verify[] = { ++ 0xBF, 0xDE, 0x6B, 0xE9, 0x4D, 0xF7, 0xE1, 0x1D, 0xD4, 0x09, 0xBC, 0xE2, ++ 0x0A, 0x02, 0x55, 0xEC, 0x32, 0x7C, 0xB9, 0x36, 0xFF, 0xE9, 0x36, 0x43 ++ ++ }; ++ ++ int ret = PBKDF2(derived, (byte*)passwd, (int)strlen(passwd), salt, 8, ++ iterations, kLen, SHA); ++ if (ret != 0) ++ return ret; ++ ++ if (memcmp(derived, verify, sizeof(verify)) != 0) ++ return -102; ++ ++ return 0; ++} ++ ++ ++int pbkdf1_test(void) ++{ ++ char passwd[] = "password"; ++ const byte salt[] = { 0x78, 0x57, 0x8E, 0x5a, 0x5d, 0x63, 0xcb, 0x06 }; ++ int iterations = 1000; ++ int kLen = 16; ++ byte derived[16]; ++ ++ const byte verify[] = { ++ 0xDC, 0x19, 0x84, 0x7E, 0x05, 0xC6, 0x4D, 0x2F, 0xAF, 0x10, 0xEB, 0xFB, ++ 0x4A, 0x3D, 0x2A, 0x20 ++ }; ++ ++ PBKDF1(derived, (byte*)passwd, (int)strlen(passwd), salt, 8, iterations, ++ kLen, SHA); ++ ++ if (memcmp(derived, verify, sizeof(verify)) != 0) ++ return -101; ++ ++ return 0; ++} ++ ++ ++int pwdbased_test(void) ++{ ++ int ret = pbkdf1_test(); ++ ret += pbkdf2_test(); ++ ++ return ret + pkcs12_test(); ++} ++ ++#endif /* NO_PWDBASED */ ++ ++#if defined(HAVE_HKDF) && (!defined(NO_SHA) || !defined(NO_SHA256)) ++ ++int hkdf_test(void) ++{ ++ int ret; ++ int L = 42; ++ byte okm1[42]; ++ byte ikm1[22] = { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, ++ 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, ++ 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b }; ++ byte salt1[13] ={ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, ++ 0x08, 0x09, 0x0a, 0x0b, 0x0c }; ++ byte info1[10] ={ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9 }; ++ byte res1[42] = { 0x0a, 0xc1, 0xaf, 0x70, 0x02, 0xb3, 0xd7, 0x61, ++ 0xd1, 0xe5, 0x52, 0x98, 0xda, 0x9d, 0x05, 0x06, ++ 0xb9, 0xae, 0x52, 0x05, 0x72, 0x20, 0xa3, 0x06, ++ 0xe0, 0x7b, 0x6b, 0x87, 0xe8, 0xdf, 0x21, 0xd0, ++ 0xea, 0x00, 0x03, 0x3d, 0xe0, 0x39, 0x84, 0xd3, ++ 0x49, 0x18 }; ++ byte res2[42] = { 0x08, 0x5a, 0x01, 0xea, 0x1b, 0x10, 0xf3, 0x69, ++ 0x33, 0x06, 0x8b, 0x56, 0xef, 0xa5, 0xad, 0x81, ++ 0xa4, 0xf1, 0x4b, 0x82, 0x2f, 0x5b, 0x09, 0x15, ++ 0x68, 0xa9, 0xcd, 0xd4, 0xf1, 0x55, 0xfd, 0xa2, ++ 0xc2, 0x2e, 0x42, 0x24, 0x78, 0xd3, 0x05, 0xf3, ++ 0xf8, 0x96 }; ++ byte res3[42] = { 0x8d, 0xa4, 0xe7, 0x75, 0xa5, 0x63, 0xc1, 0x8f, ++ 0x71, 0x5f, 0x80, 0x2a, 0x06, 0x3c, 0x5a, 0x31, ++ 0xb8, 0xa1, 0x1f, 0x5c, 0x5e, 0xe1, 0x87, 0x9e, ++ 0xc3, 0x45, 0x4e, 0x5f, 0x3c, 0x73, 0x8d, 0x2d, ++ 0x9d, 0x20, 0x13, 0x95, 0xfa, 0xa4, 0xb6, 0x1a, ++ 0x96, 0xc8 }; ++ byte res4[42] = { 0x3c, 0xb2, 0x5f, 0x25, 0xfa, 0xac, 0xd5, 0x7a, ++ 0x90, 0x43, 0x4f, 0x64, 0xd0, 0x36, 0x2f, 0x2a, ++ 0x2d, 0x2d, 0x0a, 0x90, 0xcf, 0x1a, 0x5a, 0x4c, ++ 0x5d, 0xb0, 0x2d, 0x56, 0xec, 0xc4, 0xc5, 0xbf, ++ 0x34, 0x00, 0x72, 0x08, 0xd5, 0xb8, 0x87, 0x18, ++ 0x58, 0x65 }; ++ ++ (void)res1; ++ (void)res2; ++ (void)res3; ++ (void)res4; ++ (void)salt1; ++ (void)info1; ++ ++#ifndef NO_SHA ++ ret = HKDF(SHA, ikm1, 22, NULL, 0, NULL, 0, okm1, L); ++ if (ret != 0) ++ return -2001; ++ ++ if (memcmp(okm1, res1, L) != 0) ++ return -2002; ++ ++#ifndef HAVE_FIPS ++ /* fips can't have key size under 14 bytes, salt is key too */ ++ ret = HKDF(SHA, ikm1, 11, salt1, 13, info1, 10, okm1, L); ++ if (ret != 0) ++ return -2003; ++ ++ if (memcmp(okm1, res2, L) != 0) ++ return -2004; ++#endif /* HAVE_FIPS */ ++#endif /* NO_SHA */ ++ ++#ifndef NO_SHA256 ++ ret = HKDF(SHA256, ikm1, 22, NULL, 0, NULL, 0, okm1, L); ++ if (ret != 0) ++ return -2005; ++ ++ if (memcmp(okm1, res3, L) != 0) ++ return -2006; ++ ++#ifndef HAVE_FIPS ++ /* fips can't have key size under 14 bytes, salt is key too */ ++ ret = HKDF(SHA256, ikm1, 22, salt1, 13, info1, 10, okm1, L); ++ if (ret != 0) ++ return -2007; ++ ++ if (memcmp(okm1, res4, L) != 0) ++ return -2007; ++#endif /* HAVE_FIPS */ ++#endif /* NO_SHA256 */ ++ ++ return 0; ++} ++ ++#endif /* HAVE_HKDF */ ++ ++ ++#ifdef HAVE_ECC ++ ++int ecc_test(void) ++{ ++ RNG rng; ++ byte sharedA[1024]; ++ byte sharedB[1024]; ++ byte sig[1024]; ++ byte digest[20]; ++ byte exportBuf[1024]; ++ word32 x, y; ++ int i, verify, ret; ++ ecc_key userA, userB, pubKey; ++ ++ ret = InitRng(&rng); ++ if (ret != 0) ++ return -1001; ++ ++ ecc_init(&userA); ++ ecc_init(&userB); ++ ecc_init(&pubKey); ++ ++ ret = ecc_make_key(&rng, 32, &userA); ++ ++ if (ret != 0) ++ return -1014; ++ ++ ret = ecc_make_key(&rng, 32, &userB); ++ ++ if (ret != 0) ++ return -1002; ++ ++ x = sizeof(sharedA); ++ ret = ecc_shared_secret(&userA, &userB, sharedA, &x); ++ ++ if (ret != 0) ++ return -1015; ++ ++ y = sizeof(sharedB); ++ ret = ecc_shared_secret(&userB, &userA, sharedB, &y); ++ ++ if (ret != 0) ++ return -1003; ++ ++ if (y != x) ++ return -1004; ++ ++ if (memcmp(sharedA, sharedB, x)) ++ return -1005; ++ ++ x = sizeof(exportBuf); ++ ret = ecc_export_x963(&userA, exportBuf, &x); ++ if (ret != 0) ++ return -1006; ++ ++ ret = ecc_import_x963(exportBuf, x, &pubKey); ++ ++ if (ret != 0) ++ return -1007; ++ ++ y = sizeof(sharedB); ++ ret = ecc_shared_secret(&userB, &pubKey, sharedB, &y); ++ ++ if (ret != 0) ++ return -1008; ++ ++ if (memcmp(sharedA, sharedB, y)) ++ return -1010; ++ ++ /* test DSA sign hash */ ++ for (i = 0; i < (int)sizeof(digest); i++) ++ digest[i] = (byte)i; ++ ++ x = sizeof(sig); ++ ret = ecc_sign_hash(digest, sizeof(digest), sig, &x, &rng, &userA); ++ ++ if (ret != 0) ++ return -1016; ++ ++ verify = 0; ++ ret = ecc_verify_hash(sig, x, digest, sizeof(digest), &verify, &userA); ++ ++ if (ret != 0) ++ return -1011; ++ ++ if (verify != 1) ++ return -1012; ++ ++ x = sizeof(exportBuf); ++ ret = ecc_export_private_only(&userA, exportBuf, &x); ++ if (ret != 0) ++ return -1013; ++ ++ ecc_free(&pubKey); ++ ecc_free(&userB); ++ ecc_free(&userA); ++ ++ return 0; ++} ++ ++#ifdef HAVE_ECC_ENCRYPT ++ ++int ecc_encrypt_test(void) ++{ ++ RNG rng; ++ int ret; ++ ecc_key userA, userB; ++ byte msg[48]; ++ byte plain[48]; ++ byte out[80]; ++ word32 outSz = sizeof(out); ++ word32 plainSz = sizeof(plain); ++ int i; ++ ++ ret = InitRng(&rng); ++ if (ret != 0) ++ return -3001; ++ ++ ecc_init(&userA); ++ ecc_init(&userB); ++ ++ ret = ecc_make_key(&rng, 32, &userA); ++ ret += ecc_make_key(&rng, 32, &userB); ++ ++ if (ret != 0) ++ return -3002; ++ ++ for (i = 0; i < 48; i++) ++ msg[i] = i; ++ ++ /* encrypt msg to B */ ++ ret = ecc_encrypt(&userA, &userB, msg, sizeof(msg), out, &outSz, NULL); ++ if (ret != 0) ++ return -3003; ++ ++ /* decrypt msg from A */ ++ ret = ecc_decrypt(&userB, &userA, out, outSz, plain, &plainSz, NULL); ++ if (ret != 0) ++ return -3004; ++ ++ if (memcmp(plain, msg, sizeof(msg)) != 0) ++ return -3005; ++ ++ ++ { /* let's verify message exchange works, A is client, B is server */ ++ ecEncCtx* cliCtx = ecc_ctx_new(REQ_RESP_CLIENT, &rng); ++ ecEncCtx* srvCtx = ecc_ctx_new(REQ_RESP_SERVER, &rng); ++ ++ byte cliSalt[EXCHANGE_SALT_SZ]; ++ byte srvSalt[EXCHANGE_SALT_SZ]; ++ const byte* tmpSalt; ++ ++ if (cliCtx == NULL || srvCtx == NULL) ++ return -3006; ++ ++ /* get salt to send to peer */ ++ tmpSalt = ecc_ctx_get_own_salt(cliCtx); ++ if (tmpSalt == NULL) ++ return -3007; ++ memcpy(cliSalt, tmpSalt, EXCHANGE_SALT_SZ); ++ ++ tmpSalt = ecc_ctx_get_own_salt(srvCtx); ++ if (tmpSalt == NULL) ++ return -3007; ++ memcpy(srvSalt, tmpSalt, EXCHANGE_SALT_SZ); ++ ++ /* in actual use, we'd get the peer's salt over the transport */ ++ ret = ecc_ctx_set_peer_salt(cliCtx, srvSalt); ++ ret += ecc_ctx_set_peer_salt(srvCtx, cliSalt); ++ ++ ret += ecc_ctx_set_info(cliCtx, (byte*)"CyaSSL MSGE", 11); ++ ret += ecc_ctx_set_info(srvCtx, (byte*)"CyaSSL MSGE", 11); ++ ++ if (ret != 0) ++ return -3008; ++ ++ /* get encrypted msg (request) to send to B */ ++ outSz = sizeof(out); ++ ret = ecc_encrypt(&userA, &userB, msg, sizeof(msg), out, &outSz,cliCtx); ++ if (ret != 0) ++ return -3009; ++ ++ /* B decrypts msg (request) from A */ ++ plainSz = sizeof(plain); ++ ret = ecc_decrypt(&userB, &userA, out, outSz, plain, &plainSz, srvCtx); ++ if (ret != 0) ++ return -3010; ++ ++ if (memcmp(plain, msg, sizeof(msg)) != 0) ++ return -3011; ++ ++ { ++ /* msg2 (response) from B to A */ ++ byte msg2[48]; ++ byte plain2[48]; ++ byte out2[80]; ++ word32 outSz2 = sizeof(out2); ++ word32 plainSz2 = sizeof(plain2); ++ ++ for (i = 0; i < 48; i++) ++ msg2[i] = i+48; ++ ++ /* get encrypted msg (response) to send to B */ ++ ret = ecc_encrypt(&userB, &userA, msg2, sizeof(msg2), out2, ++ &outSz2, srvCtx); ++ if (ret != 0) ++ return -3012; ++ ++ /* A decrypts msg (response) from B */ ++ ret = ecc_decrypt(&userA, &userB, out2, outSz2, plain2, &plainSz2, ++ cliCtx); ++ if (ret != 0) ++ return -3013; ++ ++ if (memcmp(plain2, msg2, sizeof(msg2)) != 0) ++ return -3014; ++ } ++ ++ /* cleanup */ ++ ecc_ctx_free(srvCtx); ++ ecc_ctx_free(cliCtx); ++ } ++ ++ /* cleanup */ ++ ecc_free(&userB); ++ ecc_free(&userA); ++ ++ return 0; ++} ++ ++#endif /* HAVE_ECC_ENCRYPT */ ++#endif /* HAVE_ECC */ ++ ++#ifdef HAVE_LIBZ ++ ++const byte sample_text[] = ++ "Biodiesel cupidatat marfa, cliche aute put a bird on it incididunt elit\n" ++ "polaroid. Sunt tattooed bespoke reprehenderit. Sint twee organic id\n" ++ "marfa. Commodo veniam ad esse gastropub. 3 wolf moon sartorial vero,\n" ++ "plaid delectus biodiesel squid +1 vice. Post-ironic keffiyeh leggings\n" ++ "selfies cray fap hoodie, forage anim. Carles cupidatat shoreditch, VHS\n" ++ "small batch meggings kogi dolore food truck bespoke gastropub.\n" ++ "\n" ++ "Terry richardson adipisicing actually typewriter tumblr, twee whatever\n" ++ "four loko you probably haven't heard of them high life. Messenger bag\n" ++ "whatever tattooed deep v mlkshk. Brooklyn pinterest assumenda chillwave\n" ++ "et, banksy ullamco messenger bag umami pariatur direct trade forage.\n" ++ "Typewriter culpa try-hard, pariatur sint brooklyn meggings. Gentrify\n" ++ "food truck next level, tousled irony non semiotics PBR ethical anim cred\n" ++ "readymade. Mumblecore brunch lomo odd future, portland organic terry\n" ++ "richardson elit leggings adipisicing ennui raw denim banjo hella. Godard\n" ++ "mixtape polaroid, pork belly readymade organic cray typewriter helvetica\n" ++ "four loko whatever street art yr farm-to-table.\n" ++ "\n" ++ "Vinyl keytar vice tofu. Locavore you probably haven't heard of them pug\n" ++ "pickled, hella tonx labore truffaut DIY mlkshk elit cosby sweater sint\n" ++ "et mumblecore. Elit swag semiotics, reprehenderit DIY sartorial nisi ugh\n" ++ "nesciunt pug pork belly wayfarers selfies delectus. Ethical hoodie\n" ++ "seitan fingerstache kale chips. Terry richardson artisan williamsburg,\n" ++ "eiusmod fanny pack irony tonx ennui lo-fi incididunt tofu YOLO\n" ++ "readymade. 8-bit sed ethnic beard officia. Pour-over iphone DIY butcher,\n" ++ "ethnic art party qui letterpress nisi proident jean shorts mlkshk\n" ++ "locavore.\n" ++ "\n" ++ "Narwhal flexitarian letterpress, do gluten-free voluptate next level\n" ++ "banh mi tonx incididunt carles DIY. Odd future nulla 8-bit beard ut\n" ++ "cillum pickled velit, YOLO officia you probably haven't heard of them\n" ++ "trust fund gastropub. Nisi adipisicing tattooed, Austin mlkshk 90's\n" ++ "small batch american apparel. Put a bird on it cosby sweater before they\n" ++ "sold out pork belly kogi hella. Street art mollit sustainable polaroid,\n" ++ "DIY ethnic ea pug beard dreamcatcher cosby sweater magna scenester nisi.\n" ++ "Sed pork belly skateboard mollit, labore proident eiusmod. Sriracha\n" ++ "excepteur cosby sweater, anim deserunt laborum eu aliquip ethical et\n" ++ "neutra PBR selvage.\n" ++ "\n" ++ "Raw denim pork belly truffaut, irony plaid sustainable put a bird on it\n" ++ "next level jean shorts exercitation. Hashtag keytar whatever, nihil\n" ++ "authentic aliquip disrupt laborum. Tattooed selfies deserunt trust fund\n" ++ "wayfarers. 3 wolf moon synth church-key sartorial, gastropub leggings\n" ++ "tattooed. Labore high life commodo, meggings raw denim fingerstache pug\n" ++ "trust fund leggings seitan forage. Nostrud ullamco duis, reprehenderit\n" ++ "incididunt flannel sustainable helvetica pork belly pug banksy you\n" ++ "probably haven't heard of them nesciunt farm-to-table. Disrupt nostrud\n" ++ "mollit magna, sriracha sartorial helvetica.\n" ++ "\n" ++ "Nulla kogi reprehenderit, skateboard sustainable duis adipisicing viral\n" ++ "ad fanny pack salvia. Fanny pack trust fund you probably haven't heard\n" ++ "of them YOLO vice nihil. Keffiyeh cray lo-fi pinterest cardigan aliqua,\n" ++ "reprehenderit aute. Culpa tousled williamsburg, marfa lomo actually anim\n" ++ "skateboard. Iphone aliqua ugh, semiotics pariatur vero readymade\n" ++ "organic. Marfa squid nulla, in laborum disrupt laboris irure gastropub.\n" ++ "Veniam sunt food truck leggings, sint vinyl fap.\n" ++ "\n" ++ "Hella dolore pork belly, truffaut carles you probably haven't heard of\n" ++ "them PBR helvetica in sapiente. Fashion axe ugh bushwick american\n" ++ "apparel. Fingerstache sed iphone, jean shorts blue bottle nisi bushwick\n" ++ "flexitarian officia veniam plaid bespoke fap YOLO lo-fi. Blog\n" ++ "letterpress mumblecore, food truck id cray brooklyn cillum ad sed.\n" ++ "Assumenda chambray wayfarers vinyl mixtape sustainable. VHS vinyl\n" ++ "delectus, culpa williamsburg polaroid cliche swag church-key synth kogi\n" ++ "magna pop-up literally. Swag thundercats ennui shoreditch vegan\n" ++ "pitchfork neutra truffaut etsy, sed single-origin coffee craft beer.\n" ++ "\n" ++ "Odio letterpress brooklyn elit. Nulla single-origin coffee in occaecat\n" ++ "meggings. Irony meggings 8-bit, chillwave lo-fi adipisicing cred\n" ++ "dreamcatcher veniam. Put a bird on it irony umami, trust fund bushwick\n" ++ "locavore kale chips. Sriracha swag thundercats, chillwave disrupt\n" ++ "tousled beard mollit mustache leggings portland next level. Nihil esse\n" ++ "est, skateboard art party etsy thundercats sed dreamcatcher ut iphone\n" ++ "swag consectetur et. Irure skateboard banjo, nulla deserunt messenger\n" ++ "bag dolor terry richardson sapiente.\n"; ++ ++ ++int compress_test(void) ++{ ++ int ret = 0; ++ word32 dSz = sizeof(sample_text); ++ word32 cSz = (dSz + (word32)(dSz * 0.001) + 12); ++ byte *c = NULL; ++ byte *d = NULL; ++ ++ c = calloc(cSz, sizeof(byte)); ++ d = calloc(dSz, sizeof(byte)); ++ ++ if (c == NULL || d == NULL) ++ ret = -300; ++ ++ if (ret == 0 && (ret = Compress(c, cSz, sample_text, dSz, 0)) < 0) ++ ret = -301; ++ ++ if (ret > 0) { ++ cSz = (word32)ret; ++ ret = 0; ++ } ++ ++ if (ret == 0 && DeCompress(d, dSz, c, cSz) != (int)dSz) ++ ret = -302; ++ ++ if (ret == 0 && memcmp(d, sample_text, dSz)) ++ ret = -303; ++ ++ if (c) free(c); ++ if (d) free(d); ++ ++ return ret; ++} ++ ++#endif /* HAVE_LIBZ */ ++ ++#ifdef HAVE_PKCS7 ++ ++int pkcs7enveloped_test(void) ++{ ++ int ret = 0; ++ ++ int cipher = DES3b; ++ int envelopedSz, decodedSz; ++ PKCS7 pkcs7; ++ byte* cert; ++ byte* privKey; ++ byte enveloped[2048]; ++ byte decoded[2048]; ++ ++ size_t certSz; ++ size_t privKeySz; ++ FILE* certFile; ++ FILE* keyFile; ++ FILE* pkcs7File; ++ const char* pkcs7OutFile = "pkcs7envelopedData.der"; ++ ++ const byte data[] = { /* Hello World */ ++ 0x48,0x65,0x6c,0x6c,0x6f,0x20,0x57,0x6f, ++ 0x72,0x6c,0x64 ++ }; ++ ++ /* read client cert and key in DER format */ ++ cert = (byte*)malloc(FOURK_BUF); ++ if (cert == NULL) ++ return -201; ++ ++ privKey = (byte*)malloc(FOURK_BUF); ++ if (privKey == NULL) { ++ free(cert); ++ return -202; ++ } ++ ++ certFile = fopen(clientCert, "rb"); ++ if (!certFile) { ++ free(cert); ++ free(privKey); ++ err_sys("can't open ./certs/client-cert.der, " ++ "Please run from CyaSSL home dir", -42); ++ } ++ ++ certSz = fread(cert, 1, FOURK_BUF, certFile); ++ fclose(certFile); ++ ++ keyFile = fopen(clientKey, "rb"); ++ if (!keyFile) { ++ free(cert); ++ free(privKey); ++ err_sys("can't open ./certs/client-key.der, " ++ "Please run from CyaSSL home dir", -43); ++ } ++ ++ privKeySz = fread(privKey, 1, FOURK_BUF, keyFile); ++ fclose(keyFile); ++ ++ PKCS7_InitWithCert(&pkcs7, cert, (word32)certSz); ++ pkcs7.content = (byte*)data; ++ pkcs7.contentSz = (word32)sizeof(data); ++ pkcs7.contentOID = DATA; ++ pkcs7.encryptOID = cipher; ++ pkcs7.privateKey = privKey; ++ pkcs7.privateKeySz = (word32)privKeySz; ++ ++ /* encode envelopedData */ ++ envelopedSz = PKCS7_EncodeEnvelopedData(&pkcs7, enveloped, ++ sizeof(enveloped)); ++ if (envelopedSz <= 0) { ++ free(cert); ++ free(privKey); ++ return -203; ++ } ++ ++ /* decode envelopedData */ ++ decodedSz = PKCS7_DecodeEnvelopedData(&pkcs7, enveloped, envelopedSz, ++ decoded, sizeof(decoded)); ++ if (decodedSz <= 0) { ++ free(cert); ++ free(privKey); ++ return -204; ++ } ++ ++ /* test decode result */ ++ if (memcmp(decoded, data, sizeof(data)) != 0) { ++ free(cert); ++ free(privKey); ++ return -205; ++ } ++ ++ /* output pkcs7 envelopedData for external testing */ ++ pkcs7File = fopen(pkcs7OutFile, "wb"); ++ if (!pkcs7File) { ++ free(cert); ++ free(privKey); ++ return -206; ++ } ++ ++ ret = (int)fwrite(enveloped, envelopedSz, 1, pkcs7File); ++ fclose(pkcs7File); ++ ++ free(cert); ++ free(privKey); ++ PKCS7_Free(&pkcs7); ++ ++ if (ret > 0) ++ return 0; ++ ++ return ret; ++} ++ ++int pkcs7signed_test(void) ++{ ++ int ret = 0; ++ ++ FILE* file; ++ byte* certDer; ++ byte* keyDer; ++ byte* out; ++ char data[] = "Hello World"; ++ word32 dataSz, outSz, certDerSz, keyDerSz; ++ PKCS7 msg; ++ RNG rng; ++ ++ byte transIdOid[] = ++ { 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xF8, 0x45, 0x01, ++ 0x09, 0x07 }; ++ byte messageTypeOid[] = ++ { 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xF8, 0x45, 0x01, ++ 0x09, 0x02 }; ++ byte senderNonceOid[] = ++ { 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xF8, 0x45, 0x01, ++ 0x09, 0x05 }; ++ byte transId[(SHA_DIGEST_SIZE + 1) * 2 + 1]; ++ byte messageType[] = { 0x13, 2, '1', '9' }; ++ byte senderNonce[PKCS7_NONCE_SZ + 2]; ++ ++ PKCS7Attrib attribs[] = ++ { ++ { transIdOid, sizeof(transIdOid), ++ transId, sizeof(transId) - 1 }, /* take off the null */ ++ { messageTypeOid, sizeof(messageTypeOid), ++ messageType, sizeof(messageType) }, ++ { senderNonceOid, sizeof(senderNonceOid), ++ senderNonce, sizeof(senderNonce) } ++ }; ++ ++ dataSz = (word32) strlen(data); ++ outSz = FOURK_BUF; ++ ++ certDer = (byte*)malloc(FOURK_BUF); ++ if (certDer == NULL) ++ return -207; ++ keyDer = (byte*)malloc(FOURK_BUF); ++ if (keyDer == NULL) { ++ free(certDer); ++ return -208; ++ } ++ out = (byte*)malloc(FOURK_BUF); ++ if (out == NULL) { ++ free(certDer); ++ free(keyDer); ++ return -209; ++ } ++ ++ /* read in DER cert of recipient, into cert of size certSz */ ++ file = fopen(clientCert, "rb"); ++ if (!file) { ++ free(certDer); ++ free(keyDer); ++ free(out); ++ err_sys("can't open ./certs/client-cert.der, " ++ "Please run from CyaSSL home dir", -44); ++ } ++ certDerSz = (word32)fread(certDer, 1, FOURK_BUF, file); ++ fclose(file); ++ ++ file = fopen(clientKey, "rb"); ++ if (!file) { ++ free(certDer); ++ free(keyDer); ++ free(out); ++ err_sys("can't open ./certs/client-key.der, " ++ "Please run from CyaSSL home dir", -45); ++ } ++ keyDerSz = (word32)fread(keyDer, 1, FOURK_BUF, file); ++ fclose(file); ++ ++ ret = InitRng(&rng); ++ if (ret != 0) { ++ free(certDer); ++ free(keyDer); ++ free(out); ++ return -210; ++ } ++ ++ senderNonce[0] = 0x04; ++ senderNonce[1] = PKCS7_NONCE_SZ; ++ ++ ret = RNG_GenerateBlock(&rng, &senderNonce[2], PKCS7_NONCE_SZ); ++ if (ret != 0) { ++ free(certDer); ++ free(keyDer); ++ free(out); ++ return -211; ++ } ++ ++ PKCS7_InitWithCert(&msg, certDer, certDerSz); ++ msg.privateKey = keyDer; ++ msg.privateKeySz = keyDerSz; ++ msg.content = (byte*)data; ++ msg.contentSz = dataSz; ++ msg.hashOID = SHAh; ++ msg.encryptOID = RSAk; ++ msg.signedAttribs = attribs; ++ msg.signedAttribsSz = sizeof(attribs)/sizeof(PKCS7Attrib); ++ msg.rng = &rng; ++ { ++ Sha sha; ++ byte digest[SHA_DIGEST_SIZE]; ++ int i,j; ++ ++ transId[0] = 0x13; ++ transId[1] = SHA_DIGEST_SIZE * 2; ++ ++ ret = InitSha(&sha); ++ if (ret != 0) { ++ free(certDer); ++ free(keyDer); ++ free(out); ++ return -4003; ++ } ++ ShaUpdate(&sha, msg.publicKey, msg.publicKeySz); ++ ShaFinal(&sha, digest); ++ ++ for (i = 0, j = 2; i < SHA_DIGEST_SIZE; i++, j += 2) { ++ snprintf((char*)&transId[j], 3, "%02x", digest[i]); ++ } ++ } ++ ret = PKCS7_EncodeSignedData(&msg, out, outSz); ++ if (ret < 0) { ++ free(certDer); ++ free(keyDer); ++ free(out); ++ PKCS7_Free(&msg); ++ return -212; ++ } ++ else ++ outSz = ret; ++ ++ /* write PKCS#7 to output file for more testing */ ++ file = fopen("./pkcs7signedData.der", "wb"); ++ if (!file) { ++ free(certDer); ++ free(keyDer); ++ free(out); ++ PKCS7_Free(&msg); ++ return -213; ++ } ++ ret = (int)fwrite(out, 1, outSz, file); ++ fclose(file); ++ if (ret != (int)outSz) { ++ free(certDer); ++ free(keyDer); ++ free(out); ++ PKCS7_Free(&msg); ++ return -218; ++ } ++ ++ PKCS7_Free(&msg); ++ PKCS7_InitWithCert(&msg, NULL, 0); ++ ++ ret = PKCS7_VerifySignedData(&msg, out, outSz); ++ if (ret < 0) { ++ free(certDer); ++ free(keyDer); ++ free(out); ++ PKCS7_Free(&msg); ++ return -214; ++ } ++ ++ if (msg.singleCert == NULL || msg.singleCertSz == 0) { ++ free(certDer); ++ free(keyDer); ++ free(out); ++ PKCS7_Free(&msg); ++ return -215; ++ } ++ ++ file = fopen("./pkcs7cert.der", "wb"); ++ if (!file) { ++ free(certDer); ++ free(keyDer); ++ free(out); ++ PKCS7_Free(&msg); ++ return -216; ++ } ++ ret = (int)fwrite(msg.singleCert, 1, msg.singleCertSz, file); ++ fclose(file); ++ ++ free(certDer); ++ free(keyDer); ++ free(out); ++ PKCS7_Free(&msg); ++ ++ if (ret > 0) ++ return 0; ++ ++ return ret; ++} ++ ++#endif /* HAVE_PKCS7 */ ++ ++#endif /* NO_CRYPT_TEST */ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/time-dummy.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/time-dummy.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/time-dummy.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CryptTest/time-dummy.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,34 @@ ++/* time-dummy.c.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include "time.h" ++ ++struct tm *Cyassl_MDK_gmtime(const time_t *c) ++{ ++ static struct tm date ; ++ return(&date) ; ++} ++ ++time_t time(time_t * t) { return 0 ; } +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/Abstract.txt mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/Abstract.txt +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/Abstract.txt 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/Abstract.txt 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,85 @@ ++This program gives wolfCrypt and CyaSSL library demo. ++ ++In order to run the demo, ++Copy {PACK}\wolfSSL\CyaSSL\{version}\cyassl\certs folder and files to the SD memory. ++For demo configuration, refer config-Crypt.h and config-CyaSSL.h. ++ ++After download and start the execution, you can type in commands through the ++Debug(printf) viewer. ++ ++test wolfCrypt Simple test suite ++benchmark wolfCrypt Simple benchmark ++server& simple server in background mode ++client simple client ++echoserver& echo server in background mode ++echoclient echo client ++server/client -h help for server/client command ++ ++ ++=== Typical Command Usage Scenario === ++ ++Starting Shell ++>test ++MD5 test passed! ++MD4 test passed! ++SHA test passed! ++... ++ ++>benchmark ++AES 25 kB took 0.025 seconds, 0.96 MB/s ++ARC4 25 kB took 0.006 seconds, 3.83 MB/s ++... ++ ++DH 2048 key agreement 685.93 milliseconds, avg over 1 iterations ++ ++>echoserver& ++"echoserver" is running with the background mode. ++ ++>echoclient ++ABCDEFG ++ABCDEFG ++WXYZ ++WXYZ ++quit ++sending server shutdown command: quit! ++client sent quit command: shutting down! ++ ++>server& ++"server" is running with the background mode. ++ ++>client ++peer's cert info: ++ issuer : /C=... ++ subject: /C=... ++ serial number:02 ++SSL version is TLSv1.2 ++SSL cipher suite is TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 ++peer's cert info: ++ issuer : /C=... ++ subject: /C=... ++ serial number:... ++SSL version is TLSv1.2 ++SSL cipher suite is TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 ++Client message: hello cyassl! ++Server response: I hear you fa shizzle! ++ ++>client -h 192.168.2.100 -p 443 -g -v 0 ++peer's cert info: ++ issuer : /CN=... ++ subject: /CN=... ++ serial number:44:39:... ++SSL version is SSLv3 ++SSL cipher suite is SSL_RSA_WITH_RC4_128_SHA ++SSL connect ok, sending GET... ++... ++=== ++ ++For the hardware crypt on config-Crypt.h, download ++STSW-STM32062: STM32F2xx standard peripherals library at ++http://www.st.com/. Copy Libraries\STM32F2xx_StdPeriph_Driver\{inc,src} to ++ {PACK}\cyassl\IDE\MDK5-ARM\STM32F2xx_StdPeriph_Lib ++ ++ ++Support ++------- ++Please send questions or comments to support@wolfssl.com +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/CyaSSL-Full.uvoptx mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/CyaSSL-Full.uvoptx +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/CyaSSL-Full.uvoptx 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/CyaSSL-Full.uvoptx 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,1366 @@ ++ ++ ++ ++ 1.0 ++ ++
### uVision Project, (C) Keil Software
++ ++ ++ *.c ++ *.s*; *.src; *.a* ++ *.obj ++ *.lib ++ *.txt; *.h; *.inc ++ *.plm ++ *.cpp ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ CyaSSL-Full ++ 0x4 ++ ARM-ADS ++ ++ 25000000 ++ ++ 1 ++ 1 ++ 0 ++ 1 ++ ++ ++ 1 ++ 65535 ++ 0 ++ 0 ++ 0 ++ ++ ++ 79 ++ 66 ++ 8 ++ .\Object\ ++ ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ ++ ++ 1 ++ 0 ++ 1 ++ ++ 255 ++ ++ ++ 0 ++ Schematics (MCBSTM32F200) ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\Documents\mcbstm32f200-schematics.pdf ++ ++ ++ 1 ++ User Manual (MCBSTM32F200) ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\Documents\mcbstm32f200.chm ++ ++ ++ 2 ++ MCBSTM32F200 Evaluation Board Web Page (MCBSTM32F200) ++ http://www.keil.com/mcbstm32f200/ ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 8 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ .\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ 0 ++ DLGUARM ++ ++ ++ ++ 0 ++ DLGTARM ++ (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) ++ ++ ++ 0 ++ ARMDBGFLAGS ++ ++ ++ ++ 0 ++ ULP2CM3 ++ -UP1135060 -O206 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO19 -TC120000000 -TP18 -TDX0 -TDD0 -TDS8000 -TDT0 -TDC1F -TIE1 -TIP1 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024.flm -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm) ++ ++ ++ 0 ++ UL2CM3 ++ UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32F2xx_1024 -FL0100000 -FS08000000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm) ++ ++ ++ ++ ++ ++ 0 ++ 1 ++ str[i] ++ ++ ++ 1 ++ 1 ++ str ++ ++ ++ ++ ++ 1 ++ 3 ++ 0x20003d9e ++ ++ ++ ++ ++ 2 ++ 8 ++ 0x8004dc8 ++ ++ ++ ++ 0 ++ ++ ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 2 ++ 0 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ Source ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\benchmark.c ++ benchmark.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 2 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\client.c ++ client.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 3 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\echoclient.c ++ echoclient.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 4 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\echoserver.c ++ echoserver.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 5 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\server.c ++ server.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 6 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\cert_data.c ++ cert_data.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 7 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\test.c ++ test.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 8 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\main.c ++ main.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 9 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\shell.c ++ shell.c ++ 0 ++ 0 ++ ++ ++ ++ ++ Configuration ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 2 ++ 10 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\wolfSSL\config-CyaSSL.h ++ config-CyaSSL.h ++ 0 ++ 0 ++ ++ ++ 2 ++ 11 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\wolfSSL\config-Crypt.h ++ config-Crypt.h ++ 0 ++ 0 ++ ++ ++ 2 ++ 12 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\wolfSSL\settings.h ++ settings.h ++ 0 ++ 0 ++ ++ ++ 2 ++ 13 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\Network\Net_Config_ETH_0.h ++ Net_Config_ETH_0.h ++ 0 ++ 0 ++ ++ ++ ++ ++ Documentation ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 3 ++ 14 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\Abstract.txt ++ Abstract.txt ++ 0 ++ 0 ++ ++ ++ ++ ++ Devices ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 4 ++ 15 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\time-CortexM3-4.c ++ time-CortexM3-4.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 16 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\time-dummy.c ++ time-dummy.c ++ 0 ++ 0 ++ ++ ++ ++ ++ ::CMSIS ++ 1 ++ 0 ++ 0 ++ 1 ++ ++ 5 ++ 17 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\CMSIS\RTX_Conf_CM.c ++ RTX_Conf_CM.c ++ 1 ++ 0 ++ ++ ++ 5 ++ 18 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.4\CMSIS_RTX\Lib\ARM\RTX_CM3.lib ++ RTX_CM3.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Device ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 6 ++ 19 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\RTE_Device.h ++ RTE_Device.h ++ 1 ++ 0 ++ ++ ++ 6 ++ 20 ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ startup_stm32f2xx.s ++ 1 ++ 0 ++ ++ ++ 6 ++ 21 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ system_stm32f2xx.c ++ 1 ++ 0 ++ ++ ++ 6 ++ 22 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\DMA_STM32F2xx.c ++ DMA_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 6 ++ 23 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\GPIO_STM32F2xx.c ++ GPIO_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Drivers ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 7 ++ 24 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\EMAC_STM32F2xx.c ++ EMAC_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 7 ++ 25 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\MCI_STM32F2xx.c ++ MCI_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 7 ++ 26 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Driver\PHY_ST802RT1.c ++ PHY_ST802RT1.c ++ 1 ++ 0 ++ ++ ++ ++ ++ ::File System ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 8 ++ 27 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\File_System\FS_Config.c ++ FS_Config.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 28 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\File_System\FS_Config_MC_0.h ++ FS_Config_MC_0.h ++ 1 ++ 0 ++ ++ ++ 8 ++ 29 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\FileSystem\Lib\ARM\FS_LFN_CM3_L.lib ++ FS_LFN_CM3_L.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Network ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 9 ++ 30 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config.c ++ Net_Config.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 31 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_BSD.h ++ Net_Config_BSD.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 32 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_DNS_Client.h ++ Net_Config_DNS_Client.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 33 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_ETH_0.h ++ Net_Config_ETH_0.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 34 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_TCP.h ++ Net_Config_TCP.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 35 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_UDP.h ++ Net_Config_UDP.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 36 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Debug.c ++ Net_Debug.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 37 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Lib\ARM\Net_Dbg_CM3_L.lib ++ Net_Dbg_CM3_L.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::wolfSSL ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 10 ++ 38 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\config-Crypt.h ++ config-Crypt.h ++ 1 ++ 0 ++ ++ ++ 10 ++ 39 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\config-CyaSSL.h ++ config-CyaSSL.h ++ 1 ++ 0 ++ ++ ++ 10 ++ 40 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\settings.h ++ settings.h ++ 1 ++ 0 ++ ++ ++ 10 ++ 41 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\cyassl_MDK_ARM.c ++ cyassl_MDK_ARM.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 42 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\aes.c ++ aes.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 43 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\arc4.c ++ arc4.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 44 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asm.c ++ asm.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 45 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asn.c ++ asn.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 46 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\blake2b.c ++ blake2b.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 47 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\camellia.c ++ camellia.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 48 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\coding.c ++ coding.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 49 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\compress.c ++ compress.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 50 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\des3.c ++ des3.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 51 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dh.c ++ dh.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 52 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dsa.c ++ dsa.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 53 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc.c ++ ecc.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 54 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc_fp.c ++ ecc_fp.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 55 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\error.c ++ error.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 56 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hc128.c ++ hc128.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 57 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hmac.c ++ hmac.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 58 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\integer.c ++ integer.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 59 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\logging.c ++ logging.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 60 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md2.c ++ md2.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 61 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md4.c ++ md4.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 62 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md5.c ++ md5.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 63 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\memory.c ++ memory.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 64 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\misc.c ++ misc.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 65 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\pwdbased.c ++ pwdbased.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 66 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rabbit.c ++ rabbit.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 67 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\random.c ++ random.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 68 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ripemd.c ++ ripemd.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 69 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rsa.c ++ rsa.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 70 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha.c ++ sha.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 71 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha256.c ++ sha256.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 72 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha512.c ++ sha512.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 73 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\tfm.c ++ tfm.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 74 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\wc_port.c ++ wc_port.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 75 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\crl.c ++ crl.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 76 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\internal.c ++ internal.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 77 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\io.c ++ io.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 78 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\keys.c ++ keys.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 79 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ocsp.c ++ ocsp.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 80 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\sniffer.c ++ sniffer.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 81 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ssl.c ++ ssl.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 82 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\tls.c ++ tls.c ++ 1 ++ 0 ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/CyaSSL-Full.uvprojx mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/CyaSSL-Full.uvprojx +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/CyaSSL-Full.uvprojx 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/CyaSSL-Full.uvprojx 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,1185 @@ ++ ++ ++ ++ 2.1 ++ ++
### uVision Project, (C) Keil Software
++ ++ ++ ++ CyaSSL-Full ++ 0x4 ++ ARM-ADS ++ ++ ++ STM32F207IG ++ STMicroelectronics ++ IRAM(0x20000000,0x20000) IROM(0x08000000,0x100000) CPUTYPE("Cortex-M3") CLOCK(120000000) ELITTLE ++ ++ ++ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm)) ++ 0 ++ $$Device:STM32F207IG$Device\Include\stm32f2xx.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ $$Device:STM32F207IG$SVD\STM32F20x.svd ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ .\Object\ ++ CyaSSL-Full ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ .\Object\ ++ 1 ++ 0 ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ 0 ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 3 ++ ++ ++ 1 ++ ++ ++ SARMCM3.DLL ++ -REMAP -MPU ++ DCM.DLL ++ -pCM3 ++ SARMCM3.DLL ++ -REMAP -MPU ++ TCM.DLL ++ -pCM3 ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 16 ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ ++ 0 ++ 8 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ .\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 4100 ++ ++ 0 ++ BIN\ULP2CM3.DLL ++ "" () ++ ++ ++ ++ ++ 0 ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ "Cortex-M3" ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 8 ++ 0 ++ 0 ++ 0 ++ 3 ++ 3 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ ++ ++ ++ 1 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ HAVE_CONFIG_H MDK_CONF_CYASSL ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0x08000000 ++ 0x20000000 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Source ++ ++ ++ benchmark.c ++ 1 ++ .\benchmark.c ++ ++ ++ client.c ++ 1 ++ .\client.c ++ ++ ++ echoclient.c ++ 1 ++ .\echoclient.c ++ ++ ++ echoserver.c ++ 1 ++ .\echoserver.c ++ ++ ++ server.c ++ 1 ++ .\server.c ++ ++ ++ cert_data.c ++ 1 ++ .\cert_data.c ++ ++ ++ test.c ++ 1 ++ .\test.c ++ ++ ++ main.c ++ 1 ++ .\main.c ++ ++ ++ shell.c ++ 1 ++ .\shell.c ++ ++ ++ ++ ++ Configuration ++ ++ ++ config-CyaSSL.h ++ 5 ++ .\RTE\wolfSSL\config-CyaSSL.h ++ ++ ++ config-Crypt.h ++ 5 ++ .\RTE\wolfSSL\config-Crypt.h ++ ++ ++ settings.h ++ 5 ++ .\RTE\wolfSSL\settings.h ++ ++ ++ Net_Config_ETH_0.h ++ 5 ++ .\RTE\Network\Net_Config_ETH_0.h ++ ++ ++ ++ ++ Documentation ++ ++ ++ Abstract.txt ++ 5 ++ .\Abstract.txt ++ ++ ++ ++ ++ Devices ++ ++ ++ time-CortexM3-4.c ++ 1 ++ .\time-CortexM3-4.c ++ ++ ++ time-dummy.c ++ 1 ++ .\time-dummy.c ++ ++ ++ ++ ++ ::CMSIS ++ ++ ++ RTX_Conf_CM.c ++ 1 ++ RTE\CMSIS\RTX_Conf_CM.c ++ ++ ++ RTX_CM3.lib ++ 4 ++ C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.4\CMSIS_RTX\Lib\ARM\RTX_CM3.lib ++ ++ ++ ++ ++ ::Device ++ ++ ++ RTE_Device.h ++ 5 ++ RTE\Device\STM32F207IG\RTE_Device.h ++ ++ ++ startup_stm32f2xx.s ++ 2 ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ ++ ++ system_stm32f2xx.c ++ 1 ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ ++ ++ DMA_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\DMA_STM32F2xx.c ++ ++ ++ GPIO_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\GPIO_STM32F2xx.c ++ ++ ++ ++ ++ ::Drivers ++ ++ ++ EMAC_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\EMAC_STM32F2xx.c ++ ++ ++ MCI_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\MCI_STM32F2xx.c ++ ++ ++ PHY_ST802RT1.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Driver\PHY_ST802RT1.c ++ ++ ++ ++ ++ ::File System ++ ++ ++ FS_Config.c ++ 1 ++ RTE\File_System\FS_Config.c ++ ++ ++ FS_Config_MC_0.h ++ 5 ++ RTE\File_System\FS_Config_MC_0.h ++ ++ ++ FS_LFN_CM3_L.lib ++ 4 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\FileSystem\Lib\ARM\FS_LFN_CM3_L.lib ++ ++ ++ ++ ++ ::Network ++ ++ ++ Net_Config.c ++ 1 ++ RTE\Network\Net_Config.c ++ ++ ++ Net_Config_BSD.h ++ 5 ++ RTE\Network\Net_Config_BSD.h ++ ++ ++ Net_Config_DNS_Client.h ++ 5 ++ RTE\Network\Net_Config_DNS_Client.h ++ ++ ++ Net_Config_ETH_0.h ++ 5 ++ RTE\Network\Net_Config_ETH_0.h ++ ++ ++ Net_Config_TCP.h ++ 5 ++ RTE\Network\Net_Config_TCP.h ++ ++ ++ Net_Config_UDP.h ++ 5 ++ RTE\Network\Net_Config_UDP.h ++ ++ ++ Net_Debug.c ++ 1 ++ RTE\Network\Net_Debug.c ++ ++ ++ Net_Dbg_CM3_L.lib ++ 4 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Lib\ARM\Net_Dbg_CM3_L.lib ++ ++ ++ ++ ++ ::wolfSSL ++ ++ ++ config-Crypt.h ++ 5 ++ RTE\wolfSSL\config-Crypt.h ++ ++ ++ config-CyaSSL.h ++ 5 ++ RTE\wolfSSL\config-CyaSSL.h ++ ++ ++ settings.h ++ 5 ++ RTE\wolfSSL\settings.h ++ ++ ++ cyassl_MDK_ARM.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\cyassl_MDK_ARM.c ++ ++ ++ aes.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\aes.c ++ ++ ++ arc4.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\arc4.c ++ ++ ++ asm.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asm.c ++ ++ ++ asn.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asn.c ++ ++ ++ blake2b.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\blake2b.c ++ ++ ++ camellia.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\camellia.c ++ ++ ++ coding.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\coding.c ++ ++ ++ compress.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\compress.c ++ ++ ++ des3.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\des3.c ++ ++ ++ dh.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dh.c ++ ++ ++ dsa.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dsa.c ++ ++ ++ ecc.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc.c ++ ++ ++ ecc_fp.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc_fp.c ++ ++ ++ error.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\error.c ++ ++ ++ hc128.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hc128.c ++ ++ ++ hmac.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hmac.c ++ ++ ++ integer.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\integer.c ++ ++ ++ logging.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\logging.c ++ ++ ++ md2.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md2.c ++ ++ ++ md4.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md4.c ++ ++ ++ md5.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md5.c ++ ++ ++ memory.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\memory.c ++ ++ ++ misc.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\misc.c ++ ++ ++ pwdbased.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\pwdbased.c ++ ++ ++ rabbit.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rabbit.c ++ ++ ++ random.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\random.c ++ ++ ++ ripemd.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ripemd.c ++ ++ ++ rsa.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rsa.c ++ ++ ++ sha.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha.c ++ ++ ++ sha256.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha256.c ++ ++ ++ sha512.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha512.c ++ ++ ++ tfm.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\tfm.c ++ ++ ++ wc_port.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\wc_port.c ++ ++ ++ crl.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\crl.c ++ ++ ++ internal.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\internal.c ++ ++ ++ io.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\io.c ++ ++ ++ keys.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\keys.c ++ ++ ++ ocsp.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ocsp.c ++ ++ ++ sniffer.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\sniffer.c ++ ++ ++ ssl.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ssl.c ++ ++ ++ tls.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\tls.c ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ RTE\CMSIS\RTX_Conf_CM.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\RTE_Device.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\File_System\FS_Config.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\File_System\FS_Config_MC_0.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_BSD.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_DNS_Client.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_ETH_0.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_TCP.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_UDP.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Debug.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Other\config-RTX-TCP-FS.h ++ ++ ++ ++ ++ ++ RTE\Other\config.h ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config-Crypt.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config-CyaSSL.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config.h ++ ++ ++ ++ ++ ++ RTE\wolfSSL\settings.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/RTE/wolfSSL/settings.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/RTE/wolfSSL/settings.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/RTE/wolfSSL/settings.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/RTE/wolfSSL/settings.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,667 @@ ++/* settings.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++/* Place OS specific preprocessor flags, defines, includes here, will be ++ included into every file because types.h includes it */ ++ ++ ++#ifndef CTAO_CRYPT_SETTINGS_H ++#define CTAO_CRYPT_SETTINGS_H ++ ++#ifdef __cplusplus ++ extern "C" { ++#endif ++ ++/* Uncomment next line if using IPHONE */ ++/* #define IPHONE */ ++ ++/* Uncomment next line if using ThreadX */ ++/* #define THREADX */ ++ ++/* Uncomment next line if using Micrium ucOS */ ++/* #define MICRIUM */ ++ ++/* Uncomment next line if using Mbed */ ++/* #define MBED */ ++ ++/* Uncomment next line if using Microchip PIC32 ethernet starter kit */ ++/* #define MICROCHIP_PIC32 */ ++ ++/* Uncomment next line if using Microchip TCP/IP stack, version 5 */ ++/* #define MICROCHIP_TCPIP_V5 */ ++ ++/* Uncomment next line if using Microchip TCP/IP stack, version 6 or later */ ++/* #define MICROCHIP_TCPIP */ ++ ++/* Uncomment next line if using PIC32MZ Crypto Engine */ ++/* #define CYASSL_MICROCHIP_PIC32MZ */ ++ ++/* Uncomment next line if using FreeRTOS */ ++/* #define FREERTOS */ ++ ++/* Uncomment next line if using FreeRTOS Windows Simulator */ ++/* #define FREERTOS_WINSIM */ ++ ++/* Uncomment next line if using RTIP */ ++/* #define EBSNET */ ++ ++/* Uncomment next line if using lwip */ ++/* #define CYASSL_LWIP */ ++ ++/* Uncomment next line if building CyaSSL for a game console */ ++/* #define CYASSL_GAME_BUILD */ ++ ++/* Uncomment next line if building CyaSSL for LSR */ ++/* #define CYASSL_LSR */ ++ ++/* Uncomment next line if building CyaSSL for Freescale MQX/RTCS/MFS */ ++/* #define FREESCALE_MQX */ ++ ++/* Uncomment next line if using STM32F2 */ ++/* #define CYASSL_STM32F2 */ ++ ++/* Uncomment next line if using Comverge settings */ ++/* #define COMVERGE */ ++ ++/* Uncomment next line if using QL SEP settings */ ++/* #define CYASSL_QL */ ++ ++/* Uncomment next line if using LwIP native TCP socket settings */ ++/* #define HAVE_LWIP_NATIVE */ ++ ++/* Uncomment next line if building for EROAD */ ++/* #define CYASSL_EROAD */ ++ ++#include ++ ++#ifdef IPHONE ++ #define SIZEOF_LONG_LONG 8 ++#endif ++ ++ ++#ifdef CYASSL_USER_SETTINGS ++ #include ++#endif ++ ++ ++#ifdef COMVERGE ++ #define THREADX ++ #define HAVE_NETX ++ #define CYASSL_USER_IO ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_FILESYSTEM ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++ #define NO_RSA ++ #define NO_SESSION_CACHE ++ #define HAVE_ECC ++#endif ++ ++ ++#ifdef THREADX ++ #define SIZEOF_LONG_LONG 8 ++#endif ++ ++#ifdef HAVE_NETX ++ #include "nx_api.h" ++#endif ++ ++#if defined(HAVE_LWIP_NATIVE) /* using LwIP native TCP socket */ ++ #define CYASSL_LWIP ++ #define NO_WRITEV ++ #define SINGLE_THREADED ++ #define CYASSL_USER_IO ++ #define NO_FILESYSTEM ++#endif ++ ++#ifdef MICROCHIP_PIC32 ++ /* #define CYASSL_MICROCHIP_PIC32MZ */ ++ #define SIZEOF_LONG_LONG 8 ++ #define SINGLE_THREADED ++ #define CYASSL_USER_IO ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_FILESYSTEM ++ #define USE_FAST_MATH ++ #define TFM_TIMING_RESISTANT ++#endif ++ ++#ifdef CYASSL_MICROCHIP_PIC32MZ ++ #define CYASSL_PIC32MZ_CE ++ #define CYASSL_PIC32MZ_CRYPT ++ #define HAVE_AES_ENGINE ++ #define CYASSL_PIC32MZ_RNG ++ /* #define CYASSL_PIC32MZ_HASH */ ++ #define CYASSL_AES_COUNTER ++ #define HAVE_AESGCM ++ #define NO_BIG_INT ++ ++#endif ++ ++#ifdef MICROCHIP_TCPIP_V5 ++ /* include timer functions */ ++ #include "TCPIP Stack/TCPIP.h" ++#endif ++ ++#ifdef MICROCHIP_TCPIP ++ /* include timer, NTP functions */ ++ #ifdef MICROCHIP_MPLAB_HARMONY ++ #include "tcpip/tcpip.h" ++ #else ++ #include "system/system_services.h" ++ #include "tcpip/sntp.h" ++ #endif ++#endif ++ ++#ifdef MBED ++ #define CYASSL_USER_IO ++ #define NO_FILESYSTEM ++ #define NO_CERT ++ #define USE_CERT_BUFFERS_1024 ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++ #define HAVE_ECC ++ #define NO_SESSION_CACHE ++ #define CYASSL_CMSIS_RTOS ++#endif ++ ++ ++#ifdef CYASSL_EROAD ++ #define FREESCALE_MQX ++ #define FREESCALE_MMCAU ++ #define SINGLE_THREADED ++ #define NO_STDIO_FILESYSTEM ++ #define CYASSL_LEANPSK ++ #define HAVE_NULL_CIPHER ++ #define NO_OLD_TLS ++ #define NO_ASN ++ #define NO_BIG_INT ++ #define NO_RSA ++ #define NO_DSA ++ #define NO_DH ++ #define NO_CERTS ++ #define NO_PWDBASED ++ #define NO_DES3 ++ #define NO_MD4 ++ #define NO_RC4 ++ #define NO_MD5 ++ #define NO_SESSION_CACHE ++ #define NO_MAIN_DRIVER ++#endif ++ ++#ifdef FREERTOS_WINSIM ++ #define FREERTOS ++ #define USE_WINDOWS_API ++#endif ++ ++ ++/* Micrium will use Visual Studio for compilation but not the Win32 API */ ++#if defined(_WIN32) && !defined(MICRIUM) && !defined(FREERTOS) \ ++ && !defined(EBSNET) && !defined(CYASSL_EROAD) ++ #define USE_WINDOWS_API ++#endif ++ ++ ++#if defined(CYASSL_LEANPSK) && !defined(XMALLOC_USER) ++ #include ++ #define XMALLOC(s, h, type) malloc((s)) ++ #define XFREE(p, h, type) free((p)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++#endif ++ ++#if defined(XMALLOC_USER) && defined(SSN_BUILDING_LIBYASSL) ++ #undef XMALLOC ++ #define XMALLOC yaXMALLOC ++ #undef XFREE ++ #define XFREE yaXFREE ++ #undef XREALLOC ++ #define XREALLOC yaXREALLOC ++#endif ++ ++ ++#ifdef FREERTOS ++ #ifndef NO_WRITEV ++ #define NO_WRITEV ++ #endif ++ #ifndef NO_SHA512 ++ #define NO_SHA512 ++ #endif ++ #ifndef NO_DH ++ #define NO_DH ++ #endif ++ #ifndef NO_DSA ++ #define NO_DSA ++ #endif ++ #ifndef NO_HC128 ++ #define NO_HC128 ++ #endif ++ ++ #ifndef SINGLE_THREADED ++ #include "FreeRTOS.h" ++ #include "semphr.h" ++ #endif ++#endif ++ ++#ifdef EBSNET ++ #include "rtip.h" ++ ++ /* #define DEBUG_CYASSL */ ++ #define NO_CYASSL_DIR /* tbd */ ++ ++ #if (POLLOS) ++ #define SINGLE_THREADED ++ #endif ++ ++ #if (RTPLATFORM) ++ #if (!RTP_LITTLE_ENDIAN) ++ #define BIG_ENDIAN_ORDER ++ #endif ++ #else ++ #if (!KS_LITTLE_ENDIAN) ++ #define BIG_ENDIAN_ORDER ++ #endif ++ #endif ++ ++ #if (WINMSP3) ++ #undef SIZEOF_LONG ++ #define SIZEOF_LONG_LONG 8 ++ #else ++ #sslpro: settings.h - please implement SIZEOF_LONG and SIZEOF_LONG_LONG ++ #endif ++ ++ #define XMALLOC(s, h, type) ((void *)rtp_malloc((s), SSL_PRO_MALLOC)) ++ #define XFREE(p, h, type) (rtp_free(p)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++ ++#endif /* EBSNET */ ++ ++#ifdef CYASSL_GAME_BUILD ++ #define SIZEOF_LONG_LONG 8 ++ #if defined(__PPU) || defined(__XENON) ++ #define BIG_ENDIAN_ORDER ++ #endif ++#endif ++ ++#ifdef CYASSL_LSR ++ #define HAVE_WEBSERVER ++ #define SIZEOF_LONG_LONG 8 ++ #define CYASSL_LOW_MEMORY ++ #define NO_WRITEV ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++ #define NO_DEV_RANDOM ++ #define NO_CYASSL_DIR ++ #define NO_RABBIT ++ #ifndef NO_FILESYSTEM ++ #define LSR_FS ++ #include "inc/hw_types.h" ++ #include "fs.h" ++ #endif ++ #define CYASSL_LWIP ++ #include /* for tcp errno */ ++ #define CYASSL_SAFERTOS ++ #if defined(__IAR_SYSTEMS_ICC__) ++ /* enum uses enum */ ++ #pragma diag_suppress=Pa089 ++ #endif ++#endif ++ ++#ifdef CYASSL_SAFERTOS ++ #ifndef SINGLE_THREADED ++ #include "SafeRTOS/semphr.h" ++ #endif ++ ++ #include "SafeRTOS/heap.h" ++ #define XMALLOC(s, h, type) pvPortMalloc((s)) ++ #define XFREE(p, h, type) vPortFree((p)) ++ #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n)) ++#endif ++ ++#ifdef CYASSL_LOW_MEMORY ++ #undef RSA_LOW_MEM ++ #define RSA_LOW_MEM ++ #undef CYASSL_SMALL_STACK ++ #define CYASSL_SMALL_STACK ++ #undef TFM_TIMING_RESISTANT ++ #define TFM_TIMING_RESISTANT ++#endif ++ ++#ifdef FREESCALE_MQX ++ #define SIZEOF_LONG_LONG 8 ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_RABBIT ++ #define NO_CYASSL_DIR ++ #define USE_FAST_MATH ++ #define TFM_TIMING_RESISTANT ++ #define FREESCALE_K70_RNGA ++ /* #define FREESCALE_K53_RNGB */ ++ #include "mqx.h" ++ #ifndef NO_FILESYSTEM ++ #include "mfs.h" ++ #include "fio.h" ++ #endif ++ #ifndef SINGLE_THREADED ++ #include "mutex.h" ++ #endif ++ ++ #define XMALLOC(s, h, t) (void *)_mem_alloc_system((s)) ++ #define XFREE(p, h, t) {void* xp = (p); if ((xp)) _mem_free((xp));} ++ /* Note: MQX has no realloc, using fastmath above */ ++#endif ++ ++#ifdef CYASSL_STM32F2 ++ #define SIZEOF_LONG_LONG 8 ++ #define NO_DEV_RANDOM ++ #define NO_CYASSL_DIR ++ #define NO_RABBIT ++ #define STM32F2_RNG ++ #define STM32F2_CRYPTO ++ #define KEIL_INTRINSICS ++#endif ++ ++#ifdef MICRIUM ++ ++ #include "stdlib.h" ++ #include "net_cfg.h" ++ #include "ssl_cfg.h" ++ #include "net_secure_os.h" ++ ++ #define CYASSL_TYPES ++ ++ typedef CPU_INT08U byte; ++ typedef CPU_INT16U word16; ++ typedef CPU_INT32U word32; ++ ++ #if (NET_SECURE_MGR_CFG_WORD_SIZE == CPU_WORD_SIZE_32) ++ #define SIZEOF_LONG 4 ++ #undef SIZEOF_LONG_LONG ++ #else ++ #undef SIZEOF_LONG ++ #define SIZEOF_LONG_LONG 8 ++ #endif ++ ++ #define STRING_USER ++ ++ #define XSTRLEN(pstr) ((CPU_SIZE_T)Str_Len((CPU_CHAR *)(pstr))) ++ #define XSTRNCPY(pstr_dest, pstr_src, len_max) \ ++ ((CPU_CHAR *)Str_Copy_N((CPU_CHAR *)(pstr_dest), \ ++ (CPU_CHAR *)(pstr_src), (CPU_SIZE_T)(len_max))) ++ #define XSTRNCMP(pstr_1, pstr_2, len_max) \ ++ ((CPU_INT16S)Str_Cmp_N((CPU_CHAR *)(pstr_1), \ ++ (CPU_CHAR *)(pstr_2), (CPU_SIZE_T)(len_max))) ++ #define XSTRSTR(pstr, pstr_srch) \ ++ ((CPU_CHAR *)Str_Str((CPU_CHAR *)(pstr), \ ++ (CPU_CHAR *)(pstr_srch))) ++ #define XMEMSET(pmem, data_val, size) \ ++ ((void)Mem_Set((void *)(pmem), (CPU_INT08U) (data_val), \ ++ (CPU_SIZE_T)(size))) ++ #define XMEMCPY(pdest, psrc, size) ((void)Mem_Copy((void *)(pdest), \ ++ (void *)(psrc), (CPU_SIZE_T)(size))) ++ #define XMEMCMP(pmem_1, pmem_2, size) \ ++ (((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), (void *)(pmem_2), \ ++ (CPU_SIZE_T)(size))) ? DEF_NO : DEF_YES) ++ #define XMEMMOVE XMEMCPY ++ ++#if (NET_SECURE_MGR_CFG_EN == DEF_ENABLED) ++ #define MICRIUM_MALLOC ++ #define XMALLOC(s, h, type) ((void *)NetSecure_BlkGet((CPU_INT08U)(type), \ ++ (CPU_SIZE_T)(s), (void *)0)) ++ #define XFREE(p, h, type) (NetSecure_BlkFree((CPU_INT08U)(type), \ ++ (p), (void *)0)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++#endif ++ ++ #if (NET_SECURE_MGR_CFG_FS_EN == DEF_ENABLED) ++ #undef NO_FILESYSTEM ++ #else ++ #define NO_FILESYSTEM ++ #endif ++ ++ #if (SSL_CFG_TRACE_LEVEL == CYASSL_TRACE_LEVEL_DBG) ++ #define DEBUG_CYASSL ++ #else ++ #undef DEBUG_CYASSL ++ #endif ++ ++ #if (SSL_CFG_OPENSSL_EN == DEF_ENABLED) ++ #define OPENSSL_EXTRA ++ #else ++ #undef OPENSSL_EXTRA ++ #endif ++ ++ #if (SSL_CFG_MULTI_THREAD_EN == DEF_ENABLED) ++ #undef SINGLE_THREADED ++ #else ++ #define SINGLE_THREADED ++ #endif ++ ++ #if (SSL_CFG_DH_EN == DEF_ENABLED) ++ #undef NO_DH ++ #else ++ #define NO_DH ++ #endif ++ ++ #if (SSL_CFG_DSA_EN == DEF_ENABLED) ++ #undef NO_DSA ++ #else ++ #define NO_DSA ++ #endif ++ ++ #if (SSL_CFG_PSK_EN == DEF_ENABLED) ++ #undef NO_PSK ++ #else ++ #define NO_PSK ++ #endif ++ ++ #if (SSL_CFG_3DES_EN == DEF_ENABLED) ++ #undef NO_DES ++ #else ++ #define NO_DES ++ #endif ++ ++ #if (SSL_CFG_AES_EN == DEF_ENABLED) ++ #undef NO_AES ++ #else ++ #define NO_AES ++ #endif ++ ++ #if (SSL_CFG_RC4_EN == DEF_ENABLED) ++ #undef NO_RC4 ++ #else ++ #define NO_RC4 ++ #endif ++ ++ #if (SSL_CFG_RABBIT_EN == DEF_ENABLED) ++ #undef NO_RABBIT ++ #else ++ #define NO_RABBIT ++ #endif ++ ++ #if (SSL_CFG_HC128_EN == DEF_ENABLED) ++ #undef NO_HC128 ++ #else ++ #define NO_HC128 ++ #endif ++ ++ #if (CPU_CFG_ENDIAN_TYPE == CPU_ENDIAN_TYPE_BIG) ++ #define BIG_ENDIAN_ORDER ++ #else ++ #undef BIG_ENDIAN_ORDER ++ #define LITTLE_ENDIAN_ORDER ++ #endif ++ ++ #if (SSL_CFG_MD4_EN == DEF_ENABLED) ++ #undef NO_MD4 ++ #else ++ #define NO_MD4 ++ #endif ++ ++ #if (SSL_CFG_WRITEV_EN == DEF_ENABLED) ++ #undef NO_WRITEV ++ #else ++ #define NO_WRITEV ++ #endif ++ ++ #if (SSL_CFG_USER_RNG_SEED_EN == DEF_ENABLED) ++ #define NO_DEV_RANDOM ++ #else ++ #undef NO_DEV_RANDOM ++ #endif ++ ++ #if (SSL_CFG_USER_IO_EN == DEF_ENABLED) ++ #define CYASSL_USER_IO ++ #else ++ #undef CYASSL_USER_IO ++ #endif ++ ++ #if (SSL_CFG_DYNAMIC_BUFFERS_EN == DEF_ENABLED) ++ #undef LARGE_STATIC_BUFFERS ++ #undef STATIC_CHUNKS_ONLY ++ #else ++ #define LARGE_STATIC_BUFFERS ++ #define STATIC_CHUNKS_ONLY ++ #endif ++ ++ #if (SSL_CFG_DER_LOAD_EN == DEF_ENABLED) ++ #define CYASSL_DER_LOAD ++ #else ++ #undef CYASSL_DER_LOAD ++ #endif ++ ++ #if (SSL_CFG_DTLS_EN == DEF_ENABLED) ++ #define CYASSL_DTLS ++ #else ++ #undef CYASSL_DTLS ++ #endif ++ ++ #if (SSL_CFG_CALLBACKS_EN == DEF_ENABLED) ++ #define CYASSL_CALLBACKS ++ #else ++ #undef CYASSL_CALLBACKS ++ #endif ++ ++ #if (SSL_CFG_FAST_MATH_EN == DEF_ENABLED) ++ #define USE_FAST_MATH ++ #else ++ #undef USE_FAST_MATH ++ #endif ++ ++ #if (SSL_CFG_TFM_TIMING_RESISTANT_EN == DEF_ENABLED) ++ #define TFM_TIMING_RESISTANT ++ #else ++ #undef TFM_TIMING_RESISTANT ++ #endif ++ ++#endif /* MICRIUM */ ++ ++ ++#ifdef CYASSL_QL ++ #ifndef CYASSL_SEP ++ #define CYASSL_SEP ++ #endif ++ #ifndef OPENSSL_EXTRA ++ #define OPENSSL_EXTRA ++ #endif ++ #ifndef SESSION_CERTS ++ #define SESSION_CERTS ++ #endif ++ #ifndef HAVE_AESCCM ++ #define HAVE_AESCCM ++ #endif ++ #ifndef ATOMIC_USER ++ #define ATOMIC_USER ++ #endif ++ #ifndef CYASSL_DER_LOAD ++ #define CYASSL_DER_LOAD ++ #endif ++ #ifndef KEEP_PEER_CERT ++ #define KEEP_PEER_CERT ++ #endif ++ #ifndef HAVE_ECC ++ #define HAVE_ECC ++ #endif ++ #ifndef SESSION_INDEX ++ #define SESSION_INDEX ++ #endif ++#endif /* CYASSL_QL */ ++ ++ ++#if !defined(XMALLOC_USER) && !defined(MICRIUM_MALLOC) && \ ++ !defined(CYASSL_LEANPSK) && !defined(NO_CYASSL_MEMORY) ++ #define USE_CYASSL_MEMORY ++#endif ++ ++ ++#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) ++ #undef KEEP_PEER_CERT ++ #define KEEP_PEER_CERT ++#endif ++ ++ ++/* stream ciphers except arc4 need 32bit alignment, intel ok without */ ++#ifndef XSTREAM_ALIGNMENT ++ #if defined(__x86_64__) || defined(__ia64__) || defined(__i386__) ++ #define NO_XSTREAM_ALIGNMENT ++ #else ++ #define XSTREAM_ALIGNMENT ++ #endif ++#endif ++ ++ ++/* if using hardware crypto and have alignment requirements, specify the ++ requirement here. The record header of SSL/TLS will prvent easy alignment. ++ This hint tries to help as much as possible. */ ++#ifndef CYASSL_GENERAL_ALIGNMENT ++ #ifdef CYASSL_AESNI ++ #define CYASSL_GENERAL_ALIGNMENT 16 ++ #elif defined(XSTREAM_ALIGNMENT) ++ #define CYASSL_GENERAL_ALIGNMENT 4 ++ #else ++ #define CYASSL_GENERAL_ALIGNMENT 0 ++ #endif ++#endif ++ ++#ifdef HAVE_CRL ++ /* not widely supported yet */ ++ #undef NO_SKID ++ #define NO_SKID ++#endif ++ ++/* Place any other flags or defines here */ ++ ++ ++#ifdef __cplusplus ++ } /* extern "C" */ ++#endif ++ ++ ++#endif /* CTAO_CRYPT_SETTINGS_H */ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/benchmark.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/benchmark.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/benchmark.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/benchmark.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,1222 @@ ++/* benchmark.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++/* CTaoCrypt benchmark */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++ ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#ifdef HAVE_CAVIUM ++ #include "cavium_sysdep.h" ++ #include "cavium_common.h" ++ #include "cavium_ioctl.h" ++#endif ++ ++#if defined(CYASSL_MDK_ARM) ++ extern FILE * CyaSSL_fopen(const char *fname, const char *mode) ; ++ #define fopen CyaSSL_fopen ++#endif ++ ++#if defined(USE_CERT_BUFFERS_1024) || defined(USE_CERT_BUFFERS_2048) ++ /* include test cert and key buffers for use with NO_FILESYSTEM */ ++ #if defined(CYASSL_MDK_ARM) ++ #include "cert_data.h" /* use certs_test.c for initial data, ++ so other commands can share the data. */ ++ #else ++ #include ++ #endif ++#endif ++ ++ ++#ifdef HAVE_BLAKE2 ++ #include ++ void bench_blake2(void); ++#endif ++ ++#ifdef _MSC_VER ++ /* 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy */ ++ #pragma warning(disable: 4996) ++#endif ++ ++void bench_des(void); ++void bench_arc4(void); ++void bench_hc128(void); ++void bench_rabbit(void); ++void bench_aes(int); ++void bench_aesgcm(void); ++void bench_aesccm(void); ++void bench_aesctr(void); ++void bench_camellia(void); ++ ++void bench_md5(void); ++void bench_sha(void); ++void bench_sha256(void); ++void bench_sha512(void); ++void bench_ripemd(void); ++ ++void bench_rsa(void); ++void bench_rsaKeyGen(void); ++void bench_dh(void); ++#ifdef HAVE_ECC ++void bench_eccKeyGen(void); ++void bench_eccKeyAgree(void); ++#endif ++ ++double current_time(int); ++ ++ ++#ifdef HAVE_CAVIUM ++ ++static int OpenNitroxDevice(int dma_mode,int dev_id) ++{ ++ Csp1CoreAssignment core_assign; ++ Uint32 device; ++ ++ if (CspInitialize(CAVIUM_DIRECT,CAVIUM_DEV_ID)) ++ return -1; ++ if (Csp1GetDevType(&device)) ++ return -1; ++ if (device != NPX_DEVICE) { ++ if (ioctl(gpkpdev_hdlr[CAVIUM_DEV_ID], IOCTL_CSP1_GET_CORE_ASSIGNMENT, ++ (Uint32 *)&core_assign)!= 0) ++ return -1; ++ } ++ CspShutdown(CAVIUM_DEV_ID); ++ ++ return CspInitialize(dma_mode, dev_id); ++} ++ ++#endif ++ ++ ++/* so embedded projects can pull in tests on their own */ ++#if !defined(NO_MAIN_DRIVER) ++ ++int main(int argc, char** argv) ++ ++{ ++ (void)argc; ++ (void)argv; ++#else ++int benchmark_test(void *args) ++{ ++#endif ++ ++ #ifdef HAVE_CAVIUM ++ int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID); ++ if (ret != 0) { ++ printf("Cavium OpenNitroxDevice failed\n"); ++ exit(-1); ++ } ++#endif /* HAVE_CAVIUM */ ++#ifndef NO_AES ++ bench_aes(0); ++ bench_aes(1); ++#endif ++#ifdef HAVE_AESGCM ++ bench_aesgcm(); ++#endif ++ ++#ifdef CYASSL_AES_COUNTER ++ bench_aesctr(); ++#endif ++ ++#ifdef HAVE_AESCCM ++ bench_aesccm(); ++#endif ++#ifdef HAVE_CAMELLIA ++ bench_camellia(); ++#endif ++#ifndef NO_RC4 ++ bench_arc4(); ++#endif ++#ifdef HAVE_HC128 ++ bench_hc128(); ++#endif ++#ifndef NO_RABBIT ++ bench_rabbit(); ++#endif ++#ifndef NO_DES3 ++ bench_des(); ++#endif ++ ++ printf("\n"); ++ ++#ifndef NO_MD5 ++ bench_md5(); ++#endif ++#ifndef NO_SHA ++ bench_sha(); ++#endif ++#ifndef NO_SHA256 ++ bench_sha256(); ++#endif ++#ifdef CYASSL_SHA512 ++ bench_sha512(); ++#endif ++#ifdef CYASSL_RIPEMD ++ bench_ripemd(); ++#endif ++#ifdef HAVE_BLAKE2 ++ bench_blake2(); ++#endif ++ ++ printf("\n"); ++ ++#ifndef NO_RSA ++ bench_rsa(); ++#endif ++ ++#ifndef NO_DH ++ bench_dh(); ++#endif ++ ++#if defined(CYASSL_KEY_GEN) && !defined(NO_RSA) ++ bench_rsaKeyGen(); ++#endif ++ ++#ifdef HAVE_ECC ++ bench_eccKeyGen(); ++ bench_eccKeyAgree(); ++#endif ++ ++ return 0; ++} ++ ++ ++#ifdef BENCH_EMBEDDED ++enum BenchmarkBounds { ++ numBlocks = 25, /* how many kB to test (en/de)cryption */ ++ ntimes = 1, ++ genTimes = 5, /* public key iterations */ ++ agreeTimes = 5 ++}; ++static const char blockType[] = "kB"; /* used in printf output */ ++#else ++enum BenchmarkBounds { ++ numBlocks = 5, /* how many megs to test (en/de)cryption */ ++ ntimes = 100, ++ genTimes = 100, ++ agreeTimes = 100 ++}; ++static const char blockType[] = "megs"; /* used in printf output */ ++#endif ++ ++static const byte key[] = ++{ ++ 0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef, ++ 0xfe,0xde,0xba,0x98,0x76,0x54,0x32,0x10, ++ 0x89,0xab,0xcd,0xef,0x01,0x23,0x45,0x67 ++}; ++ ++static const byte iv[] = ++{ ++ 0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef, ++ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, ++ 0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81 ++ ++}; ++ ++ ++/* use kB instead of mB for embedded benchmarking */ ++#ifdef BENCH_EMBEDDED ++static byte plain [1024]; ++static byte cipher[1024]; ++#else ++static byte plain [1024*1024]; ++static byte cipher[1024*1024]; ++#endif ++ ++ ++#ifndef NO_AES ++void bench_aes(int show) ++{ ++ Aes enc; ++ double start, total, persec; ++ int i; ++ int ret; ++ ++#ifdef HAVE_CAVIUM ++ if (AesInitCavium(&enc, CAVIUM_DEV_ID) != 0) { ++ printf("aes init cavium failed\n"); ++ return; ++ } ++#endif ++ ++ ret = AesSetKey(&enc, key, 16, iv, AES_ENCRYPTION); ++ if (ret != 0) { ++ printf("AesSetKey failed, ret = %d\n", ret); ++ return; ++ } ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ AesCbcEncrypt(&enc, plain, cipher, sizeof(plain)); ++ ++ total = current_time(0) - start; ++ ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ if (show) ++ printf("AES %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++#ifdef HAVE_CAVIUM ++ AesFreeCavium(&enc); ++#endif ++} ++#endif ++ ++ ++#if defined(HAVE_AESGCM) || defined(HAVE_AESCCM) ++ static byte additional[13]; ++ static byte tag[16]; ++#endif ++ ++ ++#ifdef HAVE_AESGCM ++void bench_aesgcm(void) ++{ ++ Aes enc; ++ double start, total, persec; ++ int i; ++ ++ AesGcmSetKey(&enc, key, 16); ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ AesGcmEncrypt(&enc, cipher, plain, sizeof(plain), iv, 12, ++ tag, 16, additional, 13); ++ ++ total = current_time(0) - start; ++ ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("AES-GCM %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif ++ ++#ifdef CYASSL_AES_COUNTER ++void bench_aesctr(void) ++{ ++ Aes enc; ++ double start, total, persec; ++ int i; ++ ++ AesSetKeyDirect(&enc, key, AES_BLOCK_SIZE, iv, AES_ENCRYPTION); ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ AesCtrEncrypt(&enc, plain, cipher, sizeof(plain)); ++ ++ total = current_time(0) - start; ++ ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("AES-CTR %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif ++ ++ ++ ++#ifdef HAVE_AESCCM ++void bench_aesccm(void) ++{ ++ Aes enc; ++ double start, total, persec; ++ int i; ++ ++ AesCcmSetKey(&enc, key, 16); ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ AesCcmEncrypt(&enc, cipher, plain, sizeof(plain), iv, 12, ++ tag, 16, additional, 13); ++ ++ total = current_time(0) - start; ++ ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("AES-CCM %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif ++ ++ ++#ifdef HAVE_CAMELLIA ++void bench_camellia(void) ++{ ++ Camellia cam; ++ double start, total, persec; ++ int i, ret; ++ ++ ret = CamelliaSetKey(&cam, key, 16, iv); ++ if (ret != 0) { ++ printf("CamelliaSetKey failed, ret = %d\n", ret); ++ return; ++ } ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ CamelliaCbcEncrypt(&cam, plain, cipher, sizeof(plain)); ++ ++ total = current_time(0) - start; ++ ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("Camellia %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif ++ ++ ++#ifndef NO_DES3 ++void bench_des(void) ++{ ++ Des3 enc; ++ double start, total, persec; ++ int i, ret; ++ ++#ifdef HAVE_CAVIUM ++ if (Des3_InitCavium(&enc, CAVIUM_DEV_ID) != 0) ++ printf("des3 init cavium failed\n"); ++#endif ++ ret = Des3_SetKey(&enc, key, iv, DES_ENCRYPTION); ++ if (ret != 0) { ++ printf("Des3_SetKey failed, ret = %d\n", ret); ++ return; ++ } ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ Des3_CbcEncrypt(&enc, plain, cipher, sizeof(plain)); ++ ++ total = current_time(0) - start; ++ ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("3DES %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++#ifdef HAVE_CAVIUM ++ Des3_FreeCavium(&enc); ++#endif ++} ++#endif ++ ++ ++#ifndef NO_RC4 ++void bench_arc4(void) ++{ ++ Arc4 enc; ++ double start, total, persec; ++ int i; ++ ++#ifdef HAVE_CAVIUM ++ if (Arc4InitCavium(&enc, CAVIUM_DEV_ID) != 0) ++ printf("arc4 init cavium failed\n"); ++#endif ++ ++ Arc4SetKey(&enc, key, 16); ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ Arc4Process(&enc, cipher, plain, sizeof(plain)); ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("ARC4 %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++#ifdef HAVE_CAVIUM ++ Arc4FreeCavium(&enc); ++#endif ++} ++#endif ++ ++ ++#ifdef HAVE_HC128 ++void bench_hc128(void) ++{ ++ HC128 enc; ++ double start, total, persec; ++ int i; ++ ++ Hc128_SetKey(&enc, key, iv); ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ Hc128_Process(&enc, cipher, plain, sizeof(plain)); ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("HC128 %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif /* HAVE_HC128 */ ++ ++ ++#ifndef NO_RABBIT ++void bench_rabbit(void) ++{ ++ Rabbit enc; ++ double start, total, persec; ++ int i; ++ ++ RabbitSetKey(&enc, key, iv); ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ RabbitProcess(&enc, cipher, plain, sizeof(plain)); ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("RABBIT %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif /* NO_RABBIT */ ++ ++ ++#ifndef NO_MD5 ++void bench_md5(void) ++{ ++ Md5 hash; ++ byte digest[MD5_DIGEST_SIZE]; ++ double start, total, persec; ++ int i; ++ ++ InitMd5(&hash); ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ Md5Update(&hash, plain, sizeof(plain)); ++ ++ Md5Final(&hash, digest); ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("MD5 %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif /* NO_MD5 */ ++ ++ ++#ifndef NO_SHA ++void bench_sha(void) ++{ ++ Sha hash; ++ byte digest[SHA_DIGEST_SIZE]; ++ double start, total, persec; ++ int i, ret; ++ ++ ret = InitSha(&hash); ++ if (ret != 0) { ++ printf("InitSha failed, ret = %d\n", ret); ++ return; ++ } ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ ShaUpdate(&hash, plain, sizeof(plain)); ++ ++ ShaFinal(&hash, digest); ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("SHA %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif /* NO_SHA */ ++ ++ ++#ifndef NO_SHA256 ++void bench_sha256(void) ++{ ++ Sha256 hash; ++ byte digest[SHA256_DIGEST_SIZE]; ++ double start, total, persec; ++ int i, ret; ++ ++ ret = InitSha256(&hash); ++ if (ret != 0) { ++ printf("InitSha256 failed, ret = %d\n", ret); ++ return; ++ } ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) { ++ ret = Sha256Update(&hash, plain, sizeof(plain)); ++ if (ret != 0) { ++ printf("Sha256Update failed, ret = %d\n", ret); ++ return; ++ } ++ } ++ ++ ret = Sha256Final(&hash, digest); ++ if (ret != 0) { ++ printf("Sha256Final failed, ret = %d\n", ret); ++ return; ++ } ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("SHA-256 %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif ++ ++#ifdef CYASSL_SHA512 ++void bench_sha512(void) ++{ ++ Sha512 hash; ++ byte digest[SHA512_DIGEST_SIZE]; ++ double start, total, persec; ++ int i, ret; ++ ++ ret = InitSha512(&hash); ++ if (ret != 0) { ++ printf("InitSha512 failed, ret = %d\n", ret); ++ return; ++ } ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) { ++ ret = Sha512Update(&hash, plain, sizeof(plain)); ++ if (ret != 0) { ++ printf("Sha512Update failed, ret = %d\n", ret); ++ return; ++ } ++ } ++ ++ ret = Sha512Final(&hash, digest); ++ if (ret != 0) { ++ printf("Sha512Final failed, ret = %d\n", ret); ++ return; ++ } ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("SHA-512 %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif ++ ++#ifdef CYASSL_RIPEMD ++void bench_ripemd(void) ++{ ++ RipeMd hash; ++ byte digest[RIPEMD_DIGEST_SIZE]; ++ double start, total, persec; ++ int i; ++ ++ InitRipeMd(&hash); ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) ++ RipeMdUpdate(&hash, plain, sizeof(plain)); ++ ++ RipeMdFinal(&hash, digest); ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("RIPEMD %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif ++ ++ ++#ifdef HAVE_BLAKE2 ++void bench_blake2(void) ++{ ++ Blake2b b2b; ++ byte digest[64]; ++ double start, total, persec; ++ int i, ret; ++ ++ ret = InitBlake2b(&b2b, 64); ++ if (ret != 0) { ++ printf("InitBlake2b failed, ret = %d\n", ret); ++ return; ++ } ++ start = current_time(1); ++ ++ for(i = 0; i < numBlocks; i++) { ++ ret = Blake2bUpdate(&b2b, plain, sizeof(plain)); ++ if (ret != 0) { ++ printf("Blake2bUpdate failed, ret = %d\n", ret); ++ return; ++ } ++ } ++ ++ ret = Blake2bFinal(&b2b, digest, 64); ++ if (ret != 0) { ++ printf("Blake2bFinal failed, ret = %d\n", ret); ++ return; ++ } ++ ++ total = current_time(0) - start; ++ persec = 1 / total * numBlocks; ++#ifdef BENCH_EMBEDDED ++ /* since using kB, convert to MB/s */ ++ persec = persec / 1024; ++#endif ++ ++ printf("BLAKE2b %d %s took %5.3f seconds, %7.3f MB/s\n", numBlocks, ++ blockType, total, persec); ++} ++#endif ++ ++ ++#if !defined(NO_RSA) || !defined(NO_DH) \ ++ || defined(CYASSL_KEYGEN) || defined(HAVE_ECC) ++static RNG rng; ++#endif ++ ++#ifndef NO_RSA ++ ++ ++#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) && \ ++ defined(CYASSL_MDK_SHELL) ++static char *certRSAname = "certs/rsa2048.der" ; ++static void set_Bench_RSA_File(char * cert) { certRSAname = cert ; } ++ /* set by shell command */ ++#elif defined(CYASSL_MDK_SHELL) ++ /* nothing */ ++#else ++static const char *certRSAname = "certs/rsa2048.der" ; ++#endif ++ ++void bench_rsa(void) ++{ ++ int i; ++ int ret; ++ byte tmp[3072]; ++ size_t bytes; ++ word32 idx = 0; ++ ++ byte message[] = "Everyone gets Friday off."; ++ byte enc[512]; /* for up to 4096 bit */ ++ const int len = (int)strlen((char*)message); ++ double start, total, each, milliEach; ++ ++ RsaKey rsaKey; ++ int rsaKeySz = 2048; /* used in printf */ ++ ++#ifdef USE_CERT_BUFFERS_1024 ++ XMEMCPY(tmp, rsa_key_der_1024, sizeof_rsa_key_der_1024); ++ bytes = sizeof_rsa_key_der_1024; ++ rsaKeySz = 1024; ++#elif defined(USE_CERT_BUFFERS_2048) ++ XMEMCPY(tmp, rsa_key_der_2048, sizeof_rsa_key_der_2048); ++ bytes = sizeof_rsa_key_der_2048; ++#else ++ FILE* file = fopen(certRSAname, "rb"); ++ ++ if (!file) { ++ printf("can't find %s, Please run from CyaSSL home dir\n", certRSAname); ++ return; ++ } ++ ++ bytes = fread(tmp, 1, sizeof(tmp), file); ++ fclose(file); ++#endif /* USE_CERT_BUFFERS */ ++ ++ ++#ifdef HAVE_CAVIUM ++ if (RsaInitCavium(&rsaKey, CAVIUM_DEV_ID) != 0) ++ printf("RSA init cavium failed\n"); ++#endif ++ ret = InitRng(&rng); ++ if (ret < 0) { ++ printf("InitRNG failed\n"); ++ return; ++ } ++ ret = InitRsaKey(&rsaKey, 0); ++ if (ret < 0) { ++ printf("InitRsaKey failed\n"); ++ return; ++ } ++ ret = RsaPrivateKeyDecode(tmp, &idx, &rsaKey, (word32)bytes); ++ ++ start = current_time(1); ++ ++ for (i = 0; i < ntimes; i++) ++ ret = RsaPublicEncrypt(message,len,enc,sizeof(enc), &rsaKey, &rng); ++ ++ total = current_time(0) - start; ++ each = total / ntimes; /* per second */ ++ milliEach = each * 1000; /* milliseconds */ ++ ++ printf("RSA %d encryption took %6.3f milliseconds, avg over %d" ++ " iterations\n", rsaKeySz, milliEach, ntimes); ++ ++ if (ret < 0) { ++ printf("Rsa Public Encrypt failed\n"); ++ return; ++ } ++ ++ start = current_time(1); ++ ++ for (i = 0; i < ntimes; i++) { ++ byte out[512]; /* for up to 4096 bit */ ++ RsaPrivateDecrypt(enc, (word32)ret, out, sizeof(out), &rsaKey); ++ } ++ ++ total = current_time(0) - start; ++ each = total / ntimes; /* per second */ ++ milliEach = each * 1000; /* milliseconds */ ++ ++ printf("RSA %d decryption took %6.3f milliseconds, avg over %d" ++ " iterations\n", rsaKeySz, milliEach, ntimes); ++ ++ FreeRsaKey(&rsaKey); ++#ifdef HAVE_CAVIUM ++ RsaFreeCavium(&rsaKey); ++#endif ++} ++#endif ++ ++ ++#ifndef NO_DH ++ ++ ++#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) && \ ++ defined(CYASSL_MDK_SHELL) ++static char *certDHname = "certs/dh2048.der" ; ++void set_Bench_DH_File(char * cert) { certDHname = cert ; } ++ /* set by shell command */ ++#elif defined(CYASSL_MDK_SHELL) ++ /* nothing */ ++#else ++static const char *certDHname = "certs/dh2048.der" ; ++#endif ++ ++void bench_dh(void) ++{ ++ int i, ret; ++ byte tmp[1024]; ++ size_t bytes; ++ word32 idx = 0, pubSz, privSz = 0, pubSz2, privSz2, agreeSz; ++ ++ byte pub[256]; /* for 2048 bit */ ++ byte priv[256]; /* for 2048 bit */ ++ byte pub2[256]; /* for 2048 bit */ ++ byte priv2[256]; /* for 2048 bit */ ++ byte agree[256]; /* for 2048 bit */ ++ ++ double start, total, each, milliEach; ++ DhKey dhKey; ++ int dhKeySz = 2048; /* used in printf */ ++ ++ ++#ifdef USE_CERT_BUFFERS_1024 ++ XMEMCPY(tmp, dh_key_der_1024, sizeof_dh_key_der_1024); ++ bytes = sizeof_dh_key_der_1024; ++ dhKeySz = 1024; ++#elif defined(USE_CERT_BUFFERS_2048) ++ XMEMCPY(tmp, dh_key_der_2048, sizeof_dh_key_der_2048); ++ bytes = sizeof_dh_key_der_2048; ++#else ++ FILE* file = fopen(certDHname, "rb"); ++ ++ if (!file) { ++ printf("can't find %s, Please run from CyaSSL home dir\n", certDHname); ++ return; ++ } ++ ++ ret = InitRng(&rng); ++ if (ret < 0) { ++ printf("InitRNG failed\n"); ++ return; ++ } ++ bytes = fread(tmp, 1, sizeof(tmp), file); ++#endif /* USE_CERT_BUFFERS */ ++ ++ ++ InitDhKey(&dhKey); ++ bytes = DhKeyDecode(tmp, &idx, &dhKey, (word32)bytes); ++ if (bytes != 0) { ++ printf("dhekydecode failed, can't benchmark\n"); ++ #if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) ++ fclose(file); ++ #endif ++ return; ++ } ++ ++ start = current_time(1); ++ ++ for (i = 0; i < ntimes; i++) ++ DhGenerateKeyPair(&dhKey, &rng, priv, &privSz, pub, &pubSz); ++ ++ total = current_time(0) - start; ++ each = total / ntimes; /* per second */ ++ milliEach = each * 1000; /* milliseconds */ ++ ++ printf("DH %d key generation %6.3f milliseconds, avg over %d" ++ " iterations\n", dhKeySz, milliEach, ntimes); ++ ++ DhGenerateKeyPair(&dhKey, &rng, priv2, &privSz2, pub2, &pubSz2); ++ start = current_time(1); ++ ++ for (i = 0; i < ntimes; i++) ++ DhAgree(&dhKey, agree, &agreeSz, priv, privSz, pub2, pubSz2); ++ ++ total = current_time(0) - start; ++ each = total / ntimes; /* per second */ ++ milliEach = each * 1000; /* milliseconds */ ++ ++ printf("DH %d key agreement %6.3f milliseconds, avg over %d" ++ " iterations\n", dhKeySz, milliEach, ntimes); ++ ++#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) ++ fclose(file); ++#endif ++ FreeDhKey(&dhKey); ++} ++#endif ++ ++#if defined(CYASSL_KEY_GEN) && !defined(NO_RSA) ++void bench_rsaKeyGen(void) ++{ ++ RsaKey genKey; ++ double start, total, each, milliEach; ++ int i; ++ ++ /* 1024 bit */ ++ start = current_time(1); ++ ++ for(i = 0; i < genTimes; i++) { ++ InitRsaKey(&genKey, 0); ++ MakeRsaKey(&genKey, 1024, 65537, &rng); ++ FreeRsaKey(&genKey); ++ } ++ ++ total = current_time(0) - start; ++ each = total / genTimes; /* per second */ ++ milliEach = each * 1000; /* millisconds */ ++ printf("\n"); ++ printf("RSA 1024 key generation %6.3f milliseconds, avg over %d" ++ " iterations\n", milliEach, genTimes); ++ ++ /* 2048 bit */ ++ start = current_time(1); ++ ++ for(i = 0; i < genTimes; i++) { ++ InitRsaKey(&genKey, 0); ++ MakeRsaKey(&genKey, 2048, 65537, &rng); ++ FreeRsaKey(&genKey); ++ } ++ ++ total = current_time(0) - start; ++ each = total / genTimes; /* per second */ ++ milliEach = each * 1000; /* millisconds */ ++ printf("RSA 2048 key generation %6.3f milliseconds, avg over %d" ++ " iterations\n", milliEach, genTimes); ++} ++#endif /* CYASSL_KEY_GEN */ ++ ++#ifdef HAVE_ECC ++void bench_eccKeyGen(void) ++{ ++ ecc_key genKey; ++ double start, total, each, milliEach; ++ int i, ret; ++ ++ ret = InitRng(&rng); ++ if (ret < 0) { ++ printf("InitRNG failed\n"); ++ return; ++ } ++ /* 256 bit */ ++ start = current_time(1); ++ ++ for(i = 0; i < genTimes; i++) { ++ ecc_make_key(&rng, 32, &genKey); ++ ecc_free(&genKey); ++ } ++ ++ total = current_time(0) - start; ++ each = total / genTimes; /* per second */ ++ milliEach = each * 1000; /* millisconds */ ++ printf("\n"); ++ printf("ECC 256 key generation %6.3f milliseconds, avg over %d" ++ " iterations\n", milliEach, genTimes); ++} ++ ++ ++void bench_eccKeyAgree(void) ++{ ++ ecc_key genKey, genKey2; ++ double start, total, each, milliEach; ++ int i, ret; ++ byte shared[1024]; ++ byte sig[1024]; ++ byte digest[32]; ++ word32 x = 0; ++ ++ ecc_init(&genKey); ++ ecc_init(&genKey2); ++ ++ ret = InitRng(&rng); ++ if (ret < 0) { ++ printf("InitRNG failed\n"); ++ return; ++ } ++ ++ ret = ecc_make_key(&rng, 32, &genKey); ++ if (ret != 0) { ++ printf("ecc_make_key failed\n"); ++ return; ++ } ++ ret = ecc_make_key(&rng, 32, &genKey2); ++ if (ret != 0) { ++ printf("ecc_make_key failed\n"); ++ return; ++ } ++ ++ /* 256 bit */ ++ start = current_time(1); ++ ++ for(i = 0; i < agreeTimes; i++) { ++ x = sizeof(shared); ++ ret = ecc_shared_secret(&genKey, &genKey2, shared, &x); ++ if (ret != 0) { ++ printf("ecc_shared_secret failed\n"); ++ return; ++ } ++ } ++ ++ total = current_time(0) - start; ++ each = total / agreeTimes; /* per second */ ++ milliEach = each * 1000; /* millisconds */ ++ printf("EC-DHE key agreement %6.3f milliseconds, avg over %d" ++ " iterations\n", milliEach, agreeTimes); ++ ++ /* make dummy digest */ ++ for (i = 0; i < (int)sizeof(digest); i++) ++ digest[i] = (byte)i; ++ ++ ++ start = current_time(1); ++ ++ for(i = 0; i < agreeTimes; i++) { ++ x = sizeof(sig); ++ ret = ecc_sign_hash(digest, sizeof(digest), sig, &x, &rng, &genKey); ++ if (ret != 0) { ++ printf("ecc_sign_hash failed\n"); ++ return; ++ } ++ } ++ ++ total = current_time(0) - start; ++ each = total / agreeTimes; /* per second */ ++ milliEach = each * 1000; /* millisconds */ ++ printf("EC-DSA sign time %6.3f milliseconds, avg over %d" ++ " iterations\n", milliEach, agreeTimes); ++ ++ start = current_time(1); ++ ++ for(i = 0; i < agreeTimes; i++) { ++ int verify = 0; ++ ret = ecc_verify_hash(sig, x, digest, sizeof(digest), &verify, &genKey); ++ if (ret != 0) { ++ printf("ecc_verify_hash failed\n"); ++ return; ++ } ++ } ++ ++ total = current_time(0) - start; ++ each = total / agreeTimes; /* per second */ ++ milliEach = each * 1000; /* millisconds */ ++ printf("EC-DSA verify time %6.3f milliseconds, avg over %d" ++ " iterations\n", milliEach, agreeTimes); ++ ++ ecc_free(&genKey2); ++ ecc_free(&genKey); ++} ++#endif /* HAVE_ECC */ ++ ++ ++#ifdef _WIN32 ++ ++ #define WIN32_LEAN_AND_MEAN ++ #include ++ ++ double current_time(int reset) ++ { ++ static int init = 0; ++ static LARGE_INTEGER freq; ++ ++ LARGE_INTEGER count; ++ ++ (void)reset; ++ ++ if (!init) { ++ QueryPerformanceFrequency(&freq); ++ init = 1; ++ } ++ ++ QueryPerformanceCounter(&count); ++ ++ return (double)count.QuadPart / freq.QuadPart; ++ } ++ ++#elif defined MICROCHIP_PIC32 ++ #if defined(CYASSL_MICROCHIP_PIC32MZ) ++ #define CLOCK 8000000.0 ++ #else ++ #include ++ #define CLOCK 4000000.0 ++ #endif ++ ++ double current_time(int reset) ++ { ++ unsigned int ns; ++ ++ if (reset) { ++ WriteCoreTimer(0); ++ } ++ ++ /* get timer in ns */ ++ ns = ReadCoreTimer(); ++ ++ /* return seconds as a double */ ++ return ( ns / CLOCK * 2.0); ++ } ++ ++#elif defined CYASSL_MDK_ARM ++ ++ extern double current_time(int reset) ; ++ ++#elif defined FREERTOS ++ ++ double current_time(int reset) ++ { ++ (void) reset; ++ ++ portTickType tickCount; ++ ++ /* tick count == ms, if configTICK_RATE_HZ is set to 1000 */ ++ tickCount = xTaskGetTickCount(); ++ return (double)tickCount / 1000; ++ } ++ ++#else ++ ++ #include ++ ++ double current_time(int reset) ++ { ++ struct timeval tv; ++ ++ (void)reset; ++ ++ gettimeofday(&tv, 0); ++ ++ return (double)tv.tv_sec + (double)tv.tv_usec / 1000000; ++ } ++ ++#endif /* _WIN32 */ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/cert_data.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/cert_data.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/cert_data.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/cert_data.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,28 @@ ++/* certs_test.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++/* Define initial data for cert buffers */ ++#include ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/client.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/client.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/client.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/client.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,858 @@ ++/* client.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ #define CYASSL_MDK_ARM ++#if defined(CYASSL_MDK_ARM) ++ #include ++ #include ++ ++ #if defined(CYASSL_MDK5) ++ #include "cmsis_os.h" ++ #include "rl_fs.h" ++ #include "rl_net.h" ++ #else ++ #include "rtl.h" ++ #endif ++ ++ #include "cyassl_MDK_ARM.h" ++#endif ++ ++#include ++ ++#if !defined(CYASSL_TRACK_MEMORY) && !defined(NO_MAIN_DRIVER) ++ /* in case memory tracker wants stats */ ++ #define CYASSL_TRACK_MEMORY ++#endif ++ ++#include ++#include ++#include "examples/client/client.h" ++ ++ ++#ifdef CYASSL_CALLBACKS ++ int handShakeCB(HandShakeInfo*); ++ int timeoutCB(TimeoutInfo*); ++ Timeval timeout; ++#endif ++ ++ ++static void NonBlockingSSL_Connect(CYASSL* ssl) ++{ ++#ifndef CYASSL_CALLBACKS ++ int ret = CyaSSL_connect(ssl); ++#else ++ int ret = CyaSSL_connect_ex(ssl, handShakeCB, timeoutCB, timeout); ++#endif ++ int error = CyaSSL_get_error(ssl, 0); ++ SOCKET_T sockfd = (SOCKET_T)CyaSSL_get_fd(ssl); ++ int select_ret; ++ ++ while (ret != SSL_SUCCESS && (error == SSL_ERROR_WANT_READ || ++ error == SSL_ERROR_WANT_WRITE)) { ++ int currTimeout = 1; ++ ++ if (error == SSL_ERROR_WANT_READ) ++ printf("... client would read block\n"); ++ else ++ printf("... client would write block\n"); ++ ++#ifdef CYASSL_DTLS ++ currTimeout = CyaSSL_dtls_get_current_timeout(ssl); ++#endif ++ select_ret = tcp_select(sockfd, currTimeout); ++ ++ if ((select_ret == TEST_RECV_READY) || ++ (select_ret == TEST_ERROR_READY)) { ++ #ifndef CYASSL_CALLBACKS ++ ret = CyaSSL_connect(ssl); ++ #else ++ ret = CyaSSL_connect_ex(ssl,handShakeCB,timeoutCB,timeout); ++ #endif ++ error = CyaSSL_get_error(ssl, 0); ++ } ++ else if (select_ret == TEST_TIMEOUT && !CyaSSL_dtls(ssl)) { ++ error = SSL_ERROR_WANT_READ; ++ } ++#ifdef CYASSL_DTLS ++ else if (select_ret == TEST_TIMEOUT && CyaSSL_dtls(ssl) && ++ CyaSSL_dtls_got_timeout(ssl) >= 0) { ++ error = SSL_ERROR_WANT_READ; ++ } ++#endif ++ else { ++ error = SSL_FATAL_ERROR; ++ } ++ } ++ if (ret != SSL_SUCCESS) ++ err_sys("SSL_connect failed"); ++} ++ ++ ++static void Usage(void) ++{ ++ printf("client " LIBCYASSL_VERSION_STRING ++ " NOTE: All files relative to CyaSSL home dir\n"); ++ printf("-? Help, print this usage\n"); ++ printf("-h Host to connect to, default %s\n", yasslIP); ++ printf("-p Port to connect on, not 0, default %d\n", yasslPort); ++ printf("-v SSL version [0-3], SSLv3(0) - TLS1.2(3)), default %d\n", ++ CLIENT_DEFAULT_VERSION); ++ printf("-l Cipher list\n"); ++ printf("-c Certificate file, default %s\n", cliCert); ++ printf("-k Key file, default %s\n", cliKey); ++ printf("-A Certificate Authority file, default %s\n", caCert); ++ printf("-b Benchmark connections and print stats\n"); ++ printf("-s Use pre Shared keys\n"); ++ printf("-t Track CyaSSL memory use\n"); ++ printf("-d Disable peer checks\n"); ++ printf("-g Send server HTTP GET\n"); ++ printf("-u Use UDP DTLS," ++ " add -v 2 for DTLSv1 (default), -v 3 for DTLSv1.2\n"); ++ printf("-m Match domain name in cert\n"); ++ printf("-N Use Non-blocking sockets\n"); ++ printf("-r Resume session\n"); ++ printf("-f Fewer packets/group messages\n"); ++ printf("-x Disable client cert/key loading\n"); ++#ifdef SHOW_SIZES ++ printf("-z Print structure sizes\n"); ++#endif ++#ifdef HAVE_SNI ++ printf("-S Use Host Name Indication\n"); ++#endif ++#ifdef HAVE_MAX_FRAGMENT ++ printf("-L Use Maximum Fragment Length [1-5]\n"); ++#endif ++#ifdef HAVE_TRUNCATED_HMAC ++ printf("-T Use Truncated HMAC\n"); ++#endif ++#ifdef HAVE_OCSP ++ printf("-o Perform OCSP lookup on peer certificate\n"); ++ printf("-O Perform OCSP lookup using as responder\n"); ++#endif ++#ifdef ATOMIC_USER ++ printf("-U Atomic User Record Layer Callbacks\n"); ++#endif ++#ifdef HAVE_PK_CALLBACKS ++ printf("-P Public Key Callbacks\n"); ++#endif ++} ++ ++ ++#ifdef CYASSL_MDK_SHELL ++ #define exit(code) return(code) ++#endif ++ ++ ++THREAD_RETURN CYASSL_THREAD client_test(void* args) ++{ ++ SOCKET_T sockfd = 0; ++ ++ CYASSL_METHOD* method = 0; ++ CYASSL_CTX* ctx = 0; ++ CYASSL* ssl = 0; ++ ++ CYASSL* sslResume = 0; ++ CYASSL_SESSION* session = 0; ++ char resumeMsg[] = "resuming cyassl!"; ++ int resumeSz = sizeof(resumeMsg); ++ ++ char msg[32] = "hello cyassl!"; /* GET may make bigger */ ++ char reply[80]; ++ int input; ++ int msgSz = (int)strlen(msg); ++ ++ word16 port = yasslPort; ++ char* host = (char*)yasslIP; ++ char* domain = (char*)"www.yassl.com"; ++ ++ int ch; ++ int version = CLIENT_INVALID_VERSION; ++ int usePsk = 0; ++ int sendGET = 0; ++ int benchmark = 0; ++ int doDTLS = 0; ++ int matchName = 0; ++ int doPeerCheck = 1; ++ int nonBlocking = 0; ++ int resumeSession = 0; ++ int trackMemory = 0; ++ int useClientCert = 1; ++ int fewerPackets = 0; ++ int atomicUser = 0; ++ int pkCallbacks = 0; ++ char* cipherList = NULL; ++ char* verifyCert = (char*)caCert; ++ char* ourCert = (char*)cliCert; ++ char* ourKey = (char*)cliKey; ++ ++#ifdef HAVE_SNI ++ char* sniHostName = NULL; ++#endif ++#ifdef HAVE_MAX_FRAGMENT ++ byte maxFragment = 0; ++#endif ++#ifdef HAVE_TRUNCATED_HMAC ++ byte truncatedHMAC = 0; ++#endif ++ ++ ++#ifdef HAVE_OCSP ++ int useOcsp = 0; ++ char* ocspUrl = NULL; ++#endif ++ ++ int argc = ((func_args*)args)->argc; ++ char** argv = ((func_args*)args)->argv; ++ ++ ((func_args*)args)->return_code = -1; /* error state */ ++ ++#ifdef NO_RSA ++ verifyCert = (char*)eccCert; ++ ourCert = (char*)cliEccCert; ++ ourKey = (char*)cliEccKey; ++#endif ++ (void)resumeSz; ++ (void)session; ++ (void)sslResume; ++ (void)trackMemory; ++ (void)atomicUser; ++ (void)pkCallbacks; ++ ++ StackTrap(); ++ ++ while ((ch = mygetopt(argc, argv, ++ "?gdusmNrtfxUPh:p:v:l:A:c:k:b:zS:L:ToO:")) != -1) { ++ switch (ch) { ++ case '?' : ++ Usage(); ++ exit(EXIT_SUCCESS); ++ ++ case 'g' : ++ sendGET = 1; ++ break; ++ ++ case 'd' : ++ doPeerCheck = 0; ++ break; ++ ++ case 'u' : ++ doDTLS = 1; ++ break; ++ ++ case 's' : ++ usePsk = 1; ++ break; ++ ++ case 't' : ++ #ifdef USE_CYASSL_MEMORY ++ trackMemory = 1; ++ #endif ++ break; ++ ++ case 'm' : ++ matchName = 1; ++ break; ++ ++ case 'x' : ++ useClientCert = 0; ++ break; ++ ++ case 'f' : ++ fewerPackets = 1; ++ break; ++ ++ case 'U' : ++ #ifdef ATOMIC_USER ++ atomicUser = 1; ++ #endif ++ break; ++ ++ case 'P' : ++ #ifdef HAVE_PK_CALLBACKS ++ pkCallbacks = 1; ++ #endif ++ break; ++ ++ case 'h' : ++ host = myoptarg; ++ domain = myoptarg; ++ break; ++ ++ case 'p' : ++ port = (word16)atoi(myoptarg); ++ #if !defined(NO_MAIN_DRIVER) || defined(USE_WINDOWS_API) ++ if (port == 0) ++ err_sys("port number cannot be 0"); ++ #endif ++ break; ++ ++ case 'v' : ++ version = atoi(myoptarg); ++ if (version < 0 || version > 3) { ++ Usage(); ++ exit(MY_EX_USAGE); ++ } ++ break; ++ ++ case 'l' : ++ cipherList = myoptarg; ++ break; ++ ++ case 'A' : ++ verifyCert = myoptarg; ++ break; ++ ++ case 'c' : ++ ourCert = myoptarg; ++ break; ++ ++ case 'k' : ++ ourKey = myoptarg; ++ break; ++ ++ case 'b' : ++ benchmark = atoi(myoptarg); ++ if (benchmark < 0 || benchmark > 1000000) { ++ Usage(); ++ exit(MY_EX_USAGE); ++ } ++ break; ++ ++ case 'N' : ++ nonBlocking = 1; ++ break; ++ ++ case 'r' : ++ resumeSession = 1; ++ break; ++ ++ case 'z' : ++ #ifndef CYASSL_LEANPSK ++ CyaSSL_GetObjectSize(); ++ #endif ++ break; ++ ++ case 'S' : ++ #ifdef HAVE_SNI ++ sniHostName = myoptarg; ++ #endif ++ break; ++ ++ case 'L' : ++ #ifdef HAVE_MAX_FRAGMENT ++ maxFragment = atoi(myoptarg); ++ if (maxFragment < CYASSL_MFL_2_9 || ++ maxFragment > CYASSL_MFL_2_13) { ++ Usage(); ++ exit(MY_EX_USAGE); ++ } ++ #endif ++ break; ++ ++ case 'T' : ++ #ifdef HAVE_TRUNCATED_HMAC ++ truncatedHMAC = 1; ++ #endif ++ break; ++ ++ case 'o' : ++ #ifdef HAVE_OCSP ++ useOcsp = 1; ++ #endif ++ break; ++ ++ case 'O' : ++ #ifdef HAVE_OCSP ++ useOcsp = 1; ++ ocspUrl = myoptarg; ++ #endif ++ break; ++ ++ default: ++ Usage(); ++ exit(MY_EX_USAGE); ++ } ++ } ++ ++ myoptind = 0; /* reset for test cases */ ++ ++ /* sort out DTLS versus TLS versions */ ++ if (version == CLIENT_INVALID_VERSION) { ++ if (doDTLS) ++ version = CLIENT_DTLS_DEFAULT_VERSION; ++ else ++ version = CLIENT_DEFAULT_VERSION; ++ } ++ else { ++ if (doDTLS) { ++ if (version == 3) ++ version = -2; ++ else ++ version = -1; ++ } ++ } ++ ++#ifdef USE_CYASSL_MEMORY ++ if (trackMemory) ++ InitMemoryTracker(); ++#endif ++ ++ switch (version) { ++#ifndef NO_OLD_TLS ++ case 0: ++ method = wolfSSLv3_client_method(); ++ break; ++ ++ ++ #ifndef NO_TLS ++ case 1: ++ method = CyaTLSv1_client_method(); ++ break; ++ ++ case 2: ++ method = CyaTLSv1_1_client_method(); ++ break; ++ #endif /* NO_TLS */ ++ ++#endif /* NO_OLD_TLS */ ++ ++#ifndef NO_TLS ++ case 3: ++ method = CyaTLSv1_2_client_method(); ++ break; ++#endif ++ ++#ifdef CYASSL_DTLS ++ case -1: ++ method = CyaDTLSv1_client_method(); ++ break; ++ ++ case -2: ++ method = CyaDTLSv1_2_client_method(); ++ break; ++#endif ++ ++ default: ++ err_sys("Bad SSL version"); ++ break; ++ } ++ ++ if (method == NULL) ++ err_sys("unable to get method"); ++ ++ ctx = CyaSSL_CTX_new(method); ++ if (ctx == NULL) ++ err_sys("unable to get ctx"); ++ ++ if (cipherList) ++ if (CyaSSL_CTX_set_cipher_list(ctx, cipherList) != SSL_SUCCESS) ++ err_sys("client can't set cipher list 1"); ++ ++#ifdef CYASSL_LEANPSK ++ usePsk = 1; ++#endif ++ ++#if defined(NO_RSA) && !defined(HAVE_ECC) ++ usePsk = 1; ++#endif ++ ++ if (fewerPackets) ++ CyaSSL_CTX_set_group_messages(ctx); ++ ++ if (usePsk) { ++#ifndef NO_PSK ++ CyaSSL_CTX_set_psk_client_callback(ctx, my_psk_client_cb); ++ if (cipherList == NULL) { ++ const char *defaultCipherList; ++ #ifdef HAVE_NULL_CIPHER ++ defaultCipherList = "PSK-NULL-SHA256"; ++ #else ++ defaultCipherList = "PSK-AES128-CBC-SHA256"; ++ #endif ++ if (CyaSSL_CTX_set_cipher_list(ctx,defaultCipherList) !=SSL_SUCCESS) ++ err_sys("client can't set cipher list 2"); ++ } ++#endif ++ useClientCert = 0; ++ } ++ ++#if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) ++ CyaSSL_CTX_set_default_passwd_cb(ctx, PasswordCallBack); ++#endif ++ ++#if defined(CYASSL_SNIFFER) && !defined(HAVE_NTRU) && !defined(HAVE_ECC) ++ if (cipherList == NULL) { ++ /* don't use EDH, can't sniff tmp keys */ ++ if (CyaSSL_CTX_set_cipher_list(ctx, "AES256-SHA256") != SSL_SUCCESS) { ++ err_sys("client can't set cipher list 3"); ++ } ++ } ++#endif ++ ++#ifdef HAVE_OCSP ++ if (useOcsp) { ++ if (ocspUrl != NULL) { ++ CyaSSL_CTX_SetOCSP_OverrideURL(ctx, ocspUrl); ++ CyaSSL_CTX_EnableOCSP(ctx, CYASSL_OCSP_NO_NONCE ++ | CYASSL_OCSP_URL_OVERRIDE); ++ } ++ else ++ CyaSSL_CTX_EnableOCSP(ctx, CYASSL_OCSP_NO_NONCE); ++ } ++#endif ++ ++#ifdef USER_CA_CB ++ CyaSSL_CTX_SetCACb(ctx, CaCb); ++#endif ++ ++#ifdef VERIFY_CALLBACK ++ CyaSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, myVerify); ++#endif ++#if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) ++ if (useClientCert){ ++ if (CyaSSL_CTX_use_certificate_chain_file(ctx, ourCert) != SSL_SUCCESS) ++ err_sys("can't load client cert file, check file and run from" ++ " CyaSSL home dir"); ++ ++ if (CyaSSL_CTX_use_PrivateKey_file(ctx, ourKey, SSL_FILETYPE_PEM) ++ != SSL_SUCCESS) ++ err_sys("can't load client private key file, check file and run " ++ "from CyaSSL home dir"); ++ } ++ ++ if (!usePsk) { ++ if (CyaSSL_CTX_load_verify_locations(ctx, verifyCert, 0) != SSL_SUCCESS) ++ err_sys("can't load ca file, Please run from CyaSSL home dir"); ++ } ++#endif ++#if !defined(NO_CERTS) ++ if (!usePsk && doPeerCheck == 0) ++ CyaSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); ++#endif ++ ++#ifdef HAVE_CAVIUM ++ CyaSSL_CTX_UseCavium(ctx, CAVIUM_DEV_ID); ++#endif ++ ++#ifdef HAVE_SNI ++ if (sniHostName) ++ if (CyaSSL_CTX_UseSNI(ctx, 0, sniHostName, XSTRLEN(sniHostName)) ++ != SSL_SUCCESS) ++ err_sys("UseSNI failed"); ++#endif ++#ifdef HAVE_MAX_FRAGMENT ++ if (maxFragment) ++ if (CyaSSL_CTX_UseMaxFragment(ctx, maxFragment) != SSL_SUCCESS) ++ err_sys("UseMaxFragment failed"); ++#endif ++#ifdef HAVE_TRUNCATED_HMAC ++ if (truncatedHMAC) ++ if (CyaSSL_CTX_UseTruncatedHMAC(ctx) != SSL_SUCCESS) ++ err_sys("UseTruncatedHMAC failed"); ++#endif ++ ++ if (benchmark) { ++ /* time passed in number of connects give average */ ++ int times = benchmark; ++ int i = 0; ++ ++ double start = current_time(), avg; ++ ++ for (i = 0; i < times; i++) { ++ tcp_connect(&sockfd, host, port, doDTLS); ++ ++ ssl = CyaSSL_new(ctx); ++ CyaSSL_set_fd(ssl, sockfd); ++ if (CyaSSL_connect(ssl) != SSL_SUCCESS) ++ err_sys("SSL_connect failed"); ++ ++ CyaSSL_shutdown(ssl); ++ CyaSSL_free(ssl); ++ CloseSocket(sockfd); ++ } ++ avg = current_time() - start; ++ avg /= times; ++ avg *= 1000; /* milliseconds */ ++ printf("CyaSSL_connect avg took: %8.3f milliseconds\n", avg); ++ ++ CyaSSL_CTX_free(ctx); ++ ((func_args*)args)->return_code = 0; ++ ++ exit(EXIT_SUCCESS); ++ } ++ ++ #if defined(CYASSL_MDK_ARM) ++ CyaSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); ++ #endif ++ ++ ssl = CyaSSL_new(ctx); ++ if (ssl == NULL) ++ err_sys("unable to get SSL object"); ++ if (doDTLS) { ++ SOCKADDR_IN_T addr; ++ build_addr(&addr, host, port, 1); ++ CyaSSL_dtls_set_peer(ssl, &addr, sizeof(addr)); ++ tcp_socket(&sockfd, 1); ++ } ++ else { ++ tcp_connect(&sockfd, host, port, 0); ++ } ++ CyaSSL_set_fd(ssl, sockfd); ++#ifdef HAVE_CRL ++ if (CyaSSL_EnableCRL(ssl, CYASSL_CRL_CHECKALL) != SSL_SUCCESS) ++ err_sys("can't enable crl check"); ++ if (CyaSSL_LoadCRL(ssl, crlPemDir, SSL_FILETYPE_PEM, 0) != SSL_SUCCESS) ++ err_sys("can't load crl, check crlfile and date validity"); ++ if (CyaSSL_SetCRL_Cb(ssl, CRL_CallBack) != SSL_SUCCESS) ++ err_sys("can't set crl callback"); ++#endif ++#ifdef ATOMIC_USER ++ if (atomicUser) ++ SetupAtomicUser(ctx, ssl); ++#endif ++#ifdef HAVE_PK_CALLBACKS ++ if (pkCallbacks) ++ SetupPkCallbacks(ctx, ssl); ++#endif ++ if (matchName && doPeerCheck) ++ CyaSSL_check_domain_name(ssl, domain); ++#ifndef CYASSL_CALLBACKS ++ if (nonBlocking) { ++ CyaSSL_set_using_nonblock(ssl, 1); ++ tcp_set_nonblocking(&sockfd); ++ NonBlockingSSL_Connect(ssl); ++ } ++ else if (CyaSSL_connect(ssl) != SSL_SUCCESS) { ++ /* see note at top of README */ ++ int err = CyaSSL_get_error(ssl, 0); ++ char buffer[CYASSL_MAX_ERROR_SZ]; ++ printf("err = %d, %s\n", err, ++ CyaSSL_ERR_error_string(err, buffer)); ++ err_sys("SSL_connect failed"); ++ /* if you're getting an error here */ ++ } ++#else ++ timeout.tv_sec = 2; ++ timeout.tv_usec = 0; ++ NonBlockingSSL_Connect(ssl); /* will keep retrying on timeout */ ++#endif ++ showPeer(ssl); ++ ++ if (sendGET) { ++ printf("SSL connect ok, sending GET...\n"); ++ msgSz = 28; ++ strncpy(msg, "GET /index.html HTTP/1.0\r\n\r\n", msgSz); ++ msg[msgSz] = '\0'; ++ } ++ if (CyaSSL_write(ssl, msg, msgSz) != msgSz) ++ err_sys("SSL_write failed"); ++ ++ input = CyaSSL_read(ssl, reply, sizeof(reply)-1); ++ if (input > 0) { ++ reply[input] = 0; ++ printf("Server response: %s\n", reply); ++ ++ if (sendGET) { /* get html */ ++ while (1) { ++ input = CyaSSL_read(ssl, reply, sizeof(reply)-1); ++ if (input > 0) { ++ reply[input] = 0; ++ printf("%s\n", reply); ++ } ++ else ++ break; ++ } ++ } ++ } ++ else if (input < 0) { ++ int readErr = CyaSSL_get_error(ssl, 0); ++ if (readErr != SSL_ERROR_WANT_READ) ++ err_sys("CyaSSL_read failed"); ++ } ++ ++#ifndef NO_SESSION_CACHE ++ if (resumeSession) { ++ if (doDTLS) { ++ strncpy(msg, "break", 6); ++ msgSz = (int)strlen(msg); ++ /* try to send session close */ ++ CyaSSL_write(ssl, msg, msgSz); ++ } ++ session = CyaSSL_get_session(ssl); ++ sslResume = CyaSSL_new(ctx); ++ } ++#endif ++ ++ if (doDTLS == 0) /* don't send alert after "break" command */ ++ CyaSSL_shutdown(ssl); /* echoserver will interpret as new conn */ ++#ifdef ATOMIC_USER ++ if (atomicUser) ++ FreeAtomicUser(ssl); ++#endif ++ CyaSSL_free(ssl); ++ CloseSocket(sockfd); ++ ++#ifndef NO_SESSION_CACHE ++ if (resumeSession) { ++ if (doDTLS) { ++ SOCKADDR_IN_T addr; ++ #ifdef USE_WINDOWS_API ++ Sleep(500); ++ #else ++ sleep(1); ++ #endif ++ build_addr(&addr, host, port, 1); ++ CyaSSL_dtls_set_peer(sslResume, &addr, sizeof(addr)); ++ tcp_socket(&sockfd, 1); ++ } ++ else { ++ tcp_connect(&sockfd, host, port, 0); ++ } ++ CyaSSL_set_fd(sslResume, sockfd); ++ CyaSSL_set_session(sslResume, session); ++ ++ showPeer(sslResume); ++#ifndef CYASSL_CALLBACKS ++ if (nonBlocking) { ++ CyaSSL_set_using_nonblock(sslResume, 1); ++ tcp_set_nonblocking(&sockfd); ++ NonBlockingSSL_Connect(sslResume); ++ } ++ else if (CyaSSL_connect(sslResume) != SSL_SUCCESS) ++ err_sys("SSL resume failed"); ++#else ++ timeout.tv_sec = 2; ++ timeout.tv_usec = 0; ++ NonBlockingSSL_Connect(ssl); /* will keep retrying on timeout */ ++#endif ++ ++ if (CyaSSL_session_reused(sslResume)) ++ printf("reused session id\n"); ++ else ++ printf("didn't reuse session id!!!\n"); ++ ++ if (CyaSSL_write(sslResume, resumeMsg, resumeSz) != resumeSz) ++ err_sys("SSL_write failed"); ++ ++ if (nonBlocking) { ++ /* give server a chance to bounce a message back to client */ ++ #ifdef USE_WINDOWS_API ++ Sleep(500); ++ #else ++ sleep(1); ++ #endif ++ } ++ ++ input = CyaSSL_read(sslResume, reply, sizeof(reply)-1); ++ if (input > 0) { ++ reply[input] = 0; ++ printf("Server resume response: %s\n", reply); ++ } ++ ++ /* try to send session break */ ++ CyaSSL_write(sslResume, msg, msgSz); ++ ++ CyaSSL_shutdown(sslResume); ++ CyaSSL_free(sslResume); ++ CloseSocket(sockfd); ++ } ++#endif /* NO_SESSION_CACHE */ ++ ++ CyaSSL_CTX_free(ctx); ++ ++ ((func_args*)args)->return_code = 0; ++ ++#ifdef USE_CYASSL_MEMORY ++ if (trackMemory) ++ ShowMemoryTracker(); ++#endif /* USE_CYASSL_MEMORY */ ++ ++ return 0; ++} ++ ++ ++/* so overall tests can pull in test function */ ++#ifndef NO_MAIN_DRIVER ++ ++ int main(int argc, char** argv) ++ { ++ func_args args; ++ ++#ifdef HAVE_CAVIUM ++ int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID); ++ if (ret != 0) ++ err_sys("Cavium OpenNitroxDevice failed"); ++#endif /* HAVE_CAVIUM */ ++ ++ StartTCP(); ++ ++ args.argc = argc; ++ args.argv = argv; ++ ++ CyaSSL_Init(); ++#if defined(DEBUG_CYASSL) && !defined(CYASSL_MDK_SHELL) && !defined(STACK_TRAP) ++ CyaSSL_Debugging_ON(); ++#endif ++ if (CurrentDir("client")) ++ ChangeDirBack(2); ++ else if (CurrentDir("Debug") || CurrentDir("Release")) ++ ChangeDirBack(3); ++ ++#ifdef HAVE_STACK_SIZE ++ StackSizeCheck(&args, client_test); ++#else ++ client_test(&args); ++#endif ++ CyaSSL_Cleanup(); ++ ++#ifdef HAVE_CAVIUM ++ CspShutdown(CAVIUM_DEV_ID); ++#endif ++ return args.return_code; ++ } ++ ++ int myoptind = 0; ++ char* myoptarg = NULL; ++ ++#endif /* NO_MAIN_DRIVER */ ++ ++ ++ ++#ifdef CYASSL_CALLBACKS ++ ++ int handShakeCB(HandShakeInfo* info) ++ { ++ (void)info; ++ return 0; ++ } ++ ++ ++ int timeoutCB(TimeoutInfo* info) ++ { ++ (void)info; ++ return 0; ++ } ++ ++#endif ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/echoclient.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/echoclient.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/echoclient.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/echoclient.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,282 @@ ++/* echoclient.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++ ++#include ++ ++#if defined(CYASSL_MDK_ARM) ++ #include ++ #include ++ ++ #if defined(CYASSL_MDK5) ++ #include "cmsis_os.h" ++ #include "rl_fs.h" ++ #include "rl_net.h" ++ #else ++ #include "rtl.h" ++ #endif ++ ++ #include "cyassl_MDK_ARM.h" ++#endif ++ ++#include ++ ++#include "examples/echoclient/echoclient.h" ++ ++void echoclient_test(void* args) ++{ ++ SOCKET_T sockfd = 0; ++ ++ FILE* fin = stdin ; ++ FILE* fout = stdout; ++ ++ int inCreated = 0; ++ int outCreated = 0; ++ ++ char msg[1024]; ++ char reply[1024+1]; ++ ++ SSL_METHOD* method = 0; ++ SSL_CTX* ctx = 0; ++ SSL* ssl = 0; ++ ++ int doDTLS = 0; ++ int doPSK = 0; ++ int sendSz; ++ int argc = 0; ++ char** argv = 0; ++ word16 port = yasslPort; ++ ++ ((func_args*)args)->return_code = -1; /* error state */ ++ ++#ifndef CYASSL_MDK_SHELL ++ argc = ((func_args*)args)->argc; ++ argv = ((func_args*)args)->argv; ++#endif ++ ++ if (argc >= 2) { ++ fin = fopen(argv[1], "r"); ++ inCreated = 1; ++ } ++ if (argc >= 3) { ++ fout = fopen(argv[2], "w"); ++ outCreated = 1; ++ } ++ ++ if (!fin) err_sys("can't open input file"); ++ if (!fout) err_sys("can't open output file"); ++ ++#ifdef CYASSL_DTLS ++ doDTLS = 1; ++#endif ++ ++#ifdef CYASSL_LEANPSK ++ doPSK = 1; ++#endif ++ ++#if defined(NO_RSA) && !defined(HAVE_ECC) ++ doPSK = 1; ++#endif ++ ++#if defined(NO_MAIN_DRIVER) && !defined(USE_WINDOWS_API) && !defined(CYASSL_MDK_SHELL) ++ port = ((func_args*)args)->signal->port; ++#endif ++ ++#if defined(CYASSL_DTLS) ++ method = DTLSv1_client_method(); ++#elif !defined(NO_TLS) ++ method = CyaSSLv23_client_method(); ++#else ++ method = SSLv3_client_method(); ++#endif ++ ctx = SSL_CTX_new(method); ++ ++#ifndef NO_FILESYSTEM ++ #ifndef NO_RSA ++ if (SSL_CTX_load_verify_locations(ctx, caCert, 0) != SSL_SUCCESS) ++ err_sys("can't load ca file, Please run from CyaSSL home dir"); ++ #endif ++ #ifdef HAVE_ECC ++ if (SSL_CTX_load_verify_locations(ctx, eccCert, 0) != SSL_SUCCESS) ++ err_sys("can't load ca file, Please run from CyaSSL home dir"); ++ #endif ++#elif !defined(NO_CERTS) ++ if (!doPSK) ++ load_buffer(ctx, caCert, CYASSL_CA); ++#endif ++ ++#if defined(CYASSL_SNIFFER) && !defined(HAVE_NTRU) && !defined(HAVE_ECC) ++ /* don't use EDH, can't sniff tmp keys */ ++ SSL_CTX_set_cipher_list(ctx, "AES256-SHA"); ++#endif ++ if (doPSK) { ++#ifndef NO_PSK ++ const char *defaultCipherList; ++ ++ CyaSSL_CTX_set_psk_client_callback(ctx, my_psk_client_cb); ++ #ifdef HAVE_NULL_CIPHER ++ defaultCipherList = "PSK-NULL-SHA256"; ++ #else ++ defaultCipherList = "PSK-AES128-CBC-SHA256"; ++ #endif ++ if (CyaSSL_CTX_set_cipher_list(ctx,defaultCipherList) !=SSL_SUCCESS) ++ err_sys("client can't set cipher list 2"); ++#endif ++ } ++ ++#if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) ++ SSL_CTX_set_default_passwd_cb(ctx, PasswordCallBack); ++#endif ++ ++ #if defined(CYASSL_MDK_ARM) ++ CyaSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); ++ #endif ++ ++ ssl = SSL_new(ctx); ++ ++ ++ if (doDTLS) { ++ SOCKADDR_IN_T addr; ++ build_addr(&addr, yasslIP, port, 1); ++ CyaSSL_dtls_set_peer(ssl, &addr, sizeof(addr)); ++ tcp_socket(&sockfd, 1); ++ } ++ else { ++ tcp_connect(&sockfd, yasslIP, port, 0); ++ } ++ ++ SSL_set_fd(ssl, sockfd); ++#if defined(USE_WINDOWS_API) && defined(CYASSL_DTLS) && defined(NO_MAIN_DRIVER) ++ /* let echoserver bind first, TODO: add Windows signal like pthreads does */ ++ Sleep(100); ++#endif ++ ++ if (SSL_connect(ssl) != SSL_SUCCESS) err_sys("SSL_connect failed"); ++ ++ while (fgets(msg, sizeof(msg), fin) != 0) { ++ ++ sendSz = (int)strlen(msg); ++ ++ if (SSL_write(ssl, msg, sendSz) != sendSz) ++ err_sys("SSL_write failed"); ++ ++ if (strncmp(msg, "quit", 4) == 0) { ++ fputs("sending server shutdown command: quit!\n", fout); ++ break; ++ } ++ ++ if (strncmp(msg, "break", 5) == 0) { ++ fputs("sending server session close: break!\n", fout); ++ break; ++ } ++ ++ #ifndef CYASSL_MDK_SHELL ++ while (sendSz) { ++ int got; ++ if ( (got = SSL_read(ssl, reply, sizeof(reply)-1)) > 0) { ++ reply[got] = 0; ++ fputs(reply, fout); ++ fflush(fout) ; ++ sendSz -= got; ++ } ++ else ++ break; ++ } ++ #else ++ { ++ int got; ++ if ( (got = SSL_read(ssl, reply, sizeof(reply)-1)) > 0) { ++ reply[got] = 0; ++ fputs(reply, fout); ++ fflush(fout) ; ++ sendSz -= got; ++ } ++ } ++ #endif ++ } ++ ++ ++#ifdef CYASSL_DTLS ++ strncpy(msg, "break", 6); ++ sendSz = (int)strlen(msg); ++ /* try to tell server done */ ++ SSL_write(ssl, msg, sendSz); ++#else ++ SSL_shutdown(ssl); ++#endif ++ ++ SSL_free(ssl); ++ SSL_CTX_free(ctx); ++ ++ fflush(fout); ++ if (inCreated) fclose(fin); ++ if (outCreated) fclose(fout); ++ ++ CloseSocket(sockfd); ++ ((func_args*)args)->return_code = 0; ++} ++ ++ ++/* so overall tests can pull in test function */ ++#ifndef NO_MAIN_DRIVER ++ ++ int main(int argc, char** argv) ++ { ++ func_args args; ++ ++#ifdef HAVE_CAVIUM ++ int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID); ++ if (ret != 0) ++ err_sys("Cavium OpenNitroxDevice failed"); ++#endif /* HAVE_CAVIUM */ ++ ++ StartTCP(); ++ ++ args.argc = argc; ++ args.argv = argv; ++ ++ CyaSSL_Init(); ++#if defined(DEBUG_CYASSL) && !defined(CYASSL_MDK_SHELL) ++ CyaSSL_Debugging_ON(); ++#endif ++ ++ if (CurrentDir("echoclient")) ++ ChangeDirBack(2); ++ else if (CurrentDir("Debug") || CurrentDir("Release")) ++ ChangeDirBack(3); ++ echoclient_test(&args); ++ ++ CyaSSL_Cleanup(); ++ ++#ifdef HAVE_CAVIUM ++ CspShutdown(CAVIUM_DEV_ID); ++#endif ++ return args.return_code; ++ } ++ ++#endif /* NO_MAIN_DRIVER */ ++ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/echoserver.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/echoserver.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/echoserver.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/echoserver.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,368 @@ ++/* echoserver.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++ ++#if defined(CYASSL_MDK_ARM) ++ #include ++ #include ++ ++ #if defined(CYASSL_MDK5) ++ #include "cmsis_os.h" ++ #include "rl_fs.h" ++ #include "rl_net.h" ++ #else ++ #include "rtl.h" ++ #endif ++ ++ #include "cyassl_MDK_ARM.h" ++#endif ++ ++#include ++#include ++ ++#ifndef NO_MAIN_DRIVER ++ #define ECHO_OUT ++#endif ++ ++#include "examples/echoserver/echoserver.h" ++ ++ ++#ifdef SESSION_STATS ++ CYASSL_API void PrintSessionStats(void); ++#endif ++ ++#define SVR_COMMAND_SIZE 256 ++ ++static void SignalReady(void* args, word16 port) ++{ ++#if defined(_POSIX_THREADS) && defined(NO_MAIN_DRIVER) && !defined(__MINGW32__) ++ /* signal ready to tcp_accept */ ++ func_args* server_args = (func_args*)args; ++ tcp_ready* ready = server_args->signal; ++ pthread_mutex_lock(&ready->mutex); ++ ready->ready = 1; ++ ready->port = port; ++ pthread_cond_signal(&ready->cond); ++ pthread_mutex_unlock(&ready->mutex); ++#endif ++ (void)args; ++ (void)port; ++} ++ ++ ++THREAD_RETURN CYASSL_THREAD echoserver_test(void* args) ++{ ++ SOCKET_T sockfd = 0; ++ CYASSL_METHOD* method = 0; ++ CYASSL_CTX* ctx = 0; ++ ++ int doDTLS = 0; ++ int doPSK = 0; ++ int outCreated = 0; ++ int shutDown = 0; ++ int useAnyAddr = 0; ++ word16 port = yasslPort; ++ int argc = ((func_args*)args)->argc; ++ char** argv = ((func_args*)args)->argv; ++ ++#ifdef ECHO_OUT ++ FILE* fout = stdout; ++ if (argc >= 2) { ++ fout = fopen(argv[1], "w"); ++ outCreated = 1; ++ } ++ if (!fout) err_sys("can't open output file"); ++#endif ++ (void)outCreated; ++ (void)argc; ++ (void)argv; ++ ++ ((func_args*)args)->return_code = -1; /* error state */ ++ ++#ifdef CYASSL_DTLS ++ doDTLS = 1; ++#endif ++ ++#ifdef CYASSL_LEANPSK ++ doPSK = 1; ++#endif ++ ++#if defined(NO_RSA) && !defined(HAVE_ECC) ++ doPSK = 1; ++#endif ++ ++ #if defined(NO_MAIN_DRIVER) && !defined(USE_WINDOWS_API) && \ ++ !defined(CYASSL_SNIFFER) && !defined(CYASSL_MDK_SHELL) ++ port = 0; ++ #endif ++ #if defined(USE_ANY_ADDR) ++ useAnyAddr = 1; ++ #endif ++ tcp_listen(&sockfd, &port, useAnyAddr, doDTLS); ++ ++#if defined(CYASSL_DTLS) ++ method = CyaDTLSv1_server_method(); ++#elif !defined(NO_TLS) ++ method = CyaSSLv23_server_method(); ++#else ++ method = wolfSSLv3_server_method(); ++#endif ++ ctx = CyaSSL_CTX_new(method); ++ /* CyaSSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF); */ ++ ++#if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) ++ CyaSSL_CTX_set_default_passwd_cb(ctx, PasswordCallBack); ++#endif ++ ++#ifndef NO_FILESYSTEM ++ if (doPSK == 0) { ++ #ifdef HAVE_NTRU ++ /* ntru */ ++ if (CyaSSL_CTX_use_certificate_file(ctx, ntruCert, SSL_FILETYPE_PEM) ++ != SSL_SUCCESS) ++ err_sys("can't load ntru cert file, " ++ "Please run from CyaSSL home dir"); ++ ++ if (CyaSSL_CTX_use_NTRUPrivateKey_file(ctx, ntruKey) ++ != SSL_SUCCESS) ++ err_sys("can't load ntru key file, " ++ "Please run from CyaSSL home dir"); ++ #elif defined(HAVE_ECC) ++ /* ecc */ ++ if (CyaSSL_CTX_use_certificate_file(ctx, eccCert, SSL_FILETYPE_PEM) ++ != SSL_SUCCESS) ++ err_sys("can't load server cert file, " ++ "Please run from CyaSSL home dir"); ++ ++ if (CyaSSL_CTX_use_PrivateKey_file(ctx, eccKey, SSL_FILETYPE_PEM) ++ != SSL_SUCCESS) ++ err_sys("can't load server key file, " ++ "Please run from CyaSSL home dir"); ++ #elif defined(NO_CERTS) ++ /* do nothing, just don't load cert files */ ++ #else ++ /* normal */ ++ if (CyaSSL_CTX_use_certificate_file(ctx, svrCert, SSL_FILETYPE_PEM) ++ != SSL_SUCCESS) ++ err_sys("can't load server cert file, " ++ "Please run from CyaSSL home dir"); ++ ++ if (CyaSSL_CTX_use_PrivateKey_file(ctx, svrKey, SSL_FILETYPE_PEM) ++ != SSL_SUCCESS) ++ err_sys("can't load server key file, " ++ "Please run from CyaSSL home dir"); ++ #endif ++ } /* doPSK */ ++#elif !defined(NO_CERTS) ++ if (!doPSK) { ++ load_buffer(ctx, svrCert, CYASSL_CERT); ++ load_buffer(ctx, svrKey, CYASSL_KEY); ++ } ++#endif ++ ++#if defined(CYASSL_SNIFFER) && !defined(HAVE_NTRU) && !defined(HAVE_ECC) ++ /* don't use EDH, can't sniff tmp keys */ ++ CyaSSL_CTX_set_cipher_list(ctx, "AES256-SHA"); ++#endif ++ ++ if (doPSK) { ++#ifndef NO_PSK ++ const char *defaultCipherList; ++ ++ CyaSSL_CTX_set_psk_server_callback(ctx, my_psk_server_cb); ++ CyaSSL_CTX_use_psk_identity_hint(ctx, "cyassl server"); ++ #ifdef HAVE_NULL_CIPHER ++ defaultCipherList = "PSK-NULL-SHA256"; ++ #else ++ defaultCipherList = "PSK-AES128-CBC-SHA256"; ++ #endif ++ if (CyaSSL_CTX_set_cipher_list(ctx, defaultCipherList) != SSL_SUCCESS) ++ err_sys("server can't set cipher list 2"); ++#endif ++ } ++ ++ SignalReady(args, port); ++ ++ while (!shutDown) { ++ CYASSL* ssl = 0; ++ char command[SVR_COMMAND_SIZE+1]; ++ int echoSz = 0; ++ int clientfd; ++ int firstRead = 1; ++ int gotFirstG = 0; ++ ++#ifndef CYASSL_DTLS ++ SOCKADDR_IN_T client; ++ socklen_t client_len = sizeof(client); ++ clientfd = accept(sockfd, (struct sockaddr*)&client, ++ (ACCEPT_THIRD_T)&client_len); ++#else ++ clientfd = udp_read_connect(sockfd); ++#endif ++ if (clientfd == -1) err_sys("tcp accept failed"); ++ ++ ssl = CyaSSL_new(ctx); ++ if (ssl == NULL) err_sys("SSL_new failed"); ++ CyaSSL_set_fd(ssl, clientfd); ++ #if !defined(NO_FILESYSTEM) && defined(OPENSSL_EXTRA) ++ CyaSSL_SetTmpDH_file(ssl, dhParam, SSL_FILETYPE_PEM); ++ #elif !defined(NO_CERTS) ++ SetDH(ssl); /* will repick suites with DHE, higher than PSK */ ++ #endif ++ if (CyaSSL_accept(ssl) != SSL_SUCCESS) { ++ printf("SSL_accept failed\n"); ++ CyaSSL_free(ssl); ++ CloseSocket(clientfd); ++ continue; ++ } ++#if defined(PEER_INFO) ++ showPeer(ssl); ++#endif ++ ++ while ( (echoSz = CyaSSL_read(ssl, command, sizeof(command)-1)) > 0) { ++ ++ if (firstRead == 1) { ++ firstRead = 0; /* browser may send 1 byte 'G' to start */ ++ if (echoSz == 1 && command[0] == 'G') { ++ gotFirstG = 1; ++ continue; ++ } ++ } ++ else if (gotFirstG == 1 && strncmp(command, "ET /", 4) == 0) { ++ strncpy(command, "GET", 4); ++ /* fall through to normal GET */ ++ } ++ ++ if ( strncmp(command, "quit", 4) == 0) { ++ printf("client sent quit command: shutting down!\n"); ++ shutDown = 1; ++ break; ++ } ++ if ( strncmp(command, "break", 5) == 0) { ++ printf("client sent break command: closing session!\n"); ++ break; ++ } ++#ifdef SESSION_STATS ++ if ( strncmp(command, "printstats", 10) == 0) { ++ PrintSessionStats(); ++ break; ++ } ++#endif ++ if ( strncmp(command, "GET", 3) == 0) { ++ char type[] = "HTTP/1.0 200 ok\r\nContent-type:" ++ " text/html\r\n\r\n"; ++ char header[] = "\n
\n";
++                char body[]   = "greetings from CyaSSL\n";
++                char footer[] = "\r\n\r\n";
++            
++                strncpy(command, type, sizeof(type));
++                echoSz = sizeof(type) - 1;
++
++                strncpy(&command[echoSz], header, sizeof(header));
++                echoSz += (int)sizeof(header) - 1;
++                strncpy(&command[echoSz], body, sizeof(body));
++                echoSz += (int)sizeof(body) - 1;
++                strncpy(&command[echoSz], footer, sizeof(footer));
++                echoSz += (int)sizeof(footer);
++
++                if (CyaSSL_write(ssl, command, echoSz) != echoSz)
++                    err_sys("SSL_write failed");
++                break;
++            }
++            command[echoSz] = 0;
++
++            #ifdef ECHO_OUT
++                fputs(command, fout);
++            #endif
++
++            if (CyaSSL_write(ssl, command, echoSz) != echoSz)
++                err_sys("SSL_write failed");
++        }
++#ifndef CYASSL_DTLS
++        CyaSSL_shutdown(ssl);
++#endif
++        CyaSSL_free(ssl);
++        CloseSocket(clientfd);
++#ifdef CYASSL_DTLS
++        tcp_listen(&sockfd, &port, useAnyAddr, doDTLS);
++        SignalReady(args, port);
++#endif
++    }
++
++    CloseSocket(sockfd);
++    CyaSSL_CTX_free(ctx);
++
++#ifdef ECHO_OUT
++    if (outCreated)
++        fclose(fout);
++#endif
++
++    ((func_args*)args)->return_code = 0;
++    return 0;
++}
++
++
++/* so overall tests can pull in test function */
++#ifndef NO_MAIN_DRIVER
++
++    int main(int argc, char** argv)
++    {
++        func_args args;
++
++#ifdef HAVE_CAVIUM
++        int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID);
++        if (ret != 0)
++            err_sys("Cavium OpenNitroxDevice failed");
++#endif /* HAVE_CAVIUM */
++
++        StartTCP();
++
++        args.argc = argc;
++        args.argv = argv;
++
++        CyaSSL_Init();
++#if defined(DEBUG_CYASSL) && !defined(CYASSL_MDK_SHELL)
++        CyaSSL_Debugging_ON();
++#endif
++        if (CurrentDir("echoserver"))
++            ChangeDirBack(2);
++        else if (CurrentDir("Debug") || CurrentDir("Release"))
++            ChangeDirBack(3);
++        echoserver_test(&args);
++        CyaSSL_Cleanup();
++
++#ifdef HAVE_CAVIUM
++        CspShutdown(CAVIUM_DEV_ID);
++#endif
++        return args.return_code;
++    }
++
++        
++#endif /* NO_MAIN_DRIVER */
++
++
++
++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/main.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/main.c
+--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/main.c	1969-12-31 17:00:00.000000000 -0700
++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/main.c	2015-02-15 14:28:52.000000000 -0700
+@@ -0,0 +1,102 @@
++/* main.c
++ *
++ * Copyright (C) 2006-2015 wolfSSL Inc.
++ *
++ * This file is part of wolfSSL. (formerly known as CyaSSL)
++ *
++ * wolfSSL is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * wolfSSL is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
++ */
++ 
++#ifdef HAVE_CONFIG_H
++    #include 
++#endif
++
++#include 
++#include 
++
++#include "cmsis_os.h"
++#if !defined(NO_FILESYSTEM)
++#include "rl_fs.h" 
++#endif
++#include "rl_net.h" 
++#include 
++#include "cyassl_MDK_ARM.h"
++#include 
++
++/*-----------------------------------------------------------------------------
++ *        Initialize a Flash Memory Card
++ *----------------------------------------------------------------------------*/
++#if !defined(NO_FILESYSTEM)
++static void init_filesystem (void) {
++  int32_t retv;
++
++  retv = finit ("M0:");
++  if (retv == 0) {
++    retv = fmount ("M0:");
++    if (retv == 0) {
++      printf ("Drive M0 ready!\n");
++    }
++    else {
++      printf ("Drive M0 mount failed!\n");
++    }
++  }
++  else {
++    printf ("Drive M0 initialization failed!\n");
++  }
++}
++#endif
++
++/*-----------------------------------------------------------------------------
++ *        TCP/IP tasks
++ *----------------------------------------------------------------------------*/
++void tcp_poll (void const *arg)
++{
++    CYASSL_MSG("TCP polling started.\n") ;
++    while (1) {
++        net_main ();
++        osDelay(1) ;
++    }
++}
++
++extern void shell_main(void * args) ;
++extern void init_time(void) ;
++
++osThreadDef (tcp_poll, osPriorityHigh, 1, 0) ;
++/*-----------------------------------------------------------------------------
++ *       mian entry 
++ *----------------------------------------------------------------------------*/
++int myoptind = 0;
++char* myoptarg = NULL;
++
++int main() 
++{
++    void *arg = NULL ;
++	
++	#if !defined(NO_FILESYSTEM)
++    init_filesystem ();
++	#endif
++	
++    net_initialize() ;
++    
++    osThreadCreate (osThread (tcp_poll), NULL); 
++    osDelay(10000) ;  /* wait for DHCP */
++    #if defined(DEBUG_CYASSL)
++         printf("Turning ON Debug message\n") ;
++         CyaSSL_Debugging_ON() ;
++    #endif
++
++    shell_main(arg) ;   
++
++}
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/server.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/server.c
+--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/server.c	1969-12-31 17:00:00.000000000 -0700
++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/server.c	2015-02-15 14:28:52.000000000 -0700
+@@ -0,0 +1,605 @@
++/* server.c
++ *
++ * Copyright (C) 2006-2015 wolfSSL Inc.
++ *
++ * This file is part of wolfSSL. (formerly known as CyaSSL)
++ *
++ * wolfSSL is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * wolfSSL is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
++ */
++
++#ifdef HAVE_CONFIG_H
++    #include 
++#endif
++
++#include 
++
++#if !defined(CYASSL_TRACK_MEMORY) && !defined(NO_MAIN_DRIVER)
++    /* in case memory tracker wants stats */
++    #define CYASSL_TRACK_MEMORY
++#endif
++
++#if defined(CYASSL_MDK_ARM)
++        #include 
++        #include 
++
++        #if defined(CYASSL_MDK5)
++            #include "cmsis_os.h"
++            #include "rl_fs.h" 
++            #include "rl_net.h" 
++        #else
++            #include "rtl.h"
++        #endif
++
++        #include "cyassl_MDK_ARM.h"
++#endif
++#include 
++#include 
++
++#include "examples/server/server.h"
++
++
++#ifdef CYASSL_CALLBACKS
++    int srvHandShakeCB(HandShakeInfo*);
++    int srvTimeoutCB(TimeoutInfo*);
++    Timeval srvTo;
++#endif
++
++static void NonBlockingSSL_Accept(SSL* ssl)
++{
++#ifndef CYASSL_CALLBACKS
++    int ret = SSL_accept(ssl);
++#else
++    int ret = CyaSSL_accept_ex(ssl, srvHandShakeCB, srvTimeoutCB, srvTo);
++#endif
++    int error = SSL_get_error(ssl, 0);
++    SOCKET_T sockfd = (SOCKET_T)CyaSSL_get_fd(ssl);
++    int select_ret;
++
++    while (ret != SSL_SUCCESS && (error == SSL_ERROR_WANT_READ ||
++                                  error == SSL_ERROR_WANT_WRITE)) {
++        int currTimeout = 1;
++
++        if (error == SSL_ERROR_WANT_READ)
++            printf("... server would read block\n");
++        else
++            printf("... server would write block\n");
++
++#ifdef CYASSL_DTLS
++        currTimeout = CyaSSL_dtls_get_current_timeout(ssl);
++#endif
++        select_ret = tcp_select(sockfd, currTimeout);
++
++        if ((select_ret == TEST_RECV_READY) ||
++                                        (select_ret == TEST_ERROR_READY)) {
++            #ifndef CYASSL_CALLBACKS
++                ret = SSL_accept(ssl);
++            #else
++                ret = CyaSSL_accept_ex(ssl,
++                                    srvHandShakeCB, srvTimeoutCB, srvTo);
++            #endif
++            error = SSL_get_error(ssl, 0);
++        }
++        else if (select_ret == TEST_TIMEOUT && !CyaSSL_dtls(ssl)) {
++            error = SSL_ERROR_WANT_READ;
++        }
++#ifdef CYASSL_DTLS
++        else if (select_ret == TEST_TIMEOUT && CyaSSL_dtls(ssl) &&
++                                            CyaSSL_dtls_got_timeout(ssl) >= 0) {
++            error = SSL_ERROR_WANT_READ;
++        }
++#endif
++        else {
++            error = SSL_FATAL_ERROR;
++        }
++    }
++    if (ret != SSL_SUCCESS)
++        err_sys("SSL_accept failed");
++}
++
++
++static void Usage(void)
++{
++    printf("server "    LIBCYASSL_VERSION_STRING
++           " NOTE: All files relative to CyaSSL home dir\n");
++    printf("-?          Help, print this usage\n");
++    printf("-p     Port to listen on, not 0, default %d\n", yasslPort);
++    printf("-v     SSL version [0-3], SSLv3(0) - TLS1.2(3)), default %d\n",
++                                 SERVER_DEFAULT_VERSION);
++    printf("-l     Cipher list\n");
++    printf("-c    Certificate file,           default %s\n", svrCert);
++    printf("-k    Key file,                   default %s\n", svrKey);
++    printf("-A    Certificate Authority file, default %s\n", cliCert);
++    printf("-d          Disable client cert check\n");
++    printf("-b          Bind to any interface instead of localhost only\n");
++    printf("-s          Use pre Shared keys\n");
++    printf("-t          Track CyaSSL memory use\n");
++    printf("-u          Use UDP DTLS,"
++           " add -v 2 for DTLSv1 (default), -v 3 for DTLSv1.2\n");
++    printf("-f          Fewer packets/group messages\n");
++    printf("-N          Use Non-blocking sockets\n");
++    printf("-S     Use Host Name Indication\n");
++#ifdef HAVE_OCSP
++    printf("-o          Perform OCSP lookup on peer certificate\n");
++    printf("-O     Perform OCSP lookup using  as responder\n");
++#endif
++#ifdef HAVE_PK_CALLBACKS 
++    printf("-P          Public Key Callbacks\n");
++#endif
++}
++
++THREAD_RETURN CYASSL_THREAD server_test(void* args)
++{
++    SOCKET_T sockfd   = 0;
++    SOCKET_T clientfd = 0;
++
++    SSL_METHOD* method = 0;
++    SSL_CTX*    ctx    = 0;
++    SSL*        ssl    = 0;
++
++    char   msg[] = "I hear you fa shizzle!";
++    char   input[80];
++    int    idx;
++    int    ch;
++    int    version = SERVER_DEFAULT_VERSION;
++    int    doCliCertCheck = 0; /* = 0 for no Realtime Clock environment */
++    int    useAnyAddr = 0;
++    word16 port = yasslPort;
++    int    usePsk = 0;
++    int    doDTLS = 0;
++    int    useNtruKey   = 0;
++    int    nonBlocking  = 0;
++    int    trackMemory  = 0;
++    int    fewerPackets = 0;
++    int    pkCallbacks  = 0;
++    char*  cipherList = NULL;
++    char*  verifyCert = (char*)cliCert;
++    char*  ourCert    = (char*)svrCert;
++    char*  ourKey     = (char*)svrKey;
++    int    argc = ((func_args*)args)->argc;
++    char** argv = ((func_args*)args)->argv;
++
++#ifdef HAVE_SNI
++    char*  sniHostName = NULL;
++#endif
++
++#ifdef HAVE_OCSP
++    int    useOcsp  = 0;
++    char*  ocspUrl  = NULL;
++#endif
++
++    ((func_args*)args)->return_code = -1; /* error state */
++
++#ifdef NO_RSA
++    verifyCert = (char*)cliEccCert;
++    ourCert    = (char*)eccCert;
++    ourKey     = (char*)eccKey;
++#endif
++    (void)trackMemory;
++    (void)pkCallbacks;
++
++    while ((ch = mygetopt(argc, argv, "?dbstnNufPp:v:l:A:c:k:S:oO:")) != -1) {
++        switch (ch) {
++            case '?' :
++                Usage();
++                exit(EXIT_SUCCESS);
++
++            case 'd' :
++                doCliCertCheck = 0;
++                break;
++
++            case 'b' :
++                useAnyAddr = 1;
++                break;
++
++            case 's' :
++                usePsk = 1;
++                break;
++
++            case 't' :
++            #ifdef USE_CYASSL_MEMORY
++                trackMemory = 1;
++            #endif
++                break;
++
++            case 'n' :
++                useNtruKey = 1;
++                break;
++
++            case 'u' :
++                doDTLS  = 1;
++                break;
++
++            case 'f' :
++                fewerPackets = 1;
++                break;
++
++            case 'P' :
++            #ifdef HAVE_PK_CALLBACKS 
++                pkCallbacks = 1;
++            #endif
++                break;
++
++            case 'p' :
++                port = (word16)atoi(myoptarg);
++                #if !defined(NO_MAIN_DRIVER) || defined(USE_WINDOWS_API)
++                    if (port == 0)
++                        err_sys("port number cannot be 0");
++                #endif
++                break;
++
++            case 'v' :
++                version = atoi(myoptarg);
++                if (version < 0 || version > 3) {
++                    Usage();
++                    exit(MY_EX_USAGE);
++                }
++                break;
++
++            case 'l' :
++                cipherList = myoptarg;
++                break;
++
++            case 'A' :
++                verifyCert = myoptarg;
++                break;
++
++            case 'c' :
++                ourCert = myoptarg;
++                break;
++
++            case 'k' :
++                ourKey = myoptarg;
++                break;
++
++            case 'N':
++                nonBlocking = 1;
++                break;
++
++            case 'S' :
++                #ifdef HAVE_SNI
++                    sniHostName = myoptarg;
++                #endif
++                break;
++
++            case 'o' :
++                #ifdef HAVE_OCSP
++                    useOcsp = 1;
++                #endif
++                break;
++
++            case 'O' :
++                #ifdef HAVE_OCSP
++                    useOcsp = 1;
++                    ocspUrl = myoptarg;
++                #endif
++                break;
++
++            default:
++                Usage();
++                exit(MY_EX_USAGE);
++        }
++    }
++
++    myoptind = 0;      /* reset for test cases */
++
++    /* sort out DTLS versus TLS versions */
++    if (version == CLIENT_INVALID_VERSION) {
++        if (doDTLS)
++            version = CLIENT_DTLS_DEFAULT_VERSION;
++        else
++            version = CLIENT_DEFAULT_VERSION;
++    }
++    else {
++        if (doDTLS) {
++            if (version == 3)
++                version = -2;
++            else
++                version = -1;
++        }
++    }
++
++#ifdef USE_CYASSL_MEMORY
++    if (trackMemory)
++        InitMemoryTracker(); 
++#endif
++
++    switch (version) {
++#ifndef NO_OLD_TLS
++        case 0:
++            method = SSLv3_server_method();
++            break;
++
++    #ifndef NO_TLS
++        case 1:
++            method = TLSv1_server_method();
++            break;
++
++
++        case 2:
++            method = TLSv1_1_server_method();
++            break;
++
++        #endif
++#endif
++
++#ifndef NO_TLS
++        case 3:
++            method = TLSv1_2_server_method();
++            break;
++#endif
++                
++#ifdef CYASSL_DTLS
++        case -1:
++            method = DTLSv1_server_method();
++            break;
++
++        case -2:
++            method = DTLSv1_2_server_method();
++            break;
++#endif
++
++        default:
++            err_sys("Bad SSL version");
++    }
++
++    if (method == NULL)
++        err_sys("unable to get method");
++
++    ctx = SSL_CTX_new(method);
++    if (ctx == NULL)
++        err_sys("unable to get ctx");
++
++    if (cipherList)
++        if (SSL_CTX_set_cipher_list(ctx, cipherList) != SSL_SUCCESS)
++            err_sys("server can't set cipher list 1");
++
++#ifdef CYASSL_LEANPSK
++    usePsk = 1;
++#endif
++
++#if defined(NO_RSA) && !defined(HAVE_ECC)
++    usePsk = 1;
++#endif
++
++    if (fewerPackets)
++        CyaSSL_CTX_set_group_messages(ctx);
++
++#if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER)
++    SSL_CTX_set_default_passwd_cb(ctx, PasswordCallBack);
++#endif
++
++#if !defined(NO_FILESYSTEM) && !defined(NO_CERTS)
++    if (!usePsk) {
++        if (SSL_CTX_use_certificate_file(ctx, ourCert, SSL_FILETYPE_PEM)
++                                         != SSL_SUCCESS)
++            err_sys("can't load server cert file, check file and run from"
++                    " CyaSSL home dir");
++    }
++#endif
++
++#ifdef HAVE_NTRU
++    if (useNtruKey) {
++        if (CyaSSL_CTX_use_NTRUPrivateKey_file(ctx, ourKey)
++                                               != SSL_SUCCESS)
++            err_sys("can't load ntru key file, "
++                    "Please run from CyaSSL home dir");
++    }
++#endif
++
++#if !defined(NO_FILESYSTEM) && !defined(NO_CERTS)
++    if (!useNtruKey && !usePsk) {
++        if (SSL_CTX_use_PrivateKey_file(ctx, ourKey, SSL_FILETYPE_PEM)
++                                         != SSL_SUCCESS)
++            err_sys("can't load server private key file, check file and run "
++                "from CyaSSL home dir");
++    }
++#endif
++
++    if (usePsk) {
++#ifndef NO_PSK
++        SSL_CTX_set_psk_server_callback(ctx, my_psk_server_cb);
++        SSL_CTX_use_psk_identity_hint(ctx, "cyassl server");
++        if (cipherList == NULL) {
++            const char *defaultCipherList;
++            #ifdef HAVE_NULL_CIPHER
++                defaultCipherList = "PSK-NULL-SHA256";
++            #else
++                defaultCipherList = "PSK-AES128-CBC-SHA256";
++            #endif
++            if (SSL_CTX_set_cipher_list(ctx, defaultCipherList) != SSL_SUCCESS)
++                err_sys("server can't set cipher list 2");
++        }
++#endif
++    }
++
++#if !defined(NO_FILESYSTEM) && !defined(NO_CERTS)
++    /* if not using PSK, verify peer with certs */
++    if (doCliCertCheck && usePsk == 0) {
++        SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER |
++                                SSL_VERIFY_FAIL_IF_NO_PEER_CERT,0);
++        if (SSL_CTX_load_verify_locations(ctx, verifyCert, 0) != SSL_SUCCESS)
++            err_sys("can't load ca file, Please run from CyaSSL home dir");
++    }
++#endif
++
++#if defined(CYASSL_SNIFFER) && !defined(HAVE_NTRU) && !defined(HAVE_ECC)
++    /* don't use EDH, can't sniff tmp keys */
++    if (cipherList == NULL) {
++        if (SSL_CTX_set_cipher_list(ctx, "AES256-SHA256") != SSL_SUCCESS)
++            err_sys("server can't set cipher list 3");
++    }
++#endif
++
++#ifdef HAVE_SNI
++    if (sniHostName)
++        if (CyaSSL_CTX_UseSNI(ctx, CYASSL_SNI_HOST_NAME, sniHostName,
++                                           XSTRLEN(sniHostName)) != SSL_SUCCESS)
++            err_sys("UseSNI failed");
++#endif
++
++    ssl = SSL_new(ctx);
++    if (ssl == NULL)
++        err_sys("unable to get SSL");
++
++#ifdef HAVE_CRL
++    CyaSSL_EnableCRL(ssl, 0);
++    CyaSSL_LoadCRL(ssl, crlPemDir, SSL_FILETYPE_PEM, CYASSL_CRL_MONITOR |
++                                                     CYASSL_CRL_START_MON);
++    CyaSSL_SetCRL_Cb(ssl, CRL_CallBack);
++#endif
++#ifdef HAVE_OCSP
++    if (useOcsp) {
++        if (ocspUrl != NULL) {
++            CyaSSL_CTX_SetOCSP_OverrideURL(ctx, ocspUrl);
++            CyaSSL_CTX_EnableOCSP(ctx, CYASSL_OCSP_NO_NONCE
++                                                    | CYASSL_OCSP_URL_OVERRIDE);
++        }
++        else
++            CyaSSL_CTX_EnableOCSP(ctx, CYASSL_OCSP_NO_NONCE);
++    }
++#endif
++#ifdef HAVE_PK_CALLBACKS
++    if (pkCallbacks)
++        SetupPkCallbacks(ctx, ssl);
++#endif
++
++    tcp_accept(&sockfd, &clientfd, (func_args*)args, port, useAnyAddr, doDTLS,
++               0);
++    if (!doDTLS) 
++        CloseSocket(sockfd);
++
++    SSL_set_fd(ssl, clientfd);
++    if (usePsk == 0) {
++        #if !defined(NO_FILESYSTEM) && defined(OPENSSL_EXTRA)
++            CyaSSL_SetTmpDH_file(ssl, dhParam, SSL_FILETYPE_PEM);
++        #elif !defined(NO_CERTS)
++            SetDH(ssl);  /* repick suites with DHE, higher priority than PSK */
++        #endif
++    }
++
++#ifndef CYASSL_CALLBACKS
++    if (nonBlocking) {
++        CyaSSL_set_using_nonblock(ssl, 1);
++        tcp_set_nonblocking(&clientfd);
++        NonBlockingSSL_Accept(ssl);
++    } else if (SSL_accept(ssl) != SSL_SUCCESS) {
++        int err = SSL_get_error(ssl, 0);
++        char buffer[CYASSL_MAX_ERROR_SZ];
++        printf("error = %d, %s\n", err, ERR_error_string(err, buffer));
++        err_sys("SSL_accept failed");
++    }
++#else
++    NonBlockingSSL_Accept(ssl);
++#endif
++    showPeer(ssl);
++
++    idx = SSL_read(ssl, input, sizeof(input)-1);
++    if (idx > 0) {
++        input[idx] = 0;
++        printf("Client message: %s\n", input);
++
++    }
++    else if (idx < 0) {
++        int readErr = SSL_get_error(ssl, 0);
++        if (readErr != SSL_ERROR_WANT_READ)
++            err_sys("SSL_read failed");
++    }
++
++    if (SSL_write(ssl, msg, sizeof(msg)) != sizeof(msg))
++        err_sys("SSL_write failed");
++        
++    #if defined(CYASSL_MDK_SHELL) && defined(HAVE_MDK_RTX)
++        os_dly_wait(500) ;
++    #endif
++
++    SSL_shutdown(ssl);
++    SSL_free(ssl);
++    SSL_CTX_free(ctx);
++    
++    CloseSocket(clientfd);
++    ((func_args*)args)->return_code = 0;
++
++#ifdef USE_CYASSL_MEMORY
++    if (trackMemory)
++        ShowMemoryTracker();
++#endif /* USE_CYASSL_MEMORY */
++
++    return 0;
++}
++
++
++/* so overall tests can pull in test function */
++#ifndef NO_MAIN_DRIVER
++
++    int main(int argc, char** argv)
++    {
++        func_args args;
++
++#ifdef HAVE_CAVIUM
++        int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID);
++        if (ret != 0)
++            err_sys("Cavium OpenNitroxDevice failed");
++#endif /* HAVE_CAVIUM */
++
++        StartTCP();
++
++        args.argc = argc;
++        args.argv = argv;
++
++        CyaSSL_Init();
++#if defined(DEBUG_CYASSL) && !defined(CYASSL_MDK_SHELL)
++        CyaSSL_Debugging_ON();
++#endif
++        if (CurrentDir("server"))
++            ChangeDirBack(2);
++        else if (CurrentDir("Debug") || CurrentDir("Release"))
++            ChangeDirBack(3);
++   
++#ifdef HAVE_STACK_SIZE
++        StackSizeCheck(&args, server_test);
++#else 
++        server_test(&args);
++#endif
++        CyaSSL_Cleanup();
++
++#ifdef HAVE_CAVIUM
++        CspShutdown(CAVIUM_DEV_ID);
++#endif
++        return args.return_code;
++    }
++
++    int myoptind = 0;
++    char* myoptarg = NULL;
++
++#endif /* NO_MAIN_DRIVER */
++
++
++#ifdef CYASSL_CALLBACKS
++
++    int srvHandShakeCB(HandShakeInfo* info)
++    {
++        (void)info;
++        return 0;
++    }
++
++
++    int srvTimeoutCB(TimeoutInfo* info)
++    {
++        (void)info;
++        return 0;
++    }
++
++#endif
++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/shell.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/shell.c
+--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/shell.c	1969-12-31 17:00:00.000000000 -0700
++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/shell.c	2015-02-15 14:28:52.000000000 -0700
+@@ -0,0 +1,657 @@
++/*shell.c
++ *
++ * Copyright (C) 2006-2015 wolfSSL Inc.
++ *
++ * This file is part of wolfSSL. (formerly known as CyaSSL)
++ *
++ * wolfSSL is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * wolfSSL is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
++ */
++ 
++ /*** tiny Shell for CyaSSL apps ***/
++ 
++ #ifdef HAVE_CONFIG_H
++    #include 
++#endif
++
++#include "cyassl/internal.h"
++#undef RNG
++#include 
++
++#if defined(CYASSL_MDK_ARM)
++    #include 
++    #include 
++    #include 
++        #if defined(CYASSL_MDK5)
++            #include "cmsis_os.h"
++        #include "rl_fs.h" 
++    #else
++            #include 
++        #endif
++    #include "cyassl_MDK_ARM.h"
++#endif
++
++#ifdef CYASSL_KEIL_NET
++#include "cyassl/test.h"
++#else
++typedef struct func_args {
++    int    argc;
++    char** argv;
++    int    return_code;
++} func_args;
++#endif
++
++#ifdef NO_ECHOCLIENT
++#define echoclient_test command_not_found
++#endif
++#ifdef NO_ECHOSERVER
++#define echoserver_test command_not_found
++#endif
++#ifdef NO_SIMPLE_CLIENT
++#define client_test command_not_found
++#endif
++#ifdef NO_SIMPLE_SERVER
++#define server_test command_not_found
++#endif
++#ifdef NO_CRYPT_BENCHMARK
++#define benchmark_test command_not_found
++#endif
++#ifdef NO_CRYPT_TEST
++#define ctaocrypt_test command_not_found
++#endif
++
++#ifndef CYASSL_KEIL_NET
++#define ipaddr_comm command_not_found
++#endif
++
++#if !defined(HAVE_KEIL_RTX)
++#define stack_comm command_not_found
++#endif
++
++
++#if !defined(DEBUG_CYASSL)
++#define dbg_comm command_not_found
++#endif
++
++
++void command_not_found(void *argv) {
++        printf("Command not found\n") ;
++}
++
++extern void echoclient_test(void *args) ;
++extern void echoserver_test(void *args) ;
++extern void benchmark_test(void *args) ;
++extern void ctaocrypt_test(void *args) ;
++extern void client_test(void *args) ;
++extern void server_test(void *args) ;
++extern void kill_task(void *args) ;
++extern void ipaddr_comm(void *args) ;
++extern void stack_comm(void *args) ;
++extern void for_command(void *args) ;
++extern void dbg_comm(void *arg) ;
++extern void help_comm(void *arg) ;
++
++#if !defined(NO_CRYPT_TEST)
++
++#ifndef NO_MD5
++extern void md5_test(void *arg) ;
++#endif
++#ifdef CYASSL_MD2
++extern void md2_test(void *arg) ;
++#endif
++#ifndef NO_MD4
++extern void md4_test(void *arg) ;
++#endif
++
++extern void sha_test(void *arg) ;
++
++#ifndef NO_SHA256
++extern void sha256_test(void *arg) ;
++#endif
++#ifdef CYASSL_SHA384
++extern void sha384_test(void *arg) ;
++#endif
++
++#ifdef CYASSL_SHA512
++extern void sha512_test(void *arg) ;
++#endif
++
++#ifdef CYASSL_RIPEMD
++extern void ripemd_test(void *arg) ;
++#endif
++#ifndef NO_HMAC
++    #ifndef NO_MD5
++extern void hmac_md5_test(void *arg) ;
++    #endif
++extern void hmac_sha_test(void *arg) ;
++
++    #ifndef NO_SHA256
++extern void hmac_sha256_test(void *arg) ;
++    #endif
++
++    #ifdef CYASSL_SHA384
++extern void hmac_sha384_test(void *arg) ;
++    #endif
++#endif
++#ifndef NO_RC4
++extern void arc4_test(void *arg) ;
++#endif
++
++#ifndef NO_HC128
++extern void hc128_test(void *arg) ;
++#endif
++
++#ifndef NO_RABBIT
++extern void rabbit_test(void *arg) ;
++#endif
++
++#ifndef NO_DES3
++extern void des_test(void *arg) ;
++extern void des3_test(void *arg) ;
++#endif
++
++#ifndef NO_AES
++extern void aes_test(void *arg) ;
++#ifdef HAVE_AESGCM
++extern void aesgcm_test(void *arg) ;
++#endif
++
++#ifdef HAVE_AESCCM
++extern void aesccm_test(void *arg) ;
++#endif
++#endif
++
++#ifdef HAVE_CAMELLIA
++extern void camellia_test(void *arg) ;
++#endif
++extern void random_test(void *arg) ;
++
++#ifndef NO_RSA
++extern void rsa_test(void *arg) ;
++#endif
++
++#ifndef NO_DH
++extern void dh_test(void *arg) ;
++#endif
++
++#ifndef NO_DSA
++extern void dsa_test(void *arg) ;
++#endif
++    
++#ifndef NO_PWDBASED
++extern void pwdbased_test(void *arg) ;
++#endif
++
++#ifdef OPENSSL_EXTRA
++extern void openssl_test(void *arg) ;
++#endif
++
++#ifdef HAVE_ECC
++extern void ecc_test(void *arg) ;
++#endif
++
++#endif /* NO_CRYPT_TEST */
++
++static struct {
++  const char *command ;
++    void (*func)(void *args) ;
++}   commandTable[] = {
++    "echoclient", echoclient_test,
++    "echoserver", echoserver_test,
++    "benchmark", benchmark_test,
++    "test", ctaocrypt_test,
++    "client", client_test,
++    "server", server_test,
++    "ipaddr", ipaddr_comm,      /* TBD */
++    "stack", stack_comm,        /* On/Off check stack size */
++    "for", for_command,         /* iterate next command X times */
++    "debug", dbg_comm,          /* On/Off debug message  */
++    "help", help_comm,          /* Breif description about the commands */
++
++    /** short name **/
++    "ec", echoclient_test,
++    "es", echoserver_test,
++    "bm", benchmark_test,
++    "te", ctaocrypt_test,
++    "cl", client_test,
++    "sv", server_test,
++    "ip", ipaddr_comm,
++    "st", stack_comm,
++  "dbg", dbg_comm,
++    "?",    help_comm,
++
++/*** test suites ****/
++#if !defined(NO_CRYPT_TEST)
++#ifndef NO_MD5
++  "md5",  md5_test,
++#endif
++#ifdef CYASSL_MD2
++  "md2",  md2_test,
++#endif
++#ifndef NO_MD4
++  "md4",  md4_test,
++#endif
++  "sha",  sha_test,
++#ifndef NO_SHA256
++  "sha256",  sha256_test,
++#endif
++#ifdef CYASSL_SHA384
++  "sha384",  sha384_test,
++#endif
++#ifdef CYASSL_SHA512
++  "sha512",  sha512_test,
++#endif
++#ifdef CYASSL_RIPEMD
++  "ripemd",  ripemd_test,
++#endif
++#ifndef NO_HMAC
++  #ifndef NO_MD5
++  "hmac_md5",  hmac_md5_test,
++    #endif
++  "hmac_sha",  hmac_sha_test,
++    #ifndef NO_SHA256
++  "hmac_sha256",  hmac_sha256_test,
++    #endif
++    #ifdef CYASSL_SHA384
++  "hmac_sha384",  hmac_sha384_test,
++  #endif
++#endif
++#ifndef NO_RC4
++    "arc4",  arc4_test,
++#endif
++#ifndef NO_HC128
++  "hc128",  hc128_test,
++#endif
++#ifndef NO_RABBIT
++  "rabbit",  rabbit_test,
++#endif
++#ifndef NO_DES3
++  "des",  des_test,
++  "des3",  des3_test,
++#endif  
++#ifndef NO_AES  
++  "aes",  aes_test,
++    #ifdef HAVE_AESGCM
++  "aesgcm",  aesgcm_test,
++    #endif
++    #ifdef HAVE_AESCCM
++  "aesccm",  aesccm_test,
++    #endif
++#endif
++
++#ifdef HAVE_CAMELLIA
++  "camellia",  camellia_test,
++#endif
++  "random",  random_test,
++#ifndef NO_RSA
++  "rsa",  rsa_test,
++#endif
++#ifndef NO_DH
++  "dh",  dh_test,
++#endif
++#ifndef NO_DSA
++    "dsa",  dsa_test,
++#endif 
++#ifndef NO_PWDBASED
++  "pwdbased",  pwdbased_test,
++#endif  
++#ifdef OPENSSL_EXTRA
++  "openssl",  openssl_test,
++#endif
++#ifdef HAVE_ECC
++  "ecc",  ecc_test,
++#endif
++
++#endif /* NO_CRYPT_TEST */
++
++    "",  NULL
++} ;
++
++enum jobtype { FORGROUND, BACKGROUND }  ;
++
++#define IF_DELIMITER(ch) ((ch) == ' ' || (ch) == '\n')
++
++static int BackGround = 0 ; /* 1: background job is running */
++
++/*******  Get Command Line *****************************/
++static int getline(char * line, int sz, func_args *args, int*bf_flg) 
++{
++    char * ret ;
++    int i ;
++    
++    #define MAXARGS 10
++    #define MAXARGLEN 30
++    static char *argv[MAXARGS] ;
++    args->argv = argv ;
++    
++    putchar('>') ;
++    fflush(stdout) ;
++    ret = fgets(line, sz, stdin) ;
++    
++    #define SHELL_ERROR_FGETS -102
++    if(ret != line) return(SHELL_ERROR_FGETS) ;
++    
++    if(line[strlen(line)-2] == '&') {
++        (*bf_flg) = BACKGROUND ;
++        line[strlen(line)-2] = '\n' ;
++    } else {
++        (*bf_flg) = FORGROUND ;
++    }
++    args->argc = 0 ;
++    for(i=0; iargv[args->argc] = &(line[i]) ;
++        while(!IF_DELIMITER(line[i])) i++ ;
++        args->argc++ ;
++        if(line[i] == '\n') {
++            line[i]  = '\0' ;
++            break ;
++        } else {
++            line[i]  = '\0' ;
++        }
++    }
++    return i ;
++}
++
++
++/************* Embedded Shell Commands **********************************/
++#define IP_SIZE 16
++
++#ifdef CYASSL_KEIL_NET
++static void ipaddr_comm(void *args) 
++{
++    if(((func_args *)args)->argc == 1) {
++            printf("IP addr: %s, port %d\n", yasslIP, yasslPort) ;
++    } else {
++        if(BackGround != 0) {
++        printf("Cannot change IP addr while background server is running\n") ;
++        } else if(((func_args *)args)->argc == 3 && 
++                  ((func_args *)args)->argv[1][0] == '-'&& 
++                  ((func_args *)args)->argv[1][1] == 'a' ) {
++/*          strcpy(yasslIP, ((func_args *)args)->argv[2]) ; */
++        } else if(((func_args *)args)->argc == 3 && 
++                  ((func_args *)args)->argv[1][0] == '-' && 
++                  ((func_args *)args)->argv[1][1] == 'p' ) {
++/*          yasslPort = atoi(((func_args *)args)->argv[2]) ; */
++        } else printf("Invalid argument\n") ; 
++    }
++}
++
++#endif
++
++
++
++#if defined(HAVE_KEIL_RTX)
++static int stack_ck = 0 ;
++
++void stack_comm(void *args) 
++{
++    if(stack_ck) {
++        printf("Stack Check: Off\n") ;
++        stack_ck = 0 ;
++    } else {
++        printf("Stack Check: On\n") ;
++        stack_ck = 1 ;
++    }
++}
++    
++#define FILL_PATTERN 0xa596695a
++void stack_fill(char * stack, int size)
++{
++    int i ;
++
++    if(stack_ck == 0)return ;
++    for(i=1; iargc == 1) {
++        printf("For %d times\n", for_iteration) ;
++    } else if( args == NULL || ((func_args *)args)->argc == 2) {
++        for_iteration = atoi(((func_args *)args)->argv[1]) ;
++    } else printf("Invalid argument\n") ;
++}
++
++
++#if defined(DEBUG_CYASSL)
++
++static int CyasslDebug = 1 ;
++
++static void dbg_comm(void *args) 
++{
++    if(CyasslDebug == 1) {
++        CyasslDebug = 0 ;
++        printf("Turning OFF Debug message\n") ;
++        CyaSSL_Debugging_OFF() ;
++    } else {
++        CyasslDebug = 1 ;
++        printf("Turning ON Debug message\n") ;
++        CyaSSL_Debugging_ON() ;
++    }
++}
++#endif
++
++static void help_comm(void *args) 
++{
++    static char *commands[] = {
++        "test", 
++        "benchmark",
++        "echoserver&            : simple echo server in background mode",
++        "echoclient             : simple echo client followed by any input string, or \"quit\", \"break\"",
++        "server&                : simple server in background mode",
++        "client                 : simple client",
++        "client -g -v [0123] -h xxx.xxx.xxx.xxx -p 443  : usage example",
++        "server/client -h        :  help for server/client command",
++        "help",
++        ""  
++    } ;
++
++    int i ;
++    printf("Commands:\n") ;
++    for(i=0; commands[i][0] ; i++)
++        printf("    %s\n", commands[i]) ;
++
++}
++
++
++
++#define BG_JOB_STACK_SIZE 8000
++#if (!defined(NO_SIMPLE_SERVER) && !defined(NO_ECHOSERVER)) && \
++                                                   defined(HAVE_KEIL_RTX)
++#if !defined(CYASSL_CMSIS_RTOS)
++static char bg_job_stack[BG_JOB_STACK_SIZE] ;
++#endif
++
++#endif
++
++#define COMMAND_STACK_SIZE 10000
++#if defined(HAVE_KEIL_RTX) && !defined(CYASSL_CMSIS_RTOS)
++static char command_stack[COMMAND_STACK_SIZE] ;
++#endif
++
++
++#ifdef  HAVE_KEIL_RTX
++static   CyaSSL_Mutex command_mutex ;
++#endif
++
++void exit_command(void) {
++	  printf("Command Aborted\n") ;
++    #ifdef CYASSL_CMSIS_RTOS
++        osThreadTerminate(osThreadGetId()) ;
++    #else
++        os_tsk_delete_self() ;
++    #endif
++}
++
++
++/***********    Invoke Forground Command  *********************/
++static void command_invoke(void const *args) 
++{
++    void (*func)(void const * ) ;
++    int i,iteration ;
++    
++    func = (void(*)(void const *))((func_args *)args)->argv[0] ; 
++    #ifdef  HAVE_KEIL_RTX
++    LockMutex((CyaSSL_Mutex *)&command_mutex) ;
++    #endif
++    iteration = for_iteration ;
++    for(i=0; i< iteration; i++) {
++        if(iteration > 1) printf("--- Start for %d ---->\n", i) ;
++        #if defined(HAVE_KEIL_RTX) && !defined(CYASSL_CMSIS_RTOS)
++        stack_fill(command_stack, COMMAND_STACK_SIZE) ;
++        #endif
++                
++        func(args) ;        /* invoke command */
++                
++        #if defined(HAVE_KEIL_RTX)&& !defined(CYASSL_CMSIS_RTOS)
++        stack_check(command_stack, COMMAND_STACK_SIZE) ;
++        #endif
++    }
++
++    if(iteration > 1) 
++    for_iteration = 1 ;
++    osDelay(20000) ;
++    #ifdef HAVE_KEIL_RTX
++        UnLockMutex((CyaSSL_Mutex *)&command_mutex) ;
++        #ifdef CYASSL_CMSIS_RTOS
++            osThreadTerminate(osThreadGetId()) ;
++        #else
++            os_tsk_delete_self() ;
++        #endif
++    #endif
++}
++
++#if defined(HAVE_KEIL_RTX)
++/*******  Invoke Background Job   *******************************/
++static void bg_job_invoke(void const *args) 
++{
++    void (*func)(void const * ) ;
++    BackGround = 1 ; 
++    #if defined(HAVE_KEIL_RTX)&& !defined(CYASSL_CMSIS_RTOS)
++    stack_fill(bg_job_stack, BG_JOB_STACK_SIZE) ;
++    #endif
++
++    func = (void(*)(void const *))((func_args *)args)->argv[0] ; 
++    func(args) ;        /* invoke command */
++    #if defined(HAVE_KEIL_RTX) && !defined(CYASSL_CMSIS_RTOS)
++    stack_check(bg_job_stack, BG_JOB_STACK_SIZE) ;
++    #endif
++    
++    osDelay(20000) ;
++    BackGround = 0 ;
++
++    #ifdef CYASSL_CMSIS_RTOS
++        osThreadTerminate(osThreadGetId()) ;
++    #else   
++        os_tsk_delete_self() ; ;
++    #endif
++}
++#endif
++
++#define LINESIZE 100
++static char line[LINESIZE] ;
++
++#if defined(CYASSL_CMSIS_RTOS)
++    osThreadDef (command_invoke, osPriorityAboveNormal , 1, COMMAND_STACK_SIZE) ;
++    osThreadDef (bg_job_invoke, osPriorityNormal , 1 , BG_JOB_STACK_SIZE) ;
++#endif
++/********* SHEULL MAIN LOOP ***********************************/
++void shell_main(void *arg) {
++    int i ; 
++    func_args args ;
++    int bf_flg ;
++   
++    i = BackGround ; 
++        /* Dummy for avoiding warning: BackGround is defined but not used. */
++    
++ #if defined(HAVE_KEIL_RTX)
++    InitMutex(&command_mutex) ;
++#endif
++    help_comm(NULL) ;
++    
++    printf("Starting Shell\n") ;
++    while(1) {
++        if(getline(line,  LINESIZE, &args, &bf_flg) > 0) {
++        for(i=0; commandTable[i].func != NULL; i++) {
++            if(strcmp(commandTable[i].command, args.argv[0]) == 0) {
++            args.argv[0] = (char *) commandTable[i].func ;
++                if(bf_flg == FORGROUND) {
++                    #if defined(HAVE_KEIL_RTX) && !defined(CYASSL_CMSIS_RTOS)
++                        UnLockMutex((CyaSSL_Mutex *)&command_mutex) ;
++                        os_tsk_create_user_ex( (void(*)(void *))&command_invoke, 7,
++                                 command_stack, COMMAND_STACK_SIZE, &args) ;
++                    #else
++                        #if defined(CYASSL_CMSIS_RTOS)
++                             UnLockMutex((CyaSSL_Mutex *)&command_mutex) ;
++                             osThreadCreate (osThread (command_invoke) , &args);   
++                        #else
++                              command_invoke(&args) ;
++                        #endif
++                    #endif
++                    #ifdef  HAVE_KEIL_RTX
++                    LockMutex((CyaSSL_Mutex *)&command_mutex) ;
++                    #endif
++                } else {
++                    #if (!defined(NO_SIMPLE_SERVER) && \
++                         !defined(NO_ECHOSERVER)) && \
++                         defined(HAVE_KEIL_RTX)
++                    if(BackGround != 0) {
++                        printf("Multiple background servers not supported.\n") ;
++                    } else {
++                        printf("\"%s\" is running with the background mode.\n", 
++                                                     commandTable[i].command) ;
++                        #if  defined(HAVE_KEIL_RTX) && !defined(CYASSL_CMSIS_RTOS)
++                             os_tsk_create_user_ex( (void(*)(void *))&bg_job_invoke, 
++                                   6, bg_job_stack, BG_JOB_STACK_SIZE, &args) ;
++                        #else
++                                osThreadCreate (osThread (bg_job_invoke),  &args); 
++                                osDelay (500) ;
++                        #endif
++                    }
++                    #else
++                    printf("Invalid Command: no background job\n") ;
++                    #endif
++                }
++                break ;
++            }
++        }
++        if(commandTable[i].func == NULL)
++            printf("Command not found\n") ;
++        }
++    }
++}
++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/test.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/test.c
+--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/test.c	1969-12-31 17:00:00.000000000 -0700
++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/test.c	2015-02-15 14:28:52.000000000 -0700
+@@ -0,0 +1,4758 @@
++/* test.c
++ *
++ * Copyright (C) 2006-2015 wolfSSL Inc.
++ *
++ * This file is part of wolfSSL. (formerly known as CyaSSL)
++ *
++ * wolfSSL is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * wolfSSL is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
++ */
++
++#ifdef HAVE_CONFIG_H
++    #include 
++#endif
++
++#include 
++
++#ifdef XMALLOC_USER
++    #include   /* we're using malloc / free direct here */
++#endif
++
++#ifndef NO_CRYPT_TEST
++
++#ifdef CYASSL_TEST_CERT
++    #include 
++#else
++    #include 
++#endif
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#ifdef HAVE_ECC
++    #include 
++#endif
++#ifdef HAVE_BLAKE2
++    #include 
++#endif
++#ifdef HAVE_LIBZ
++    #include 
++#endif
++#ifdef HAVE_PKCS7
++    #include 
++#endif
++
++#ifdef _MSC_VER
++    /* 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy */
++    #pragma warning(disable: 4996)
++#endif
++
++#ifdef OPENSSL_EXTRA
++    #include 
++    #include 
++    #include 
++    #include 
++#endif
++
++
++#if defined(USE_CERT_BUFFERS_1024) || defined(USE_CERT_BUFFERS_2048)
++    /* include test cert and key buffers for use with NO_FILESYSTEM */
++    #if defined(CYASSL_MDK_ARM)
++        #include "cert_data.h"
++                        /* use certs_test.c for initial data, so other
++                                               commands can share the data. */
++    #else
++        #include 
++    #endif
++#endif
++
++#if defined(CYASSL_MDK_ARM)
++        #include 
++        #include 
++    extern FILE * CyaSSL_fopen(const char *fname, const char *mode) ;
++    #define fopen CyaSSL_fopen
++#endif
++
++#ifdef HAVE_NTRU
++    #include "crypto_ntru.h"
++#endif
++#ifdef HAVE_CAVIUM
++    #include "cavium_sysdep.h"
++    #include "cavium_common.h"
++    #include "cavium_ioctl.h"
++#endif
++
++#ifdef FREESCALE_MQX
++    #include 
++    #include 
++    #include 
++#else
++    #include 
++#endif
++
++
++#ifdef THREADX
++    /* since just testing, use THREADX log printf instead */
++    int dc_log_printf(char*, ...);
++        #undef printf
++        #define printf dc_log_printf
++#endif
++
++#include "ctaocrypt/test/test.h"
++
++
++typedef struct testVector {
++    const char*  input;
++    const char*  output;
++    size_t inLen;
++    size_t outLen;
++} testVector;
++
++int  md2_test(void);
++int  md5_test(void);
++int  md4_test(void);
++int  sha_test(void);
++int  sha256_test(void);
++int  sha512_test(void);
++int  sha384_test(void);
++int  hmac_md5_test(void);
++int  hmac_sha_test(void);
++int  hmac_sha256_test(void);
++int  hmac_sha384_test(void);
++int  hmac_sha512_test(void);
++int  hmac_blake2b_test(void);
++int  hkdf_test(void);
++int  arc4_test(void);
++int  hc128_test(void);
++int  rabbit_test(void);
++int  des_test(void);
++int  des3_test(void);
++int  aes_test(void);
++int  aesgcm_test(void);
++int  gmac_test(void);
++int  aesccm_test(void);
++int  camellia_test(void);
++int  rsa_test(void);
++int  dh_test(void);
++int  dsa_test(void);
++int  random_test(void);
++int  pwdbased_test(void);
++int  ripemd_test(void);
++int  openssl_test(void);   /* test mini api */
++int pbkdf1_test(void);
++int pkcs12_test(void);
++int pbkdf2_test(void);
++#ifdef HAVE_ECC
++    int  ecc_test(void);
++    #ifdef HAVE_ECC_ENCRYPT
++        int  ecc_encrypt_test(void);
++    #endif
++#endif
++#ifdef HAVE_BLAKE2
++    int  blake2b_test(void);
++#endif
++#ifdef HAVE_LIBZ
++    int compress_test(void);
++#endif
++#ifdef HAVE_PKCS7
++    int pkcs7enveloped_test(void);
++    int pkcs7signed_test(void);
++#endif
++
++
++
++static void err_sys(const char* msg, int es)
++{
++    printf("%s error = %d\n", msg, es);
++    #if !defined(THREADX) && !defined(CYASSL_MDK_ARM)
++  	if (msg)
++        exit(es);
++    #endif
++    return;
++}
++
++/* func_args from test.h, so don't have to pull in other junk */
++typedef struct func_args {
++    int    argc;
++    char** argv;
++    int    return_code;
++} func_args;
++
++
++
++void ctaocrypt_test(void* args)
++{
++    int ret = 0;
++
++    ((func_args*)args)->return_code = -1; /* error state */
++
++#if !defined(NO_BIG_INT)
++    if (CheckCtcSettings() != 1)
++        err_sys("Build vs runtime math mismatch\n", -1234);
++
++#ifdef USE_FAST_MATH
++    if (CheckFastMathSettings() != 1)
++        err_sys("Build vs runtime fastmath FP_MAX_BITS mismatch\n", -1235);
++#endif /* USE_FAST_MATH */
++#endif /* !NO_BIG_INT */
++
++
++#ifndef NO_MD5
++    if ( (ret = md5_test()) != 0)
++        err_sys("MD5      test failed!\n", ret);
++    else
++        printf( "MD5      test passed!\n");
++#endif
++
++#ifdef CYASSL_MD2
++    if ( (ret = md2_test()) != 0)
++        err_sys("MD2      test failed!\n", ret);
++    else
++        printf( "MD2      test passed!\n");
++#endif
++
++#ifndef NO_MD4
++    if ( (ret = md4_test()) != 0)
++        err_sys("MD4      test failed!\n", ret);
++    else
++        printf( "MD4      test passed!\n");
++#endif
++
++#ifndef NO_SHA
++    if ( (ret = sha_test()) != 0)
++        err_sys("SHA      test failed!\n", ret);
++    else
++        printf( "SHA      test passed!\n");
++#endif
++
++#ifndef NO_SHA256
++    if ( (ret = sha256_test()) != 0)
++        err_sys("SHA-256  test failed!\n", ret);
++    else
++        printf( "SHA-256  test passed!\n");
++#endif
++
++#ifdef CYASSL_SHA384
++    if ( (ret = sha384_test()) != 0)
++        err_sys("SHA-384  test failed!\n", ret);
++    else
++        printf( "SHA-384  test passed!\n");
++#endif
++
++#ifdef CYASSL_SHA512
++    if ( (ret = sha512_test()) != 0)
++        err_sys("SHA-512  test failed!\n", ret);
++    else
++        printf( "SHA-512  test passed!\n");
++#endif
++
++#ifdef CYASSL_RIPEMD
++    if ( (ret = ripemd_test()) != 0)
++        err_sys("RIPEMD   test failed!\n", ret);
++    else
++        printf( "RIPEMD   test passed!\n");
++#endif
++
++#ifdef HAVE_BLAKE2
++    if ( (ret = blake2b_test()) != 0)
++        err_sys("BLAKE2b  test failed!\n", ret);
++    else
++        printf( "BLAKE2b  test passed!\n");
++#endif
++
++#ifndef NO_HMAC
++    #ifndef NO_MD5
++        if ( (ret = hmac_md5_test()) != 0)
++            err_sys("HMAC-MD5 test failed!\n", ret);
++        else
++            printf( "HMAC-MD5 test passed!\n");
++    #endif
++
++    #ifndef NO_SHA
++    if ( (ret = hmac_sha_test()) != 0)
++        err_sys("HMAC-SHA test failed!\n", ret);
++    else
++        printf( "HMAC-SHA test passed!\n");
++    #endif
++
++    #ifndef NO_SHA256
++        if ( (ret = hmac_sha256_test()) != 0)
++            err_sys("HMAC-SHA256 test failed!\n", ret);
++        else
++            printf( "HMAC-SHA256 test passed!\n");
++    #endif
++
++    #ifdef CYASSL_SHA384
++        if ( (ret = hmac_sha384_test()) != 0)
++            err_sys("HMAC-SHA384 test failed!\n", ret);
++        else
++            printf( "HMAC-SHA384 test passed!\n");
++    #endif
++
++    #ifdef CYASSL_SHA512
++        if ( (ret = hmac_sha512_test()) != 0)
++            err_sys("HMAC-SHA512 test failed!\n", ret);
++        else
++            printf( "HMAC-SHA512 test passed!\n");
++    #endif
++
++    #ifdef HAVE_BLAKE2
++        if ( (ret = hmac_blake2b_test()) != 0)
++            err_sys("HMAC-BLAKE2 test failed!\n", ret);
++        else
++            printf( "HMAC-BLAKE2 test passed!\n");
++    #endif
++
++    #ifdef HAVE_HKDF
++        if ( (ret = hkdf_test()) != 0)
++            err_sys("HMAC-KDF    test failed!\n", ret);
++        else
++            printf( "HMAC-KDF    test passed!\n");
++    #endif
++
++#endif
++
++#ifdef HAVE_AESGCM
++    if ( (ret = gmac_test()) != 0)
++        err_sys("GMAC     test passed!\n", ret);
++    else
++        printf( "GMAC     test passed!\n");
++#endif
++
++#ifndef NO_RC4
++    if ( (ret = arc4_test()) != 0)
++        err_sys("ARC4     test failed!\n", ret);
++    else
++        printf( "ARC4     test passed!\n");
++#endif
++
++#ifndef NO_HC128
++    if ( (ret = hc128_test()) != 0)
++        err_sys("HC-128   test failed!\n", ret);
++    else
++        printf( "HC-128   test passed!\n");
++#endif
++
++#ifndef NO_RABBIT
++    if ( (ret = rabbit_test()) != 0)
++        err_sys("Rabbit   test failed!\n", ret);
++    else
++        printf( "Rabbit   test passed!\n");
++#endif
++
++#ifndef NO_DES3
++    if ( (ret = des_test()) != 0)
++        err_sys("DES      test failed!\n", ret);
++    else
++        printf( "DES      test passed!\n");
++#endif
++
++#ifndef NO_DES3
++    if ( (ret = des3_test()) != 0)
++        err_sys("DES3     test failed!\n", ret);
++    else
++        printf( "DES3     test passed!\n");
++#endif
++
++#ifndef NO_AES
++    if ( (ret = aes_test()) != 0)
++        err_sys("AES      test failed!\n", ret);
++    else
++        printf( "AES      test passed!\n");
++
++#ifdef HAVE_AESGCM
++    if ( (ret = aesgcm_test()) != 0)
++        err_sys("AES-GCM  test failed!\n", ret);
++    else
++        printf( "AES-GCM  test passed!\n");
++#endif
++
++#ifdef HAVE_AESCCM
++    if ( (ret = aesccm_test()) != 0)
++        err_sys("AES-CCM  test failed!\n", ret);
++    else
++        printf( "AES-CCM  test passed!\n");
++#endif
++#endif
++
++#ifdef HAVE_CAMELLIA
++    if ( (ret = camellia_test()) != 0)
++        err_sys("CAMELLIA test failed!\n", ret);
++    else
++        printf( "CAMELLIA test passed!\n");
++#endif
++
++    if ( (ret = random_test()) != 0)
++        err_sys("RANDOM   test failed!\n", ret);
++    else
++        printf( "RANDOM   test passed!\n");
++
++#ifndef NO_RSA
++    if ( (ret = rsa_test()) != 0)
++        err_sys("RSA      test failed!\n", ret);
++    else
++        printf( "RSA      test passed!\n");
++#endif
++
++#ifndef NO_DH
++    if ( (ret = dh_test()) != 0)
++        err_sys("DH       test failed!\n", ret);
++    else
++        printf( "DH       test passed!\n");
++#endif
++
++#ifndef NO_DSA
++    if ( (ret = dsa_test()) != 0)
++        err_sys("DSA      test failed!\n", ret);
++    else
++        printf( "DSA      test passed!\n");
++#endif
++
++#ifndef NO_PWDBASED
++    if ( (ret = pwdbased_test()) != 0)
++        err_sys("PWDBASED test failed!\n", ret);
++    else
++        printf( "PWDBASED test passed!\n");
++#endif
++
++#ifdef OPENSSL_EXTRA
++    if ( (ret = openssl_test()) != 0)
++        err_sys("OPENSSL  test failed!\n", ret);
++    else
++        printf( "OPENSSL  test passed!\n");
++#endif
++
++#ifdef HAVE_ECC
++    if ( (ret = ecc_test()) != 0)
++        err_sys("ECC      test failed!\n", ret);
++    else
++        printf( "ECC      test passed!\n");
++    #ifdef HAVE_ECC_ENCRYPT
++        if ( (ret = ecc_encrypt_test()) != 0)
++            err_sys("ECC Enc  test failed!\n", ret);
++        else
++            printf( "ECC Enc  test passed!\n");
++    #endif
++#endif
++
++#ifdef HAVE_LIBZ
++    if ( (ret = compress_test()) != 0)
++        err_sys("COMPRESS test failed!\n", ret);
++    else
++        printf( "COMPRESS test passed!\n");
++#endif
++
++#ifdef HAVE_PKCS7
++    if ( (ret = pkcs7enveloped_test()) != 0)
++        err_sys("PKCS7enveloped test failed!\n", ret);
++    else
++        printf( "PKCS7enveloped test passed!\n");
++
++    if ( (ret = pkcs7signed_test()) != 0)
++        err_sys("PKCS7signed    test failed!\n", ret);
++    else
++        printf( "PKCS7signed    test passed!\n");
++#endif
++
++    ((func_args*)args)->return_code = ret;
++}
++
++
++#ifndef NO_MAIN_DRIVER
++
++#ifdef HAVE_CAVIUM
++
++static int OpenNitroxDevice(int dma_mode,int dev_id)
++{
++   Csp1CoreAssignment core_assign;
++   Uint32             device;
++
++   if (CspInitialize(CAVIUM_DIRECT,CAVIUM_DEV_ID))
++      return -1;
++   if (Csp1GetDevType(&device))
++      return -1;
++   if (device != NPX_DEVICE) {
++      if (ioctl(gpkpdev_hdlr[CAVIUM_DEV_ID], IOCTL_CSP1_GET_CORE_ASSIGNMENT,
++                (Uint32 *)&core_assign)!= 0)
++         return -1;
++   }
++   CspShutdown(CAVIUM_DEV_ID);
++
++   return CspInitialize(dma_mode, dev_id);
++}
++
++#endif /* HAVE_CAVIUM */
++
++    /* so overall tests can pull in test function */
++
++    int main(int argc, char** argv)
++    {
++
++        func_args args;
++
++
++#ifdef HAVE_CAVIUM
++        int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID);
++        if (ret != 0)
++            err_sys("Cavium OpenNitroxDevice failed", -1236);
++#endif /* HAVE_CAVIUM */
++
++        args.argc = argc;
++        args.argv = argv;
++
++        ctaocrypt_test(&args);
++
++#ifdef HAVE_CAVIUM
++        CspShutdown(CAVIUM_DEV_ID);
++#endif
++
++        return args.return_code;
++    }
++
++#endif /* NO_MAIN_DRIVER */
++
++
++#ifdef CYASSL_MD2
++int md2_test()
++{
++    Md2  md2;
++    byte hash[MD2_DIGEST_SIZE];
++
++    testVector a, b, c, d, e, f, g;
++    testVector test_md2[7];
++    int times = sizeof(test_md2) / sizeof(testVector), i;
++
++    a.input  = "";
++    a.output = "\x83\x50\xe5\xa3\xe2\x4c\x15\x3d\xf2\x27\x5c\x9f\x80\x69"
++               "\x27\x73";
++    a.inLen  = strlen(a.input);
++    a.outLen = MD2_DIGEST_SIZE;
++
++    b.input  = "a";
++    b.output = "\x32\xec\x01\xec\x4a\x6d\xac\x72\xc0\xab\x96\xfb\x34\xc0"
++               "\xb5\xd1";
++    b.inLen  = strlen(b.input);
++    b.outLen = MD2_DIGEST_SIZE;
++
++    c.input  = "abc";
++    c.output = "\xda\x85\x3b\x0d\x3f\x88\xd9\x9b\x30\x28\x3a\x69\xe6\xde"
++               "\xd6\xbb";
++    c.inLen  = strlen(c.input);
++    c.outLen = MD2_DIGEST_SIZE;
++
++    d.input  = "message digest";
++    d.output = "\xab\x4f\x49\x6b\xfb\x2a\x53\x0b\x21\x9f\xf3\x30\x31\xfe"
++               "\x06\xb0";
++    d.inLen  = strlen(d.input);
++    d.outLen = MD2_DIGEST_SIZE;
++
++    e.input  = "abcdefghijklmnopqrstuvwxyz";
++    e.output = "\x4e\x8d\xdf\xf3\x65\x02\x92\xab\x5a\x41\x08\xc3\xaa\x47"
++               "\x94\x0b";
++    e.inLen  = strlen(e.input);
++    e.outLen = MD2_DIGEST_SIZE;
++
++    f.input  = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345"
++               "6789";
++    f.output = "\xda\x33\xde\xf2\xa4\x2d\xf1\x39\x75\x35\x28\x46\xc3\x03"
++               "\x38\xcd";
++    f.inLen  = strlen(f.input);
++    f.outLen = MD2_DIGEST_SIZE;
++
++    g.input  = "1234567890123456789012345678901234567890123456789012345678"
++               "9012345678901234567890";
++    g.output = "\xd5\x97\x6f\x79\xd8\x3d\x3a\x0d\xc9\x80\x6c\x3c\x66\xf3"
++               "\xef\xd8";
++    g.inLen  = strlen(g.input);
++    g.outLen = MD2_DIGEST_SIZE;
++
++    test_md2[0] = a;
++    test_md2[1] = b;
++    test_md2[2] = c;
++    test_md2[3] = d;
++    test_md2[4] = e;
++    test_md2[5] = f;
++    test_md2[6] = g;
++
++    InitMd2(&md2);
++
++    for (i = 0; i < times; ++i) {
++        Md2Update(&md2, (byte*)test_md2[i].input, (word32)test_md2[i].inLen);
++        Md2Final(&md2, hash);
++
++        if (memcmp(hash, test_md2[i].output, MD2_DIGEST_SIZE) != 0)
++            return -155 - i;
++    }
++
++    return 0;
++}
++#endif
++
++#ifndef NO_MD5
++int md5_test(void)
++{
++    Md5  md5;
++    byte hash[MD5_DIGEST_SIZE];
++
++    testVector a, b, c, d, e;
++    testVector test_md5[5];
++    int times = sizeof(test_md5) / sizeof(testVector), i;
++
++    a.input  = "abc";
++    a.output = "\x90\x01\x50\x98\x3c\xd2\x4f\xb0\xd6\x96\x3f\x7d\x28\xe1\x7f"
++               "\x72";
++    a.inLen  = strlen(a.input);
++    a.outLen = MD5_DIGEST_SIZE;
++
++    b.input  = "message digest";
++    b.output = "\xf9\x6b\x69\x7d\x7c\xb7\x93\x8d\x52\x5a\x2f\x31\xaa\xf1\x61"
++               "\xd0";
++    b.inLen  = strlen(b.input);
++    b.outLen = MD5_DIGEST_SIZE;
++
++    c.input  = "abcdefghijklmnopqrstuvwxyz";
++    c.output = "\xc3\xfc\xd3\xd7\x61\x92\xe4\x00\x7d\xfb\x49\x6c\xca\x67\xe1"
++               "\x3b";
++    c.inLen  = strlen(c.input);
++    c.outLen = MD5_DIGEST_SIZE;
++
++    d.input  = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345"
++               "6789";
++    d.output = "\xd1\x74\xab\x98\xd2\x77\xd9\xf5\xa5\x61\x1c\x2c\x9f\x41\x9d"
++               "\x9f";
++    d.inLen  = strlen(d.input);
++    d.outLen = MD5_DIGEST_SIZE;
++
++    e.input  = "1234567890123456789012345678901234567890123456789012345678"
++               "9012345678901234567890";
++    e.output = "\x57\xed\xf4\xa2\x2b\xe3\xc9\x55\xac\x49\xda\x2e\x21\x07\xb6"
++               "\x7a";
++    e.inLen  = strlen(e.input);
++    e.outLen = MD5_DIGEST_SIZE;
++
++    test_md5[0] = a;
++    test_md5[1] = b;
++    test_md5[2] = c;
++    test_md5[3] = d;
++    test_md5[4] = e;
++
++    InitMd5(&md5);
++
++    for (i = 0; i < times; ++i) {
++        Md5Update(&md5, (byte*)test_md5[i].input, (word32)test_md5[i].inLen);
++        Md5Final(&md5, hash);
++
++        if (memcmp(hash, test_md5[i].output, MD5_DIGEST_SIZE) != 0)
++            return -5 - i;
++    }
++
++    return 0;
++}
++#endif /* NO_MD5 */
++
++
++#ifndef NO_MD4
++
++int md4_test(void)
++{
++    Md4  md4;
++    byte hash[MD4_DIGEST_SIZE];
++
++    testVector a, b, c, d, e, f, g;
++    testVector test_md4[7];
++    int times = sizeof(test_md4) / sizeof(testVector), i;
++
++    a.input  = "";
++    a.output = "\x31\xd6\xcf\xe0\xd1\x6a\xe9\x31\xb7\x3c\x59\xd7\xe0\xc0\x89"
++               "\xc0";
++    a.inLen  = strlen(a.input);
++    a.outLen = MD4_DIGEST_SIZE;
++
++    b.input  = "a";
++    b.output = "\xbd\xe5\x2c\xb3\x1d\xe3\x3e\x46\x24\x5e\x05\xfb\xdb\xd6\xfb"
++               "\x24";
++    b.inLen  = strlen(b.input);
++    b.outLen = MD4_DIGEST_SIZE;
++
++    c.input  = "abc";
++    c.output = "\xa4\x48\x01\x7a\xaf\x21\xd8\x52\x5f\xc1\x0a\xe8\x7a\xa6\x72"
++               "\x9d";
++    c.inLen  = strlen(c.input);
++    c.outLen = MD4_DIGEST_SIZE;
++
++    d.input  = "message digest";
++    d.output = "\xd9\x13\x0a\x81\x64\x54\x9f\xe8\x18\x87\x48\x06\xe1\xc7\x01"
++               "\x4b";
++    d.inLen  = strlen(d.input);
++    d.outLen = MD4_DIGEST_SIZE;
++
++    e.input  = "abcdefghijklmnopqrstuvwxyz";
++    e.output = "\xd7\x9e\x1c\x30\x8a\xa5\xbb\xcd\xee\xa8\xed\x63\xdf\x41\x2d"
++               "\xa9";
++    e.inLen  = strlen(e.input);
++    e.outLen = MD4_DIGEST_SIZE;
++
++    f.input  = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345"
++               "6789";
++    f.output = "\x04\x3f\x85\x82\xf2\x41\xdb\x35\x1c\xe6\x27\xe1\x53\xe7\xf0"
++               "\xe4";
++    f.inLen  = strlen(f.input);
++    f.outLen = MD4_DIGEST_SIZE;
++
++    g.input  = "1234567890123456789012345678901234567890123456789012345678"
++               "9012345678901234567890";
++    g.output = "\xe3\x3b\x4d\xdc\x9c\x38\xf2\x19\x9c\x3e\x7b\x16\x4f\xcc\x05"
++               "\x36";
++    g.inLen  = strlen(g.input);
++    g.outLen = MD4_DIGEST_SIZE;
++
++    test_md4[0] = a;
++    test_md4[1] = b;
++    test_md4[2] = c;
++    test_md4[3] = d;
++    test_md4[4] = e;
++    test_md4[5] = f;
++    test_md4[6] = g;
++
++    InitMd4(&md4);
++
++    for (i = 0; i < times; ++i) {
++        Md4Update(&md4, (byte*)test_md4[i].input, (word32)test_md4[i].inLen);
++        Md4Final(&md4, hash);
++
++        if (memcmp(hash, test_md4[i].output, MD4_DIGEST_SIZE) != 0)
++            return -205 - i;
++    }
++
++    return 0;
++}
++
++#endif /* NO_MD4 */
++
++#ifndef NO_SHA
++
++int sha_test(void)
++{
++    Sha  sha;
++    byte hash[SHA_DIGEST_SIZE];
++
++    testVector a, b, c, d;
++    testVector test_sha[4];
++    int ret;
++    int times = sizeof(test_sha) / sizeof(struct testVector), i;
++
++    a.input  = "abc";
++    a.output = "\xA9\x99\x3E\x36\x47\x06\x81\x6A\xBA\x3E\x25\x71\x78\x50\xC2"
++               "\x6C\x9C\xD0\xD8\x9D";
++    a.inLen  = strlen(a.input);
++    a.outLen = SHA_DIGEST_SIZE;
++
++    b.input  = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
++    b.output = "\x84\x98\x3E\x44\x1C\x3B\xD2\x6E\xBA\xAE\x4A\xA1\xF9\x51\x29"
++               "\xE5\xE5\x46\x70\xF1";
++    b.inLen  = strlen(b.input);
++    b.outLen = SHA_DIGEST_SIZE;
++
++    c.input  = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
++               "aaaaaa";
++    c.output = "\x00\x98\xBA\x82\x4B\x5C\x16\x42\x7B\xD7\xA1\x12\x2A\x5A\x44"
++               "\x2A\x25\xEC\x64\x4D";
++    c.inLen  = strlen(c.input);
++    c.outLen = SHA_DIGEST_SIZE;
++
++    d.input  = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
++               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
++               "aaaaaaaaaa";
++    d.output = "\xAD\x5B\x3F\xDB\xCB\x52\x67\x78\xC2\x83\x9D\x2F\x15\x1E\xA7"
++               "\x53\x99\x5E\x26\xA0";
++    d.inLen  = strlen(d.input);
++    d.outLen = SHA_DIGEST_SIZE;
++
++    test_sha[0] = a;
++    test_sha[1] = b;
++    test_sha[2] = c;
++    test_sha[3] = d;
++
++    ret = InitSha(&sha);
++    if (ret != 0)
++        return -4001;
++
++    for (i = 0; i < times; ++i) {
++        ShaUpdate(&sha, (byte*)test_sha[i].input, (word32)test_sha[i].inLen);
++        ShaFinal(&sha, hash);
++
++        if (memcmp(hash, test_sha[i].output, SHA_DIGEST_SIZE) != 0)
++            return -10 - i;
++    }
++
++    return 0;
++}
++
++#endif /* NO_SHA */
++
++#ifdef CYASSL_RIPEMD
++int ripemd_test(void)
++{
++    RipeMd  ripemd;
++    byte hash[RIPEMD_DIGEST_SIZE];
++
++    testVector a, b, c, d;
++    testVector test_ripemd[4];
++    int times = sizeof(test_ripemd) / sizeof(struct testVector), i;
++
++    a.input  = "abc";
++    a.output = "\x8e\xb2\x08\xf7\xe0\x5d\x98\x7a\x9b\x04\x4a\x8e\x98\xc6"
++               "\xb0\x87\xf1\x5a\x0b\xfc";
++    a.inLen  = strlen(a.input);
++    a.outLen = RIPEMD_DIGEST_SIZE;
++
++    b.input  = "message digest";
++    b.output = "\x5d\x06\x89\xef\x49\xd2\xfa\xe5\x72\xb8\x81\xb1\x23\xa8"
++               "\x5f\xfa\x21\x59\x5f\x36";
++    b.inLen  = strlen(b.input);
++    b.outLen = RIPEMD_DIGEST_SIZE;
++
++    c.input  = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
++    c.output = "\x12\xa0\x53\x38\x4a\x9c\x0c\x88\xe4\x05\xa0\x6c\x27\xdc"
++               "\xf4\x9a\xda\x62\xeb\x2b";
++    c.inLen  = strlen(c.input);
++    c.outLen = RIPEMD_DIGEST_SIZE;
++
++    d.input  = "12345678901234567890123456789012345678901234567890123456"
++               "789012345678901234567890";
++    d.output = "\x9b\x75\x2e\x45\x57\x3d\x4b\x39\xf4\xdb\xd3\x32\x3c\xab"
++               "\x82\xbf\x63\x32\x6b\xfb";
++    d.inLen  = strlen(d.input);
++    d.outLen = RIPEMD_DIGEST_SIZE;
++
++    test_ripemd[0] = a;
++    test_ripemd[1] = b;
++    test_ripemd[2] = c;
++    test_ripemd[3] = d;
++
++    InitRipeMd(&ripemd);
++
++    for (i = 0; i < times; ++i) {
++        RipeMdUpdate(&ripemd, (byte*)test_ripemd[i].input,
++                     (word32)test_ripemd[i].inLen);
++        RipeMdFinal(&ripemd, hash);
++
++        if (memcmp(hash, test_ripemd[i].output, RIPEMD_DIGEST_SIZE) != 0)
++            return -10 - i;
++    }
++
++    return 0;
++}
++#endif /* CYASSL_RIPEMD */
++
++
++#ifdef HAVE_BLAKE2
++
++
++#define BLAKE2_TESTS 3
++
++static const byte blake2b_vec[BLAKE2_TESTS][BLAKE2B_OUTBYTES] =
++{
++  {
++    0x78, 0x6A, 0x02, 0xF7, 0x42, 0x01, 0x59, 0x03,
++    0xC6, 0xC6, 0xFD, 0x85, 0x25, 0x52, 0xD2, 0x72,
++    0x91, 0x2F, 0x47, 0x40, 0xE1, 0x58, 0x47, 0x61,
++    0x8A, 0x86, 0xE2, 0x17, 0xF7, 0x1F, 0x54, 0x19,
++    0xD2, 0x5E, 0x10, 0x31, 0xAF, 0xEE, 0x58, 0x53,
++    0x13, 0x89, 0x64, 0x44, 0x93, 0x4E, 0xB0, 0x4B,
++    0x90, 0x3A, 0x68, 0x5B, 0x14, 0x48, 0xB7, 0x55,
++    0xD5, 0x6F, 0x70, 0x1A, 0xFE, 0x9B, 0xE2, 0xCE
++  },
++  {
++    0x2F, 0xA3, 0xF6, 0x86, 0xDF, 0x87, 0x69, 0x95,
++    0x16, 0x7E, 0x7C, 0x2E, 0x5D, 0x74, 0xC4, 0xC7,
++    0xB6, 0xE4, 0x8F, 0x80, 0x68, 0xFE, 0x0E, 0x44,
++    0x20, 0x83, 0x44, 0xD4, 0x80, 0xF7, 0x90, 0x4C,
++    0x36, 0x96, 0x3E, 0x44, 0x11, 0x5F, 0xE3, 0xEB,
++    0x2A, 0x3A, 0xC8, 0x69, 0x4C, 0x28, 0xBC, 0xB4,
++    0xF5, 0xA0, 0xF3, 0x27, 0x6F, 0x2E, 0x79, 0x48,
++    0x7D, 0x82, 0x19, 0x05, 0x7A, 0x50, 0x6E, 0x4B
++  },
++  {
++    0x1C, 0x08, 0x79, 0x8D, 0xC6, 0x41, 0xAB, 0xA9,
++    0xDE, 0xE4, 0x35, 0xE2, 0x25, 0x19, 0xA4, 0x72,
++    0x9A, 0x09, 0xB2, 0xBF, 0xE0, 0xFF, 0x00, 0xEF,
++    0x2D, 0xCD, 0x8E, 0xD6, 0xF8, 0xA0, 0x7D, 0x15,
++    0xEA, 0xF4, 0xAE, 0xE5, 0x2B, 0xBF, 0x18, 0xAB,
++    0x56, 0x08, 0xA6, 0x19, 0x0F, 0x70, 0xB9, 0x04,
++    0x86, 0xC8, 0xA7, 0xD4, 0x87, 0x37, 0x10, 0xB1,
++    0x11, 0x5D, 0x3D, 0xEB, 0xBB, 0x43, 0x27, 0xB5
++  }
++};
++
++
++
++int blake2b_test(void)
++{
++    Blake2b b2b;
++    byte    digest[64];
++    byte    input[64];
++    int     i, ret;
++
++    for (i = 0; i < (int)sizeof(input); i++)
++        input[i] = (byte)i;
++
++    for (i = 0; i < BLAKE2_TESTS; i++) {
++        ret = InitBlake2b(&b2b, 64);
++        if (ret != 0)
++            return -4002;
++
++        ret = Blake2bUpdate(&b2b, input, i);
++        if (ret != 0)
++            return -4003;
++
++        ret = Blake2bFinal(&b2b, digest, 64);
++        if (ret != 0)
++            return -4004;
++
++        if (memcmp(digest, blake2b_vec[i], 64) != 0) {
++            return -300 - i;
++        }
++    }
++
++    return 0;
++}
++#endif /* HAVE_BLAKE2 */
++
++
++#ifndef NO_SHA256
++int sha256_test(void)
++{
++    Sha256 sha;
++    byte   hash[SHA256_DIGEST_SIZE];
++
++    testVector a, b;
++    testVector test_sha[2];
++    int ret;
++    int times = sizeof(test_sha) / sizeof(struct testVector), i;
++
++    a.input  = "abc";
++    a.output = "\xBA\x78\x16\xBF\x8F\x01\xCF\xEA\x41\x41\x40\xDE\x5D\xAE\x22"
++               "\x23\xB0\x03\x61\xA3\x96\x17\x7A\x9C\xB4\x10\xFF\x61\xF2\x00"
++               "\x15\xAD";
++    a.inLen  = strlen(a.input);
++    a.outLen = SHA256_DIGEST_SIZE;
++
++    b.input  = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
++    b.output = "\x24\x8D\x6A\x61\xD2\x06\x38\xB8\xE5\xC0\x26\x93\x0C\x3E\x60"
++               "\x39\xA3\x3C\xE4\x59\x64\xFF\x21\x67\xF6\xEC\xED\xD4\x19\xDB"
++               "\x06\xC1";
++    b.inLen  = strlen(b.input);
++    b.outLen = SHA256_DIGEST_SIZE;
++
++    test_sha[0] = a;
++    test_sha[1] = b;
++
++    ret = InitSha256(&sha);
++    if (ret != 0)
++        return -4005;
++
++    for (i = 0; i < times; ++i) {
++        ret = Sha256Update(&sha, (byte*)test_sha[i].input,(word32)test_sha[i].inLen);
++        if (ret != 0)
++            return -4006;
++        ret = Sha256Final(&sha, hash);
++        if (ret != 0)
++            return -4007;
++
++        if (memcmp(hash, test_sha[i].output, SHA256_DIGEST_SIZE) != 0)
++            return -10 - i;
++    }
++
++    return 0;
++}
++#endif
++
++
++#ifdef CYASSL_SHA512
++int sha512_test(void)
++{
++    Sha512 sha;
++    byte   hash[SHA512_DIGEST_SIZE];
++    int    ret;
++
++    testVector a, b;
++    testVector test_sha[2];
++    int times = sizeof(test_sha) / sizeof(struct testVector), i;
++
++    a.input  = "abc";
++    a.output = "\xdd\xaf\x35\xa1\x93\x61\x7a\xba\xcc\x41\x73\x49\xae\x20\x41"
++               "\x31\x12\xe6\xfa\x4e\x89\xa9\x7e\xa2\x0a\x9e\xee\xe6\x4b\x55"
++               "\xd3\x9a\x21\x92\x99\x2a\x27\x4f\xc1\xa8\x36\xba\x3c\x23\xa3"
++               "\xfe\xeb\xbd\x45\x4d\x44\x23\x64\x3c\xe8\x0e\x2a\x9a\xc9\x4f"
++               "\xa5\x4c\xa4\x9f";
++    a.inLen  = strlen(a.input);
++    a.outLen = SHA512_DIGEST_SIZE;
++
++    b.input  = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhi"
++               "jklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu";
++    b.output = "\x8e\x95\x9b\x75\xda\xe3\x13\xda\x8c\xf4\xf7\x28\x14\xfc\x14"
++               "\x3f\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1\x72\x99\xae\xad\xb6\x88"
++               "\x90\x18\x50\x1d\x28\x9e\x49\x00\xf7\xe4\x33\x1b\x99\xde\xc4"
++               "\xb5\x43\x3a\xc7\xd3\x29\xee\xb6\xdd\x26\x54\x5e\x96\xe5\x5b"
++               "\x87\x4b\xe9\x09";
++    b.inLen  = strlen(b.input);
++    b.outLen = SHA512_DIGEST_SIZE;
++
++    test_sha[0] = a;
++    test_sha[1] = b;
++
++    ret = InitSha512(&sha);
++    if (ret != 0)
++        return -4009;
++
++    for (i = 0; i < times; ++i) {
++        ret = Sha512Update(&sha, (byte*)test_sha[i].input,(word32)test_sha[i].inLen);
++        if (ret != 0)
++            return -4010;
++
++        ret = Sha512Final(&sha, hash);
++        if (ret != 0)
++            return -4011;
++
++        if (memcmp(hash, test_sha[i].output, SHA512_DIGEST_SIZE) != 0)
++            return -10 - i;
++    }
++
++    return 0;
++}
++#endif
++
++
++#ifdef CYASSL_SHA384
++int sha384_test(void)
++{
++    Sha384 sha;
++    byte   hash[SHA384_DIGEST_SIZE];
++    int    ret;
++
++    testVector a, b;
++    testVector test_sha[2];
++    int times = sizeof(test_sha) / sizeof(struct testVector), i;
++
++    a.input  = "abc";
++    a.output = "\xcb\x00\x75\x3f\x45\xa3\x5e\x8b\xb5\xa0\x3d\x69\x9a\xc6\x50"
++               "\x07\x27\x2c\x32\xab\x0e\xde\xd1\x63\x1a\x8b\x60\x5a\x43\xff"
++               "\x5b\xed\x80\x86\x07\x2b\xa1\xe7\xcc\x23\x58\xba\xec\xa1\x34"
++               "\xc8\x25\xa7";
++    a.inLen  = strlen(a.input);
++    a.outLen = SHA384_DIGEST_SIZE;
++
++    b.input  = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhi"
++               "jklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu";
++    b.output = "\x09\x33\x0c\x33\xf7\x11\x47\xe8\x3d\x19\x2f\xc7\x82\xcd\x1b"
++               "\x47\x53\x11\x1b\x17\x3b\x3b\x05\xd2\x2f\xa0\x80\x86\xe3\xb0"
++               "\xf7\x12\xfc\xc7\xc7\x1a\x55\x7e\x2d\xb9\x66\xc3\xe9\xfa\x91"
++               "\x74\x60\x39";
++    b.inLen  = strlen(b.input);
++    b.outLen = SHA384_DIGEST_SIZE;
++
++    test_sha[0] = a;
++    test_sha[1] = b;
++
++    ret = InitSha384(&sha);
++    if (ret != 0)
++        return -4012;
++
++    for (i = 0; i < times; ++i) {
++        ret = Sha384Update(&sha, (byte*)test_sha[i].input,(word32)test_sha[i].inLen);
++        if (ret != 0)
++            return -4013;
++
++        ret = Sha384Final(&sha, hash);
++        if (ret != 0)
++            return -4014;
++
++        if (memcmp(hash, test_sha[i].output, SHA384_DIGEST_SIZE) != 0)
++            return -10 - i;
++    }
++
++    return 0;
++}
++#endif /* CYASSL_SHA384 */
++
++
++#if !defined(NO_HMAC) && !defined(NO_MD5)
++int hmac_md5_test(void)
++{
++    Hmac hmac;
++    byte hash[MD5_DIGEST_SIZE];
++
++    const char* keys[]=
++    {
++        "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
++        "Jefe",
++        "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
++    };
++
++    testVector a, b, c;
++    testVector test_hmac[3];
++
++    int ret;
++    int times = sizeof(test_hmac) / sizeof(testVector), i;
++
++    a.input  = "Hi There";
++    a.output = "\x92\x94\x72\x7a\x36\x38\xbb\x1c\x13\xf4\x8e\xf8\x15\x8b\xfc"
++               "\x9d";
++    a.inLen  = strlen(a.input);
++    a.outLen = MD5_DIGEST_SIZE;
++
++    b.input  = "what do ya want for nothing?";
++    b.output = "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03\xea\xa8\x6e\x31\x0a\x5d\xb7"
++               "\x38";
++    b.inLen  = strlen(b.input);
++    b.outLen = MD5_DIGEST_SIZE;
++
++    c.input  = "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD";
++    c.output = "\x56\xbe\x34\x52\x1d\x14\x4c\x88\xdb\xb8\xc7\x33\xf0\xe8\xb3"
++               "\xf6";
++    c.inLen  = strlen(c.input);
++    c.outLen = MD5_DIGEST_SIZE;
++
++    test_hmac[0] = a;
++    test_hmac[1] = b;
++    test_hmac[2] = c;
++
++    for (i = 0; i < times; ++i) {
++#ifdef HAVE_CAVIUM
++        if (i == 1)
++            continue; /* driver can't handle keys <= bytes */
++        if (HmacInitCavium(&hmac, CAVIUM_DEV_ID) != 0)
++            return -20009;
++#endif
++        ret = HmacSetKey(&hmac, MD5, (byte*)keys[i], (word32)strlen(keys[i]));
++        if (ret != 0)
++            return -4015;
++        ret = HmacUpdate(&hmac, (byte*)test_hmac[i].input,
++                   (word32)test_hmac[i].inLen);
++        if (ret != 0)
++            return -4016;
++        ret = HmacFinal(&hmac, hash);
++        if (ret != 0)
++            return -4017;
++
++        if (memcmp(hash, test_hmac[i].output, MD5_DIGEST_SIZE) != 0)
++            return -20 - i;
++#ifdef HAVE_CAVIUM
++        HmacFreeCavium(&hmac);
++#endif
++    }
++
++    return 0;
++}
++#endif /* NO_HMAC && NO_MD5 */
++
++#if !defined(NO_HMAC) && !defined(NO_SHA)
++int hmac_sha_test(void)
++{
++    Hmac hmac;
++    byte hash[SHA_DIGEST_SIZE];
++
++    const char* keys[]=
++    {
++        "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
++                                                                "\x0b\x0b\x0b",
++        "Jefe",
++        "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
++                                                                "\xAA\xAA\xAA"
++    };
++
++    testVector a, b, c;
++    testVector test_hmac[3];
++
++    int ret;
++    int times = sizeof(test_hmac) / sizeof(testVector), i;
++
++    a.input  = "Hi There";
++    a.output = "\xb6\x17\x31\x86\x55\x05\x72\x64\xe2\x8b\xc0\xb6\xfb\x37\x8c"
++               "\x8e\xf1\x46\xbe\x00";
++    a.inLen  = strlen(a.input);
++    a.outLen = SHA_DIGEST_SIZE;
++
++    b.input  = "what do ya want for nothing?";
++    b.output = "\xef\xfc\xdf\x6a\xe5\xeb\x2f\xa2\xd2\x74\x16\xd5\xf1\x84\xdf"
++               "\x9c\x25\x9a\x7c\x79";
++    b.inLen  = strlen(b.input);
++    b.outLen = SHA_DIGEST_SIZE;
++
++    c.input  = "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD";
++    c.output = "\x12\x5d\x73\x42\xb9\xac\x11\xcd\x91\xa3\x9a\xf4\x8a\xa1\x7b"
++               "\x4f\x63\xf1\x75\xd3";
++    c.inLen  = strlen(c.input);
++    c.outLen = SHA_DIGEST_SIZE;
++
++    test_hmac[0] = a;
++    test_hmac[1] = b;
++    test_hmac[2] = c;
++
++    for (i = 0; i < times; ++i) {
++#ifdef HAVE_CAVIUM
++        if (i == 1)
++            continue; /* driver can't handle keys <= bytes */
++        if (HmacInitCavium(&hmac, CAVIUM_DEV_ID) != 0)
++            return -20010;
++#endif
++        ret = HmacSetKey(&hmac, SHA, (byte*)keys[i], (word32)strlen(keys[i]));
++        if (ret != 0)
++            return -4018;
++        ret = HmacUpdate(&hmac, (byte*)test_hmac[i].input,
++                   (word32)test_hmac[i].inLen);
++        if (ret != 0)
++            return -4019;
++        ret = HmacFinal(&hmac, hash);
++        if (ret != 0)
++            return -4020;
++
++        if (memcmp(hash, test_hmac[i].output, SHA_DIGEST_SIZE) != 0)
++            return -20 - i;
++#ifdef HAVE_CAVIUM
++        HmacFreeCavium(&hmac);
++#endif
++    }
++
++    return 0;
++}
++#endif
++
++
++#if !defined(NO_HMAC) && !defined(NO_SHA256)
++int hmac_sha256_test(void)
++{
++    Hmac hmac;
++    byte hash[SHA256_DIGEST_SIZE];
++
++    const char* keys[]=
++    {
++        "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
++                                                                "\x0b\x0b\x0b",
++        "Jefe",
++        "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
++                                                                "\xAA\xAA\xAA"
++    };
++
++    testVector a, b, c;
++    testVector test_hmac[3];
++
++    int ret;
++    int times = sizeof(test_hmac) / sizeof(testVector), i;
++
++    a.input  = "Hi There";
++    a.output = "\xb0\x34\x4c\x61\xd8\xdb\x38\x53\x5c\xa8\xaf\xce\xaf\x0b\xf1"
++               "\x2b\x88\x1d\xc2\x00\xc9\x83\x3d\xa7\x26\xe9\x37\x6c\x2e\x32"
++               "\xcf\xf7";
++    a.inLen  = strlen(a.input);
++    a.outLen = SHA256_DIGEST_SIZE;
++
++    b.input  = "what do ya want for nothing?";
++    b.output = "\x5b\xdc\xc1\x46\xbf\x60\x75\x4e\x6a\x04\x24\x26\x08\x95\x75"
++               "\xc7\x5a\x00\x3f\x08\x9d\x27\x39\x83\x9d\xec\x58\xb9\x64\xec"
++               "\x38\x43";
++    b.inLen  = strlen(b.input);
++    b.outLen = SHA256_DIGEST_SIZE;
++
++    c.input  = "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD";
++    c.output = "\x77\x3e\xa9\x1e\x36\x80\x0e\x46\x85\x4d\xb8\xeb\xd0\x91\x81"
++               "\xa7\x29\x59\x09\x8b\x3e\xf8\xc1\x22\xd9\x63\x55\x14\xce\xd5"
++               "\x65\xfe";
++    c.inLen  = strlen(c.input);
++    c.outLen = SHA256_DIGEST_SIZE;
++
++    test_hmac[0] = a;
++    test_hmac[1] = b;
++    test_hmac[2] = c;
++
++    for (i = 0; i < times; ++i) {
++#ifdef HAVE_CAVIUM
++        if (i == 1)
++            continue; /* driver can't handle keys <= bytes */
++        if (HmacInitCavium(&hmac, CAVIUM_DEV_ID) != 0)
++            return -20011;
++#endif
++        ret = HmacSetKey(&hmac, SHA256, (byte*)keys[i],(word32)strlen(keys[i]));
++        if (ret != 0)
++            return -4021;
++        ret = HmacUpdate(&hmac, (byte*)test_hmac[i].input,
++                   (word32)test_hmac[i].inLen);
++        if (ret != 0)
++            return -4022;
++        ret = HmacFinal(&hmac, hash);
++        if (ret != 0)
++            return -4023;
++
++        if (memcmp(hash, test_hmac[i].output, SHA256_DIGEST_SIZE) != 0)
++            return -20 - i;
++#ifdef HAVE_CAVIUM
++        HmacFreeCavium(&hmac);
++#endif
++    }
++
++    return 0;
++}
++#endif
++
++
++#if !defined(NO_HMAC) && defined(HAVE_BLAKE2)
++int hmac_blake2b_test(void)
++{
++    Hmac hmac;
++    byte hash[BLAKE2B_256];
++
++    const char* keys[]=
++    {
++        "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
++                                                                "\x0b\x0b\x0b",
++        "Jefe",
++        "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
++                                                                "\xAA\xAA\xAA"
++    };
++
++    testVector a, b, c;
++    testVector test_hmac[3];
++
++    int ret;
++    int times = sizeof(test_hmac) / sizeof(testVector), i;
++
++    a.input  = "Hi There";
++    a.output = "\x72\x93\x0d\xdd\xf5\xf7\xe1\x78\x38\x07\x44\x18\x0b\x3f\x51"
++               "\x37\x25\xb5\x82\xc2\x08\x83\x2f\x1c\x99\xfd\x03\xa0\x16\x75"
++               "\xac\xfd";
++    a.inLen  = strlen(a.input);
++    a.outLen = BLAKE2B_256;
++
++    b.input  = "what do ya want for nothing?";
++    b.output = "\x3d\x20\x50\x71\x05\xc0\x8c\x0c\x38\x44\x1e\xf7\xf9\xd1\x67"
++               "\x21\xff\x64\xf5\x94\x00\xcf\xf9\x75\x41\xda\x88\x61\x9d\x7c"
++               "\xda\x2b";
++    b.inLen  = strlen(b.input);
++    b.outLen = BLAKE2B_256;
++
++    c.input  = "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD";
++    c.output = "\xda\xfe\x2a\x24\xfc\xe7\xea\x36\x34\xbe\x41\x92\xc7\x11\xa7"
++               "\x00\xae\x53\x9c\x11\x9c\x80\x74\x55\x22\x25\x4a\xb9\x55\xd3"
++               "\x0f\x87";
++    c.inLen  = strlen(c.input);
++    c.outLen = BLAKE2B_256;
++
++    test_hmac[0] = a;
++    test_hmac[1] = b;
++    test_hmac[2] = c;
++
++    for (i = 0; i < times; ++i) {
++#ifdef HAVE_CAVIUM
++        if (i == 1)
++            continue; /* driver can't handle keys <= bytes */
++        if (HmacInitCavium(&hmac, CAVIUM_DEV_ID) != 0)
++            return -20011;
++#endif
++        ret = HmacSetKey(&hmac, BLAKE2B_ID, (byte*)keys[i],
++                         (word32)strlen(keys[i]));
++        if (ret != 0)
++            return -4024;
++        ret = HmacUpdate(&hmac, (byte*)test_hmac[i].input,
++                   (word32)test_hmac[i].inLen);
++        if (ret != 0)
++            return -4025;
++        ret = HmacFinal(&hmac, hash);
++        if (ret != 0)
++            return -4026;
++
++        if (memcmp(hash, test_hmac[i].output, BLAKE2B_256) != 0)
++            return -20 - i;
++#ifdef HAVE_CAVIUM
++        HmacFreeCavium(&hmac);
++#endif
++    }
++
++    return 0;
++}
++#endif
++
++
++#if !defined(NO_HMAC) && defined(CYASSL_SHA384)
++int hmac_sha384_test(void)
++{
++    Hmac hmac;
++    byte hash[SHA384_DIGEST_SIZE];
++
++    const char* keys[]=
++    {
++        "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
++                                                                "\x0b\x0b\x0b",
++        "Jefe",
++        "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
++                                                                "\xAA\xAA\xAA"
++    };
++
++    testVector a, b, c;
++    testVector test_hmac[3];
++
++    int ret;
++    int times = sizeof(test_hmac) / sizeof(testVector), i;
++
++    a.input  = "Hi There";
++    a.output = "\xaf\xd0\x39\x44\xd8\x48\x95\x62\x6b\x08\x25\xf4\xab\x46\x90"
++               "\x7f\x15\xf9\xda\xdb\xe4\x10\x1e\xc6\x82\xaa\x03\x4c\x7c\xeb"
++               "\xc5\x9c\xfa\xea\x9e\xa9\x07\x6e\xde\x7f\x4a\xf1\x52\xe8\xb2"
++               "\xfa\x9c\xb6";
++    a.inLen  = strlen(a.input);
++    a.outLen = SHA384_DIGEST_SIZE;
++
++    b.input  = "what do ya want for nothing?";
++    b.output = "\xaf\x45\xd2\xe3\x76\x48\x40\x31\x61\x7f\x78\xd2\xb5\x8a\x6b"
++               "\x1b\x9c\x7e\xf4\x64\xf5\xa0\x1b\x47\xe4\x2e\xc3\x73\x63\x22"
++               "\x44\x5e\x8e\x22\x40\xca\x5e\x69\xe2\xc7\x8b\x32\x39\xec\xfa"
++               "\xb2\x16\x49";
++    b.inLen  = strlen(b.input);
++    b.outLen = SHA384_DIGEST_SIZE;
++
++    c.input  = "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD";
++    c.output = "\x88\x06\x26\x08\xd3\xe6\xad\x8a\x0a\xa2\xac\xe0\x14\xc8\xa8"
++               "\x6f\x0a\xa6\x35\xd9\x47\xac\x9f\xeb\xe8\x3e\xf4\xe5\x59\x66"
++               "\x14\x4b\x2a\x5a\xb3\x9d\xc1\x38\x14\xb9\x4e\x3a\xb6\xe1\x01"
++               "\xa3\x4f\x27";
++    c.inLen  = strlen(c.input);
++    c.outLen = SHA384_DIGEST_SIZE;
++
++    test_hmac[0] = a;
++    test_hmac[1] = b;
++    test_hmac[2] = c;
++
++    for (i = 0; i < times; ++i) {
++        ret = HmacSetKey(&hmac, SHA384, (byte*)keys[i],(word32)strlen(keys[i]));
++        if (ret != 0)
++            return -4027;
++        ret = HmacUpdate(&hmac, (byte*)test_hmac[i].input,
++                   (word32)test_hmac[i].inLen);
++        if (ret != 0)
++            return -4028;
++        ret = HmacFinal(&hmac, hash);
++        if (ret != 0)
++            return -4029;
++
++        if (memcmp(hash, test_hmac[i].output, SHA384_DIGEST_SIZE) != 0)
++            return -20 - i;
++    }
++
++    return 0;
++}
++#endif
++
++
++#if !defined(NO_HMAC) && defined(CYASSL_SHA512)
++int hmac_sha512_test(void)
++{
++    Hmac hmac;
++    byte hash[SHA512_DIGEST_SIZE];
++
++    const char* keys[]=
++    {
++        "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
++                                                                "\x0b\x0b\x0b",
++        "Jefe",
++        "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
++                                                                "\xAA\xAA\xAA"
++    };
++
++    testVector a, b, c;
++    testVector test_hmac[3];
++
++    int ret;
++    int times = sizeof(test_hmac) / sizeof(testVector), i;
++
++    a.input  = "Hi There";
++    a.output = "\x87\xaa\x7c\xde\xa5\xef\x61\x9d\x4f\xf0\xb4\x24\x1a\x1d\x6c"
++               "\xb0\x23\x79\xf4\xe2\xce\x4e\xc2\x78\x7a\xd0\xb3\x05\x45\xe1"
++               "\x7c\xde\xda\xa8\x33\xb7\xd6\xb8\xa7\x02\x03\x8b\x27\x4e\xae"
++               "\xa3\xf4\xe4\xbe\x9d\x91\x4e\xeb\x61\xf1\x70\x2e\x69\x6c\x20"
++               "\x3a\x12\x68\x54";
++    a.inLen  = strlen(a.input);
++    a.outLen = SHA512_DIGEST_SIZE;
++
++    b.input  = "what do ya want for nothing?";
++    b.output = "\x16\x4b\x7a\x7b\xfc\xf8\x19\xe2\xe3\x95\xfb\xe7\x3b\x56\xe0"
++               "\xa3\x87\xbd\x64\x22\x2e\x83\x1f\xd6\x10\x27\x0c\xd7\xea\x25"
++               "\x05\x54\x97\x58\xbf\x75\xc0\x5a\x99\x4a\x6d\x03\x4f\x65\xf8"
++               "\xf0\xe6\xfd\xca\xea\xb1\xa3\x4d\x4a\x6b\x4b\x63\x6e\x07\x0a"
++               "\x38\xbc\xe7\x37";
++    b.inLen  = strlen(b.input);
++    b.outLen = SHA512_DIGEST_SIZE;
++
++    c.input  = "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
++               "\xDD\xDD\xDD\xDD\xDD\xDD";
++    c.output = "\xfa\x73\xb0\x08\x9d\x56\xa2\x84\xef\xb0\xf0\x75\x6c\x89\x0b"
++               "\xe9\xb1\xb5\xdb\xdd\x8e\xe8\x1a\x36\x55\xf8\x3e\x33\xb2\x27"
++               "\x9d\x39\xbf\x3e\x84\x82\x79\xa7\x22\xc8\x06\xb4\x85\xa4\x7e"
++               "\x67\xc8\x07\xb9\x46\xa3\x37\xbe\xe8\x94\x26\x74\x27\x88\x59"
++               "\xe1\x32\x92\xfb";
++    c.inLen  = strlen(c.input);
++    c.outLen = SHA512_DIGEST_SIZE;
++
++    test_hmac[0] = a;
++    test_hmac[1] = b;
++    test_hmac[2] = c;
++
++    for (i = 0; i < times; ++i) {
++        ret = HmacSetKey(&hmac, SHA512, (byte*)keys[i],(word32)strlen(keys[i]));
++        if (ret != 0)
++            return -4030;
++        ret = HmacUpdate(&hmac, (byte*)test_hmac[i].input,
++                   (word32)test_hmac[i].inLen);
++        if (ret != 0)
++            return -4031;
++        ret = HmacFinal(&hmac, hash);
++        if (ret != 0)
++            return -4032;
++
++        if (memcmp(hash, test_hmac[i].output, SHA512_DIGEST_SIZE) != 0)
++            return -20 - i;
++    }
++
++    return 0;
++}
++#endif
++
++
++#ifndef NO_RC4
++int arc4_test(void)
++{
++    byte cipher[16];
++    byte plain[16];
++
++    const char* keys[] =
++    {
++        "\x01\x23\x45\x67\x89\xab\xcd\xef",
++        "\x01\x23\x45\x67\x89\xab\xcd\xef",
++        "\x00\x00\x00\x00\x00\x00\x00\x00",
++        "\xef\x01\x23\x45"
++    };
++
++    testVector a, b, c, d;
++    testVector test_arc4[4];
++
++    int times = sizeof(test_arc4) / sizeof(testVector), i;
++
++    a.input  = "\x01\x23\x45\x67\x89\xab\xcd\xef";
++    a.output = "\x75\xb7\x87\x80\x99\xe0\xc5\x96";
++    a.inLen  = 8;
++    a.outLen = 8;
++
++    b.input  = "\x00\x00\x00\x00\x00\x00\x00\x00";
++    b.output = "\x74\x94\xc2\xe7\x10\x4b\x08\x79";
++    b.inLen  = 8;
++    b.outLen = 8;
++
++    c.input  = "\x00\x00\x00\x00\x00\x00\x00\x00";
++    c.output = "\xde\x18\x89\x41\xa3\x37\x5d\x3a";
++    c.inLen  = 8;
++    c.outLen = 8;
++
++    d.input  = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
++    d.output = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf\xbd\x61";
++    d.inLen  = 10;
++    d.outLen = 10;
++
++    test_arc4[0] = a;
++    test_arc4[1] = b;
++    test_arc4[2] = c;
++    test_arc4[3] = d;
++
++    for (i = 0; i < times; ++i) {
++        Arc4 enc;
++        Arc4 dec;
++        int  keylen = 8;  /* strlen with key 0x00 not good */
++        if (i == 3)
++            keylen = 4;
++
++#ifdef HAVE_CAVIUM
++        if (Arc4InitCavium(&enc, CAVIUM_DEV_ID) != 0)
++            return -20001;
++        if (Arc4InitCavium(&dec, CAVIUM_DEV_ID) != 0)
++            return -20002;
++#endif
++
++        Arc4SetKey(&enc, (byte*)keys[i], keylen);
++        Arc4SetKey(&dec, (byte*)keys[i], keylen);
++
++        Arc4Process(&enc, cipher, (byte*)test_arc4[i].input,
++                    (word32)test_arc4[i].outLen);
++        Arc4Process(&dec, plain,  cipher, (word32)test_arc4[i].outLen);
++
++        if (memcmp(plain, test_arc4[i].input, test_arc4[i].outLen))
++            return -20 - i;
++
++        if (memcmp(cipher, test_arc4[i].output, test_arc4[i].outLen))
++            return -20 - 5 - i;
++
++#ifdef HAVE_CAVIUM
++        Arc4FreeCavium(&enc);
++        Arc4FreeCavium(&dec);
++#endif
++    }
++
++    return 0;
++}
++#endif
++
++
++int hc128_test(void)
++{
++#ifdef HAVE_HC128
++    byte cipher[16];
++    byte plain[16];
++
++    const char* keys[] =
++    {
++        "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
++        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
++        "\x00\x53\xA6\xF9\x4C\x9F\xF2\x45\x98\xEB\x3E\x91\xE4\x37\x8A\xDD",
++        "\x0F\x62\xB5\x08\x5B\xAE\x01\x54\xA7\xFA\x4D\xA0\xF3\x46\x99\xEC"
++    };
++
++    const char* ivs[] =
++    {
++        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
++        "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
++        "\x0D\x74\xDB\x42\xA9\x10\x77\xDE\x45\xAC\x13\x7A\xE1\x48\xAF\x16",
++        "\x28\x8F\xF6\x5D\xC4\x2B\x92\xF9\x60\xC7\x2E\x95\xFC\x63\xCA\x31"
++    };
++
++
++    testVector a, b, c, d;
++    testVector test_hc128[4];
++
++    int times = sizeof(test_hc128) / sizeof(testVector), i;
++
++    a.input  = "\x00\x00\x00\x00\x00\x00\x00\x00";
++    a.output = "\x37\x86\x02\xB9\x8F\x32\xA7\x48";
++    a.inLen  = 8;
++    a.outLen = 8;
++
++    b.input  = "\x00\x00\x00\x00\x00\x00\x00\x00";
++    b.output = "\x33\x7F\x86\x11\xC6\xED\x61\x5F";
++    b.inLen  = 8;
++    b.outLen = 8;
++
++    c.input  = "\x00\x00\x00\x00\x00\x00\x00\x00";
++    c.output = "\x2E\x1E\xD1\x2A\x85\x51\xC0\x5A";
++    c.inLen  = 8;
++    c.outLen = 8;
++
++    d.input  = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
++    d.output = "\x1C\xD8\xAE\xDD\xFE\x52\xE2\x17\xE8\x35\xD0\xB7\xE8\x4E\x29";
++    d.inLen  = 15;
++    d.outLen = 15;
++
++    test_hc128[0] = a;
++    test_hc128[1] = b;
++    test_hc128[2] = c;
++    test_hc128[3] = d;
++
++    for (i = 0; i < times; ++i) {
++        HC128 enc;
++        HC128 dec;
++
++        /* align keys/ivs in plain/cipher buffers */
++        memcpy(plain,  keys[i], 16);
++        memcpy(cipher, ivs[i],  16);
++
++        Hc128_SetKey(&enc, plain, cipher);
++        Hc128_SetKey(&dec, plain, cipher);
++
++        /* align input */
++        memcpy(plain, test_hc128[i].input, test_hc128[i].outLen);
++        Hc128_Process(&enc, cipher, plain,  (word32)test_hc128[i].outLen);
++        Hc128_Process(&dec, plain,  cipher, (word32)test_hc128[i].outLen);
++
++        if (memcmp(plain, test_hc128[i].input, test_hc128[i].outLen))
++            return -120 - i;
++
++        if (memcmp(cipher, test_hc128[i].output, test_hc128[i].outLen))
++            return -120 - 5 - i;
++    }
++
++#endif /* HAVE_HC128 */
++    return 0;
++}
++
++
++#ifndef NO_RABBIT
++int rabbit_test(void)
++{
++    byte cipher[16];
++    byte plain[16];
++
++    const char* keys[] =
++    {
++        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
++        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
++        "\xAC\xC3\x51\xDC\xF1\x62\xFC\x3B\xFE\x36\x3D\x2E\x29\x13\x28\x91"
++    };
++
++    const char* ivs[] =
++    {
++        "\x00\x00\x00\x00\x00\x00\x00\x00",
++        "\x59\x7E\x26\xC1\x75\xF5\x73\xC3",
++        0
++    };
++
++    testVector a, b, c;
++    testVector test_rabbit[3];
++
++    int times = sizeof(test_rabbit) / sizeof(testVector), i;
++
++    a.input  = "\x00\x00\x00\x00\x00\x00\x00\x00";
++    a.output = "\xED\xB7\x05\x67\x37\x5D\xCD\x7C";
++    a.inLen  = 8;
++    a.outLen = 8;
++
++    b.input  = "\x00\x00\x00\x00\x00\x00\x00\x00";
++    b.output = "\x6D\x7D\x01\x22\x92\xCC\xDC\xE0";
++    b.inLen  = 8;
++    b.outLen = 8;
++
++    c.input  = "\x00\x00\x00\x00\x00\x00\x00\x00";
++    c.output = "\x04\xCE\xCA\x7A\x1A\x86\x6E\x77";
++    c.inLen  = 8;
++    c.outLen = 8;
++
++    test_rabbit[0] = a;
++    test_rabbit[1] = b;
++    test_rabbit[2] = c;
++
++    for (i = 0; i < times; ++i) {
++        Rabbit enc;
++        Rabbit dec;
++        byte*  iv;
++
++        /* align keys/ivs in plain/cipher buffers */
++        memcpy(plain,  keys[i], 16);
++        if (ivs[i]) {
++            memcpy(cipher, ivs[i],   8);
++            iv = cipher;
++        } else
++            iv = NULL;
++        RabbitSetKey(&enc, plain, iv);
++        RabbitSetKey(&dec, plain, iv);
++
++        /* align input */
++        memcpy(plain, test_rabbit[i].input, test_rabbit[i].outLen);
++        RabbitProcess(&enc, cipher, plain,  (word32)test_rabbit[i].outLen);
++        RabbitProcess(&dec, plain,  cipher, (word32)test_rabbit[i].outLen);
++
++        if (memcmp(plain, test_rabbit[i].input, test_rabbit[i].outLen))
++            return -130 - i;
++
++        if (memcmp(cipher, test_rabbit[i].output, test_rabbit[i].outLen))
++            return -130 - 5 - i;
++    }
++
++    return 0;
++}
++#endif /* NO_RABBIT */
++
++
++#ifndef NO_DES3
++int des_test(void)
++{
++    const byte vector[] = { /* "now is the time for all " w/o trailing 0 */
++        0x6e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74,
++        0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20,
++        0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20
++    };
++
++    byte plain[24];
++    byte cipher[24];
++
++    Des enc;
++    Des dec;
++
++    const byte key[] =
++    {
++        0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef
++    };
++
++    const byte iv[] =
++    {
++        0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef
++    };
++
++    const byte verify[] =
++    {
++        0x8b,0x7c,0x52,0xb0,0x01,0x2b,0x6c,0xb8,
++        0x4f,0x0f,0xeb,0xf3,0xfb,0x5f,0x86,0x73,
++        0x15,0x85,0xb3,0x22,0x4b,0x86,0x2b,0x4b
++    };
++
++    int ret;
++
++    ret = Des_SetKey(&enc, key, iv, DES_ENCRYPTION);
++    if (ret != 0)
++        return -31;
++
++    Des_CbcEncrypt(&enc, cipher, vector, sizeof(vector));
++    ret = Des_SetKey(&dec, key, iv, DES_DECRYPTION);
++    if (ret != 0)
++        return -32;
++    Des_CbcDecrypt(&dec, plain, cipher, sizeof(cipher));
++
++    if (memcmp(plain, vector, sizeof(plain)))
++        return -33;
++
++    if (memcmp(cipher, verify, sizeof(cipher)))
++        return -34;
++
++    return 0;
++}
++#endif /* NO_DES3 */
++
++
++#ifndef NO_DES3
++int des3_test(void)
++{
++    const byte vector[] = { /* "Now is the time for all " w/o trailing 0 */
++        0x4e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74,
++        0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20,
++        0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20
++    };
++
++    byte plain[24];
++    byte cipher[24];
++
++    Des3 enc;
++    Des3 dec;
++
++    const byte key3[] =
++    {
++        0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,
++        0xfe,0xde,0xba,0x98,0x76,0x54,0x32,0x10,
++        0x89,0xab,0xcd,0xef,0x01,0x23,0x45,0x67
++    };
++    const byte iv3[] =
++    {
++        0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef,
++        0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
++        0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81
++
++    };
++
++    const byte verify3[] =
++    {
++        0x43,0xa0,0x29,0x7e,0xd1,0x84,0xf8,0x0e,
++        0x89,0x64,0x84,0x32,0x12,0xd5,0x08,0x98,
++        0x18,0x94,0x15,0x74,0x87,0x12,0x7d,0xb0
++    };
++
++    int ret;
++
++
++#ifdef HAVE_CAVIUM
++    if (Des3_InitCavium(&enc, CAVIUM_DEV_ID) != 0)
++        return -20005;
++    if (Des3_InitCavium(&dec, CAVIUM_DEV_ID) != 0)
++        return -20006;
++#endif
++    ret = Des3_SetKey(&enc, key3, iv3, DES_ENCRYPTION);
++    if (ret != 0)
++        return -31;
++    ret = Des3_SetKey(&dec, key3, iv3, DES_DECRYPTION);
++    if (ret != 0)
++        return -32;
++    ret = Des3_CbcEncrypt(&enc, cipher, vector, sizeof(vector));
++    if (ret != 0)
++        return -33;
++    ret = Des3_CbcDecrypt(&dec, plain, cipher, sizeof(cipher));
++    if (ret != 0)
++        return -34;
++
++    if (memcmp(plain, vector, sizeof(plain)))
++        return -35;
++
++    if (memcmp(cipher, verify3, sizeof(cipher)))
++        return -36;
++
++#ifdef HAVE_CAVIUM
++    Des3_FreeCavium(&enc);
++    Des3_FreeCavium(&dec);
++#endif
++    return 0;
++}
++#endif /* NO_DES */
++
++
++#ifndef NO_AES
++int aes_test(void)
++{
++    Aes enc;
++    Aes dec;
++
++    const byte msg[] = { /* "Now is the time for all " w/o trailing 0 */
++        0x6e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74,
++        0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20,
++        0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20
++    };
++
++    const byte verify[] =
++    {
++        0x95,0x94,0x92,0x57,0x5f,0x42,0x81,0x53,
++        0x2c,0xcc,0x9d,0x46,0x77,0xa2,0x33,0xcb
++    };
++
++    byte key[] = "0123456789abcdef   ";  /* align */
++    byte iv[]  = "1234567890abcdef   ";  /* align */
++
++    byte cipher[AES_BLOCK_SIZE * 4];
++    byte plain [AES_BLOCK_SIZE * 4];
++    int  ret;
++
++#ifdef HAVE_CAVIUM
++        if (AesInitCavium(&enc, CAVIUM_DEV_ID) != 0)
++            return -20003;
++        if (AesInitCavium(&dec, CAVIUM_DEV_ID) != 0)
++            return -20004;
++#endif
++    ret = AesSetKey(&enc, key, AES_BLOCK_SIZE, iv, AES_ENCRYPTION);
++    if (ret != 0)
++        return -1001;
++    ret = AesSetKey(&dec, key, AES_BLOCK_SIZE, iv, AES_DECRYPTION);
++    if (ret != 0)
++        return -1002;
++
++    ret = AesCbcEncrypt(&enc, cipher, msg,   AES_BLOCK_SIZE);
++    if (ret != 0)
++        return -1005;
++    ret = AesCbcDecrypt(&dec, plain, cipher, AES_BLOCK_SIZE);
++    if (ret != 0)
++        return -1006;
++
++    if (memcmp(plain, msg, AES_BLOCK_SIZE))
++        return -60;
++
++    if (memcmp(cipher, verify, AES_BLOCK_SIZE))
++        return -61;
++
++#ifdef HAVE_CAVIUM
++        AesFreeCavium(&enc);
++        AesFreeCavium(&dec);
++#endif
++#ifdef CYASSL_AES_COUNTER
++    {
++        const byte ctrKey[] =
++        {
++            0x2b,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6,
++            0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x3c
++        };
++
++        const byte ctrIv[] =
++        {
++            0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
++            0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff
++        };
++
++
++        const byte ctrPlain[] =
++        {
++            0x6b,0xc1,0xbe,0xe2,0x2e,0x40,0x9f,0x96,
++            0xe9,0x3d,0x7e,0x11,0x73,0x93,0x17,0x2a,
++            0xae,0x2d,0x8a,0x57,0x1e,0x03,0xac,0x9c,
++            0x9e,0xb7,0x6f,0xac,0x45,0xaf,0x8e,0x51,
++            0x30,0xc8,0x1c,0x46,0xa3,0x5c,0xe4,0x11,
++            0xe5,0xfb,0xc1,0x19,0x1a,0x0a,0x52,0xef,
++            0xf6,0x9f,0x24,0x45,0xdf,0x4f,0x9b,0x17,
++            0xad,0x2b,0x41,0x7b,0xe6,0x6c,0x37,0x10
++        };
++
++        const byte ctrCipher[] =
++        {
++            0x87,0x4d,0x61,0x91,0xb6,0x20,0xe3,0x26,
++            0x1b,0xef,0x68,0x64,0x99,0x0d,0xb6,0xce,
++            0x98,0x06,0xf6,0x6b,0x79,0x70,0xfd,0xff,
++            0x86,0x17,0x18,0x7b,0xb9,0xff,0xfd,0xff,
++            0x5a,0xe4,0xdf,0x3e,0xdb,0xd5,0xd3,0x5e,
++            0x5b,0x4f,0x09,0x02,0x0d,0xb0,0x3e,0xab,
++            0x1e,0x03,0x1d,0xda,0x2f,0xbe,0x03,0xd1,
++            0x79,0x21,0x70,0xa0,0xf3,0x00,0x9c,0xee
++        };
++
++        const byte oddCipher[] =
++        {
++            0xb9,0xd7,0xcb,0x08,0xb0,0xe1,0x7b,0xa0,
++            0xc2
++        };
++
++        AesSetKeyDirect(&enc, ctrKey, AES_BLOCK_SIZE, ctrIv, AES_ENCRYPTION);
++        /* Ctr only uses encrypt, even on key setup */
++        AesSetKeyDirect(&dec, ctrKey, AES_BLOCK_SIZE, ctrIv, AES_ENCRYPTION);
++
++        AesCtrEncrypt(&enc, cipher, ctrPlain, AES_BLOCK_SIZE*4);
++        AesCtrEncrypt(&dec, plain, cipher, AES_BLOCK_SIZE*4);
++
++        if (memcmp(plain, ctrPlain, AES_BLOCK_SIZE*4))
++            return -66;
++
++        if (memcmp(cipher, ctrCipher, AES_BLOCK_SIZE*4))
++            return -67;
++
++        /* let's try with just 9 bytes, non block size test */
++        AesSetKeyDirect(&enc, ctrKey, AES_BLOCK_SIZE, ctrIv, AES_ENCRYPTION);
++        /* Ctr only uses encrypt, even on key setup */
++        AesSetKeyDirect(&dec, ctrKey, AES_BLOCK_SIZE, ctrIv, AES_ENCRYPTION);
++
++        AesCtrEncrypt(&enc, cipher, ctrPlain, 9);
++        AesCtrEncrypt(&dec, plain, cipher, 9);
++
++        if (memcmp(plain, ctrPlain, 9))
++            return -68;
++
++        if (memcmp(cipher, ctrCipher, 9))
++            return -69;
++
++        /* and an additional 9 bytes to reuse tmp left buffer */
++        AesCtrEncrypt(&enc, cipher, ctrPlain, 9);
++        AesCtrEncrypt(&dec, plain, cipher, 9);
++
++        if (memcmp(plain, ctrPlain, 9))
++            return -70;
++
++        if (memcmp(cipher, oddCipher, 9))
++            return -71;
++    }
++#endif /* CYASSL_AES_COUNTER */
++
++#if defined(CYASSL_AESNI) && defined(CYASSL_AES_DIRECT)
++    {
++        const byte niPlain[] =
++        {
++            0x6b,0xc1,0xbe,0xe2,0x2e,0x40,0x9f,0x96,
++            0xe9,0x3d,0x7e,0x11,0x73,0x93,0x17,0x2a
++        };
++
++        const byte niCipher[] =
++        {
++            0xf3,0xee,0xd1,0xbd,0xb5,0xd2,0xa0,0x3c,
++            0x06,0x4b,0x5a,0x7e,0x3d,0xb1,0x81,0xf8
++        };
++
++        const byte niKey[] =
++        {
++            0x60,0x3d,0xeb,0x10,0x15,0xca,0x71,0xbe,
++            0x2b,0x73,0xae,0xf0,0x85,0x7d,0x77,0x81,
++            0x1f,0x35,0x2c,0x07,0x3b,0x61,0x08,0xd7,
++            0x2d,0x98,0x10,0xa3,0x09,0x14,0xdf,0xf4
++        };
++
++        XMEMSET(cipher, 0, AES_BLOCK_SIZE);
++        ret = AesSetKey(&enc, niKey, sizeof(niKey), cipher, AES_ENCRYPTION);
++        if (ret != 0)
++            return -1003;
++        AesEncryptDirect(&enc, cipher, niPlain);
++        if (XMEMCMP(cipher, niCipher, AES_BLOCK_SIZE) != 0)
++            return -20006;
++
++        XMEMSET(plain, 0, AES_BLOCK_SIZE);
++        ret = AesSetKey(&dec, niKey, sizeof(niKey), plain, AES_DECRYPTION);
++        if (ret != 0)
++            return -1004;
++        AesDecryptDirect(&dec, plain, niCipher);
++        if (XMEMCMP(plain, niPlain, AES_BLOCK_SIZE) != 0)
++            return -20007;
++    }
++#endif /* CYASSL_AESNI && CYASSL_AES_DIRECT */
++
++    return 0;
++}
++
++#ifdef HAVE_AESGCM
++int aesgcm_test(void)
++{
++    Aes enc;
++
++    /*
++     * This is Test Case 16 from the document Galois/
++     * Counter Mode of Operation (GCM) by McGrew and
++     * Viega.
++     */
++    const byte k[] =
++    {
++        0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
++        0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
++        0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
++        0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08
++    };
++
++    const byte iv[] =
++    {
++        0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
++        0xde, 0xca, 0xf8, 0x88
++    };
++
++    const byte p[] =
++    {
++        0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
++        0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
++        0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
++        0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
++        0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
++        0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
++        0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
++        0xba, 0x63, 0x7b, 0x39
++    };
++
++    const byte a[] =
++    {
++        0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
++        0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
++        0xab, 0xad, 0xda, 0xd2
++    };
++
++    const byte c[] =
++    {
++        0x52, 0x2d, 0xc1, 0xf0, 0x99, 0x56, 0x7d, 0x07,
++        0xf4, 0x7f, 0x37, 0xa3, 0x2a, 0x84, 0x42, 0x7d,
++        0x64, 0x3a, 0x8c, 0xdc, 0xbf, 0xe5, 0xc0, 0xc9,
++        0x75, 0x98, 0xa2, 0xbd, 0x25, 0x55, 0xd1, 0xaa,
++        0x8c, 0xb0, 0x8e, 0x48, 0x59, 0x0d, 0xbb, 0x3d,
++        0xa7, 0xb0, 0x8b, 0x10, 0x56, 0x82, 0x88, 0x38,
++        0xc5, 0xf6, 0x1e, 0x63, 0x93, 0xba, 0x7a, 0x0a,
++        0xbc, 0xc9, 0xf6, 0x62
++    };
++
++    const byte t[] =
++    {
++        0x76, 0xfc, 0x6e, 0xce, 0x0f, 0x4e, 0x17, 0x68,
++        0xcd, 0xdf, 0x88, 0x53, 0xbb, 0x2d, 0x55, 0x1b
++    };
++
++    byte t2[sizeof(t)];
++    byte p2[sizeof(c)];
++    byte c2[sizeof(p)];
++
++    int result;
++
++    memset(t2, 0, sizeof(t2));
++    memset(c2, 0, sizeof(c2));
++    memset(p2, 0, sizeof(p2));
++
++    AesGcmSetKey(&enc, k, sizeof(k));
++    /* AES-GCM encrypt and decrypt both use AES encrypt internally */
++    AesGcmEncrypt(&enc, c2, p, sizeof(c2), iv, sizeof(iv),
++                                                 t2, sizeof(t2), a, sizeof(a));
++    if (memcmp(c, c2, sizeof(c2)))
++        return -68;
++    if (memcmp(t, t2, sizeof(t2)))
++        return -69;
++
++    result = AesGcmDecrypt(&enc, p2, c2, sizeof(p2), iv, sizeof(iv),
++                                                 t2, sizeof(t2), a, sizeof(a));
++    if (result != 0)
++        return -70;
++    if (memcmp(p, p2, sizeof(p2)))
++        return -71;
++
++    return 0;
++}
++
++int gmac_test(void)
++{
++    Gmac gmac;
++
++    const byte k1[] =
++    {
++        0x89, 0xc9, 0x49, 0xe9, 0xc8, 0x04, 0xaf, 0x01,
++        0x4d, 0x56, 0x04, 0xb3, 0x94, 0x59, 0xf2, 0xc8
++    };
++    const byte iv1[] =
++    {
++        0xd1, 0xb1, 0x04, 0xc8, 0x15, 0xbf, 0x1e, 0x94,
++        0xe2, 0x8c, 0x8f, 0x16
++    };
++    const byte a1[] =
++    {
++       0x82, 0xad, 0xcd, 0x63, 0x8d, 0x3f, 0xa9, 0xd9,
++       0xf3, 0xe8, 0x41, 0x00, 0xd6, 0x1e, 0x07, 0x77
++    };
++    const byte t1[] =
++    {
++        0x88, 0xdb, 0x9d, 0x62, 0x17, 0x2e, 0xd0, 0x43,
++        0xaa, 0x10, 0xf1, 0x6d, 0x22, 0x7d, 0xc4, 0x1b
++    };
++
++    const byte k2[] =
++    {
++        0x40, 0xf7, 0xec, 0xb2, 0x52, 0x6d, 0xaa, 0xd4,
++        0x74, 0x25, 0x1d, 0xf4, 0x88, 0x9e, 0xf6, 0x5b
++    };
++    const byte iv2[] =
++    {
++        0xee, 0x9c, 0x6e, 0x06, 0x15, 0x45, 0x45, 0x03,
++        0x1a, 0x60, 0x24, 0xa7
++    };
++    const byte a2[] =
++    {
++        0x94, 0x81, 0x2c, 0x87, 0x07, 0x4e, 0x15, 0x18,
++        0x34, 0xb8, 0x35, 0xaf, 0x1c, 0xa5, 0x7e, 0x56
++    };
++    const byte t2[] =
++    {
++        0xc6, 0x81, 0x79, 0x8e, 0x3d, 0xda, 0xb0, 0x9f,
++        0x8d, 0x83, 0xb0, 0xbb, 0x14, 0xb6, 0x91
++    };
++
++    const byte k3[] =
++    {
++        0xb8, 0xe4, 0x9a, 0x5e, 0x37, 0xf9, 0x98, 0x2b,
++        0xb9, 0x6d, 0xd0, 0xc9, 0xb6, 0xab, 0x26, 0xac
++    };
++    const byte iv3[] =
++    {
++        0xe4, 0x4a, 0x42, 0x18, 0x8c, 0xae, 0x94, 0x92,
++        0x6a, 0x9c, 0x26, 0xb0
++    };
++    const byte a3[] =
++    {
++        0x9d, 0xb9, 0x61, 0x68, 0xa6, 0x76, 0x7a, 0x31,
++        0xf8, 0x29, 0xe4, 0x72, 0x61, 0x68, 0x3f, 0x8a
++    };
++    const byte t3[] =
++    {
++        0x23, 0xe2, 0x9f, 0x66, 0xe4, 0xc6, 0x52, 0x48
++    };
++
++    byte tag[16];
++
++    memset(tag, 0, sizeof(tag));
++    GmacSetKey(&gmac, k1, sizeof(k1));
++    GmacUpdate(&gmac, iv1, sizeof(iv1), a1, sizeof(a1), tag, sizeof(t1));
++    if (memcmp(t1, tag, sizeof(t1)) != 0)
++        return -126;
++
++    memset(tag, 0, sizeof(tag));
++    GmacSetKey(&gmac, k2, sizeof(k2));
++    GmacUpdate(&gmac, iv2, sizeof(iv2), a2, sizeof(a2), tag, sizeof(t2));
++    if (memcmp(t2, tag, sizeof(t2)) != 0)
++        return -127;
++
++    memset(tag, 0, sizeof(tag));
++    GmacSetKey(&gmac, k3, sizeof(k3));
++    GmacUpdate(&gmac, iv3, sizeof(iv3), a3, sizeof(a3), tag, sizeof(t3));
++    if (memcmp(t3, tag, sizeof(t3)) != 0)
++        return -128;
++
++    return 0;
++}
++#endif /* HAVE_AESGCM */
++
++#ifdef HAVE_AESCCM
++int aesccm_test(void)
++{
++    Aes enc;
++
++    /* key */
++    const byte k[] =
++    {
++        0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
++        0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf
++    };
++
++    /* nonce */
++    const byte iv[] =
++    {
++        0x00, 0x00, 0x00, 0x03, 0x02, 0x01, 0x00, 0xa0,
++        0xa1, 0xa2, 0xa3, 0xa4, 0xa5
++    };
++
++    /* plaintext */
++    const byte p[] =
++    {
++        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
++        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
++        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e
++    };
++
++    const byte a[] =
++    {
++        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
++    };
++
++    const byte c[] =
++    {
++        0x58, 0x8c, 0x97, 0x9a, 0x61, 0xc6, 0x63, 0xd2,
++        0xf0, 0x66, 0xd0, 0xc2, 0xc0, 0xf9, 0x89, 0x80,
++        0x6d, 0x5f, 0x6b, 0x61, 0xda, 0xc3, 0x84
++    };
++
++    const byte t[] =
++    {
++        0x17, 0xe8, 0xd1, 0x2c, 0xfd, 0xf9, 0x26, 0xe0
++    };
++
++    byte t2[sizeof(t)];
++    byte p2[sizeof(p)];
++    byte c2[sizeof(c)];
++
++    int result;
++
++    memset(t2, 0, sizeof(t2));
++    memset(c2, 0, sizeof(c2));
++    memset(p2, 0, sizeof(p2));
++
++    AesCcmSetKey(&enc, k, sizeof(k));
++    /* AES-CCM encrypt and decrypt both use AES encrypt internally */
++    AesCcmEncrypt(&enc, c2, p, sizeof(c2), iv, sizeof(iv),
++                                                 t2, sizeof(t2), a, sizeof(a));
++    if (memcmp(c, c2, sizeof(c2)))
++        return -107;
++    if (memcmp(t, t2, sizeof(t2)))
++        return -108;
++
++    result = AesCcmDecrypt(&enc, p2, c2, sizeof(p2), iv, sizeof(iv),
++                                                 t2, sizeof(t2), a, sizeof(a));
++    if (result != 0)
++        return -109;
++    if (memcmp(p, p2, sizeof(p2)))
++        return -110;
++
++    /* Test the authentication failure */
++    t2[0]++; /* Corrupt the authentication tag. */
++    result = AesCcmDecrypt(&enc, p2, c, sizeof(p2), iv, sizeof(iv),
++                                                 t2, sizeof(t2), a, sizeof(a));
++    if (result == 0)
++        return -111;
++
++    /* Clear c2 to compare against p2. p2 should be set to zero in case of
++     * authentication fail. */
++    memset(c2, 0, sizeof(c2));
++    if (memcmp(p2, c2, sizeof(p2)))
++        return -112;
++
++    return 0;
++}
++#endif /* HAVE_AESCCM */
++
++
++#endif /* NO_AES */
++
++
++#ifdef HAVE_CAMELLIA
++
++enum {
++    CAM_ECB_ENC, CAM_ECB_DEC, CAM_CBC_ENC, CAM_CBC_DEC
++};
++
++typedef struct {
++    int type;
++    const byte* plaintext;
++    const byte* iv;
++    const byte* ciphertext;
++    const byte* key;
++    word32 keySz;
++    int errorCode;
++} test_vector_t;
++
++int camellia_test(void)
++{
++    /* Camellia ECB Test Plaintext */
++    static const byte pte[] =
++    {
++        0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
++        0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10
++    };
++
++    /* Camellia ECB Test Initialization Vector */
++    static const byte ive[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
++
++    /* Test 1: Camellia ECB 128-bit key */
++    static const byte k1[] =
++    {
++        0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
++        0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10
++    };
++    static const byte c1[] =
++    {
++        0x67, 0x67, 0x31, 0x38, 0x54, 0x96, 0x69, 0x73,
++        0x08, 0x57, 0x06, 0x56, 0x48, 0xea, 0xbe, 0x43
++    };
++
++    /* Test 2: Camellia ECB 192-bit key */
++    static const byte k2[] =
++    {
++        0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
++        0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
++        0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77
++    };
++    static const byte c2[] =
++    {
++        0xb4, 0x99, 0x34, 0x01, 0xb3, 0xe9, 0x96, 0xf8,
++        0x4e, 0xe5, 0xce, 0xe7, 0xd7, 0x9b, 0x09, 0xb9
++    };
++
++    /* Test 3: Camellia ECB 256-bit key */
++    static const byte k3[] =
++    {
++        0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
++        0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
++        0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
++        0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff
++    };
++    static const byte c3[] =
++    {
++        0x9a, 0xcc, 0x23, 0x7d, 0xff, 0x16, 0xd7, 0x6c,
++        0x20, 0xef, 0x7c, 0x91, 0x9e, 0x3a, 0x75, 0x09
++    };
++
++    /* Camellia CBC Test Plaintext */
++    static const byte ptc[] =
++    {
++        0x6B, 0xC1, 0xBE, 0xE2, 0x2E, 0x40, 0x9F, 0x96,
++        0xE9, 0x3D, 0x7E, 0x11, 0x73, 0x93, 0x17, 0x2A
++    };
++
++    /* Camellia CBC Test Initialization Vector */
++    static const byte ivc[] =
++    {
++        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
++        0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
++    };
++
++    /* Test 4: Camellia-CBC 128-bit key */
++    static const byte k4[] =
++    {
++        0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
++        0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
++    };
++    static const byte c4[] =
++    {
++        0x16, 0x07, 0xCF, 0x49, 0x4B, 0x36, 0xBB, 0xF0,
++        0x0D, 0xAE, 0xB0, 0xB5, 0x03, 0xC8, 0x31, 0xAB
++    };
++
++    /* Test 5: Camellia-CBC 192-bit key */
++    static const byte k5[] =
++    {
++        0x8E, 0x73, 0xB0, 0xF7, 0xDA, 0x0E, 0x64, 0x52,
++        0xC8, 0x10, 0xF3, 0x2B, 0x80, 0x90, 0x79, 0xE5,
++        0x62, 0xF8, 0xEA, 0xD2, 0x52, 0x2C, 0x6B, 0x7B
++    };
++    static const byte c5[] =
++    {
++        0x2A, 0x48, 0x30, 0xAB, 0x5A, 0xC4, 0xA1, 0xA2,
++        0x40, 0x59, 0x55, 0xFD, 0x21, 0x95, 0xCF, 0x93
++    };
++
++    /* Test 6: CBC 256-bit key */
++    static const byte k6[] =
++    {
++        0x60, 0x3D, 0xEB, 0x10, 0x15, 0xCA, 0x71, 0xBE,
++        0x2B, 0x73, 0xAE, 0xF0, 0x85, 0x7D, 0x77, 0x81,
++        0x1F, 0x35, 0x2C, 0x07, 0x3B, 0x61, 0x08, 0xD7,
++        0x2D, 0x98, 0x10, 0xA3, 0x09, 0x14, 0xDF, 0xF4
++    };
++    static const byte c6[] =
++    {
++        0xE6, 0xCF, 0xA3, 0x5F, 0xC0, 0x2B, 0x13, 0x4A,
++        0x4D, 0x2C, 0x0B, 0x67, 0x37, 0xAC, 0x3E, 0xDA
++    };
++
++    byte out[CAMELLIA_BLOCK_SIZE];
++    Camellia cam;
++    int i, testsSz;
++    const test_vector_t testVectors[] =
++    {
++        {CAM_ECB_ENC, pte, ive, c1, k1, sizeof(k1), -114},
++        {CAM_ECB_ENC, pte, ive, c2, k2, sizeof(k2), -115},
++        {CAM_ECB_ENC, pte, ive, c3, k3, sizeof(k3), -116},
++        {CAM_ECB_DEC, pte, ive, c1, k1, sizeof(k1), -117},
++        {CAM_ECB_DEC, pte, ive, c2, k2, sizeof(k2), -118},
++        {CAM_ECB_DEC, pte, ive, c3, k3, sizeof(k3), -119},
++        {CAM_CBC_ENC, ptc, ivc, c4, k4, sizeof(k4), -120},
++        {CAM_CBC_ENC, ptc, ivc, c5, k5, sizeof(k5), -121},
++        {CAM_CBC_ENC, ptc, ivc, c6, k6, sizeof(k6), -122},
++        {CAM_CBC_DEC, ptc, ivc, c4, k4, sizeof(k4), -123},
++        {CAM_CBC_DEC, ptc, ivc, c5, k5, sizeof(k5), -124},
++        {CAM_CBC_DEC, ptc, ivc, c6, k6, sizeof(k6), -125}
++    };
++
++    testsSz = sizeof(testVectors)/sizeof(test_vector_t);
++    for (i = 0; i < testsSz; i++) {
++        if (CamelliaSetKey(&cam, testVectors[i].key, testVectors[i].keySz,
++                                                        testVectors[i].iv) != 0)
++            return testVectors[i].errorCode;
++
++        switch (testVectors[i].type) {
++            case CAM_ECB_ENC:
++                CamelliaEncryptDirect(&cam, out, testVectors[i].plaintext);
++                if (memcmp(out, testVectors[i].ciphertext, CAMELLIA_BLOCK_SIZE))
++                    return testVectors[i].errorCode;
++                break;
++            case CAM_ECB_DEC:
++                CamelliaDecryptDirect(&cam, out, testVectors[i].ciphertext);
++                if (memcmp(out, testVectors[i].plaintext, CAMELLIA_BLOCK_SIZE))
++                    return testVectors[i].errorCode;
++                break;
++            case CAM_CBC_ENC:
++                CamelliaCbcEncrypt(&cam, out, testVectors[i].plaintext,
++                                                           CAMELLIA_BLOCK_SIZE);
++                if (memcmp(out, testVectors[i].ciphertext, CAMELLIA_BLOCK_SIZE))
++                    return testVectors[i].errorCode;
++                break;
++            case CAM_CBC_DEC:
++                CamelliaCbcDecrypt(&cam, out, testVectors[i].ciphertext,
++                                                           CAMELLIA_BLOCK_SIZE);
++                if (memcmp(out, testVectors[i].plaintext, CAMELLIA_BLOCK_SIZE))
++                    return testVectors[i].errorCode;
++                break;
++            default:
++                break;
++        }
++    }
++
++    /* Setting the IV and checking it was actually set. */
++    CamelliaSetIV(&cam, ivc);
++    if (XMEMCMP(cam.reg, ivc, CAMELLIA_BLOCK_SIZE))
++        return -1;
++
++    /* Setting the IV to NULL should be same as all zeros IV */
++    if (CamelliaSetIV(&cam, NULL) != 0 ||
++                                    XMEMCMP(cam.reg, ive, CAMELLIA_BLOCK_SIZE))
++        return -1;
++
++    /* First parameter should never be null */
++    if (CamelliaSetIV(NULL, NULL) == 0)
++        return -1;
++
++    /* First parameter should never be null, check it fails */
++    if (CamelliaSetKey(NULL, k1, sizeof(k1), NULL) == 0)
++        return -1;
++
++    /* Key should have a size of 16, 24, or 32 */
++    if (CamelliaSetKey(&cam, k1, 0, NULL) == 0)
++        return -1;
++
++    return 0;
++}
++#endif /* HAVE_CAMELLIA */
++
++
++int random_test(void)
++{
++    RNG  rng;
++    byte block[32];
++    int ret;
++
++#ifdef HAVE_CAVIUM
++    ret = InitRngCavium(&rng, CAVIUM_DEV_ID);
++    if (ret != 0) return -2007;
++#endif
++    ret = InitRng(&rng);
++    if (ret != 0) return -39;
++
++    ret = RNG_GenerateBlock(&rng, block, sizeof(block));
++    if (ret != 0) return -40;
++
++    return 0;
++}
++
++
++#ifdef HAVE_NTRU
++
++byte GetEntropy(ENTROPY_CMD cmd, byte* out);
++
++byte GetEntropy(ENTROPY_CMD cmd, byte* out)
++{
++    static RNG rng;
++
++    if (cmd == INIT)
++        return (InitRng(&rng) == 0) ? 1 : 0;
++
++    if (out == NULL)
++        return 0;
++
++    if (cmd == GET_BYTE_OF_ENTROPY)
++        return (RNG_GenerateBlock(&rng, out, 1) == 0) ? 1 : 0;
++
++    if (cmd == GET_NUM_BYTES_PER_BYTE_OF_ENTROPY) {
++        *out = 1;
++        return 1;
++    }
++
++    return 0;
++}
++
++#endif /* HAVE_NTRU */
++
++#ifndef NO_RSA
++
++#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048)
++    #ifdef FREESCALE_MQX
++        static const char* clientKey  = "a:\\certs\\client-key.der";
++        static const char* clientCert = "a:\\certs\\client-cert.der";
++        #ifdef CYASSL_CERT_GEN
++            static const char* caKeyFile  = "a:\\certs\\ca-key.der";
++            static const char* caCertFile = "a:\\certs\\ca-cert.pem";
++            #ifdef HAVE_ECC
++                static const char* eccCaKeyFile  = "a:\\certs\\ecc-key.der";
++                static const char* eccCaCertFile = "a:\\certs\\server-ecc.pem";
++            #endif
++        #endif
++    #elif defined(CYASSL_MKD_SHELL)
++        static char* clientKey = "certs/client-key.der";
++        static char* clientCert = "certs/client-cert.der";
++        void set_clientKey(char *key) {  clientKey = key ; }
++        void set_clientCert(char *cert) {  clientCert = cert ; }
++        #ifdef CYASSL_CERT_GEN
++            static char* caKeyFile  = "certs/ca-key.der";
++            static char* caCertFile = "certs/ca-cert.pem";
++            void set_caKeyFile (char * key)  { caKeyFile   = key ; }
++            void set_caCertFile(char * cert) { caCertFile = cert ; }
++            #ifdef HAVE_ECC
++                static const char* eccCaKeyFile  = "certs/ecc-key.der";
++                static const char* eccCaCertFile = "certs/server-ecc.pem";
++                void set_eccCaKeyFile (char * key)  { eccCaKeyFile  = key ; }
++                void set_eccCaCertFile(char * cert) { eccCaCertFile = cert ; }
++            #endif
++        #endif
++    #else
++        static const char* clientKey  = "./certs/client-key.der";
++        static const char* clientCert = "./certs/client-cert.der";
++        #ifdef CYASSL_CERT_GEN
++            static const char* caKeyFile  = "./certs/ca-key.der";
++            static const char* caCertFile = "./certs/ca-cert.pem";
++            #ifdef HAVE_ECC
++                static const char* eccCaKeyFile  = "./certs/ecc-key.der";
++                static const char* eccCaCertFile = "./certs/server-ecc.pem";
++            #endif
++        #endif
++    #endif
++#endif
++
++
++
++#define FOURK_BUF 4096
++
++int rsa_test(void)
++{
++    byte*   tmp;
++    size_t bytes;
++    RsaKey key;
++    RNG    rng;
++    word32 idx = 0;
++    int    ret;
++    byte   in[] = "Everyone gets Friday off.";
++    word32 inLen = (word32)strlen((char*)in);
++    byte   out[256];
++    byte   plain[256];
++#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048)
++    FILE*  file, * file2;
++#endif
++#ifdef CYASSL_TEST_CERT
++    DecodedCert cert;
++#endif
++
++    tmp = (byte*)malloc(FOURK_BUF);
++    if (tmp == NULL)
++        return -40;
++
++#ifdef USE_CERT_BUFFERS_1024
++    XMEMCPY(tmp, client_key_der_1024, sizeof_client_key_der_1024);
++    bytes = sizeof_client_key_der_1024;
++#elif defined(USE_CERT_BUFFERS_2048)
++    XMEMCPY(tmp, client_key_der_2048, sizeof_client_key_der_2048);
++    bytes = sizeof_client_key_der_2048;
++#else
++    file = fopen(clientKey, "rb");
++
++    if (!file)
++        err_sys("can't open ./certs/client-key.der, "
++                "Please run from CyaSSL home dir", -40);
++
++    bytes = fread(tmp, 1, FOURK_BUF, file);
++    fclose(file);
++#endif /* USE_CERT_BUFFERS */
++
++#ifdef HAVE_CAVIUM
++    RsaInitCavium(&key, CAVIUM_DEV_ID);
++#endif
++    ret = InitRsaKey(&key, 0);
++    if (ret != 0) return -39;
++    ret = RsaPrivateKeyDecode(tmp, &idx, &key, (word32)bytes);
++    if (ret != 0) return -41;
++
++    ret = InitRng(&rng);
++    if (ret != 0) return -42;
++
++    ret = RsaPublicEncrypt(in, inLen, out, sizeof(out), &key, &rng);
++    if (ret < 0) return -43;
++
++    ret = RsaPrivateDecrypt(out, ret, plain, sizeof(plain), &key);
++    if (ret < 0) return -44;
++
++    if (memcmp(plain, in, inLen)) return -45;
++
++    ret = RsaSSL_Sign(in, inLen, out, sizeof(out), &key, &rng);
++    if (ret < 0) return -46;
++
++    memset(plain, 0, sizeof(plain));
++    ret = RsaSSL_Verify(out, ret, plain, sizeof(plain), &key);
++    if (ret < 0) return -47;
++
++    if (memcmp(plain, in, ret)) return -48;
++
++#if defined(CYASSL_MDK_ARM)
++    #define sizeof(s) strlen((char *)(s))
++#endif
++
++#ifdef USE_CERT_BUFFERS_1024
++    XMEMCPY(tmp, client_cert_der_1024, sizeof_client_cert_der_1024);
++    bytes = sizeof_client_cert_der_1024;
++#elif defined(USE_CERT_BUFFERS_2048)
++    XMEMCPY(tmp, client_cert_der_2048, sizeof_client_cert_der_2048);
++    bytes = sizeof_client_cert_der_2048;
++#else
++    file2 = fopen(clientCert, "rb");
++    if (!file2)
++        return -49;
++
++    bytes = fread(tmp, 1, FOURK_BUF, file2);
++    fclose(file2);
++#endif
++
++#ifdef sizeof
++		#undef sizeof
++#endif
++
++#ifdef CYASSL_TEST_CERT
++    InitDecodedCert(&cert, tmp, (word32)bytes, 0);
++
++    ret = ParseCert(&cert, CERT_TYPE, NO_VERIFY, 0);
++    if (ret != 0) return -491;
++
++    FreeDecodedCert(&cert);
++#else
++    (void)bytes;
++#endif
++
++
++#ifdef CYASSL_KEY_GEN
++    {
++        byte*  der;
++        byte*  pem;
++        int    derSz = 0;
++        int    pemSz = 0;
++        RsaKey derIn;
++        RsaKey genKey;
++        FILE* keyFile;
++        FILE* pemFile;
++
++        ret = InitRsaKey(&genKey, 0);
++        if (ret != 0)
++            return -300;
++        ret = MakeRsaKey(&genKey, 1024, 65537, &rng);
++        if (ret != 0)
++            return -301;
++
++        der = (byte*)malloc(FOURK_BUF);
++        if (der == NULL) {
++            FreeRsaKey(&genKey);
++            return -307;
++        }
++        pem = (byte*)malloc(FOURK_BUF);
++        if (pem == NULL) {
++            free(der);
++            FreeRsaKey(&genKey);
++            return -308;
++        }
++
++        derSz = RsaKeyToDer(&genKey, der, FOURK_BUF);
++        if (derSz < 0) {
++            free(der);
++            free(pem);
++            return -302;
++        }
++
++        keyFile = fopen("./key.der", "wb");
++        if (!keyFile) {
++            free(der);
++            free(pem);
++            FreeRsaKey(&genKey);
++            return -303;
++        }
++        ret = (int)fwrite(der, 1, derSz, keyFile);
++        fclose(keyFile);
++        if (ret != derSz) {
++            free(der);
++            free(pem);
++            FreeRsaKey(&genKey);
++            return -313;
++        }
++
++        pemSz = DerToPem(der, derSz, pem, FOURK_BUF, PRIVATEKEY_TYPE);
++        if (pemSz < 0) {
++            free(der);
++            free(pem);
++            FreeRsaKey(&genKey);
++            return -304;
++        }
++
++        pemFile = fopen("./key.pem", "wb");
++        if (!pemFile) {
++            free(der);
++            free(pem);
++            FreeRsaKey(&genKey);
++            return -305;
++        }
++        ret = (int)fwrite(pem, 1, pemSz, pemFile);
++        fclose(pemFile);
++        if (ret != pemSz) {
++            free(der);
++            free(pem);
++            FreeRsaKey(&genKey);
++            return -314;
++        }
++
++        ret = InitRsaKey(&derIn, 0);
++        if (ret != 0) {
++            free(der);
++            free(pem);
++            FreeRsaKey(&genKey);
++            return -3060;
++        }
++        idx = 0;
++        ret = RsaPrivateKeyDecode(der, &idx, &derIn, derSz);
++        if (ret != 0) {
++            free(der);
++            free(pem);
++            FreeRsaKey(&derIn);
++            FreeRsaKey(&genKey);
++            return -306;
++        }
++
++        FreeRsaKey(&derIn);
++        FreeRsaKey(&genKey);
++        free(pem);
++        free(der);
++    }
++#endif /* CYASSL_KEY_GEN */
++
++
++#ifdef CYASSL_CERT_GEN
++    /* self signed */
++    {
++        Cert        myCert;
++        byte*       derCert;
++        byte*       pem;
++        FILE*       derFile;
++        FILE*       pemFile;
++        int         certSz;
++        int         pemSz;
++#ifdef CYASSL_TEST_CERT
++        DecodedCert decode;
++#endif
++
++        derCert = (byte*)malloc(FOURK_BUF);
++        if (derCert == NULL)
++            return -309;
++        pem = (byte*)malloc(FOURK_BUF);
++        if (pem == NULL) {
++            free(derCert);
++            return -310;
++        }
++
++        InitCert(&myCert);
++
++        strncpy(myCert.subject.country, "US", CTC_NAME_SIZE);
++        strncpy(myCert.subject.state, "OR", CTC_NAME_SIZE);
++        strncpy(myCert.subject.locality, "Portland", CTC_NAME_SIZE);
++        strncpy(myCert.subject.org, "yaSSL", CTC_NAME_SIZE);
++        strncpy(myCert.subject.unit, "Development", CTC_NAME_SIZE);
++        strncpy(myCert.subject.commonName, "www.yassl.com", CTC_NAME_SIZE);
++        strncpy(myCert.subject.email, "info@yassl.com", CTC_NAME_SIZE);
++        myCert.isCA    = 1;
++        myCert.sigType = CTC_SHA256wRSA;
++
++        certSz = MakeSelfCert(&myCert, derCert, FOURK_BUF, &key, &rng);
++        if (certSz < 0) {
++            free(derCert);
++            free(pem);
++            return -401;
++        }
++
++#ifdef CYASSL_TEST_CERT
++        InitDecodedCert(&decode, derCert, certSz, 0);
++        ret = ParseCert(&decode, CERT_TYPE, NO_VERIFY, 0);
++        if (ret != 0) {
++            free(derCert);
++            free(pem);
++            return -402;
++        }
++        FreeDecodedCert(&decode);
++#endif
++        derFile = fopen("./cert.der", "wb");
++        if (!derFile) {
++            free(derCert);
++            free(pem);
++            return -403;
++        }
++        ret = (int)fwrite(derCert, 1, certSz, derFile);
++        fclose(derFile);
++        if (ret != certSz) {
++            free(derCert);
++            free(pem);
++            return -414;
++        }
++
++        pemSz = DerToPem(derCert, certSz, pem, FOURK_BUF, CERT_TYPE);
++        if (pemSz < 0) {
++            free(derCert);
++            free(pem);
++            return -404;
++        }
++
++        pemFile = fopen("./cert.pem", "wb");
++        if (!pemFile) {
++            free(derCert);
++            free(pem);
++            return -405;
++        }
++        ret = (int)fwrite(pem, 1, pemSz, pemFile);
++        fclose(pemFile);
++        if (ret != pemSz) {
++            free(derCert);
++            free(pem);
++            return -406;
++        }
++        free(pem);
++        free(derCert);
++    }
++    /* CA style */
++    {
++        RsaKey      caKey;
++        Cert        myCert;
++        byte*       derCert;
++        byte*       pem;
++        FILE*       derFile;
++        FILE*       pemFile;
++        int         certSz;
++        int         pemSz;
++        size_t      bytes3;
++        word32      idx3 = 0;
++			  FILE* file3 ;
++#ifdef CYASSL_TEST_CERT
++        DecodedCert decode;
++#endif
++
++        derCert = (byte*)malloc(FOURK_BUF);
++        if (derCert == NULL)
++            return -311;
++        pem = (byte*)malloc(FOURK_BUF);
++        if (pem == NULL) {
++            free(derCert);
++            return -312;
++        }
++
++        file3 = fopen(caKeyFile, "rb");
++
++        if (!file3) {
++            free(derCert);
++            free(pem);
++            return -412;
++        }
++
++        bytes3 = fread(tmp, 1, FOURK_BUF, file3);
++        fclose(file3);
++
++        ret = InitRsaKey(&caKey, 0);
++        if (ret != 0) {
++            free(derCert);
++            free(pem);
++            return -411;
++        }
++        ret = RsaPrivateKeyDecode(tmp, &idx3, &caKey, (word32)bytes3);
++        if (ret != 0) {
++            free(derCert);
++            free(pem);
++            FreeRsaKey(&caKey);
++            return -413;
++        }
++
++        InitCert(&myCert);
++
++        strncpy(myCert.subject.country, "US", CTC_NAME_SIZE);
++        strncpy(myCert.subject.state, "OR", CTC_NAME_SIZE);
++        strncpy(myCert.subject.locality, "Portland", CTC_NAME_SIZE);
++        strncpy(myCert.subject.org, "yaSSL", CTC_NAME_SIZE);
++        strncpy(myCert.subject.unit, "Development", CTC_NAME_SIZE);
++        strncpy(myCert.subject.commonName, "www.yassl.com", CTC_NAME_SIZE);
++        strncpy(myCert.subject.email, "info@yassl.com", CTC_NAME_SIZE);
++
++        ret = SetIssuer(&myCert, caCertFile);
++        if (ret < 0) {
++            free(derCert);
++            free(pem);
++            FreeRsaKey(&caKey);
++            return -405;
++        }
++
++        certSz = MakeCert(&myCert, derCert, FOURK_BUF, &key, NULL, &rng);
++        if (certSz < 0) {
++            free(derCert);
++            free(pem);
++            FreeRsaKey(&caKey);
++            return -407;
++        }
++
++        certSz = SignCert(myCert.bodySz, myCert.sigType, derCert, FOURK_BUF,
++                          &caKey, NULL, &rng);
++        if (certSz < 0) {
++            free(derCert);
++            free(pem);
++            FreeRsaKey(&caKey);
++            return -408;
++        }
++
++
++#ifdef CYASSL_TEST_CERT
++        InitDecodedCert(&decode, derCert, certSz, 0);
++        ret = ParseCert(&decode, CERT_TYPE, NO_VERIFY, 0);
++        if (ret != 0) {
++            free(derCert);
++            free(pem);
++            FreeRsaKey(&caKey);
++            return -409;
++        }
++        FreeDecodedCert(&decode);
++#endif
++
++        derFile = fopen("./othercert.der", "wb");
++        if (!derFile) {
++            free(derCert);
++            free(pem);
++            FreeRsaKey(&caKey);
++            return -410;
++        }
++        ret = (int)fwrite(derCert, 1, certSz, derFile);
++        fclose(derFile);
++        if (ret != certSz) {
++            free(derCert);
++            free(pem);
++            FreeRsaKey(&caKey);
++            return -416;
++        }
++
++        pemSz = DerToPem(derCert, certSz, pem, FOURK_BUF, CERT_TYPE);
++        if (pemSz < 0) {
++            free(derCert);
++            free(pem);
++            FreeRsaKey(&caKey);
++            return -411;
++        }
++
++        pemFile = fopen("./othercert.pem", "wb");
++        if (!pemFile) {
++            free(derCert);
++            free(pem);
++            FreeRsaKey(&caKey);
++            return -412;
++        }
++        ret = (int)fwrite(pem, 1, pemSz, pemFile);
++        if (ret != pemSz) {
++            free(derCert);
++            free(pem);
++            FreeRsaKey(&caKey);
++            return -415;
++        }
++        fclose(pemFile);
++        free(pem);
++        free(derCert);
++        FreeRsaKey(&caKey);
++    }
++#ifdef HAVE_ECC
++    /* ECC CA style */
++    {
++        ecc_key     caKey;
++        Cert        myCert;
++        byte*       derCert;
++        byte*       pem;
++        FILE*       derFile;
++        FILE*       pemFile;
++        int         certSz;
++        int         pemSz;
++        size_t      bytes3;
++        word32      idx3 = 0;
++        FILE*       file3;
++#ifdef CYASSL_TEST_CERT
++        DecodedCert decode;
++#endif
++
++        derCert = (byte*)malloc(FOURK_BUF);
++        if (derCert == NULL)
++            return -5311;
++        pem = (byte*)malloc(FOURK_BUF);
++        if (pem == NULL) {
++            free(derCert);
++            return -5312;
++        }
++
++        file3 = fopen(eccCaKeyFile, "rb");
++
++        if (!file3) {
++            free(derCert);
++            free(pem);
++            return -5412;
++        }
++
++        bytes3 = fread(tmp, 1, FOURK_BUF, file3);
++        fclose(file3);
++
++        ecc_init(&caKey);
++        ret = EccPrivateKeyDecode(tmp, &idx3, &caKey, (word32)bytes3);
++        if (ret != 0) {
++            free(derCert);
++            free(pem);
++            return -5413;
++        }
++
++        InitCert(&myCert);
++        myCert.sigType = CTC_SHA256wECDSA;
++
++        strncpy(myCert.subject.country, "US", CTC_NAME_SIZE);
++        strncpy(myCert.subject.state, "OR", CTC_NAME_SIZE);
++        strncpy(myCert.subject.locality, "Portland", CTC_NAME_SIZE);
++        strncpy(myCert.subject.org, "wolfSSL", CTC_NAME_SIZE);
++        strncpy(myCert.subject.unit, "Development", CTC_NAME_SIZE);
++        strncpy(myCert.subject.commonName, "www.wolfssl.com", CTC_NAME_SIZE);
++        strncpy(myCert.subject.email, "info@wolfssl.com", CTC_NAME_SIZE);
++
++        ret = SetIssuer(&myCert, eccCaCertFile);
++        if (ret < 0) {
++            free(pem);
++            free(derCert);
++            ecc_free(&caKey);
++            return -5405;
++        }
++
++        certSz = MakeCert(&myCert, derCert, FOURK_BUF, NULL, &caKey, &rng);
++        if (certSz < 0) {
++            free(pem);
++            free(derCert);
++            ecc_free(&caKey);
++            return -5407;
++        }
++
++        certSz = SignCert(myCert.bodySz, myCert.sigType, derCert, FOURK_BUF,
++                          NULL, &caKey, &rng);
++        if (certSz < 0) {
++            free(pem);
++            free(derCert);
++            ecc_free(&caKey);
++            return -5408;
++        }
++
++#ifdef CYASSL_TEST_CERT
++        InitDecodedCert(&decode, derCert, certSz, 0);
++        ret = ParseCert(&decode, CERT_TYPE, NO_VERIFY, 0);
++        if (ret != 0) {
++            free(pem);
++            free(derCert);
++            ecc_free(&caKey);
++            return -5409;
++        }
++        FreeDecodedCert(&decode);
++#endif
++
++        derFile = fopen("./certecc.der", "wb");
++        if (!derFile) {
++            free(pem);
++            free(derCert);
++            ecc_free(&caKey);
++            return -5410;
++        }
++        ret = (int)fwrite(derCert, 1, certSz, derFile);
++        fclose(derFile);
++        if (ret != certSz) {
++            free(pem);
++            free(derCert);
++            ecc_free(&caKey);
++            return -5414;
++        }
++
++        pemSz = DerToPem(derCert, certSz, pem, FOURK_BUF, CERT_TYPE);
++        if (pemSz < 0) {
++            free(pem);
++            free(derCert);
++            ecc_free(&caKey);
++            return -5411;
++        }
++
++        pemFile = fopen("./certecc.pem", "wb");
++        if (!pemFile) {
++            free(pem);
++            free(derCert);
++            ecc_free(&caKey);
++            return -5412;
++        }
++        ret = (int)fwrite(pem, 1, pemSz, pemFile);
++        if (ret != pemSz) {
++            free(pem);
++            free(derCert);
++            ecc_free(&caKey);
++            return -5415;
++        }
++        fclose(pemFile);
++        free(pem);
++        free(derCert);
++        ecc_free(&caKey);
++    }
++#endif /* HAVE_ECC */
++#ifdef HAVE_NTRU
++    {
++        RsaKey      caKey;
++        Cert        myCert;
++        byte*       derCert;
++        byte*       pem;
++        FILE*       derFile;
++        FILE*       pemFile;
++        FILE*       caFile;
++        FILE*       ntruPrivFile;
++        int         certSz;
++        int         pemSz;
++        word32      idx3;
++#ifdef CYASSL_TEST_CERT
++        DecodedCert decode;
++#endif
++        derCert = (byte*)malloc(FOURK_BUF);
++        if (derCert == NULL)
++            return -311;
++        pem = (byte*)malloc(FOURK_BUF);
++        if (pem == NULL) {
++            free(derCert);
++            return -312;
++        }
++
++        byte   public_key[557];          /* sized for EES401EP2 */
++        word16 public_key_len;           /* no. of octets in public key */
++        byte   private_key[607];         /* sized for EES401EP2 */
++        word16 private_key_len;          /* no. of octets in private key */
++        DRBG_HANDLE drbg;
++        static uint8_t const pers_str[] = {
++                'C', 'y', 'a', 'S', 'S', 'L', ' ', 't', 'e', 's', 't'
++        };
++        word32 rc = crypto_drbg_instantiate(112, pers_str, sizeof(pers_str),
++                                            GetEntropy, &drbg);
++        if (rc != DRBG_OK) {
++            free(derCert);
++            free(pem);
++            return -450;
++        }
++
++        rc = crypto_ntru_encrypt_keygen(drbg, NTRU_EES401EP2, &public_key_len,
++                                        NULL, &private_key_len, NULL);
++        if (rc != NTRU_OK) {
++            free(derCert);
++            free(pem);
++            return -451;
++        }
++
++        rc = crypto_ntru_encrypt_keygen(drbg, NTRU_EES401EP2, &public_key_len,
++                                     public_key, &private_key_len, private_key);
++        crypto_drbg_uninstantiate(drbg);
++
++        if (rc != NTRU_OK) {
++            free(derCert);
++            free(pem);
++            return -452;
++        }
++
++        caFile = fopen(caKeyFile, "rb");
++
++        if (!caFile) {
++            free(derCert);
++            free(pem);
++            return -453;
++        }
++
++        bytes = fread(tmp, 1, FOURK_BUF, caFile);
++        fclose(caFile);
++
++        ret = InitRsaKey(&caKey, 0);
++        if (ret != 0) {
++            free(derCert);
++            free(pem);
++            return -459;
++        }
++        ret = RsaPrivateKeyDecode(tmp, &idx3, &caKey, (word32)bytes);
++        if (ret != 0) {
++            free(derCert);
++            free(pem);
++            return -454;
++        }
++
++        InitCert(&myCert);
++
++        strncpy(myCert.subject.country, "US", CTC_NAME_SIZE);
++        strncpy(myCert.subject.state, "OR", CTC_NAME_SIZE);
++        strncpy(myCert.subject.locality, "Portland", CTC_NAME_SIZE);
++        strncpy(myCert.subject.org, "yaSSL", CTC_NAME_SIZE);
++        strncpy(myCert.subject.unit, "Development", CTC_NAME_SIZE);
++        strncpy(myCert.subject.commonName, "www.yassl.com", CTC_NAME_SIZE);
++        strncpy(myCert.subject.email, "info@yassl.com", CTC_NAME_SIZE);
++
++        ret = SetIssuer(&myCert, caCertFile);
++        if (ret < 0) {
++            free(derCert);
++            free(pem);
++            FreeRsaKey(&caKey);
++            return -455;
++        }
++
++        certSz = MakeNtruCert(&myCert, derCert, FOURK_BUF, public_key,
++                              public_key_len, &rng);
++        if (certSz < 0) {
++            free(derCert);
++            free(pem);
++            FreeRsaKey(&caKey);
++            return -456;
++        }
++
++        certSz = SignCert(myCert.bodySz, myCert.sigType, derCert, FOURK_BUF,
++                          &caKey, NULL, &rng);
++        FreeRsaKey(&caKey);
++        if (certSz < 0) {
++            free(derCert);
++            free(pem);
++            return -457;
++        }
++
++
++#ifdef CYASSL_TEST_CERT
++        InitDecodedCert(&decode, derCert, certSz, 0);
++        ret = ParseCert(&decode, CERT_TYPE, NO_VERIFY, 0);
++        if (ret != 0) {
++            free(derCert);
++            free(pem);
++            return -458;
++        }
++        FreeDecodedCert(&decode);
++#endif
++        derFile = fopen("./ntru-cert.der", "wb");
++        if (!derFile) {
++            free(derCert);
++            free(pem);
++            return -459;
++        }
++        ret = (int)fwrite(derCert, 1, certSz, derFile);
++        fclose(derFile);
++        if (ret != certSz) {
++            free(derCert);
++            free(pem);
++            return -473;
++        }
++
++        pemSz = DerToPem(derCert, certSz, pem, FOURK_BUF, CERT_TYPE);
++        if (pemSz < 0) {
++            free(derCert);
++            free(pem);
++            return -460;
++        }
++
++        pemFile = fopen("./ntru-cert.pem", "wb");
++        if (!pemFile) {
++            free(derCert);
++            free(pem);
++            return -461;
++        }
++        ret = (int)fwrite(pem, 1, pemSz, pemFile);
++        fclose(pemFile);
++        if (ret != pemSz) {
++            free(derCert);
++            free(pem);
++            return -474;
++        }
++
++        ntruPrivFile = fopen("./ntru-key.raw", "wb");
++        if (!ntruPrivFile) {
++            free(derCert);
++            free(pem);
++            return -462;
++        }
++        ret = (int)fwrite(private_key, 1, private_key_len, ntruPrivFile);
++        fclose(ntruPrivFile);
++        if (ret != private_key_len) {
++            free(pem);
++            free(derCert);
++            return -475;
++        }
++        free(pem);
++        free(derCert);
++    }
++#endif /* HAVE_NTRU */
++#ifdef CYASSL_CERT_REQ
++    {
++        Cert        req;
++        byte*       der;
++        byte*       pem;
++        int         derSz;
++        int         pemSz;
++        FILE*       reqFile;
++
++        der = (byte*)malloc(FOURK_BUF);
++        if (der == NULL)
++            return -463;
++        pem = (byte*)malloc(FOURK_BUF);
++        if (pem == NULL) {
++            free(der);
++            return -464;
++        }
++
++        InitCert(&req);
++
++        req.version = 0;
++        req.isCA    = 1;
++        strncpy(req.challengePw, "yassl123", CTC_NAME_SIZE);
++        strncpy(req.subject.country, "US", CTC_NAME_SIZE);
++        strncpy(req.subject.state, "OR", CTC_NAME_SIZE);
++        strncpy(req.subject.locality, "Portland", CTC_NAME_SIZE);
++        strncpy(req.subject.org, "yaSSL", CTC_NAME_SIZE);
++        strncpy(req.subject.unit, "Development", CTC_NAME_SIZE);
++        strncpy(req.subject.commonName, "www.yassl.com", CTC_NAME_SIZE);
++        strncpy(req.subject.email, "info@yassl.com", CTC_NAME_SIZE);
++        req.sigType = CTC_SHA256wRSA;
++
++        derSz = MakeCertReq(&req, der, FOURK_BUF, &key, NULL);
++        if (derSz < 0) {
++            free(pem);
++            free(der);
++            return -465;
++        }
++
++        derSz = SignCert(req.bodySz, req.sigType, der, FOURK_BUF,
++                          &key, NULL, &rng);
++        if (derSz < 0) {
++            free(pem);
++            free(der);
++            return -466;
++        }
++
++        pemSz = DerToPem(der, derSz, pem, FOURK_BUF, CERTREQ_TYPE);
++        if (pemSz < 0) {
++            free(pem);
++            free(der);
++            return -467;
++        }
++
++        reqFile = fopen("./certreq.der", "wb");
++        if (!reqFile) {
++            free(pem);
++            free(der);
++            return -468;
++        }
++
++        ret = (int)fwrite(der, 1, derSz, reqFile);
++        fclose(reqFile);
++        if (ret != derSz) {
++            free(pem);
++            free(der);
++            return -471;
++        }
++
++        reqFile = fopen("./certreq.pem", "wb");
++        if (!reqFile) {
++            free(pem);
++            free(der);
++            return -469;
++        }
++        ret = (int)fwrite(pem, 1, pemSz, reqFile);
++        fclose(reqFile);
++        if (ret != pemSz) {
++            free(pem);
++            free(der);
++            return -470;
++        }
++
++        free(pem);
++        free(der);
++    }
++#endif /* CYASSL_CERT_REQ */
++#endif /* CYASSL_CERT_GEN */
++
++    FreeRsaKey(&key);
++#ifdef HAVE_CAVIUM
++    RsaFreeCavium(&key);
++#endif
++    free(tmp);
++
++    return 0;
++}
++
++#endif
++
++
++#ifndef NO_DH
++
++#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048)
++    #ifdef FREESCALE_MQX
++        static const char* dhKey = "a:\certs\\dh2048.der";
++    #else
++        static const char* dhKey = "./certs/dh2048.der";
++    #endif
++#endif
++
++int dh_test(void)
++{
++    int    ret;
++    word32 bytes;
++    word32 idx = 0, privSz, pubSz, privSz2, pubSz2, agreeSz, agreeSz2;
++    byte   tmp[1024];
++    byte   priv[256];
++    byte   pub[256];
++    byte   priv2[256];
++    byte   pub2[256];
++    byte   agree[256];
++    byte   agree2[256];
++    DhKey  key;
++    DhKey  key2;
++    RNG    rng;
++
++
++#ifdef USE_CERT_BUFFERS_1024
++    XMEMCPY(tmp, dh_key_der_1024, sizeof_dh_key_der_1024);
++    bytes = sizeof_dh_key_der_1024;
++#elif defined(USE_CERT_BUFFERS_2048)
++    XMEMCPY(tmp, dh_key_der_2048, sizeof_dh_key_der_2048);
++    bytes = sizeof_dh_key_der_2048;
++#else
++    FILE*  file = fopen(dhKey, "rb");
++
++    if (!file)
++        return -50;
++
++    bytes = (word32) fread(tmp, 1, sizeof(tmp), file);
++    fclose(file);
++#endif /* USE_CERT_BUFFERS */
++
++    InitDhKey(&key);
++    InitDhKey(&key2);
++    ret = DhKeyDecode(tmp, &idx, &key, bytes);
++    if (ret != 0)
++        return -51;
++
++    idx = 0;
++    ret = DhKeyDecode(tmp, &idx, &key2, bytes);
++    if (ret != 0)
++        return -52;
++
++    ret = InitRng(&rng);
++    if (ret != 0)
++        return -53;
++
++    ret =  DhGenerateKeyPair(&key, &rng, priv, &privSz, pub, &pubSz);
++    ret += DhGenerateKeyPair(&key2, &rng, priv2, &privSz2, pub2, &pubSz2);
++    if (ret != 0)
++        return -54;
++
++    ret =  DhAgree(&key, agree, &agreeSz, priv, privSz, pub2, pubSz2);
++    ret += DhAgree(&key2, agree2, &agreeSz2, priv2, privSz2, pub, pubSz);
++    if (ret != 0)
++        return -55;
++
++    if (memcmp(agree, agree2, agreeSz))
++        return -56;
++
++    FreeDhKey(&key);
++    FreeDhKey(&key2);
++
++    return 0;
++}
++
++#endif /* NO_DH */
++
++
++#ifndef NO_DSA
++
++#if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048)
++    #ifdef FREESCALE_MQX
++        static const char* dsaKey = "a:\\certs\\dsa2048.der";
++    #else
++        static const char* dsaKey = "./certs/dsa2048.der";
++    #endif
++#endif
++
++int dsa_test(void)
++{
++    int    ret, answer;
++    word32 bytes;
++    word32 idx = 0;
++    byte   tmp[1024];
++    DsaKey key;
++    RNG    rng;
++    Sha    sha;
++    byte   hash[SHA_DIGEST_SIZE];
++    byte   signature[40];
++
++
++#ifdef USE_CERT_BUFFERS_1024
++    XMEMCPY(tmp, dsa_key_der_1024, sizeof_dsa_key_der_1024);
++    bytes = sizeof_dsa_key_der_1024;
++#elif defined(USE_CERT_BUFFERS_2048)
++    XMEMCPY(tmp, dsa_key_der_2048, sizeof_dsa_key_der_2048);
++    bytes = sizeof_dsa_key_der_2048;
++#else
++    FILE*  file = fopen(dsaKey, "rb");
++
++    if (!file)
++        return -60;
++
++    bytes = (word32) fread(tmp, 1, sizeof(tmp), file);
++    fclose(file);
++#endif /* USE_CERT_BUFFERS */
++
++    ret = InitSha(&sha);
++    if (ret != 0)
++        return -4002;
++    ShaUpdate(&sha, tmp, bytes);
++    ShaFinal(&sha, hash);
++
++    InitDsaKey(&key);
++    ret = DsaPrivateKeyDecode(tmp, &idx, &key, bytes);
++    if (ret != 0) return -61;
++
++    ret = InitRng(&rng);
++    if (ret != 0) return -62;
++
++    ret = DsaSign(hash, signature, &key, &rng);
++    if (ret != 0) return -63;
++
++    ret = DsaVerify(hash, signature, &key, &answer);
++    if (ret != 0) return -64;
++    if (answer != 1) return -65;
++
++    FreeDsaKey(&key);
++
++    return 0;
++}
++
++#endif /* NO_DSA */
++
++
++#ifdef OPENSSL_EXTRA
++
++int openssl_test(void)
++{
++    EVP_MD_CTX md_ctx;
++    testVector a, b, c, d, e, f;
++    byte       hash[SHA_DIGEST_SIZE*4];  /* max size */
++
++    (void)e;
++    (void)f;
++
++    a.input  = "1234567890123456789012345678901234567890123456789012345678"
++               "9012345678901234567890";
++    a.output = "\x57\xed\xf4\xa2\x2b\xe3\xc9\x55\xac\x49\xda\x2e\x21\x07\xb6"
++               "\x7a";
++    a.inLen  = strlen(a.input);
++    a.outLen = MD5_DIGEST_SIZE;
++
++    EVP_MD_CTX_init(&md_ctx);
++    EVP_DigestInit(&md_ctx, EVP_md5());
++
++    EVP_DigestUpdate(&md_ctx, a.input, a.inLen);
++    EVP_DigestFinal(&md_ctx, hash, 0);
++
++    if (memcmp(hash, a.output, MD5_DIGEST_SIZE) != 0)
++        return -71;
++
++    b.input  = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
++               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
++               "aaaaaaaaaa";
++    b.output = "\xAD\x5B\x3F\xDB\xCB\x52\x67\x78\xC2\x83\x9D\x2F\x15\x1E\xA7"
++               "\x53\x99\x5E\x26\xA0";
++    b.inLen  = strlen(b.input);
++    b.outLen = SHA_DIGEST_SIZE;
++
++    EVP_MD_CTX_init(&md_ctx);
++    EVP_DigestInit(&md_ctx, EVP_sha1());
++
++    EVP_DigestUpdate(&md_ctx, b.input, b.inLen);
++    EVP_DigestFinal(&md_ctx, hash, 0);
++
++    if (memcmp(hash, b.output, SHA_DIGEST_SIZE) != 0)
++        return -72;
++
++
++    d.input  = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
++    d.output = "\x24\x8D\x6A\x61\xD2\x06\x38\xB8\xE5\xC0\x26\x93\x0C\x3E\x60"
++               "\x39\xA3\x3C\xE4\x59\x64\xFF\x21\x67\xF6\xEC\xED\xD4\x19\xDB"
++               "\x06\xC1";
++    d.inLen  = strlen(d.input);
++    d.outLen = SHA256_DIGEST_SIZE;
++
++    EVP_MD_CTX_init(&md_ctx);
++    EVP_DigestInit(&md_ctx, EVP_sha256());
++
++    EVP_DigestUpdate(&md_ctx, d.input, d.inLen);
++    EVP_DigestFinal(&md_ctx, hash, 0);
++
++    if (memcmp(hash, d.output, SHA256_DIGEST_SIZE) != 0)
++        return -78;
++
++#ifdef CYASSL_SHA384
++
++    e.input  = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhi"
++               "jklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu";
++    e.output = "\x09\x33\x0c\x33\xf7\x11\x47\xe8\x3d\x19\x2f\xc7\x82\xcd\x1b"
++               "\x47\x53\x11\x1b\x17\x3b\x3b\x05\xd2\x2f\xa0\x80\x86\xe3\xb0"
++               "\xf7\x12\xfc\xc7\xc7\x1a\x55\x7e\x2d\xb9\x66\xc3\xe9\xfa\x91"
++               "\x74\x60\x39";
++    e.inLen  = strlen(e.input);
++    e.outLen = SHA384_DIGEST_SIZE;
++
++    EVP_MD_CTX_init(&md_ctx);
++    EVP_DigestInit(&md_ctx, EVP_sha384());
++
++    EVP_DigestUpdate(&md_ctx, e.input, e.inLen);
++    EVP_DigestFinal(&md_ctx, hash, 0);
++
++    if (memcmp(hash, e.output, SHA384_DIGEST_SIZE) != 0)
++        return -79;
++
++#endif /* CYASSL_SHA384 */
++
++
++#ifdef CYASSL_SHA512
++
++    f.input  = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhi"
++               "jklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu";
++    f.output = "\x8e\x95\x9b\x75\xda\xe3\x13\xda\x8c\xf4\xf7\x28\x14\xfc\x14"
++               "\x3f\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1\x72\x99\xae\xad\xb6\x88"
++               "\x90\x18\x50\x1d\x28\x9e\x49\x00\xf7\xe4\x33\x1b\x99\xde\xc4"
++               "\xb5\x43\x3a\xc7\xd3\x29\xee\xb6\xdd\x26\x54\x5e\x96\xe5\x5b"
++               "\x87\x4b\xe9\x09";
++    f.inLen  = strlen(f.input);
++    f.outLen = SHA512_DIGEST_SIZE;
++
++    EVP_MD_CTX_init(&md_ctx);
++    EVP_DigestInit(&md_ctx, EVP_sha512());
++
++    EVP_DigestUpdate(&md_ctx, f.input, f.inLen);
++    EVP_DigestFinal(&md_ctx, hash, 0);
++
++    if (memcmp(hash, f.output, SHA512_DIGEST_SIZE) != 0)
++        return -80;
++
++#endif /* CYASSL_SHA512 */
++
++
++    if (RAND_bytes(hash, sizeof(hash)) != 1)
++        return -73;
++
++    c.input  = "what do ya want for nothing?";
++    c.output = "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03\xea\xa8\x6e\x31\x0a\x5d\xb7"
++               "\x38";
++    c.inLen  = strlen(c.input);
++    c.outLen = MD5_DIGEST_SIZE;
++
++    HMAC(EVP_md5(), "Jefe", 4, (byte*)c.input, (int)c.inLen, hash, 0);
++
++    if (memcmp(hash, c.output, MD5_DIGEST_SIZE) != 0)
++        return -74;
++
++    { /* des test */
++    const byte vector[] = { /* "now is the time for all " w/o trailing 0 */
++        0x6e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74,
++        0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20,
++        0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20
++    };
++
++    byte plain[24];
++    byte cipher[24];
++
++    const_DES_cblock key =
++    {
++        0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef
++    };
++
++    DES_cblock iv =
++    {
++        0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef
++    };
++
++    DES_key_schedule sched;
++
++    const byte verify[] =
++    {
++        0x8b,0x7c,0x52,0xb0,0x01,0x2b,0x6c,0xb8,
++        0x4f,0x0f,0xeb,0xf3,0xfb,0x5f,0x86,0x73,
++        0x15,0x85,0xb3,0x22,0x4b,0x86,0x2b,0x4b
++    };
++
++    DES_key_sched(&key, &sched);
++
++    DES_cbc_encrypt(vector, cipher, sizeof(vector), &sched, &iv, DES_ENCRYPT);
++    DES_cbc_encrypt(cipher, plain, sizeof(vector), &sched, &iv, DES_DECRYPT);
++
++    if (memcmp(plain, vector, sizeof(vector)) != 0)
++        return -75;
++
++    if (memcmp(cipher, verify, sizeof(verify)) != 0)
++        return -76;
++
++        /* test changing iv */
++    DES_ncbc_encrypt(vector, cipher, 8, &sched, &iv, DES_ENCRYPT);
++    DES_ncbc_encrypt(vector + 8, cipher + 8, 16, &sched, &iv, DES_ENCRYPT);
++
++    if (memcmp(cipher, verify, sizeof(verify)) != 0)
++        return -77;
++
++    }  /* end des test */
++
++    {  /* evp_cipher test */
++        EVP_CIPHER_CTX ctx;
++
++
++        const byte msg[] = { /* "Now is the time for all " w/o trailing 0 */
++            0x6e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74,
++            0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20,
++            0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20
++        };
++
++        const byte verify[] =
++        {
++            0x95,0x94,0x92,0x57,0x5f,0x42,0x81,0x53,
++            0x2c,0xcc,0x9d,0x46,0x77,0xa2,0x33,0xcb
++        };
++
++        byte key[] = "0123456789abcdef   ";  /* align */
++        byte iv[]  = "1234567890abcdef   ";  /* align */
++
++        byte cipher[AES_BLOCK_SIZE * 4];
++        byte plain [AES_BLOCK_SIZE * 4];
++
++        EVP_CIPHER_CTX_init(&ctx);
++        if (EVP_CipherInit(&ctx, EVP_aes_128_cbc(), key, iv, 1) == 0)
++            return -81;
++
++        if (EVP_Cipher(&ctx, cipher, (byte*)msg, 16) == 0)
++            return -82;
++
++        if (memcmp(cipher, verify, AES_BLOCK_SIZE))
++            return -83;
++
++        EVP_CIPHER_CTX_init(&ctx);
++        if (EVP_CipherInit(&ctx, EVP_aes_128_cbc(), key, iv, 0) == 0)
++            return -84;
++
++        if (EVP_Cipher(&ctx, plain, cipher, 16) == 0)
++            return -85;
++
++        if (memcmp(plain, msg, AES_BLOCK_SIZE))
++            return -86;
++
++
++    }  /* end evp_cipher test */
++
++    return 0;
++}
++
++#endif /* OPENSSL_EXTRA */
++
++
++#ifndef NO_PWDBASED
++
++int pkcs12_test(void)
++{
++    const byte passwd[] = { 0x00, 0x73, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x67,
++                            0x00, 0x00 };
++    const byte salt[] =   { 0x0a, 0x58, 0xCF, 0x64, 0x53, 0x0d, 0x82, 0x3f };
++
++    const byte passwd2[] = { 0x00, 0x71, 0x00, 0x75, 0x00, 0x65, 0x00, 0x65,
++                             0x00, 0x67, 0x00, 0x00 };
++    const byte salt2[] =   { 0x16, 0x82, 0xC0, 0xfC, 0x5b, 0x3f, 0x7e, 0xc5 };
++    byte  derived[64];
++
++    const byte verify[] = {
++        0x8A, 0xAA, 0xE6, 0x29, 0x7B, 0x6C, 0xB0, 0x46,
++        0x42, 0xAB, 0x5B, 0x07, 0x78, 0x51, 0x28, 0x4E,
++        0xB7, 0x12, 0x8F, 0x1A, 0x2A, 0x7F, 0xBC, 0xA3
++    };
++
++    const byte verify2[] = {
++        0x48, 0x3D, 0xD6, 0xE9, 0x19, 0xD7, 0xDE, 0x2E,
++        0x8E, 0x64, 0x8B, 0xA8, 0xF8, 0x62, 0xF3, 0xFB,
++        0xFB, 0xDC, 0x2B, 0xCB, 0x2C, 0x02, 0x95, 0x7F
++    };
++
++    int id         =  1;
++    int kLen       = 24;
++    int iterations =  1;
++    int ret = PKCS12_PBKDF(derived, passwd, sizeof(passwd), salt, 8, iterations,
++                           kLen, SHA, id);
++
++    if (ret < 0)
++        return -103;
++
++    if ( (ret = memcmp(derived, verify, kLen)) != 0)
++        return -104;
++
++    iterations = 1000;
++    ret = PKCS12_PBKDF(derived, passwd2, sizeof(passwd2), salt2, 8, iterations,
++                       kLen, SHA, id);
++    if (ret < 0)
++        return -105;
++
++    if ( (ret = memcmp(derived, verify2, 24)) != 0)
++        return -106;
++
++    return 0;
++}
++
++
++int pbkdf2_test(void)
++{
++    char passwd[] = "password";
++    const byte salt[] = { 0x78, 0x57, 0x8E, 0x5a, 0x5d, 0x63, 0xcb, 0x06 };
++    int   iterations = 2048;
++    int   kLen = 24;
++    byte  derived[64];
++
++    const byte verify[] = {
++        0xBF, 0xDE, 0x6B, 0xE9, 0x4D, 0xF7, 0xE1, 0x1D, 0xD4, 0x09, 0xBC, 0xE2,
++        0x0A, 0x02, 0x55, 0xEC, 0x32, 0x7C, 0xB9, 0x36, 0xFF, 0xE9, 0x36, 0x43
++
++    };
++
++    int ret = PBKDF2(derived, (byte*)passwd, (int)strlen(passwd), salt, 8,
++                                                         iterations, kLen, SHA);
++    if (ret != 0)
++        return ret;
++
++    if (memcmp(derived, verify, sizeof(verify)) != 0)
++        return -102;
++
++    return 0;
++}
++
++
++int pbkdf1_test(void)
++{
++    char passwd[] = "password";
++    const byte salt[] = { 0x78, 0x57, 0x8E, 0x5a, 0x5d, 0x63, 0xcb, 0x06 };
++    int   iterations = 1000;
++    int   kLen = 16;
++    byte  derived[16];
++
++    const byte verify[] = {
++        0xDC, 0x19, 0x84, 0x7E, 0x05, 0xC6, 0x4D, 0x2F, 0xAF, 0x10, 0xEB, 0xFB,
++        0x4A, 0x3D, 0x2A, 0x20
++    };
++
++    PBKDF1(derived, (byte*)passwd, (int)strlen(passwd), salt, 8, iterations,
++           kLen, SHA);
++
++    if (memcmp(derived, verify, sizeof(verify)) != 0)
++        return -101;
++
++    return 0;
++}
++
++
++int pwdbased_test(void)
++{
++   int ret =  pbkdf1_test();
++   ret += pbkdf2_test();
++
++   return ret + pkcs12_test();
++}
++
++#endif /* NO_PWDBASED */
++
++#if defined(HAVE_HKDF) && (!defined(NO_SHA) || !defined(NO_SHA256))
++
++int hkdf_test(void)
++{
++    int ret;
++    int L = 42;
++    byte okm1[42];
++    byte ikm1[22] = { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
++                      0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
++                      0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b };
++    byte salt1[13] ={ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
++                      0x08, 0x09, 0x0a, 0x0b, 0x0c };
++    byte info1[10] ={ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
++                      0xf8, 0xf9 };
++    byte res1[42] = { 0x0a, 0xc1, 0xaf, 0x70, 0x02, 0xb3, 0xd7, 0x61,
++                      0xd1, 0xe5, 0x52, 0x98, 0xda, 0x9d, 0x05, 0x06,
++                      0xb9, 0xae, 0x52, 0x05, 0x72, 0x20, 0xa3, 0x06,
++                      0xe0, 0x7b, 0x6b, 0x87, 0xe8, 0xdf, 0x21, 0xd0,
++                      0xea, 0x00, 0x03, 0x3d, 0xe0, 0x39, 0x84, 0xd3,
++                      0x49, 0x18 };
++    byte res2[42] = { 0x08, 0x5a, 0x01, 0xea, 0x1b, 0x10, 0xf3, 0x69,
++                      0x33, 0x06, 0x8b, 0x56, 0xef, 0xa5, 0xad, 0x81,
++                      0xa4, 0xf1, 0x4b, 0x82, 0x2f, 0x5b, 0x09, 0x15,
++                      0x68, 0xa9, 0xcd, 0xd4, 0xf1, 0x55, 0xfd, 0xa2,
++                      0xc2, 0x2e, 0x42, 0x24, 0x78, 0xd3, 0x05, 0xf3,
++                      0xf8, 0x96 };
++    byte res3[42] = { 0x8d, 0xa4, 0xe7, 0x75, 0xa5, 0x63, 0xc1, 0x8f,
++                      0x71, 0x5f, 0x80, 0x2a, 0x06, 0x3c, 0x5a, 0x31,
++                      0xb8, 0xa1, 0x1f, 0x5c, 0x5e, 0xe1, 0x87, 0x9e,
++                      0xc3, 0x45, 0x4e, 0x5f, 0x3c, 0x73, 0x8d, 0x2d,
++                      0x9d, 0x20, 0x13, 0x95, 0xfa, 0xa4, 0xb6, 0x1a,
++                      0x96, 0xc8 };
++    byte res4[42] = { 0x3c, 0xb2, 0x5f, 0x25, 0xfa, 0xac, 0xd5, 0x7a,
++                      0x90, 0x43, 0x4f, 0x64, 0xd0, 0x36, 0x2f, 0x2a,
++                      0x2d, 0x2d, 0x0a, 0x90, 0xcf, 0x1a, 0x5a, 0x4c,
++                      0x5d, 0xb0, 0x2d, 0x56, 0xec, 0xc4, 0xc5, 0xbf,
++                      0x34, 0x00, 0x72, 0x08, 0xd5, 0xb8, 0x87, 0x18,
++                      0x58, 0x65 };
++
++    (void)res1;
++    (void)res2;
++    (void)res3;
++    (void)res4;
++
++#ifndef NO_SHA
++    ret = HKDF(SHA, ikm1, 22, NULL, 0, NULL, 0, okm1, L);
++    if (ret != 0)
++        return -2001;
++
++    if (memcmp(okm1, res1, L) != 0)
++        return -2002;
++
++    ret = HKDF(SHA, ikm1, 11, salt1, 13, info1, 10, okm1, L);
++    if (ret != 0)
++        return -2003;
++
++    if (memcmp(okm1, res2, L) != 0)
++        return -2004;
++#endif /* NO_SHA */
++
++#ifndef NO_SHA256
++    ret = HKDF(SHA256, ikm1, 22, NULL, 0, NULL, 0, okm1, L);
++    if (ret != 0)
++        return -2005;
++
++    if (memcmp(okm1, res3, L) != 0)
++        return -2006;
++
++    ret = HKDF(SHA256, ikm1, 22, salt1, 13, info1, 10, okm1, L);
++    if (ret != 0)
++        return -2007;
++
++    if (memcmp(okm1, res4, L) != 0)
++        return -2007;
++#endif /* NO_SHA256 */
++
++    return 0;
++}
++
++#endif /* HAVE_HKDF */
++
++
++#ifdef HAVE_ECC
++
++int ecc_test(void)
++{
++    RNG     rng;
++    byte    sharedA[1024];
++    byte    sharedB[1024];
++    byte    sig[1024];
++    byte    digest[20];
++    byte    exportBuf[1024];
++    word32  x, y;
++    int     i, verify, ret;
++    ecc_key userA, userB, pubKey;
++
++    ret = InitRng(&rng);
++    if (ret != 0)
++        return -1001;
++
++    ecc_init(&userA);
++    ecc_init(&userB);
++    ecc_init(&pubKey);
++
++    ret = ecc_make_key(&rng, 32, &userA);
++
++    if (ret != 0)
++        return -1014;
++
++    ret = ecc_make_key(&rng, 32, &userB);
++
++    if (ret != 0)
++        return -1002;
++
++    x = sizeof(sharedA);
++    ret = ecc_shared_secret(&userA, &userB, sharedA, &x);
++
++    if (ret != 0)
++        return -1015;
++
++    y = sizeof(sharedB);
++    ret = ecc_shared_secret(&userB, &userA, sharedB, &y);
++
++    if (ret != 0)
++        return -1003;
++
++    if (y != x)
++        return -1004;
++
++    if (memcmp(sharedA, sharedB, x))
++        return -1005;
++
++    x = sizeof(exportBuf);
++    ret = ecc_export_x963(&userA, exportBuf, &x);
++    if (ret != 0)
++        return -1006;
++
++    ret = ecc_import_x963(exportBuf, x, &pubKey);
++
++    if (ret != 0)
++        return -1007;
++
++    y = sizeof(sharedB);
++    ret = ecc_shared_secret(&userB, &pubKey, sharedB, &y);
++
++    if (ret != 0)
++        return -1008;
++
++    if (memcmp(sharedA, sharedB, y))
++        return -1010;
++
++    /* test DSA sign hash */
++    for (i = 0; i < (int)sizeof(digest); i++)
++        digest[i] = (byte)i;
++
++    x = sizeof(sig);
++    ret = ecc_sign_hash(digest, sizeof(digest), sig, &x, &rng, &userA);
++
++    if (ret != 0)
++        return -1016;
++
++    verify = 0;
++    ret = ecc_verify_hash(sig, x, digest, sizeof(digest), &verify, &userA);
++
++    if (ret != 0)
++        return -1011;
++
++    if (verify != 1)
++        return -1012;
++
++    x = sizeof(exportBuf);
++    ret = ecc_export_private_only(&userA, exportBuf, &x);
++    if (ret != 0)
++        return -1013;
++
++    ecc_free(&pubKey);
++    ecc_free(&userB);
++    ecc_free(&userA);
++
++    return 0;
++}
++
++#ifdef HAVE_ECC_ENCRYPT
++
++int ecc_encrypt_test(void)
++{
++    RNG     rng;
++    int     ret;
++    ecc_key userA, userB;
++    byte    msg[48];
++    byte    plain[48];
++    byte    out[80];
++    word32  outSz   = sizeof(out);
++    word32  plainSz = sizeof(plain);
++    int     i;
++
++    ret = InitRng(&rng);
++    if (ret != 0)
++        return -3001;
++
++    ecc_init(&userA);
++    ecc_init(&userB);
++
++    ret  = ecc_make_key(&rng, 32, &userA);
++    ret += ecc_make_key(&rng, 32, &userB);
++
++    if (ret != 0)
++        return -3002;
++
++    for (i = 0; i < 48; i++)
++        msg[i] = i;
++
++    /* encrypt msg to B */
++    ret = ecc_encrypt(&userA, &userB, msg, sizeof(msg), out, &outSz, NULL);
++    if (ret != 0)
++        return -3003;
++
++    /* decrypt msg from A */
++    ret = ecc_decrypt(&userB, &userA, out, outSz, plain, &plainSz, NULL);
++    if (ret != 0)
++        return -3004;
++
++    if (memcmp(plain, msg, sizeof(msg)) != 0)
++        return -3005;
++
++
++    {  /* let's verify message exchange works, A is client, B is server */
++        ecEncCtx* cliCtx = ecc_ctx_new(REQ_RESP_CLIENT, &rng);
++        ecEncCtx* srvCtx = ecc_ctx_new(REQ_RESP_SERVER, &rng);
++
++        byte cliSalt[EXCHANGE_SALT_SZ];
++        byte srvSalt[EXCHANGE_SALT_SZ];
++        const byte* tmpSalt;
++
++        if (cliCtx == NULL || srvCtx == NULL)
++            return -3006;
++
++        /* get salt to send to peer */
++        tmpSalt = ecc_ctx_get_own_salt(cliCtx);
++        if (tmpSalt == NULL)
++            return -3007;
++        memcpy(cliSalt, tmpSalt, EXCHANGE_SALT_SZ);
++
++        tmpSalt = ecc_ctx_get_own_salt(srvCtx);
++        if (tmpSalt == NULL)
++            return -3007;
++        memcpy(srvSalt, tmpSalt, EXCHANGE_SALT_SZ);
++
++        /* in actual use, we'd get the peer's salt over the transport */
++        ret  = ecc_ctx_set_peer_salt(cliCtx, srvSalt);
++        ret += ecc_ctx_set_peer_salt(srvCtx, cliSalt);
++
++        if (ret != 0)
++            return -3008;
++
++        /* get encrypted msg (request) to send to B */
++        outSz  = sizeof(out);
++        ret = ecc_encrypt(&userA, &userB, msg, sizeof(msg), out, &outSz,cliCtx);
++        if (ret != 0)
++            return -3009;
++
++        /* B decrypts msg (request) from A */
++        plainSz = sizeof(plain);
++        ret = ecc_decrypt(&userB, &userA, out, outSz, plain, &plainSz, srvCtx);
++        if (ret != 0)
++            return -3010;
++
++        if (memcmp(plain, msg, sizeof(msg)) != 0)
++            return -3011;
++
++        {
++            /* msg2 (response) from B to A */
++            byte    msg2[48];
++            byte    plain2[48];
++            byte    out2[80];
++            word32  outSz2   = sizeof(out2);
++            word32  plainSz2 = sizeof(plain2);
++
++            for (i = 0; i < 48; i++)
++                msg2[i] = i+48;
++
++            /* get encrypted msg (response) to send to B */
++            ret = ecc_encrypt(&userB, &userA, msg2, sizeof(msg2), out2,
++                              &outSz2, srvCtx);
++            if (ret != 0)
++                return -3012;
++
++            /* A decrypts msg (response) from B */
++            ret = ecc_decrypt(&userA, &userB, out2, outSz2, plain2, &plainSz2,
++                             cliCtx);
++            if (ret != 0)
++                return -3013;
++
++            if (memcmp(plain2, msg2, sizeof(msg2)) != 0)
++                return -3014;
++        }
++
++        /* cleanup */
++        ecc_ctx_free(srvCtx);
++        ecc_ctx_free(cliCtx);
++    }
++
++    /* cleanup */
++    ecc_free(&userB);
++    ecc_free(&userA);
++
++    return 0;
++}
++
++#endif /* HAVE_ECC_ENCRYPT */
++#endif /* HAVE_ECC */
++
++#ifdef HAVE_LIBZ
++
++const byte sample_text[] =
++    "Biodiesel cupidatat marfa, cliche aute put a bird on it incididunt elit\n"
++    "polaroid. Sunt tattooed bespoke reprehenderit. Sint twee organic id\n"
++    "marfa. Commodo veniam ad esse gastropub. 3 wolf moon sartorial vero,\n"
++    "plaid delectus biodiesel squid +1 vice. Post-ironic keffiyeh leggings\n"
++    "selfies cray fap hoodie, forage anim. Carles cupidatat shoreditch, VHS\n"
++    "small batch meggings kogi dolore food truck bespoke gastropub.\n"
++    "\n"
++    "Terry richardson adipisicing actually typewriter tumblr, twee whatever\n"
++    "four loko you probably haven't heard of them high life. Messenger bag\n"
++    "whatever tattooed deep v mlkshk. Brooklyn pinterest assumenda chillwave\n"
++    "et, banksy ullamco messenger bag umami pariatur direct trade forage.\n"
++    "Typewriter culpa try-hard, pariatur sint brooklyn meggings. Gentrify\n"
++    "food truck next level, tousled irony non semiotics PBR ethical anim cred\n"
++    "readymade. Mumblecore brunch lomo odd future, portland organic terry\n"
++    "richardson elit leggings adipisicing ennui raw denim banjo hella. Godard\n"
++    "mixtape polaroid, pork belly readymade organic cray typewriter helvetica\n"
++    "four loko whatever street art yr farm-to-table.\n"
++    "\n"
++    "Vinyl keytar vice tofu. Locavore you probably haven't heard of them pug\n"
++    "pickled, hella tonx labore truffaut DIY mlkshk elit cosby sweater sint\n"
++    "et mumblecore. Elit swag semiotics, reprehenderit DIY sartorial nisi ugh\n"
++    "nesciunt pug pork belly wayfarers selfies delectus. Ethical hoodie\n"
++    "seitan fingerstache kale chips. Terry richardson artisan williamsburg,\n"
++    "eiusmod fanny pack irony tonx ennui lo-fi incididunt tofu YOLO\n"
++    "readymade. 8-bit sed ethnic beard officia. Pour-over iphone DIY butcher,\n"
++    "ethnic art party qui letterpress nisi proident jean shorts mlkshk\n"
++    "locavore.\n"
++    "\n"
++    "Narwhal flexitarian letterpress, do gluten-free voluptate next level\n"
++    "banh mi tonx incididunt carles DIY. Odd future nulla 8-bit beard ut\n"
++    "cillum pickled velit, YOLO officia you probably haven't heard of them\n"
++    "trust fund gastropub. Nisi adipisicing tattooed, Austin mlkshk 90's\n"
++    "small batch american apparel. Put a bird on it cosby sweater before they\n"
++    "sold out pork belly kogi hella. Street art mollit sustainable polaroid,\n"
++    "DIY ethnic ea pug beard dreamcatcher cosby sweater magna scenester nisi.\n"
++    "Sed pork belly skateboard mollit, labore proident eiusmod. Sriracha\n"
++    "excepteur cosby sweater, anim deserunt laborum eu aliquip ethical et\n"
++    "neutra PBR selvage.\n"
++    "\n"
++    "Raw denim pork belly truffaut, irony plaid sustainable put a bird on it\n"
++    "next level jean shorts exercitation. Hashtag keytar whatever, nihil\n"
++    "authentic aliquip disrupt laborum. Tattooed selfies deserunt trust fund\n"
++    "wayfarers. 3 wolf moon synth church-key sartorial, gastropub leggings\n"
++    "tattooed. Labore high life commodo, meggings raw denim fingerstache pug\n"
++    "trust fund leggings seitan forage. Nostrud ullamco duis, reprehenderit\n"
++    "incididunt flannel sustainable helvetica pork belly pug banksy you\n"
++    "probably haven't heard of them nesciunt farm-to-table. Disrupt nostrud\n"
++    "mollit magna, sriracha sartorial helvetica.\n"
++    "\n"
++    "Nulla kogi reprehenderit, skateboard sustainable duis adipisicing viral\n"
++    "ad fanny pack salvia. Fanny pack trust fund you probably haven't heard\n"
++    "of them YOLO vice nihil. Keffiyeh cray lo-fi pinterest cardigan aliqua,\n"
++    "reprehenderit aute. Culpa tousled williamsburg, marfa lomo actually anim\n"
++    "skateboard. Iphone aliqua ugh, semiotics pariatur vero readymade\n"
++    "organic. Marfa squid nulla, in laborum disrupt laboris irure gastropub.\n"
++    "Veniam sunt food truck leggings, sint vinyl fap.\n"
++    "\n"
++    "Hella dolore pork belly, truffaut carles you probably haven't heard of\n"
++    "them PBR helvetica in sapiente. Fashion axe ugh bushwick american\n"
++    "apparel. Fingerstache sed iphone, jean shorts blue bottle nisi bushwick\n"
++    "flexitarian officia veniam plaid bespoke fap YOLO lo-fi. Blog\n"
++    "letterpress mumblecore, food truck id cray brooklyn cillum ad sed.\n"
++    "Assumenda chambray wayfarers vinyl mixtape sustainable. VHS vinyl\n"
++    "delectus, culpa williamsburg polaroid cliche swag church-key synth kogi\n"
++    "magna pop-up literally. Swag thundercats ennui shoreditch vegan\n"
++    "pitchfork neutra truffaut etsy, sed single-origin coffee craft beer.\n"
++    "\n"
++    "Odio letterpress brooklyn elit. Nulla single-origin coffee in occaecat\n"
++    "meggings. Irony meggings 8-bit, chillwave lo-fi adipisicing cred\n"
++    "dreamcatcher veniam. Put a bird on it irony umami, trust fund bushwick\n"
++    "locavore kale chips. Sriracha swag thundercats, chillwave disrupt\n"
++    "tousled beard mollit mustache leggings portland next level. Nihil esse\n"
++    "est, skateboard art party etsy thundercats sed dreamcatcher ut iphone\n"
++    "swag consectetur et. Irure skateboard banjo, nulla deserunt messenger\n"
++    "bag dolor terry richardson sapiente.\n";
++
++
++int compress_test(void)
++{
++    int ret = 0;
++    word32 dSz = sizeof(sample_text);
++    word32 cSz = (dSz + (word32)(dSz * 0.001) + 12);
++    byte *c = NULL;
++    byte *d = NULL;
++
++    c = calloc(cSz, sizeof(byte));
++    d = calloc(dSz, sizeof(byte));
++
++    if (c == NULL || d == NULL)
++        ret = -300;
++
++    if (ret == 0 && (ret = Compress(c, cSz, sample_text, dSz, 0)) < 0)
++        ret = -301;
++
++    if (ret > 0) {
++        cSz = (word32)ret;
++        ret = 0;
++    }
++
++    if (ret == 0 && DeCompress(d, dSz, c, cSz) != (int)dSz)
++        ret = -302;
++
++    if (ret == 0 && memcmp(d, sample_text, dSz))
++        ret = -303;
++
++    if (c) free(c);
++    if (d) free(d);
++
++    return ret;
++}
++
++#endif /* HAVE_LIBZ */
++
++#ifdef HAVE_PKCS7
++
++int pkcs7enveloped_test(void)
++{
++    int ret = 0;
++
++    int cipher = DES3b;
++    int envelopedSz, decodedSz;
++    PKCS7 pkcs7;
++    byte* cert;
++    byte* privKey;
++    byte  enveloped[2048];
++    byte  decoded[2048];
++
++    size_t certSz;
++    size_t privKeySz;
++    FILE*  certFile;
++    FILE*  keyFile;
++    FILE*  pkcs7File;
++    const char* pkcs7OutFile = "pkcs7envelopedData.der";
++
++    const byte data[] = { /* Hello World */
++        0x48,0x65,0x6c,0x6c,0x6f,0x20,0x57,0x6f,
++        0x72,0x6c,0x64
++    };
++
++    /* read client cert and key in DER format */
++    cert = (byte*)malloc(FOURK_BUF);
++    if (cert == NULL)
++        return -201;
++
++    privKey = (byte*)malloc(FOURK_BUF);
++    if (privKey == NULL) {
++        free(cert);
++        return -202;
++    }
++
++    certFile = fopen(clientCert, "rb");
++    if (!certFile) {
++        free(cert);
++        free(privKey);
++        err_sys("can't open ./certs/client-cert.der, "
++                "Please run from CyaSSL home dir", -42);
++    }
++
++    certSz = fread(cert, 1, FOURK_BUF, certFile);
++    fclose(certFile);
++
++    keyFile = fopen(clientKey, "rb");
++    if (!keyFile) {
++        free(cert);
++        free(privKey);
++        err_sys("can't open ./certs/client-key.der, "
++                "Please run from CyaSSL home dir", -43);
++    }
++
++    privKeySz = fread(privKey, 1, FOURK_BUF, keyFile);
++    fclose(keyFile);
++
++    PKCS7_InitWithCert(&pkcs7, cert, (word32)certSz);
++    pkcs7.content     = (byte*)data;
++    pkcs7.contentSz   = (word32)sizeof(data);
++    pkcs7.contentOID  = DATA;
++    pkcs7.encryptOID  = cipher;
++    pkcs7.privateKey  = privKey;
++    pkcs7.privateKeySz = (word32)privKeySz;
++
++    /* encode envelopedData */
++    envelopedSz = PKCS7_EncodeEnvelopedData(&pkcs7, enveloped,
++                                            sizeof(enveloped));
++    if (envelopedSz <= 0) {
++        free(cert);
++        free(privKey);
++        return -203;
++    }
++
++    /* decode envelopedData */
++    decodedSz = PKCS7_DecodeEnvelopedData(&pkcs7, enveloped, envelopedSz,
++                                          decoded, sizeof(decoded));
++    if (decodedSz <= 0) {
++        free(cert);
++        free(privKey);
++        return -204;
++    }
++
++    /* test decode result */
++    if (memcmp(decoded, data, sizeof(data)) != 0) {
++        free(cert);
++        free(privKey);
++        return -205;
++    }
++
++    /* output pkcs7 envelopedData for external testing */
++    pkcs7File = fopen(pkcs7OutFile, "wb");
++    if (!pkcs7File) {
++        free(cert);
++        free(privKey);
++        return -206;
++    }
++
++    ret = (int)fwrite(enveloped, envelopedSz, 1, pkcs7File);
++    fclose(pkcs7File);
++
++    free(cert);
++    free(privKey);
++    PKCS7_Free(&pkcs7);
++
++    if (ret > 0)
++        return 0;
++
++    return ret;
++}
++
++int pkcs7signed_test(void)
++{
++    int ret = 0;
++
++    FILE* file;
++    byte* certDer;
++    byte* keyDer;
++    byte* out;
++    char data[] = "Hello World";
++    word32 dataSz, outSz, certDerSz, keyDerSz;
++    PKCS7 msg;
++    RNG rng;
++
++    byte transIdOid[] =
++               { 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xF8, 0x45, 0x01,
++                 0x09, 0x07 };
++    byte messageTypeOid[] =
++               { 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xF8, 0x45, 0x01,
++                 0x09, 0x02 };
++    byte senderNonceOid[] =
++               { 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xF8, 0x45, 0x01,
++                 0x09, 0x05 };
++    byte transId[(SHA_DIGEST_SIZE + 1) * 2 + 1];
++    byte messageType[] = { 0x13, 2, '1', '9' };
++    byte senderNonce[PKCS7_NONCE_SZ + 2];
++
++    PKCS7Attrib attribs[] =
++    {
++        { transIdOid, sizeof(transIdOid),
++                     transId, sizeof(transId) - 1 }, /* take off the null */
++        { messageTypeOid, sizeof(messageTypeOid),
++                     messageType, sizeof(messageType) },
++        { senderNonceOid, sizeof(senderNonceOid),
++                     senderNonce, sizeof(senderNonce) }
++    };
++
++    dataSz = (word32) strlen(data);
++    outSz = FOURK_BUF;
++
++    certDer = (byte*)malloc(FOURK_BUF);
++    if (certDer == NULL)
++        return -207;
++    keyDer = (byte*)malloc(FOURK_BUF);
++    if (keyDer == NULL) {
++        free(certDer);
++        return -208;
++    }
++    out = (byte*)malloc(FOURK_BUF);
++    if (out == NULL) {
++        free(certDer);
++        free(keyDer);
++        return -209;
++    }
++
++    /* read in DER cert of recipient, into cert of size certSz */
++    file = fopen(clientCert, "rb");
++    if (!file) {
++        free(certDer);
++        free(keyDer);
++        free(out);
++        err_sys("can't open ./certs/client-cert.der, "
++                "Please run from CyaSSL home dir", -44);
++    }
++    certDerSz = (word32)fread(certDer, 1, FOURK_BUF, file);
++    fclose(file);
++
++    file = fopen(clientKey, "rb");
++    if (!file) {
++        free(certDer);
++        free(keyDer);
++        free(out);
++        err_sys("can't open ./certs/client-key.der, "
++                "Please run from CyaSSL home dir", -45);
++    }
++    keyDerSz = (word32)fread(keyDer, 1, FOURK_BUF, file);
++    fclose(file);
++
++    ret = InitRng(&rng);
++    if (ret != 0) {
++        free(certDer);
++        free(keyDer);
++        free(out);
++        return -210;
++    }
++
++    senderNonce[0] = 0x04;
++    senderNonce[1] = PKCS7_NONCE_SZ;
++
++    ret = RNG_GenerateBlock(&rng, &senderNonce[2], PKCS7_NONCE_SZ);
++    if (ret != 0) {
++        free(certDer);
++        free(keyDer);
++        free(out);
++        return -211;
++    }
++
++    PKCS7_InitWithCert(&msg, certDer, certDerSz);
++    msg.privateKey = keyDer;
++    msg.privateKeySz = keyDerSz;
++    msg.content = (byte*)data;
++    msg.contentSz = dataSz;
++    msg.hashOID = SHAh;
++    msg.encryptOID = RSAk;
++    msg.signedAttribs = attribs;
++    msg.signedAttribsSz = sizeof(attribs)/sizeof(PKCS7Attrib);
++    msg.rng = &rng;
++    {
++        Sha sha;
++        byte digest[SHA_DIGEST_SIZE];
++        int i,j;
++
++        transId[0] = 0x13;
++        transId[1] = SHA_DIGEST_SIZE * 2;
++
++        ret = InitSha(&sha);
++        if (ret != 0) {
++            free(certDer);
++            free(keyDer);
++            free(out);
++            return -4003;
++        }
++        ShaUpdate(&sha, msg.publicKey, msg.publicKeySz);
++        ShaFinal(&sha, digest);
++
++        for (i = 0, j = 2; i < SHA_DIGEST_SIZE; i++, j += 2) {
++            snprintf((char*)&transId[j], 3, "%02x", digest[i]);
++        }
++    }
++    ret = PKCS7_EncodeSignedData(&msg, out, outSz);
++    if (ret < 0) {
++        free(certDer);
++        free(keyDer);
++        free(out);
++        PKCS7_Free(&msg);
++        return -212;
++    }
++    else
++        outSz = ret;
++
++    /* write PKCS#7 to output file for more testing */
++    file = fopen("./pkcs7signedData.der", "wb");
++    if (!file) {
++        free(certDer);
++        free(keyDer);
++        free(out);
++        PKCS7_Free(&msg);
++        return -213;
++    }
++    ret = (int)fwrite(out, 1, outSz, file);
++    fclose(file);
++    if (ret != (int)outSz) {
++        free(certDer);
++        free(keyDer);
++        free(out);
++        PKCS7_Free(&msg);
++        return -218;
++    }
++
++    PKCS7_Free(&msg);
++    PKCS7_InitWithCert(&msg, NULL, 0);
++
++    ret = PKCS7_VerifySignedData(&msg, out, outSz);
++    if (ret < 0) {
++        free(certDer);
++        free(keyDer);
++        free(out);
++        PKCS7_Free(&msg);
++        return -214;
++    }
++
++    if (msg.singleCert == NULL || msg.singleCertSz == 0) {
++        free(certDer);
++        free(keyDer);
++        free(out);
++        PKCS7_Free(&msg);
++        return -215;
++    }
++
++    file = fopen("./pkcs7cert.der", "wb");
++    if (!file) {
++        free(certDer);
++        free(keyDer);
++        free(out);
++        PKCS7_Free(&msg);
++        return -216;
++    }
++    ret = (int)fwrite(msg.singleCert, 1, msg.singleCertSz, file);
++    fclose(file);
++
++    free(certDer);
++    free(keyDer);
++    free(out);
++    PKCS7_Free(&msg);
++
++    if (ret > 0)
++        return 0;
++
++    return ret;
++}
++
++#endif /* HAVE_PKCS7 */
++
++#endif /* NO_CRYPT_TEST */
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/time-CortexM3-4.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/time-CortexM3-4.c
+--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/time-CortexM3-4.c	1969-12-31 17:00:00.000000000 -0700
++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/time-CortexM3-4.c	2015-02-15 14:28:52.000000000 -0700
+@@ -0,0 +1,41 @@
++/* time-STM32F2.c
++ *
++ * Copyright (C) 2006-2015 wolfSSL Inc.
++ *
++ * This file is part of wolfSSL. (formerly known as CyaSSL)
++ *
++ * wolfSSL is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * wolfSSL is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
++ */
++ 
++#ifdef HAVE_CONFIG_H
++    #include 
++#endif
++
++
++#include        
++#define DWT                 ((DWT_Type       *)     (0xE0001000UL)     ) 
++typedef struct
++{
++  uint32_t CTRL;                    /*!< Offset: 0x000 (R/W)  Control Register                          */
++  uint32_t CYCCNT;                  /*!< Offset: 0x004 (R/W)  Cycle Count Register                      */
++} DWT_Type;
++
++extern uint32_t SystemCoreClock ;
++
++double current_time(int reset) 
++{
++      if(reset) DWT->CYCCNT = 0 ;
++      return ((double)DWT->CYCCNT/SystemCoreClock) ;
++}
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/time-dummy.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/time-dummy.c
+--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/time-dummy.c	1969-12-31 17:00:00.000000000 -0700
++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/CyaSSL-Full/time-dummy.c	2015-02-15 14:28:52.000000000 -0700
+@@ -0,0 +1,34 @@
++/* time-dummy.c.c
++ *
++ * Copyright (C) 2006-2015 wolfSSL Inc.
++ *
++ * This file is part of wolfSSL. (formerly known as CyaSSL)
++ *
++ * wolfSSL is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * wolfSSL is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
++ */
++ 
++#ifdef HAVE_CONFIG_H
++    #include 
++#endif
++
++#include "time.h"
++
++struct tm *Cyassl_MDK_gmtime(const time_t *c) 
++{ 
++    static struct tm date ; 
++    return(&date) ;
++}
++
++time_t time(time_t * t) { return 0 ; }
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/Abstract.txt mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/Abstract.txt
+--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/Abstract.txt	1969-12-31 17:00:00.000000000 -0700
++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/Abstract.txt	2015-02-15 14:28:52.000000000 -0700
+@@ -0,0 +1,22 @@
++This program is echo client with CyaSSL/wolfCrypt library.
++
++In order to run this program, 
++Copy {PACK}\wolfSSL\CyaSSL\{version}\cyassl\certs folder and files to the SD memory.
++Set config-EchoClient.h configuration file for the Callee IP or Port number.
++
++For further configuration, refer config-Crypt.h and config-CyaSSL.h.
++
++When testing this client, it is recommended to test against one of the standard 
++CyaSSL example applications running on a desktop machine.  The standard CyaSSL 
++example applications are located in the CyaSSL root directory under the 
++/examples directory.
++
++For the hardware crypt on config-Crypt.h, download 
++STSW-STM32062: STM32F2xx standard peripherals library at 
++http://www.st.com/. Copy Libraries\STM32F2xx_StdPeriph_Driver\{inc,src} to 
++ {PACK}\cyassl\IDE\MDK5-ARM\STM32F2xx_StdPeriph_Lib
++
++
++Support
++-------
++Please send questions or comments to support@wolfssl.com
+\ No newline at end of file
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/EchoClient.uvoptx mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/EchoClient.uvoptx
+--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/EchoClient.uvoptx	1969-12-31 17:00:00.000000000 -0700
++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/EchoClient.uvoptx	2015-02-15 14:28:52.000000000 -0700
+@@ -0,0 +1,1237 @@
++
++
++
++  1.0
++
++  
### uVision Project, (C) Keil Software
++ ++ ++ *.c ++ *.s*; *.src; *.a* ++ *.obj ++ *.lib ++ *.txt; *.h; *.inc ++ *.plm ++ *.cpp ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ EchoClient ++ 0x4 ++ ARM-ADS ++ ++ 120000000 ++ ++ 1 ++ 1 ++ 0 ++ 1 ++ ++ ++ 1 ++ 65535 ++ 0 ++ 0 ++ 0 ++ ++ ++ 79 ++ 66 ++ 8 ++ .\Object\ ++ ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ ++ ++ 1 ++ 0 ++ 1 ++ ++ 255 ++ ++ ++ 0 ++ Schematics (MCBSTM32F200) ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\Documents\mcbstm32f200-schematics.pdf ++ ++ ++ 1 ++ User Manual (MCBSTM32F200) ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\Documents\mcbstm32f200.chm ++ ++ ++ 2 ++ MCBSTM32F200 Evaluation Board Web Page (MCBSTM32F200) ++ http://www.keil.com/mcbstm32f200/ ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 8 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ .\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ 0 ++ DLGTARM ++ (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) ++ ++ ++ 0 ++ ARMDBGFLAGS ++ ++ ++ ++ 0 ++ ULP2CM3 ++ -UP1135060 -O206 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO19 -TC120000000 -TP18 -TDX0 -TDD0 -TDS8000 -TDT0 -TDC1F -TIE1 -TIP1 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024.flm -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm) ++ ++ ++ 0 ++ DLGUARM ++ ++ ++ ++ 0 ++ UL2CM3 ++ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm)) ++ ++ ++ ++ ++ ++ 1 ++ 8 ++ ((func_args*)args)->signal->port ++ ++ ++ ++ ++ 2 ++ 8 ++ 0x8004dc8 ++ ++ ++ ++ 0 ++ ++ ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ Source ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\main.c ++ main.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 2 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\echoclient.c ++ echoclient.c ++ 0 ++ 0 ++ ++ ++ ++ ++ Configuration ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 2 ++ 3 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\wolfSSL\config-CyaSSL.h ++ config-CyaSSL.h ++ 0 ++ 0 ++ ++ ++ 2 ++ 4 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\wolfSSL\config-Crypt.h ++ config-Crypt.h ++ 0 ++ 0 ++ ++ ++ 2 ++ 5 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\Network\Net_Config_ETH_0.h ++ Net_Config_ETH_0.h ++ 0 ++ 0 ++ ++ ++ ++ ++ Dcumentation ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 3 ++ 6 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\Abstract.txt ++ Abstract.txt ++ 0 ++ 0 ++ ++ ++ ++ ++ Devices ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 4 ++ 7 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\time-dummy.c ++ time-dummy.c ++ 0 ++ 0 ++ ++ ++ ++ ++ ::CMSIS ++ 1 ++ 0 ++ 0 ++ 1 ++ ++ 5 ++ 8 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\CMSIS\RTX_Conf_CM.c ++ RTX_Conf_CM.c ++ 1 ++ 0 ++ ++ ++ 5 ++ 9 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.4\CMSIS_RTX\Lib\ARM\RTX_CM3.lib ++ RTX_CM3.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Device ++ 1 ++ 0 ++ 0 ++ 1 ++ ++ 6 ++ 10 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\RTE_Device.h ++ RTE_Device.h ++ 1 ++ 0 ++ ++ ++ 6 ++ 11 ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ startup_stm32f2xx.s ++ 1 ++ 0 ++ ++ ++ 6 ++ 12 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ system_stm32f2xx.c ++ 1 ++ 0 ++ ++ ++ 6 ++ 13 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\DMA_STM32F2xx.c ++ DMA_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 6 ++ 14 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\GPIO_STM32F2xx.c ++ GPIO_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Drivers ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 7 ++ 15 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\EMAC_STM32F2xx.c ++ EMAC_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 7 ++ 16 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\MCI_STM32F2xx.c ++ MCI_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 7 ++ 17 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Driver\PHY_ST802RT1.c ++ PHY_ST802RT1.c ++ 1 ++ 0 ++ ++ ++ ++ ++ ::File System ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 8 ++ 18 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\File_System\FS_Config.c ++ FS_Config.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 19 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\File_System\FS_Config_MC_0.h ++ FS_Config_MC_0.h ++ 1 ++ 0 ++ ++ ++ 8 ++ 20 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\FileSystem\Lib\ARM\FS_LFN_CM3_L.lib ++ FS_LFN_CM3_L.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Network ++ 1 ++ 0 ++ 0 ++ 1 ++ ++ 9 ++ 21 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config.c ++ Net_Config.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 22 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_BSD.h ++ Net_Config_BSD.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 23 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_DNS_Client.h ++ Net_Config_DNS_Client.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 24 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_ETH_0.h ++ Net_Config_ETH_0.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 25 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_TCP.h ++ Net_Config_TCP.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 26 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_UDP.h ++ Net_Config_UDP.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 27 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Debug.c ++ Net_Debug.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 28 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Lib\ARM\Net_Dbg_CM3_L.lib ++ Net_Dbg_CM3_L.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::wolfSSL ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 10 ++ 29 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\config-Crypt.h ++ config-Crypt.h ++ 1 ++ 0 ++ ++ ++ 10 ++ 30 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\config-CyaSSL.h ++ config-CyaSSL.h ++ 1 ++ 0 ++ ++ ++ 10 ++ 31 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\settings.h ++ settings.h ++ 1 ++ 0 ++ ++ ++ 10 ++ 32 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\cyassl_MDK_ARM.c ++ cyassl_MDK_ARM.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 33 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\aes.c ++ aes.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 34 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\arc4.c ++ arc4.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 35 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asm.c ++ asm.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 36 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asn.c ++ asn.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 37 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\blake2b.c ++ blake2b.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 38 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\camellia.c ++ camellia.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 39 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\coding.c ++ coding.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 40 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\compress.c ++ compress.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 41 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\des3.c ++ des3.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 42 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dh.c ++ dh.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 43 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dsa.c ++ dsa.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 44 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc.c ++ ecc.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 45 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc_fp.c ++ ecc_fp.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 46 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\error.c ++ error.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 47 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hc128.c ++ hc128.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 48 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hmac.c ++ hmac.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 49 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\integer.c ++ integer.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 50 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\logging.c ++ logging.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 51 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md2.c ++ md2.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 52 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md4.c ++ md4.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 53 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md5.c ++ md5.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 54 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\memory.c ++ memory.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 55 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\misc.c ++ misc.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 56 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\pwdbased.c ++ pwdbased.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 57 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rabbit.c ++ rabbit.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 58 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\random.c ++ random.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 59 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ripemd.c ++ ripemd.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 60 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rsa.c ++ rsa.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 61 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha.c ++ sha.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 62 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha256.c ++ sha256.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 63 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha512.c ++ sha512.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 64 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\tfm.c ++ tfm.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 65 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\wc_port.c ++ wc_port.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 66 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\crl.c ++ crl.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 67 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\internal.c ++ internal.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 68 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\io.c ++ io.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 69 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\keys.c ++ keys.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 70 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ocsp.c ++ ocsp.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 71 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\sniffer.c ++ sniffer.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 72 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ssl.c ++ ssl.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 73 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\tls.c ++ tls.c ++ 1 ++ 0 ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/EchoClient.uvprojx mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/EchoClient.uvprojx +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/EchoClient.uvprojx 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/EchoClient.uvprojx 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,1152 @@ ++ ++ ++ ++ 2.1 ++ ++
### uVision Project, (C) Keil Software
++ ++ ++ ++ EchoClient ++ 0x4 ++ ARM-ADS ++ ++ ++ STM32F207IG ++ STMicroelectronics ++ IRAM(0x20000000,0x20000) IROM(0x08000000,0x100000) CPUTYPE("Cortex-M3") CLOCK(120000000) ELITTLE ++ ++ ++ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm)) ++ 0 ++ $$Device:STM32F207IG$Device\Include\stm32f2xx.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ $$Device:STM32F207IG$SVD\STM32F20x.svd ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ .\Object\ ++ EchoClient ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ .\Object\ ++ 1 ++ 0 ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ 0 ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 3 ++ ++ ++ 1 ++ ++ ++ SARMCM3.DLL ++ -REMAP -MPU ++ DCM.DLL ++ -pCM3 ++ SARMCM3.DLL ++ -REMAP -MPU ++ TCM.DLL ++ -pCM3 ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 16 ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ ++ 0 ++ 8 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ .\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 4100 ++ ++ 1 ++ BIN\ULP2CM3.DLL ++ "" () ++ ++ ++ ++ ++ 0 ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ "Cortex-M3" ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 8 ++ 0 ++ 0 ++ 0 ++ 3 ++ 3 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ ++ ++ ++ 1 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ HAVE_CONFIG_H MDK_CONF_EchoClient ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0x08000000 ++ 0x20000000 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Source ++ ++ ++ main.c ++ 1 ++ .\main.c ++ ++ ++ echoclient.c ++ 1 ++ .\echoclient.c ++ ++ ++ ++ ++ Configuration ++ ++ ++ config-CyaSSL.h ++ 5 ++ .\RTE\wolfSSL\config-CyaSSL.h ++ ++ ++ config-Crypt.h ++ 5 ++ .\RTE\wolfSSL\config-Crypt.h ++ ++ ++ Net_Config_ETH_0.h ++ 5 ++ .\RTE\Network\Net_Config_ETH_0.h ++ ++ ++ ++ ++ Dcumentation ++ ++ ++ Abstract.txt ++ 5 ++ .\Abstract.txt ++ ++ ++ ++ ++ Devices ++ ++ ++ time-dummy.c ++ 1 ++ .\time-dummy.c ++ ++ ++ ++ ++ ::CMSIS ++ ++ ++ RTX_Conf_CM.c ++ 1 ++ RTE\CMSIS\RTX_Conf_CM.c ++ ++ ++ RTX_CM3.lib ++ 4 ++ C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.4\CMSIS_RTX\Lib\ARM\RTX_CM3.lib ++ ++ ++ ++ ++ ::Device ++ ++ ++ RTE_Device.h ++ 5 ++ RTE\Device\STM32F207IG\RTE_Device.h ++ ++ ++ startup_stm32f2xx.s ++ 2 ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ ++ ++ system_stm32f2xx.c ++ 1 ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ ++ ++ DMA_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\DMA_STM32F2xx.c ++ ++ ++ GPIO_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\GPIO_STM32F2xx.c ++ ++ ++ ++ ++ ::Drivers ++ ++ ++ EMAC_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\EMAC_STM32F2xx.c ++ ++ ++ MCI_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\MCI_STM32F2xx.c ++ ++ ++ PHY_ST802RT1.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Driver\PHY_ST802RT1.c ++ ++ ++ ++ ++ ::File System ++ ++ ++ FS_Config.c ++ 1 ++ RTE\File_System\FS_Config.c ++ ++ ++ FS_Config_MC_0.h ++ 5 ++ RTE\File_System\FS_Config_MC_0.h ++ ++ ++ FS_LFN_CM3_L.lib ++ 4 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\FileSystem\Lib\ARM\FS_LFN_CM3_L.lib ++ ++ ++ ++ ++ ::Network ++ ++ ++ Net_Config.c ++ 1 ++ RTE\Network\Net_Config.c ++ ++ ++ Net_Config_BSD.h ++ 5 ++ RTE\Network\Net_Config_BSD.h ++ ++ ++ Net_Config_DNS_Client.h ++ 5 ++ RTE\Network\Net_Config_DNS_Client.h ++ ++ ++ Net_Config_ETH_0.h ++ 5 ++ RTE\Network\Net_Config_ETH_0.h ++ ++ ++ Net_Config_TCP.h ++ 5 ++ RTE\Network\Net_Config_TCP.h ++ ++ ++ Net_Config_UDP.h ++ 5 ++ RTE\Network\Net_Config_UDP.h ++ ++ ++ Net_Debug.c ++ 1 ++ RTE\Network\Net_Debug.c ++ ++ ++ Net_Dbg_CM3_L.lib ++ 4 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Lib\ARM\Net_Dbg_CM3_L.lib ++ ++ ++ ++ ++ ::wolfSSL ++ ++ ++ config-Crypt.h ++ 5 ++ RTE\wolfSSL\config-Crypt.h ++ ++ ++ config-CyaSSL.h ++ 5 ++ RTE\wolfSSL\config-CyaSSL.h ++ ++ ++ settings.h ++ 5 ++ RTE\wolfSSL\settings.h ++ ++ ++ cyassl_MDK_ARM.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\cyassl_MDK_ARM.c ++ ++ ++ aes.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\aes.c ++ ++ ++ arc4.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\arc4.c ++ ++ ++ asm.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asm.c ++ ++ ++ asn.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asn.c ++ ++ ++ blake2b.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\blake2b.c ++ ++ ++ camellia.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\camellia.c ++ ++ ++ coding.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\coding.c ++ ++ ++ compress.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\compress.c ++ ++ ++ des3.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\des3.c ++ ++ ++ dh.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dh.c ++ ++ ++ dsa.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dsa.c ++ ++ ++ ecc.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc.c ++ ++ ++ ecc_fp.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc_fp.c ++ ++ ++ error.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\error.c ++ ++ ++ hc128.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hc128.c ++ ++ ++ hmac.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hmac.c ++ ++ ++ integer.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\integer.c ++ ++ ++ logging.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\logging.c ++ ++ ++ md2.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md2.c ++ ++ ++ md4.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md4.c ++ ++ ++ md5.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md5.c ++ ++ ++ memory.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\memory.c ++ ++ ++ misc.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\misc.c ++ ++ ++ pwdbased.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\pwdbased.c ++ ++ ++ rabbit.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rabbit.c ++ ++ ++ random.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\random.c ++ ++ ++ ripemd.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ripemd.c ++ ++ ++ rsa.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rsa.c ++ ++ ++ sha.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha.c ++ ++ ++ sha256.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha256.c ++ ++ ++ sha512.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha512.c ++ ++ ++ tfm.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\tfm.c ++ ++ ++ wc_port.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\wc_port.c ++ ++ ++ crl.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\crl.c ++ ++ ++ internal.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\internal.c ++ ++ ++ io.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\io.c ++ ++ ++ keys.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\keys.c ++ ++ ++ ocsp.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ocsp.c ++ ++ ++ sniffer.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\sniffer.c ++ ++ ++ ssl.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ssl.c ++ ++ ++ tls.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\tls.c ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ RTE\CMSIS\RTX_Conf_CM.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\RTE_Device.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\File_System\FS_Config.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\File_System\FS_Config_MC_0.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_BSD.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_DNS_Client.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_ETH_0.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_TCP.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_UDP.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Debug.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Other\config-Crypt.h ++ ++ ++ ++ ++ ++ RTE\Other\config-CyaSSL.h ++ ++ ++ ++ ++ ++ RTE\Other\config-RTX-TCP-FS.h ++ ++ ++ ++ ++ ++ RTE\Other\config.h ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config-Crypt.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config-CyaSSL.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config.h ++ ++ ++ ++ ++ ++ RTE\wolfSSL\settings.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/RTE/wolfSSL/settings.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/RTE/wolfSSL/settings.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/RTE/wolfSSL/settings.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/RTE/wolfSSL/settings.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,627 @@ ++/* settings.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++/* Place OS specific preprocessor flags, defines, includes here, will be ++ included into every file because types.h includes it */ ++ ++ ++#ifndef CTAO_CRYPT_SETTINGS_H ++#define CTAO_CRYPT_SETTINGS_H ++ ++#ifdef __cplusplus ++ extern "C" { ++#endif ++ ++/* Uncomment next line if using IPHONE */ ++/* #define IPHONE */ ++ ++/* Uncomment next line if using ThreadX */ ++/* #define THREADX */ ++ ++/* Uncomment next line if using Micrium ucOS */ ++/* #define MICRIUM */ ++ ++/* Uncomment next line if using Mbed */ ++/* #define MBED */ ++ ++/* Uncomment next line if using Microchip PIC32 ethernet starter kit */ ++/* #define MICROCHIP_PIC32 */ ++ ++/* Uncomment next line if using Microchip TCP/IP stack, version 5 */ ++/* #define MICROCHIP_TCPIP_V5 */ ++ ++/* Uncomment next line if using Microchip TCP/IP stack, version 6 or later */ ++/* #define MICROCHIP_TCPIP */ ++ ++/* Uncomment next line if using FreeRTOS */ ++/* #define FREERTOS */ ++ ++/* Uncomment next line if using FreeRTOS Windows Simulator */ ++/* #define FREERTOS_WINSIM */ ++ ++/* Uncomment next line if using RTIP */ ++/* #define EBSNET */ ++ ++/* Uncomment next line if using lwip */ ++/* #define CYASSL_LWIP */ ++ ++/* Uncomment next line if building CyaSSL for a game console */ ++/* #define CYASSL_GAME_BUILD */ ++ ++/* Uncomment next line if building CyaSSL for LSR */ ++/* #define CYASSL_LSR */ ++ ++/* Uncomment next line if building CyaSSL for Freescale MQX/RTCS/MFS */ ++/* #define FREESCALE_MQX */ ++ ++/* Uncomment next line if using STM32F2 */ ++/* #define CYASSL_STM32F2 */ ++ ++/* Uncomment next line if using Comverge settings */ ++/* #define COMVERGE */ ++ ++/* Uncomment next line if using QL SEP settings */ ++/* #define CYASSL_QL */ ++ ++ ++#include ++ ++#ifdef IPHONE ++ #define SIZEOF_LONG_LONG 8 ++#endif ++ ++ ++#ifdef COMVERGE ++ #define THREADX ++ #define HAVE_NETX ++ #define CYASSL_USER_IO ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_FILESYSTEM ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++ #define NO_RSA ++ #define NO_SESSION_CACHE ++ #define HAVE_ECC ++#endif ++ ++ ++#ifdef THREADX ++ #define SIZEOF_LONG_LONG 8 ++#endif ++ ++#ifdef HAVE_NETX ++ #include "nx_api.h" ++#endif ++ ++#ifdef MICROCHIP_PIC32 ++ #define SIZEOF_LONG_LONG 8 ++ #define SINGLE_THREADED ++ #define CYASSL_USER_IO ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_FILESYSTEM ++ #define USE_FAST_MATH ++ #define TFM_TIMING_RESISTANT ++#endif ++ ++#ifdef MICROCHIP_TCPIP_V5 ++ /* include timer functions */ ++ #include "TCPIP Stack/TCPIP.h" ++#endif ++ ++#ifdef MICROCHIP_TCPIP ++ /* include timer, NTP functions */ ++ #include "system/system_services.h" ++ #ifdef MICROCHIP_MPLAB_HARMONY ++ #include "tcpip/tcpip.h" ++ #else ++ #include "tcpip/sntp.h" ++ #endif ++#endif ++ ++#ifdef MBED ++ #define SINGLE_THREADED ++ #define CYASSL_USER_IO ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++#endif /* MBED */ ++ ++#ifdef CYASSL_TYTO ++ #include "rand.h" ++ #define FREERTOS ++ #define NO_FILESYSTEM ++ #define CYASSL_USER_IO ++ #define NO_DEV_RANDOM ++ #define HAVE_ECC ++ #define HAVE_ECC_ENCRYPT ++ #define ECC_SHAMIR ++ #define HAVE_HKDF ++ #define USE_FAST_MATH ++ #define TFM_TIMING_RESISTANT ++ #define FP_MAX_BITS 512 ++ #define NO_OLD_TLS ++ #define NO_MD4 ++ #define NO_RABBIT ++ #define NO_HC128 ++ #define NO_RSA ++ #define NO_DSA ++ #define NO_PWDBASED ++ #define NO_PSK ++#endif ++ ++#ifdef FREERTOS_WINSIM ++ #define FREERTOS ++ #define USE_WINDOWS_API ++#endif ++ ++ ++/* Micrium will use Visual Studio for compilation but not the Win32 API */ ++#if defined(_WIN32) && !defined(MICRIUM) && !defined(FREERTOS) \ ++ && !defined(EBSNET) ++ #define USE_WINDOWS_API ++#endif ++ ++ ++#if defined(CYASSL_LEANPSK) && !defined(XMALLOC_USER) ++ #include ++ #define XMALLOC(s, h, type) malloc((s)) ++ #define XFREE(p, h, type) free((p)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++#endif ++ ++#if defined(XMALLOC_USER) && defined(SSN_BUILDING_LIBYASSL) ++ #undef XMALLOC ++ #define XMALLOC yaXMALLOC ++ #undef XFREE ++ #define XFREE yaXFREE ++ #undef XREALLOC ++ #define XREALLOC yaXREALLOC ++#endif ++ ++ ++#ifdef FREERTOS ++ #ifndef NO_WRITEV ++ #define NO_WRITEV ++ #endif ++ #ifndef NO_SHA512 ++ #define NO_SHA512 ++ #endif ++ #ifndef NO_DH ++ #define NO_DH ++ #endif ++ #ifndef NO_DSA ++ #define NO_DSA ++ #endif ++ #ifndef NO_HC128 ++ #define NO_HC128 ++ #endif ++ ++ #ifndef SINGLE_THREADED ++ #include "FreeRTOS.h" ++ #include "semphr.h" ++ #endif ++#endif ++ ++#ifdef EBSNET ++ #include "rtip.h" ++ ++ /* #define DEBUG_CYASSL */ ++ #define NO_CYASSL_DIR /* tbd */ ++ ++ #if (POLLOS) ++ #define SINGLE_THREADED ++ #endif ++ ++ #if (RTPLATFORM) ++ #if (!RTP_LITTLE_ENDIAN) ++ #define BIG_ENDIAN_ORDER ++ #endif ++ #else ++ #if (!KS_LITTLE_ENDIAN) ++ #define BIG_ENDIAN_ORDER ++ #endif ++ #endif ++ ++ #if (WINMSP3) ++ #undef SIZEOF_LONG ++ #define SIZEOF_LONG_LONG 8 ++ #else ++ #sslpro: settings.h - please implement SIZEOF_LONG and SIZEOF_LONG_LONG ++ #endif ++ ++ #define XMALLOC(s, h, type) ((void *)rtp_malloc((s), SSL_PRO_MALLOC)) ++ #define XFREE(p, h, type) (rtp_free(p)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++ ++#endif /* EBSNET */ ++ ++#ifdef CYASSL_GAME_BUILD ++ #define SIZEOF_LONG_LONG 8 ++ #if defined(__PPU) || defined(__XENON) ++ #define BIG_ENDIAN_ORDER ++ #endif ++#endif ++ ++#ifdef CYASSL_LSR ++ #define HAVE_WEBSERVER ++ #define SIZEOF_LONG_LONG 8 ++ #define CYASSL_LOW_MEMORY ++ #define NO_WRITEV ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++ #define NO_DEV_RANDOM ++ #define NO_CYASSL_DIR ++ #define NO_RABBIT ++ #ifndef NO_FILESYSTEM ++ #define LSR_FS ++ #include "inc/hw_types.h" ++ #include "fs.h" ++ #endif ++ #define CYASSL_LWIP ++ #include /* for tcp errno */ ++ #define CYASSL_SAFERTOS ++ #if defined(__IAR_SYSTEMS_ICC__) ++ /* enum uses enum */ ++ #pragma diag_suppress=Pa089 ++ #endif ++#endif ++ ++#ifdef CYASSL_SAFERTOS ++ #ifndef SINGLE_THREADED ++ #include "SafeRTOS/semphr.h" ++ #endif ++ ++ #include "SafeRTOS/heap.h" ++ #define XMALLOC(s, h, type) pvPortMalloc((s)) ++ #define XFREE(p, h, type) vPortFree((p)) ++ #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n)) ++#endif ++ ++#ifdef CYASSL_LOW_MEMORY ++ #undef RSA_LOW_MEM ++ #define RSA_LOW_MEM ++ #undef CYASSL_SMALL_STACK ++ #define CYASSL_SMALL_STACK ++ #undef TFM_TIMING_RESISTANT ++ #define TFM_TIMING_RESISTANT ++#endif ++ ++#ifdef FREESCALE_MQX ++ #define SIZEOF_LONG_LONG 8 ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_RABBIT ++ #define NO_CYASSL_DIR ++ #define USE_FAST_MATH ++ #define TFM_TIMING_RESISTANT ++ #define FREESCALE_K70_RNGA ++ /* #define FREESCALE_K53_RNGB */ ++ #include "mqx.h" ++ #ifndef NO_FILESYSTEM ++ #include "mfs.h" ++ #include "fio.h" ++ #endif ++ #ifndef SINGLE_THREADED ++ #include "mutex.h" ++ #endif ++ ++ #define XMALLOC(s, h, t) (void *)_mem_alloc_system((s)) ++ #define XFREE(p, h, t) {void* xp = (p); if ((xp)) _mem_free((xp));} ++ /* Note: MQX has no realloc, using fastmath above */ ++#endif ++ ++#ifdef CYASSL_STM32F2 ++ #define SIZEOF_LONG_LONG 8 ++ #define NO_DEV_RANDOM ++ #define NO_CYASSL_DIR ++ #define NO_RABBIT ++ #define STM32F2_RNG ++ #define STM32F2_CRYPTO ++ #define KEIL_INTRINSICS ++#endif ++ ++#ifdef MICRIUM ++ ++ #include "stdlib.h" ++ #include "net_cfg.h" ++ #include "ssl_cfg.h" ++ #include "net_secure_os.h" ++ ++ #define CYASSL_TYPES ++ ++ typedef CPU_INT08U byte; ++ typedef CPU_INT16U word16; ++ typedef CPU_INT32U word32; ++ ++ #if (NET_SECURE_MGR_CFG_WORD_SIZE == CPU_WORD_SIZE_32) ++ #define SIZEOF_LONG 4 ++ #undef SIZEOF_LONG_LONG ++ #else ++ #undef SIZEOF_LONG ++ #define SIZEOF_LONG_LONG 8 ++ #endif ++ ++ #define STRING_USER ++ ++ #define XSTRLEN(pstr) ((CPU_SIZE_T)Str_Len((CPU_CHAR *)(pstr))) ++ #define XSTRNCPY(pstr_dest, pstr_src, len_max) \ ++ ((CPU_CHAR *)Str_Copy_N((CPU_CHAR *)(pstr_dest), \ ++ (CPU_CHAR *)(pstr_src), (CPU_SIZE_T)(len_max))) ++ #define XSTRNCMP(pstr_1, pstr_2, len_max) \ ++ ((CPU_INT16S)Str_Cmp_N((CPU_CHAR *)(pstr_1), \ ++ (CPU_CHAR *)(pstr_2), (CPU_SIZE_T)(len_max))) ++ #define XSTRSTR(pstr, pstr_srch) \ ++ ((CPU_CHAR *)Str_Str((CPU_CHAR *)(pstr), \ ++ (CPU_CHAR *)(pstr_srch))) ++ #define XMEMSET(pmem, data_val, size) \ ++ ((void)Mem_Set((void *)(pmem), (CPU_INT08U) (data_val), \ ++ (CPU_SIZE_T)(size))) ++ #define XMEMCPY(pdest, psrc, size) ((void)Mem_Copy((void *)(pdest), \ ++ (void *)(psrc), (CPU_SIZE_T)(size))) ++ #define XMEMCMP(pmem_1, pmem_2, size) \ ++ (((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), (void *)(pmem_2), \ ++ (CPU_SIZE_T)(size))) ? DEF_NO : DEF_YES) ++ #define XMEMMOVE XMEMCPY ++ ++#if (NET_SECURE_MGR_CFG_EN == DEF_ENABLED) ++ #define MICRIUM_MALLOC ++ #define XMALLOC(s, h, type) ((void *)NetSecure_BlkGet((CPU_INT08U)(type), \ ++ (CPU_SIZE_T)(s), (void *)0)) ++ #define XFREE(p, h, type) (NetSecure_BlkFree((CPU_INT08U)(type), \ ++ (p), (void *)0)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++#endif ++ ++ #if (NET_SECURE_MGR_CFG_FS_EN == DEF_ENABLED) ++ #undef NO_FILESYSTEM ++ #else ++ #define NO_FILESYSTEM ++ #endif ++ ++ #if (SSL_CFG_TRACE_LEVEL == CYASSL_TRACE_LEVEL_DBG) ++ #define DEBUG_CYASSL ++ #else ++ #undef DEBUG_CYASSL ++ #endif ++ ++ #if (SSL_CFG_OPENSSL_EN == DEF_ENABLED) ++ #define OPENSSL_EXTRA ++ #else ++ #undef OPENSSL_EXTRA ++ #endif ++ ++ #if (SSL_CFG_MULTI_THREAD_EN == DEF_ENABLED) ++ #undef SINGLE_THREADED ++ #else ++ #define SINGLE_THREADED ++ #endif ++ ++ #if (SSL_CFG_DH_EN == DEF_ENABLED) ++ #undef NO_DH ++ #else ++ #define NO_DH ++ #endif ++ ++ #if (SSL_CFG_DSA_EN == DEF_ENABLED) ++ #undef NO_DSA ++ #else ++ #define NO_DSA ++ #endif ++ ++ #if (SSL_CFG_PSK_EN == DEF_ENABLED) ++ #undef NO_PSK ++ #else ++ #define NO_PSK ++ #endif ++ ++ #if (SSL_CFG_3DES_EN == DEF_ENABLED) ++ #undef NO_DES ++ #else ++ #define NO_DES ++ #endif ++ ++ #if (SSL_CFG_AES_EN == DEF_ENABLED) ++ #undef NO_AES ++ #else ++ #define NO_AES ++ #endif ++ ++ #if (SSL_CFG_RC4_EN == DEF_ENABLED) ++ #undef NO_RC4 ++ #else ++ #define NO_RC4 ++ #endif ++ ++ #if (SSL_CFG_RABBIT_EN == DEF_ENABLED) ++ #undef NO_RABBIT ++ #else ++ #define NO_RABBIT ++ #endif ++ ++ #if (SSL_CFG_HC128_EN == DEF_ENABLED) ++ #undef NO_HC128 ++ #else ++ #define NO_HC128 ++ #endif ++ ++ #if (CPU_CFG_ENDIAN_TYPE == CPU_ENDIAN_TYPE_BIG) ++ #define BIG_ENDIAN_ORDER ++ #else ++ #undef BIG_ENDIAN_ORDER ++ #define LITTLE_ENDIAN_ORDER ++ #endif ++ ++ #if (SSL_CFG_MD4_EN == DEF_ENABLED) ++ #undef NO_MD4 ++ #else ++ #define NO_MD4 ++ #endif ++ ++ #if (SSL_CFG_WRITEV_EN == DEF_ENABLED) ++ #undef NO_WRITEV ++ #else ++ #define NO_WRITEV ++ #endif ++ ++ #if (SSL_CFG_USER_RNG_SEED_EN == DEF_ENABLED) ++ #define NO_DEV_RANDOM ++ #else ++ #undef NO_DEV_RANDOM ++ #endif ++ ++ #if (SSL_CFG_USER_IO_EN == DEF_ENABLED) ++ #define CYASSL_USER_IO ++ #else ++ #undef CYASSL_USER_IO ++ #endif ++ ++ #if (SSL_CFG_DYNAMIC_BUFFERS_EN == DEF_ENABLED) ++ #undef LARGE_STATIC_BUFFERS ++ #undef STATIC_CHUNKS_ONLY ++ #else ++ #define LARGE_STATIC_BUFFERS ++ #define STATIC_CHUNKS_ONLY ++ #endif ++ ++ #if (SSL_CFG_DER_LOAD_EN == DEF_ENABLED) ++ #define CYASSL_DER_LOAD ++ #else ++ #undef CYASSL_DER_LOAD ++ #endif ++ ++ #if (SSL_CFG_DTLS_EN == DEF_ENABLED) ++ #define CYASSL_DTLS ++ #else ++ #undef CYASSL_DTLS ++ #endif ++ ++ #if (SSL_CFG_CALLBACKS_EN == DEF_ENABLED) ++ #define CYASSL_CALLBACKS ++ #else ++ #undef CYASSL_CALLBACKS ++ #endif ++ ++ #if (SSL_CFG_FAST_MATH_EN == DEF_ENABLED) ++ #define USE_FAST_MATH ++ #else ++ #undef USE_FAST_MATH ++ #endif ++ ++ #if (SSL_CFG_TFM_TIMING_RESISTANT_EN == DEF_ENABLED) ++ #define TFM_TIMING_RESISTANT ++ #else ++ #undef TFM_TIMING_RESISTANT ++ #endif ++ ++#endif /* MICRIUM */ ++ ++ ++#ifdef CYASSL_QL ++ #ifndef CYASSL_SEP ++ #define CYASSL_SEP ++ #endif ++ #ifndef OPENSSL_EXTRA ++ #define OPENSSL_EXTRA ++ #endif ++ #ifndef SESSION_CERTS ++ #define SESSION_CERTS ++ #endif ++ #ifndef HAVE_AESCCM ++ #define HAVE_AESCCM ++ #endif ++ #ifndef ATOMIC_USER ++ #define ATOMIC_USER ++ #endif ++ #ifndef CYASSL_DER_LOAD ++ #define CYASSL_DER_LOAD ++ #endif ++ #ifndef KEEP_PEER_CERT ++ #define KEEP_PEER_CERT ++ #endif ++ #ifndef HAVE_ECC ++ #define HAVE_ECC ++ #endif ++ #ifndef SESSION_INDEX ++ #define SESSION_INDEX ++ #endif ++#endif /* CYASSL_QL */ ++ ++ ++#if !defined(XMALLOC_USER) && !defined(MICRIUM_MALLOC) && \ ++ !defined(CYASSL_LEANPSK) && !defined(NO_CYASSL_MEMORY) ++ #define USE_CYASSL_MEMORY ++#endif ++ ++ ++#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) ++ #undef KEEP_PEER_CERT ++ #define KEEP_PEER_CERT ++#endif ++ ++ ++/* stream ciphers except arc4 need 32bit alignment, intel ok without */ ++#ifndef XSTREAM_ALIGNMENT ++ #if defined(__x86_64__) || defined(__ia64__) || defined(__i386__) ++ #define NO_XSTREAM_ALIGNMENT ++ #else ++ #define XSTREAM_ALIGNMENT ++ #endif ++#endif ++ ++ ++/* if using hardware crypto and have alignment requirements, specify the ++ requirement here. The record header of SSL/TLS will prvent easy alignment. ++ This hint tries to help as much as possible. */ ++#ifndef CYASSL_GENERAL_ALIGNMENT ++ #ifdef CYASSL_AESNI ++ #define CYASSL_GENERAL_ALIGNMENT 16 ++ #elif defined(XSTREAM_ALIGNMENT) ++ #define CYASSL_GENERAL_ALIGNMENT 4 ++ #else ++ #define CYASSL_GENERAL_ALIGNMENT 0 ++ #endif ++#endif ++ ++#ifdef HAVE_CRL ++ /* not widely supported yet */ ++ #undef NO_SKID ++ #define NO_SKID ++#endif ++ ++/* Place any other flags or defines here */ ++ ++ ++#ifdef __cplusplus ++ } /* extern "C" */ ++#endif ++ ++ ++#endif /* CTAO_CRYPT_SETTINGS_H */ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/config-EchoClient.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/config-EchoClient.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/config-EchoClient.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/config-EchoClient.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,34 @@ ++/* config-RTX-TCP-FS.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++ ++ ++// <<< Use Configuration Wizard in Context Menu >>> ++// Build Target: Simple Client ++// Callee IP Address ++// Default: "192.168.1.100" ++#define CYASSL_CALLEE_IP "192.168.11.3" ++// Callee Port Number ++// Default: "11111" ++#define CYASSL_CALLEE_PORT 443 ++ ++// ++// <<< end of configuration section >>> +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/echoclient.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/echoclient.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/echoclient.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/echoclient.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,282 @@ ++/* echoclient.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++ ++#include ++ ++#if defined(CYASSL_MDK_ARM) ++ #include ++ #include ++ ++ #if defined(CYASSL_MDK5) ++ #include "cmsis_os.h" ++ #include "rl_fs.h" ++ #include "rl_net.h" ++ #else ++ #include "rtl.h" ++ #endif ++ ++ #include "cyassl_MDK_ARM.h" ++#endif ++ ++#include ++ ++#include "examples/echoclient/echoclient.h" ++ ++void echoclient_test(void* args) ++{ ++ SOCKET_T sockfd = 0; ++ ++ FILE* fin = stdin ; ++ FILE* fout = stdout; ++ ++ int inCreated = 0; ++ int outCreated = 0; ++ ++ char msg[1024]; ++ char reply[1024+1]; ++ ++ SSL_METHOD* method = 0; ++ SSL_CTX* ctx = 0; ++ SSL* ssl = 0; ++ ++ int doDTLS = 0; ++ int doPSK = 0; ++ int sendSz; ++ int argc = 0; ++ char** argv = 0; ++ word16 port = yasslPort; ++ ++ ((func_args*)args)->return_code = -1; /* error state */ ++ ++#ifndef CYASSL_MDK_SHELL ++ argc = ((func_args*)args)->argc; ++ argv = ((func_args*)args)->argv; ++#endif ++ ++ if (argc >= 2) { ++ fin = fopen(argv[1], "r"); ++ inCreated = 1; ++ } ++ if (argc >= 3) { ++ fout = fopen(argv[2], "w"); ++ outCreated = 1; ++ } ++ ++ if (!fin) err_sys("can't open input file"); ++ if (!fout) err_sys("can't open output file"); ++ ++#ifdef CYASSL_DTLS ++ doDTLS = 1; ++#endif ++ ++#ifdef CYASSL_LEANPSK ++ doPSK = 1; ++#endif ++ ++#if defined(NO_RSA) && !defined(HAVE_ECC) ++ doPSK = 1; ++#endif ++ ++#if defined(NO_MAIN_DRIVER) && !defined(USE_WINDOWS_API) && !defined(CYASSL_MDK_SHELL) ++ port = ((func_args*)args)->signal->port; ++#endif ++ ++#if defined(CYASSL_DTLS) ++ method = DTLSv1_client_method(); ++#elif !defined(NO_TLS) ++ method = CyaSSLv23_client_method(); ++#else ++ method = SSLv3_client_method(); ++#endif ++ ctx = SSL_CTX_new(method); ++ ++#ifndef NO_FILESYSTEM ++ #ifndef NO_RSA ++ if (SSL_CTX_load_verify_locations(ctx, caCert, 0) != SSL_SUCCESS) ++ err_sys("can't load ca file, Please run from CyaSSL home dir"); ++ #endif ++ #ifdef HAVE_ECC ++ if (SSL_CTX_load_verify_locations(ctx, eccCert, 0) != SSL_SUCCESS) ++ err_sys("can't load ca file, Please run from CyaSSL home dir"); ++ #endif ++#elif !defined(NO_CERTS) ++ if (!doPSK) ++ load_buffer(ctx, caCert, CYASSL_CA); ++#endif ++ ++#if defined(CYASSL_SNIFFER) && !defined(HAVE_NTRU) && !defined(HAVE_ECC) ++ /* don't use EDH, can't sniff tmp keys */ ++ SSL_CTX_set_cipher_list(ctx, "AES256-SHA"); ++#endif ++ if (doPSK) { ++#ifndef NO_PSK ++ const char *defaultCipherList; ++ ++ CyaSSL_CTX_set_psk_client_callback(ctx, my_psk_client_cb); ++ #ifdef HAVE_NULL_CIPHER ++ defaultCipherList = "PSK-NULL-SHA256"; ++ #else ++ defaultCipherList = "PSK-AES128-CBC-SHA256"; ++ #endif ++ if (CyaSSL_CTX_set_cipher_list(ctx,defaultCipherList) !=SSL_SUCCESS) ++ err_sys("client can't set cipher list 2"); ++#endif ++ } ++ ++#if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) ++ SSL_CTX_set_default_passwd_cb(ctx, PasswordCallBack); ++#endif ++ ++ #if defined(CYASSL_MDK_ARM) ++ CyaSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); ++ #endif ++ ++ ssl = SSL_new(ctx); ++ ++ ++ if (doDTLS) { ++ SOCKADDR_IN_T addr; ++ build_addr(&addr, yasslIP, port, 1); ++ CyaSSL_dtls_set_peer(ssl, &addr, sizeof(addr)); ++ tcp_socket(&sockfd, 1); ++ } ++ else { ++ tcp_connect(&sockfd, yasslIP, port, 0); ++ } ++ ++ SSL_set_fd(ssl, sockfd); ++#if defined(USE_WINDOWS_API) && defined(CYASSL_DTLS) && defined(NO_MAIN_DRIVER) ++ /* let echoserver bind first, TODO: add Windows signal like pthreads does */ ++ Sleep(100); ++#endif ++ ++ if (SSL_connect(ssl) != SSL_SUCCESS) err_sys("SSL_connect failed"); ++ ++ while (fgets(msg, sizeof(msg), fin) != 0) { ++ ++ sendSz = (int)strlen(msg); ++ ++ if (SSL_write(ssl, msg, sendSz) != sendSz) ++ err_sys("SSL_write failed"); ++ ++ if (strncmp(msg, "quit", 4) == 0) { ++ fputs("sending server shutdown command: quit!\n", fout); ++ break; ++ } ++ ++ if (strncmp(msg, "break", 5) == 0) { ++ fputs("sending server session close: break!\n", fout); ++ break; ++ } ++ ++ #ifndef CYASSL_MDK_SHELL ++ while (sendSz) { ++ int got; ++ if ( (got = SSL_read(ssl, reply, sizeof(reply)-1)) > 0) { ++ reply[got] = 0; ++ fputs(reply, fout); ++ fflush(fout) ; ++ sendSz -= got; ++ } ++ else ++ break; ++ } ++ #else ++ { ++ int got; ++ if ( (got = SSL_read(ssl, reply, sizeof(reply)-1)) > 0) { ++ reply[got] = 0; ++ fputs(reply, fout); ++ fflush(fout) ; ++ sendSz -= got; ++ } ++ } ++ #endif ++ } ++ ++ ++#ifdef CYASSL_DTLS ++ strncpy(msg, "break", 6); ++ sendSz = (int)strlen(msg); ++ /* try to tell server done */ ++ SSL_write(ssl, msg, sendSz); ++#else ++ SSL_shutdown(ssl); ++#endif ++ ++ SSL_free(ssl); ++ SSL_CTX_free(ctx); ++ ++ fflush(fout); ++ if (inCreated) fclose(fin); ++ if (outCreated) fclose(fout); ++ ++ CloseSocket(sockfd); ++ ((func_args*)args)->return_code = 0; ++} ++ ++ ++/* so overall tests can pull in test function */ ++#ifndef NO_MAIN_DRIVER ++ ++ int main(int argc, char** argv) ++ { ++ func_args args; ++ ++#ifdef HAVE_CAVIUM ++ int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID); ++ if (ret != 0) ++ err_sys("Cavium OpenNitroxDevice failed"); ++#endif /* HAVE_CAVIUM */ ++ ++ StartTCP(); ++ ++ args.argc = argc; ++ args.argv = argv; ++ ++ CyaSSL_Init(); ++#if defined(DEBUG_CYASSL) && !defined(CYASSL_MDK_SHELL) ++ CyaSSL_Debugging_ON(); ++#endif ++ ++ if (CurrentDir("echoclient")) ++ ChangeDirBack(2); ++ else if (CurrentDir("Debug") || CurrentDir("Release")) ++ ChangeDirBack(3); ++ echoclient_test(&args); ++ ++ CyaSSL_Cleanup(); ++ ++#ifdef HAVE_CAVIUM ++ CspShutdown(CAVIUM_DEV_ID); ++#endif ++ return args.return_code; ++ } ++ ++#endif /* NO_MAIN_DRIVER */ ++ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/main.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/main.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/main.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/main.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,101 @@ ++/* main.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++#include ++ ++#include "cmsis_os.h" ++#include "rl_fs.h" ++#include "rl_net.h" ++#include ++#include "cyassl_MDK_ARM.h" ++#include ++ ++/*----------------------------------------------------------------------------- ++ * Initialize a Flash Memory Card ++ *----------------------------------------------------------------------------*/ ++static void init_filesystem (void) { ++ int32_t retv; ++ ++ retv = finit ("M0:"); ++ if (retv == 0) { ++ retv = fmount ("M0:"); ++ if (retv == 0) { ++ printf ("Drive M0 ready!\n"); ++ } ++ else { ++ printf ("Drive M0 mount failed!\n"); ++ } ++ } ++ else { ++ printf ("Drive M0 initialization failed!\n"); ++ } ++} ++ ++/*----------------------------------------------------------------------------- ++ * TCP/IP tasks ++ *----------------------------------------------------------------------------*/ ++void tcp_poll (void const *arg) ++{ ++ CYASSL_MSG("TCP polling started.\n") ; ++ while (1) { ++ net_main (); ++ osDelay(1) ; ++ } ++} ++ ++typedef struct func_args { ++ int argc; ++ char** argv; ++} func_args; ++ ++extern void echoclient_test(func_args * args) ; ++extern void init_time(void) ; ++ ++ osThreadDef (tcp_poll, osPriorityHigh , 1, 0) ; ++/*----------------------------------------------------------------------------- ++ * mian entry ++ *----------------------------------------------------------------------------*/ ++int myoptind = 0; ++char* myoptarg = NULL; ++ ++#include "config-EchoClient.h" ++ ++int main() ++{ ++ func_args args = { 0 } ; ++ ++ init_filesystem (); ++ net_initialize() ; ++ osThreadCreate (osThread (tcp_poll), NULL); ++ osDelay(30000) ; /* wait for DHCP */ ++ #if defined(DEBUG_CYASSL) ++ printf("Turning ON Debug message\n") ; ++ CyaSSL_Debugging_ON() ; ++ #endif ++ ++ echoclient_test(&args) ; ++ ++} +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/time-dummy.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/time-dummy.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/time-dummy.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoClient/time-dummy.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,34 @@ ++/* time-dummy.c.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include "time.h" ++ ++struct tm *Cyassl_MDK_gmtime(const time_t *c) ++{ ++ static struct tm date ; ++ return(&date) ; ++} ++ ++time_t time(time_t * t) { return 0 ; } +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/Abstract.txt mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/Abstract.txt +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/Abstract.txt 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/Abstract.txt 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,24 @@ ++This program is echo server with CyaSSL/wolfCrypt library. ++ ++In order to run this program, ++Copy {PACK}\wolfSSL\CyaSSL\{version}\cyassl\certs folder and files to the SD memory. ++Set the server IP address in Net_Config_ETH_0.h ++The server default port is 11111, defined in test.h. ++ ++For further configuration, refer config-Crypt.h and config-CyaSSL.h. ++ ++When testing this server, it is recommended to test against one of the standard ++CyaSSL example applications running on a desktop machine. The standard CyaSSL ++example applications are located in the CyaSSL root directory under the ++/examples directory. ++ ++For the hardware crypt on config-Crypt.h, download ++STSW-STM32062: STM32F2xx standard peripherals library at ++http://www.st.com/. Copy Libraries\STM32F2xx_StdPeriph_Driver\{inc,src} to ++ {PACK}\cyassl\IDE\MDK5-ARM\STM32F2xx_StdPeriph_Lib ++ ++ ++Support ++------- ++Please send questions or comments to support@wolfssl.com ++ +\ No newline at end of file +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/EchoServer.uvoptx mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/EchoServer.uvoptx +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/EchoServer.uvoptx 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/EchoServer.uvoptx 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,1270 @@ ++ ++ ++ ++ 1.0 ++ ++
### uVision Project, (C) Keil Software
++ ++ ++ *.c ++ *.s*; *.src; *.a* ++ *.obj ++ *.lib ++ *.txt; *.h; *.inc ++ *.plm ++ *.cpp ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ EchoServer ++ 0x4 ++ ARM-ADS ++ ++ 120000000 ++ ++ 1 ++ 1 ++ 0 ++ 1 ++ ++ ++ 1 ++ 65535 ++ 0 ++ 0 ++ 0 ++ ++ ++ 79 ++ 66 ++ 8 ++ .\Object\ ++ ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ ++ ++ 1 ++ 0 ++ 1 ++ ++ 255 ++ ++ ++ 0 ++ Schematics (MCBSTM32F200) ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\Documents\mcbstm32f200-schematics.pdf ++ ++ ++ 1 ++ User Manual (MCBSTM32F200) ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\Documents\mcbstm32f200.chm ++ ++ ++ 2 ++ MCBSTM32F200 Evaluation Board Web Page (MCBSTM32F200) ++ http://www.keil.com/mcbstm32f200/ ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 8 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ .\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ 0 ++ DLGTARM ++ (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) ++ ++ ++ 0 ++ ARMDBGFLAGS ++ ++ ++ ++ 0 ++ ULP2CM3 ++ -UP1135060 -O206 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO19 -TC120000000 -TP18 -TDX0 -TDD0 -TDS8000 -TDT0 -TDC1F -TIE1 -TIP1 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024.flm -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm) ++ ++ ++ 0 ++ DLGUARM ++ ++ ++ ++ 0 ++ UL2CM3 ++ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm)) ++ ++ ++ ++ ++ 0 ++ 0 ++ 96 ++ 1 ++
134218906
++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ .\main.c ++ ++ ++
++ ++ 1 ++ 0 ++ 85 ++ 1 ++
134218858
++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ .\main.c ++ ++ ++
++
++ ++ ++ 1 ++ 8 ++ 0x20000408 ++ ++ ++ ++ ++ 2 ++ 8 ++ 0x8004dc8 ++ ++ ++ ++ 0 ++ ++ ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++
++
++ ++ ++ Source ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\main.c ++ main.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 2 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\echoserver.c ++ echoserver.c ++ 0 ++ 0 ++ ++ ++ ++ ++ Configuration ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 2 ++ 3 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\wolfSSL\config-CyaSSL.h ++ config-CyaSSL.h ++ 0 ++ 0 ++ ++ ++ 2 ++ 4 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\wolfSSL\config-Crypt.h ++ config-Crypt.h ++ 0 ++ 0 ++ ++ ++ 2 ++ 5 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\Network\Net_Config_ETH_0.h ++ Net_Config_ETH_0.h ++ 0 ++ 0 ++ ++ ++ ++ ++ Documentation ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 3 ++ 6 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\Abstract.txt ++ Abstract.txt ++ 0 ++ 0 ++ ++ ++ ++ ++ Devices ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 4 ++ 7 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\time-dummy.c ++ time-dummy.c ++ 0 ++ 0 ++ ++ ++ ++ ++ ::CMSIS ++ 1 ++ 0 ++ 0 ++ 1 ++ ++ 5 ++ 8 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\CMSIS\RTX_Conf_CM.c ++ RTX_Conf_CM.c ++ 1 ++ 0 ++ ++ ++ 5 ++ 9 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.4\CMSIS_RTX\Lib\ARM\RTX_CM3.lib ++ RTX_CM3.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Device ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 6 ++ 10 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\RTE_Device.h ++ RTE_Device.h ++ 1 ++ 0 ++ ++ ++ 6 ++ 11 ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ startup_stm32f2xx.s ++ 1 ++ 0 ++ ++ ++ 6 ++ 12 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ system_stm32f2xx.c ++ 1 ++ 0 ++ ++ ++ 6 ++ 13 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\DMA_STM32F2xx.c ++ DMA_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 6 ++ 14 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\GPIO_STM32F2xx.c ++ GPIO_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Drivers ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 7 ++ 15 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\EMAC_STM32F2xx.c ++ EMAC_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 7 ++ 16 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\MCI_STM32F2xx.c ++ MCI_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 7 ++ 17 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Driver\PHY_ST802RT1.c ++ PHY_ST802RT1.c ++ 1 ++ 0 ++ ++ ++ ++ ++ ::File System ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 8 ++ 18 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\File_System\FS_Config.c ++ FS_Config.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 19 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\File_System\FS_Config_MC_0.h ++ FS_Config_MC_0.h ++ 1 ++ 0 ++ ++ ++ 8 ++ 20 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\FileSystem\Lib\ARM\FS_LFN_CM3_L.lib ++ FS_LFN_CM3_L.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Network ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 9 ++ 21 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config.c ++ Net_Config.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 22 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_BSD.h ++ Net_Config_BSD.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 23 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_DNS_Client.h ++ Net_Config_DNS_Client.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 24 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_ETH_0.h ++ Net_Config_ETH_0.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 25 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_TCP.h ++ Net_Config_TCP.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 26 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_UDP.h ++ Net_Config_UDP.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 27 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Debug.c ++ Net_Debug.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 28 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Lib\ARM\Net_Dbg_CM3_L.lib ++ Net_Dbg_CM3_L.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::wolfSSL ++ 1 ++ 0 ++ 0 ++ 1 ++ ++ 10 ++ 29 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\config-Crypt.h ++ config-Crypt.h ++ 1 ++ 0 ++ ++ ++ 10 ++ 30 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\config-CyaSSL.h ++ config-CyaSSL.h ++ 1 ++ 0 ++ ++ ++ 10 ++ 31 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\settings.h ++ settings.h ++ 1 ++ 0 ++ ++ ++ 10 ++ 32 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\cyassl_MDK_ARM.c ++ cyassl_MDK_ARM.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 33 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\aes.c ++ aes.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 34 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\arc4.c ++ arc4.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 35 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asm.c ++ asm.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 36 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asn.c ++ asn.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 37 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\blake2b.c ++ blake2b.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 38 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\camellia.c ++ camellia.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 39 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\coding.c ++ coding.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 40 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\compress.c ++ compress.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 41 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\des3.c ++ des3.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 42 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dh.c ++ dh.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 43 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dsa.c ++ dsa.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 44 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc.c ++ ecc.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 45 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc_fp.c ++ ecc_fp.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 46 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\error.c ++ error.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 47 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hc128.c ++ hc128.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 48 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hmac.c ++ hmac.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 49 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\integer.c ++ integer.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 50 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\logging.c ++ logging.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 51 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md2.c ++ md2.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 52 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md4.c ++ md4.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 53 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md5.c ++ md5.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 54 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\memory.c ++ memory.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 55 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\misc.c ++ misc.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 56 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\pwdbased.c ++ pwdbased.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 57 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rabbit.c ++ rabbit.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 58 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\random.c ++ random.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 59 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ripemd.c ++ ripemd.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 60 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rsa.c ++ rsa.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 61 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha.c ++ sha.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 62 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha256.c ++ sha256.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 63 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha512.c ++ sha512.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 64 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\tfm.c ++ tfm.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 65 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\wc_port.c ++ wc_port.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 66 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\crl.c ++ crl.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 67 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\internal.c ++ internal.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 68 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\io.c ++ io.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 69 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\keys.c ++ keys.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 70 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ocsp.c ++ ocsp.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 71 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\sniffer.c ++ sniffer.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 72 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ssl.c ++ ssl.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 73 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\tls.c ++ tls.c ++ 1 ++ 0 ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/EchoServer.uvprojx mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/EchoServer.uvprojx +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/EchoServer.uvprojx 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/EchoServer.uvprojx 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,1152 @@ ++ ++ ++ ++ 2.1 ++ ++
### uVision Project, (C) Keil Software
++ ++ ++ ++ EchoServer ++ 0x4 ++ ARM-ADS ++ ++ ++ STM32F207IG ++ STMicroelectronics ++ IRAM(0x20000000,0x20000) IROM(0x08000000,0x100000) CPUTYPE("Cortex-M3") CLOCK(120000000) ELITTLE ++ ++ ++ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm)) ++ 0 ++ $$Device:STM32F207IG$Device\Include\stm32f2xx.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ $$Device:STM32F207IG$SVD\STM32F20x.svd ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ .\Object\ ++ EchoServer ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ .\Object\ ++ 1 ++ 0 ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ 0 ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 3 ++ ++ ++ 1 ++ ++ ++ SARMCM3.DLL ++ -REMAP -MPU ++ DCM.DLL ++ -pCM3 ++ SARMCM3.DLL ++ -REMAP -MPU ++ TCM.DLL ++ -pCM3 ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 16 ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ ++ 0 ++ 8 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ .\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 4100 ++ ++ 1 ++ BIN\ULP2CM3.DLL ++ "" () ++ ++ ++ ++ ++ 0 ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ "Cortex-M3" ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 8 ++ 0 ++ 0 ++ 0 ++ 3 ++ 3 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ ++ ++ ++ 1 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ HAVE_CONFIG_H MDK_CONF_SimpleClient ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0x08000000 ++ 0x20000000 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Source ++ ++ ++ main.c ++ 1 ++ .\main.c ++ ++ ++ echoserver.c ++ 1 ++ .\echoserver.c ++ ++ ++ ++ ++ Configuration ++ ++ ++ config-CyaSSL.h ++ 5 ++ .\RTE\wolfSSL\config-CyaSSL.h ++ ++ ++ config-Crypt.h ++ 5 ++ .\RTE\wolfSSL\config-Crypt.h ++ ++ ++ Net_Config_ETH_0.h ++ 5 ++ .\RTE\Network\Net_Config_ETH_0.h ++ ++ ++ ++ ++ Documentation ++ ++ ++ Abstract.txt ++ 5 ++ .\Abstract.txt ++ ++ ++ ++ ++ Devices ++ ++ ++ time-dummy.c ++ 1 ++ .\time-dummy.c ++ ++ ++ ++ ++ ::CMSIS ++ ++ ++ RTX_Conf_CM.c ++ 1 ++ RTE\CMSIS\RTX_Conf_CM.c ++ ++ ++ RTX_CM3.lib ++ 4 ++ C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.4\CMSIS_RTX\Lib\ARM\RTX_CM3.lib ++ ++ ++ ++ ++ ::Device ++ ++ ++ RTE_Device.h ++ 5 ++ RTE\Device\STM32F207IG\RTE_Device.h ++ ++ ++ startup_stm32f2xx.s ++ 2 ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ ++ ++ system_stm32f2xx.c ++ 1 ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ ++ ++ DMA_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\DMA_STM32F2xx.c ++ ++ ++ GPIO_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\GPIO_STM32F2xx.c ++ ++ ++ ++ ++ ::Drivers ++ ++ ++ EMAC_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\EMAC_STM32F2xx.c ++ ++ ++ MCI_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\MCI_STM32F2xx.c ++ ++ ++ PHY_ST802RT1.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Driver\PHY_ST802RT1.c ++ ++ ++ ++ ++ ::File System ++ ++ ++ FS_Config.c ++ 1 ++ RTE\File_System\FS_Config.c ++ ++ ++ FS_Config_MC_0.h ++ 5 ++ RTE\File_System\FS_Config_MC_0.h ++ ++ ++ FS_LFN_CM3_L.lib ++ 4 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\FileSystem\Lib\ARM\FS_LFN_CM3_L.lib ++ ++ ++ ++ ++ ::Network ++ ++ ++ Net_Config.c ++ 1 ++ RTE\Network\Net_Config.c ++ ++ ++ Net_Config_BSD.h ++ 5 ++ RTE\Network\Net_Config_BSD.h ++ ++ ++ Net_Config_DNS_Client.h ++ 5 ++ RTE\Network\Net_Config_DNS_Client.h ++ ++ ++ Net_Config_ETH_0.h ++ 5 ++ RTE\Network\Net_Config_ETH_0.h ++ ++ ++ Net_Config_TCP.h ++ 5 ++ RTE\Network\Net_Config_TCP.h ++ ++ ++ Net_Config_UDP.h ++ 5 ++ RTE\Network\Net_Config_UDP.h ++ ++ ++ Net_Debug.c ++ 1 ++ RTE\Network\Net_Debug.c ++ ++ ++ Net_Dbg_CM3_L.lib ++ 4 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Lib\ARM\Net_Dbg_CM3_L.lib ++ ++ ++ ++ ++ ::wolfSSL ++ ++ ++ config-Crypt.h ++ 5 ++ RTE\wolfSSL\config-Crypt.h ++ ++ ++ config-CyaSSL.h ++ 5 ++ RTE\wolfSSL\config-CyaSSL.h ++ ++ ++ settings.h ++ 5 ++ RTE\wolfSSL\settings.h ++ ++ ++ cyassl_MDK_ARM.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\cyassl_MDK_ARM.c ++ ++ ++ aes.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\aes.c ++ ++ ++ arc4.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\arc4.c ++ ++ ++ asm.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asm.c ++ ++ ++ asn.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asn.c ++ ++ ++ blake2b.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\blake2b.c ++ ++ ++ camellia.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\camellia.c ++ ++ ++ coding.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\coding.c ++ ++ ++ compress.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\compress.c ++ ++ ++ des3.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\des3.c ++ ++ ++ dh.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dh.c ++ ++ ++ dsa.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dsa.c ++ ++ ++ ecc.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc.c ++ ++ ++ ecc_fp.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc_fp.c ++ ++ ++ error.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\error.c ++ ++ ++ hc128.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hc128.c ++ ++ ++ hmac.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hmac.c ++ ++ ++ integer.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\integer.c ++ ++ ++ logging.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\logging.c ++ ++ ++ md2.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md2.c ++ ++ ++ md4.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md4.c ++ ++ ++ md5.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md5.c ++ ++ ++ memory.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\memory.c ++ ++ ++ misc.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\misc.c ++ ++ ++ pwdbased.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\pwdbased.c ++ ++ ++ rabbit.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rabbit.c ++ ++ ++ random.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\random.c ++ ++ ++ ripemd.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ripemd.c ++ ++ ++ rsa.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rsa.c ++ ++ ++ sha.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha.c ++ ++ ++ sha256.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha256.c ++ ++ ++ sha512.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha512.c ++ ++ ++ tfm.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\tfm.c ++ ++ ++ wc_port.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\wc_port.c ++ ++ ++ crl.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\crl.c ++ ++ ++ internal.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\internal.c ++ ++ ++ io.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\io.c ++ ++ ++ keys.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\keys.c ++ ++ ++ ocsp.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ocsp.c ++ ++ ++ sniffer.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\sniffer.c ++ ++ ++ ssl.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ssl.c ++ ++ ++ tls.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\tls.c ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ RTE\CMSIS\RTX_Conf_CM.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\RTE_Device.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\File_System\FS_Config.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\File_System\FS_Config_MC_0.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_BSD.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_DNS_Client.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_ETH_0.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_TCP.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_UDP.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Debug.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Other\config-Crypt.h ++ ++ ++ ++ ++ ++ RTE\Other\config-CyaSSL.h ++ ++ ++ ++ ++ ++ RTE\Other\config-RTX-TCP-FS.h ++ ++ ++ ++ ++ ++ RTE\Other\config.h ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config-Crypt.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config-CyaSSL.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config.h ++ ++ ++ ++ ++ ++ RTE\wolfSSL\settings.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/RTE/wolfSSL/settings.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/RTE/wolfSSL/settings.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/RTE/wolfSSL/settings.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/RTE/wolfSSL/settings.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,627 @@ ++/* settings.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++/* Place OS specific preprocessor flags, defines, includes here, will be ++ included into every file because types.h includes it */ ++ ++ ++#ifndef CTAO_CRYPT_SETTINGS_H ++#define CTAO_CRYPT_SETTINGS_H ++ ++#ifdef __cplusplus ++ extern "C" { ++#endif ++ ++/* Uncomment next line if using IPHONE */ ++/* #define IPHONE */ ++ ++/* Uncomment next line if using ThreadX */ ++/* #define THREADX */ ++ ++/* Uncomment next line if using Micrium ucOS */ ++/* #define MICRIUM */ ++ ++/* Uncomment next line if using Mbed */ ++/* #define MBED */ ++ ++/* Uncomment next line if using Microchip PIC32 ethernet starter kit */ ++/* #define MICROCHIP_PIC32 */ ++ ++/* Uncomment next line if using Microchip TCP/IP stack, version 5 */ ++/* #define MICROCHIP_TCPIP_V5 */ ++ ++/* Uncomment next line if using Microchip TCP/IP stack, version 6 or later */ ++/* #define MICROCHIP_TCPIP */ ++ ++/* Uncomment next line if using FreeRTOS */ ++/* #define FREERTOS */ ++ ++/* Uncomment next line if using FreeRTOS Windows Simulator */ ++/* #define FREERTOS_WINSIM */ ++ ++/* Uncomment next line if using RTIP */ ++/* #define EBSNET */ ++ ++/* Uncomment next line if using lwip */ ++/* #define CYASSL_LWIP */ ++ ++/* Uncomment next line if building CyaSSL for a game console */ ++/* #define CYASSL_GAME_BUILD */ ++ ++/* Uncomment next line if building CyaSSL for LSR */ ++/* #define CYASSL_LSR */ ++ ++/* Uncomment next line if building CyaSSL for Freescale MQX/RTCS/MFS */ ++/* #define FREESCALE_MQX */ ++ ++/* Uncomment next line if using STM32F2 */ ++/* #define CYASSL_STM32F2 */ ++ ++/* Uncomment next line if using Comverge settings */ ++/* #define COMVERGE */ ++ ++/* Uncomment next line if using QL SEP settings */ ++/* #define CYASSL_QL */ ++ ++ ++#include ++ ++#ifdef IPHONE ++ #define SIZEOF_LONG_LONG 8 ++#endif ++ ++ ++#ifdef COMVERGE ++ #define THREADX ++ #define HAVE_NETX ++ #define CYASSL_USER_IO ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_FILESYSTEM ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++ #define NO_RSA ++ #define NO_SESSION_CACHE ++ #define HAVE_ECC ++#endif ++ ++ ++#ifdef THREADX ++ #define SIZEOF_LONG_LONG 8 ++#endif ++ ++#ifdef HAVE_NETX ++ #include "nx_api.h" ++#endif ++ ++#ifdef MICROCHIP_PIC32 ++ #define SIZEOF_LONG_LONG 8 ++ #define SINGLE_THREADED ++ #define CYASSL_USER_IO ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_FILESYSTEM ++ #define USE_FAST_MATH ++ #define TFM_TIMING_RESISTANT ++#endif ++ ++#ifdef MICROCHIP_TCPIP_V5 ++ /* include timer functions */ ++ #include "TCPIP Stack/TCPIP.h" ++#endif ++ ++#ifdef MICROCHIP_TCPIP ++ /* include timer, NTP functions */ ++ #include "system/system_services.h" ++ #ifdef MICROCHIP_MPLAB_HARMONY ++ #include "tcpip/tcpip.h" ++ #else ++ #include "tcpip/sntp.h" ++ #endif ++#endif ++ ++#ifdef MBED ++ #define SINGLE_THREADED ++ #define CYASSL_USER_IO ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++#endif /* MBED */ ++ ++#ifdef CYASSL_TYTO ++ #include "rand.h" ++ #define FREERTOS ++ #define NO_FILESYSTEM ++ #define CYASSL_USER_IO ++ #define NO_DEV_RANDOM ++ #define HAVE_ECC ++ #define HAVE_ECC_ENCRYPT ++ #define ECC_SHAMIR ++ #define HAVE_HKDF ++ #define USE_FAST_MATH ++ #define TFM_TIMING_RESISTANT ++ #define FP_MAX_BITS 512 ++ #define NO_OLD_TLS ++ #define NO_MD4 ++ #define NO_RABBIT ++ #define NO_HC128 ++ #define NO_RSA ++ #define NO_DSA ++ #define NO_PWDBASED ++ #define NO_PSK ++#endif ++ ++#ifdef FREERTOS_WINSIM ++ #define FREERTOS ++ #define USE_WINDOWS_API ++#endif ++ ++ ++/* Micrium will use Visual Studio for compilation but not the Win32 API */ ++#if defined(_WIN32) && !defined(MICRIUM) && !defined(FREERTOS) \ ++ && !defined(EBSNET) ++ #define USE_WINDOWS_API ++#endif ++ ++ ++#if defined(CYASSL_LEANPSK) && !defined(XMALLOC_USER) ++ #include ++ #define XMALLOC(s, h, type) malloc((s)) ++ #define XFREE(p, h, type) free((p)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++#endif ++ ++#if defined(XMALLOC_USER) && defined(SSN_BUILDING_LIBYASSL) ++ #undef XMALLOC ++ #define XMALLOC yaXMALLOC ++ #undef XFREE ++ #define XFREE yaXFREE ++ #undef XREALLOC ++ #define XREALLOC yaXREALLOC ++#endif ++ ++ ++#ifdef FREERTOS ++ #ifndef NO_WRITEV ++ #define NO_WRITEV ++ #endif ++ #ifndef NO_SHA512 ++ #define NO_SHA512 ++ #endif ++ #ifndef NO_DH ++ #define NO_DH ++ #endif ++ #ifndef NO_DSA ++ #define NO_DSA ++ #endif ++ #ifndef NO_HC128 ++ #define NO_HC128 ++ #endif ++ ++ #ifndef SINGLE_THREADED ++ #include "FreeRTOS.h" ++ #include "semphr.h" ++ #endif ++#endif ++ ++#ifdef EBSNET ++ #include "rtip.h" ++ ++ /* #define DEBUG_CYASSL */ ++ #define NO_CYASSL_DIR /* tbd */ ++ ++ #if (POLLOS) ++ #define SINGLE_THREADED ++ #endif ++ ++ #if (RTPLATFORM) ++ #if (!RTP_LITTLE_ENDIAN) ++ #define BIG_ENDIAN_ORDER ++ #endif ++ #else ++ #if (!KS_LITTLE_ENDIAN) ++ #define BIG_ENDIAN_ORDER ++ #endif ++ #endif ++ ++ #if (WINMSP3) ++ #undef SIZEOF_LONG ++ #define SIZEOF_LONG_LONG 8 ++ #else ++ #sslpro: settings.h - please implement SIZEOF_LONG and SIZEOF_LONG_LONG ++ #endif ++ ++ #define XMALLOC(s, h, type) ((void *)rtp_malloc((s), SSL_PRO_MALLOC)) ++ #define XFREE(p, h, type) (rtp_free(p)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++ ++#endif /* EBSNET */ ++ ++#ifdef CYASSL_GAME_BUILD ++ #define SIZEOF_LONG_LONG 8 ++ #if defined(__PPU) || defined(__XENON) ++ #define BIG_ENDIAN_ORDER ++ #endif ++#endif ++ ++#ifdef CYASSL_LSR ++ #define HAVE_WEBSERVER ++ #define SIZEOF_LONG_LONG 8 ++ #define CYASSL_LOW_MEMORY ++ #define NO_WRITEV ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++ #define NO_DEV_RANDOM ++ #define NO_CYASSL_DIR ++ #define NO_RABBIT ++ #ifndef NO_FILESYSTEM ++ #define LSR_FS ++ #include "inc/hw_types.h" ++ #include "fs.h" ++ #endif ++ #define CYASSL_LWIP ++ #include /* for tcp errno */ ++ #define CYASSL_SAFERTOS ++ #if defined(__IAR_SYSTEMS_ICC__) ++ /* enum uses enum */ ++ #pragma diag_suppress=Pa089 ++ #endif ++#endif ++ ++#ifdef CYASSL_SAFERTOS ++ #ifndef SINGLE_THREADED ++ #include "SafeRTOS/semphr.h" ++ #endif ++ ++ #include "SafeRTOS/heap.h" ++ #define XMALLOC(s, h, type) pvPortMalloc((s)) ++ #define XFREE(p, h, type) vPortFree((p)) ++ #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n)) ++#endif ++ ++#ifdef CYASSL_LOW_MEMORY ++ #undef RSA_LOW_MEM ++ #define RSA_LOW_MEM ++ #undef CYASSL_SMALL_STACK ++ #define CYASSL_SMALL_STACK ++ #undef TFM_TIMING_RESISTANT ++ #define TFM_TIMING_RESISTANT ++#endif ++ ++#ifdef FREESCALE_MQX ++ #define SIZEOF_LONG_LONG 8 ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_RABBIT ++ #define NO_CYASSL_DIR ++ #define USE_FAST_MATH ++ #define TFM_TIMING_RESISTANT ++ #define FREESCALE_K70_RNGA ++ /* #define FREESCALE_K53_RNGB */ ++ #include "mqx.h" ++ #ifndef NO_FILESYSTEM ++ #include "mfs.h" ++ #include "fio.h" ++ #endif ++ #ifndef SINGLE_THREADED ++ #include "mutex.h" ++ #endif ++ ++ #define XMALLOC(s, h, t) (void *)_mem_alloc_system((s)) ++ #define XFREE(p, h, t) {void* xp = (p); if ((xp)) _mem_free((xp));} ++ /* Note: MQX has no realloc, using fastmath above */ ++#endif ++ ++#ifdef CYASSL_STM32F2 ++ #define SIZEOF_LONG_LONG 8 ++ #define NO_DEV_RANDOM ++ #define NO_CYASSL_DIR ++ #define NO_RABBIT ++ #define STM32F2_RNG ++ #define STM32F2_CRYPTO ++ #define KEIL_INTRINSICS ++#endif ++ ++#ifdef MICRIUM ++ ++ #include "stdlib.h" ++ #include "net_cfg.h" ++ #include "ssl_cfg.h" ++ #include "net_secure_os.h" ++ ++ #define CYASSL_TYPES ++ ++ typedef CPU_INT08U byte; ++ typedef CPU_INT16U word16; ++ typedef CPU_INT32U word32; ++ ++ #if (NET_SECURE_MGR_CFG_WORD_SIZE == CPU_WORD_SIZE_32) ++ #define SIZEOF_LONG 4 ++ #undef SIZEOF_LONG_LONG ++ #else ++ #undef SIZEOF_LONG ++ #define SIZEOF_LONG_LONG 8 ++ #endif ++ ++ #define STRING_USER ++ ++ #define XSTRLEN(pstr) ((CPU_SIZE_T)Str_Len((CPU_CHAR *)(pstr))) ++ #define XSTRNCPY(pstr_dest, pstr_src, len_max) \ ++ ((CPU_CHAR *)Str_Copy_N((CPU_CHAR *)(pstr_dest), \ ++ (CPU_CHAR *)(pstr_src), (CPU_SIZE_T)(len_max))) ++ #define XSTRNCMP(pstr_1, pstr_2, len_max) \ ++ ((CPU_INT16S)Str_Cmp_N((CPU_CHAR *)(pstr_1), \ ++ (CPU_CHAR *)(pstr_2), (CPU_SIZE_T)(len_max))) ++ #define XSTRSTR(pstr, pstr_srch) \ ++ ((CPU_CHAR *)Str_Str((CPU_CHAR *)(pstr), \ ++ (CPU_CHAR *)(pstr_srch))) ++ #define XMEMSET(pmem, data_val, size) \ ++ ((void)Mem_Set((void *)(pmem), (CPU_INT08U) (data_val), \ ++ (CPU_SIZE_T)(size))) ++ #define XMEMCPY(pdest, psrc, size) ((void)Mem_Copy((void *)(pdest), \ ++ (void *)(psrc), (CPU_SIZE_T)(size))) ++ #define XMEMCMP(pmem_1, pmem_2, size) \ ++ (((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), (void *)(pmem_2), \ ++ (CPU_SIZE_T)(size))) ? DEF_NO : DEF_YES) ++ #define XMEMMOVE XMEMCPY ++ ++#if (NET_SECURE_MGR_CFG_EN == DEF_ENABLED) ++ #define MICRIUM_MALLOC ++ #define XMALLOC(s, h, type) ((void *)NetSecure_BlkGet((CPU_INT08U)(type), \ ++ (CPU_SIZE_T)(s), (void *)0)) ++ #define XFREE(p, h, type) (NetSecure_BlkFree((CPU_INT08U)(type), \ ++ (p), (void *)0)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++#endif ++ ++ #if (NET_SECURE_MGR_CFG_FS_EN == DEF_ENABLED) ++ #undef NO_FILESYSTEM ++ #else ++ #define NO_FILESYSTEM ++ #endif ++ ++ #if (SSL_CFG_TRACE_LEVEL == CYASSL_TRACE_LEVEL_DBG) ++ #define DEBUG_CYASSL ++ #else ++ #undef DEBUG_CYASSL ++ #endif ++ ++ #if (SSL_CFG_OPENSSL_EN == DEF_ENABLED) ++ #define OPENSSL_EXTRA ++ #else ++ #undef OPENSSL_EXTRA ++ #endif ++ ++ #if (SSL_CFG_MULTI_THREAD_EN == DEF_ENABLED) ++ #undef SINGLE_THREADED ++ #else ++ #define SINGLE_THREADED ++ #endif ++ ++ #if (SSL_CFG_DH_EN == DEF_ENABLED) ++ #undef NO_DH ++ #else ++ #define NO_DH ++ #endif ++ ++ #if (SSL_CFG_DSA_EN == DEF_ENABLED) ++ #undef NO_DSA ++ #else ++ #define NO_DSA ++ #endif ++ ++ #if (SSL_CFG_PSK_EN == DEF_ENABLED) ++ #undef NO_PSK ++ #else ++ #define NO_PSK ++ #endif ++ ++ #if (SSL_CFG_3DES_EN == DEF_ENABLED) ++ #undef NO_DES ++ #else ++ #define NO_DES ++ #endif ++ ++ #if (SSL_CFG_AES_EN == DEF_ENABLED) ++ #undef NO_AES ++ #else ++ #define NO_AES ++ #endif ++ ++ #if (SSL_CFG_RC4_EN == DEF_ENABLED) ++ #undef NO_RC4 ++ #else ++ #define NO_RC4 ++ #endif ++ ++ #if (SSL_CFG_RABBIT_EN == DEF_ENABLED) ++ #undef NO_RABBIT ++ #else ++ #define NO_RABBIT ++ #endif ++ ++ #if (SSL_CFG_HC128_EN == DEF_ENABLED) ++ #undef NO_HC128 ++ #else ++ #define NO_HC128 ++ #endif ++ ++ #if (CPU_CFG_ENDIAN_TYPE == CPU_ENDIAN_TYPE_BIG) ++ #define BIG_ENDIAN_ORDER ++ #else ++ #undef BIG_ENDIAN_ORDER ++ #define LITTLE_ENDIAN_ORDER ++ #endif ++ ++ #if (SSL_CFG_MD4_EN == DEF_ENABLED) ++ #undef NO_MD4 ++ #else ++ #define NO_MD4 ++ #endif ++ ++ #if (SSL_CFG_WRITEV_EN == DEF_ENABLED) ++ #undef NO_WRITEV ++ #else ++ #define NO_WRITEV ++ #endif ++ ++ #if (SSL_CFG_USER_RNG_SEED_EN == DEF_ENABLED) ++ #define NO_DEV_RANDOM ++ #else ++ #undef NO_DEV_RANDOM ++ #endif ++ ++ #if (SSL_CFG_USER_IO_EN == DEF_ENABLED) ++ #define CYASSL_USER_IO ++ #else ++ #undef CYASSL_USER_IO ++ #endif ++ ++ #if (SSL_CFG_DYNAMIC_BUFFERS_EN == DEF_ENABLED) ++ #undef LARGE_STATIC_BUFFERS ++ #undef STATIC_CHUNKS_ONLY ++ #else ++ #define LARGE_STATIC_BUFFERS ++ #define STATIC_CHUNKS_ONLY ++ #endif ++ ++ #if (SSL_CFG_DER_LOAD_EN == DEF_ENABLED) ++ #define CYASSL_DER_LOAD ++ #else ++ #undef CYASSL_DER_LOAD ++ #endif ++ ++ #if (SSL_CFG_DTLS_EN == DEF_ENABLED) ++ #define CYASSL_DTLS ++ #else ++ #undef CYASSL_DTLS ++ #endif ++ ++ #if (SSL_CFG_CALLBACKS_EN == DEF_ENABLED) ++ #define CYASSL_CALLBACKS ++ #else ++ #undef CYASSL_CALLBACKS ++ #endif ++ ++ #if (SSL_CFG_FAST_MATH_EN == DEF_ENABLED) ++ #define USE_FAST_MATH ++ #else ++ #undef USE_FAST_MATH ++ #endif ++ ++ #if (SSL_CFG_TFM_TIMING_RESISTANT_EN == DEF_ENABLED) ++ #define TFM_TIMING_RESISTANT ++ #else ++ #undef TFM_TIMING_RESISTANT ++ #endif ++ ++#endif /* MICRIUM */ ++ ++ ++#ifdef CYASSL_QL ++ #ifndef CYASSL_SEP ++ #define CYASSL_SEP ++ #endif ++ #ifndef OPENSSL_EXTRA ++ #define OPENSSL_EXTRA ++ #endif ++ #ifndef SESSION_CERTS ++ #define SESSION_CERTS ++ #endif ++ #ifndef HAVE_AESCCM ++ #define HAVE_AESCCM ++ #endif ++ #ifndef ATOMIC_USER ++ #define ATOMIC_USER ++ #endif ++ #ifndef CYASSL_DER_LOAD ++ #define CYASSL_DER_LOAD ++ #endif ++ #ifndef KEEP_PEER_CERT ++ #define KEEP_PEER_CERT ++ #endif ++ #ifndef HAVE_ECC ++ #define HAVE_ECC ++ #endif ++ #ifndef SESSION_INDEX ++ #define SESSION_INDEX ++ #endif ++#endif /* CYASSL_QL */ ++ ++ ++#if !defined(XMALLOC_USER) && !defined(MICRIUM_MALLOC) && \ ++ !defined(CYASSL_LEANPSK) && !defined(NO_CYASSL_MEMORY) ++ #define USE_CYASSL_MEMORY ++#endif ++ ++ ++#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) ++ #undef KEEP_PEER_CERT ++ #define KEEP_PEER_CERT ++#endif ++ ++ ++/* stream ciphers except arc4 need 32bit alignment, intel ok without */ ++#ifndef XSTREAM_ALIGNMENT ++ #if defined(__x86_64__) || defined(__ia64__) || defined(__i386__) ++ #define NO_XSTREAM_ALIGNMENT ++ #else ++ #define XSTREAM_ALIGNMENT ++ #endif ++#endif ++ ++ ++/* if using hardware crypto and have alignment requirements, specify the ++ requirement here. The record header of SSL/TLS will prvent easy alignment. ++ This hint tries to help as much as possible. */ ++#ifndef CYASSL_GENERAL_ALIGNMENT ++ #ifdef CYASSL_AESNI ++ #define CYASSL_GENERAL_ALIGNMENT 16 ++ #elif defined(XSTREAM_ALIGNMENT) ++ #define CYASSL_GENERAL_ALIGNMENT 4 ++ #else ++ #define CYASSL_GENERAL_ALIGNMENT 0 ++ #endif ++#endif ++ ++#ifdef HAVE_CRL ++ /* not widely supported yet */ ++ #undef NO_SKID ++ #define NO_SKID ++#endif ++ ++/* Place any other flags or defines here */ ++ ++ ++#ifdef __cplusplus ++ } /* extern "C" */ ++#endif ++ ++ ++#endif /* CTAO_CRYPT_SETTINGS_H */ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/echoserver.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/echoserver.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/echoserver.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/echoserver.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,368 @@ ++/* echoserver.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++ ++#if defined(CYASSL_MDK_ARM) ++ #include ++ #include ++ ++ #if defined(CYASSL_MDK5) ++ #include "cmsis_os.h" ++ #include "rl_fs.h" ++ #include "rl_net.h" ++ #else ++ #include "rtl.h" ++ #endif ++ ++ #include "cyassl_MDK_ARM.h" ++#endif ++ ++#include ++#include ++ ++#ifndef NO_MAIN_DRIVER ++ #define ECHO_OUT ++#endif ++ ++#include "examples/echoserver/echoserver.h" ++ ++ ++#ifdef SESSION_STATS ++ CYASSL_API void PrintSessionStats(void); ++#endif ++ ++#define SVR_COMMAND_SIZE 256 ++ ++static void SignalReady(void* args, word16 port) ++{ ++#if defined(_POSIX_THREADS) && defined(NO_MAIN_DRIVER) && !defined(__MINGW32__) ++ /* signal ready to tcp_accept */ ++ func_args* server_args = (func_args*)args; ++ tcp_ready* ready = server_args->signal; ++ pthread_mutex_lock(&ready->mutex); ++ ready->ready = 1; ++ ready->port = port; ++ pthread_cond_signal(&ready->cond); ++ pthread_mutex_unlock(&ready->mutex); ++#endif ++ (void)args; ++ (void)port; ++} ++ ++ ++THREAD_RETURN CYASSL_THREAD echoserver_test(void* args) ++{ ++ SOCKET_T sockfd = 0; ++ CYASSL_METHOD* method = 0; ++ CYASSL_CTX* ctx = 0; ++ ++ int doDTLS = 0; ++ int doPSK = 0; ++ int outCreated = 0; ++ int shutDown = 0; ++ int useAnyAddr = 0; ++ word16 port = yasslPort; ++ int argc = ((func_args*)args)->argc; ++ char** argv = ((func_args*)args)->argv; ++ ++#ifdef ECHO_OUT ++ FILE* fout = stdout; ++ if (argc >= 2) { ++ fout = fopen(argv[1], "w"); ++ outCreated = 1; ++ } ++ if (!fout) err_sys("can't open output file"); ++#endif ++ (void)outCreated; ++ (void)argc; ++ (void)argv; ++ ++ ((func_args*)args)->return_code = -1; /* error state */ ++ ++#ifdef CYASSL_DTLS ++ doDTLS = 1; ++#endif ++ ++#ifdef CYASSL_LEANPSK ++ doPSK = 1; ++#endif ++ ++#if defined(NO_RSA) && !defined(HAVE_ECC) ++ doPSK = 1; ++#endif ++ ++ #if defined(NO_MAIN_DRIVER) && !defined(USE_WINDOWS_API) && \ ++ !defined(CYASSL_SNIFFER) && !defined(CYASSL_MDK_ARM) ++ port = 0; ++ #endif ++ #if defined(USE_ANY_ADDR) ++ useAnyAddr = 1; ++ #endif ++ tcp_listen(&sockfd, &port, useAnyAddr, doDTLS); ++ ++#if defined(CYASSL_DTLS) ++ method = CyaDTLSv1_server_method(); ++#elif !defined(NO_TLS) ++ method = CyaSSLv23_server_method(); ++#else ++ method = wolfSSLv3_server_method(); ++#endif ++ ctx = CyaSSL_CTX_new(method); ++ /* CyaSSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF); */ ++ ++#if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) ++ CyaSSL_CTX_set_default_passwd_cb(ctx, PasswordCallBack); ++#endif ++ ++#ifndef NO_FILESYSTEM ++ if (doPSK == 0) { ++ #ifdef HAVE_NTRU ++ /* ntru */ ++ if (CyaSSL_CTX_use_certificate_file(ctx, ntruCert, SSL_FILETYPE_PEM) ++ != SSL_SUCCESS) ++ err_sys("can't load ntru cert file, " ++ "Please run from CyaSSL home dir"); ++ ++ if (CyaSSL_CTX_use_NTRUPrivateKey_file(ctx, ntruKey) ++ != SSL_SUCCESS) ++ err_sys("can't load ntru key file, " ++ "Please run from CyaSSL home dir"); ++ #elif defined(HAVE_ECC) ++ /* ecc */ ++ if (CyaSSL_CTX_use_certificate_file(ctx, eccCert, SSL_FILETYPE_PEM) ++ != SSL_SUCCESS) ++ err_sys("can't load server cert file, " ++ "Please run from CyaSSL home dir"); ++ ++ if (CyaSSL_CTX_use_PrivateKey_file(ctx, eccKey, SSL_FILETYPE_PEM) ++ != SSL_SUCCESS) ++ err_sys("can't load server key file, " ++ "Please run from CyaSSL home dir"); ++ #elif defined(NO_CERTS) ++ /* do nothing, just don't load cert files */ ++ #else ++ /* normal */ ++ if (CyaSSL_CTX_use_certificate_file(ctx, svrCert, SSL_FILETYPE_PEM) ++ != SSL_SUCCESS) ++ err_sys("can't load server cert file, " ++ "Please run from CyaSSL home dir"); ++ ++ if (CyaSSL_CTX_use_PrivateKey_file(ctx, svrKey, SSL_FILETYPE_PEM) ++ != SSL_SUCCESS) ++ err_sys("can't load server key file, " ++ "Please run from CyaSSL home dir"); ++ #endif ++ } /* doPSK */ ++#elif !defined(NO_CERTS) ++ if (!doPSK) { ++ load_buffer(ctx, svrCert, CYASSL_CERT); ++ load_buffer(ctx, svrKey, CYASSL_KEY); ++ } ++#endif ++ ++#if defined(CYASSL_SNIFFER) && !defined(HAVE_NTRU) && !defined(HAVE_ECC) ++ /* don't use EDH, can't sniff tmp keys */ ++ CyaSSL_CTX_set_cipher_list(ctx, "AES256-SHA"); ++#endif ++ ++ if (doPSK) { ++#ifndef NO_PSK ++ const char *defaultCipherList; ++ ++ CyaSSL_CTX_set_psk_server_callback(ctx, my_psk_server_cb); ++ CyaSSL_CTX_use_psk_identity_hint(ctx, "cyassl server"); ++ #ifdef HAVE_NULL_CIPHER ++ defaultCipherList = "PSK-NULL-SHA256"; ++ #else ++ defaultCipherList = "PSK-AES128-CBC-SHA256"; ++ #endif ++ if (CyaSSL_CTX_set_cipher_list(ctx, defaultCipherList) != SSL_SUCCESS) ++ err_sys("server can't set cipher list 2"); ++#endif ++ } ++ ++ SignalReady(args, port); ++ ++ while (!shutDown) { ++ CYASSL* ssl = 0; ++ char command[SVR_COMMAND_SIZE+1]; ++ int echoSz = 0; ++ int clientfd; ++ int firstRead = 1; ++ int gotFirstG = 0; ++ ++#ifndef CYASSL_DTLS ++ SOCKADDR_IN_T client; ++ socklen_t client_len = sizeof(client); ++ clientfd = accept(sockfd, (struct sockaddr*)&client, ++ (ACCEPT_THIRD_T)&client_len); ++#else ++ clientfd = udp_read_connect(sockfd); ++#endif ++ if (clientfd == -1) err_sys("tcp accept failed"); ++ ++ ssl = CyaSSL_new(ctx); ++ if (ssl == NULL) err_sys("SSL_new failed"); ++ CyaSSL_set_fd(ssl, clientfd); ++ #if !defined(NO_FILESYSTEM) && !defined(NO_DH) ++ CyaSSL_SetTmpDH_file(ssl, dhParam, SSL_FILETYPE_PEM); ++ #elif !defined(NO_DH) ++ SetDH(ssl); /* will repick suites with DHE, higher than PSK */ ++ #endif ++ if (CyaSSL_accept(ssl) != SSL_SUCCESS) { ++ printf("SSL_accept failed\n"); ++ CyaSSL_free(ssl); ++ CloseSocket(clientfd); ++ continue; ++ } ++#if defined(PEER_INFO) ++ showPeer(ssl); ++#endif ++ ++ while ( (echoSz = CyaSSL_read(ssl, command, sizeof(command)-1)) > 0) { ++ ++ if (firstRead == 1) { ++ firstRead = 0; /* browser may send 1 byte 'G' to start */ ++ if (echoSz == 1 && command[0] == 'G') { ++ gotFirstG = 1; ++ continue; ++ } ++ } ++ else if (gotFirstG == 1 && strncmp(command, "ET /", 4) == 0) { ++ strncpy(command, "GET", 4); ++ /* fall through to normal GET */ ++ } ++ ++ if ( strncmp(command, "quit", 4) == 0) { ++ printf("client sent quit command: shutting down!\n"); ++ shutDown = 1; ++ break; ++ } ++ if ( strncmp(command, "break", 5) == 0) { ++ printf("client sent break command: closing session!\n"); ++ break; ++ } ++#ifdef SESSION_STATS ++ if ( strncmp(command, "printstats", 10) == 0) { ++ PrintSessionStats(); ++ break; ++ } ++#endif ++ if ( strncmp(command, "GET", 3) == 0) { ++ char type[] = "HTTP/1.0 200 ok\r\nContent-type:" ++ " text/html\r\n\r\n"; ++ char header[] = "\n
\n";
++                char body[]   = "greetings from CyaSSL\n";
++                char footer[] = "\r\n\r\n";
++            
++                strncpy(command, type, sizeof(type));
++                echoSz = sizeof(type) - 1;
++
++                strncpy(&command[echoSz], header, sizeof(header));
++                echoSz += (int)sizeof(header) - 1;
++                strncpy(&command[echoSz], body, sizeof(body));
++                echoSz += (int)sizeof(body) - 1;
++                strncpy(&command[echoSz], footer, sizeof(footer));
++                echoSz += (int)sizeof(footer);
++
++                if (CyaSSL_write(ssl, command, echoSz) != echoSz)
++                    err_sys("SSL_write failed");
++                break;
++            }
++            command[echoSz] = 0;
++
++            #ifdef ECHO_OUT
++                fputs(command, fout);
++            #endif
++
++            if (CyaSSL_write(ssl, command, echoSz) != echoSz)
++                err_sys("SSL_write failed");
++        }
++#ifndef CYASSL_DTLS
++        CyaSSL_shutdown(ssl);
++#endif
++        CyaSSL_free(ssl);
++        CloseSocket(clientfd);
++#ifdef CYASSL_DTLS
++        tcp_listen(&sockfd, &port, useAnyAddr, doDTLS);
++        SignalReady(args, port);
++#endif
++    }
++
++    CloseSocket(sockfd);
++    CyaSSL_CTX_free(ctx);
++
++#ifdef ECHO_OUT
++    if (outCreated)
++        fclose(fout);
++#endif
++
++    ((func_args*)args)->return_code = 0;
++    return 0;
++}
++
++
++/* so overall tests can pull in test function */
++#ifndef NO_MAIN_DRIVER
++
++    int main(int argc, char** argv)
++    {
++        func_args args;
++
++#ifdef HAVE_CAVIUM
++        int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID);
++        if (ret != 0)
++            err_sys("Cavium OpenNitroxDevice failed");
++#endif /* HAVE_CAVIUM */
++
++        StartTCP();
++
++        args.argc = argc;
++        args.argv = argv;
++
++        CyaSSL_Init();
++#if defined(DEBUG_CYASSL) && !defined(CYASSL_MDK_SHELL)
++        CyaSSL_Debugging_ON();
++#endif
++        if (CurrentDir("echoserver"))
++            ChangeDirBack(2);
++        else if (CurrentDir("Debug") || CurrentDir("Release"))
++            ChangeDirBack(3);
++        echoserver_test(&args);
++        CyaSSL_Cleanup();
++
++#ifdef HAVE_CAVIUM
++        CspShutdown(CAVIUM_DEV_ID);
++#endif
++        return args.return_code;
++    }
++
++        
++#endif /* NO_MAIN_DRIVER */
++
++
++
++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/main.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/main.c
+--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/main.c	1969-12-31 17:00:00.000000000 -0700
++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/main.c	2015-02-15 14:28:52.000000000 -0700
+@@ -0,0 +1,98 @@
++/* main.c
++ *
++ * Copyright (C) 2006-2015 wolfSSL Inc.
++ *
++ * This file is part of wolfSSL. (formerly known as CyaSSL)
++ *
++ * wolfSSL is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * wolfSSL is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
++ */
++ 
++#ifdef HAVE_CONFIG_H
++    #include 
++#endif
++
++#include 
++#include 
++
++#include "cmsis_os.h"
++#include "rl_fs.h" 
++#include "rl_net.h" 
++#include 
++#include "cyassl_MDK_ARM.h"
++#include 
++
++/*-----------------------------------------------------------------------------
++ *        Initialize a Flash Memory Card
++ *----------------------------------------------------------------------------*/
++static void init_filesystem (void) {
++    int32_t retv;
++
++    retv = finit ("M0:");
++    if (retv == 0) {
++        retv = fmount ("M0:");
++        if (retv == 0) {
++            printf ("Drive M0 ready!\n");
++        }
++        else {
++          printf ("Drive M0 mount failed!\n");
++        }
++    } else {
++        printf ("Drive M0 initialization failed!\n");
++    }
++}
++
++/*-----------------------------------------------------------------------------
++ *        TCP/IP tasks
++ *----------------------------------------------------------------------------*/
++void tcp_poll (void const *arg)
++{
++    CYASSL_MSG("TCP polling started.\n") ;
++    while (1) {
++        net_main ();
++        osDelay(1) ;
++    }
++}
++
++typedef struct func_args {
++    int    argc;
++    char** argv;
++} func_args;
++
++extern void echoserver_test(func_args * args) ;
++extern void init_time(void) ;
++
++    osThreadDef (tcp_poll, osPriorityHigh, 1, 0) ;
++/*-----------------------------------------------------------------------------
++ *       mian entry 
++ *----------------------------------------------------------------------------*/
++int myoptind = 0;
++char* myoptarg = NULL;
++
++int main() 
++{
++    func_args args = { 0 } ;
++    init_filesystem ();
++    net_initialize() ;
++    osThreadCreate (osThread (tcp_poll), NULL); 
++    osDelay(10000) ;  /* wait for DHCP */
++    #if defined(DEBUG_CYASSL)
++        printf("Turning ON Debug message\n") ;
++        CyaSSL_Debugging_ON() ;
++    #endif
++
++        printf("echoserver: Started\n") ;
++    echoserver_test(&args) ;
++    printf("echoserver: Terminated\n") ;
++}
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/time-dummy.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/time-dummy.c
+--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/time-dummy.c	1969-12-31 17:00:00.000000000 -0700
++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/EchoServer/time-dummy.c	2015-02-15 14:28:52.000000000 -0700
+@@ -0,0 +1,34 @@
++/* time-dummy.c.c
++ *
++ * Copyright (C) 2006-2015 wolfSSL Inc.
++ *
++ * This file is part of wolfSSL. (formerly known as CyaSSL)
++ *
++ * wolfSSL is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * wolfSSL is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
++ */
++ 
++#ifdef HAVE_CONFIG_H
++    #include 
++#endif
++
++#include "time.h"
++
++struct tm *Cyassl_MDK_gmtime(const time_t *c) 
++{ 
++    static struct tm date ; 
++    return(&date) ;
++}
++
++time_t time(time_t * t) { return 0 ; }
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/Abstract.txt mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/Abstract.txt
+--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/Abstract.txt	1969-12-31 17:00:00.000000000 -0700
++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/Abstract.txt	2015-02-15 14:28:52.000000000 -0700
+@@ -0,0 +1,23 @@
++This program is a simple client example with CyaSSL/wolfCrypt library.
++
++In order to run this program,
++Copy {PACK}\wolfSSL\CyaSSL\{version}\cyassl\certs folder and files to the SD memory.
++Set config-SimpleClient.h configuration file for the Callee IP or Port number.
++
++For further configuration, refer config-Crypt.h and config-CyaSSL.h.
++config-SimpleClient.h is to configure repote callee IP and port.
++
++When testing this client, it is recommended to test against one of the standard 
++CyaSSL example applications running on a desktop machine.  The standard CyaSSL 
++example applications are located in the CyaSSL root directory under the 
++/examples directory.
++
++For the hardware crypt on config-Crypt.h, download 
++STSW-STM32062: STM32F2xx standard peripherals library at 
++http://www.st.com/. Copy Libraries\STM32F2xx_StdPeriph_Driver\{inc,src} to 
++ {PACK}\cyassl\IDE\MDK5-ARM\STM32F2xx_StdPeriph_Lib
++
++
++Support
++-------
++Please send questions or comments to support@wolfssl.com
+\ No newline at end of file
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/RTE/wolfSSL/settings.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/RTE/wolfSSL/settings.h
+--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/RTE/wolfSSL/settings.h	1969-12-31 17:00:00.000000000 -0700
++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/RTE/wolfSSL/settings.h	2015-02-15 14:28:52.000000000 -0700
+@@ -0,0 +1,667 @@
++/* settings.h
++ *
++ * Copyright (C) 2006-2015 wolfSSL Inc.
++ *
++ * This file is part of wolfSSL. (formerly known as CyaSSL)
++ *
++ * wolfSSL is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * wolfSSL is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
++ */
++
++/* Place OS specific preprocessor flags, defines, includes here, will be
++   included into every file because types.h includes it */
++
++
++#ifndef CTAO_CRYPT_SETTINGS_H
++#define CTAO_CRYPT_SETTINGS_H
++
++#ifdef __cplusplus
++    extern "C" {
++#endif
++
++/* Uncomment next line if using IPHONE */
++/* #define IPHONE */
++
++/* Uncomment next line if using ThreadX */
++/* #define THREADX */
++
++/* Uncomment next line if using Micrium ucOS */
++/* #define MICRIUM */
++
++/* Uncomment next line if using Mbed */
++/* #define MBED */
++
++/* Uncomment next line if using Microchip PIC32 ethernet starter kit */
++/* #define MICROCHIP_PIC32 */
++
++/* Uncomment next line if using Microchip TCP/IP stack, version 5 */
++/* #define MICROCHIP_TCPIP_V5 */
++
++/* Uncomment next line if using Microchip TCP/IP stack, version 6 or later */
++/* #define MICROCHIP_TCPIP */
++
++/* Uncomment next line if using PIC32MZ Crypto Engine */
++/* #define CYASSL_MICROCHIP_PIC32MZ */
++        
++/* Uncomment next line if using FreeRTOS */
++/* #define FREERTOS */
++
++/* Uncomment next line if using FreeRTOS Windows Simulator */
++/* #define FREERTOS_WINSIM */
++
++/* Uncomment next line if using RTIP */
++/* #define EBSNET */
++
++/* Uncomment next line if using lwip */
++/* #define CYASSL_LWIP */
++
++/* Uncomment next line if building CyaSSL for a game console */
++/* #define CYASSL_GAME_BUILD */
++
++/* Uncomment next line if building CyaSSL for LSR */
++/* #define CYASSL_LSR */
++
++/* Uncomment next line if building CyaSSL for Freescale MQX/RTCS/MFS */
++/* #define FREESCALE_MQX */
++
++/* Uncomment next line if using STM32F2 */
++/* #define CYASSL_STM32F2 */
++
++/* Uncomment next line if using Comverge settings */
++/* #define COMVERGE */
++
++/* Uncomment next line if using QL SEP settings */
++/* #define CYASSL_QL */
++
++/* Uncomment next line if using LwIP native TCP socket settings */
++/* #define HAVE_LWIP_NATIVE */
++
++/* Uncomment next line if building for EROAD */
++/* #define CYASSL_EROAD */
++
++#include 
++
++#ifdef IPHONE
++    #define SIZEOF_LONG_LONG 8
++#endif
++
++
++#ifdef CYASSL_USER_SETTINGS
++    #include 
++#endif
++
++
++#ifdef COMVERGE
++    #define THREADX
++    #define HAVE_NETX
++    #define CYASSL_USER_IO
++    #define NO_WRITEV
++    #define NO_DEV_RANDOM
++    #define NO_FILESYSTEM
++    #define NO_SHA512
++    #define NO_DH
++    #define NO_DSA
++    #define NO_HC128
++    #define NO_RSA
++    #define NO_SESSION_CACHE
++    #define HAVE_ECC 
++#endif
++
++
++#ifdef THREADX 
++    #define SIZEOF_LONG_LONG 8
++#endif
++
++#ifdef HAVE_NETX
++    #include "nx_api.h"
++#endif
++
++#if defined(HAVE_LWIP_NATIVE) /* using LwIP native TCP socket */
++    #define CYASSL_LWIP
++    #define NO_WRITEV
++    #define SINGLE_THREADED
++    #define CYASSL_USER_IO
++    #define NO_FILESYSTEM
++#endif 
++
++#ifdef MICROCHIP_PIC32
++    /* #define CYASSL_MICROCHIP_PIC32MZ */
++    #define SIZEOF_LONG_LONG 8
++    #define SINGLE_THREADED
++    #define CYASSL_USER_IO
++    #define NO_WRITEV
++    #define NO_DEV_RANDOM
++    #define NO_FILESYSTEM
++    #define USE_FAST_MATH
++    #define TFM_TIMING_RESISTANT
++#endif
++
++#ifdef CYASSL_MICROCHIP_PIC32MZ
++    #define CYASSL_PIC32MZ_CE
++    #define CYASSL_PIC32MZ_CRYPT
++    #define HAVE_AES_ENGINE
++    #define CYASSL_PIC32MZ_RNG
++    /* #define CYASSL_PIC32MZ_HASH */
++    #define CYASSL_AES_COUNTER
++    #define HAVE_AESGCM
++    #define NO_BIG_INT
++
++#endif
++
++#ifdef MICROCHIP_TCPIP_V5
++    /* include timer functions */
++    #include "TCPIP Stack/TCPIP.h"
++#endif
++
++#ifdef MICROCHIP_TCPIP
++    /* include timer, NTP functions */
++    #ifdef MICROCHIP_MPLAB_HARMONY
++        #include "tcpip/tcpip.h"
++    #else
++        #include "system/system_services.h"
++        #include "tcpip/sntp.h"
++    #endif
++#endif
++
++#ifdef MBED
++    #define CYASSL_USER_IO
++    #define NO_FILESYSTEM
++    #define NO_CERT
++    #define USE_CERT_BUFFERS_1024
++    #define NO_WRITEV
++    #define NO_DEV_RANDOM
++    #define NO_SHA512
++    #define NO_DH
++    #define NO_DSA
++    #define NO_HC128
++    #define HAVE_ECC
++    #define NO_SESSION_CACHE
++    #define CYASSL_CMSIS_RTOS
++#endif
++
++
++#ifdef CYASSL_EROAD
++    #define FREESCALE_MQX
++    #define FREESCALE_MMCAU
++    #define SINGLE_THREADED
++    #define NO_STDIO_FILESYSTEM
++    #define CYASSL_LEANPSK
++    #define HAVE_NULL_CIPHER
++    #define NO_OLD_TLS
++    #define NO_ASN
++    #define NO_BIG_INT
++    #define NO_RSA
++    #define NO_DSA
++    #define NO_DH
++    #define NO_CERTS
++    #define NO_PWDBASED
++    #define NO_DES3
++    #define NO_MD4
++    #define NO_RC4
++    #define NO_MD5
++    #define NO_SESSION_CACHE
++    #define NO_MAIN_DRIVER
++#endif
++
++#ifdef FREERTOS_WINSIM
++    #define FREERTOS
++    #define USE_WINDOWS_API
++#endif
++
++
++/* Micrium will use Visual Studio for compilation but not the Win32 API */
++#if defined(_WIN32) && !defined(MICRIUM) && !defined(FREERTOS) \
++        && !defined(EBSNET) && !defined(CYASSL_EROAD)
++    #define USE_WINDOWS_API
++#endif
++
++
++#if defined(CYASSL_LEANPSK) && !defined(XMALLOC_USER)
++    #include 
++    #define XMALLOC(s, h, type)  malloc((s))
++    #define XFREE(p, h, type)    free((p)) 
++    #define XREALLOC(p, n, h, t) realloc((p), (n))
++#endif
++
++#if defined(XMALLOC_USER) && defined(SSN_BUILDING_LIBYASSL)
++    #undef  XMALLOC
++    #define XMALLOC     yaXMALLOC
++    #undef  XFREE
++    #define XFREE       yaXFREE
++    #undef  XREALLOC
++    #define XREALLOC    yaXREALLOC
++#endif
++
++
++#ifdef FREERTOS
++    #ifndef NO_WRITEV
++        #define NO_WRITEV
++    #endif
++    #ifndef NO_SHA512
++        #define NO_SHA512
++    #endif
++    #ifndef NO_DH
++        #define NO_DH
++    #endif
++    #ifndef NO_DSA
++        #define NO_DSA
++    #endif
++    #ifndef NO_HC128
++        #define NO_HC128
++    #endif
++
++    #ifndef SINGLE_THREADED
++        #include "FreeRTOS.h"
++        #include "semphr.h"
++    #endif
++#endif
++
++#ifdef EBSNET
++    #include "rtip.h"
++
++    /* #define DEBUG_CYASSL */
++    #define NO_CYASSL_DIR  /* tbd */
++
++    #if (POLLOS)
++        #define SINGLE_THREADED
++    #endif
++
++    #if (RTPLATFORM)
++        #if (!RTP_LITTLE_ENDIAN)
++            #define BIG_ENDIAN_ORDER
++        #endif
++    #else
++        #if (!KS_LITTLE_ENDIAN)
++            #define BIG_ENDIAN_ORDER
++        #endif
++    #endif
++
++    #if (WINMSP3)
++        #undef SIZEOF_LONG
++        #define SIZEOF_LONG_LONG 8
++    #else
++        #sslpro: settings.h - please implement SIZEOF_LONG and SIZEOF_LONG_LONG
++    #endif
++
++    #define XMALLOC(s, h, type) ((void *)rtp_malloc((s), SSL_PRO_MALLOC))
++    #define XFREE(p, h, type) (rtp_free(p))
++    #define XREALLOC(p, n, h, t) realloc((p), (n))
++
++#endif /* EBSNET */
++
++#ifdef CYASSL_GAME_BUILD
++    #define SIZEOF_LONG_LONG 8
++    #if defined(__PPU) || defined(__XENON)
++        #define BIG_ENDIAN_ORDER
++    #endif
++#endif
++
++#ifdef CYASSL_LSR
++    #define HAVE_WEBSERVER
++    #define SIZEOF_LONG_LONG 8
++    #define CYASSL_LOW_MEMORY
++    #define NO_WRITEV
++    #define NO_SHA512
++    #define NO_DH
++    #define NO_DSA
++    #define NO_HC128
++    #define NO_DEV_RANDOM
++    #define NO_CYASSL_DIR
++    #define NO_RABBIT
++    #ifndef NO_FILESYSTEM
++        #define LSR_FS
++        #include "inc/hw_types.h"
++        #include "fs.h"
++    #endif
++    #define CYASSL_LWIP
++    #include   /* for tcp errno */
++    #define CYASSL_SAFERTOS
++    #if defined(__IAR_SYSTEMS_ICC__)
++        /* enum uses enum */
++        #pragma diag_suppress=Pa089
++    #endif
++#endif
++
++#ifdef CYASSL_SAFERTOS
++    #ifndef SINGLE_THREADED
++        #include "SafeRTOS/semphr.h"
++    #endif
++
++    #include "SafeRTOS/heap.h"
++    #define XMALLOC(s, h, type)  pvPortMalloc((s))
++    #define XFREE(p, h, type)    vPortFree((p)) 
++    #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n))
++#endif
++
++#ifdef CYASSL_LOW_MEMORY
++    #undef  RSA_LOW_MEM
++    #define RSA_LOW_MEM
++    #undef  CYASSL_SMALL_STACK
++    #define CYASSL_SMALL_STACK
++    #undef  TFM_TIMING_RESISTANT
++    #define TFM_TIMING_RESISTANT
++#endif
++
++#ifdef FREESCALE_MQX
++    #define SIZEOF_LONG_LONG 8
++    #define NO_WRITEV
++    #define NO_DEV_RANDOM
++    #define NO_RABBIT
++    #define NO_CYASSL_DIR
++    #define USE_FAST_MATH
++    #define TFM_TIMING_RESISTANT
++    #define FREESCALE_K70_RNGA
++    /* #define FREESCALE_K53_RNGB */
++    #include "mqx.h"
++    #ifndef NO_FILESYSTEM
++        #include "mfs.h"
++        #include "fio.h"
++    #endif
++    #ifndef SINGLE_THREADED
++        #include "mutex.h"
++    #endif
++
++    #define XMALLOC(s, h, t)    (void *)_mem_alloc_system((s))
++    #define XFREE(p, h, t)      {void* xp = (p); if ((xp)) _mem_free((xp));}
++    /* Note: MQX has no realloc, using fastmath above */
++#endif
++
++#ifdef CYASSL_STM32F2
++    #define SIZEOF_LONG_LONG 8
++    #define NO_DEV_RANDOM
++    #define NO_CYASSL_DIR
++    #define NO_RABBIT
++    #define STM32F2_RNG
++    #define STM32F2_CRYPTO
++    #define KEIL_INTRINSICS
++#endif
++
++#ifdef MICRIUM
++
++    #include "stdlib.h"
++    #include "net_cfg.h"
++    #include "ssl_cfg.h"
++    #include "net_secure_os.h"
++
++    #define CYASSL_TYPES
++
++    typedef CPU_INT08U byte;
++    typedef CPU_INT16U word16;
++    typedef CPU_INT32U word32;
++
++    #if (NET_SECURE_MGR_CFG_WORD_SIZE == CPU_WORD_SIZE_32)
++        #define SIZEOF_LONG        4
++        #undef  SIZEOF_LONG_LONG
++    #else
++        #undef  SIZEOF_LONG
++        #define SIZEOF_LONG_LONG   8
++    #endif
++
++    #define STRING_USER
++
++    #define XSTRLEN(pstr) ((CPU_SIZE_T)Str_Len((CPU_CHAR *)(pstr)))
++    #define XSTRNCPY(pstr_dest, pstr_src, len_max) \
++                    ((CPU_CHAR *)Str_Copy_N((CPU_CHAR *)(pstr_dest), \
++                     (CPU_CHAR *)(pstr_src), (CPU_SIZE_T)(len_max)))
++    #define XSTRNCMP(pstr_1, pstr_2, len_max) \
++                    ((CPU_INT16S)Str_Cmp_N((CPU_CHAR *)(pstr_1), \
++                     (CPU_CHAR *)(pstr_2), (CPU_SIZE_T)(len_max)))  
++    #define XSTRSTR(pstr, pstr_srch) \
++                    ((CPU_CHAR *)Str_Str((CPU_CHAR *)(pstr), \
++                     (CPU_CHAR *)(pstr_srch)))
++    #define XMEMSET(pmem, data_val, size) \
++                    ((void)Mem_Set((void *)(pmem), (CPU_INT08U) (data_val), \
++                    (CPU_SIZE_T)(size)))
++    #define XMEMCPY(pdest, psrc, size) ((void)Mem_Copy((void *)(pdest), \
++                     (void *)(psrc), (CPU_SIZE_T)(size)))
++    #define XMEMCMP(pmem_1, pmem_2, size) \
++                   (((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), (void *)(pmem_2), \
++                     (CPU_SIZE_T)(size))) ? DEF_NO : DEF_YES)
++    #define XMEMMOVE XMEMCPY
++
++#if (NET_SECURE_MGR_CFG_EN == DEF_ENABLED)
++    #define MICRIUM_MALLOC    
++    #define XMALLOC(s, h, type) ((void *)NetSecure_BlkGet((CPU_INT08U)(type), \
++                                 (CPU_SIZE_T)(s), (void *)0))
++    #define XFREE(p, h, type)   (NetSecure_BlkFree((CPU_INT08U)(type), \
++                                 (p), (void *)0))
++    #define XREALLOC(p, n, h, t) realloc((p), (n))
++#endif
++
++    #if (NET_SECURE_MGR_CFG_FS_EN == DEF_ENABLED)
++        #undef  NO_FILESYSTEM
++    #else
++        #define NO_FILESYSTEM
++    #endif
++
++    #if (SSL_CFG_TRACE_LEVEL == CYASSL_TRACE_LEVEL_DBG)
++        #define DEBUG_CYASSL
++    #else
++        #undef  DEBUG_CYASSL
++    #endif
++
++    #if (SSL_CFG_OPENSSL_EN == DEF_ENABLED)
++        #define OPENSSL_EXTRA
++    #else
++        #undef  OPENSSL_EXTRA
++    #endif
++
++    #if (SSL_CFG_MULTI_THREAD_EN == DEF_ENABLED)
++        #undef  SINGLE_THREADED
++    #else
++        #define SINGLE_THREADED
++    #endif
++
++    #if (SSL_CFG_DH_EN == DEF_ENABLED)
++        #undef  NO_DH
++    #else
++        #define NO_DH
++    #endif
++
++    #if (SSL_CFG_DSA_EN == DEF_ENABLED)
++        #undef  NO_DSA
++    #else
++        #define NO_DSA
++    #endif
++
++    #if (SSL_CFG_PSK_EN == DEF_ENABLED)
++        #undef  NO_PSK
++    #else
++        #define NO_PSK
++    #endif
++
++    #if (SSL_CFG_3DES_EN == DEF_ENABLED)
++        #undef  NO_DES
++    #else
++        #define NO_DES
++    #endif
++
++    #if (SSL_CFG_AES_EN == DEF_ENABLED)
++        #undef  NO_AES
++    #else
++        #define NO_AES
++    #endif
++
++    #if (SSL_CFG_RC4_EN == DEF_ENABLED)
++        #undef  NO_RC4
++    #else
++        #define NO_RC4
++    #endif
++
++    #if (SSL_CFG_RABBIT_EN == DEF_ENABLED)
++        #undef  NO_RABBIT
++    #else
++        #define NO_RABBIT
++    #endif
++
++    #if (SSL_CFG_HC128_EN == DEF_ENABLED)
++        #undef  NO_HC128
++    #else
++        #define NO_HC128
++    #endif
++
++    #if (CPU_CFG_ENDIAN_TYPE == CPU_ENDIAN_TYPE_BIG)
++        #define BIG_ENDIAN_ORDER
++    #else
++        #undef  BIG_ENDIAN_ORDER
++        #define LITTLE_ENDIAN_ORDER
++    #endif
++
++    #if (SSL_CFG_MD4_EN == DEF_ENABLED)
++        #undef  NO_MD4
++    #else
++        #define NO_MD4
++    #endif
++
++    #if (SSL_CFG_WRITEV_EN == DEF_ENABLED)
++        #undef  NO_WRITEV
++    #else
++        #define NO_WRITEV
++    #endif
++
++    #if (SSL_CFG_USER_RNG_SEED_EN == DEF_ENABLED)
++        #define NO_DEV_RANDOM   
++    #else
++        #undef  NO_DEV_RANDOM
++    #endif
++
++    #if (SSL_CFG_USER_IO_EN == DEF_ENABLED)
++        #define CYASSL_USER_IO   
++    #else
++        #undef  CYASSL_USER_IO
++    #endif
++
++    #if (SSL_CFG_DYNAMIC_BUFFERS_EN == DEF_ENABLED)
++        #undef  LARGE_STATIC_BUFFERS
++        #undef  STATIC_CHUNKS_ONLY
++    #else
++        #define LARGE_STATIC_BUFFERS
++        #define STATIC_CHUNKS_ONLY
++    #endif
++
++    #if (SSL_CFG_DER_LOAD_EN == DEF_ENABLED)
++        #define  CYASSL_DER_LOAD
++    #else
++        #undef   CYASSL_DER_LOAD
++    #endif
++
++    #if (SSL_CFG_DTLS_EN == DEF_ENABLED)
++        #define  CYASSL_DTLS
++    #else
++        #undef   CYASSL_DTLS
++    #endif
++
++    #if (SSL_CFG_CALLBACKS_EN == DEF_ENABLED)
++         #define CYASSL_CALLBACKS
++    #else
++         #undef  CYASSL_CALLBACKS
++    #endif
++
++    #if (SSL_CFG_FAST_MATH_EN == DEF_ENABLED)
++         #define USE_FAST_MATH
++    #else
++         #undef  USE_FAST_MATH
++    #endif
++
++    #if (SSL_CFG_TFM_TIMING_RESISTANT_EN == DEF_ENABLED)
++         #define TFM_TIMING_RESISTANT
++    #else
++         #undef  TFM_TIMING_RESISTANT
++    #endif
++
++#endif /* MICRIUM */
++
++
++#ifdef CYASSL_QL
++    #ifndef CYASSL_SEP
++        #define CYASSL_SEP
++    #endif
++    #ifndef OPENSSL_EXTRA
++        #define OPENSSL_EXTRA
++    #endif
++    #ifndef SESSION_CERTS
++        #define SESSION_CERTS
++    #endif
++    #ifndef HAVE_AESCCM
++        #define HAVE_AESCCM
++    #endif
++    #ifndef ATOMIC_USER
++        #define ATOMIC_USER
++    #endif
++    #ifndef CYASSL_DER_LOAD
++        #define CYASSL_DER_LOAD
++    #endif
++    #ifndef KEEP_PEER_CERT
++        #define KEEP_PEER_CERT
++    #endif
++    #ifndef HAVE_ECC
++        #define HAVE_ECC
++    #endif
++    #ifndef SESSION_INDEX
++        #define SESSION_INDEX
++    #endif
++#endif /* CYASSL_QL */
++
++
++#if !defined(XMALLOC_USER) && !defined(MICRIUM_MALLOC) && \
++    !defined(CYASSL_LEANPSK) && !defined(NO_CYASSL_MEMORY)
++    #define USE_CYASSL_MEMORY
++#endif
++
++
++#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS)
++    #undef  KEEP_PEER_CERT
++    #define KEEP_PEER_CERT
++#endif
++
++
++/* stream ciphers except arc4 need 32bit alignment, intel ok without */
++#ifndef XSTREAM_ALIGNMENT
++    #if defined(__x86_64__) || defined(__ia64__) || defined(__i386__)
++        #define NO_XSTREAM_ALIGNMENT
++    #else
++        #define XSTREAM_ALIGNMENT
++    #endif
++#endif
++
++
++/* if using hardware crypto and have alignment requirements, specify the
++   requirement here.  The record header of SSL/TLS will prvent easy alignment.
++   This hint tries to help as much as possible.  */
++#ifndef CYASSL_GENERAL_ALIGNMENT
++    #ifdef CYASSL_AESNI
++        #define CYASSL_GENERAL_ALIGNMENT 16
++    #elif defined(XSTREAM_ALIGNMENT)
++        #define CYASSL_GENERAL_ALIGNMENT  4
++    #else 
++        #define CYASSL_GENERAL_ALIGNMENT  0 
++    #endif
++#endif
++
++#ifdef HAVE_CRL
++    /* not widely supported yet */
++    #undef NO_SKID
++    #define NO_SKID
++#endif
++
++/* Place any other flags or defines here */
++
++
++#ifdef __cplusplus
++    }   /* extern "C" */
++#endif
++
++
++#endif /* CTAO_CRYPT_SETTINGS_H */
++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/SimpleClient.uvoptx mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/SimpleClient.uvoptx
+--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/SimpleClient.uvoptx	1969-12-31 17:00:00.000000000 -0700
++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/SimpleClient.uvoptx	2015-02-15 14:28:52.000000000 -0700
+@@ -0,0 +1,1263 @@
++
++
++
++  1.0
++
++  
### uVision Project, (C) Keil Software
++ ++ ++ *.c ++ *.s*; *.src; *.a* ++ *.obj ++ *.lib ++ *.txt; *.h; *.inc ++ *.plm ++ *.cpp ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ SimpleClient ++ 0x4 ++ ARM-ADS ++ ++ 120000000 ++ ++ 1 ++ 1 ++ 0 ++ 1 ++ ++ ++ 1 ++ 65535 ++ 0 ++ 0 ++ 0 ++ ++ ++ 79 ++ 66 ++ 8 ++ .\Object\ ++ ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ ++ ++ 1 ++ 0 ++ 1 ++ ++ 255 ++ ++ ++ 0 ++ Schematics (MCBSTM32F200) ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\Documents\mcbstm32f200-schematics.pdf ++ ++ ++ 1 ++ User Manual (MCBSTM32F200) ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\Documents\mcbstm32f200.chm ++ ++ ++ 2 ++ MCBSTM32F200 Evaluation Board Web Page (MCBSTM32F200) ++ http://www.keil.com/mcbstm32f200/ ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 8 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ .\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ 0 ++ DLGTARM ++ (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) ++ ++ ++ 0 ++ ARMDBGFLAGS ++ ++ ++ ++ 0 ++ ULP2CM3 ++ -UP1135060 -O206 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO19 -TC120000000 -TP18 -TDX0 -TDD0 -TDS8000 -TDT0 -TDC1F -TIE1 -TIP1 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024.flm -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm) ++ ++ ++ 0 ++ DLGUARM ++ ++ ++ ++ 0 ++ UL2CM3 ++ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm)) ++ ++ ++ ++ ++ ++ 1 ++ 8 ++ 0x20000408 ++ ++ ++ ++ ++ 2 ++ 8 ++ 0x8004dc8 ++ ++ ++ ++ 0 ++ ++ ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ Source ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\main.c ++ main.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 2 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\client.c ++ client.c ++ 0 ++ 0 ++ ++ ++ ++ ++ Configuration ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 2 ++ 3 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\config-SimpleClient.h ++ config-SimpleClient.h ++ 0 ++ 0 ++ ++ ++ 2 ++ 4 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\wolfSSL\config-CyaSSL.h ++ config-CyaSSL.h ++ 0 ++ 0 ++ ++ ++ 2 ++ 5 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\wolfSSL\config-Crypt.h ++ config-Crypt.h ++ 0 ++ 0 ++ ++ ++ 2 ++ 6 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\Network\Net_Config_ETH_0.h ++ Net_Config_ETH_0.h ++ 0 ++ 0 ++ ++ ++ ++ ++ Documentation ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 3 ++ 7 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\Abstract.txt ++ Abstract.txt ++ 0 ++ 0 ++ ++ ++ ++ ++ Devices ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 4 ++ 8 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\time-dummy.c ++ time-dummy.c ++ 0 ++ 0 ++ ++ ++ 4 ++ 9 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\time-CortexM3-4.c ++ time-CortexM3-4.c ++ 0 ++ 0 ++ ++ ++ ++ ++ ::CMSIS ++ 1 ++ 0 ++ 0 ++ 1 ++ ++ 5 ++ 10 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\CMSIS\RTX_Conf_CM.c ++ RTX_Conf_CM.c ++ 1 ++ 0 ++ ++ ++ 5 ++ 11 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.4\CMSIS_RTX\Lib\ARM\RTX_CM3.lib ++ RTX_CM3.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Device ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 6 ++ 12 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\RTE_Device.h ++ RTE_Device.h ++ 1 ++ 0 ++ ++ ++ 6 ++ 13 ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ startup_stm32f2xx.s ++ 1 ++ 0 ++ ++ ++ 6 ++ 14 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ system_stm32f2xx.c ++ 1 ++ 0 ++ ++ ++ 6 ++ 15 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\DMA_STM32F2xx.c ++ DMA_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 6 ++ 16 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\GPIO_STM32F2xx.c ++ GPIO_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Drivers ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 7 ++ 17 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\EMAC_STM32F2xx.c ++ EMAC_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 7 ++ 18 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\MCI_STM32F2xx.c ++ MCI_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 7 ++ 19 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Driver\PHY_ST802RT1.c ++ PHY_ST802RT1.c ++ 1 ++ 0 ++ ++ ++ ++ ++ ::File System ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 8 ++ 20 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\File_System\FS_Config.c ++ FS_Config.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 21 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\File_System\FS_Config_MC_0.h ++ FS_Config_MC_0.h ++ 1 ++ 0 ++ ++ ++ 8 ++ 22 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\FileSystem\Lib\ARM\FS_LFN_CM3_L.lib ++ FS_LFN_CM3_L.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Network ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 9 ++ 23 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config.c ++ Net_Config.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 24 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_BSD.h ++ Net_Config_BSD.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 25 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_DNS_Client.h ++ Net_Config_DNS_Client.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 26 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_ETH_0.h ++ Net_Config_ETH_0.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 27 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_TCP.h ++ Net_Config_TCP.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 28 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_UDP.h ++ Net_Config_UDP.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 29 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Debug.c ++ Net_Debug.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 30 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Lib\ARM\Net_Dbg_CM3_L.lib ++ Net_Dbg_CM3_L.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::wolfSSL ++ 1 ++ 0 ++ 0 ++ 1 ++ ++ 10 ++ 31 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\config-Crypt.h ++ config-Crypt.h ++ 1 ++ 0 ++ ++ ++ 10 ++ 32 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\config-CyaSSL.h ++ config-CyaSSL.h ++ 1 ++ 0 ++ ++ ++ 10 ++ 33 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\settings.h ++ settings.h ++ 1 ++ 0 ++ ++ ++ 10 ++ 34 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\cyassl_MDK_ARM.c ++ cyassl_MDK_ARM.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 35 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\aes.c ++ aes.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 36 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\arc4.c ++ arc4.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 37 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asm.c ++ asm.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 38 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asn.c ++ asn.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 39 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\blake2b.c ++ blake2b.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 40 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\camellia.c ++ camellia.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 41 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\coding.c ++ coding.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 42 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\compress.c ++ compress.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 43 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\des3.c ++ des3.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 44 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dh.c ++ dh.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 45 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dsa.c ++ dsa.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 46 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc.c ++ ecc.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 47 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc_fp.c ++ ecc_fp.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 48 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\error.c ++ error.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 49 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hc128.c ++ hc128.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 50 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hmac.c ++ hmac.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 51 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\integer.c ++ integer.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 52 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\logging.c ++ logging.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 53 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md2.c ++ md2.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 54 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md4.c ++ md4.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 55 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md5.c ++ md5.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 56 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\memory.c ++ memory.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 57 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\misc.c ++ misc.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 58 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\pwdbased.c ++ pwdbased.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 59 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rabbit.c ++ rabbit.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 60 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\random.c ++ random.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 61 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ripemd.c ++ ripemd.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 62 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rsa.c ++ rsa.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 63 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha.c ++ sha.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 64 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha256.c ++ sha256.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 65 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha512.c ++ sha512.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 66 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\tfm.c ++ tfm.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 67 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\wc_port.c ++ wc_port.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 68 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\crl.c ++ crl.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 69 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\internal.c ++ internal.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 70 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\io.c ++ io.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 71 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\keys.c ++ keys.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 72 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ocsp.c ++ ocsp.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 73 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\sniffer.c ++ sniffer.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 74 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ssl.c ++ ssl.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 75 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\tls.c ++ tls.c ++ 1 ++ 0 ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/client.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/client.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/client.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/client.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,862 @@ ++/* client.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#if defined(CYASSL_MDK_ARM) ++ #include ++ #include ++ ++ #if defined(CYASSL_MDK5) ++ #include "cmsis_os.h" ++ #include "rl_fs.h" ++ #include "rl_net.h" ++ #else ++ #include "rtl.h" ++ #endif ++ ++ #include "cyassl_MDK_ARM.h" ++#endif ++ ++#include ++ ++#if !defined(CYASSL_TRACK_MEMORY) && !defined(NO_MAIN_DRIVER) ++ /* in case memory tracker wants stats */ ++ #define CYASSL_TRACK_MEMORY ++#endif ++ ++#include ++ ++#include ++ ++#include "examples/client/client.h" ++ ++ ++#ifdef CYASSL_CALLBACKS ++ int handShakeCB(HandShakeInfo*); ++ int timeoutCB(TimeoutInfo*); ++ Timeval timeout; ++#endif ++ ++ ++static void NonBlockingSSL_Connect(CYASSL* ssl) ++{ ++#ifndef CYASSL_CALLBACKS ++ int ret = CyaSSL_connect(ssl); ++#else ++ int ret = CyaSSL_connect_ex(ssl, handShakeCB, timeoutCB, timeout); ++#endif ++ int error = CyaSSL_get_error(ssl, 0); ++ SOCKET_T sockfd = (SOCKET_T)CyaSSL_get_fd(ssl); ++ int select_ret; ++ ++ while (ret != SSL_SUCCESS && (error == SSL_ERROR_WANT_READ || ++ error == SSL_ERROR_WANT_WRITE)) { ++ int currTimeout = 1; ++ ++ if (error == SSL_ERROR_WANT_READ) ++ printf("... client would read block\n"); ++ else ++ printf("... client would write block\n"); ++ ++#ifdef CYASSL_DTLS ++ currTimeout = CyaSSL_dtls_get_current_timeout(ssl); ++#endif ++ select_ret = tcp_select(sockfd, currTimeout); ++ ++ if ((select_ret == TEST_RECV_READY) || ++ (select_ret == TEST_ERROR_READY)) { ++ #ifndef CYASSL_CALLBACKS ++ ret = CyaSSL_connect(ssl); ++ #else ++ ret = CyaSSL_connect_ex(ssl,handShakeCB,timeoutCB,timeout); ++ #endif ++ error = CyaSSL_get_error(ssl, 0); ++ } ++ else if (select_ret == TEST_TIMEOUT && !CyaSSL_dtls(ssl)) { ++ error = SSL_ERROR_WANT_READ; ++ } ++#ifdef CYASSL_DTLS ++ else if (select_ret == TEST_TIMEOUT && CyaSSL_dtls(ssl) && ++ CyaSSL_dtls_got_timeout(ssl) >= 0) { ++ error = SSL_ERROR_WANT_READ; ++ } ++#endif ++ else { ++ error = SSL_FATAL_ERROR; ++ } ++ } ++ if (ret != SSL_SUCCESS) ++ err_sys("SSL_connect failed"); ++} ++ ++ ++static void Usage(void) ++{ ++ printf("client " LIBCYASSL_VERSION_STRING ++ " NOTE: All files relative to CyaSSL home dir\n"); ++ printf("-? Help, print this usage\n"); ++ printf("-h Host to connect to, default %s\n", yasslIP); ++ printf("-p Port to connect on, not 0, default %d\n", yasslPort); ++ printf("-v SSL version [0-3], SSLv3(0) - TLS1.2(3)), default %d\n", ++ CLIENT_DEFAULT_VERSION); ++ printf("-l Cipher list\n"); ++ printf("-c Certificate file, default %s\n", cliCert); ++ printf("-k Key file, default %s\n", cliKey); ++ printf("-A Certificate Authority file, default %s\n", caCert); ++ printf("-b Benchmark connections and print stats\n"); ++ printf("-s Use pre Shared keys\n"); ++ printf("-t Track CyaSSL memory use\n"); ++ printf("-d Disable peer checks\n"); ++ printf("-D Override Date Errors example\n"); ++ printf("-g Send server HTTP GET\n"); ++ printf("-u Use UDP DTLS," ++ " add -v 2 for DTLSv1 (default), -v 3 for DTLSv1.2\n"); ++ printf("-m Match domain name in cert\n"); ++ printf("-N Use Non-blocking sockets\n"); ++ printf("-r Resume session\n"); ++ printf("-f Fewer packets/group messages\n"); ++ printf("-x Disable client cert/key loading\n"); ++#ifdef SHOW_SIZES ++ printf("-z Print structure sizes\n"); ++#endif ++#ifdef HAVE_SNI ++ printf("-S Use Host Name Indication\n"); ++#endif ++#ifdef HAVE_MAX_FRAGMENT ++ printf("-L Use Maximum Fragment Length [1-5]\n"); ++#endif ++#ifdef HAVE_TRUNCATED_HMAC ++ printf("-T Use Truncated HMAC\n"); ++#endif ++#ifdef HAVE_OCSP ++ printf("-o Perform OCSP lookup on peer certificate\n"); ++ printf("-O Perform OCSP lookup using as responder\n"); ++#endif ++#ifdef ATOMIC_USER ++ printf("-U Atomic User Record Layer Callbacks\n"); ++#endif ++#ifdef HAVE_PK_CALLBACKS ++ printf("-P Public Key Callbacks\n"); ++#endif ++} ++ ++THREAD_RETURN CYASSL_THREAD client_test(void* args) ++{ ++ SOCKET_T sockfd = 0; ++ ++ CYASSL_METHOD* method = 0; ++ CYASSL_CTX* ctx = 0; ++ CYASSL* ssl = 0; ++ ++ CYASSL* sslResume = 0; ++ CYASSL_SESSION* session = 0; ++ char resumeMsg[] = "resuming cyassl!"; ++ int resumeSz = sizeof(resumeMsg); ++ ++ char msg[32] = "hello cyassl!"; /* GET may make bigger */ ++ char reply[80]; ++ int input; ++ int msgSz = (int)strlen(msg); ++ ++ word16 port = yasslPort; ++ char* host = (char*)yasslIP; ++ const char* domain = "www.yassl.com"; ++ ++ int ch; ++ int version = CLIENT_INVALID_VERSION; ++ int usePsk = 0; ++ int sendGET = 0; ++ int benchmark = 0; ++ int doDTLS = 0; ++ int matchName = 0; ++ int doPeerCheck = 1; ++ int nonBlocking = 0; ++ int resumeSession = 0; ++ int trackMemory = 0; ++ int useClientCert = 1; ++ int fewerPackets = 0; ++ int atomicUser = 0; ++ int pkCallbacks = 0; ++ int overrideDateErrors = 0; ++ char* cipherList = NULL; ++ const char* verifyCert = caCert; ++ const char* ourCert = cliCert; ++ const char* ourKey = cliKey; ++ ++#ifdef HAVE_SNI ++ char* sniHostName = NULL; ++#endif ++#ifdef HAVE_MAX_FRAGMENT ++ byte maxFragment = 0; ++#endif ++#ifdef HAVE_TRUNCATED_HMAC ++ byte truncatedHMAC = 0; ++#endif ++ ++ ++#ifdef HAVE_OCSP ++ int useOcsp = 0; ++ char* ocspUrl = NULL; ++#endif ++ ++ int argc = ((func_args*)args)->argc; ++ char** argv = ((func_args*)args)->argv; ++ ++ ((func_args*)args)->return_code = -1; /* error state */ ++ ++#ifdef NO_RSA ++ verifyCert = (char*)eccCert; ++ ourCert = (char*)cliEccCert; ++ ourKey = (char*)cliEccKey; ++#endif ++ (void)resumeSz; ++ (void)session; ++ (void)sslResume; ++ (void)trackMemory; ++ (void)atomicUser; ++ (void)pkCallbacks; ++ ++ StackTrap(); ++ ++ while ((ch = mygetopt(argc, argv, ++ "?gdDusmNrtfxUPh:p:v:l:A:c:k:b:zS:L:ToO:")) != -1) { ++ switch (ch) { ++ case '?' : ++ Usage(); ++ exit(EXIT_SUCCESS); ++ ++ case 'g' : ++ sendGET = 1; ++ break; ++ ++ case 'd' : ++ doPeerCheck = 0; ++ break; ++ ++ case 'D' : ++ overrideDateErrors = 1; ++ break; ++ ++ case 'u' : ++ doDTLS = 1; ++ break; ++ ++ case 's' : ++ usePsk = 1; ++ break; ++ ++ case 't' : ++ #ifdef USE_CYASSL_MEMORY ++ trackMemory = 1; ++ #endif ++ break; ++ ++ case 'm' : ++ matchName = 1; ++ break; ++ ++ case 'x' : ++ useClientCert = 0; ++ break; ++ ++ case 'f' : ++ fewerPackets = 1; ++ break; ++ ++ case 'U' : ++ #ifdef ATOMIC_USER ++ atomicUser = 1; ++ #endif ++ break; ++ ++ case 'P' : ++ #ifdef HAVE_PK_CALLBACKS ++ pkCallbacks = 1; ++ #endif ++ break; ++ ++ case 'h' : ++ host = myoptarg; ++ domain = myoptarg; ++ break; ++ ++ case 'p' : ++ port = (word16)atoi(myoptarg); ++ #if !defined(NO_MAIN_DRIVER) || defined(USE_WINDOWS_API) ++ if (port == 0) ++ err_sys("port number cannot be 0"); ++ #endif ++ break; ++ ++ case 'v' : ++ version = atoi(myoptarg); ++ if (version < 0 || version > 3) { ++ Usage(); ++ exit(MY_EX_USAGE); ++ } ++ break; ++ ++ case 'l' : ++ cipherList = myoptarg; ++ break; ++ ++ case 'A' : ++ verifyCert = myoptarg; ++ break; ++ ++ case 'c' : ++ ourCert = myoptarg; ++ break; ++ ++ case 'k' : ++ ourKey = myoptarg; ++ break; ++ ++ case 'b' : ++ benchmark = atoi(myoptarg); ++ if (benchmark < 0 || benchmark > 1000000) { ++ Usage(); ++ exit(MY_EX_USAGE); ++ } ++ break; ++ ++ case 'N' : ++ nonBlocking = 1; ++ break; ++ ++ case 'r' : ++ resumeSession = 1; ++ break; ++ ++ case 'z' : ++ #ifndef CYASSL_LEANPSK ++ CyaSSL_GetObjectSize(); ++ #endif ++ break; ++ ++ case 'S' : ++ #ifdef HAVE_SNI ++ sniHostName = myoptarg; ++ #endif ++ break; ++ ++ case 'L' : ++ #ifdef HAVE_MAX_FRAGMENT ++ maxFragment = atoi(myoptarg); ++ if (maxFragment < CYASSL_MFL_2_9 || ++ maxFragment > CYASSL_MFL_2_13) { ++ Usage(); ++ exit(MY_EX_USAGE); ++ } ++ #endif ++ break; ++ ++ case 'T' : ++ #ifdef HAVE_TRUNCATED_HMAC ++ truncatedHMAC = 1; ++ #endif ++ break; ++ ++ case 'o' : ++ #ifdef HAVE_OCSP ++ useOcsp = 1; ++ #endif ++ break; ++ ++ case 'O' : ++ #ifdef HAVE_OCSP ++ useOcsp = 1; ++ ocspUrl = myoptarg; ++ #endif ++ break; ++ ++ default: ++ Usage(); ++ exit(MY_EX_USAGE); ++ } ++ } ++ ++ myoptind = 0; /* reset for test cases */ ++ ++ /* sort out DTLS versus TLS versions */ ++ if (version == CLIENT_INVALID_VERSION) { ++ if (doDTLS) ++ version = CLIENT_DTLS_DEFAULT_VERSION; ++ else ++ version = CLIENT_DEFAULT_VERSION; ++ } ++ else { ++ if (doDTLS) { ++ if (version == 3) ++ version = -2; ++ else ++ version = -1; ++ } ++ } ++ ++#ifdef USE_CYASSL_MEMORY ++ if (trackMemory) ++ InitMemoryTracker(); ++#endif ++ ++ switch (version) { ++#ifndef NO_OLD_TLS ++ case 0: ++ method = wolfSSLv3_client_method(); ++ break; ++ ++ ++ #ifndef NO_TLS ++ case 1: ++ method = CyaTLSv1_client_method(); ++ break; ++ ++ case 2: ++ method = CyaTLSv1_1_client_method(); ++ break; ++ #endif /* NO_TLS */ ++ ++#endif /* NO_OLD_TLS */ ++ ++#ifndef NO_TLS ++ case 3: ++ method = CyaTLSv1_2_client_method(); ++ break; ++#endif ++ ++#ifdef CYASSL_DTLS ++ case -1: ++ method = CyaDTLSv1_client_method(); ++ break; ++ ++ case -2: ++ method = CyaDTLSv1_2_client_method(); ++ break; ++#endif ++ ++ default: ++ err_sys("Bad SSL version"); ++ break; ++ } ++ ++ if (method == NULL) ++ err_sys("unable to get method"); ++ ++ ctx = CyaSSL_CTX_new(method); ++ if (ctx == NULL) ++ err_sys("unable to get ctx"); ++ ++ if (cipherList) ++ if (CyaSSL_CTX_set_cipher_list(ctx, cipherList) != SSL_SUCCESS) ++ err_sys("client can't set cipher list 1"); ++ ++#ifdef CYASSL_LEANPSK ++ usePsk = 1; ++#endif ++ ++#if defined(NO_RSA) && !defined(HAVE_ECC) ++ usePsk = 1; ++#endif ++ ++ if (fewerPackets) ++ CyaSSL_CTX_set_group_messages(ctx); ++ ++ if (usePsk) { ++#ifndef NO_PSK ++ CyaSSL_CTX_set_psk_client_callback(ctx, my_psk_client_cb); ++ if (cipherList == NULL) { ++ const char *defaultCipherList; ++ #ifdef HAVE_NULL_CIPHER ++ defaultCipherList = "PSK-NULL-SHA256"; ++ #else ++ defaultCipherList = "PSK-AES128-CBC-SHA256"; ++ #endif ++ if (CyaSSL_CTX_set_cipher_list(ctx,defaultCipherList) !=SSL_SUCCESS) ++ err_sys("client can't set cipher list 2"); ++ } ++#endif ++ useClientCert = 0; ++ } ++ ++#if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) ++ CyaSSL_CTX_set_default_passwd_cb(ctx, PasswordCallBack); ++#endif ++ ++#if defined(CYASSL_SNIFFER) && !defined(HAVE_NTRU) && !defined(HAVE_ECC) ++ if (cipherList == NULL) { ++ /* don't use EDH, can't sniff tmp keys */ ++ if (CyaSSL_CTX_set_cipher_list(ctx, "AES256-SHA256") != SSL_SUCCESS) { ++ err_sys("client can't set cipher list 3"); ++ } ++ } ++#endif ++ ++#ifdef HAVE_OCSP ++ if (useOcsp) { ++ if (ocspUrl != NULL) { ++ CyaSSL_CTX_SetOCSP_OverrideURL(ctx, ocspUrl); ++ CyaSSL_CTX_EnableOCSP(ctx, CYASSL_OCSP_NO_NONCE ++ | CYASSL_OCSP_URL_OVERRIDE); ++ } ++ else ++ CyaSSL_CTX_EnableOCSP(ctx, CYASSL_OCSP_NO_NONCE); ++ } ++#endif ++ ++#ifdef USER_CA_CB ++ CyaSSL_CTX_SetCACb(ctx, CaCb); ++#endif ++ ++#ifdef VERIFY_CALLBACK ++ CyaSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, myVerify); ++#endif ++#if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) ++ if (useClientCert){ ++ if (CyaSSL_CTX_use_certificate_chain_file(ctx, ourCert) != SSL_SUCCESS) ++ err_sys("can't load client cert file, check file and run from" ++ " CyaSSL home dir"); ++ ++ if (CyaSSL_CTX_use_PrivateKey_file(ctx, ourKey, SSL_FILETYPE_PEM) ++ != SSL_SUCCESS) ++ err_sys("can't load client private key file, check file and run " ++ "from CyaSSL home dir"); ++ } ++ ++ if (!usePsk) { ++ if (CyaSSL_CTX_load_verify_locations(ctx, verifyCert, 0) != SSL_SUCCESS) ++ err_sys("can't load ca file, Please run from CyaSSL home dir"); ++ } ++#endif ++#if !defined(NO_CERTS) ++ if (!usePsk && doPeerCheck == 0) ++ CyaSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); ++ if (!usePsk && overrideDateErrors == 1) ++ CyaSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, myDateCb); ++#endif ++ ++#ifdef HAVE_CAVIUM ++ CyaSSL_CTX_UseCavium(ctx, CAVIUM_DEV_ID); ++#endif ++ ++#ifdef HAVE_SNI ++ if (sniHostName) ++ if (CyaSSL_CTX_UseSNI(ctx, 0, sniHostName, XSTRLEN(sniHostName)) ++ != SSL_SUCCESS) ++ err_sys("UseSNI failed"); ++#endif ++#ifdef HAVE_MAX_FRAGMENT ++ if (maxFragment) ++ if (CyaSSL_CTX_UseMaxFragment(ctx, maxFragment) != SSL_SUCCESS) ++ err_sys("UseMaxFragment failed"); ++#endif ++#ifdef HAVE_TRUNCATED_HMAC ++ if (truncatedHMAC) ++ if (CyaSSL_CTX_UseTruncatedHMAC(ctx) != SSL_SUCCESS) ++ err_sys("UseTruncatedHMAC failed"); ++#endif ++ ++ if (benchmark) { ++ /* time passed in number of connects give average */ ++ int times = benchmark; ++ int i = 0; ++ ++ double start = current_time(), avg; ++ ++ for (i = 0; i < times; i++) { ++ tcp_connect(&sockfd, host, port, doDTLS); ++ ++ ssl = CyaSSL_new(ctx); ++ CyaSSL_set_fd(ssl, sockfd); ++ if (CyaSSL_connect(ssl) != SSL_SUCCESS) ++ err_sys("SSL_connect failed"); ++ ++ CyaSSL_shutdown(ssl); ++ CyaSSL_free(ssl); ++ CloseSocket(sockfd); ++ } ++ avg = current_time() - start; ++ avg /= times; ++ avg *= 1000; /* milliseconds */ ++ printf("CyaSSL_connect avg took: %8.3f milliseconds\n", avg); ++ ++ CyaSSL_CTX_free(ctx); ++ ((func_args*)args)->return_code = 0; ++ ++ exit(EXIT_SUCCESS); ++ } ++ ++ #if defined(CYASSL_MDK_ARM) ++ CyaSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); ++ #endif ++ ++ ssl = CyaSSL_new(ctx); ++ if (ssl == NULL) ++ err_sys("unable to get SSL object"); ++ if (doDTLS) { ++ SOCKADDR_IN_T addr; ++ build_addr(&addr, host, port, 1); ++ CyaSSL_dtls_set_peer(ssl, &addr, sizeof(addr)); ++ tcp_socket(&sockfd, 1); ++ } ++ else { ++ tcp_connect(&sockfd, host, port, 0); ++ } ++ CyaSSL_set_fd(ssl, sockfd); ++#ifdef HAVE_CRL ++ if (CyaSSL_EnableCRL(ssl, CYASSL_CRL_CHECKALL) != SSL_SUCCESS) ++ err_sys("can't enable crl check"); ++ if (CyaSSL_LoadCRL(ssl, crlPemDir, SSL_FILETYPE_PEM, 0) != SSL_SUCCESS) ++ err_sys("can't load crl, check crlfile and date validity"); ++ if (CyaSSL_SetCRL_Cb(ssl, CRL_CallBack) != SSL_SUCCESS) ++ err_sys("can't set crl callback"); ++#endif ++#ifdef ATOMIC_USER ++ if (atomicUser) ++ SetupAtomicUser(ctx, ssl); ++#endif ++#ifdef HAVE_PK_CALLBACKS ++ if (pkCallbacks) ++ SetupPkCallbacks(ctx, ssl); ++#endif ++ if (matchName && doPeerCheck) ++ CyaSSL_check_domain_name(ssl, domain); ++#ifndef CYASSL_CALLBACKS ++ if (nonBlocking) { ++ CyaSSL_set_using_nonblock(ssl, 1); ++ tcp_set_nonblocking(&sockfd); ++ NonBlockingSSL_Connect(ssl); ++ } ++ else if (CyaSSL_connect(ssl) != SSL_SUCCESS) { ++ /* see note at top of README */ ++ int err = CyaSSL_get_error(ssl, 0); ++ char buffer[CYASSL_MAX_ERROR_SZ]; ++ printf("err = %d, %s\n", err, ++ CyaSSL_ERR_error_string(err, buffer)); ++ err_sys("SSL_connect failed"); ++ /* if you're getting an error here */ ++ } ++#else ++ timeout.tv_sec = 2; ++ timeout.tv_usec = 0; ++ NonBlockingSSL_Connect(ssl); /* will keep retrying on timeout */ ++#endif ++ showPeer(ssl); ++ ++ if (sendGET) { ++ printf("SSL connect ok, sending GET...\n"); ++ msgSz = 28; ++ strncpy(msg, "GET /index.html HTTP/1.0\r\n\r\n", msgSz); ++ msg[msgSz] = '\0'; ++ } ++ if (CyaSSL_write(ssl, msg, msgSz) != msgSz) ++ err_sys("SSL_write failed"); ++ ++ input = CyaSSL_read(ssl, reply, sizeof(reply)-1); ++ if (input > 0) { ++ reply[input] = 0; ++ printf("Server response: %s\n", reply); ++ ++ if (sendGET) { /* get html */ ++ while (1) { ++ input = CyaSSL_read(ssl, reply, sizeof(reply)-1); ++ if (input > 0) { ++ reply[input] = 0; ++ printf("%s\n", reply); ++ } ++ else ++ break; ++ } ++ } ++ } ++ else if (input < 0) { ++ int readErr = CyaSSL_get_error(ssl, 0); ++ if (readErr != SSL_ERROR_WANT_READ) ++ err_sys("CyaSSL_read failed"); ++ } ++ ++#ifndef NO_SESSION_CACHE ++ if (resumeSession) { ++ if (doDTLS) { ++ strncpy(msg, "break", 6); ++ msgSz = (int)strlen(msg); ++ /* try to send session close */ ++ CyaSSL_write(ssl, msg, msgSz); ++ } ++ session = CyaSSL_get_session(ssl); ++ sslResume = CyaSSL_new(ctx); ++ } ++#endif ++ ++ if (doDTLS == 0) /* don't send alert after "break" command */ ++ CyaSSL_shutdown(ssl); /* echoserver will interpret as new conn */ ++#ifdef ATOMIC_USER ++ if (atomicUser) ++ FreeAtomicUser(ssl); ++#endif ++ CyaSSL_free(ssl); ++ CloseSocket(sockfd); ++ ++#ifndef NO_SESSION_CACHE ++ if (resumeSession) { ++ if (doDTLS) { ++ SOCKADDR_IN_T addr; ++ #ifdef USE_WINDOWS_API ++ Sleep(500); ++ #else ++ sleep(1); ++ #endif ++ build_addr(&addr, host, port, 1); ++ CyaSSL_dtls_set_peer(sslResume, &addr, sizeof(addr)); ++ tcp_socket(&sockfd, 1); ++ } ++ else { ++ tcp_connect(&sockfd, host, port, 0); ++ } ++ CyaSSL_set_fd(sslResume, sockfd); ++ CyaSSL_set_session(sslResume, session); ++ ++ showPeer(sslResume); ++#ifndef CYASSL_CALLBACKS ++ if (nonBlocking) { ++ CyaSSL_set_using_nonblock(sslResume, 1); ++ tcp_set_nonblocking(&sockfd); ++ NonBlockingSSL_Connect(sslResume); ++ } ++ else if (CyaSSL_connect(sslResume) != SSL_SUCCESS) ++ err_sys("SSL resume failed"); ++#else ++ timeout.tv_sec = 2; ++ timeout.tv_usec = 0; ++ NonBlockingSSL_Connect(ssl); /* will keep retrying on timeout */ ++#endif ++ ++ if (CyaSSL_session_reused(sslResume)) ++ printf("reused session id\n"); ++ else ++ printf("didn't reuse session id!!!\n"); ++ ++ if (CyaSSL_write(sslResume, resumeMsg, resumeSz) != resumeSz) ++ err_sys("SSL_write failed"); ++ ++ if (nonBlocking) { ++ /* give server a chance to bounce a message back to client */ ++ #ifdef USE_WINDOWS_API ++ Sleep(500); ++ #else ++ sleep(1); ++ #endif ++ } ++ ++ input = CyaSSL_read(sslResume, reply, sizeof(reply)-1); ++ if (input > 0) { ++ reply[input] = 0; ++ printf("Server resume response: %s\n", reply); ++ } ++ ++ /* try to send session break */ ++ CyaSSL_write(sslResume, msg, msgSz); ++ ++ CyaSSL_shutdown(sslResume); ++ CyaSSL_free(sslResume); ++ CloseSocket(sockfd); ++ } ++#endif /* NO_SESSION_CACHE */ ++ ++ CyaSSL_CTX_free(ctx); ++ ++ ((func_args*)args)->return_code = 0; ++ ++#ifdef USE_CYASSL_MEMORY ++ if (trackMemory) ++ ShowMemoryTracker(); ++#endif /* USE_CYASSL_MEMORY */ ++ ++ return 0; ++} ++ ++ ++/* so overall tests can pull in test function */ ++#ifndef NO_MAIN_DRIVER ++ ++ int main(int argc, char** argv) ++ { ++ func_args args; ++ ++#ifdef HAVE_CAVIUM ++ int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID); ++ if (ret != 0) ++ err_sys("Cavium OpenNitroxDevice failed"); ++#endif /* HAVE_CAVIUM */ ++ ++ StartTCP(); ++ ++ args.argc = argc; ++ args.argv = argv; ++ ++ CyaSSL_Init(); ++#if defined(DEBUG_CYASSL) && !defined(CYASSL_MDK_SHELL) && !defined(STACK_TRAP) ++ CyaSSL_Debugging_ON(); ++#endif ++ if (CurrentDir("client")) ++ ChangeDirBack(2); ++ else if (CurrentDir("Debug") || CurrentDir("Release")) ++ ChangeDirBack(3); ++ ++#ifdef HAVE_STACK_SIZE ++ StackSizeCheck(&args, client_test); ++#else ++ client_test(&args); ++#endif ++ CyaSSL_Cleanup(); ++ ++#ifdef HAVE_CAVIUM ++ CspShutdown(CAVIUM_DEV_ID); ++#endif ++ return args.return_code; ++ } ++ ++ int myoptind = 0; ++ char* myoptarg = NULL; ++ ++#endif /* NO_MAIN_DRIVER */ ++ ++ ++ ++#ifdef CYASSL_CALLBACKS ++ ++ int handShakeCB(HandShakeInfo* info) ++ { ++ (void)info; ++ return 0; ++ } ++ ++ ++ int timeoutCB(TimeoutInfo* info) ++ { ++ (void)info; ++ return 0; ++ } ++ ++#endif ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/config-SimpleClient.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/config-SimpleClient.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/config-SimpleClient.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/config-SimpleClient.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,70 @@ ++/* config-RTX-TCP-FS.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++ ++/**** CyaSSL for KEIL-RL Configuration ****/ ++ ++#define __CORTEX_M3__ ++#define CYASSL_MDK_ARM ++#define NO_WRITEV ++#define NO_CYASSL_DIR ++#define NO_MAIN_DRIVER ++ ++ ++#define CYASSL_DER_LOAD ++#define HAVE_NULL_CIPHER ++ ++#define HAVE_KEIL_RTX ++#define CYASSL_CMSIS_RTOS ++#define CYASSL_KEIL_TCP_NET ++ ++ ++// <<< Use Configuration Wizard in Context Menu >>> ++// Build Target: Simple Client ++// Callee IP Address ++// Default: "192.168.1.100" ++#define CYASSL_CALLEE_IP "192.168.11.3" ++// Callee Port Number ++// Default: "443" ++#define CYASSL_CALLEE_PORT "443" ++// HTTP GET Option <0=> HTTP Get <1=> SSL/TLS Message ++#define MDK_CONF_HTTP_GET 0 ++#if MDK_CONF_HTTP_GET == 0 ++ #define CYASSL_HTTP_GET "-g" ++ #define CYASSL_HTTP_GET_COUNT 1 ++#elif MDK_CONF_HTTP_GET == 1 ++ #define CYASSL_HTTP_GET "" ++ #define CYASSL_HTTP_GET_COUNT 0 ++#endif ++// SSL/TLS Version <0=> SSL3 <1=> TLS 1.0 <2=> TLS 1.1 <3=> TLS 1.2 ++#define MDK_CONF_SSL_VERSION 3 ++#if MDK_CONF_SSL_VERSION == 0 ++ #define CYASSL_SSL_VER "0" ++#elif MDK_CONF_SSL_VERSION == 1 ++ #define CYASSL_SSL_VER "1" ++#elif MDK_CONF_SSL_VERSION == 2 ++ #define CYASSL_SSL_VER "2" ++#elif MDK_CONF_SSL_VERSION == 3 ++ #define CYASSL_SSL_VER "3" ++#endif ++ ++// ++// <<< end of configuration section >>> +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/main.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/main.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/main.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/main.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,113 @@ ++/* main.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++#include ++ ++#include "cmsis_os.h" ++#include "rl_fs.h" ++#include "rl_net.h" ++#include ++#include "cyassl_MDK_ARM.h" ++#include ++ ++/*----------------------------------------------------------------------------- ++ * Initialize a Flash Memory Card ++ *----------------------------------------------------------------------------*/ ++static void init_filesystem (void) { ++ int32_t retv; ++ ++ retv = finit ("M0:"); ++ if (retv == 0) { ++ retv = fmount ("M0:"); ++ if (retv == 0) { ++ printf ("Drive M0 ready!\n"); ++ } ++ else { ++ printf ("Drive M0 mount failed!\n"); ++ } ++ } else { ++ printf ("Drive M0 initialization failed!\n"); ++ } ++} ++ ++/*----------------------------------------------------------------------------- ++ * TCP/IP tasks ++ *----------------------------------------------------------------------------*/ ++void tcp_poll (void const *arg) ++{ ++ CYASSL_MSG("TCP polling started.\n") ; ++ while (1) { ++ net_main (); ++ osDelay(100) ; ++ } ++} ++ ++typedef struct func_args { ++ int argc; ++ char** argv; ++} func_args; ++ ++extern void client_test(func_args * args) ; ++ ++ osThreadDef (tcp_poll, osPriorityHigh , 1, 0) ; ++/*----------------------------------------------------------------------------- ++ * mian entry ++ *----------------------------------------------------------------------------*/ ++int myoptind = 0; ++char* myoptarg = NULL; ++ ++#include "config-SimpleClient.h" ++ ++int main() ++{ ++ static char *argv[] = ++ { "client", "-h", CYASSL_CALLEE_IP, "-p", CYASSL_CALLEE_PORT, ++ "-v", CYASSL_SSL_VER, CYASSL_HTTP_GET } ; ++ static func_args args = ++ { 7 + CYASSL_HTTP_GET_COUNT, argv } ; ++ ++ init_filesystem (); ++ net_initialize() ; ++ osThreadCreate (osThread (tcp_poll), NULL); ++ osDelay(50000) ; /* wait for DHCP */ ++ #if defined(DEBUG_CYASSL) ++ printf("Turning ON Debug message\n") ; ++ CyaSSL_Debugging_ON() ; ++ #endif ++ ++ if(args.argc == 7) ++ printf("Simple SSL/TLS, ") ; ++ else ++ printf("HTTP GET, ") ; ++ ++ printf("Callee IP: %s, Port: %s, Version:%s\n", argv[2], argv[4], argv[6]) ; ++ ++ while(1) { ++ client_test(&args) ; ++ printf("Enter any key to iterate.\n") ; ++ getchar() ; ++ } ++} +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/simpleClient.uvprojx mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/simpleClient.uvprojx +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/simpleClient.uvprojx 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/simpleClient.uvprojx 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,1162 @@ ++ ++ ++ ++ 2.1 ++ ++
### uVision Project, (C) Keil Software
++ ++ ++ ++ SimpleClient ++ 0x4 ++ ARM-ADS ++ ++ ++ STM32F207IG ++ STMicroelectronics ++ IRAM(0x20000000,0x20000) IROM(0x08000000,0x100000) CPUTYPE("Cortex-M3") CLOCK(120000000) ELITTLE ++ ++ ++ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm)) ++ 0 ++ $$Device:STM32F207IG$Device\Include\stm32f2xx.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ $$Device:STM32F207IG$SVD\STM32F20x.svd ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ .\Object\ ++ SimpleClient ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ .\Object\ ++ 1 ++ 0 ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ 0 ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 3 ++ ++ ++ 1 ++ ++ ++ SARMCM3.DLL ++ -REMAP -MPU ++ DCM.DLL ++ -pCM3 ++ SARMCM3.DLL ++ -REMAP -MPU ++ TCM.DLL ++ -pCM3 ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 16 ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ ++ 0 ++ 8 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ .\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 4100 ++ ++ 1 ++ BIN\ULP2CM3.DLL ++ "" () ++ ++ ++ ++ ++ 0 ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ "Cortex-M3" ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 8 ++ 0 ++ 0 ++ 0 ++ 3 ++ 3 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ ++ ++ ++ 1 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ HAVE_CONFIG_H MDK_CONF_SimpleClient ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0x08000000 ++ 0x20000000 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Source ++ ++ ++ main.c ++ 1 ++ .\main.c ++ ++ ++ client.c ++ 1 ++ .\client.c ++ ++ ++ ++ ++ Configuration ++ ++ ++ config-SimpleClient.h ++ 5 ++ .\config-SimpleClient.h ++ ++ ++ config-CyaSSL.h ++ 5 ++ .\RTE\wolfSSL\config-CyaSSL.h ++ ++ ++ config-Crypt.h ++ 5 ++ .\RTE\wolfSSL\config-Crypt.h ++ ++ ++ Net_Config_ETH_0.h ++ 5 ++ .\RTE\Network\Net_Config_ETH_0.h ++ ++ ++ ++ ++ Documentation ++ ++ ++ Abstract.txt ++ 5 ++ .\Abstract.txt ++ ++ ++ ++ ++ Devices ++ ++ ++ time-dummy.c ++ 1 ++ .\time-dummy.c ++ ++ ++ time-CortexM3-4.c ++ 1 ++ .\time-CortexM3-4.c ++ ++ ++ ++ ++ ::CMSIS ++ ++ ++ RTX_Conf_CM.c ++ 1 ++ RTE\CMSIS\RTX_Conf_CM.c ++ ++ ++ RTX_CM3.lib ++ 4 ++ C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.4\CMSIS_RTX\Lib\ARM\RTX_CM3.lib ++ ++ ++ ++ ++ ::Device ++ ++ ++ RTE_Device.h ++ 5 ++ RTE\Device\STM32F207IG\RTE_Device.h ++ ++ ++ startup_stm32f2xx.s ++ 2 ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ ++ ++ system_stm32f2xx.c ++ 1 ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ ++ ++ DMA_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\DMA_STM32F2xx.c ++ ++ ++ GPIO_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\GPIO_STM32F2xx.c ++ ++ ++ ++ ++ ::Drivers ++ ++ ++ EMAC_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\EMAC_STM32F2xx.c ++ ++ ++ MCI_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\MCI_STM32F2xx.c ++ ++ ++ PHY_ST802RT1.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Driver\PHY_ST802RT1.c ++ ++ ++ ++ ++ ::File System ++ ++ ++ FS_Config.c ++ 1 ++ RTE\File_System\FS_Config.c ++ ++ ++ FS_Config_MC_0.h ++ 5 ++ RTE\File_System\FS_Config_MC_0.h ++ ++ ++ FS_LFN_CM3_L.lib ++ 4 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\FileSystem\Lib\ARM\FS_LFN_CM3_L.lib ++ ++ ++ ++ ++ ::Network ++ ++ ++ Net_Config.c ++ 1 ++ RTE\Network\Net_Config.c ++ ++ ++ Net_Config_BSD.h ++ 5 ++ RTE\Network\Net_Config_BSD.h ++ ++ ++ Net_Config_DNS_Client.h ++ 5 ++ RTE\Network\Net_Config_DNS_Client.h ++ ++ ++ Net_Config_ETH_0.h ++ 5 ++ RTE\Network\Net_Config_ETH_0.h ++ ++ ++ Net_Config_TCP.h ++ 5 ++ RTE\Network\Net_Config_TCP.h ++ ++ ++ Net_Config_UDP.h ++ 5 ++ RTE\Network\Net_Config_UDP.h ++ ++ ++ Net_Debug.c ++ 1 ++ RTE\Network\Net_Debug.c ++ ++ ++ Net_Dbg_CM3_L.lib ++ 4 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Lib\ARM\Net_Dbg_CM3_L.lib ++ ++ ++ ++ ++ ::wolfSSL ++ ++ ++ config-Crypt.h ++ 5 ++ RTE\wolfSSL\config-Crypt.h ++ ++ ++ config-CyaSSL.h ++ 5 ++ RTE\wolfSSL\config-CyaSSL.h ++ ++ ++ settings.h ++ 5 ++ RTE\wolfSSL\settings.h ++ ++ ++ cyassl_MDK_ARM.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\cyassl_MDK_ARM.c ++ ++ ++ aes.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\aes.c ++ ++ ++ arc4.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\arc4.c ++ ++ ++ asm.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asm.c ++ ++ ++ asn.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asn.c ++ ++ ++ blake2b.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\blake2b.c ++ ++ ++ camellia.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\camellia.c ++ ++ ++ coding.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\coding.c ++ ++ ++ compress.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\compress.c ++ ++ ++ des3.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\des3.c ++ ++ ++ dh.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dh.c ++ ++ ++ dsa.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dsa.c ++ ++ ++ ecc.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc.c ++ ++ ++ ecc_fp.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc_fp.c ++ ++ ++ error.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\error.c ++ ++ ++ hc128.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hc128.c ++ ++ ++ hmac.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hmac.c ++ ++ ++ integer.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\integer.c ++ ++ ++ logging.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\logging.c ++ ++ ++ md2.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md2.c ++ ++ ++ md4.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md4.c ++ ++ ++ md5.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md5.c ++ ++ ++ memory.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\memory.c ++ ++ ++ misc.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\misc.c ++ ++ ++ pwdbased.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\pwdbased.c ++ ++ ++ rabbit.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rabbit.c ++ ++ ++ random.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\random.c ++ ++ ++ ripemd.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ripemd.c ++ ++ ++ rsa.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rsa.c ++ ++ ++ sha.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha.c ++ ++ ++ sha256.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha256.c ++ ++ ++ sha512.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha512.c ++ ++ ++ tfm.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\tfm.c ++ ++ ++ wc_port.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\wc_port.c ++ ++ ++ crl.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\crl.c ++ ++ ++ internal.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\internal.c ++ ++ ++ io.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\io.c ++ ++ ++ keys.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\keys.c ++ ++ ++ ocsp.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ocsp.c ++ ++ ++ sniffer.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\sniffer.c ++ ++ ++ ssl.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ssl.c ++ ++ ++ tls.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\tls.c ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ RTE\CMSIS\RTX_Conf_CM.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\RTE_Device.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\File_System\FS_Config.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\File_System\FS_Config_MC_0.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_BSD.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_DNS_Client.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_ETH_0.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_TCP.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_UDP.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Debug.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Other\config-Crypt.h ++ ++ ++ ++ ++ ++ RTE\Other\config-CyaSSL.h ++ ++ ++ ++ ++ ++ RTE\Other\config-RTX-TCP-FS.h ++ ++ ++ ++ ++ ++ RTE\Other\config.h ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config-Crypt.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config-CyaSSL.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config.h ++ ++ ++ ++ ++ ++ RTE\wolfSSL\settings.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/time-CortexM3-4.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/time-CortexM3-4.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/time-CortexM3-4.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/time-CortexM3-4.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,41 @@ ++/* time-STM32F2.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++ ++#include ++#define DWT ((DWT_Type *) (0xE0001000UL) ) ++typedef struct ++{ ++ uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ ++ uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ ++} DWT_Type; ++ ++extern uint32_t SystemCoreClock ; ++ ++double current_time(int reset) ++{ ++ if(reset) DWT->CYCCNT = 0 ; ++ return ((double)DWT->CYCCNT/SystemCoreClock) ; ++} +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/time-STM32F2xx.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/time-STM32F2xx.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/time-STM32F2xx.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/time-STM32F2xx.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,82 @@ ++/* time-STM32F2.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include "time.h" ++ ++#define PERIPH_BASE ((uint32_t)0x40000000) ++/*----------------------------------------------------------------------------- ++ * initialize RTC ++ *----------------------------------------------------------------------------*/ ++#include "stm32f2xx.h" ++ ++#define assert_param(a) ++ ++#if 0 ++#define RTC_RSF_MASK ((uint32_t)0xFFFFFF5F) ++#define SYNCHRO_TIMEOUT ((uint32_t) 0x00008000) ++#define Bcd2ToByte(v) \ ++ ((((uint8_t)(v & (uint8_t)0xF0) >> (uint8_t)0x4) * 10) + (v & (uint8_t)0x0F)) ++#define RTC_TR_RESERVED_MASK ((uint32_t)0x007F7F7F) ++#define RTC_TR_MNT ((uint32_t)0x00007000) ++#define RTC_TR_MNU ((uint32_t)0x00000F00) ++ ++#define PWR_OFFSET (PWR_BASE - PERIPH_BASE) ++#define CR_OFFSET (PWR_OFFSET + 0x00) ++#define DBP_BitNumber 0x08 ++#define CR_DBP_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (DBP_BitNumber * 4)) ++#define RTC_INIT_MASK ((uint32_t)0xFFFFFFFF) ++#define INITMODE_TIMEOUT ((uint32_t) 0x00010000) ++#endif ++ ++/*----------------------------------------------------------------------------- ++ * initialize TIM ++ *----------------------------------------------------------------------------*/ ++#define RCC_APB1Periph_TIM2 ((uint32_t)0x00000001) ++ ++void init_time(void) ++{ ++ uint16_t tmpcr1 = 0; ++ ++ ((uint32_t *)RCC)[0x10] |= RCC_APB1Periph_TIM2 ; ++ ++ tmpcr1 = TIM2->CR1 ; ++ tmpcr1 &= (uint16_t) (~(((uint16_t)0x0010) | ((uint16_t)0x0060) )); ++ /* CR1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS) */ ++ tmpcr1 |= (uint16_t)0x0000 ; /* CR1 |= TIM_CounterMode_Up */ ++ TIM2->CR1= tmpcr1 ; ++ ++ TIM2->ARR = 0xffffffff ; /* ARR= TIM_Period */ ++ TIM2->PSC = 60 ; /* PSC = TIM_Prescaler */ ++ TIM2->EGR = ((uint16_t)0x0001) ; /* EGR = TIM_PSCReloadMode_Immediate */ ++ ++ *(uint16_t *)(PERIPH_BASE+0x0) |=((uint16_t)0x0001) ; ++ /* TIM_Cmd(TIM2, ENABLE) ; */ ++} ++ ++double current_time() ++{ ++ return ((double)TIM2->CNT/1000000.0) ; ++} ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/time-dummy.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/time-dummy.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/time-dummy.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleClient/time-dummy.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,34 @@ ++/* time-dummy.c.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include "time.h" ++ ++struct tm *Cyassl_MDK_gmtime(const time_t *c) ++{ ++ static struct tm date ; ++ return(&date) ; ++} ++ ++time_t time(time_t * t) { return 0 ; } +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/Abstract.txt mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/Abstract.txt +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/Abstract.txt 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/Abstract.txt 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,24 @@ ++This program is a simple server example with CyaSSL/wolfCrypt library. ++ ++In order to run this program, ++Copy {PACK}\wolfSSL\CyaSSL\{version}\cyassl\certs folder and files to the SD memory. ++Set the server IP address in Net_Config_ETH_0.h ++The default server listning port is 11111, defined in test.h ++ ++For further configuration, refer config-Crypt.h and config-CyaSSL.h. ++config-SimpleServer.h is for configuring the server port number. ++ ++When testing this server, it is recommended to test against one of the standard ++CyaSSL example applications running on a desktop machine. The standard CyaSSL ++example applications are located in the CyaSSL root directory under the ++/examples directory. ++ ++For the hardware crypt on config-Crypt.h, download ++STSW-STM32062: STM32F2xx standard peripherals library at ++http://www.st.com/. Copy Libraries\STM32F2xx_StdPeriph_Driver\{inc,src} to ++ {PACK}\cyassl\IDE\MDK5-ARM\STM32F2xx_StdPeriph_Lib ++ ++ ++Support ++------- ++Please send questions or comments to support@wolfssl.com +\ No newline at end of file +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/RTE/wolfSSL/settings.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/RTE/wolfSSL/settings.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/RTE/wolfSSL/settings.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/RTE/wolfSSL/settings.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,627 @@ ++/* settings.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++/* Place OS specific preprocessor flags, defines, includes here, will be ++ included into every file because types.h includes it */ ++ ++ ++#ifndef CTAO_CRYPT_SETTINGS_H ++#define CTAO_CRYPT_SETTINGS_H ++ ++#ifdef __cplusplus ++ extern "C" { ++#endif ++ ++/* Uncomment next line if using IPHONE */ ++/* #define IPHONE */ ++ ++/* Uncomment next line if using ThreadX */ ++/* #define THREADX */ ++ ++/* Uncomment next line if using Micrium ucOS */ ++/* #define MICRIUM */ ++ ++/* Uncomment next line if using Mbed */ ++/* #define MBED */ ++ ++/* Uncomment next line if using Microchip PIC32 ethernet starter kit */ ++/* #define MICROCHIP_PIC32 */ ++ ++/* Uncomment next line if using Microchip TCP/IP stack, version 5 */ ++/* #define MICROCHIP_TCPIP_V5 */ ++ ++/* Uncomment next line if using Microchip TCP/IP stack, version 6 or later */ ++/* #define MICROCHIP_TCPIP */ ++ ++/* Uncomment next line if using FreeRTOS */ ++/* #define FREERTOS */ ++ ++/* Uncomment next line if using FreeRTOS Windows Simulator */ ++/* #define FREERTOS_WINSIM */ ++ ++/* Uncomment next line if using RTIP */ ++/* #define EBSNET */ ++ ++/* Uncomment next line if using lwip */ ++/* #define CYASSL_LWIP */ ++ ++/* Uncomment next line if building CyaSSL for a game console */ ++/* #define CYASSL_GAME_BUILD */ ++ ++/* Uncomment next line if building CyaSSL for LSR */ ++/* #define CYASSL_LSR */ ++ ++/* Uncomment next line if building CyaSSL for Freescale MQX/RTCS/MFS */ ++/* #define FREESCALE_MQX */ ++ ++/* Uncomment next line if using STM32F2 */ ++/* #define CYASSL_STM32F2 */ ++ ++/* Uncomment next line if using Comverge settings */ ++/* #define COMVERGE */ ++ ++/* Uncomment next line if using QL SEP settings */ ++/* #define CYASSL_QL */ ++ ++ ++#include ++ ++#ifdef IPHONE ++ #define SIZEOF_LONG_LONG 8 ++#endif ++ ++ ++#ifdef COMVERGE ++ #define THREADX ++ #define HAVE_NETX ++ #define CYASSL_USER_IO ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_FILESYSTEM ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++ #define NO_RSA ++ #define NO_SESSION_CACHE ++ #define HAVE_ECC ++#endif ++ ++ ++#ifdef THREADX ++ #define SIZEOF_LONG_LONG 8 ++#endif ++ ++#ifdef HAVE_NETX ++ #include "nx_api.h" ++#endif ++ ++#ifdef MICROCHIP_PIC32 ++ #define SIZEOF_LONG_LONG 8 ++ #define SINGLE_THREADED ++ #define CYASSL_USER_IO ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_FILESYSTEM ++ #define USE_FAST_MATH ++ #define TFM_TIMING_RESISTANT ++#endif ++ ++#ifdef MICROCHIP_TCPIP_V5 ++ /* include timer functions */ ++ #include "TCPIP Stack/TCPIP.h" ++#endif ++ ++#ifdef MICROCHIP_TCPIP ++ /* include timer, NTP functions */ ++ #include "system/system_services.h" ++ #ifdef MICROCHIP_MPLAB_HARMONY ++ #include "tcpip/tcpip.h" ++ #else ++ #include "tcpip/sntp.h" ++ #endif ++#endif ++ ++#ifdef MBED ++ #define SINGLE_THREADED ++ #define CYASSL_USER_IO ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++#endif /* MBED */ ++ ++#ifdef CYASSL_TYTO ++ #include "rand.h" ++ #define FREERTOS ++ #define NO_FILESYSTEM ++ #define CYASSL_USER_IO ++ #define NO_DEV_RANDOM ++ #define HAVE_ECC ++ #define HAVE_ECC_ENCRYPT ++ #define ECC_SHAMIR ++ #define HAVE_HKDF ++ #define USE_FAST_MATH ++ #define TFM_TIMING_RESISTANT ++ #define FP_MAX_BITS 512 ++ #define NO_OLD_TLS ++ #define NO_MD4 ++ #define NO_RABBIT ++ #define NO_HC128 ++ #define NO_RSA ++ #define NO_DSA ++ #define NO_PWDBASED ++ #define NO_PSK ++#endif ++ ++#ifdef FREERTOS_WINSIM ++ #define FREERTOS ++ #define USE_WINDOWS_API ++#endif ++ ++ ++/* Micrium will use Visual Studio for compilation but not the Win32 API */ ++#if defined(_WIN32) && !defined(MICRIUM) && !defined(FREERTOS) \ ++ && !defined(EBSNET) ++ #define USE_WINDOWS_API ++#endif ++ ++ ++#if defined(CYASSL_LEANPSK) && !defined(XMALLOC_USER) ++ #include ++ #define XMALLOC(s, h, type) malloc((s)) ++ #define XFREE(p, h, type) free((p)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++#endif ++ ++#if defined(XMALLOC_USER) && defined(SSN_BUILDING_LIBYASSL) ++ #undef XMALLOC ++ #define XMALLOC yaXMALLOC ++ #undef XFREE ++ #define XFREE yaXFREE ++ #undef XREALLOC ++ #define XREALLOC yaXREALLOC ++#endif ++ ++ ++#ifdef FREERTOS ++ #ifndef NO_WRITEV ++ #define NO_WRITEV ++ #endif ++ #ifndef NO_SHA512 ++ #define NO_SHA512 ++ #endif ++ #ifndef NO_DH ++ #define NO_DH ++ #endif ++ #ifndef NO_DSA ++ #define NO_DSA ++ #endif ++ #ifndef NO_HC128 ++ #define NO_HC128 ++ #endif ++ ++ #ifndef SINGLE_THREADED ++ #include "FreeRTOS.h" ++ #include "semphr.h" ++ #endif ++#endif ++ ++#ifdef EBSNET ++ #include "rtip.h" ++ ++ /* #define DEBUG_CYASSL */ ++ #define NO_CYASSL_DIR /* tbd */ ++ ++ #if (POLLOS) ++ #define SINGLE_THREADED ++ #endif ++ ++ #if (RTPLATFORM) ++ #if (!RTP_LITTLE_ENDIAN) ++ #define BIG_ENDIAN_ORDER ++ #endif ++ #else ++ #if (!KS_LITTLE_ENDIAN) ++ #define BIG_ENDIAN_ORDER ++ #endif ++ #endif ++ ++ #if (WINMSP3) ++ #undef SIZEOF_LONG ++ #define SIZEOF_LONG_LONG 8 ++ #else ++ #sslpro: settings.h - please implement SIZEOF_LONG and SIZEOF_LONG_LONG ++ #endif ++ ++ #define XMALLOC(s, h, type) ((void *)rtp_malloc((s), SSL_PRO_MALLOC)) ++ #define XFREE(p, h, type) (rtp_free(p)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++ ++#endif /* EBSNET */ ++ ++#ifdef CYASSL_GAME_BUILD ++ #define SIZEOF_LONG_LONG 8 ++ #if defined(__PPU) || defined(__XENON) ++ #define BIG_ENDIAN_ORDER ++ #endif ++#endif ++ ++#ifdef CYASSL_LSR ++ #define HAVE_WEBSERVER ++ #define SIZEOF_LONG_LONG 8 ++ #define CYASSL_LOW_MEMORY ++ #define NO_WRITEV ++ #define NO_SHA512 ++ #define NO_DH ++ #define NO_DSA ++ #define NO_HC128 ++ #define NO_DEV_RANDOM ++ #define NO_CYASSL_DIR ++ #define NO_RABBIT ++ #ifndef NO_FILESYSTEM ++ #define LSR_FS ++ #include "inc/hw_types.h" ++ #include "fs.h" ++ #endif ++ #define CYASSL_LWIP ++ #include /* for tcp errno */ ++ #define CYASSL_SAFERTOS ++ #if defined(__IAR_SYSTEMS_ICC__) ++ /* enum uses enum */ ++ #pragma diag_suppress=Pa089 ++ #endif ++#endif ++ ++#ifdef CYASSL_SAFERTOS ++ #ifndef SINGLE_THREADED ++ #include "SafeRTOS/semphr.h" ++ #endif ++ ++ #include "SafeRTOS/heap.h" ++ #define XMALLOC(s, h, type) pvPortMalloc((s)) ++ #define XFREE(p, h, type) vPortFree((p)) ++ #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n)) ++#endif ++ ++#ifdef CYASSL_LOW_MEMORY ++ #undef RSA_LOW_MEM ++ #define RSA_LOW_MEM ++ #undef CYASSL_SMALL_STACK ++ #define CYASSL_SMALL_STACK ++ #undef TFM_TIMING_RESISTANT ++ #define TFM_TIMING_RESISTANT ++#endif ++ ++#ifdef FREESCALE_MQX ++ #define SIZEOF_LONG_LONG 8 ++ #define NO_WRITEV ++ #define NO_DEV_RANDOM ++ #define NO_RABBIT ++ #define NO_CYASSL_DIR ++ #define USE_FAST_MATH ++ #define TFM_TIMING_RESISTANT ++ #define FREESCALE_K70_RNGA ++ /* #define FREESCALE_K53_RNGB */ ++ #include "mqx.h" ++ #ifndef NO_FILESYSTEM ++ #include "mfs.h" ++ #include "fio.h" ++ #endif ++ #ifndef SINGLE_THREADED ++ #include "mutex.h" ++ #endif ++ ++ #define XMALLOC(s, h, t) (void *)_mem_alloc_system((s)) ++ #define XFREE(p, h, t) {void* xp = (p); if ((xp)) _mem_free((xp));} ++ /* Note: MQX has no realloc, using fastmath above */ ++#endif ++ ++#ifdef CYASSL_STM32F2 ++ #define SIZEOF_LONG_LONG 8 ++ #define NO_DEV_RANDOM ++ #define NO_CYASSL_DIR ++ #define NO_RABBIT ++ #define STM32F2_RNG ++ #define STM32F2_CRYPTO ++ #define KEIL_INTRINSICS ++#endif ++ ++#ifdef MICRIUM ++ ++ #include "stdlib.h" ++ #include "net_cfg.h" ++ #include "ssl_cfg.h" ++ #include "net_secure_os.h" ++ ++ #define CYASSL_TYPES ++ ++ typedef CPU_INT08U byte; ++ typedef CPU_INT16U word16; ++ typedef CPU_INT32U word32; ++ ++ #if (NET_SECURE_MGR_CFG_WORD_SIZE == CPU_WORD_SIZE_32) ++ #define SIZEOF_LONG 4 ++ #undef SIZEOF_LONG_LONG ++ #else ++ #undef SIZEOF_LONG ++ #define SIZEOF_LONG_LONG 8 ++ #endif ++ ++ #define STRING_USER ++ ++ #define XSTRLEN(pstr) ((CPU_SIZE_T)Str_Len((CPU_CHAR *)(pstr))) ++ #define XSTRNCPY(pstr_dest, pstr_src, len_max) \ ++ ((CPU_CHAR *)Str_Copy_N((CPU_CHAR *)(pstr_dest), \ ++ (CPU_CHAR *)(pstr_src), (CPU_SIZE_T)(len_max))) ++ #define XSTRNCMP(pstr_1, pstr_2, len_max) \ ++ ((CPU_INT16S)Str_Cmp_N((CPU_CHAR *)(pstr_1), \ ++ (CPU_CHAR *)(pstr_2), (CPU_SIZE_T)(len_max))) ++ #define XSTRSTR(pstr, pstr_srch) \ ++ ((CPU_CHAR *)Str_Str((CPU_CHAR *)(pstr), \ ++ (CPU_CHAR *)(pstr_srch))) ++ #define XMEMSET(pmem, data_val, size) \ ++ ((void)Mem_Set((void *)(pmem), (CPU_INT08U) (data_val), \ ++ (CPU_SIZE_T)(size))) ++ #define XMEMCPY(pdest, psrc, size) ((void)Mem_Copy((void *)(pdest), \ ++ (void *)(psrc), (CPU_SIZE_T)(size))) ++ #define XMEMCMP(pmem_1, pmem_2, size) \ ++ (((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), (void *)(pmem_2), \ ++ (CPU_SIZE_T)(size))) ? DEF_NO : DEF_YES) ++ #define XMEMMOVE XMEMCPY ++ ++#if (NET_SECURE_MGR_CFG_EN == DEF_ENABLED) ++ #define MICRIUM_MALLOC ++ #define XMALLOC(s, h, type) ((void *)NetSecure_BlkGet((CPU_INT08U)(type), \ ++ (CPU_SIZE_T)(s), (void *)0)) ++ #define XFREE(p, h, type) (NetSecure_BlkFree((CPU_INT08U)(type), \ ++ (p), (void *)0)) ++ #define XREALLOC(p, n, h, t) realloc((p), (n)) ++#endif ++ ++ #if (NET_SECURE_MGR_CFG_FS_EN == DEF_ENABLED) ++ #undef NO_FILESYSTEM ++ #else ++ #define NO_FILESYSTEM ++ #endif ++ ++ #if (SSL_CFG_TRACE_LEVEL == CYASSL_TRACE_LEVEL_DBG) ++ #define DEBUG_CYASSL ++ #else ++ #undef DEBUG_CYASSL ++ #endif ++ ++ #if (SSL_CFG_OPENSSL_EN == DEF_ENABLED) ++ #define OPENSSL_EXTRA ++ #else ++ #undef OPENSSL_EXTRA ++ #endif ++ ++ #if (SSL_CFG_MULTI_THREAD_EN == DEF_ENABLED) ++ #undef SINGLE_THREADED ++ #else ++ #define SINGLE_THREADED ++ #endif ++ ++ #if (SSL_CFG_DH_EN == DEF_ENABLED) ++ #undef NO_DH ++ #else ++ #define NO_DH ++ #endif ++ ++ #if (SSL_CFG_DSA_EN == DEF_ENABLED) ++ #undef NO_DSA ++ #else ++ #define NO_DSA ++ #endif ++ ++ #if (SSL_CFG_PSK_EN == DEF_ENABLED) ++ #undef NO_PSK ++ #else ++ #define NO_PSK ++ #endif ++ ++ #if (SSL_CFG_3DES_EN == DEF_ENABLED) ++ #undef NO_DES ++ #else ++ #define NO_DES ++ #endif ++ ++ #if (SSL_CFG_AES_EN == DEF_ENABLED) ++ #undef NO_AES ++ #else ++ #define NO_AES ++ #endif ++ ++ #if (SSL_CFG_RC4_EN == DEF_ENABLED) ++ #undef NO_RC4 ++ #else ++ #define NO_RC4 ++ #endif ++ ++ #if (SSL_CFG_RABBIT_EN == DEF_ENABLED) ++ #undef NO_RABBIT ++ #else ++ #define NO_RABBIT ++ #endif ++ ++ #if (SSL_CFG_HC128_EN == DEF_ENABLED) ++ #undef NO_HC128 ++ #else ++ #define NO_HC128 ++ #endif ++ ++ #if (CPU_CFG_ENDIAN_TYPE == CPU_ENDIAN_TYPE_BIG) ++ #define BIG_ENDIAN_ORDER ++ #else ++ #undef BIG_ENDIAN_ORDER ++ #define LITTLE_ENDIAN_ORDER ++ #endif ++ ++ #if (SSL_CFG_MD4_EN == DEF_ENABLED) ++ #undef NO_MD4 ++ #else ++ #define NO_MD4 ++ #endif ++ ++ #if (SSL_CFG_WRITEV_EN == DEF_ENABLED) ++ #undef NO_WRITEV ++ #else ++ #define NO_WRITEV ++ #endif ++ ++ #if (SSL_CFG_USER_RNG_SEED_EN == DEF_ENABLED) ++ #define NO_DEV_RANDOM ++ #else ++ #undef NO_DEV_RANDOM ++ #endif ++ ++ #if (SSL_CFG_USER_IO_EN == DEF_ENABLED) ++ #define CYASSL_USER_IO ++ #else ++ #undef CYASSL_USER_IO ++ #endif ++ ++ #if (SSL_CFG_DYNAMIC_BUFFERS_EN == DEF_ENABLED) ++ #undef LARGE_STATIC_BUFFERS ++ #undef STATIC_CHUNKS_ONLY ++ #else ++ #define LARGE_STATIC_BUFFERS ++ #define STATIC_CHUNKS_ONLY ++ #endif ++ ++ #if (SSL_CFG_DER_LOAD_EN == DEF_ENABLED) ++ #define CYASSL_DER_LOAD ++ #else ++ #undef CYASSL_DER_LOAD ++ #endif ++ ++ #if (SSL_CFG_DTLS_EN == DEF_ENABLED) ++ #define CYASSL_DTLS ++ #else ++ #undef CYASSL_DTLS ++ #endif ++ ++ #if (SSL_CFG_CALLBACKS_EN == DEF_ENABLED) ++ #define CYASSL_CALLBACKS ++ #else ++ #undef CYASSL_CALLBACKS ++ #endif ++ ++ #if (SSL_CFG_FAST_MATH_EN == DEF_ENABLED) ++ #define USE_FAST_MATH ++ #else ++ #undef USE_FAST_MATH ++ #endif ++ ++ #if (SSL_CFG_TFM_TIMING_RESISTANT_EN == DEF_ENABLED) ++ #define TFM_TIMING_RESISTANT ++ #else ++ #undef TFM_TIMING_RESISTANT ++ #endif ++ ++#endif /* MICRIUM */ ++ ++ ++#ifdef CYASSL_QL ++ #ifndef CYASSL_SEP ++ #define CYASSL_SEP ++ #endif ++ #ifndef OPENSSL_EXTRA ++ #define OPENSSL_EXTRA ++ #endif ++ #ifndef SESSION_CERTS ++ #define SESSION_CERTS ++ #endif ++ #ifndef HAVE_AESCCM ++ #define HAVE_AESCCM ++ #endif ++ #ifndef ATOMIC_USER ++ #define ATOMIC_USER ++ #endif ++ #ifndef CYASSL_DER_LOAD ++ #define CYASSL_DER_LOAD ++ #endif ++ #ifndef KEEP_PEER_CERT ++ #define KEEP_PEER_CERT ++ #endif ++ #ifndef HAVE_ECC ++ #define HAVE_ECC ++ #endif ++ #ifndef SESSION_INDEX ++ #define SESSION_INDEX ++ #endif ++#endif /* CYASSL_QL */ ++ ++ ++#if !defined(XMALLOC_USER) && !defined(MICRIUM_MALLOC) && \ ++ !defined(CYASSL_LEANPSK) && !defined(NO_CYASSL_MEMORY) ++ #define USE_CYASSL_MEMORY ++#endif ++ ++ ++#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) ++ #undef KEEP_PEER_CERT ++ #define KEEP_PEER_CERT ++#endif ++ ++ ++/* stream ciphers except arc4 need 32bit alignment, intel ok without */ ++#ifndef XSTREAM_ALIGNMENT ++ #if defined(__x86_64__) || defined(__ia64__) || defined(__i386__) ++ #define NO_XSTREAM_ALIGNMENT ++ #else ++ #define XSTREAM_ALIGNMENT ++ #endif ++#endif ++ ++ ++/* if using hardware crypto and have alignment requirements, specify the ++ requirement here. The record header of SSL/TLS will prvent easy alignment. ++ This hint tries to help as much as possible. */ ++#ifndef CYASSL_GENERAL_ALIGNMENT ++ #ifdef CYASSL_AESNI ++ #define CYASSL_GENERAL_ALIGNMENT 16 ++ #elif defined(XSTREAM_ALIGNMENT) ++ #define CYASSL_GENERAL_ALIGNMENT 4 ++ #else ++ #define CYASSL_GENERAL_ALIGNMENT 0 ++ #endif ++#endif ++ ++#ifdef HAVE_CRL ++ /* not widely supported yet */ ++ #undef NO_SKID ++ #define NO_SKID ++#endif ++ ++/* Place any other flags or defines here */ ++ ++ ++#ifdef __cplusplus ++ } /* extern "C" */ ++#endif ++ ++ ++#endif /* CTAO_CRYPT_SETTINGS_H */ ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/SimpleServer.uvoptx mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/SimpleServer.uvoptx +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/SimpleServer.uvoptx 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/SimpleServer.uvoptx 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,1250 @@ ++ ++ ++ ++ 1.0 ++ ++
### uVision Project, (C) Keil Software
++ ++ ++ *.c ++ *.s*; *.src; *.a* ++ *.obj ++ *.lib ++ *.txt; *.h; *.inc ++ *.plm ++ *.cpp ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ SimpleServer ++ 0x4 ++ ARM-ADS ++ ++ 120000000 ++ ++ 1 ++ 1 ++ 0 ++ 1 ++ ++ ++ 1 ++ 65535 ++ 0 ++ 0 ++ 0 ++ ++ ++ 79 ++ 66 ++ 8 ++ .\Object\ ++ ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ ++ ++ 1 ++ 0 ++ 1 ++ ++ 255 ++ ++ ++ 0 ++ Schematics (MCBSTM32F200) ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\Documents\mcbstm32f200-schematics.pdf ++ ++ ++ 1 ++ User Manual (MCBSTM32F200) ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\Documents\mcbstm32f200.chm ++ ++ ++ 2 ++ MCBSTM32F200 Evaluation Board Web Page (MCBSTM32F200) ++ http://www.keil.com/mcbstm32f200/ ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 8 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ .\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ 0 ++ DLGTARM ++ (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) ++ ++ ++ 0 ++ ARMDBGFLAGS ++ ++ ++ ++ 0 ++ ULP2CM3 ++ -UP1135060 -O206 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO19 -TC120000000 -TP18 -TDX0 -TDD0 -TDS8000 -TDT0 -TDC1F -TIE1 -TIP1 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024.flm -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm) ++ ++ ++ 0 ++ DLGUARM ++ ++ ++ ++ 0 ++ UL2CM3 ++ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm)) ++ ++ ++ ++ ++ ++ 1 ++ 8 ++ 0x20000408 ++ ++ ++ ++ ++ 2 ++ 8 ++ 0x8004dc8 ++ ++ ++ ++ 0 ++ ++ ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ Source ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\main.c ++ main.c ++ 0 ++ 0 ++ ++ ++ 1 ++ 2 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\server.c ++ server.c ++ 0 ++ 0 ++ ++ ++ ++ ++ Configuration ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 2 ++ 3 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\wolfSSL\config-CyaSSL.h ++ config-CyaSSL.h ++ 0 ++ 0 ++ ++ ++ 2 ++ 4 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\wolfSSL\config-Crypt.h ++ config-Crypt.h ++ 0 ++ 0 ++ ++ ++ 2 ++ 5 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\RTE\Network\Net_Config_ETH_0.h ++ Net_Config_ETH_0.h ++ 0 ++ 0 ++ ++ ++ 2 ++ 6 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\config-SimpleServer.h ++ config-SimpleServer.h ++ 0 ++ 0 ++ ++ ++ ++ ++ Documentation ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ 3 ++ 7 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\Abstract.txt ++ Abstract.txt ++ 0 ++ 0 ++ ++ ++ ++ ++ Devices ++ 1 ++ 0 ++ 0 ++ 0 ++ ++ 4 ++ 8 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ .\time-dummy.c ++ time-dummy.c ++ 0 ++ 0 ++ ++ ++ ++ ++ ::CMSIS ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 5 ++ 9 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\CMSIS\RTX_Conf_CM.c ++ RTX_Conf_CM.c ++ 1 ++ 0 ++ ++ ++ 5 ++ 10 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.4\CMSIS_RTX\Lib\ARM\RTX_CM3.lib ++ RTX_CM3.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Device ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 6 ++ 11 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\RTE_Device.h ++ RTE_Device.h ++ 1 ++ 0 ++ ++ ++ 6 ++ 12 ++ 2 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ startup_stm32f2xx.s ++ 1 ++ 0 ++ ++ ++ 6 ++ 13 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ system_stm32f2xx.c ++ 1 ++ 0 ++ ++ ++ 6 ++ 14 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\DMA_STM32F2xx.c ++ DMA_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 6 ++ 15 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\GPIO_STM32F2xx.c ++ GPIO_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Drivers ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 7 ++ 16 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\EMAC_STM32F2xx.c ++ EMAC_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 7 ++ 17 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\MCI_STM32F2xx.c ++ MCI_STM32F2xx.c ++ 1 ++ 0 ++ ++ ++ 7 ++ 18 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Driver\PHY_ST802RT1.c ++ PHY_ST802RT1.c ++ 1 ++ 0 ++ ++ ++ ++ ++ ::File System ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 8 ++ 19 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\File_System\FS_Config.c ++ FS_Config.c ++ 1 ++ 0 ++ ++ ++ 8 ++ 20 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\File_System\FS_Config_MC_0.h ++ FS_Config_MC_0.h ++ 1 ++ 0 ++ ++ ++ 8 ++ 21 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\FileSystem\Lib\ARM\FS_LFN_CM3_L.lib ++ FS_LFN_CM3_L.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::Network ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 9 ++ 22 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config.c ++ Net_Config.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 23 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_BSD.h ++ Net_Config_BSD.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 24 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_DNS_Client.h ++ Net_Config_DNS_Client.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 25 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_ETH_0.h ++ Net_Config_ETH_0.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 26 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_TCP.h ++ Net_Config_TCP.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 27 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Config_UDP.h ++ Net_Config_UDP.h ++ 1 ++ 0 ++ ++ ++ 9 ++ 28 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\Network\Net_Debug.c ++ Net_Debug.c ++ 1 ++ 0 ++ ++ ++ 9 ++ 29 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Lib\ARM\Net_Dbg_CM3_L.lib ++ Net_Dbg_CM3_L.lib ++ 1 ++ 0 ++ ++ ++ ++ ++ ::wolfSSL ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ 10 ++ 30 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\config-Crypt.h ++ config-Crypt.h ++ 1 ++ 0 ++ ++ ++ 10 ++ 31 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\config-CyaSSL.h ++ config-CyaSSL.h ++ 1 ++ 0 ++ ++ ++ 10 ++ 32 ++ 5 ++ 0 ++ 0 ++ 0 ++ 0 ++ RTE\wolfSSL\settings.h ++ settings.h ++ 1 ++ 0 ++ ++ ++ 10 ++ 33 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\cyassl_MDK_ARM.c ++ cyassl_MDK_ARM.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 34 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\aes.c ++ aes.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 35 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\arc4.c ++ arc4.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 36 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asm.c ++ asm.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 37 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asn.c ++ asn.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 38 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\blake2b.c ++ blake2b.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 39 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\camellia.c ++ camellia.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 40 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\coding.c ++ coding.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 41 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\compress.c ++ compress.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 42 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\des3.c ++ des3.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 43 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dh.c ++ dh.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 44 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dsa.c ++ dsa.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 45 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc.c ++ ecc.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 46 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc_fp.c ++ ecc_fp.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 47 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\error.c ++ error.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 48 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hc128.c ++ hc128.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 49 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hmac.c ++ hmac.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 50 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\integer.c ++ integer.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 51 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\logging.c ++ logging.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 52 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md2.c ++ md2.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 53 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md4.c ++ md4.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 54 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md5.c ++ md5.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 55 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\memory.c ++ memory.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 56 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\misc.c ++ misc.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 57 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\pwdbased.c ++ pwdbased.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 58 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rabbit.c ++ rabbit.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 59 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\random.c ++ random.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 60 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ripemd.c ++ ripemd.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 61 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rsa.c ++ rsa.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 62 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha.c ++ sha.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 63 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha256.c ++ sha256.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 64 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha512.c ++ sha512.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 65 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\tfm.c ++ tfm.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 66 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\wc_port.c ++ wc_port.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 67 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\crl.c ++ crl.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 68 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\internal.c ++ internal.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 69 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\io.c ++ io.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 70 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\keys.c ++ keys.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 71 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ocsp.c ++ ocsp.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 72 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\sniffer.c ++ sniffer.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 73 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ssl.c ++ ssl.c ++ 1 ++ 0 ++ ++ ++ 10 ++ 74 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\tls.c ++ tls.c ++ 1 ++ 0 ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/SimpleServer.uvprojx mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/SimpleServer.uvprojx +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/SimpleServer.uvprojx 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/SimpleServer.uvprojx 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,1157 @@ ++ ++ ++ ++ 2.1 ++ ++
### uVision Project, (C) Keil Software
++ ++ ++ ++ SimpleServer ++ 0x4 ++ ARM-ADS ++ ++ ++ STM32F207IG ++ STMicroelectronics ++ IRAM(0x20000000,0x20000) IROM(0x08000000,0x100000) CPUTYPE("Cortex-M3") CLOCK(120000000) ELITTLE ++ ++ ++ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F2xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F207IG$Flash\STM32F2xx_1024.flm)) ++ 0 ++ $$Device:STM32F207IG$Device\Include\stm32f2xx.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ $$Device:STM32F207IG$SVD\STM32F20x.svd ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ ++ .\Object\ ++ SimpleServer ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ .\Object\ ++ 1 ++ 0 ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ ++ 0 ++ 0 ++ ++ 0 ++ ++ ++ ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 3 ++ ++ ++ 1 ++ ++ ++ SARMCM3.DLL ++ -REMAP -MPU ++ DCM.DLL ++ -pCM3 ++ SARMCM3.DLL ++ -REMAP -MPU ++ TCM.DLL ++ -pCM3 ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 16 ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ ++ 0 ++ 8 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ .\STM32_SWO.ini ++ BIN\ULP2CM3.DLL ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 4100 ++ ++ 1 ++ BIN\ULP2CM3.DLL ++ "" () ++ ++ ++ ++ ++ 0 ++ ++ ++ ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 1 ++ 0 ++ 0 ++ "Cortex-M3" ++ ++ 1 ++ 0 ++ 0 ++ 1 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 8 ++ 0 ++ 0 ++ 0 ++ 3 ++ 3 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 1 ++ 0x8000000 ++ 0x100000 ++ ++ ++ 1 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ 0 ++ 0x20000000 ++ 0x20000 ++ ++ ++ 0 ++ 0x0 ++ 0x0 ++ ++ ++ ++ ++ ++ 1 ++ 4 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ HAVE_CONFIG_H MDK_CONF_SimpleServer ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ 0 ++ 0 ++ 1 ++ 0 ++ 0x08000000 ++ 0x20000000 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Source ++ ++ ++ main.c ++ 1 ++ .\main.c ++ ++ ++ server.c ++ 1 ++ .\server.c ++ ++ ++ ++ ++ Configuration ++ ++ ++ config-CyaSSL.h ++ 5 ++ .\RTE\wolfSSL\config-CyaSSL.h ++ ++ ++ config-Crypt.h ++ 5 ++ .\RTE\wolfSSL\config-Crypt.h ++ ++ ++ Net_Config_ETH_0.h ++ 5 ++ .\RTE\Network\Net_Config_ETH_0.h ++ ++ ++ config-SimpleServer.h ++ 5 ++ .\config-SimpleServer.h ++ ++ ++ ++ ++ Documentation ++ ++ ++ Abstract.txt ++ 5 ++ .\Abstract.txt ++ ++ ++ ++ ++ Devices ++ ++ ++ time-dummy.c ++ 1 ++ .\time-dummy.c ++ ++ ++ ++ ++ ::CMSIS ++ ++ ++ RTX_Conf_CM.c ++ 1 ++ RTE\CMSIS\RTX_Conf_CM.c ++ ++ ++ RTX_CM3.lib ++ 4 ++ C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.4\CMSIS_RTX\Lib\ARM\RTX_CM3.lib ++ ++ ++ ++ ++ ::Device ++ ++ ++ RTE_Device.h ++ 5 ++ RTE\Device\STM32F207IG\RTE_Device.h ++ ++ ++ startup_stm32f2xx.s ++ 2 ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ ++ ++ system_stm32f2xx.c ++ 1 ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ ++ ++ DMA_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\DMA_STM32F2xx.c ++ ++ ++ GPIO_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\GPIO_STM32F2xx.c ++ ++ ++ ++ ++ ::Drivers ++ ++ ++ EMAC_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\EMAC_STM32F2xx.c ++ ++ ++ MCI_STM32F2xx.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.7\RTE_Driver\MCI_STM32F2xx.c ++ ++ ++ PHY_ST802RT1.c ++ 1 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Driver\PHY_ST802RT1.c ++ ++ ++ ++ ++ ::File System ++ ++ ++ FS_Config.c ++ 1 ++ RTE\File_System\FS_Config.c ++ ++ ++ FS_Config_MC_0.h ++ 5 ++ RTE\File_System\FS_Config_MC_0.h ++ ++ ++ FS_LFN_CM3_L.lib ++ 4 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\FileSystem\Lib\ARM\FS_LFN_CM3_L.lib ++ ++ ++ ++ ++ ::Network ++ ++ ++ Net_Config.c ++ 1 ++ RTE\Network\Net_Config.c ++ ++ ++ Net_Config_BSD.h ++ 5 ++ RTE\Network\Net_Config_BSD.h ++ ++ ++ Net_Config_DNS_Client.h ++ 5 ++ RTE\Network\Net_Config_DNS_Client.h ++ ++ ++ Net_Config_ETH_0.h ++ 5 ++ RTE\Network\Net_Config_ETH_0.h ++ ++ ++ Net_Config_TCP.h ++ 5 ++ RTE\Network\Net_Config_TCP.h ++ ++ ++ Net_Config_UDP.h ++ 5 ++ RTE\Network\Net_Config_UDP.h ++ ++ ++ Net_Debug.c ++ 1 ++ RTE\Network\Net_Debug.c ++ ++ ++ Net_Dbg_CM3_L.lib ++ 4 ++ C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.6\Network\Lib\ARM\Net_Dbg_CM3_L.lib ++ ++ ++ ++ ++ ::wolfSSL ++ ++ ++ config-Crypt.h ++ 5 ++ RTE\wolfSSL\config-Crypt.h ++ ++ ++ config-CyaSSL.h ++ 5 ++ RTE\wolfSSL\config-CyaSSL.h ++ ++ ++ settings.h ++ 5 ++ RTE\wolfSSL\settings.h ++ ++ ++ cyassl_MDK_ARM.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\IDE\MDK5-ARM\Src\cyassl_MDK_ARM.c ++ ++ ++ aes.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\aes.c ++ ++ ++ arc4.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\arc4.c ++ ++ ++ asm.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asm.c ++ ++ ++ asn.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\asn.c ++ ++ ++ blake2b.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\blake2b.c ++ ++ ++ camellia.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\camellia.c ++ ++ ++ coding.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\coding.c ++ ++ ++ compress.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\compress.c ++ ++ ++ des3.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\des3.c ++ ++ ++ dh.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dh.c ++ ++ ++ dsa.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\dsa.c ++ ++ ++ ecc.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc.c ++ ++ ++ ecc_fp.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ecc_fp.c ++ ++ ++ error.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\error.c ++ ++ ++ hc128.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hc128.c ++ ++ ++ hmac.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\hmac.c ++ ++ ++ integer.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\integer.c ++ ++ ++ logging.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\logging.c ++ ++ ++ md2.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md2.c ++ ++ ++ md4.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md4.c ++ ++ ++ md5.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\md5.c ++ ++ ++ memory.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\memory.c ++ ++ ++ misc.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\misc.c ++ ++ ++ pwdbased.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\pwdbased.c ++ ++ ++ rabbit.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rabbit.c ++ ++ ++ random.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\random.c ++ ++ ++ ripemd.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\ripemd.c ++ ++ ++ rsa.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\rsa.c ++ ++ ++ sha.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha.c ++ ++ ++ sha256.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha256.c ++ ++ ++ sha512.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\sha512.c ++ ++ ++ tfm.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\tfm.c ++ ++ ++ wc_port.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\ctaocrypt\src\wc_port.c ++ ++ ++ crl.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\crl.c ++ ++ ++ internal.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\internal.c ++ ++ ++ io.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\io.c ++ ++ ++ keys.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\keys.c ++ ++ ++ ocsp.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ocsp.c ++ ++ ++ sniffer.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\sniffer.c ++ ++ ++ ssl.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\ssl.c ++ ++ ++ tls.c ++ 1 ++ C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\3.1.0\cyassl\src\tls.c ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ RTE\CMSIS\RTX_Conf_CM.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\RTE_Device.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\startup_stm32f2xx.s ++ ++ ++ ++ ++ ++ ++ ++ RTE\Device\STM32F207IG\system_stm32f2xx.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\File_System\FS_Config.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\File_System\FS_Config_MC_0.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_BSD.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_DNS_Client.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_ETH_0.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_TCP.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Config_UDP.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\Network\Net_Debug.c ++ ++ ++ ++ ++ ++ ++ ++ RTE\Other\config-Crypt.h ++ ++ ++ ++ ++ ++ RTE\Other\config-CyaSSL.h ++ ++ ++ ++ ++ ++ RTE\Other\config-RTX-TCP-FS.h ++ ++ ++ ++ ++ ++ RTE\Other\config.h ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config-Crypt.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config-CyaSSL.h ++ ++ ++ ++ ++ ++ ++ ++ RTE\wolfSSL\config.h ++ ++ ++ ++ ++ ++ RTE\wolfSSL\settings.h ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
+diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/config-SimpleServer.h mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/config-SimpleServer.h +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/config-SimpleServer.h 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/config-SimpleServer.h 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,31 @@ ++/* config-RTX-TCP-FS.h ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++ ++ ++// <<< Use Configuration Wizard in Context Menu >>> ++// Build Target: Simple Server ++// Listen Port Number ++// Default: "11111" ++#define CYASSL_LISTEN_PORT "443" ++ ++// ++// <<< end of configuration section >>> +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/main.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/main.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/main.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/main.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,105 @@ ++/* main.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++#include ++ ++#include "cmsis_os.h" ++#include "rl_fs.h" ++#include "rl_net.h" ++#include ++#include "cyassl_MDK_ARM.h" ++#include ++ ++#include "config-SimpleServer.h" ++ ++/*----------------------------------------------------------------------------- ++ * Initialize a Flash Memory Card ++ *----------------------------------------------------------------------------*/ ++static void init_filesystem (void) { ++ int32_t retv; ++ ++ retv = finit ("M0:"); ++ if (retv == 0) { ++ retv = fmount ("M0:"); ++ if (retv == 0) { ++ printf ("Drive M0 ready!\n"); ++ } ++ else { ++ printf ("Drive M0 mount failed!\n"); ++ } ++ } else { ++ printf ("Drive M0 initialization failed!\n"); ++ } ++} ++ ++/*----------------------------------------------------------------------------- ++ * TCP/IP tasks ++ *----------------------------------------------------------------------------*/ ++void tcp_poll (void const *arg) ++{ ++ CYASSL_MSG("TCP polling started.\n") ; ++ while (1) { ++ net_main (); ++ osDelay(1) ; ++ } ++} ++ ++typedef struct func_args { ++ int argc; ++ char** argv; ++} func_args; ++ ++extern void server_test(func_args * args) ; ++extern void init_time(void) ; ++ ++ osThreadDef (tcp_poll, osPriorityHigh , 1, 0) ; ++/*----------------------------------------------------------------------------- ++ * mian entry ++ *----------------------------------------------------------------------------*/ ++int myoptind = 0; ++char* myoptarg = NULL; ++ ++int main() ++{ ++ static char *argv[] = { "server", "-p", CYASSL_LISTEN_PORT, "-d"} ; ++ static func_args args = { 4, argv } ; ++ ++ init_filesystem (); ++ net_initialize() ; ++ osThreadCreate (osThread (tcp_poll), NULL); ++ osDelay(10000) ; /* wait for DHCP */ ++ #if defined(DEBUG_CYASSL) ++ printf("Turning ON Debug message\n") ; ++ CyaSSL_Debugging_ON() ; ++ #endif ++ ++ printf("Simple Server: Started\n") ; ++ while(1) { ++ server_test(&args) ; ++ printf("Enter any key to iterate.\n") ; ++ getchar() ; ++ } ++} +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/server.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/server.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/server.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/server.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,605 @@ ++/* server.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++ ++#if !defined(CYASSL_TRACK_MEMORY) && !defined(NO_MAIN_DRIVER) ++ /* in case memory tracker wants stats */ ++ #define CYASSL_TRACK_MEMORY ++#endif ++ ++#if defined(CYASSL_MDK_ARM) ++ #include ++ #include ++ ++ #if defined(CYASSL_MDK5) ++ #include "cmsis_os.h" ++ #include "rl_fs.h" ++ #include "rl_net.h" ++ #else ++ #include "rtl.h" ++ #endif ++ ++ #include "cyassl_MDK_ARM.h" ++#endif ++#include ++#include ++ ++#include "examples/server/server.h" ++ ++ ++#ifdef CYASSL_CALLBACKS ++ int srvHandShakeCB(HandShakeInfo*); ++ int srvTimeoutCB(TimeoutInfo*); ++ Timeval srvTo; ++#endif ++ ++static void NonBlockingSSL_Accept(SSL* ssl) ++{ ++#ifndef CYASSL_CALLBACKS ++ int ret = SSL_accept(ssl); ++#else ++ int ret = CyaSSL_accept_ex(ssl, srvHandShakeCB, srvTimeoutCB, srvTo); ++#endif ++ int error = SSL_get_error(ssl, 0); ++ SOCKET_T sockfd = (SOCKET_T)CyaSSL_get_fd(ssl); ++ int select_ret; ++ ++ while (ret != SSL_SUCCESS && (error == SSL_ERROR_WANT_READ || ++ error == SSL_ERROR_WANT_WRITE)) { ++ int currTimeout = 1; ++ ++ if (error == SSL_ERROR_WANT_READ) ++ printf("... server would read block\n"); ++ else ++ printf("... server would write block\n"); ++ ++#ifdef CYASSL_DTLS ++ currTimeout = CyaSSL_dtls_get_current_timeout(ssl); ++#endif ++ select_ret = tcp_select(sockfd, currTimeout); ++ ++ if ((select_ret == TEST_RECV_READY) || ++ (select_ret == TEST_ERROR_READY)) { ++ #ifndef CYASSL_CALLBACKS ++ ret = SSL_accept(ssl); ++ #else ++ ret = CyaSSL_accept_ex(ssl, ++ srvHandShakeCB, srvTimeoutCB, srvTo); ++ #endif ++ error = SSL_get_error(ssl, 0); ++ } ++ else if (select_ret == TEST_TIMEOUT && !CyaSSL_dtls(ssl)) { ++ error = SSL_ERROR_WANT_READ; ++ } ++#ifdef CYASSL_DTLS ++ else if (select_ret == TEST_TIMEOUT && CyaSSL_dtls(ssl) && ++ CyaSSL_dtls_got_timeout(ssl) >= 0) { ++ error = SSL_ERROR_WANT_READ; ++ } ++#endif ++ else { ++ error = SSL_FATAL_ERROR; ++ } ++ } ++ if (ret != SSL_SUCCESS) ++ err_sys("SSL_accept failed"); ++} ++ ++ ++static void Usage(void) ++{ ++ printf("server " LIBCYASSL_VERSION_STRING ++ " NOTE: All files relative to CyaSSL home dir\n"); ++ printf("-? Help, print this usage\n"); ++ printf("-p Port to listen on, not 0, default %d\n", yasslPort); ++ printf("-v SSL version [0-3], SSLv3(0) - TLS1.2(3)), default %d\n", ++ SERVER_DEFAULT_VERSION); ++ printf("-l Cipher list\n"); ++ printf("-c Certificate file, default %s\n", svrCert); ++ printf("-k Key file, default %s\n", svrKey); ++ printf("-A Certificate Authority file, default %s\n", cliCert); ++ printf("-d Disable client cert check\n"); ++ printf("-b Bind to any interface instead of localhost only\n"); ++ printf("-s Use pre Shared keys\n"); ++ printf("-t Track CyaSSL memory use\n"); ++ printf("-u Use UDP DTLS," ++ " add -v 2 for DTLSv1 (default), -v 3 for DTLSv1.2\n"); ++ printf("-f Fewer packets/group messages\n"); ++ printf("-N Use Non-blocking sockets\n"); ++ printf("-S Use Host Name Indication\n"); ++#ifdef HAVE_OCSP ++ printf("-o Perform OCSP lookup on peer certificate\n"); ++ printf("-O Perform OCSP lookup using as responder\n"); ++#endif ++#ifdef HAVE_PK_CALLBACKS ++ printf("-P Public Key Callbacks\n"); ++#endif ++} ++ ++THREAD_RETURN CYASSL_THREAD server_test(void* args) ++{ ++ SOCKET_T sockfd = 0; ++ SOCKET_T clientfd = 0; ++ ++ SSL_METHOD* method = 0; ++ SSL_CTX* ctx = 0; ++ SSL* ssl = 0; ++ ++ char msg[] = "I hear you fa shizzle!"; ++ char input[80]; ++ int idx; ++ int ch; ++ int version = SERVER_DEFAULT_VERSION; ++ int doCliCertCheck = 1; ++ int useAnyAddr = 0; ++ word16 port = yasslPort; ++ int usePsk = 0; ++ int doDTLS = 0; ++ int useNtruKey = 0; ++ int nonBlocking = 0; ++ int trackMemory = 0; ++ int fewerPackets = 0; ++ int pkCallbacks = 0; ++ char* cipherList = NULL; ++ const char* verifyCert = cliCert; ++ const char* ourCert = svrCert; ++ const char* ourKey = svrKey; ++ int argc = ((func_args*)args)->argc; ++ char** argv = ((func_args*)args)->argv; ++ ++#ifdef HAVE_SNI ++ char* sniHostName = NULL; ++#endif ++ ++#ifdef HAVE_OCSP ++ int useOcsp = 0; ++ char* ocspUrl = NULL; ++#endif ++ ++ ((func_args*)args)->return_code = -1; /* error state */ ++ ++#ifdef NO_RSA ++ verifyCert = (char*)cliEccCert; ++ ourCert = (char*)eccCert; ++ ourKey = (char*)eccKey; ++#endif ++ (void)trackMemory; ++ (void)pkCallbacks; ++ ++ while ((ch = mygetopt(argc, argv, "?dbstnNufPp:v:l:A:c:k:S:oO:")) != -1) { ++ switch (ch) { ++ case '?' : ++ Usage(); ++ exit(EXIT_SUCCESS); ++ ++ case 'd' : ++ doCliCertCheck = 0; ++ break; ++ ++ case 'b' : ++ useAnyAddr = 1; ++ break; ++ ++ case 's' : ++ usePsk = 1; ++ break; ++ ++ case 't' : ++ #ifdef USE_CYASSL_MEMORY ++ trackMemory = 1; ++ #endif ++ break; ++ ++ case 'n' : ++ useNtruKey = 1; ++ break; ++ ++ case 'u' : ++ doDTLS = 1; ++ break; ++ ++ case 'f' : ++ fewerPackets = 1; ++ break; ++ ++ case 'P' : ++ #ifdef HAVE_PK_CALLBACKS ++ pkCallbacks = 1; ++ #endif ++ break; ++ ++ case 'p' : ++ port = (word16)atoi(myoptarg); ++ #if !defined(NO_MAIN_DRIVER) || defined(USE_WINDOWS_API) ++ if (port == 0) ++ err_sys("port number cannot be 0"); ++ #endif ++ break; ++ ++ case 'v' : ++ version = atoi(myoptarg); ++ if (version < 0 || version > 3) { ++ Usage(); ++ exit(MY_EX_USAGE); ++ } ++ break; ++ ++ case 'l' : ++ cipherList = myoptarg; ++ break; ++ ++ case 'A' : ++ verifyCert = myoptarg; ++ break; ++ ++ case 'c' : ++ ourCert = myoptarg; ++ break; ++ ++ case 'k' : ++ ourKey = myoptarg; ++ break; ++ ++ case 'N': ++ nonBlocking = 1; ++ break; ++ ++ case 'S' : ++ #ifdef HAVE_SNI ++ sniHostName = myoptarg; ++ #endif ++ break; ++ ++ case 'o' : ++ #ifdef HAVE_OCSP ++ useOcsp = 1; ++ #endif ++ break; ++ ++ case 'O' : ++ #ifdef HAVE_OCSP ++ useOcsp = 1; ++ ocspUrl = myoptarg; ++ #endif ++ break; ++ ++ default: ++ Usage(); ++ exit(MY_EX_USAGE); ++ } ++ } ++ ++ myoptind = 0; /* reset for test cases */ ++ ++ /* sort out DTLS versus TLS versions */ ++ if (version == CLIENT_INVALID_VERSION) { ++ if (doDTLS) ++ version = CLIENT_DTLS_DEFAULT_VERSION; ++ else ++ version = CLIENT_DEFAULT_VERSION; ++ } ++ else { ++ if (doDTLS) { ++ if (version == 3) ++ version = -2; ++ else ++ version = -1; ++ } ++ } ++ ++#ifdef USE_CYASSL_MEMORY ++ if (trackMemory) ++ InitMemoryTracker(); ++#endif ++ ++ switch (version) { ++#ifndef NO_OLD_TLS ++ case 0: ++ method = SSLv3_server_method(); ++ break; ++ ++ #ifndef NO_TLS ++ case 1: ++ method = TLSv1_server_method(); ++ break; ++ ++ ++ case 2: ++ method = TLSv1_1_server_method(); ++ break; ++ ++ #endif ++#endif ++ ++#ifndef NO_TLS ++ case 3: ++ method = TLSv1_2_server_method(); ++ break; ++#endif ++ ++#ifdef CYASSL_DTLS ++ case -1: ++ method = DTLSv1_server_method(); ++ break; ++ ++ case -2: ++ method = DTLSv1_2_server_method(); ++ break; ++#endif ++ ++ default: ++ err_sys("Bad SSL version"); ++ } ++ ++ if (method == NULL) ++ err_sys("unable to get method"); ++ ++ ctx = SSL_CTX_new(method); ++ if (ctx == NULL) ++ err_sys("unable to get ctx"); ++ ++ if (cipherList) ++ if (SSL_CTX_set_cipher_list(ctx, cipherList) != SSL_SUCCESS) ++ err_sys("server can't set cipher list 1"); ++ ++#ifdef CYASSL_LEANPSK ++ usePsk = 1; ++#endif ++ ++#if defined(NO_RSA) && !defined(HAVE_ECC) ++ usePsk = 1; ++#endif ++ ++ if (fewerPackets) ++ CyaSSL_CTX_set_group_messages(ctx); ++ ++#if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) ++ SSL_CTX_set_default_passwd_cb(ctx, PasswordCallBack); ++#endif ++ ++#if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) ++ if (!usePsk) { ++ if (SSL_CTX_use_certificate_file(ctx, ourCert, SSL_FILETYPE_PEM) ++ != SSL_SUCCESS) ++ err_sys("can't load server cert file, check file and run from" ++ " CyaSSL home dir"); ++ } ++#endif ++ ++#ifdef HAVE_NTRU ++ if (useNtruKey) { ++ if (CyaSSL_CTX_use_NTRUPrivateKey_file(ctx, ourKey) ++ != SSL_SUCCESS) ++ err_sys("can't load ntru key file, " ++ "Please run from CyaSSL home dir"); ++ } ++#endif ++ ++#if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) ++ if (!useNtruKey && !usePsk) { ++ if (SSL_CTX_use_PrivateKey_file(ctx, ourKey, SSL_FILETYPE_PEM) ++ != SSL_SUCCESS) ++ err_sys("can't load server private key file, check file and run " ++ "from CyaSSL home dir"); ++ } ++#endif ++ ++ if (usePsk) { ++#ifndef NO_PSK ++ SSL_CTX_set_psk_server_callback(ctx, my_psk_server_cb); ++ SSL_CTX_use_psk_identity_hint(ctx, "cyassl server"); ++ if (cipherList == NULL) { ++ const char *defaultCipherList; ++ #ifdef HAVE_NULL_CIPHER ++ defaultCipherList = "PSK-NULL-SHA256"; ++ #else ++ defaultCipherList = "PSK-AES128-CBC-SHA256"; ++ #endif ++ if (SSL_CTX_set_cipher_list(ctx, defaultCipherList) != SSL_SUCCESS) ++ err_sys("server can't set cipher list 2"); ++ } ++#endif ++ } ++ ++#if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) ++ /* if not using PSK, verify peer with certs */ ++ if (doCliCertCheck && usePsk == 0) { ++ SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | ++ SSL_VERIFY_FAIL_IF_NO_PEER_CERT,0); ++ if (SSL_CTX_load_verify_locations(ctx, verifyCert, 0) != SSL_SUCCESS) ++ err_sys("can't load ca file, Please run from CyaSSL home dir"); ++ } ++#endif ++ ++#if defined(CYASSL_SNIFFER) && !defined(HAVE_NTRU) && !defined(HAVE_ECC) ++ /* don't use EDH, can't sniff tmp keys */ ++ if (cipherList == NULL) { ++ if (SSL_CTX_set_cipher_list(ctx, "AES256-SHA256") != SSL_SUCCESS) ++ err_sys("server can't set cipher list 3"); ++ } ++#endif ++ ++#ifdef HAVE_SNI ++ if (sniHostName) ++ if (CyaSSL_CTX_UseSNI(ctx, CYASSL_SNI_HOST_NAME, sniHostName, ++ XSTRLEN(sniHostName)) != SSL_SUCCESS) ++ err_sys("UseSNI failed"); ++#endif ++ ++ ssl = SSL_new(ctx); ++ if (ssl == NULL) ++ err_sys("unable to get SSL"); ++ ++#ifdef HAVE_CRL ++ CyaSSL_EnableCRL(ssl, 0); ++ CyaSSL_LoadCRL(ssl, crlPemDir, SSL_FILETYPE_PEM, CYASSL_CRL_MONITOR | ++ CYASSL_CRL_START_MON); ++ CyaSSL_SetCRL_Cb(ssl, CRL_CallBack); ++#endif ++#ifdef HAVE_OCSP ++ if (useOcsp) { ++ if (ocspUrl != NULL) { ++ CyaSSL_CTX_SetOCSP_OverrideURL(ctx, ocspUrl); ++ CyaSSL_CTX_EnableOCSP(ctx, CYASSL_OCSP_NO_NONCE ++ | CYASSL_OCSP_URL_OVERRIDE); ++ } ++ else ++ CyaSSL_CTX_EnableOCSP(ctx, CYASSL_OCSP_NO_NONCE); ++ } ++#endif ++#ifdef HAVE_PK_CALLBACKS ++ if (pkCallbacks) ++ SetupPkCallbacks(ctx, ssl); ++#endif ++ ++ tcp_accept(&sockfd, &clientfd, (func_args*)args, port, useAnyAddr, doDTLS, ++ 0); ++ if (!doDTLS) ++ CloseSocket(sockfd); ++ ++ SSL_set_fd(ssl, clientfd); ++ if (usePsk == 0 || cipherList != NULL) { ++ #if !defined(NO_FILESYSTEM) && !defined(NO_DH) ++ CyaSSL_SetTmpDH_file(ssl, dhParam, SSL_FILETYPE_PEM); ++ #elif !defined(NO_DH) ++ SetDH(ssl); /* repick suites with DHE, higher priority than PSK */ ++ #endif ++ } ++ ++#ifndef CYASSL_CALLBACKS ++ if (nonBlocking) { ++ CyaSSL_set_using_nonblock(ssl, 1); ++ tcp_set_nonblocking(&clientfd); ++ NonBlockingSSL_Accept(ssl); ++ } else if (SSL_accept(ssl) != SSL_SUCCESS) { ++ int err = SSL_get_error(ssl, 0); ++ char buffer[CYASSL_MAX_ERROR_SZ]; ++ printf("error = %d, %s\n", err, ERR_error_string(err, buffer)); ++ err_sys("SSL_accept failed"); ++ } ++#else ++ NonBlockingSSL_Accept(ssl); ++#endif ++ showPeer(ssl); ++ ++ idx = SSL_read(ssl, input, sizeof(input)-1); ++ if (idx > 0) { ++ input[idx] = 0; ++ printf("Client message: %s\n", input); ++ ++ } ++ else if (idx < 0) { ++ int readErr = SSL_get_error(ssl, 0); ++ if (readErr != SSL_ERROR_WANT_READ) ++ err_sys("SSL_read failed"); ++ } ++ ++ if (SSL_write(ssl, msg, sizeof(msg)) != sizeof(msg)) ++ err_sys("SSL_write failed"); ++ ++ #if defined(CYASSL_MDK_SHELL) && defined(HAVE_MDK_RTX) ++ os_dly_wait(500) ; ++ #endif ++ ++ SSL_shutdown(ssl); ++ SSL_free(ssl); ++ SSL_CTX_free(ctx); ++ ++ CloseSocket(clientfd); ++ ((func_args*)args)->return_code = 0; ++ ++#ifdef USE_CYASSL_MEMORY ++ if (trackMemory) ++ ShowMemoryTracker(); ++#endif /* USE_CYASSL_MEMORY */ ++ ++ return 0; ++} ++ ++ ++/* so overall tests can pull in test function */ ++#ifndef NO_MAIN_DRIVER ++ ++ int main(int argc, char** argv) ++ { ++ func_args args; ++ ++#ifdef HAVE_CAVIUM ++ int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID); ++ if (ret != 0) ++ err_sys("Cavium OpenNitroxDevice failed"); ++#endif /* HAVE_CAVIUM */ ++ ++ StartTCP(); ++ ++ args.argc = argc; ++ args.argv = argv; ++ ++ CyaSSL_Init(); ++#if defined(DEBUG_CYASSL) && !defined(CYASSL_MDK_SHELL) ++ CyaSSL_Debugging_ON(); ++#endif ++ if (CurrentDir("server")) ++ ChangeDirBack(2); ++ else if (CurrentDir("Debug") || CurrentDir("Release")) ++ ChangeDirBack(3); ++ ++#ifdef HAVE_STACK_SIZE ++ StackSizeCheck(&args, server_test); ++#else ++ server_test(&args); ++#endif ++ CyaSSL_Cleanup(); ++ ++#ifdef HAVE_CAVIUM ++ CspShutdown(CAVIUM_DEV_ID); ++#endif ++ return args.return_code; ++ } ++ ++ int myoptind = 0; ++ char* myoptarg = NULL; ++ ++#endif /* NO_MAIN_DRIVER */ ++ ++ ++#ifdef CYASSL_CALLBACKS ++ ++ int srvHandShakeCB(HandShakeInfo* info) ++ { ++ (void)info; ++ return 0; ++ } ++ ++ ++ int srvTimeoutCB(TimeoutInfo* info) ++ { ++ (void)info; ++ return 0; ++ } ++ ++#endif ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/time-dummy.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/time-dummy.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/time-dummy.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Projects/SimpleServer/time-dummy.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,34 @@ ++/* time-dummy.c.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include "time.h" ++ ++struct tm *Cyassl_MDK_gmtime(const time_t *c) ++{ ++ static struct tm date ; ++ return(&date) ; ++} ++ ++time_t time(time_t * t) { return 0 ; } +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Src/cert_data.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Src/cert_data.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Src/cert_data.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Src/cert_data.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,28 @@ ++/* certs_test.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++/* Define initial data for cert buffers */ ++#include ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Src/cyassl_MDK_ARM.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Src/cyassl_MDK_ARM.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Src/cyassl_MDK_ARM.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Src/cyassl_MDK_ARM.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,247 @@ ++/* cyassl_KEIL_RL.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++ ++/***************************************************************************************/ ++/** This file is for defining functions for specific to KEIL-RL. **/ ++/***************************************************************************************/ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++#if defined (CYASSL_MDK5) ++ #include "cmsis_os.h" ++ #if defined(CYASSL_KEIL_TCP_NET) ++ #include "rl_net.h" ++ #endif ++#else ++ #include ++#endif ++ ++#include "cyassl_MDK_ARM.h" ++ ++#include ++#include ++ ++#if defined (CYASSL_CMSIS_RTOS) ++ #define os_dly_wait(t) osDelay(10*t) ++#endif ++ ++ ++/** KEIL-RL TCPnet ****/ ++/** TCPnet BSD socket does not have following functions. **/ ++ ++#if defined(CYASSL_KEIL_TCP_NET) ++char *inet_ntoa(struct in_addr in) ++{ ++ #define NAMESIZE 16 ++ static char name[NAMESIZE] ; ++ sprintf(name, "%d.%d.%d.%d", (in.s_addr>>24)&0xff, (in.s_addr>>16)&0xff, (in.s_addr>>8)&0xff, in.s_addr&0xff) ; ++ return name ; ++} ++ ++unsigned long inet_addr(const char *cp) ++{ ++ unsigned int a[4] ; unsigned long ret ; ++ sscanf(cp, "%d.%d.%d.%d", &a[0], &a[1], &a[2], &a[3]) ; ++ ret = ((a[3]<<24) + (a[2]<<16) + (a[1]<<8) + a[0]) ; ++ return(ret) ; ++} ++ ++ ++/*** tcp_connect is actually associated with following syassl_tcp_connect. ***/ ++int Cyassl_connect(int sd, const struct sockaddr* sa, int sz) ++{ ++ int ret = 0 ; ++ #if defined(CYASSL_KEIL_TCP_NET) ++ ++ SOCKADDR_IN addr ; ++ ++ addr = *(SOCKADDR_IN *)sa ; ++ ++ do { ++ #undef connect /* Go to KEIL TCPnet connect */ ++ ret = connect(sd, (SOCKADDR *)&addr, sizeof(addr)) ; ++ os_dly_wait(50); ++ } while(ret == SCK_EWOULDBLOCK) ; ++ #ifdef DEBUG_CYASSL ++ { ++ char msg[50] ; ++ sprintf(msg, "BSD Connect return code: %d\n", ret) ; ++ CYASSL_MSG(msg) ; ++ } ++ #endif ++ ++ #endif /* CYASSL_KEIL_TCP_NET */ ++ return(ret ) ; ++} ++ ++ ++int Cyassl_accept(int sd, struct sockaddr *addr, int *addrlen) ++{ ++ int ret = 0 ; ++ ++ #if defined(CYASSL_KEIL_TCP_NET) ++ while(1) { ++ #undef accept /* Go to KEIL TCPnet accept */ ++ ret = accept(sd, addr, addrlen) ; ++ if(ret != SCK_EWOULDBLOCK) break ; ++ os_dly_wait(1); ++ } ++ #ifdef DEBUG_CYASSL ++ { ++ char msg[50] ; ++ sprintf(msg, "BSD Accept return code: %d\n", ret) ; ++ CYASSL_MSG(msg) ; ++ } ++ #endif ++ ++ #endif /* CYASSL_KEIL_TCP_NET */ ++ return(ret ) ; ++ ++} ++ ++int Cyassl_recv(int sd, void *buf, size_t len, int flags) ++{ ++ int ret = 0; ++ #if defined(CYASSL_KEIL_TCP_NET) ++ while(1) { ++ #undef recv /* Go to KEIL TCPnet recv */ ++ ret = recv(sd, buf, len, flags) ; ++ if((ret != SCK_EWOULDBLOCK) &&( ret != SCK_ETIMEOUT)) break ; ++ os_dly_wait(1); ++ } ++ #ifdef DEBUG_CYASSL ++ { ++ char msg[50] ; ++ sprintf(msg, "BSD Recv return code: %d\n", ret) ; ++ CYASSL_MSG(msg) ; ++ } ++ #endif ++ ++ #endif /* CYASSL_KEIL_TCP_NET */ ++ return(ret ) ; ++} ++ ++int Cyassl_send(int sd, const void *buf, size_t len, int flags) ++{ ++ int ret = 0 ; ++ ++ #if defined(CYASSL_KEIL_TCP_NET) ++ while(1) { ++ #undef send /* Go to KEIL TCPnet send */ ++ ret = send(sd, buf, len, flags) ; ++ if(ret != SCK_EWOULDBLOCK) break ; ++ os_dly_wait(1); ++ } ++ #ifdef DEBUG_CYASSL ++ { ++ char msg[50] ; ++ sprintf(msg, "BSD Send return code: %d\n", ret) ; ++ CYASSL_MSG(msg) ; ++ } ++ #endif ++ ++#endif /* CYASSL_KEIL_TCP_NET */ ++ return(ret) ; ++ ++} ++ ++#endif /* CYASSL_KEIL_TCP_NET */ ++ ++#if defined(CYASSL_KEIL_TCP_NET) ++void Cyassl_sleep(int t) ++{ ++ #if defined(HAVE_KEIL_RTX) ++ os_dly_wait(t/1000+1) ; ++ #endif ++} ++ ++int Cyassl_tcp_select(int sd, int timeout) ++{ ++ ++ return 0 ; ++ ++} ++#endif ++ ++extern int strlen(const char *s) ; ++ ++FILE * CyaSSL_fopen(const char *name, const char *openmode) ++{ ++ int i ; FILE * ret ; ++ #define PATHSIZE 100 ++ char path[PATHSIZE] ; char *p ; ++ ++ if(strlen(name) > PATHSIZE)return(NULL) ; ++ ++ for(i = 0; i<= strlen(name); i++) { ++ if(name[i] == '/')path[i] = '\\' ; ++ else path[i] = name[i] ; ++ } ++ if(path[0] == '.' && path[1] == '\\') p = path + 2 ; ++ else p = path ; ++ ++ ret = fopen (p, openmode) ; ++ ++ return(ret) ; ++} ++ ++#if defined (CYASSL_MDK5) ++#define getkey getchar ++#define sendchar putchar ++#else ++extern int getkey(void) ; ++extern int sendchar(int c) ; ++#endif ++ ++char * Cyassl_fgets ( char * str, int num, FILE * f ) ++{ ++ int i ; ++ ++ for(i = 0 ; i< num ; i++) { ++ while((str[i] = getkey()) == 0) { ++ #if defined (HAVE_KEIL_RTX) && !defined(CYASSL_CMSIS_RTOS) ++ os_tsk_pass (); ++ #else ++ osThreadYield (); ++ #endif ++ } ++ if(str[i] == '\n' || str[i] == '\012' || str[i] == '\015') { ++ sendchar('\n') ; ++ str[i++] = '\n' ; ++ str[i] = '\0' ; ++ break ; ++ } else if(str[i] == '\010') { /* BS */ ++ if(i) { /* erace one char */ ++ sendchar('\010') ; sendchar(' ') ; sendchar('\010') ; ++ i = (i>0 ? (i-2) : -1 ) ; ++ continue ; ++ } ++ } else if(str[i] == '\033' || str[i] == '\004' ) { /* ESC or ^D */ ++ str[i] = '\0' ; ++ return(0) ; ++ } ++ sendchar(str[i]) ; ++ } ++ return(str) ; ++} +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Src/ssl-dummy.c mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Src/ssl-dummy.c +--- mysql-5.6.23/extra/wolfssl/IDE/MDK5-ARM/Src/ssl-dummy.c 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/MDK5-ARM/Src/ssl-dummy.c 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,52 @@ ++/* ssl-dummy.c ++ * ++ * Copyright (C) 2006-2015 wolfSSL Inc. ++ * ++ * This file is part of wolfSSL. (formerly known as CyaSSL) ++ * ++ * wolfSSL is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * wolfSSL is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#ifdef HAVE_CONFIG_H ++ #include ++#endif ++ ++#include ++#include ++ ++Signer* GetCA(void* vp, byte* hash) ++{ ++ return NULL ; ++} ++ ++int CyaSSL_dtls(CYASSL* ssl) ++{ ++ return NULL ; ++} ++ ++int CyaSSL_get_using_nonblock(CYASSL* ssl) ++{ ++ return NULL ; ++} ++ ++Signer* GetCAByName(void* vp, byte* hash) ++{ ++ return NULL ; ++} ++ ++int CyaSSL_PemCertToDer(const char* fileName, unsigned char* derBuf, int derSz) ++{ ++ return NULL ; ++} +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/iOS/README.md mysql-5.6.23-wolfssl/extra/wolfssl/IDE/iOS/README.md +--- mysql-5.6.23/extra/wolfssl/IDE/iOS/README.md 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/iOS/README.md 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,82 @@ ++# wolfSSL and wolfCrypt iOS Xcode Projects ++ ++This directory contains two xcodeproj: ++ ++1. `wolfssl.xcodeproj` -- builds wolfSSL and wolfCrypt ++2. `wolfssl-FIPS.xcodeproj` -- builds wolfSSL and wolfCrypt-FIPS if available ++ ++Both projects will build the library `libwolfssl.a` and produce a directory ++named `include` with the wolfSSL and wolfCrypt headers, and the CyaSSL and ++CtaoCrypt compatibility headers. Specific build options may be added to the ++`IPHONE` section of the file `wolfssl/wolfcrypt/settings.h`. ++ ++## wolfSSL ++ ++This project should build wolfSSL and wolfCrypt using the default settings. ++ ++## wolfSSL-FIPS ++ ++To use the FIPS version, one must have the FIPS sources. The project won't ++build without them. Please contact info@wolfssl.com for more information about ++wolfCrypt with FIPS. ++ ++By default, this builds the wolfSSL and wolfCrypt with FIPS library. The default ++configuration enables the settings required for FIPS. Others may be turned on. ++The project also ensures the FIPS related objects are linked in the proper ++order. ++ ++ ++# Building libwolfssl.a ++ ++## Debug build ++ ++## Release build ++ ++A release build requires an Apple Developer account, as far as I can tell. I ++have not tried this yet. ++ ++ ++# Installing libwolfssl.a ++ ++Simply drag the file libwolfssl.a and the directory `include` and drop it into ++your project file list pane where it makes sense for you. Allow it to copy the ++files over to the project directory. This should automatically add the library ++to the list of libraries to link against. ++ ++Click on your project target, then the "Build Phases" tab. On the targets list ++click your target. Click the disclosure triangle on the section "Link Binary ++With Libraries" and verify libwolfssl.a is in the list. If not, click the "+", ++and on the "Choose framworks and libraries to add:" dialog, click the ++button "Add other..." then find the file libwolfssl.a. ++ ++Click on the "Build Settings" tab. Scroll down to the section "Search Paths". ++Add the path to the include directory to the list "Header Search Paths". ++ ++ ++## When using FIPS ++ ++When using the FIPS version, on the target window, in the "Build Settings" tab, ++scroll down to the "Apple LLVM 6.0 - Preprocessing" section. Open the disclosure ++for "Preprocessor Macros" and add the following under both `Release` and ++`Debug`: ++ ++* `IPHONE` ++* `HAVE_FIPS` ++* `HAVE_HASHDRBG` ++* `HAVE_AESGCM` ++* `WOLFSSL_SHA512` ++* `WOLFSSL_SHA384` ++* `NO_PWDBASED` -- for now, can drop later ++ ++ ++# Using the FIPS library ++ ++The FIPS library contains a self-check verify hash. Normally, on the desktop or ++server build, the library is built as a dynamic library. The library looks the ++same to every application that builds against it, and can be verified. For ++static libraries, when linking into your application, the addresses are all ++fixed, and the verify checksum becomes unusable. iOS does not allow dynamic ++libraries like this, so static builds are required. This creates a problem. ++Every time the application is changed, the FIPS checksum will change, because ++the FIPS library's position in the executable may change. ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/iOS/wolfssl-FIPS.xcodeproj/project.pbxproj mysql-5.6.23-wolfssl/extra/wolfssl/IDE/iOS/wolfssl-FIPS.xcodeproj/project.pbxproj +--- mysql-5.6.23/extra/wolfssl/IDE/iOS/wolfssl-FIPS.xcodeproj/project.pbxproj 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/iOS/wolfssl-FIPS.xcodeproj/project.pbxproj 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,983 @@ ++// !$*UTF8*$! ++{ ++ archiveVersion = 1; ++ classes = { ++ }; ++ objectVersion = 46; ++ objects = { ++ ++/* Begin PBXBuildFile section */ ++ 521646091A89928E0062516A /* crl.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646011A89928E0062516A /* crl.c */; }; ++ 5216460A1A89928E0062516A /* internal.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646021A89928E0062516A /* internal.c */; }; ++ 5216460B1A89928E0062516A /* io.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646031A89928E0062516A /* io.c */; }; ++ 5216460C1A89928E0062516A /* keys.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646041A89928E0062516A /* keys.c */; }; ++ 5216460D1A89928E0062516A /* ocsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646051A89928E0062516A /* ocsp.c */; }; ++ 5216460E1A89928E0062516A /* sniffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646061A89928E0062516A /* sniffer.c */; }; ++ 5216460F1A89928E0062516A /* ssl.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646071A89928E0062516A /* ssl.c */; }; ++ 521646101A89928E0062516A /* tls.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646081A89928E0062516A /* tls.c */; }; ++ 521646321A8992CC0062516A /* aes.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646111A8992CC0062516A /* aes.c */; }; ++ 521646331A8992CC0062516A /* arc4.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646121A8992CC0062516A /* arc4.c */; }; ++ 521646341A8992CC0062516A /* asn.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646131A8992CC0062516A /* asn.c */; }; ++ 521646351A8992CC0062516A /* blake2b.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646141A8992CC0062516A /* blake2b.c */; }; ++ 521646361A8992CC0062516A /* camellia.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646151A8992CC0062516A /* camellia.c */; }; ++ 521646371A8992CC0062516A /* chacha.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646161A8992CC0062516A /* chacha.c */; }; ++ 521646381A8992CC0062516A /* coding.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646171A8992CC0062516A /* coding.c */; }; ++ 521646391A8992CC0062516A /* des3.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646181A8992CC0062516A /* des3.c */; }; ++ 5216463A1A8992CC0062516A /* dh.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646191A8992CC0062516A /* dh.c */; }; ++ 5216463B1A8992CC0062516A /* dsa.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216461A1A8992CC0062516A /* dsa.c */; }; ++ 5216463C1A8992CC0062516A /* ecc.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216461B1A8992CC0062516A /* ecc.c */; }; ++ 5216463D1A8992CC0062516A /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216461C1A8992CC0062516A /* error.c */; }; ++ 5216463E1A8992CC0062516A /* hc128.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216461D1A8992CC0062516A /* hc128.c */; }; ++ 5216463F1A8992CC0062516A /* hmac.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216461E1A8992CC0062516A /* hmac.c */; }; ++ 521646401A8992CC0062516A /* integer.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216461F1A8992CC0062516A /* integer.c */; }; ++ 521646411A8992CC0062516A /* logging.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646201A8992CC0062516A /* logging.c */; }; ++ 521646421A8992CC0062516A /* md2.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646211A8992CC0062516A /* md2.c */; }; ++ 521646431A8992CC0062516A /* md4.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646221A8992CC0062516A /* md4.c */; }; ++ 521646441A8992CC0062516A /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646231A8992CC0062516A /* md5.c */; }; ++ 521646451A8992CC0062516A /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646241A8992CC0062516A /* memory.c */; }; ++ 521646461A8992CC0062516A /* misc.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646251A8992CC0062516A /* misc.c */; }; ++ 521646471A8992CC0062516A /* pkcs7.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646261A8992CC0062516A /* pkcs7.c */; }; ++ 521646481A8992CC0062516A /* poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646271A8992CC0062516A /* poly1305.c */; }; ++ 521646491A8992CC0062516A /* pwdbased.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646281A8992CC0062516A /* pwdbased.c */; }; ++ 5216464A1A8992CC0062516A /* rabbit.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646291A8992CC0062516A /* rabbit.c */; }; ++ 5216464B1A8992CC0062516A /* random.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216462A1A8992CC0062516A /* random.c */; }; ++ 5216464C1A8992CC0062516A /* ripemd.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216462B1A8992CC0062516A /* ripemd.c */; }; ++ 5216464D1A8992CC0062516A /* rsa.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216462C1A8992CC0062516A /* rsa.c */; }; ++ 5216464E1A8992CC0062516A /* sha.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216462D1A8992CC0062516A /* sha.c */; }; ++ 5216464F1A8992CC0062516A /* sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216462E1A8992CC0062516A /* sha256.c */; }; ++ 521646501A8992CC0062516A /* sha512.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216462F1A8992CC0062516A /* sha512.c */; }; ++ 521646511A8992CC0062516A /* tfm.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646301A8992CC0062516A /* tfm.c */; }; ++ 521646521A8992CC0062516A /* wc_port.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646311A8992CC0062516A /* wc_port.c */; }; ++ 521646C41A8A7FE10062516A /* callbacks.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646531A8993290062516A /* callbacks.h */; }; ++ 521646C51A8A7FE10062516A /* certs_test.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646541A8993290062516A /* certs_test.h */; }; ++ 521646C61A8A7FE10062516A /* crl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646551A8993290062516A /* crl.h */; }; ++ 521646C71A8A7FE10062516A /* error-ssl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646561A8993290062516A /* error-ssl.h */; }; ++ 521646C81A8A7FE10062516A /* internal.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646571A8993290062516A /* internal.h */; }; ++ 521646C91A8A7FE10062516A /* ocsp.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646581A8993290062516A /* ocsp.h */; }; ++ 521646CA1A8A7FE10062516A /* ssl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216465B1A8993290062516A /* ssl.h */; }; ++ 521646CB1A8A7FE10062516A /* test.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216465C1A8993290062516A /* test.h */; }; ++ 521646CC1A8A7FE10062516A /* version.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216465D1A8993290062516A /* version.h */; }; ++ 521646CD1A8A7FF30062516A /* aes.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216465E1A8993770062516A /* aes.h */; }; ++ 521646CE1A8A7FF30062516A /* arc4.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216465F1A8993770062516A /* arc4.h */; }; ++ 521646CF1A8A7FF30062516A /* asn_public.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646601A8993770062516A /* asn_public.h */; }; ++ 521646D01A8A7FF30062516A /* asn.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646611A8993770062516A /* asn.h */; }; ++ 521646D11A8A7FF30062516A /* blake2-impl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646621A8993770062516A /* blake2-impl.h */; }; ++ 521646D21A8A7FF30062516A /* blake2-int.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646631A8993770062516A /* blake2-int.h */; }; ++ 521646D31A8A7FF30062516A /* blake2.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646641A8993770062516A /* blake2.h */; }; ++ 521646D41A8A7FF30062516A /* camellia.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646651A8993770062516A /* camellia.h */; }; ++ 521646D51A8A7FF30062516A /* chacha.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646661A8993770062516A /* chacha.h */; }; ++ 521646D61A8A7FF30062516A /* coding.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646671A8993770062516A /* coding.h */; }; ++ 521646D71A8A7FF30062516A /* compress.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646681A8993770062516A /* compress.h */; }; ++ 521646D81A8A7FF30062516A /* des3.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646691A8993770062516A /* des3.h */; }; ++ 521646D91A8A7FF30062516A /* dh.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216466A1A8993770062516A /* dh.h */; }; ++ 521646DA1A8A7FF30062516A /* dsa.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216466B1A8993770062516A /* dsa.h */; }; ++ 521646DB1A8A7FF30062516A /* ecc.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216466C1A8993770062516A /* ecc.h */; }; ++ 521646DC1A8A7FF30062516A /* error-crypt.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216466D1A8993770062516A /* error-crypt.h */; }; ++ 521646DD1A8A7FF30062516A /* fips_test.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216466E1A8993770062516A /* fips_test.h */; }; ++ 521646DE1A8A7FF30062516A /* hc128.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216466F1A8993770062516A /* hc128.h */; }; ++ 521646DF1A8A7FF30062516A /* hmac.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646701A8993770062516A /* hmac.h */; }; ++ 521646E01A8A7FF30062516A /* integer.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646721A8993770062516A /* integer.h */; }; ++ 521646E11A8A7FF30062516A /* logging.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646731A8993770062516A /* logging.h */; }; ++ 521646E21A8A7FF30062516A /* md2.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646741A8993770062516A /* md2.h */; }; ++ 521646E31A8A7FF30062516A /* md4.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646751A8993770062516A /* md4.h */; }; ++ 521646E41A8A7FF30062516A /* md5.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646761A8993770062516A /* md5.h */; }; ++ 521646E51A8A7FF30062516A /* memory.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646771A8993770062516A /* memory.h */; }; ++ 521646E61A8A7FF30062516A /* misc.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646781A8993770062516A /* misc.h */; }; ++ 521646E71A8A7FF30062516A /* mpi_class.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646791A8993770062516A /* mpi_class.h */; }; ++ 521646E81A8A7FF30062516A /* mpi_superclass.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216467A1A8993770062516A /* mpi_superclass.h */; }; ++ 521646E91A8A7FF30062516A /* pkcs7.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216467B1A8993770062516A /* pkcs7.h */; }; ++ 521646EA1A8A7FF30062516A /* poly1305.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216467C1A8993770062516A /* poly1305.h */; }; ++ 521646EB1A8A7FF30062516A /* pwdbased.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216467D1A8993770062516A /* pwdbased.h */; }; ++ 521646EC1A8A7FF30062516A /* rabbit.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216467E1A8993770062516A /* rabbit.h */; }; ++ 521646ED1A8A7FF30062516A /* random.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216467F1A8993770062516A /* random.h */; }; ++ 521646EE1A8A7FF30062516A /* ripemd.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646801A8993770062516A /* ripemd.h */; }; ++ 521646EF1A8A7FF30062516A /* rsa.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646811A8993770062516A /* rsa.h */; }; ++ 521646F01A8A7FF30062516A /* settings.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646821A8993770062516A /* settings.h */; }; ++ 521646F11A8A7FF30062516A /* sha.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646831A8993770062516A /* sha.h */; }; ++ 521646F21A8A7FF30062516A /* sha256.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646841A8993770062516A /* sha256.h */; }; ++ 521646F31A8A7FF30062516A /* sha512.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646851A8993770062516A /* sha512.h */; }; ++ 521646F41A8A7FF30062516A /* tfm.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646861A8993770062516A /* tfm.h */; }; ++ 521646F51A8A7FF30062516A /* types.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646871A8993770062516A /* types.h */; }; ++ 521646F61A8A7FF30062516A /* visibility.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646881A8993770062516A /* visibility.h */; }; ++ 521646F71A8A7FF30062516A /* wc_port.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646891A8993770062516A /* wc_port.h */; }; ++ 521646F81A8A80030062516A /* callbacks.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216468A1A8993BB0062516A /* callbacks.h */; }; ++ 521646F91A8A80030062516A /* certs_test.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216468B1A8993BB0062516A /* certs_test.h */; }; ++ 521646FA1A8A80030062516A /* crl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216468C1A8993BB0062516A /* crl.h */; }; ++ 521646FB1A8A80030062516A /* error-ssl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216468D1A8993BB0062516A /* error-ssl.h */; }; ++ 521646FC1A8A80030062516A /* internal.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216468E1A8993BB0062516A /* internal.h */; }; ++ 521646FD1A8A80030062516A /* ocsp.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216468F1A8993BB0062516A /* ocsp.h */; }; ++ 521646FE1A8A80030062516A /* ssl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646921A8993BB0062516A /* ssl.h */; }; ++ 521646FF1A8A80030062516A /* test.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646931A8993BB0062516A /* test.h */; }; ++ 521647001A8A80030062516A /* version.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646941A8993BB0062516A /* version.h */; }; ++ 521647011A8A80100062516A /* aes.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646951A8993F50062516A /* aes.h */; }; ++ 521647021A8A80100062516A /* arc4.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646961A8993F50062516A /* arc4.h */; }; ++ 521647031A8A80100062516A /* asn_public.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646971A8993F50062516A /* asn_public.h */; }; ++ 521647041A8A80100062516A /* asn.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646981A8993F50062516A /* asn.h */; }; ++ 521647051A8A80100062516A /* blake2-impl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646991A8993F50062516A /* blake2-impl.h */; }; ++ 521647061A8A80100062516A /* blake2-int.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216469A1A8993F50062516A /* blake2-int.h */; }; ++ 521647071A8A80100062516A /* blake2.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216469B1A8993F50062516A /* blake2.h */; }; ++ 521647081A8A80100062516A /* camellia.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216469C1A8993F50062516A /* camellia.h */; }; ++ 521647091A8A80100062516A /* chacha.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216469D1A8993F50062516A /* chacha.h */; }; ++ 5216470A1A8A80100062516A /* coding.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216469E1A8993F50062516A /* coding.h */; }; ++ 5216470B1A8A80100062516A /* compress.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216469F1A8993F50062516A /* compress.h */; }; ++ 5216470C1A8A80100062516A /* des3.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A01A8993F50062516A /* des3.h */; }; ++ 5216470D1A8A80100062516A /* dh.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A11A8993F50062516A /* dh.h */; }; ++ 5216470E1A8A80100062516A /* dsa.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A21A8993F50062516A /* dsa.h */; }; ++ 5216470F1A8A80100062516A /* ecc.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A31A8993F50062516A /* ecc.h */; }; ++ 521647101A8A80100062516A /* error-crypt.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A41A8993F50062516A /* error-crypt.h */; }; ++ 521647111A8A80100062516A /* fips_test.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A51A8993F50062516A /* fips_test.h */; }; ++ 521647121A8A80100062516A /* hc128.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A61A8993F50062516A /* hc128.h */; }; ++ 521647131A8A80100062516A /* hmac.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A71A8993F50062516A /* hmac.h */; }; ++ 521647141A8A80100062516A /* integer.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A81A8993F50062516A /* integer.h */; }; ++ 521647151A8A80100062516A /* logging.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A91A8993F50062516A /* logging.h */; }; ++ 521647161A8A80100062516A /* md2.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646AA1A8993F50062516A /* md2.h */; }; ++ 521647171A8A80100062516A /* md4.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646AB1A8993F50062516A /* md4.h */; }; ++ 521647181A8A80100062516A /* md5.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646AC1A8993F50062516A /* md5.h */; }; ++ 521647191A8A80100062516A /* memory.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646AD1A8993F50062516A /* memory.h */; }; ++ 5216471A1A8A80100062516A /* misc.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646AE1A8993F50062516A /* misc.h */; }; ++ 5216471B1A8A80100062516A /* mpi_class.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646AF1A8993F50062516A /* mpi_class.h */; }; ++ 5216471C1A8A80100062516A /* mpi_superclass.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B01A8993F50062516A /* mpi_superclass.h */; }; ++ 5216471D1A8A80100062516A /* pkcs7.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B11A8993F50062516A /* pkcs7.h */; }; ++ 5216471E1A8A80100062516A /* poly1305.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B21A8993F50062516A /* poly1305.h */; }; ++ 5216471F1A8A80100062516A /* pwdbased.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B31A8993F50062516A /* pwdbased.h */; }; ++ 521647201A8A80100062516A /* rabbit.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B41A8993F50062516A /* rabbit.h */; }; ++ 521647211A8A80100062516A /* random.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B51A8993F50062516A /* random.h */; }; ++ 521647221A8A80100062516A /* ripemd.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B61A8993F50062516A /* ripemd.h */; }; ++ 521647231A8A80100062516A /* rsa.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B71A8993F50062516A /* rsa.h */; }; ++ 521647241A8A80100062516A /* settings_comp.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B81A8993F50062516A /* settings_comp.h */; }; ++ 521647251A8A80100062516A /* settings.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B91A8993F50062516A /* settings.h */; }; ++ 521647261A8A80100062516A /* sha.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646BA1A8993F50062516A /* sha.h */; }; ++ 521647271A8A80100062516A /* sha256.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646BB1A8993F50062516A /* sha256.h */; }; ++ 521647281A8A80100062516A /* sha512.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646BC1A8993F50062516A /* sha512.h */; }; ++ 521647291A8A80100062516A /* tfm.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646BD1A8993F50062516A /* tfm.h */; }; ++ 5216472A1A8A80100062516A /* types.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646BE1A8993F50062516A /* types.h */; }; ++ 5216472B1A8A80100062516A /* visibility.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646BF1A8993F50062516A /* visibility.h */; }; ++ 5216472C1A8A80100062516A /* wc_port.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646C01A8993F50062516A /* wc_port.h */; }; ++ 5216481D1A8AC2990062516A /* aes.c in Sources */ = {isa = PBXBuildFile; fileRef = 521648101A8AC2990062516A /* aes.c */; }; ++ 5216481E1A8AC2990062516A /* des3.c in Sources */ = {isa = PBXBuildFile; fileRef = 521648111A8AC2990062516A /* des3.c */; }; ++ 5216481F1A8AC2990062516A /* fips_test.c in Sources */ = {isa = PBXBuildFile; fileRef = 521648121A8AC2990062516A /* fips_test.c */; }; ++ 521648201A8AC2990062516A /* fips.c in Sources */ = {isa = PBXBuildFile; fileRef = 521648131A8AC2990062516A /* fips.c */; }; ++ 521648211A8AC2990062516A /* hmac.c in Sources */ = {isa = PBXBuildFile; fileRef = 521648141A8AC2990062516A /* hmac.c */; }; ++ 521648231A8AC2990062516A /* random.c in Sources */ = {isa = PBXBuildFile; fileRef = 521648161A8AC2990062516A /* random.c */; }; ++ 521648241A8AC2990062516A /* rsa.c in Sources */ = {isa = PBXBuildFile; fileRef = 521648171A8AC2990062516A /* rsa.c */; }; ++ 521648251A8AC2990062516A /* sha.c in Sources */ = {isa = PBXBuildFile; fileRef = 521648181A8AC2990062516A /* sha.c */; }; ++ 521648261A8AC2990062516A /* sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = 521648191A8AC2990062516A /* sha256.c */; }; ++ 521648271A8AC2990062516A /* sha512.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216481A1A8AC2990062516A /* sha512.c */; }; ++ 521648281A8AC2990062516A /* wolfcrypt_first.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216481B1A8AC2990062516A /* wolfcrypt_first.c */; }; ++ 521648291A8AC2990062516A /* wolfcrypt_last.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216481C1A8AC2990062516A /* wolfcrypt_last.c */; }; ++/* End PBXBuildFile section */ ++ ++/* Begin PBXCopyFilesBuildPhase section */ ++ 521646C11A8A7B380062516A /* CopyFiles */ = { ++ isa = PBXCopyFilesBuildPhase; ++ buildActionMask = 2147483647; ++ dstPath = include/wolfssl/wolfcrypt; ++ dstSubfolderSpec = 7; ++ files = ( ++ 521646CD1A8A7FF30062516A /* aes.h in CopyFiles */, ++ 521646CE1A8A7FF30062516A /* arc4.h in CopyFiles */, ++ 521646CF1A8A7FF30062516A /* asn_public.h in CopyFiles */, ++ 521646D01A8A7FF30062516A /* asn.h in CopyFiles */, ++ 521646D11A8A7FF30062516A /* blake2-impl.h in CopyFiles */, ++ 521646D21A8A7FF30062516A /* blake2-int.h in CopyFiles */, ++ 521646D31A8A7FF30062516A /* blake2.h in CopyFiles */, ++ 521646D41A8A7FF30062516A /* camellia.h in CopyFiles */, ++ 521646D51A8A7FF30062516A /* chacha.h in CopyFiles */, ++ 521646D61A8A7FF30062516A /* coding.h in CopyFiles */, ++ 521646D71A8A7FF30062516A /* compress.h in CopyFiles */, ++ 521646D81A8A7FF30062516A /* des3.h in CopyFiles */, ++ 521646D91A8A7FF30062516A /* dh.h in CopyFiles */, ++ 521646DA1A8A7FF30062516A /* dsa.h in CopyFiles */, ++ 521646DB1A8A7FF30062516A /* ecc.h in CopyFiles */, ++ 521646DC1A8A7FF30062516A /* error-crypt.h in CopyFiles */, ++ 521646DD1A8A7FF30062516A /* fips_test.h in CopyFiles */, ++ 521646DE1A8A7FF30062516A /* hc128.h in CopyFiles */, ++ 521646DF1A8A7FF30062516A /* hmac.h in CopyFiles */, ++ 521646E01A8A7FF30062516A /* integer.h in CopyFiles */, ++ 521646E11A8A7FF30062516A /* logging.h in CopyFiles */, ++ 521646E21A8A7FF30062516A /* md2.h in CopyFiles */, ++ 521646E31A8A7FF30062516A /* md4.h in CopyFiles */, ++ 521646E41A8A7FF30062516A /* md5.h in CopyFiles */, ++ 521646E51A8A7FF30062516A /* memory.h in CopyFiles */, ++ 521646E61A8A7FF30062516A /* misc.h in CopyFiles */, ++ 521646E71A8A7FF30062516A /* mpi_class.h in CopyFiles */, ++ 521646E81A8A7FF30062516A /* mpi_superclass.h in CopyFiles */, ++ 521646E91A8A7FF30062516A /* pkcs7.h in CopyFiles */, ++ 521646EA1A8A7FF30062516A /* poly1305.h in CopyFiles */, ++ 521646EB1A8A7FF30062516A /* pwdbased.h in CopyFiles */, ++ 521646EC1A8A7FF30062516A /* rabbit.h in CopyFiles */, ++ 521646ED1A8A7FF30062516A /* random.h in CopyFiles */, ++ 521646EE1A8A7FF30062516A /* ripemd.h in CopyFiles */, ++ 521646EF1A8A7FF30062516A /* rsa.h in CopyFiles */, ++ 521646F01A8A7FF30062516A /* settings.h in CopyFiles */, ++ 521646F11A8A7FF30062516A /* sha.h in CopyFiles */, ++ 521646F21A8A7FF30062516A /* sha256.h in CopyFiles */, ++ 521646F31A8A7FF30062516A /* sha512.h in CopyFiles */, ++ 521646F41A8A7FF30062516A /* tfm.h in CopyFiles */, ++ 521646F51A8A7FF30062516A /* types.h in CopyFiles */, ++ 521646F61A8A7FF30062516A /* visibility.h in CopyFiles */, ++ 521646F71A8A7FF30062516A /* wc_port.h in CopyFiles */, ++ ); ++ runOnlyForDeploymentPostprocessing = 0; ++ }; ++ 521646C21A8A7B3B0062516A /* CopyFiles */ = { ++ isa = PBXCopyFilesBuildPhase; ++ buildActionMask = 2147483647; ++ dstPath = include/cyassl; ++ dstSubfolderSpec = 7; ++ files = ( ++ 521646F81A8A80030062516A /* callbacks.h in CopyFiles */, ++ 521646F91A8A80030062516A /* certs_test.h in CopyFiles */, ++ 521646FA1A8A80030062516A /* crl.h in CopyFiles */, ++ 521646FB1A8A80030062516A /* error-ssl.h in CopyFiles */, ++ 521646FC1A8A80030062516A /* internal.h in CopyFiles */, ++ 521646FD1A8A80030062516A /* ocsp.h in CopyFiles */, ++ 521646FE1A8A80030062516A /* ssl.h in CopyFiles */, ++ 521646FF1A8A80030062516A /* test.h in CopyFiles */, ++ 521647001A8A80030062516A /* version.h in CopyFiles */, ++ ); ++ runOnlyForDeploymentPostprocessing = 0; ++ }; ++ 521646C31A8A7B3D0062516A /* CopyFiles */ = { ++ isa = PBXCopyFilesBuildPhase; ++ buildActionMask = 2147483647; ++ dstPath = include/cyassl/ctaocrypt; ++ dstSubfolderSpec = 7; ++ files = ( ++ 521647011A8A80100062516A /* aes.h in CopyFiles */, ++ 521647021A8A80100062516A /* arc4.h in CopyFiles */, ++ 521647031A8A80100062516A /* asn_public.h in CopyFiles */, ++ 521647041A8A80100062516A /* asn.h in CopyFiles */, ++ 521647051A8A80100062516A /* blake2-impl.h in CopyFiles */, ++ 521647061A8A80100062516A /* blake2-int.h in CopyFiles */, ++ 521647071A8A80100062516A /* blake2.h in CopyFiles */, ++ 521647081A8A80100062516A /* camellia.h in CopyFiles */, ++ 521647091A8A80100062516A /* chacha.h in CopyFiles */, ++ 5216470A1A8A80100062516A /* coding.h in CopyFiles */, ++ 5216470B1A8A80100062516A /* compress.h in CopyFiles */, ++ 5216470C1A8A80100062516A /* des3.h in CopyFiles */, ++ 5216470D1A8A80100062516A /* dh.h in CopyFiles */, ++ 5216470E1A8A80100062516A /* dsa.h in CopyFiles */, ++ 5216470F1A8A80100062516A /* ecc.h in CopyFiles */, ++ 521647101A8A80100062516A /* error-crypt.h in CopyFiles */, ++ 521647111A8A80100062516A /* fips_test.h in CopyFiles */, ++ 521647121A8A80100062516A /* hc128.h in CopyFiles */, ++ 521647131A8A80100062516A /* hmac.h in CopyFiles */, ++ 521647141A8A80100062516A /* integer.h in CopyFiles */, ++ 521647151A8A80100062516A /* logging.h in CopyFiles */, ++ 521647161A8A80100062516A /* md2.h in CopyFiles */, ++ 521647171A8A80100062516A /* md4.h in CopyFiles */, ++ 521647181A8A80100062516A /* md5.h in CopyFiles */, ++ 521647191A8A80100062516A /* memory.h in CopyFiles */, ++ 5216471A1A8A80100062516A /* misc.h in CopyFiles */, ++ 5216471B1A8A80100062516A /* mpi_class.h in CopyFiles */, ++ 5216471C1A8A80100062516A /* mpi_superclass.h in CopyFiles */, ++ 5216471D1A8A80100062516A /* pkcs7.h in CopyFiles */, ++ 5216471E1A8A80100062516A /* poly1305.h in CopyFiles */, ++ 5216471F1A8A80100062516A /* pwdbased.h in CopyFiles */, ++ 521647201A8A80100062516A /* rabbit.h in CopyFiles */, ++ 521647211A8A80100062516A /* random.h in CopyFiles */, ++ 521647221A8A80100062516A /* ripemd.h in CopyFiles */, ++ 521647231A8A80100062516A /* rsa.h in CopyFiles */, ++ 521647241A8A80100062516A /* settings_comp.h in CopyFiles */, ++ 521647251A8A80100062516A /* settings.h in CopyFiles */, ++ 521647261A8A80100062516A /* sha.h in CopyFiles */, ++ 521647271A8A80100062516A /* sha256.h in CopyFiles */, ++ 521647281A8A80100062516A /* sha512.h in CopyFiles */, ++ 521647291A8A80100062516A /* tfm.h in CopyFiles */, ++ 5216472A1A8A80100062516A /* types.h in CopyFiles */, ++ 5216472B1A8A80100062516A /* visibility.h in CopyFiles */, ++ 5216472C1A8A80100062516A /* wc_port.h in CopyFiles */, ++ ); ++ runOnlyForDeploymentPostprocessing = 0; ++ }; ++ 52B1344B16F3C9E800C07B32 /* CopyFiles */ = { ++ isa = PBXCopyFilesBuildPhase; ++ buildActionMask = 2147483647; ++ dstPath = include/wolfssl; ++ dstSubfolderSpec = 16; ++ files = ( ++ 521646C41A8A7FE10062516A /* callbacks.h in CopyFiles */, ++ 521646C51A8A7FE10062516A /* certs_test.h in CopyFiles */, ++ 521646C61A8A7FE10062516A /* crl.h in CopyFiles */, ++ 521646C71A8A7FE10062516A /* error-ssl.h in CopyFiles */, ++ 521646C81A8A7FE10062516A /* internal.h in CopyFiles */, ++ 521646C91A8A7FE10062516A /* ocsp.h in CopyFiles */, ++ 521646CA1A8A7FE10062516A /* ssl.h in CopyFiles */, ++ 521646CB1A8A7FE10062516A /* test.h in CopyFiles */, ++ 521646CC1A8A7FE10062516A /* version.h in CopyFiles */, ++ ); ++ runOnlyForDeploymentPostprocessing = 0; ++ }; ++/* End PBXCopyFilesBuildPhase section */ ++ ++/* Begin PBXFileReference section */ ++ 521646011A89928E0062516A /* crl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = crl.c; path = ../../src/crl.c; sourceTree = ""; }; ++ 521646021A89928E0062516A /* internal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = internal.c; path = ../../src/internal.c; sourceTree = ""; }; ++ 521646031A89928E0062516A /* io.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = io.c; path = ../../src/io.c; sourceTree = ""; }; ++ 521646041A89928E0062516A /* keys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = keys.c; path = ../../src/keys.c; sourceTree = ""; }; ++ 521646051A89928E0062516A /* ocsp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ocsp.c; path = ../../src/ocsp.c; sourceTree = ""; }; ++ 521646061A89928E0062516A /* sniffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sniffer.c; path = ../../src/sniffer.c; sourceTree = ""; }; ++ 521646071A89928E0062516A /* ssl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ssl.c; path = ../../src/ssl.c; sourceTree = ""; }; ++ 521646081A89928E0062516A /* tls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tls.c; path = ../../src/tls.c; sourceTree = ""; }; ++ 521646111A8992CC0062516A /* aes.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = aes.c; path = ../../wolfcrypt/src/aes.c; sourceTree = SOURCE_ROOT; }; ++ 521646121A8992CC0062516A /* arc4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = arc4.c; path = ../../wolfcrypt/src/arc4.c; sourceTree = SOURCE_ROOT; }; ++ 521646131A8992CC0062516A /* asn.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = asn.c; path = ../../wolfcrypt/src/asn.c; sourceTree = SOURCE_ROOT; }; ++ 521646141A8992CC0062516A /* blake2b.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = blake2b.c; path = ../../wolfcrypt/src/blake2b.c; sourceTree = SOURCE_ROOT; }; ++ 521646151A8992CC0062516A /* camellia.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = camellia.c; path = ../../wolfcrypt/src/camellia.c; sourceTree = SOURCE_ROOT; }; ++ 521646161A8992CC0062516A /* chacha.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = chacha.c; path = ../../wolfcrypt/src/chacha.c; sourceTree = SOURCE_ROOT; }; ++ 521646171A8992CC0062516A /* coding.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = coding.c; path = ../../wolfcrypt/src/coding.c; sourceTree = SOURCE_ROOT; }; ++ 521646181A8992CC0062516A /* des3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = des3.c; path = ../../wolfcrypt/src/des3.c; sourceTree = SOURCE_ROOT; }; ++ 521646191A8992CC0062516A /* dh.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dh.c; path = ../../wolfcrypt/src/dh.c; sourceTree = SOURCE_ROOT; }; ++ 5216461A1A8992CC0062516A /* dsa.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dsa.c; path = ../../wolfcrypt/src/dsa.c; sourceTree = SOURCE_ROOT; }; ++ 5216461B1A8992CC0062516A /* ecc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ecc.c; path = ../../wolfcrypt/src/ecc.c; sourceTree = SOURCE_ROOT; }; ++ 5216461C1A8992CC0062516A /* error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = error.c; path = ../../wolfcrypt/src/error.c; sourceTree = SOURCE_ROOT; }; ++ 5216461D1A8992CC0062516A /* hc128.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = hc128.c; path = ../../wolfcrypt/src/hc128.c; sourceTree = SOURCE_ROOT; }; ++ 5216461E1A8992CC0062516A /* hmac.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = hmac.c; path = ../../wolfcrypt/src/hmac.c; sourceTree = SOURCE_ROOT; }; ++ 5216461F1A8992CC0062516A /* integer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = integer.c; path = ../../wolfcrypt/src/integer.c; sourceTree = SOURCE_ROOT; }; ++ 521646201A8992CC0062516A /* logging.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = logging.c; path = ../../wolfcrypt/src/logging.c; sourceTree = SOURCE_ROOT; }; ++ 521646211A8992CC0062516A /* md2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = md2.c; path = ../../wolfcrypt/src/md2.c; sourceTree = SOURCE_ROOT; }; ++ 521646221A8992CC0062516A /* md4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = md4.c; path = ../../wolfcrypt/src/md4.c; sourceTree = SOURCE_ROOT; }; ++ 521646231A8992CC0062516A /* md5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = md5.c; path = ../../wolfcrypt/src/md5.c; sourceTree = SOURCE_ROOT; }; ++ 521646241A8992CC0062516A /* memory.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = memory.c; path = ../../wolfcrypt/src/memory.c; sourceTree = SOURCE_ROOT; }; ++ 521646251A8992CC0062516A /* misc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = misc.c; path = ../../wolfcrypt/src/misc.c; sourceTree = SOURCE_ROOT; }; ++ 521646261A8992CC0062516A /* pkcs7.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pkcs7.c; path = ../../wolfcrypt/src/pkcs7.c; sourceTree = SOURCE_ROOT; }; ++ 521646271A8992CC0062516A /* poly1305.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = poly1305.c; path = ../../wolfcrypt/src/poly1305.c; sourceTree = SOURCE_ROOT; }; ++ 521646281A8992CC0062516A /* pwdbased.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pwdbased.c; path = ../../wolfcrypt/src/pwdbased.c; sourceTree = SOURCE_ROOT; }; ++ 521646291A8992CC0062516A /* rabbit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rabbit.c; path = ../../wolfcrypt/src/rabbit.c; sourceTree = SOURCE_ROOT; }; ++ 5216462A1A8992CC0062516A /* random.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = random.c; path = ../../wolfcrypt/src/random.c; sourceTree = SOURCE_ROOT; }; ++ 5216462B1A8992CC0062516A /* ripemd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ripemd.c; path = ../../wolfcrypt/src/ripemd.c; sourceTree = SOURCE_ROOT; }; ++ 5216462C1A8992CC0062516A /* rsa.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rsa.c; path = ../../wolfcrypt/src/rsa.c; sourceTree = SOURCE_ROOT; }; ++ 5216462D1A8992CC0062516A /* sha.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sha.c; path = ../../wolfcrypt/src/sha.c; sourceTree = SOURCE_ROOT; }; ++ 5216462E1A8992CC0062516A /* sha256.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sha256.c; path = ../../wolfcrypt/src/sha256.c; sourceTree = SOURCE_ROOT; }; ++ 5216462F1A8992CC0062516A /* sha512.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sha512.c; path = ../../wolfcrypt/src/sha512.c; sourceTree = SOURCE_ROOT; }; ++ 521646301A8992CC0062516A /* tfm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tfm.c; path = ../../wolfcrypt/src/tfm.c; sourceTree = SOURCE_ROOT; }; ++ 521646311A8992CC0062516A /* wc_port.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = wc_port.c; path = ../../wolfcrypt/src/wc_port.c; sourceTree = SOURCE_ROOT; }; ++ 521646531A8993290062516A /* callbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = callbacks.h; path = ../../wolfssl/callbacks.h; sourceTree = ""; }; ++ 521646541A8993290062516A /* certs_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = certs_test.h; path = ../../wolfssl/certs_test.h; sourceTree = ""; }; ++ 521646551A8993290062516A /* crl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = crl.h; path = ../../wolfssl/crl.h; sourceTree = ""; }; ++ 521646561A8993290062516A /* error-ssl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "error-ssl.h"; path = "../../wolfssl/error-ssl.h"; sourceTree = ""; }; ++ 521646571A8993290062516A /* internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = internal.h; path = ../../wolfssl/internal.h; sourceTree = ""; }; ++ 521646581A8993290062516A /* ocsp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ocsp.h; path = ../../wolfssl/ocsp.h; sourceTree = ""; }; ++ 5216465B1A8993290062516A /* ssl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ssl.h; path = ../../wolfssl/ssl.h; sourceTree = ""; }; ++ 5216465C1A8993290062516A /* test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = test.h; path = ../../wolfssl/test.h; sourceTree = ""; }; ++ 5216465D1A8993290062516A /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = version.h; path = ../../wolfssl/version.h; sourceTree = ""; }; ++ 5216465E1A8993770062516A /* aes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = aes.h; path = ../../wolfssl/wolfcrypt/aes.h; sourceTree = ""; }; ++ 5216465F1A8993770062516A /* arc4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = arc4.h; path = ../../wolfssl/wolfcrypt/arc4.h; sourceTree = ""; }; ++ 521646601A8993770062516A /* asn_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = asn_public.h; path = ../../wolfssl/wolfcrypt/asn_public.h; sourceTree = ""; }; ++ 521646611A8993770062516A /* asn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = asn.h; path = ../../wolfssl/wolfcrypt/asn.h; sourceTree = ""; }; ++ 521646621A8993770062516A /* blake2-impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "blake2-impl.h"; path = "../../wolfssl/wolfcrypt/blake2-impl.h"; sourceTree = ""; }; ++ 521646631A8993770062516A /* blake2-int.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "blake2-int.h"; path = "../../wolfssl/wolfcrypt/blake2-int.h"; sourceTree = ""; }; ++ 521646641A8993770062516A /* blake2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = blake2.h; path = ../../wolfssl/wolfcrypt/blake2.h; sourceTree = ""; }; ++ 521646651A8993770062516A /* camellia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = camellia.h; path = ../../wolfssl/wolfcrypt/camellia.h; sourceTree = ""; }; ++ 521646661A8993770062516A /* chacha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = chacha.h; path = ../../wolfssl/wolfcrypt/chacha.h; sourceTree = ""; }; ++ 521646671A8993770062516A /* coding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = coding.h; path = ../../wolfssl/wolfcrypt/coding.h; sourceTree = ""; }; ++ 521646681A8993770062516A /* compress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = compress.h; path = ../../wolfssl/wolfcrypt/compress.h; sourceTree = ""; }; ++ 521646691A8993770062516A /* des3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = des3.h; path = ../../wolfssl/wolfcrypt/des3.h; sourceTree = ""; }; ++ 5216466A1A8993770062516A /* dh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dh.h; path = ../../wolfssl/wolfcrypt/dh.h; sourceTree = ""; }; ++ 5216466B1A8993770062516A /* dsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dsa.h; path = ../../wolfssl/wolfcrypt/dsa.h; sourceTree = ""; }; ++ 5216466C1A8993770062516A /* ecc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ecc.h; path = ../../wolfssl/wolfcrypt/ecc.h; sourceTree = ""; }; ++ 5216466D1A8993770062516A /* error-crypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "error-crypt.h"; path = "../../wolfssl/wolfcrypt/error-crypt.h"; sourceTree = ""; }; ++ 5216466E1A8993770062516A /* fips_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = fips_test.h; path = ../../wolfssl/wolfcrypt/fips_test.h; sourceTree = ""; }; ++ 5216466F1A8993770062516A /* hc128.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = hc128.h; path = ../../wolfssl/wolfcrypt/hc128.h; sourceTree = ""; }; ++ 521646701A8993770062516A /* hmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = hmac.h; path = ../../wolfssl/wolfcrypt/hmac.h; sourceTree = ""; }; ++ 521646721A8993770062516A /* integer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = integer.h; path = ../../wolfssl/wolfcrypt/integer.h; sourceTree = ""; }; ++ 521646731A8993770062516A /* logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = logging.h; path = ../../wolfssl/wolfcrypt/logging.h; sourceTree = ""; }; ++ 521646741A8993770062516A /* md2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = md2.h; path = ../../wolfssl/wolfcrypt/md2.h; sourceTree = ""; }; ++ 521646751A8993770062516A /* md4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = md4.h; path = ../../wolfssl/wolfcrypt/md4.h; sourceTree = ""; }; ++ 521646761A8993770062516A /* md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = md5.h; path = ../../wolfssl/wolfcrypt/md5.h; sourceTree = ""; }; ++ 521646771A8993770062516A /* memory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = memory.h; path = ../../wolfssl/wolfcrypt/memory.h; sourceTree = ""; }; ++ 521646781A8993770062516A /* misc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = misc.h; path = ../../wolfssl/wolfcrypt/misc.h; sourceTree = ""; }; ++ 521646791A8993770062516A /* mpi_class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mpi_class.h; path = ../../wolfssl/wolfcrypt/mpi_class.h; sourceTree = ""; }; ++ 5216467A1A8993770062516A /* mpi_superclass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mpi_superclass.h; path = ../../wolfssl/wolfcrypt/mpi_superclass.h; sourceTree = ""; }; ++ 5216467B1A8993770062516A /* pkcs7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pkcs7.h; path = ../../wolfssl/wolfcrypt/pkcs7.h; sourceTree = ""; }; ++ 5216467C1A8993770062516A /* poly1305.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = poly1305.h; path = ../../wolfssl/wolfcrypt/poly1305.h; sourceTree = ""; }; ++ 5216467D1A8993770062516A /* pwdbased.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pwdbased.h; path = ../../wolfssl/wolfcrypt/pwdbased.h; sourceTree = ""; }; ++ 5216467E1A8993770062516A /* rabbit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rabbit.h; path = ../../wolfssl/wolfcrypt/rabbit.h; sourceTree = ""; }; ++ 5216467F1A8993770062516A /* random.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = random.h; path = ../../wolfssl/wolfcrypt/random.h; sourceTree = ""; }; ++ 521646801A8993770062516A /* ripemd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ripemd.h; path = ../../wolfssl/wolfcrypt/ripemd.h; sourceTree = ""; }; ++ 521646811A8993770062516A /* rsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rsa.h; path = ../../wolfssl/wolfcrypt/rsa.h; sourceTree = ""; }; ++ 521646821A8993770062516A /* settings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = settings.h; path = ../../wolfssl/wolfcrypt/settings.h; sourceTree = ""; }; ++ 521646831A8993770062516A /* sha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sha.h; path = ../../wolfssl/wolfcrypt/sha.h; sourceTree = ""; }; ++ 521646841A8993770062516A /* sha256.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sha256.h; path = ../../wolfssl/wolfcrypt/sha256.h; sourceTree = ""; }; ++ 521646851A8993770062516A /* sha512.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sha512.h; path = ../../wolfssl/wolfcrypt/sha512.h; sourceTree = ""; }; ++ 521646861A8993770062516A /* tfm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tfm.h; path = ../../wolfssl/wolfcrypt/tfm.h; sourceTree = ""; }; ++ 521646871A8993770062516A /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = types.h; path = ../../wolfssl/wolfcrypt/types.h; sourceTree = ""; }; ++ 521646881A8993770062516A /* visibility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = visibility.h; path = ../../wolfssl/wolfcrypt/visibility.h; sourceTree = ""; }; ++ 521646891A8993770062516A /* wc_port.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wc_port.h; path = ../../wolfssl/wolfcrypt/wc_port.h; sourceTree = ""; }; ++ 5216468A1A8993BB0062516A /* callbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = callbacks.h; path = ../../cyassl/callbacks.h; sourceTree = ""; }; ++ 5216468B1A8993BB0062516A /* certs_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = certs_test.h; path = ../../cyassl/certs_test.h; sourceTree = ""; }; ++ 5216468C1A8993BB0062516A /* crl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = crl.h; path = ../../cyassl/crl.h; sourceTree = ""; }; ++ 5216468D1A8993BB0062516A /* error-ssl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "error-ssl.h"; path = "../../cyassl/error-ssl.h"; sourceTree = ""; }; ++ 5216468E1A8993BB0062516A /* internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = internal.h; path = ../../cyassl/internal.h; sourceTree = ""; }; ++ 5216468F1A8993BB0062516A /* ocsp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ocsp.h; path = ../../cyassl/ocsp.h; sourceTree = ""; }; ++ 521646921A8993BB0062516A /* ssl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ssl.h; path = ../../cyassl/ssl.h; sourceTree = ""; }; ++ 521646931A8993BB0062516A /* test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = test.h; path = ../../cyassl/test.h; sourceTree = ""; }; ++ 521646941A8993BB0062516A /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = version.h; path = ../../cyassl/version.h; sourceTree = ""; }; ++ 521646951A8993F50062516A /* aes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = aes.h; path = ../../cyassl/ctaocrypt/aes.h; sourceTree = ""; }; ++ 521646961A8993F50062516A /* arc4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = arc4.h; path = ../../cyassl/ctaocrypt/arc4.h; sourceTree = ""; }; ++ 521646971A8993F50062516A /* asn_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = asn_public.h; path = ../../cyassl/ctaocrypt/asn_public.h; sourceTree = ""; }; ++ 521646981A8993F50062516A /* asn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = asn.h; path = ../../cyassl/ctaocrypt/asn.h; sourceTree = ""; }; ++ 521646991A8993F50062516A /* blake2-impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "blake2-impl.h"; path = "../../cyassl/ctaocrypt/blake2-impl.h"; sourceTree = ""; }; ++ 5216469A1A8993F50062516A /* blake2-int.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "blake2-int.h"; path = "../../cyassl/ctaocrypt/blake2-int.h"; sourceTree = ""; }; ++ 5216469B1A8993F50062516A /* blake2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = blake2.h; path = ../../cyassl/ctaocrypt/blake2.h; sourceTree = ""; }; ++ 5216469C1A8993F50062516A /* camellia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = camellia.h; path = ../../cyassl/ctaocrypt/camellia.h; sourceTree = ""; }; ++ 5216469D1A8993F50062516A /* chacha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = chacha.h; path = ../../cyassl/ctaocrypt/chacha.h; sourceTree = ""; }; ++ 5216469E1A8993F50062516A /* coding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = coding.h; path = ../../cyassl/ctaocrypt/coding.h; sourceTree = ""; }; ++ 5216469F1A8993F50062516A /* compress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = compress.h; path = ../../cyassl/ctaocrypt/compress.h; sourceTree = ""; }; ++ 521646A01A8993F50062516A /* des3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = des3.h; path = ../../cyassl/ctaocrypt/des3.h; sourceTree = ""; }; ++ 521646A11A8993F50062516A /* dh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dh.h; path = ../../cyassl/ctaocrypt/dh.h; sourceTree = ""; }; ++ 521646A21A8993F50062516A /* dsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dsa.h; path = ../../cyassl/ctaocrypt/dsa.h; sourceTree = ""; }; ++ 521646A31A8993F50062516A /* ecc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ecc.h; path = ../../cyassl/ctaocrypt/ecc.h; sourceTree = ""; }; ++ 521646A41A8993F50062516A /* error-crypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "error-crypt.h"; path = "../../cyassl/ctaocrypt/error-crypt.h"; sourceTree = ""; }; ++ 521646A51A8993F50062516A /* fips_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = fips_test.h; path = ../../cyassl/ctaocrypt/fips_test.h; sourceTree = ""; }; ++ 521646A61A8993F50062516A /* hc128.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = hc128.h; path = ../../cyassl/ctaocrypt/hc128.h; sourceTree = ""; }; ++ 521646A71A8993F50062516A /* hmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = hmac.h; path = ../../cyassl/ctaocrypt/hmac.h; sourceTree = ""; }; ++ 521646A81A8993F50062516A /* integer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = integer.h; path = ../../cyassl/ctaocrypt/integer.h; sourceTree = ""; }; ++ 521646A91A8993F50062516A /* logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = logging.h; path = ../../cyassl/ctaocrypt/logging.h; sourceTree = ""; }; ++ 521646AA1A8993F50062516A /* md2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = md2.h; path = ../../cyassl/ctaocrypt/md2.h; sourceTree = ""; }; ++ 521646AB1A8993F50062516A /* md4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = md4.h; path = ../../cyassl/ctaocrypt/md4.h; sourceTree = ""; }; ++ 521646AC1A8993F50062516A /* md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = md5.h; path = ../../cyassl/ctaocrypt/md5.h; sourceTree = ""; }; ++ 521646AD1A8993F50062516A /* memory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = memory.h; path = ../../cyassl/ctaocrypt/memory.h; sourceTree = ""; }; ++ 521646AE1A8993F50062516A /* misc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = misc.h; path = ../../cyassl/ctaocrypt/misc.h; sourceTree = ""; }; ++ 521646AF1A8993F50062516A /* mpi_class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mpi_class.h; path = ../../cyassl/ctaocrypt/mpi_class.h; sourceTree = ""; }; ++ 521646B01A8993F50062516A /* mpi_superclass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mpi_superclass.h; path = ../../cyassl/ctaocrypt/mpi_superclass.h; sourceTree = ""; }; ++ 521646B11A8993F50062516A /* pkcs7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pkcs7.h; path = ../../cyassl/ctaocrypt/pkcs7.h; sourceTree = ""; }; ++ 521646B21A8993F50062516A /* poly1305.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = poly1305.h; path = ../../cyassl/ctaocrypt/poly1305.h; sourceTree = ""; }; ++ 521646B31A8993F50062516A /* pwdbased.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pwdbased.h; path = ../../cyassl/ctaocrypt/pwdbased.h; sourceTree = ""; }; ++ 521646B41A8993F50062516A /* rabbit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rabbit.h; path = ../../cyassl/ctaocrypt/rabbit.h; sourceTree = ""; }; ++ 521646B51A8993F50062516A /* random.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = random.h; path = ../../cyassl/ctaocrypt/random.h; sourceTree = ""; }; ++ 521646B61A8993F50062516A /* ripemd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ripemd.h; path = ../../cyassl/ctaocrypt/ripemd.h; sourceTree = ""; }; ++ 521646B71A8993F50062516A /* rsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rsa.h; path = ../../cyassl/ctaocrypt/rsa.h; sourceTree = ""; }; ++ 521646B81A8993F50062516A /* settings_comp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = settings_comp.h; path = ../../cyassl/ctaocrypt/settings_comp.h; sourceTree = ""; }; ++ 521646B91A8993F50062516A /* settings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = settings.h; path = ../../cyassl/ctaocrypt/settings.h; sourceTree = ""; }; ++ 521646BA1A8993F50062516A /* sha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sha.h; path = ../../cyassl/ctaocrypt/sha.h; sourceTree = ""; }; ++ 521646BB1A8993F50062516A /* sha256.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sha256.h; path = ../../cyassl/ctaocrypt/sha256.h; sourceTree = ""; }; ++ 521646BC1A8993F50062516A /* sha512.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sha512.h; path = ../../cyassl/ctaocrypt/sha512.h; sourceTree = ""; }; ++ 521646BD1A8993F50062516A /* tfm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tfm.h; path = ../../cyassl/ctaocrypt/tfm.h; sourceTree = ""; }; ++ 521646BE1A8993F50062516A /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = types.h; path = ../../cyassl/ctaocrypt/types.h; sourceTree = ""; }; ++ 521646BF1A8993F50062516A /* visibility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = visibility.h; path = ../../cyassl/ctaocrypt/visibility.h; sourceTree = ""; }; ++ 521646C01A8993F50062516A /* wc_port.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wc_port.h; path = ../../cyassl/ctaocrypt/wc_port.h; sourceTree = ""; }; ++ 521648101A8AC2990062516A /* aes.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = aes.c; path = ../../ctaocrypt/src/aes.c; sourceTree = ""; }; ++ 521648111A8AC2990062516A /* des3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = des3.c; path = ../../ctaocrypt/src/des3.c; sourceTree = ""; }; ++ 521648121A8AC2990062516A /* fips_test.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = fips_test.c; path = ../../ctaocrypt/src/fips_test.c; sourceTree = ""; }; ++ 521648131A8AC2990062516A /* fips.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = fips.c; path = ../../ctaocrypt/src/fips.c; sourceTree = ""; }; ++ 521648141A8AC2990062516A /* hmac.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = hmac.c; path = ../../ctaocrypt/src/hmac.c; sourceTree = ""; }; ++ 521648161A8AC2990062516A /* random.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = random.c; path = ../../ctaocrypt/src/random.c; sourceTree = ""; }; ++ 521648171A8AC2990062516A /* rsa.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rsa.c; path = ../../ctaocrypt/src/rsa.c; sourceTree = ""; }; ++ 521648181A8AC2990062516A /* sha.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sha.c; path = ../../ctaocrypt/src/sha.c; sourceTree = ""; }; ++ 521648191A8AC2990062516A /* sha256.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sha256.c; path = ../../ctaocrypt/src/sha256.c; sourceTree = ""; }; ++ 5216481A1A8AC2990062516A /* sha512.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sha512.c; path = ../../ctaocrypt/src/sha512.c; sourceTree = ""; }; ++ 5216481B1A8AC2990062516A /* wolfcrypt_first.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = wolfcrypt_first.c; path = ../../ctaocrypt/src/wolfcrypt_first.c; sourceTree = ""; }; ++ 5216481C1A8AC2990062516A /* wolfcrypt_last.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = wolfcrypt_last.c; path = ../../ctaocrypt/src/wolfcrypt_last.c; sourceTree = ""; }; ++ 52B1344D16F3C9E800C07B32 /* libwolfssl.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libwolfssl.a; sourceTree = BUILT_PRODUCTS_DIR; }; ++/* End PBXFileReference section */ ++ ++/* Begin PBXFrameworksBuildPhase section */ ++ 52B1344A16F3C9E800C07B32 /* Frameworks */ = { ++ isa = PBXFrameworksBuildPhase; ++ buildActionMask = 2147483647; ++ files = ( ++ ); ++ runOnlyForDeploymentPostprocessing = 0; ++ }; ++/* End PBXFrameworksBuildPhase section */ ++ ++/* Begin PBXGroup section */ ++ 521645391A898E7B0062516A /* Headers */ = { ++ isa = PBXGroup; ++ children = ( ++ 521645F91A89916E0062516A /* wolfSSL */, ++ 521645F81A89916A0062516A /* wolfCrypt */, ++ 521645F71A8991680062516A /* CyaSSL */, ++ 521645F61A8991640062516A /* CtaoCrypt */, ++ ); ++ name = Headers; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 521645F61A8991640062516A /* CtaoCrypt */ = { ++ isa = PBXGroup; ++ children = ( ++ 521646951A8993F50062516A /* aes.h */, ++ 521646961A8993F50062516A /* arc4.h */, ++ 521646971A8993F50062516A /* asn_public.h */, ++ 521646981A8993F50062516A /* asn.h */, ++ 521646991A8993F50062516A /* blake2-impl.h */, ++ 5216469A1A8993F50062516A /* blake2-int.h */, ++ 5216469B1A8993F50062516A /* blake2.h */, ++ 5216469C1A8993F50062516A /* camellia.h */, ++ 5216469D1A8993F50062516A /* chacha.h */, ++ 5216469E1A8993F50062516A /* coding.h */, ++ 5216469F1A8993F50062516A /* compress.h */, ++ 521646A01A8993F50062516A /* des3.h */, ++ 521646A11A8993F50062516A /* dh.h */, ++ 521646A21A8993F50062516A /* dsa.h */, ++ 521646A31A8993F50062516A /* ecc.h */, ++ 521646A41A8993F50062516A /* error-crypt.h */, ++ 521646A51A8993F50062516A /* fips_test.h */, ++ 521646A61A8993F50062516A /* hc128.h */, ++ 521646A71A8993F50062516A /* hmac.h */, ++ 521646A81A8993F50062516A /* integer.h */, ++ 521646A91A8993F50062516A /* logging.h */, ++ 521646AA1A8993F50062516A /* md2.h */, ++ 521646AB1A8993F50062516A /* md4.h */, ++ 521646AC1A8993F50062516A /* md5.h */, ++ 521646AD1A8993F50062516A /* memory.h */, ++ 521646AE1A8993F50062516A /* misc.h */, ++ 521646AF1A8993F50062516A /* mpi_class.h */, ++ 521646B01A8993F50062516A /* mpi_superclass.h */, ++ 521646B11A8993F50062516A /* pkcs7.h */, ++ 521646B21A8993F50062516A /* poly1305.h */, ++ 521646B31A8993F50062516A /* pwdbased.h */, ++ 521646B41A8993F50062516A /* rabbit.h */, ++ 521646B51A8993F50062516A /* random.h */, ++ 521646B61A8993F50062516A /* ripemd.h */, ++ 521646B71A8993F50062516A /* rsa.h */, ++ 521646B81A8993F50062516A /* settings_comp.h */, ++ 521646B91A8993F50062516A /* settings.h */, ++ 521646BA1A8993F50062516A /* sha.h */, ++ 521646BB1A8993F50062516A /* sha256.h */, ++ 521646BC1A8993F50062516A /* sha512.h */, ++ 521646BD1A8993F50062516A /* tfm.h */, ++ 521646BE1A8993F50062516A /* types.h */, ++ 521646BF1A8993F50062516A /* visibility.h */, ++ 521646C01A8993F50062516A /* wc_port.h */, ++ ); ++ name = CtaoCrypt; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 521645F71A8991680062516A /* CyaSSL */ = { ++ isa = PBXGroup; ++ children = ( ++ 5216468A1A8993BB0062516A /* callbacks.h */, ++ 5216468B1A8993BB0062516A /* certs_test.h */, ++ 5216468C1A8993BB0062516A /* crl.h */, ++ 5216468D1A8993BB0062516A /* error-ssl.h */, ++ 5216468E1A8993BB0062516A /* internal.h */, ++ 5216468F1A8993BB0062516A /* ocsp.h */, ++ 521646921A8993BB0062516A /* ssl.h */, ++ 521646931A8993BB0062516A /* test.h */, ++ 521646941A8993BB0062516A /* version.h */, ++ ); ++ name = CyaSSL; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 521645F81A89916A0062516A /* wolfCrypt */ = { ++ isa = PBXGroup; ++ children = ( ++ 5216465E1A8993770062516A /* aes.h */, ++ 5216465F1A8993770062516A /* arc4.h */, ++ 521646601A8993770062516A /* asn_public.h */, ++ 521646611A8993770062516A /* asn.h */, ++ 521646621A8993770062516A /* blake2-impl.h */, ++ 521646631A8993770062516A /* blake2-int.h */, ++ 521646641A8993770062516A /* blake2.h */, ++ 521646651A8993770062516A /* camellia.h */, ++ 521646661A8993770062516A /* chacha.h */, ++ 521646671A8993770062516A /* coding.h */, ++ 521646681A8993770062516A /* compress.h */, ++ 521646691A8993770062516A /* des3.h */, ++ 5216466A1A8993770062516A /* dh.h */, ++ 5216466B1A8993770062516A /* dsa.h */, ++ 5216466C1A8993770062516A /* ecc.h */, ++ 5216466D1A8993770062516A /* error-crypt.h */, ++ 5216466E1A8993770062516A /* fips_test.h */, ++ 5216466F1A8993770062516A /* hc128.h */, ++ 521646701A8993770062516A /* hmac.h */, ++ 521646721A8993770062516A /* integer.h */, ++ 521646731A8993770062516A /* logging.h */, ++ 521646741A8993770062516A /* md2.h */, ++ 521646751A8993770062516A /* md4.h */, ++ 521646761A8993770062516A /* md5.h */, ++ 521646771A8993770062516A /* memory.h */, ++ 521646781A8993770062516A /* misc.h */, ++ 521646791A8993770062516A /* mpi_class.h */, ++ 5216467A1A8993770062516A /* mpi_superclass.h */, ++ 5216467B1A8993770062516A /* pkcs7.h */, ++ 5216467C1A8993770062516A /* poly1305.h */, ++ 5216467D1A8993770062516A /* pwdbased.h */, ++ 5216467E1A8993770062516A /* rabbit.h */, ++ 5216467F1A8993770062516A /* random.h */, ++ 521646801A8993770062516A /* ripemd.h */, ++ 521646811A8993770062516A /* rsa.h */, ++ 521646821A8993770062516A /* settings.h */, ++ 521646831A8993770062516A /* sha.h */, ++ 521646841A8993770062516A /* sha256.h */, ++ 521646851A8993770062516A /* sha512.h */, ++ 521646861A8993770062516A /* tfm.h */, ++ 521646871A8993770062516A /* types.h */, ++ 521646881A8993770062516A /* visibility.h */, ++ 521646891A8993770062516A /* wc_port.h */, ++ ); ++ name = wolfCrypt; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 521645F91A89916E0062516A /* wolfSSL */ = { ++ isa = PBXGroup; ++ children = ( ++ 521646531A8993290062516A /* callbacks.h */, ++ 521646541A8993290062516A /* certs_test.h */, ++ 521646551A8993290062516A /* crl.h */, ++ 521646561A8993290062516A /* error-ssl.h */, ++ 521646571A8993290062516A /* internal.h */, ++ 521646581A8993290062516A /* ocsp.h */, ++ 5216465B1A8993290062516A /* ssl.h */, ++ 5216465C1A8993290062516A /* test.h */, ++ 5216465D1A8993290062516A /* version.h */, ++ ); ++ name = wolfSSL; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 521645FB1A8991990062516A /* Source */ = { ++ isa = PBXGroup; ++ children = ( ++ 521646001A89924A0062516A /* wolfSSL */, ++ 521645FF1A8992470062516A /* wolfCrypt */, ++ 5216480F1A8ABDA50062516A /* CtaoCrypt */, ++ ); ++ name = Source; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 521645FF1A8992470062516A /* wolfCrypt */ = { ++ isa = PBXGroup; ++ children = ( ++ 521646111A8992CC0062516A /* aes.c */, ++ 521646121A8992CC0062516A /* arc4.c */, ++ 521646131A8992CC0062516A /* asn.c */, ++ 521646141A8992CC0062516A /* blake2b.c */, ++ 521646151A8992CC0062516A /* camellia.c */, ++ 521646161A8992CC0062516A /* chacha.c */, ++ 521646171A8992CC0062516A /* coding.c */, ++ 521646181A8992CC0062516A /* des3.c */, ++ 521646191A8992CC0062516A /* dh.c */, ++ 5216461A1A8992CC0062516A /* dsa.c */, ++ 5216461B1A8992CC0062516A /* ecc.c */, ++ 5216461C1A8992CC0062516A /* error.c */, ++ 5216461D1A8992CC0062516A /* hc128.c */, ++ 5216461E1A8992CC0062516A /* hmac.c */, ++ 5216461F1A8992CC0062516A /* integer.c */, ++ 521646201A8992CC0062516A /* logging.c */, ++ 521646211A8992CC0062516A /* md2.c */, ++ 521646221A8992CC0062516A /* md4.c */, ++ 521646231A8992CC0062516A /* md5.c */, ++ 521646241A8992CC0062516A /* memory.c */, ++ 521646251A8992CC0062516A /* misc.c */, ++ 521646261A8992CC0062516A /* pkcs7.c */, ++ 521646271A8992CC0062516A /* poly1305.c */, ++ 521646281A8992CC0062516A /* pwdbased.c */, ++ 521646291A8992CC0062516A /* rabbit.c */, ++ 5216462A1A8992CC0062516A /* random.c */, ++ 5216462B1A8992CC0062516A /* ripemd.c */, ++ 5216462C1A8992CC0062516A /* rsa.c */, ++ 5216462D1A8992CC0062516A /* sha.c */, ++ 5216462E1A8992CC0062516A /* sha256.c */, ++ 5216462F1A8992CC0062516A /* sha512.c */, ++ 521646301A8992CC0062516A /* tfm.c */, ++ 521646311A8992CC0062516A /* wc_port.c */, ++ ); ++ name = wolfCrypt; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 521646001A89924A0062516A /* wolfSSL */ = { ++ isa = PBXGroup; ++ children = ( ++ 521646011A89928E0062516A /* crl.c */, ++ 521646021A89928E0062516A /* internal.c */, ++ 521646031A89928E0062516A /* io.c */, ++ 521646041A89928E0062516A /* keys.c */, ++ 521646051A89928E0062516A /* ocsp.c */, ++ 521646061A89928E0062516A /* sniffer.c */, ++ 521646071A89928E0062516A /* ssl.c */, ++ 521646081A89928E0062516A /* tls.c */, ++ ); ++ name = wolfSSL; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 5216480F1A8ABDA50062516A /* CtaoCrypt */ = { ++ isa = PBXGroup; ++ children = ( ++ 5216481B1A8AC2990062516A /* wolfcrypt_first.c */, ++ 521648141A8AC2990062516A /* hmac.c */, ++ 521648161A8AC2990062516A /* random.c */, ++ 521648191A8AC2990062516A /* sha256.c */, ++ 521648171A8AC2990062516A /* rsa.c */, ++ 521648101A8AC2990062516A /* aes.c */, ++ 521648111A8AC2990062516A /* des3.c */, ++ 521648181A8AC2990062516A /* sha.c */, ++ 5216481A1A8AC2990062516A /* sha512.c */, ++ 521648131A8AC2990062516A /* fips.c */, ++ 521648121A8AC2990062516A /* fips_test.c */, ++ 5216481C1A8AC2990062516A /* wolfcrypt_last.c */, ++ ); ++ name = CtaoCrypt; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 52B1344416F3C9E800C07B32 = { ++ isa = PBXGroup; ++ children = ( ++ 521645FB1A8991990062516A /* Source */, ++ 521645391A898E7B0062516A /* Headers */, ++ 52B1344E16F3C9E800C07B32 /* Products */, ++ ); ++ sourceTree = ""; ++ }; ++ 52B1344E16F3C9E800C07B32 /* Products */ = { ++ isa = PBXGroup; ++ children = ( ++ 52B1344D16F3C9E800C07B32 /* libwolfssl.a */, ++ ); ++ name = Products; ++ sourceTree = ""; ++ }; ++/* End PBXGroup section */ ++ ++/* Begin PBXNativeTarget section */ ++ 52B1344C16F3C9E800C07B32 /* wolfssl */ = { ++ isa = PBXNativeTarget; ++ buildConfigurationList = 52B1347216F3C9E800C07B32 /* Build configuration list for PBXNativeTarget "wolfssl" */; ++ buildPhases = ( ++ 52B1344916F3C9E800C07B32 /* Sources */, ++ 52B1344A16F3C9E800C07B32 /* Frameworks */, ++ 52B1344B16F3C9E800C07B32 /* CopyFiles */, ++ 521646C11A8A7B380062516A /* CopyFiles */, ++ 521646C21A8A7B3B0062516A /* CopyFiles */, ++ 521646C31A8A7B3D0062516A /* CopyFiles */, ++ ); ++ buildRules = ( ++ ); ++ dependencies = ( ++ ); ++ name = wolfssl; ++ productName = "wolfssl-ios"; ++ productReference = 52B1344D16F3C9E800C07B32 /* libwolfssl.a */; ++ productType = "com.apple.product-type.library.static"; ++ }; ++/* End PBXNativeTarget section */ ++ ++/* Begin PBXProject section */ ++ 52B1344516F3C9E800C07B32 /* Project object */ = { ++ isa = PBXProject; ++ attributes = { ++ LastUpgradeCheck = 0460; ++ ORGANIZATIONNAME = "wolfSSL Inc"; ++ }; ++ buildConfigurationList = 52B1344816F3C9E800C07B32 /* Build configuration list for PBXProject "wolfssl-FIPS" */; ++ compatibilityVersion = "Xcode 3.2"; ++ developmentRegion = English; ++ hasScannedForEncodings = 0; ++ knownRegions = ( ++ en, ++ ); ++ mainGroup = 52B1344416F3C9E800C07B32; ++ productRefGroup = 52B1344E16F3C9E800C07B32 /* Products */; ++ projectDirPath = ""; ++ projectRoot = ""; ++ targets = ( ++ 52B1344C16F3C9E800C07B32 /* wolfssl */, ++ ); ++ }; ++/* End PBXProject section */ ++ ++/* Begin PBXSourcesBuildPhase section */ ++ 52B1344916F3C9E800C07B32 /* Sources */ = { ++ isa = PBXSourcesBuildPhase; ++ buildActionMask = 2147483647; ++ files = ( ++ 521648281A8AC2990062516A /* wolfcrypt_first.c in Sources */, ++ 521648211A8AC2990062516A /* hmac.c in Sources */, ++ 521648231A8AC2990062516A /* random.c in Sources */, ++ 521648261A8AC2990062516A /* sha256.c in Sources */, ++ 521648241A8AC2990062516A /* rsa.c in Sources */, ++ 5216481D1A8AC2990062516A /* aes.c in Sources */, ++ 5216481E1A8AC2990062516A /* des3.c in Sources */, ++ 521648251A8AC2990062516A /* sha.c in Sources */, ++ 521648271A8AC2990062516A /* sha512.c in Sources */, ++ 521648201A8AC2990062516A /* fips.c in Sources */, ++ 5216481F1A8AC2990062516A /* fips_test.c in Sources */, ++ 521648291A8AC2990062516A /* wolfcrypt_last.c in Sources */, ++ 5216463B1A8992CC0062516A /* dsa.c in Sources */, ++ 521646411A8992CC0062516A /* logging.c in Sources */, ++ 5216464E1A8992CC0062516A /* sha.c in Sources */, ++ 521646481A8992CC0062516A /* poly1305.c in Sources */, ++ 5216463A1A8992CC0062516A /* dh.c in Sources */, ++ 521646361A8992CC0062516A /* camellia.c in Sources */, ++ 521646521A8992CC0062516A /* wc_port.c in Sources */, ++ 521646491A8992CC0062516A /* pwdbased.c in Sources */, ++ 521646461A8992CC0062516A /* misc.c in Sources */, ++ 5216463E1A8992CC0062516A /* hc128.c in Sources */, ++ 521646341A8992CC0062516A /* asn.c in Sources */, ++ 521646501A8992CC0062516A /* sha512.c in Sources */, ++ 5216464A1A8992CC0062516A /* rabbit.c in Sources */, ++ 521646441A8992CC0062516A /* md5.c in Sources */, ++ 5216460F1A89928E0062516A /* ssl.c in Sources */, ++ 5216464D1A8992CC0062516A /* rsa.c in Sources */, ++ 5216464B1A8992CC0062516A /* random.c in Sources */, ++ 521646101A89928E0062516A /* tls.c in Sources */, ++ 5216460D1A89928E0062516A /* ocsp.c in Sources */, ++ 521646431A8992CC0062516A /* md4.c in Sources */, ++ 521646321A8992CC0062516A /* aes.c in Sources */, ++ 521646391A8992CC0062516A /* des3.c in Sources */, ++ 521646351A8992CC0062516A /* blake2b.c in Sources */, ++ 5216464C1A8992CC0062516A /* ripemd.c in Sources */, ++ 521646451A8992CC0062516A /* memory.c in Sources */, ++ 5216463C1A8992CC0062516A /* ecc.c in Sources */, ++ 5216464F1A8992CC0062516A /* sha256.c in Sources */, ++ 521646371A8992CC0062516A /* chacha.c in Sources */, ++ 521646471A8992CC0062516A /* pkcs7.c in Sources */, ++ 5216460E1A89928E0062516A /* sniffer.c in Sources */, ++ 521646421A8992CC0062516A /* md2.c in Sources */, ++ 521646381A8992CC0062516A /* coding.c in Sources */, ++ 5216463D1A8992CC0062516A /* error.c in Sources */, ++ 5216463F1A8992CC0062516A /* hmac.c in Sources */, ++ 521646331A8992CC0062516A /* arc4.c in Sources */, ++ 521646401A8992CC0062516A /* integer.c in Sources */, ++ 5216460A1A89928E0062516A /* internal.c in Sources */, ++ 5216460B1A89928E0062516A /* io.c in Sources */, ++ 521646511A8992CC0062516A /* tfm.c in Sources */, ++ 521646091A89928E0062516A /* crl.c in Sources */, ++ 5216460C1A89928E0062516A /* keys.c in Sources */, ++ ); ++ runOnlyForDeploymentPostprocessing = 0; ++ }; ++/* End PBXSourcesBuildPhase section */ ++ ++/* Begin XCBuildConfiguration section */ ++ 52B1347016F3C9E800C07B32 /* Debug */ = { ++ isa = XCBuildConfiguration; ++ buildSettings = { ++ ALWAYS_SEARCH_USER_PATHS = NO; ++ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; ++ CLANG_CXX_LIBRARY = "libc++"; ++ CLANG_WARN_CONSTANT_CONVERSION = YES; ++ CLANG_WARN_EMPTY_BODY = YES; ++ CLANG_WARN_ENUM_CONVERSION = YES; ++ CLANG_WARN_INT_CONVERSION = YES; ++ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; ++ COPY_PHASE_STRIP = NO; ++ GCC_C_LANGUAGE_STANDARD = gnu99; ++ GCC_DYNAMIC_NO_PIC = NO; ++ GCC_OPTIMIZATION_LEVEL = 0; ++ GCC_PREPROCESSOR_DEFINITIONS = ( ++ "DEBUG=1", ++ "$(inherited)", ++ ); ++ GCC_SYMBOLS_PRIVATE_EXTERN = NO; ++ GCC_WARN_ABOUT_RETURN_TYPE = YES; ++ GCC_WARN_UNINITIALIZED_AUTOS = YES; ++ GCC_WARN_UNUSED_VARIABLE = YES; ++ IPHONEOS_DEPLOYMENT_TARGET = 6.1; ++ ONLY_ACTIVE_ARCH = YES; ++ SDKROOT = iphoneos; ++ USER_HEADER_SEARCH_PATHS = "wolfssl/wolfcrypt wolfssl include"; ++ }; ++ name = Debug; ++ }; ++ 52B1347116F3C9E800C07B32 /* Release */ = { ++ isa = XCBuildConfiguration; ++ buildSettings = { ++ ALWAYS_SEARCH_USER_PATHS = NO; ++ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; ++ CLANG_CXX_LIBRARY = "libc++"; ++ CLANG_WARN_CONSTANT_CONVERSION = YES; ++ CLANG_WARN_EMPTY_BODY = YES; ++ CLANG_WARN_ENUM_CONVERSION = YES; ++ CLANG_WARN_INT_CONVERSION = YES; ++ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; ++ COPY_PHASE_STRIP = YES; ++ GCC_C_LANGUAGE_STANDARD = gnu99; ++ GCC_WARN_ABOUT_RETURN_TYPE = YES; ++ GCC_WARN_UNINITIALIZED_AUTOS = YES; ++ GCC_WARN_UNUSED_VARIABLE = YES; ++ IPHONEOS_DEPLOYMENT_TARGET = 6.1; ++ SDKROOT = iphoneos; ++ USER_HEADER_SEARCH_PATHS = "wolfssl/wolfcrypt wolfssl include"; ++ VALIDATE_PRODUCT = NO; ++ }; ++ name = Release; ++ }; ++ 52B1347316F3C9E800C07B32 /* Debug */ = { ++ isa = XCBuildConfiguration; ++ buildSettings = { ++ ALWAYS_SEARCH_USER_PATHS = YES; ++ CLANG_LINK_OBJC_RUNTIME = NO; ++ DSTROOT = /tmp/wolfssl_ios.dst; ++ GCC_PRECOMPILE_PREFIX_HEADER = NO; ++ GCC_PREFIX_HEADER = ""; ++ GCC_PREPROCESSOR_DEFINITIONS = ( ++ "DEBUG=1", ++ IPHONE, ++ HAVE_FIPS, ++ HAVE_HASHDRBG, ++ HAVE_AESGCM, ++ WOLFSSL_SHA512, ++ WOLFSSL_SHA384, ++ NO_PWDBASED, ++ ); ++ HEADER_SEARCH_PATHS = ( ++ $SRCROOT, ++ $PROJECT_DIR/../.., ++ ); ++ OTHER_CFLAGS = ""; ++ OTHER_LDFLAGS = ""; ++ PRODUCT_NAME = wolfssl; ++ SKIP_INSTALL = YES; ++ TARGETED_DEVICE_FAMILY = "1,2"; ++ USER_HEADER_SEARCH_PATHS = "wolfssl/wolfcrypt wolfssl"; ++ }; ++ name = Debug; ++ }; ++ 52B1347416F3C9E800C07B32 /* Release */ = { ++ isa = XCBuildConfiguration; ++ buildSettings = { ++ ALWAYS_SEARCH_USER_PATHS = YES; ++ CLANG_LINK_OBJC_RUNTIME = NO; ++ DSTROOT = /tmp/wolfssl_ios.dst; ++ GCC_PRECOMPILE_PREFIX_HEADER = NO; ++ GCC_PREFIX_HEADER = ""; ++ GCC_PREPROCESSOR_DEFINITIONS = ( ++ IPHONE, ++ HAVE_FIPS, ++ HAVE_HASHDRBG, ++ HAVE_AESGCM, ++ WOLFSSL_SHA512, ++ WOLFSSL_SHA384, ++ NO_PWDBASED, ++ ); ++ HEADER_SEARCH_PATHS = ( ++ $SRCROOT, ++ $PROJECT_DIR/../.., ++ ); ++ OTHER_CFLAGS = ""; ++ OTHER_LDFLAGS = ""; ++ PRODUCT_NAME = wolfssl; ++ SKIP_INSTALL = YES; ++ TARGETED_DEVICE_FAMILY = "1,2"; ++ USER_HEADER_SEARCH_PATHS = "wolfssl/wolfcrypt wolfssl"; ++ }; ++ name = Release; ++ }; ++/* End XCBuildConfiguration section */ ++ ++/* Begin XCConfigurationList section */ ++ 52B1344816F3C9E800C07B32 /* Build configuration list for PBXProject "wolfssl-FIPS" */ = { ++ isa = XCConfigurationList; ++ buildConfigurations = ( ++ 52B1347016F3C9E800C07B32 /* Debug */, ++ 52B1347116F3C9E800C07B32 /* Release */, ++ ); ++ defaultConfigurationIsVisible = 0; ++ defaultConfigurationName = Release; ++ }; ++ 52B1347216F3C9E800C07B32 /* Build configuration list for PBXNativeTarget "wolfssl" */ = { ++ isa = XCConfigurationList; ++ buildConfigurations = ( ++ 52B1347316F3C9E800C07B32 /* Debug */, ++ 52B1347416F3C9E800C07B32 /* Release */, ++ ); ++ defaultConfigurationIsVisible = 0; ++ defaultConfigurationName = Release; ++ }; ++/* End XCConfigurationList section */ ++ }; ++ rootObject = 52B1344516F3C9E800C07B32 /* Project object */; ++} +diff -ruNp mysql-5.6.23/extra/wolfssl/IDE/iOS/wolfssl.xcodeproj/project.pbxproj mysql-5.6.23-wolfssl/extra/wolfssl/IDE/iOS/wolfssl.xcodeproj/project.pbxproj +--- mysql-5.6.23/extra/wolfssl/IDE/iOS/wolfssl.xcodeproj/project.pbxproj 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/IDE/iOS/wolfssl.xcodeproj/project.pbxproj 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,906 @@ ++// !$*UTF8*$! ++{ ++ archiveVersion = 1; ++ classes = { ++ }; ++ objectVersion = 46; ++ objects = { ++ ++/* Begin PBXBuildFile section */ ++ 521646091A89928E0062516A /* crl.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646011A89928E0062516A /* crl.c */; }; ++ 5216460A1A89928E0062516A /* internal.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646021A89928E0062516A /* internal.c */; }; ++ 5216460B1A89928E0062516A /* io.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646031A89928E0062516A /* io.c */; }; ++ 5216460C1A89928E0062516A /* keys.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646041A89928E0062516A /* keys.c */; }; ++ 5216460D1A89928E0062516A /* ocsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646051A89928E0062516A /* ocsp.c */; }; ++ 5216460E1A89928E0062516A /* sniffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646061A89928E0062516A /* sniffer.c */; }; ++ 5216460F1A89928E0062516A /* ssl.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646071A89928E0062516A /* ssl.c */; }; ++ 521646101A89928E0062516A /* tls.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646081A89928E0062516A /* tls.c */; }; ++ 521646321A8992CC0062516A /* aes.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646111A8992CC0062516A /* aes.c */; }; ++ 521646331A8992CC0062516A /* arc4.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646121A8992CC0062516A /* arc4.c */; }; ++ 521646341A8992CC0062516A /* asn.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646131A8992CC0062516A /* asn.c */; }; ++ 521646351A8992CC0062516A /* blake2b.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646141A8992CC0062516A /* blake2b.c */; }; ++ 521646361A8992CC0062516A /* camellia.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646151A8992CC0062516A /* camellia.c */; }; ++ 521646371A8992CC0062516A /* chacha.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646161A8992CC0062516A /* chacha.c */; }; ++ 521646381A8992CC0062516A /* coding.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646171A8992CC0062516A /* coding.c */; }; ++ 521646391A8992CC0062516A /* des3.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646181A8992CC0062516A /* des3.c */; }; ++ 5216463A1A8992CC0062516A /* dh.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646191A8992CC0062516A /* dh.c */; }; ++ 5216463B1A8992CC0062516A /* dsa.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216461A1A8992CC0062516A /* dsa.c */; }; ++ 5216463C1A8992CC0062516A /* ecc.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216461B1A8992CC0062516A /* ecc.c */; }; ++ 5216463D1A8992CC0062516A /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216461C1A8992CC0062516A /* error.c */; }; ++ 5216463E1A8992CC0062516A /* hc128.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216461D1A8992CC0062516A /* hc128.c */; }; ++ 5216463F1A8992CC0062516A /* hmac.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216461E1A8992CC0062516A /* hmac.c */; }; ++ 521646401A8992CC0062516A /* integer.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216461F1A8992CC0062516A /* integer.c */; }; ++ 521646411A8992CC0062516A /* logging.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646201A8992CC0062516A /* logging.c */; }; ++ 521646421A8992CC0062516A /* md2.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646211A8992CC0062516A /* md2.c */; }; ++ 521646431A8992CC0062516A /* md4.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646221A8992CC0062516A /* md4.c */; }; ++ 521646441A8992CC0062516A /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646231A8992CC0062516A /* md5.c */; }; ++ 521646451A8992CC0062516A /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646241A8992CC0062516A /* memory.c */; }; ++ 521646461A8992CC0062516A /* misc.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646251A8992CC0062516A /* misc.c */; }; ++ 521646471A8992CC0062516A /* pkcs7.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646261A8992CC0062516A /* pkcs7.c */; }; ++ 521646481A8992CC0062516A /* poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646271A8992CC0062516A /* poly1305.c */; }; ++ 521646491A8992CC0062516A /* pwdbased.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646281A8992CC0062516A /* pwdbased.c */; }; ++ 5216464A1A8992CC0062516A /* rabbit.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646291A8992CC0062516A /* rabbit.c */; }; ++ 5216464B1A8992CC0062516A /* random.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216462A1A8992CC0062516A /* random.c */; }; ++ 5216464C1A8992CC0062516A /* ripemd.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216462B1A8992CC0062516A /* ripemd.c */; }; ++ 5216464D1A8992CC0062516A /* rsa.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216462C1A8992CC0062516A /* rsa.c */; }; ++ 5216464E1A8992CC0062516A /* sha.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216462D1A8992CC0062516A /* sha.c */; }; ++ 5216464F1A8992CC0062516A /* sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216462E1A8992CC0062516A /* sha256.c */; }; ++ 521646501A8992CC0062516A /* sha512.c in Sources */ = {isa = PBXBuildFile; fileRef = 5216462F1A8992CC0062516A /* sha512.c */; }; ++ 521646511A8992CC0062516A /* tfm.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646301A8992CC0062516A /* tfm.c */; }; ++ 521646521A8992CC0062516A /* wc_port.c in Sources */ = {isa = PBXBuildFile; fileRef = 521646311A8992CC0062516A /* wc_port.c */; }; ++ 521646C41A8A7FE10062516A /* callbacks.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646531A8993290062516A /* callbacks.h */; }; ++ 521646C51A8A7FE10062516A /* certs_test.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646541A8993290062516A /* certs_test.h */; }; ++ 521646C61A8A7FE10062516A /* crl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646551A8993290062516A /* crl.h */; }; ++ 521646C71A8A7FE10062516A /* error-ssl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646561A8993290062516A /* error-ssl.h */; }; ++ 521646C81A8A7FE10062516A /* internal.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646571A8993290062516A /* internal.h */; }; ++ 521646C91A8A7FE10062516A /* ocsp.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646581A8993290062516A /* ocsp.h */; }; ++ 521646CA1A8A7FE10062516A /* ssl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216465B1A8993290062516A /* ssl.h */; }; ++ 521646CB1A8A7FE10062516A /* test.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216465C1A8993290062516A /* test.h */; }; ++ 521646CC1A8A7FE10062516A /* version.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216465D1A8993290062516A /* version.h */; }; ++ 521646CD1A8A7FF30062516A /* aes.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216465E1A8993770062516A /* aes.h */; }; ++ 521646CE1A8A7FF30062516A /* arc4.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216465F1A8993770062516A /* arc4.h */; }; ++ 521646CF1A8A7FF30062516A /* asn_public.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646601A8993770062516A /* asn_public.h */; }; ++ 521646D01A8A7FF30062516A /* asn.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646611A8993770062516A /* asn.h */; }; ++ 521646D11A8A7FF30062516A /* blake2-impl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646621A8993770062516A /* blake2-impl.h */; }; ++ 521646D21A8A7FF30062516A /* blake2-int.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646631A8993770062516A /* blake2-int.h */; }; ++ 521646D31A8A7FF30062516A /* blake2.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646641A8993770062516A /* blake2.h */; }; ++ 521646D41A8A7FF30062516A /* camellia.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646651A8993770062516A /* camellia.h */; }; ++ 521646D51A8A7FF30062516A /* chacha.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646661A8993770062516A /* chacha.h */; }; ++ 521646D61A8A7FF30062516A /* coding.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646671A8993770062516A /* coding.h */; }; ++ 521646D71A8A7FF30062516A /* compress.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646681A8993770062516A /* compress.h */; }; ++ 521646D81A8A7FF30062516A /* des3.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646691A8993770062516A /* des3.h */; }; ++ 521646D91A8A7FF30062516A /* dh.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216466A1A8993770062516A /* dh.h */; }; ++ 521646DA1A8A7FF30062516A /* dsa.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216466B1A8993770062516A /* dsa.h */; }; ++ 521646DB1A8A7FF30062516A /* ecc.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216466C1A8993770062516A /* ecc.h */; }; ++ 521646DC1A8A7FF30062516A /* error-crypt.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216466D1A8993770062516A /* error-crypt.h */; }; ++ 521646DD1A8A7FF30062516A /* fips_test.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216466E1A8993770062516A /* fips_test.h */; }; ++ 521646DE1A8A7FF30062516A /* hc128.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216466F1A8993770062516A /* hc128.h */; }; ++ 521646DF1A8A7FF30062516A /* hmac.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646701A8993770062516A /* hmac.h */; }; ++ 521646E01A8A7FF30062516A /* integer.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646721A8993770062516A /* integer.h */; }; ++ 521646E11A8A7FF30062516A /* logging.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646731A8993770062516A /* logging.h */; }; ++ 521646E21A8A7FF30062516A /* md2.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646741A8993770062516A /* md2.h */; }; ++ 521646E31A8A7FF30062516A /* md4.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646751A8993770062516A /* md4.h */; }; ++ 521646E41A8A7FF30062516A /* md5.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646761A8993770062516A /* md5.h */; }; ++ 521646E51A8A7FF30062516A /* memory.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646771A8993770062516A /* memory.h */; }; ++ 521646E61A8A7FF30062516A /* misc.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646781A8993770062516A /* misc.h */; }; ++ 521646E71A8A7FF30062516A /* mpi_class.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646791A8993770062516A /* mpi_class.h */; }; ++ 521646E81A8A7FF30062516A /* mpi_superclass.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216467A1A8993770062516A /* mpi_superclass.h */; }; ++ 521646E91A8A7FF30062516A /* pkcs7.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216467B1A8993770062516A /* pkcs7.h */; }; ++ 521646EA1A8A7FF30062516A /* poly1305.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216467C1A8993770062516A /* poly1305.h */; }; ++ 521646EB1A8A7FF30062516A /* pwdbased.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216467D1A8993770062516A /* pwdbased.h */; }; ++ 521646EC1A8A7FF30062516A /* rabbit.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216467E1A8993770062516A /* rabbit.h */; }; ++ 521646ED1A8A7FF30062516A /* random.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216467F1A8993770062516A /* random.h */; }; ++ 521646EE1A8A7FF30062516A /* ripemd.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646801A8993770062516A /* ripemd.h */; }; ++ 521646EF1A8A7FF30062516A /* rsa.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646811A8993770062516A /* rsa.h */; }; ++ 521646F01A8A7FF30062516A /* settings.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646821A8993770062516A /* settings.h */; }; ++ 521646F11A8A7FF30062516A /* sha.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646831A8993770062516A /* sha.h */; }; ++ 521646F21A8A7FF30062516A /* sha256.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646841A8993770062516A /* sha256.h */; }; ++ 521646F31A8A7FF30062516A /* sha512.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646851A8993770062516A /* sha512.h */; }; ++ 521646F41A8A7FF30062516A /* tfm.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646861A8993770062516A /* tfm.h */; }; ++ 521646F51A8A7FF30062516A /* types.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646871A8993770062516A /* types.h */; }; ++ 521646F61A8A7FF30062516A /* visibility.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646881A8993770062516A /* visibility.h */; }; ++ 521646F71A8A7FF30062516A /* wc_port.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646891A8993770062516A /* wc_port.h */; }; ++ 521646F81A8A80030062516A /* callbacks.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216468A1A8993BB0062516A /* callbacks.h */; }; ++ 521646F91A8A80030062516A /* certs_test.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216468B1A8993BB0062516A /* certs_test.h */; }; ++ 521646FA1A8A80030062516A /* crl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216468C1A8993BB0062516A /* crl.h */; }; ++ 521646FB1A8A80030062516A /* error-ssl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216468D1A8993BB0062516A /* error-ssl.h */; }; ++ 521646FC1A8A80030062516A /* internal.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216468E1A8993BB0062516A /* internal.h */; }; ++ 521646FD1A8A80030062516A /* ocsp.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216468F1A8993BB0062516A /* ocsp.h */; }; ++ 521646FE1A8A80030062516A /* ssl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646921A8993BB0062516A /* ssl.h */; }; ++ 521646FF1A8A80030062516A /* test.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646931A8993BB0062516A /* test.h */; }; ++ 521647001A8A80030062516A /* version.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646941A8993BB0062516A /* version.h */; }; ++ 521647011A8A80100062516A /* aes.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646951A8993F50062516A /* aes.h */; }; ++ 521647021A8A80100062516A /* arc4.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646961A8993F50062516A /* arc4.h */; }; ++ 521647031A8A80100062516A /* asn_public.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646971A8993F50062516A /* asn_public.h */; }; ++ 521647041A8A80100062516A /* asn.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646981A8993F50062516A /* asn.h */; }; ++ 521647051A8A80100062516A /* blake2-impl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646991A8993F50062516A /* blake2-impl.h */; }; ++ 521647061A8A80100062516A /* blake2-int.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216469A1A8993F50062516A /* blake2-int.h */; }; ++ 521647071A8A80100062516A /* blake2.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216469B1A8993F50062516A /* blake2.h */; }; ++ 521647081A8A80100062516A /* camellia.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216469C1A8993F50062516A /* camellia.h */; }; ++ 521647091A8A80100062516A /* chacha.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216469D1A8993F50062516A /* chacha.h */; }; ++ 5216470A1A8A80100062516A /* coding.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216469E1A8993F50062516A /* coding.h */; }; ++ 5216470B1A8A80100062516A /* compress.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5216469F1A8993F50062516A /* compress.h */; }; ++ 5216470C1A8A80100062516A /* des3.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A01A8993F50062516A /* des3.h */; }; ++ 5216470D1A8A80100062516A /* dh.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A11A8993F50062516A /* dh.h */; }; ++ 5216470E1A8A80100062516A /* dsa.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A21A8993F50062516A /* dsa.h */; }; ++ 5216470F1A8A80100062516A /* ecc.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A31A8993F50062516A /* ecc.h */; }; ++ 521647101A8A80100062516A /* error-crypt.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A41A8993F50062516A /* error-crypt.h */; }; ++ 521647111A8A80100062516A /* fips_test.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A51A8993F50062516A /* fips_test.h */; }; ++ 521647121A8A80100062516A /* hc128.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A61A8993F50062516A /* hc128.h */; }; ++ 521647131A8A80100062516A /* hmac.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A71A8993F50062516A /* hmac.h */; }; ++ 521647141A8A80100062516A /* integer.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A81A8993F50062516A /* integer.h */; }; ++ 521647151A8A80100062516A /* logging.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646A91A8993F50062516A /* logging.h */; }; ++ 521647161A8A80100062516A /* md2.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646AA1A8993F50062516A /* md2.h */; }; ++ 521647171A8A80100062516A /* md4.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646AB1A8993F50062516A /* md4.h */; }; ++ 521647181A8A80100062516A /* md5.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646AC1A8993F50062516A /* md5.h */; }; ++ 521647191A8A80100062516A /* memory.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646AD1A8993F50062516A /* memory.h */; }; ++ 5216471A1A8A80100062516A /* misc.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646AE1A8993F50062516A /* misc.h */; }; ++ 5216471B1A8A80100062516A /* mpi_class.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646AF1A8993F50062516A /* mpi_class.h */; }; ++ 5216471C1A8A80100062516A /* mpi_superclass.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B01A8993F50062516A /* mpi_superclass.h */; }; ++ 5216471D1A8A80100062516A /* pkcs7.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B11A8993F50062516A /* pkcs7.h */; }; ++ 5216471E1A8A80100062516A /* poly1305.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B21A8993F50062516A /* poly1305.h */; }; ++ 5216471F1A8A80100062516A /* pwdbased.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B31A8993F50062516A /* pwdbased.h */; }; ++ 521647201A8A80100062516A /* rabbit.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B41A8993F50062516A /* rabbit.h */; }; ++ 521647211A8A80100062516A /* random.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B51A8993F50062516A /* random.h */; }; ++ 521647221A8A80100062516A /* ripemd.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B61A8993F50062516A /* ripemd.h */; }; ++ 521647231A8A80100062516A /* rsa.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B71A8993F50062516A /* rsa.h */; }; ++ 521647241A8A80100062516A /* settings_comp.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B81A8993F50062516A /* settings_comp.h */; }; ++ 521647251A8A80100062516A /* settings.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646B91A8993F50062516A /* settings.h */; }; ++ 521647261A8A80100062516A /* sha.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646BA1A8993F50062516A /* sha.h */; }; ++ 521647271A8A80100062516A /* sha256.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646BB1A8993F50062516A /* sha256.h */; }; ++ 521647281A8A80100062516A /* sha512.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646BC1A8993F50062516A /* sha512.h */; }; ++ 521647291A8A80100062516A /* tfm.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646BD1A8993F50062516A /* tfm.h */; }; ++ 5216472A1A8A80100062516A /* types.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646BE1A8993F50062516A /* types.h */; }; ++ 5216472B1A8A80100062516A /* visibility.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646BF1A8993F50062516A /* visibility.h */; }; ++ 5216472C1A8A80100062516A /* wc_port.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 521646C01A8993F50062516A /* wc_port.h */; }; ++/* End PBXBuildFile section */ ++ ++/* Begin PBXCopyFilesBuildPhase section */ ++ 521646C11A8A7B380062516A /* CopyFiles */ = { ++ isa = PBXCopyFilesBuildPhase; ++ buildActionMask = 2147483647; ++ dstPath = include/wolfssl/wolfcrypt; ++ dstSubfolderSpec = 7; ++ files = ( ++ 521646CD1A8A7FF30062516A /* aes.h in CopyFiles */, ++ 521646CE1A8A7FF30062516A /* arc4.h in CopyFiles */, ++ 521646CF1A8A7FF30062516A /* asn_public.h in CopyFiles */, ++ 521646D01A8A7FF30062516A /* asn.h in CopyFiles */, ++ 521646D11A8A7FF30062516A /* blake2-impl.h in CopyFiles */, ++ 521646D21A8A7FF30062516A /* blake2-int.h in CopyFiles */, ++ 521646D31A8A7FF30062516A /* blake2.h in CopyFiles */, ++ 521646D41A8A7FF30062516A /* camellia.h in CopyFiles */, ++ 521646D51A8A7FF30062516A /* chacha.h in CopyFiles */, ++ 521646D61A8A7FF30062516A /* coding.h in CopyFiles */, ++ 521646D71A8A7FF30062516A /* compress.h in CopyFiles */, ++ 521646D81A8A7FF30062516A /* des3.h in CopyFiles */, ++ 521646D91A8A7FF30062516A /* dh.h in CopyFiles */, ++ 521646DA1A8A7FF30062516A /* dsa.h in CopyFiles */, ++ 521646DB1A8A7FF30062516A /* ecc.h in CopyFiles */, ++ 521646DC1A8A7FF30062516A /* error-crypt.h in CopyFiles */, ++ 521646DD1A8A7FF30062516A /* fips_test.h in CopyFiles */, ++ 521646DE1A8A7FF30062516A /* hc128.h in CopyFiles */, ++ 521646DF1A8A7FF30062516A /* hmac.h in CopyFiles */, ++ 521646E01A8A7FF30062516A /* integer.h in CopyFiles */, ++ 521646E11A8A7FF30062516A /* logging.h in CopyFiles */, ++ 521646E21A8A7FF30062516A /* md2.h in CopyFiles */, ++ 521646E31A8A7FF30062516A /* md4.h in CopyFiles */, ++ 521646E41A8A7FF30062516A /* md5.h in CopyFiles */, ++ 521646E51A8A7FF30062516A /* memory.h in CopyFiles */, ++ 521646E61A8A7FF30062516A /* misc.h in CopyFiles */, ++ 521646E71A8A7FF30062516A /* mpi_class.h in CopyFiles */, ++ 521646E81A8A7FF30062516A /* mpi_superclass.h in CopyFiles */, ++ 521646E91A8A7FF30062516A /* pkcs7.h in CopyFiles */, ++ 521646EA1A8A7FF30062516A /* poly1305.h in CopyFiles */, ++ 521646EB1A8A7FF30062516A /* pwdbased.h in CopyFiles */, ++ 521646EC1A8A7FF30062516A /* rabbit.h in CopyFiles */, ++ 521646ED1A8A7FF30062516A /* random.h in CopyFiles */, ++ 521646EE1A8A7FF30062516A /* ripemd.h in CopyFiles */, ++ 521646EF1A8A7FF30062516A /* rsa.h in CopyFiles */, ++ 521646F01A8A7FF30062516A /* settings.h in CopyFiles */, ++ 521646F11A8A7FF30062516A /* sha.h in CopyFiles */, ++ 521646F21A8A7FF30062516A /* sha256.h in CopyFiles */, ++ 521646F31A8A7FF30062516A /* sha512.h in CopyFiles */, ++ 521646F41A8A7FF30062516A /* tfm.h in CopyFiles */, ++ 521646F51A8A7FF30062516A /* types.h in CopyFiles */, ++ 521646F61A8A7FF30062516A /* visibility.h in CopyFiles */, ++ 521646F71A8A7FF30062516A /* wc_port.h in CopyFiles */, ++ ); ++ runOnlyForDeploymentPostprocessing = 0; ++ }; ++ 521646C21A8A7B3B0062516A /* CopyFiles */ = { ++ isa = PBXCopyFilesBuildPhase; ++ buildActionMask = 2147483647; ++ dstPath = include/cyassl; ++ dstSubfolderSpec = 7; ++ files = ( ++ 521646F81A8A80030062516A /* callbacks.h in CopyFiles */, ++ 521646F91A8A80030062516A /* certs_test.h in CopyFiles */, ++ 521646FA1A8A80030062516A /* crl.h in CopyFiles */, ++ 521646FB1A8A80030062516A /* error-ssl.h in CopyFiles */, ++ 521646FC1A8A80030062516A /* internal.h in CopyFiles */, ++ 521646FD1A8A80030062516A /* ocsp.h in CopyFiles */, ++ 521646FE1A8A80030062516A /* ssl.h in CopyFiles */, ++ 521646FF1A8A80030062516A /* test.h in CopyFiles */, ++ 521647001A8A80030062516A /* version.h in CopyFiles */, ++ ); ++ runOnlyForDeploymentPostprocessing = 0; ++ }; ++ 521646C31A8A7B3D0062516A /* CopyFiles */ = { ++ isa = PBXCopyFilesBuildPhase; ++ buildActionMask = 2147483647; ++ dstPath = include/cyassl/ctaocrypt; ++ dstSubfolderSpec = 7; ++ files = ( ++ 521647011A8A80100062516A /* aes.h in CopyFiles */, ++ 521647021A8A80100062516A /* arc4.h in CopyFiles */, ++ 521647031A8A80100062516A /* asn_public.h in CopyFiles */, ++ 521647041A8A80100062516A /* asn.h in CopyFiles */, ++ 521647051A8A80100062516A /* blake2-impl.h in CopyFiles */, ++ 521647061A8A80100062516A /* blake2-int.h in CopyFiles */, ++ 521647071A8A80100062516A /* blake2.h in CopyFiles */, ++ 521647081A8A80100062516A /* camellia.h in CopyFiles */, ++ 521647091A8A80100062516A /* chacha.h in CopyFiles */, ++ 5216470A1A8A80100062516A /* coding.h in CopyFiles */, ++ 5216470B1A8A80100062516A /* compress.h in CopyFiles */, ++ 5216470C1A8A80100062516A /* des3.h in CopyFiles */, ++ 5216470D1A8A80100062516A /* dh.h in CopyFiles */, ++ 5216470E1A8A80100062516A /* dsa.h in CopyFiles */, ++ 5216470F1A8A80100062516A /* ecc.h in CopyFiles */, ++ 521647101A8A80100062516A /* error-crypt.h in CopyFiles */, ++ 521647111A8A80100062516A /* fips_test.h in CopyFiles */, ++ 521647121A8A80100062516A /* hc128.h in CopyFiles */, ++ 521647131A8A80100062516A /* hmac.h in CopyFiles */, ++ 521647141A8A80100062516A /* integer.h in CopyFiles */, ++ 521647151A8A80100062516A /* logging.h in CopyFiles */, ++ 521647161A8A80100062516A /* md2.h in CopyFiles */, ++ 521647171A8A80100062516A /* md4.h in CopyFiles */, ++ 521647181A8A80100062516A /* md5.h in CopyFiles */, ++ 521647191A8A80100062516A /* memory.h in CopyFiles */, ++ 5216471A1A8A80100062516A /* misc.h in CopyFiles */, ++ 5216471B1A8A80100062516A /* mpi_class.h in CopyFiles */, ++ 5216471C1A8A80100062516A /* mpi_superclass.h in CopyFiles */, ++ 5216471D1A8A80100062516A /* pkcs7.h in CopyFiles */, ++ 5216471E1A8A80100062516A /* poly1305.h in CopyFiles */, ++ 5216471F1A8A80100062516A /* pwdbased.h in CopyFiles */, ++ 521647201A8A80100062516A /* rabbit.h in CopyFiles */, ++ 521647211A8A80100062516A /* random.h in CopyFiles */, ++ 521647221A8A80100062516A /* ripemd.h in CopyFiles */, ++ 521647231A8A80100062516A /* rsa.h in CopyFiles */, ++ 521647241A8A80100062516A /* settings_comp.h in CopyFiles */, ++ 521647251A8A80100062516A /* settings.h in CopyFiles */, ++ 521647261A8A80100062516A /* sha.h in CopyFiles */, ++ 521647271A8A80100062516A /* sha256.h in CopyFiles */, ++ 521647281A8A80100062516A /* sha512.h in CopyFiles */, ++ 521647291A8A80100062516A /* tfm.h in CopyFiles */, ++ 5216472A1A8A80100062516A /* types.h in CopyFiles */, ++ 5216472B1A8A80100062516A /* visibility.h in CopyFiles */, ++ 5216472C1A8A80100062516A /* wc_port.h in CopyFiles */, ++ ); ++ runOnlyForDeploymentPostprocessing = 0; ++ }; ++ 52B1344B16F3C9E800C07B32 /* CopyFiles */ = { ++ isa = PBXCopyFilesBuildPhase; ++ buildActionMask = 2147483647; ++ dstPath = include/wolfssl; ++ dstSubfolderSpec = 16; ++ files = ( ++ 521646C41A8A7FE10062516A /* callbacks.h in CopyFiles */, ++ 521646C51A8A7FE10062516A /* certs_test.h in CopyFiles */, ++ 521646C61A8A7FE10062516A /* crl.h in CopyFiles */, ++ 521646C71A8A7FE10062516A /* error-ssl.h in CopyFiles */, ++ 521646C81A8A7FE10062516A /* internal.h in CopyFiles */, ++ 521646C91A8A7FE10062516A /* ocsp.h in CopyFiles */, ++ 521646CA1A8A7FE10062516A /* ssl.h in CopyFiles */, ++ 521646CB1A8A7FE10062516A /* test.h in CopyFiles */, ++ 521646CC1A8A7FE10062516A /* version.h in CopyFiles */, ++ ); ++ runOnlyForDeploymentPostprocessing = 0; ++ }; ++/* End PBXCopyFilesBuildPhase section */ ++ ++/* Begin PBXFileReference section */ ++ 521646011A89928E0062516A /* crl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = crl.c; path = ../../src/crl.c; sourceTree = ""; }; ++ 521646021A89928E0062516A /* internal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = internal.c; path = ../../src/internal.c; sourceTree = ""; }; ++ 521646031A89928E0062516A /* io.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = io.c; path = ../../src/io.c; sourceTree = ""; }; ++ 521646041A89928E0062516A /* keys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = keys.c; path = ../../src/keys.c; sourceTree = ""; }; ++ 521646051A89928E0062516A /* ocsp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ocsp.c; path = ../../src/ocsp.c; sourceTree = ""; }; ++ 521646061A89928E0062516A /* sniffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sniffer.c; path = ../../src/sniffer.c; sourceTree = ""; }; ++ 521646071A89928E0062516A /* ssl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ssl.c; path = ../../src/ssl.c; sourceTree = ""; }; ++ 521646081A89928E0062516A /* tls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tls.c; path = ../../src/tls.c; sourceTree = ""; }; ++ 521646111A8992CC0062516A /* aes.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = aes.c; path = ../../wolfcrypt/src/aes.c; sourceTree = SOURCE_ROOT; }; ++ 521646121A8992CC0062516A /* arc4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = arc4.c; path = ../../wolfcrypt/src/arc4.c; sourceTree = SOURCE_ROOT; }; ++ 521646131A8992CC0062516A /* asn.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = asn.c; path = ../../wolfcrypt/src/asn.c; sourceTree = SOURCE_ROOT; }; ++ 521646141A8992CC0062516A /* blake2b.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = blake2b.c; path = ../../wolfcrypt/src/blake2b.c; sourceTree = SOURCE_ROOT; }; ++ 521646151A8992CC0062516A /* camellia.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = camellia.c; path = ../../wolfcrypt/src/camellia.c; sourceTree = SOURCE_ROOT; }; ++ 521646161A8992CC0062516A /* chacha.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = chacha.c; path = ../../wolfcrypt/src/chacha.c; sourceTree = SOURCE_ROOT; }; ++ 521646171A8992CC0062516A /* coding.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = coding.c; path = ../../wolfcrypt/src/coding.c; sourceTree = SOURCE_ROOT; }; ++ 521646181A8992CC0062516A /* des3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = des3.c; path = ../../wolfcrypt/src/des3.c; sourceTree = SOURCE_ROOT; }; ++ 521646191A8992CC0062516A /* dh.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dh.c; path = ../../wolfcrypt/src/dh.c; sourceTree = SOURCE_ROOT; }; ++ 5216461A1A8992CC0062516A /* dsa.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dsa.c; path = ../../wolfcrypt/src/dsa.c; sourceTree = SOURCE_ROOT; }; ++ 5216461B1A8992CC0062516A /* ecc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ecc.c; path = ../../wolfcrypt/src/ecc.c; sourceTree = SOURCE_ROOT; }; ++ 5216461C1A8992CC0062516A /* error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = error.c; path = ../../wolfcrypt/src/error.c; sourceTree = SOURCE_ROOT; }; ++ 5216461D1A8992CC0062516A /* hc128.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = hc128.c; path = ../../wolfcrypt/src/hc128.c; sourceTree = SOURCE_ROOT; }; ++ 5216461E1A8992CC0062516A /* hmac.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = hmac.c; path = ../../wolfcrypt/src/hmac.c; sourceTree = SOURCE_ROOT; }; ++ 5216461F1A8992CC0062516A /* integer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = integer.c; path = ../../wolfcrypt/src/integer.c; sourceTree = SOURCE_ROOT; }; ++ 521646201A8992CC0062516A /* logging.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = logging.c; path = ../../wolfcrypt/src/logging.c; sourceTree = SOURCE_ROOT; }; ++ 521646211A8992CC0062516A /* md2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = md2.c; path = ../../wolfcrypt/src/md2.c; sourceTree = SOURCE_ROOT; }; ++ 521646221A8992CC0062516A /* md4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = md4.c; path = ../../wolfcrypt/src/md4.c; sourceTree = SOURCE_ROOT; }; ++ 521646231A8992CC0062516A /* md5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = md5.c; path = ../../wolfcrypt/src/md5.c; sourceTree = SOURCE_ROOT; }; ++ 521646241A8992CC0062516A /* memory.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = memory.c; path = ../../wolfcrypt/src/memory.c; sourceTree = SOURCE_ROOT; }; ++ 521646251A8992CC0062516A /* misc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = misc.c; path = ../../wolfcrypt/src/misc.c; sourceTree = SOURCE_ROOT; }; ++ 521646261A8992CC0062516A /* pkcs7.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pkcs7.c; path = ../../wolfcrypt/src/pkcs7.c; sourceTree = SOURCE_ROOT; }; ++ 521646271A8992CC0062516A /* poly1305.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = poly1305.c; path = ../../wolfcrypt/src/poly1305.c; sourceTree = SOURCE_ROOT; }; ++ 521646281A8992CC0062516A /* pwdbased.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pwdbased.c; path = ../../wolfcrypt/src/pwdbased.c; sourceTree = SOURCE_ROOT; }; ++ 521646291A8992CC0062516A /* rabbit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rabbit.c; path = ../../wolfcrypt/src/rabbit.c; sourceTree = SOURCE_ROOT; }; ++ 5216462A1A8992CC0062516A /* random.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = random.c; path = ../../wolfcrypt/src/random.c; sourceTree = SOURCE_ROOT; }; ++ 5216462B1A8992CC0062516A /* ripemd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ripemd.c; path = ../../wolfcrypt/src/ripemd.c; sourceTree = SOURCE_ROOT; }; ++ 5216462C1A8992CC0062516A /* rsa.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rsa.c; path = ../../wolfcrypt/src/rsa.c; sourceTree = SOURCE_ROOT; }; ++ 5216462D1A8992CC0062516A /* sha.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sha.c; path = ../../wolfcrypt/src/sha.c; sourceTree = SOURCE_ROOT; }; ++ 5216462E1A8992CC0062516A /* sha256.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sha256.c; path = ../../wolfcrypt/src/sha256.c; sourceTree = SOURCE_ROOT; }; ++ 5216462F1A8992CC0062516A /* sha512.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sha512.c; path = ../../wolfcrypt/src/sha512.c; sourceTree = SOURCE_ROOT; }; ++ 521646301A8992CC0062516A /* tfm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tfm.c; path = ../../wolfcrypt/src/tfm.c; sourceTree = SOURCE_ROOT; }; ++ 521646311A8992CC0062516A /* wc_port.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = wc_port.c; path = ../../wolfcrypt/src/wc_port.c; sourceTree = SOURCE_ROOT; }; ++ 521646531A8993290062516A /* callbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = callbacks.h; path = ../../wolfssl/callbacks.h; sourceTree = ""; }; ++ 521646541A8993290062516A /* certs_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = certs_test.h; path = ../../wolfssl/certs_test.h; sourceTree = ""; }; ++ 521646551A8993290062516A /* crl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = crl.h; path = ../../wolfssl/crl.h; sourceTree = ""; }; ++ 521646561A8993290062516A /* error-ssl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "error-ssl.h"; path = "../../wolfssl/error-ssl.h"; sourceTree = ""; }; ++ 521646571A8993290062516A /* internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = internal.h; path = ../../wolfssl/internal.h; sourceTree = ""; }; ++ 521646581A8993290062516A /* ocsp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ocsp.h; path = ../../wolfssl/ocsp.h; sourceTree = ""; }; ++ 5216465B1A8993290062516A /* ssl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ssl.h; path = ../../wolfssl/ssl.h; sourceTree = ""; }; ++ 5216465C1A8993290062516A /* test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = test.h; path = ../../wolfssl/test.h; sourceTree = ""; }; ++ 5216465D1A8993290062516A /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = version.h; path = ../../wolfssl/version.h; sourceTree = ""; }; ++ 5216465E1A8993770062516A /* aes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = aes.h; path = ../../wolfssl/wolfcrypt/aes.h; sourceTree = ""; }; ++ 5216465F1A8993770062516A /* arc4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = arc4.h; path = ../../wolfssl/wolfcrypt/arc4.h; sourceTree = ""; }; ++ 521646601A8993770062516A /* asn_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = asn_public.h; path = ../../wolfssl/wolfcrypt/asn_public.h; sourceTree = ""; }; ++ 521646611A8993770062516A /* asn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = asn.h; path = ../../wolfssl/wolfcrypt/asn.h; sourceTree = ""; }; ++ 521646621A8993770062516A /* blake2-impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "blake2-impl.h"; path = "../../wolfssl/wolfcrypt/blake2-impl.h"; sourceTree = ""; }; ++ 521646631A8993770062516A /* blake2-int.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "blake2-int.h"; path = "../../wolfssl/wolfcrypt/blake2-int.h"; sourceTree = ""; }; ++ 521646641A8993770062516A /* blake2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = blake2.h; path = ../../wolfssl/wolfcrypt/blake2.h; sourceTree = ""; }; ++ 521646651A8993770062516A /* camellia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = camellia.h; path = ../../wolfssl/wolfcrypt/camellia.h; sourceTree = ""; }; ++ 521646661A8993770062516A /* chacha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = chacha.h; path = ../../wolfssl/wolfcrypt/chacha.h; sourceTree = ""; }; ++ 521646671A8993770062516A /* coding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = coding.h; path = ../../wolfssl/wolfcrypt/coding.h; sourceTree = ""; }; ++ 521646681A8993770062516A /* compress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = compress.h; path = ../../wolfssl/wolfcrypt/compress.h; sourceTree = ""; }; ++ 521646691A8993770062516A /* des3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = des3.h; path = ../../wolfssl/wolfcrypt/des3.h; sourceTree = ""; }; ++ 5216466A1A8993770062516A /* dh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dh.h; path = ../../wolfssl/wolfcrypt/dh.h; sourceTree = ""; }; ++ 5216466B1A8993770062516A /* dsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dsa.h; path = ../../wolfssl/wolfcrypt/dsa.h; sourceTree = ""; }; ++ 5216466C1A8993770062516A /* ecc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ecc.h; path = ../../wolfssl/wolfcrypt/ecc.h; sourceTree = ""; }; ++ 5216466D1A8993770062516A /* error-crypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "error-crypt.h"; path = "../../wolfssl/wolfcrypt/error-crypt.h"; sourceTree = ""; }; ++ 5216466E1A8993770062516A /* fips_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = fips_test.h; path = ../../wolfssl/wolfcrypt/fips_test.h; sourceTree = ""; }; ++ 5216466F1A8993770062516A /* hc128.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = hc128.h; path = ../../wolfssl/wolfcrypt/hc128.h; sourceTree = ""; }; ++ 521646701A8993770062516A /* hmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = hmac.h; path = ../../wolfssl/wolfcrypt/hmac.h; sourceTree = ""; }; ++ 521646721A8993770062516A /* integer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = integer.h; path = ../../wolfssl/wolfcrypt/integer.h; sourceTree = ""; }; ++ 521646731A8993770062516A /* logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = logging.h; path = ../../wolfssl/wolfcrypt/logging.h; sourceTree = ""; }; ++ 521646741A8993770062516A /* md2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = md2.h; path = ../../wolfssl/wolfcrypt/md2.h; sourceTree = ""; }; ++ 521646751A8993770062516A /* md4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = md4.h; path = ../../wolfssl/wolfcrypt/md4.h; sourceTree = ""; }; ++ 521646761A8993770062516A /* md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = md5.h; path = ../../wolfssl/wolfcrypt/md5.h; sourceTree = ""; }; ++ 521646771A8993770062516A /* memory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = memory.h; path = ../../wolfssl/wolfcrypt/memory.h; sourceTree = ""; }; ++ 521646781A8993770062516A /* misc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = misc.h; path = ../../wolfssl/wolfcrypt/misc.h; sourceTree = ""; }; ++ 521646791A8993770062516A /* mpi_class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mpi_class.h; path = ../../wolfssl/wolfcrypt/mpi_class.h; sourceTree = ""; }; ++ 5216467A1A8993770062516A /* mpi_superclass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mpi_superclass.h; path = ../../wolfssl/wolfcrypt/mpi_superclass.h; sourceTree = ""; }; ++ 5216467B1A8993770062516A /* pkcs7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pkcs7.h; path = ../../wolfssl/wolfcrypt/pkcs7.h; sourceTree = ""; }; ++ 5216467C1A8993770062516A /* poly1305.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = poly1305.h; path = ../../wolfssl/wolfcrypt/poly1305.h; sourceTree = ""; }; ++ 5216467D1A8993770062516A /* pwdbased.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pwdbased.h; path = ../../wolfssl/wolfcrypt/pwdbased.h; sourceTree = ""; }; ++ 5216467E1A8993770062516A /* rabbit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rabbit.h; path = ../../wolfssl/wolfcrypt/rabbit.h; sourceTree = ""; }; ++ 5216467F1A8993770062516A /* random.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = random.h; path = ../../wolfssl/wolfcrypt/random.h; sourceTree = ""; }; ++ 521646801A8993770062516A /* ripemd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ripemd.h; path = ../../wolfssl/wolfcrypt/ripemd.h; sourceTree = ""; }; ++ 521646811A8993770062516A /* rsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rsa.h; path = ../../wolfssl/wolfcrypt/rsa.h; sourceTree = ""; }; ++ 521646821A8993770062516A /* settings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = settings.h; path = ../../wolfssl/wolfcrypt/settings.h; sourceTree = ""; }; ++ 521646831A8993770062516A /* sha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sha.h; path = ../../wolfssl/wolfcrypt/sha.h; sourceTree = ""; }; ++ 521646841A8993770062516A /* sha256.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sha256.h; path = ../../wolfssl/wolfcrypt/sha256.h; sourceTree = ""; }; ++ 521646851A8993770062516A /* sha512.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sha512.h; path = ../../wolfssl/wolfcrypt/sha512.h; sourceTree = ""; }; ++ 521646861A8993770062516A /* tfm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tfm.h; path = ../../wolfssl/wolfcrypt/tfm.h; sourceTree = ""; }; ++ 521646871A8993770062516A /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = types.h; path = ../../wolfssl/wolfcrypt/types.h; sourceTree = ""; }; ++ 521646881A8993770062516A /* visibility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = visibility.h; path = ../../wolfssl/wolfcrypt/visibility.h; sourceTree = ""; }; ++ 521646891A8993770062516A /* wc_port.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wc_port.h; path = ../../wolfssl/wolfcrypt/wc_port.h; sourceTree = ""; }; ++ 5216468A1A8993BB0062516A /* callbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = callbacks.h; path = ../../cyassl/callbacks.h; sourceTree = ""; }; ++ 5216468B1A8993BB0062516A /* certs_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = certs_test.h; path = ../../cyassl/certs_test.h; sourceTree = ""; }; ++ 5216468C1A8993BB0062516A /* crl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = crl.h; path = ../../cyassl/crl.h; sourceTree = ""; }; ++ 5216468D1A8993BB0062516A /* error-ssl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "error-ssl.h"; path = "../../cyassl/error-ssl.h"; sourceTree = ""; }; ++ 5216468E1A8993BB0062516A /* internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = internal.h; path = ../../cyassl/internal.h; sourceTree = ""; }; ++ 5216468F1A8993BB0062516A /* ocsp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ocsp.h; path = ../../cyassl/ocsp.h; sourceTree = ""; }; ++ 521646921A8993BB0062516A /* ssl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ssl.h; path = ../../cyassl/ssl.h; sourceTree = ""; }; ++ 521646931A8993BB0062516A /* test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = test.h; path = ../../cyassl/test.h; sourceTree = ""; }; ++ 521646941A8993BB0062516A /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = version.h; path = ../../cyassl/version.h; sourceTree = ""; }; ++ 521646951A8993F50062516A /* aes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = aes.h; path = ../../cyassl/ctaocrypt/aes.h; sourceTree = ""; }; ++ 521646961A8993F50062516A /* arc4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = arc4.h; path = ../../cyassl/ctaocrypt/arc4.h; sourceTree = ""; }; ++ 521646971A8993F50062516A /* asn_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = asn_public.h; path = ../../cyassl/ctaocrypt/asn_public.h; sourceTree = ""; }; ++ 521646981A8993F50062516A /* asn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = asn.h; path = ../../cyassl/ctaocrypt/asn.h; sourceTree = ""; }; ++ 521646991A8993F50062516A /* blake2-impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "blake2-impl.h"; path = "../../cyassl/ctaocrypt/blake2-impl.h"; sourceTree = ""; }; ++ 5216469A1A8993F50062516A /* blake2-int.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "blake2-int.h"; path = "../../cyassl/ctaocrypt/blake2-int.h"; sourceTree = ""; }; ++ 5216469B1A8993F50062516A /* blake2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = blake2.h; path = ../../cyassl/ctaocrypt/blake2.h; sourceTree = ""; }; ++ 5216469C1A8993F50062516A /* camellia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = camellia.h; path = ../../cyassl/ctaocrypt/camellia.h; sourceTree = ""; }; ++ 5216469D1A8993F50062516A /* chacha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = chacha.h; path = ../../cyassl/ctaocrypt/chacha.h; sourceTree = ""; }; ++ 5216469E1A8993F50062516A /* coding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = coding.h; path = ../../cyassl/ctaocrypt/coding.h; sourceTree = ""; }; ++ 5216469F1A8993F50062516A /* compress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = compress.h; path = ../../cyassl/ctaocrypt/compress.h; sourceTree = ""; }; ++ 521646A01A8993F50062516A /* des3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = des3.h; path = ../../cyassl/ctaocrypt/des3.h; sourceTree = ""; }; ++ 521646A11A8993F50062516A /* dh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dh.h; path = ../../cyassl/ctaocrypt/dh.h; sourceTree = ""; }; ++ 521646A21A8993F50062516A /* dsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dsa.h; path = ../../cyassl/ctaocrypt/dsa.h; sourceTree = ""; }; ++ 521646A31A8993F50062516A /* ecc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ecc.h; path = ../../cyassl/ctaocrypt/ecc.h; sourceTree = ""; }; ++ 521646A41A8993F50062516A /* error-crypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "error-crypt.h"; path = "../../cyassl/ctaocrypt/error-crypt.h"; sourceTree = ""; }; ++ 521646A51A8993F50062516A /* fips_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = fips_test.h; path = ../../cyassl/ctaocrypt/fips_test.h; sourceTree = ""; }; ++ 521646A61A8993F50062516A /* hc128.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = hc128.h; path = ../../cyassl/ctaocrypt/hc128.h; sourceTree = ""; }; ++ 521646A71A8993F50062516A /* hmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = hmac.h; path = ../../cyassl/ctaocrypt/hmac.h; sourceTree = ""; }; ++ 521646A81A8993F50062516A /* integer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = integer.h; path = ../../cyassl/ctaocrypt/integer.h; sourceTree = ""; }; ++ 521646A91A8993F50062516A /* logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = logging.h; path = ../../cyassl/ctaocrypt/logging.h; sourceTree = ""; }; ++ 521646AA1A8993F50062516A /* md2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = md2.h; path = ../../cyassl/ctaocrypt/md2.h; sourceTree = ""; }; ++ 521646AB1A8993F50062516A /* md4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = md4.h; path = ../../cyassl/ctaocrypt/md4.h; sourceTree = ""; }; ++ 521646AC1A8993F50062516A /* md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = md5.h; path = ../../cyassl/ctaocrypt/md5.h; sourceTree = ""; }; ++ 521646AD1A8993F50062516A /* memory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = memory.h; path = ../../cyassl/ctaocrypt/memory.h; sourceTree = ""; }; ++ 521646AE1A8993F50062516A /* misc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = misc.h; path = ../../cyassl/ctaocrypt/misc.h; sourceTree = ""; }; ++ 521646AF1A8993F50062516A /* mpi_class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mpi_class.h; path = ../../cyassl/ctaocrypt/mpi_class.h; sourceTree = ""; }; ++ 521646B01A8993F50062516A /* mpi_superclass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mpi_superclass.h; path = ../../cyassl/ctaocrypt/mpi_superclass.h; sourceTree = ""; }; ++ 521646B11A8993F50062516A /* pkcs7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pkcs7.h; path = ../../cyassl/ctaocrypt/pkcs7.h; sourceTree = ""; }; ++ 521646B21A8993F50062516A /* poly1305.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = poly1305.h; path = ../../cyassl/ctaocrypt/poly1305.h; sourceTree = ""; }; ++ 521646B31A8993F50062516A /* pwdbased.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pwdbased.h; path = ../../cyassl/ctaocrypt/pwdbased.h; sourceTree = ""; }; ++ 521646B41A8993F50062516A /* rabbit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rabbit.h; path = ../../cyassl/ctaocrypt/rabbit.h; sourceTree = ""; }; ++ 521646B51A8993F50062516A /* random.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = random.h; path = ../../cyassl/ctaocrypt/random.h; sourceTree = ""; }; ++ 521646B61A8993F50062516A /* ripemd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ripemd.h; path = ../../cyassl/ctaocrypt/ripemd.h; sourceTree = ""; }; ++ 521646B71A8993F50062516A /* rsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rsa.h; path = ../../cyassl/ctaocrypt/rsa.h; sourceTree = ""; }; ++ 521646B81A8993F50062516A /* settings_comp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = settings_comp.h; path = ../../cyassl/ctaocrypt/settings_comp.h; sourceTree = ""; }; ++ 521646B91A8993F50062516A /* settings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = settings.h; path = ../../cyassl/ctaocrypt/settings.h; sourceTree = ""; }; ++ 521646BA1A8993F50062516A /* sha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sha.h; path = ../../cyassl/ctaocrypt/sha.h; sourceTree = ""; }; ++ 521646BB1A8993F50062516A /* sha256.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sha256.h; path = ../../cyassl/ctaocrypt/sha256.h; sourceTree = ""; }; ++ 521646BC1A8993F50062516A /* sha512.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sha512.h; path = ../../cyassl/ctaocrypt/sha512.h; sourceTree = ""; }; ++ 521646BD1A8993F50062516A /* tfm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tfm.h; path = ../../cyassl/ctaocrypt/tfm.h; sourceTree = ""; }; ++ 521646BE1A8993F50062516A /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = types.h; path = ../../cyassl/ctaocrypt/types.h; sourceTree = ""; }; ++ 521646BF1A8993F50062516A /* visibility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = visibility.h; path = ../../cyassl/ctaocrypt/visibility.h; sourceTree = ""; }; ++ 521646C01A8993F50062516A /* wc_port.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wc_port.h; path = ../../cyassl/ctaocrypt/wc_port.h; sourceTree = ""; }; ++ 52B1344D16F3C9E800C07B32 /* libwolfssl.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libwolfssl.a; sourceTree = BUILT_PRODUCTS_DIR; }; ++/* End PBXFileReference section */ ++ ++/* Begin PBXFrameworksBuildPhase section */ ++ 52B1344A16F3C9E800C07B32 /* Frameworks */ = { ++ isa = PBXFrameworksBuildPhase; ++ buildActionMask = 2147483647; ++ files = ( ++ ); ++ runOnlyForDeploymentPostprocessing = 0; ++ }; ++/* End PBXFrameworksBuildPhase section */ ++ ++/* Begin PBXGroup section */ ++ 521645391A898E7B0062516A /* Headers */ = { ++ isa = PBXGroup; ++ children = ( ++ 521645F91A89916E0062516A /* wolfSSL */, ++ 521645F81A89916A0062516A /* wolfCrypt */, ++ 521645F71A8991680062516A /* CyaSSL */, ++ 521645F61A8991640062516A /* CtaoCrypt */, ++ ); ++ name = Headers; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 521645F61A8991640062516A /* CtaoCrypt */ = { ++ isa = PBXGroup; ++ children = ( ++ 521646951A8993F50062516A /* aes.h */, ++ 521646961A8993F50062516A /* arc4.h */, ++ 521646971A8993F50062516A /* asn_public.h */, ++ 521646981A8993F50062516A /* asn.h */, ++ 521646991A8993F50062516A /* blake2-impl.h */, ++ 5216469A1A8993F50062516A /* blake2-int.h */, ++ 5216469B1A8993F50062516A /* blake2.h */, ++ 5216469C1A8993F50062516A /* camellia.h */, ++ 5216469D1A8993F50062516A /* chacha.h */, ++ 5216469E1A8993F50062516A /* coding.h */, ++ 5216469F1A8993F50062516A /* compress.h */, ++ 521646A01A8993F50062516A /* des3.h */, ++ 521646A11A8993F50062516A /* dh.h */, ++ 521646A21A8993F50062516A /* dsa.h */, ++ 521646A31A8993F50062516A /* ecc.h */, ++ 521646A41A8993F50062516A /* error-crypt.h */, ++ 521646A51A8993F50062516A /* fips_test.h */, ++ 521646A61A8993F50062516A /* hc128.h */, ++ 521646A71A8993F50062516A /* hmac.h */, ++ 521646A81A8993F50062516A /* integer.h */, ++ 521646A91A8993F50062516A /* logging.h */, ++ 521646AA1A8993F50062516A /* md2.h */, ++ 521646AB1A8993F50062516A /* md4.h */, ++ 521646AC1A8993F50062516A /* md5.h */, ++ 521646AD1A8993F50062516A /* memory.h */, ++ 521646AE1A8993F50062516A /* misc.h */, ++ 521646AF1A8993F50062516A /* mpi_class.h */, ++ 521646B01A8993F50062516A /* mpi_superclass.h */, ++ 521646B11A8993F50062516A /* pkcs7.h */, ++ 521646B21A8993F50062516A /* poly1305.h */, ++ 521646B31A8993F50062516A /* pwdbased.h */, ++ 521646B41A8993F50062516A /* rabbit.h */, ++ 521646B51A8993F50062516A /* random.h */, ++ 521646B61A8993F50062516A /* ripemd.h */, ++ 521646B71A8993F50062516A /* rsa.h */, ++ 521646B81A8993F50062516A /* settings_comp.h */, ++ 521646B91A8993F50062516A /* settings.h */, ++ 521646BA1A8993F50062516A /* sha.h */, ++ 521646BB1A8993F50062516A /* sha256.h */, ++ 521646BC1A8993F50062516A /* sha512.h */, ++ 521646BD1A8993F50062516A /* tfm.h */, ++ 521646BE1A8993F50062516A /* types.h */, ++ 521646BF1A8993F50062516A /* visibility.h */, ++ 521646C01A8993F50062516A /* wc_port.h */, ++ ); ++ name = CtaoCrypt; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 521645F71A8991680062516A /* CyaSSL */ = { ++ isa = PBXGroup; ++ children = ( ++ 5216468A1A8993BB0062516A /* callbacks.h */, ++ 5216468B1A8993BB0062516A /* certs_test.h */, ++ 5216468C1A8993BB0062516A /* crl.h */, ++ 5216468D1A8993BB0062516A /* error-ssl.h */, ++ 5216468E1A8993BB0062516A /* internal.h */, ++ 5216468F1A8993BB0062516A /* ocsp.h */, ++ 521646921A8993BB0062516A /* ssl.h */, ++ 521646931A8993BB0062516A /* test.h */, ++ 521646941A8993BB0062516A /* version.h */, ++ ); ++ name = CyaSSL; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 521645F81A89916A0062516A /* wolfCrypt */ = { ++ isa = PBXGroup; ++ children = ( ++ 5216465E1A8993770062516A /* aes.h */, ++ 5216465F1A8993770062516A /* arc4.h */, ++ 521646601A8993770062516A /* asn_public.h */, ++ 521646611A8993770062516A /* asn.h */, ++ 521646621A8993770062516A /* blake2-impl.h */, ++ 521646631A8993770062516A /* blake2-int.h */, ++ 521646641A8993770062516A /* blake2.h */, ++ 521646651A8993770062516A /* camellia.h */, ++ 521646661A8993770062516A /* chacha.h */, ++ 521646671A8993770062516A /* coding.h */, ++ 521646681A8993770062516A /* compress.h */, ++ 521646691A8993770062516A /* des3.h */, ++ 5216466A1A8993770062516A /* dh.h */, ++ 5216466B1A8993770062516A /* dsa.h */, ++ 5216466C1A8993770062516A /* ecc.h */, ++ 5216466D1A8993770062516A /* error-crypt.h */, ++ 5216466E1A8993770062516A /* fips_test.h */, ++ 5216466F1A8993770062516A /* hc128.h */, ++ 521646701A8993770062516A /* hmac.h */, ++ 521646721A8993770062516A /* integer.h */, ++ 521646731A8993770062516A /* logging.h */, ++ 521646741A8993770062516A /* md2.h */, ++ 521646751A8993770062516A /* md4.h */, ++ 521646761A8993770062516A /* md5.h */, ++ 521646771A8993770062516A /* memory.h */, ++ 521646781A8993770062516A /* misc.h */, ++ 521646791A8993770062516A /* mpi_class.h */, ++ 5216467A1A8993770062516A /* mpi_superclass.h */, ++ 5216467B1A8993770062516A /* pkcs7.h */, ++ 5216467C1A8993770062516A /* poly1305.h */, ++ 5216467D1A8993770062516A /* pwdbased.h */, ++ 5216467E1A8993770062516A /* rabbit.h */, ++ 5216467F1A8993770062516A /* random.h */, ++ 521646801A8993770062516A /* ripemd.h */, ++ 521646811A8993770062516A /* rsa.h */, ++ 521646821A8993770062516A /* settings.h */, ++ 521646831A8993770062516A /* sha.h */, ++ 521646841A8993770062516A /* sha256.h */, ++ 521646851A8993770062516A /* sha512.h */, ++ 521646861A8993770062516A /* tfm.h */, ++ 521646871A8993770062516A /* types.h */, ++ 521646881A8993770062516A /* visibility.h */, ++ 521646891A8993770062516A /* wc_port.h */, ++ ); ++ name = wolfCrypt; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 521645F91A89916E0062516A /* wolfSSL */ = { ++ isa = PBXGroup; ++ children = ( ++ 521646531A8993290062516A /* callbacks.h */, ++ 521646541A8993290062516A /* certs_test.h */, ++ 521646551A8993290062516A /* crl.h */, ++ 521646561A8993290062516A /* error-ssl.h */, ++ 521646571A8993290062516A /* internal.h */, ++ 521646581A8993290062516A /* ocsp.h */, ++ 5216465B1A8993290062516A /* ssl.h */, ++ 5216465C1A8993290062516A /* test.h */, ++ 5216465D1A8993290062516A /* version.h */, ++ ); ++ name = wolfSSL; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 521645FB1A8991990062516A /* Source */ = { ++ isa = PBXGroup; ++ children = ( ++ 521646001A89924A0062516A /* wolfSSL */, ++ 521645FF1A8992470062516A /* wolfCrypt */, ++ ); ++ name = Source; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 521645FF1A8992470062516A /* wolfCrypt */ = { ++ isa = PBXGroup; ++ children = ( ++ 521646111A8992CC0062516A /* aes.c */, ++ 521646121A8992CC0062516A /* arc4.c */, ++ 521646131A8992CC0062516A /* asn.c */, ++ 521646141A8992CC0062516A /* blake2b.c */, ++ 521646151A8992CC0062516A /* camellia.c */, ++ 521646161A8992CC0062516A /* chacha.c */, ++ 521646171A8992CC0062516A /* coding.c */, ++ 521646181A8992CC0062516A /* des3.c */, ++ 521646191A8992CC0062516A /* dh.c */, ++ 5216461A1A8992CC0062516A /* dsa.c */, ++ 5216461B1A8992CC0062516A /* ecc.c */, ++ 5216461C1A8992CC0062516A /* error.c */, ++ 5216461D1A8992CC0062516A /* hc128.c */, ++ 5216461E1A8992CC0062516A /* hmac.c */, ++ 5216461F1A8992CC0062516A /* integer.c */, ++ 521646201A8992CC0062516A /* logging.c */, ++ 521646211A8992CC0062516A /* md2.c */, ++ 521646221A8992CC0062516A /* md4.c */, ++ 521646231A8992CC0062516A /* md5.c */, ++ 521646241A8992CC0062516A /* memory.c */, ++ 521646251A8992CC0062516A /* misc.c */, ++ 521646261A8992CC0062516A /* pkcs7.c */, ++ 521646271A8992CC0062516A /* poly1305.c */, ++ 521646281A8992CC0062516A /* pwdbased.c */, ++ 521646291A8992CC0062516A /* rabbit.c */, ++ 5216462A1A8992CC0062516A /* random.c */, ++ 5216462B1A8992CC0062516A /* ripemd.c */, ++ 5216462C1A8992CC0062516A /* rsa.c */, ++ 5216462D1A8992CC0062516A /* sha.c */, ++ 5216462E1A8992CC0062516A /* sha256.c */, ++ 5216462F1A8992CC0062516A /* sha512.c */, ++ 521646301A8992CC0062516A /* tfm.c */, ++ 521646311A8992CC0062516A /* wc_port.c */, ++ ); ++ name = wolfCrypt; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 521646001A89924A0062516A /* wolfSSL */ = { ++ isa = PBXGroup; ++ children = ( ++ 521646011A89928E0062516A /* crl.c */, ++ 521646021A89928E0062516A /* internal.c */, ++ 521646031A89928E0062516A /* io.c */, ++ 521646041A89928E0062516A /* keys.c */, ++ 521646051A89928E0062516A /* ocsp.c */, ++ 521646061A89928E0062516A /* sniffer.c */, ++ 521646071A89928E0062516A /* ssl.c */, ++ 521646081A89928E0062516A /* tls.c */, ++ ); ++ name = wolfSSL; ++ sourceTree = SOURCE_ROOT; ++ }; ++ 52B1344416F3C9E800C07B32 = { ++ isa = PBXGroup; ++ children = ( ++ 521645FB1A8991990062516A /* Source */, ++ 521645391A898E7B0062516A /* Headers */, ++ 52B1344E16F3C9E800C07B32 /* Products */, ++ ); ++ sourceTree = ""; ++ }; ++ 52B1344E16F3C9E800C07B32 /* Products */ = { ++ isa = PBXGroup; ++ children = ( ++ 52B1344D16F3C9E800C07B32 /* libwolfssl.a */, ++ ); ++ name = Products; ++ sourceTree = ""; ++ }; ++/* End PBXGroup section */ ++ ++/* Begin PBXNativeTarget section */ ++ 52B1344C16F3C9E800C07B32 /* wolfssl */ = { ++ isa = PBXNativeTarget; ++ buildConfigurationList = 52B1347216F3C9E800C07B32 /* Build configuration list for PBXNativeTarget "wolfssl" */; ++ buildPhases = ( ++ 52B1344916F3C9E800C07B32 /* Sources */, ++ 52B1344A16F3C9E800C07B32 /* Frameworks */, ++ 52B1344B16F3C9E800C07B32 /* CopyFiles */, ++ 521646C11A8A7B380062516A /* CopyFiles */, ++ 521646C21A8A7B3B0062516A /* CopyFiles */, ++ 521646C31A8A7B3D0062516A /* CopyFiles */, ++ ); ++ buildRules = ( ++ ); ++ dependencies = ( ++ ); ++ name = wolfssl; ++ productName = "wolfssl-ios"; ++ productReference = 52B1344D16F3C9E800C07B32 /* libwolfssl.a */; ++ productType = "com.apple.product-type.library.static"; ++ }; ++/* End PBXNativeTarget section */ ++ ++/* Begin PBXProject section */ ++ 52B1344516F3C9E800C07B32 /* Project object */ = { ++ isa = PBXProject; ++ attributes = { ++ LastUpgradeCheck = 0460; ++ ORGANIZATIONNAME = "wolfSSL Inc"; ++ }; ++ buildConfigurationList = 52B1344816F3C9E800C07B32 /* Build configuration list for PBXProject "wolfssl" */; ++ compatibilityVersion = "Xcode 3.2"; ++ developmentRegion = English; ++ hasScannedForEncodings = 0; ++ knownRegions = ( ++ en, ++ ); ++ mainGroup = 52B1344416F3C9E800C07B32; ++ productRefGroup = 52B1344E16F3C9E800C07B32 /* Products */; ++ projectDirPath = ""; ++ projectRoot = ""; ++ targets = ( ++ 52B1344C16F3C9E800C07B32 /* wolfssl */, ++ ); ++ }; ++/* End PBXProject section */ ++ ++/* Begin PBXSourcesBuildPhase section */ ++ 52B1344916F3C9E800C07B32 /* Sources */ = { ++ isa = PBXSourcesBuildPhase; ++ buildActionMask = 2147483647; ++ files = ( ++ 5216463B1A8992CC0062516A /* dsa.c in Sources */, ++ 521646411A8992CC0062516A /* logging.c in Sources */, ++ 5216464E1A8992CC0062516A /* sha.c in Sources */, ++ 521646481A8992CC0062516A /* poly1305.c in Sources */, ++ 5216463A1A8992CC0062516A /* dh.c in Sources */, ++ 521646361A8992CC0062516A /* camellia.c in Sources */, ++ 521646521A8992CC0062516A /* wc_port.c in Sources */, ++ 521646491A8992CC0062516A /* pwdbased.c in Sources */, ++ 521646461A8992CC0062516A /* misc.c in Sources */, ++ 5216463E1A8992CC0062516A /* hc128.c in Sources */, ++ 521646341A8992CC0062516A /* asn.c in Sources */, ++ 521646501A8992CC0062516A /* sha512.c in Sources */, ++ 5216464A1A8992CC0062516A /* rabbit.c in Sources */, ++ 521646441A8992CC0062516A /* md5.c in Sources */, ++ 5216460F1A89928E0062516A /* ssl.c in Sources */, ++ 5216464D1A8992CC0062516A /* rsa.c in Sources */, ++ 5216464B1A8992CC0062516A /* random.c in Sources */, ++ 521646101A89928E0062516A /* tls.c in Sources */, ++ 5216460D1A89928E0062516A /* ocsp.c in Sources */, ++ 521646431A8992CC0062516A /* md4.c in Sources */, ++ 521646321A8992CC0062516A /* aes.c in Sources */, ++ 521646391A8992CC0062516A /* des3.c in Sources */, ++ 521646351A8992CC0062516A /* blake2b.c in Sources */, ++ 5216464C1A8992CC0062516A /* ripemd.c in Sources */, ++ 521646451A8992CC0062516A /* memory.c in Sources */, ++ 5216463C1A8992CC0062516A /* ecc.c in Sources */, ++ 5216464F1A8992CC0062516A /* sha256.c in Sources */, ++ 521646371A8992CC0062516A /* chacha.c in Sources */, ++ 521646471A8992CC0062516A /* pkcs7.c in Sources */, ++ 5216460E1A89928E0062516A /* sniffer.c in Sources */, ++ 521646421A8992CC0062516A /* md2.c in Sources */, ++ 521646381A8992CC0062516A /* coding.c in Sources */, ++ 5216463D1A8992CC0062516A /* error.c in Sources */, ++ 5216463F1A8992CC0062516A /* hmac.c in Sources */, ++ 521646331A8992CC0062516A /* arc4.c in Sources */, ++ 521646401A8992CC0062516A /* integer.c in Sources */, ++ 5216460A1A89928E0062516A /* internal.c in Sources */, ++ 5216460B1A89928E0062516A /* io.c in Sources */, ++ 521646511A8992CC0062516A /* tfm.c in Sources */, ++ 521646091A89928E0062516A /* crl.c in Sources */, ++ 5216460C1A89928E0062516A /* keys.c in Sources */, ++ ); ++ runOnlyForDeploymentPostprocessing = 0; ++ }; ++/* End PBXSourcesBuildPhase section */ ++ ++/* Begin XCBuildConfiguration section */ ++ 52B1347016F3C9E800C07B32 /* Debug */ = { ++ isa = XCBuildConfiguration; ++ buildSettings = { ++ ALWAYS_SEARCH_USER_PATHS = NO; ++ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; ++ CLANG_CXX_LIBRARY = "libc++"; ++ CLANG_WARN_CONSTANT_CONVERSION = YES; ++ CLANG_WARN_EMPTY_BODY = YES; ++ CLANG_WARN_ENUM_CONVERSION = YES; ++ CLANG_WARN_INT_CONVERSION = YES; ++ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; ++ COPY_PHASE_STRIP = NO; ++ GCC_C_LANGUAGE_STANDARD = gnu99; ++ GCC_DYNAMIC_NO_PIC = NO; ++ GCC_OPTIMIZATION_LEVEL = 0; ++ GCC_PREPROCESSOR_DEFINITIONS = ( ++ "DEBUG=1", ++ "$(inherited)", ++ ); ++ GCC_SYMBOLS_PRIVATE_EXTERN = NO; ++ GCC_WARN_ABOUT_RETURN_TYPE = YES; ++ GCC_WARN_UNINITIALIZED_AUTOS = YES; ++ GCC_WARN_UNUSED_VARIABLE = YES; ++ IPHONEOS_DEPLOYMENT_TARGET = 6.1; ++ ONLY_ACTIVE_ARCH = YES; ++ SDKROOT = iphoneos; ++ USER_HEADER_SEARCH_PATHS = "wolfssl/wolfcrypt wolfssl include"; ++ }; ++ name = Debug; ++ }; ++ 52B1347116F3C9E800C07B32 /* Release */ = { ++ isa = XCBuildConfiguration; ++ buildSettings = { ++ ALWAYS_SEARCH_USER_PATHS = NO; ++ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; ++ CLANG_CXX_LIBRARY = "libc++"; ++ CLANG_WARN_CONSTANT_CONVERSION = YES; ++ CLANG_WARN_EMPTY_BODY = YES; ++ CLANG_WARN_ENUM_CONVERSION = YES; ++ CLANG_WARN_INT_CONVERSION = YES; ++ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; ++ COPY_PHASE_STRIP = YES; ++ GCC_C_LANGUAGE_STANDARD = gnu99; ++ GCC_WARN_ABOUT_RETURN_TYPE = YES; ++ GCC_WARN_UNINITIALIZED_AUTOS = YES; ++ GCC_WARN_UNUSED_VARIABLE = YES; ++ IPHONEOS_DEPLOYMENT_TARGET = 6.1; ++ SDKROOT = iphoneos; ++ USER_HEADER_SEARCH_PATHS = "wolfssl/wolfcrypt wolfssl include"; ++ VALIDATE_PRODUCT = NO; ++ }; ++ name = Release; ++ }; ++ 52B1347316F3C9E800C07B32 /* Debug */ = { ++ isa = XCBuildConfiguration; ++ buildSettings = { ++ ALWAYS_SEARCH_USER_PATHS = YES; ++ CLANG_LINK_OBJC_RUNTIME = NO; ++ DSTROOT = /tmp/wolfssl_ios.dst; ++ GCC_PRECOMPILE_PREFIX_HEADER = NO; ++ GCC_PREFIX_HEADER = ""; ++ HEADER_SEARCH_PATHS = ( ++ $SRCROOT, ++ $PROJECT_DIR/../.., ++ ); ++ OTHER_LDFLAGS = ""; ++ PRODUCT_NAME = wolfssl; ++ SKIP_INSTALL = YES; ++ TARGETED_DEVICE_FAMILY = "1,2"; ++ USER_HEADER_SEARCH_PATHS = "wolfssl/wolfcrypt wolfssl"; ++ }; ++ name = Debug; ++ }; ++ 52B1347416F3C9E800C07B32 /* Release */ = { ++ isa = XCBuildConfiguration; ++ buildSettings = { ++ ALWAYS_SEARCH_USER_PATHS = YES; ++ CLANG_LINK_OBJC_RUNTIME = NO; ++ DSTROOT = /tmp/wolfssl_ios.dst; ++ GCC_PRECOMPILE_PREFIX_HEADER = NO; ++ GCC_PREFIX_HEADER = ""; ++ HEADER_SEARCH_PATHS = ( ++ $SRCROOT, ++ $PROJECT_DIR/../.., ++ ); ++ OTHER_LDFLAGS = ""; ++ PRODUCT_NAME = wolfssl; ++ SKIP_INSTALL = YES; ++ TARGETED_DEVICE_FAMILY = "1,2"; ++ USER_HEADER_SEARCH_PATHS = "wolfssl/wolfcrypt wolfssl"; ++ }; ++ name = Release; ++ }; ++/* End XCBuildConfiguration section */ ++ ++/* Begin XCConfigurationList section */ ++ 52B1344816F3C9E800C07B32 /* Build configuration list for PBXProject "wolfssl" */ = { ++ isa = XCConfigurationList; ++ buildConfigurations = ( ++ 52B1347016F3C9E800C07B32 /* Debug */, ++ 52B1347116F3C9E800C07B32 /* Release */, ++ ); ++ defaultConfigurationIsVisible = 0; ++ defaultConfigurationName = Release; ++ }; ++ 52B1347216F3C9E800C07B32 /* Build configuration list for PBXNativeTarget "wolfssl" */ = { ++ isa = XCConfigurationList; ++ buildConfigurations = ( ++ 52B1347316F3C9E800C07B32 /* Debug */, ++ 52B1347416F3C9E800C07B32 /* Release */, ++ ); ++ defaultConfigurationIsVisible = 0; ++ defaultConfigurationName = Release; ++ }; ++/* End XCConfigurationList section */ ++ }; ++ rootObject = 52B1344516F3C9E800C07B32 /* Project object */; ++} +diff -ruNp mysql-5.6.23/extra/wolfssl/LICENSING mysql-5.6.23-wolfssl/extra/wolfssl/LICENSING +--- mysql-5.6.23/extra/wolfssl/LICENSING 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/LICENSING 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,11 @@ ++ ++CyaSSL and wolfCrypt are either licensed for use under the GPLv2 or a ++standard commercial license. For our users who cannot use CyaSSL under ++GPLv2, a commercial license to CyaSSL and wolfCrypt is available. ++Please contact wolfSSL Inc. directly at: ++ ++Email: licensing@wolfssl.com ++Phone: +1 425 245-8247 ++ ++More information can be found on the wolfSSL website at www.wolfssl.com. ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/Makefile.am mysql-5.6.23-wolfssl/extra/wolfssl/Makefile.am +--- mysql-5.6.23/extra/wolfssl/Makefile.am 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/Makefile.am 2015-02-15 14:28:52.000000000 -0700 +@@ -0,0 +1,170 @@ ++# includes append to these: ++SUFFIXES = ++TESTS = ++CLEANFILES = ++DISTCLEANFILES = ++bin_PROGRAMS = ++noinst_HEADERS = ++lib_LTLIBRARIES = ++man_MANS = ++noinst_LTLIBRARIES = ++noinst_PROGRAMS = ++include_HEADERS = ++nobase_include_HEADERS = ++check_PROGRAMS = ++EXTRA_HEADERS = ++BUILT_SOURCES= ++EXTRA_DIST= ++dist_doc_DATA= ++ ++#includes additional rules from aminclude.am ++@INC_AMINCLUDE@ ++DISTCLEANFILES+= aminclude.am ++ ++CLEANFILES+= cert.der \ ++ cert.pem \ ++ certecc.der \ ++ certecc.pem \ ++ certreq.der \ ++ certreq.pem \ ++ key.der \ ++ key.pem \ ++ ntru-cert.der \ ++ ntru-cert.pem \ ++ ntru-key.raw \ ++ othercert.der \ ++ othercert.pem \ ++ pkcs7cert.der \ ++ pkcs7envelopedData.der \ ++ pkcs7signedData.der ++ ++exampledir = $(docdir)/example ++dist_example_DATA= ++ ++ACLOCAL_AMFLAGS= -I m4 ++ ++EXTRA_DIST+= lib/dummy ++ ++EXTRA_DIST+= wolfssl-ntru.vcproj ++EXTRA_DIST+= wolfssl.vcproj ++EXTRA_DIST+= wolfssl.vcxproj ++EXTRA_DIST+= wolfssl-iphone.xcodeproj/project.pbxproj ++EXTRA_DIST+= wolfssl-ios.xcodeproj/project.pbxproj ++EXTRA_DIST+= wolfssl-ntru.sln ++EXTRA_DIST+= wolfssl.sln ++EXTRA_DIST+= wolfssl64.sln ++EXTRA_DIST+= valgrind-error.sh ++EXTRA_DIST+= gencertbuf.pl ++EXTRA_DIST+= IDE ++EXTRA_DIST+= README.md ++EXTRA_DIST+= LICENSING ++ ++include cyassl/include.am ++include wolfssl/include.am ++include certs/include.am ++include certs/1024/include.am ++include certs/crl/include.am ++include doc/include.am ++include swig/include.am ++ ++include src/include.am ++include support/include.am ++include wolfcrypt/benchmark/include.am ++include wolfcrypt/src/include.am ++include wolfcrypt/test/include.am ++include examples/client/include.am ++include examples/server/include.am ++include examples/echoclient/include.am ++include examples/echoserver/include.am ++include testsuite/include.am ++include tests/include.am ++include sslSniffer/sslSnifferTest/include.am ++include rpm/include.am ++# TODO: fix, this commented out mqx ones have spaces in file names ++#include mqx/wolfcrypt_test/Sources/include.am ++include mqx/cyassl/include.am ++#include mqx/cyassl_client/Sources/include.am ++include mqx/util_lib/Sources/include.am ++include mplabx/include.am ++include mplabx/ctaocrypt_benchmark.X/nbproject/include.am ++include mplabx/ctaocrypt_test.X/nbproject/include.am ++include mplabx/cyassl.X/nbproject/include.am ++include mcapi/include.am ++include mcapi/ctaocrypt_mcapi.X/nbproject/include.am ++include mcapi/ctaocrypt_test.X/nbproject/include.am ++include mcapi/cyassl.X/nbproject/include.am ++include mcapi/zlib.X/nbproject/include.am ++include tirtos/include.am ++ ++if USE_VALGRIND ++TESTS_ENVIRONMENT=./valgrind-error.sh ++endif ++ ++TEST_EXTENSIONS=.test ++TESTS += $(check_PROGRAMS) ++test: check ++tests/unit.log: testsuite/testsuite.log ++ ++DISTCLEANFILES+= cyassl-config ++DISTCLEANFILES+= wolfssl-config ++# fips files shouldn't be left after make distclean ++DISTCLEANFILES+= ctaocrypt/src/fips.c ++DISTCLEANFILES+= ctaocrypt/src/fips_test.c ++ ++maintainer-clean-local: ++ -rm Makefile.in ++ -rm aclocal.m4 ++ -rm build-aux/compile ++ -rm build-aux/config.guess ++ -rm build-aux/config.sub ++ -rm build-aux/depcomp ++ -rm build-aux/install-sh ++ -rm build-aux/ltmain.sh ++ -rm build-aux/missing ++ -rm cyassl-config ++ -rmdir build-aux ++ -rm configure ++ -rm config.log ++ -rm config.status ++ -rm config.in ++ -rm m4/libtool.m4 ++ -rm m4/ltoptions.m4 ++ -rm m4/ltsugar.m4 ++ -rm m4/ltversion.m4 ++ -rm m4/lt~obsolete.m4 ++ -rm support/wolfssl.pc ++ find . -type f -name '*~' -exec rm -f '{}' \; ++ -rm -f @PACKAGE@-*.tar.gz ++ -rm -f @PACKAGE@-*.rpm ++ ++# !!!! first line of rule has to start with a hard (real) tab, not spaces ++egs: ++ $(MAKE) examples/client/client; \ ++ $(MAKE) examples/echoclient/echoclient;\ ++ $(MAKE) examples/server/server; \ ++ $(MAKE) examples/echoserver/echoserver; ++ ++ctc: ++ $(MAKE) ctaocrypt/test/testctaocrypt; \ ++ $(MAKE) ctaocrypt/benchmark/benchmark; ++ ++install-exec-local: install-generic-config ++ ++install-generic-config: ++ $(mkinstalldirs) $(DESTDIR)$(bindir) ++ $(INSTALL_SCRIPT) @GENERIC_CONFIG@ $(DESTDIR)$(bindir) ++ ++uninstall-local: ++ -rm -f $(DESTDIR)$(bindir)/@GENERIC_CONFIG@ ++ ++merge-clean: ++ @find ./ | $(GREP) \.gcda | xargs rm -f ++ @find ./ | $(GREP) \.gcno | xargs rm -f ++ @find ./ | $(GREP) \.gz | xargs rm -f ++ @find ./ | $(GREP) \.orig | xargs rm -f ++ @find ./ | $(GREP) \.rej | xargs rm -f ++ @find ./ | $(GREP) \.rpm | xargs rm -f ++ @find ./ | $(GREP) \.THIS | xargs rm -f ++ @find ./ | $(GREP) \.OTHER | xargs rm -f ++ @find ./ | $(GREP) \.BASE | xargs rm -f ++ @find ./ | $(GREP) \~$$ | xargs rm -f +diff -ruNp mysql-5.6.23/extra/wolfssl/README mysql-5.6.23-wolfssl/extra/wolfssl/README +--- mysql-5.6.23/extra/wolfssl/README 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/README 2015-02-15 14:28:53.000000000 -0700 +@@ -0,0 +1,1104 @@ ++*** Notes, Please read *** ++ ++Note 1) ++CyaSSL now needs all examples and tests to be run from the CyaSSL home ++directory. This is because it finds certs and keys from ./certs/. Trying to ++maintain the ability to run each program from its own directory, the testsuite ++directory, the main directory (for make check/test), and for the various ++different project layouts (with or without config) was becoming harder and ++harder. Now to run testsuite just do: ++ ++./testsuite/testsuite ++ ++or ++ ++make check (when using autoconf) ++ ++On *nix or Windows the examples and testsuite will check to see if the current ++directory is the source directory and if so, attempt to change to the CyaSSL ++home directory. This should work in most setup cases, if not, just follow the ++beginning of the note and specify the full path. ++ ++ ++Note 2) ++CyaSSL takes a different approach to certificate verification than OpenSSL does. ++The default policy for the client is to verify the server, this means that if ++you don't load CAs to verify the server you'll get a connect error, no signer ++error to confirm failure (-188). If you want to mimic OpenSSL behavior of ++having SSL_connect succeed even if verifying the server fails and reducing ++security you can do this by calling: ++ ++SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); ++ ++before calling SSL_new(); Though it's not recommended. ++ ++*** end Notes *** ++ ++CyaSSL Release 3.3.2 (01/07/2015) ++ ++Release 3.3.2 CyaSSL has bug fixes and new features including: ++ ++- Improvements in the build configuration under AIX. ++- Various compile warnings. ++- Changed a memcpy to memmove in the sniffer. ++ ++ ++ ***********CyaSSL Release 3.3.0 (12/05/2014) ++ ++- Countermeasuers for Handshake message duplicates, CHANGE CIPHER without ++ FINISHED, and fast forward attempts. Thanks to Karthikeyan Bhargavan from ++ the Prosecco team at INRIA Paris-Rocquencourt for the report. ++- FIPS version submitted ++- Removes SSLv2 Client Hello processing, can be enabled with OLD_HELLO_ALLOWED ++- User can set mimimum downgrade version with CyaSSL_SetMinVersion() ++- Small stack improvements at TLS/SSL layer ++- TLS Master Secret generation and Key Expansion are now exposed ++- Adds client side Secure Renegotiation, * not recommended * ++- Client side session ticket support, not fully tested with Secure Renegotiation ++- Allows up to 4096bit DHE at TLS Key Exchange layer ++- Handles non standard SessionID sizes in Hello Messages ++- PicoTCP Support ++- Sniffer now supports SNI Virtual Hosts ++- Sniffer now handles non HTTPS protocols using STARTTLS ++- Sniffer can now parse records with multiple messages ++- TI-RTOS updates ++- Fix for ColdFire optimized fp_digit read only in explicit 32bit case ++- ADH Cipher Suite ADH-AES128-SHA for EAP-FAST ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++***********CyaSSL Release 3.2.0 (09/10/2014) ++ ++Release 3.2.0 CyaSSL has bug fixes and new features including: ++ ++- ChaCha20 and Poly1305 crypto and suites ++- Small stack improvements for OCSP, CRL, TLS, DTLS ++- NTRU Encrypt and Decrypt benchmarks ++- Updated Visual Studio project files ++- Updated Keil MDK5 project files ++- Fix for DTLS sequence numbers with GCM/CCM ++- Updated HashDRBG with more secure struct declaration ++- TI-RTOS support and example Code Composer Studio project files ++- Ability to get enabled cipher suites, CyaSSL_get_ciphers() ++- AES-GCM/CCM/Direct support for Freescale mmCAU and CAU ++- Sniffer improvement checking for decrypt key setup ++- Support for raw ECC key import ++- Ability to convert ecc_key to DER, EccKeyToDer() ++- Security fix for RSA Padding check vulnerability reported by Intel Security ++ Advanced Threat Research team ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++************ CyaSSL Release 3.1.0 (07/14/2014) ++ ++Release 3.1.0 CyaSSL has bug fixes and new features including: ++ ++- Fix for older versions of icc without 128-bit type ++- Intel ASM syntax for AES-NI ++- Updated NTRU support, keygen benchmark ++- FIPS check for minimum required HMAC key length ++- Small stack (--enable-smallstack) improvements for PKCS#7, ASN ++- TLS extension support for DTLS ++- Default I/O callbacks external to user ++- Updated example client with bad clock test ++- Ability to set optional ECC context info ++- Ability to enable/disable DH separate from opensslextra ++- Additional test key/cert buffers for CA and server ++- Updated example certificates ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++************ CyaSSL Release 3.0.2 (05/30/2014) ++ ++Release 3.0.2 CyaSSL has bug fixes and new features including: ++ ++- Added the following cipher suites: ++ * TLS_PSK_WITH_AES_128_GCM_SHA256 ++ * TLS_PSK_WITH_AES_256_GCM_SHA384 ++ * TLS_PSK_WITH_AES_256_CBC_SHA384 ++ * TLS_PSK_WITH_NULL_SHA384 ++ * TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 ++ * TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 ++ * TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 ++ * TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 ++ * TLS_DHE_PSK_WITH_NULL_SHA256 ++ * TLS_DHE_PSK_WITH_NULL_SHA384 ++ * TLS_DHE_PSK_WITH_AES_128_CCM ++ * TLS_DHE_PSK_WITH_AES_256_CCM ++- Added AES-NI support for Microsoft Visual Studio builds. ++- Changed small stack build to be disabled by default. ++- Updated the Hash DRBG and provided a configure option to enable. ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++************ CyaSSL Release 3.0.0 (04/29/2014) ++ ++Release 3.0.0 CyaSSL has bug fixes and new features including: ++ ++- FIPS release candidate ++- X.509 improvements that address items reported by Suman Jana with security ++ researchers at UT Austin and UC Davis ++- Small stack size improvements, --enable-smallstack. Offloads large local ++ variables to the heap. (Note this is not complete.) ++- Updated AES-CCM-8 cipher suites to use approved suite numbers. ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++************ CyaSSL Release 2.9.4 (04/09/2014) ++ ++Release 2.9.4 CyaSSL has bug fixes and new features including: ++ ++- Security fixes that address items reported by Ivan Fratric of the Google ++ Security Team ++- X.509 Unknown critical extensions treated as errors, report by Suman Jana with ++ security researchers at UT Austin and UC Davis ++- Sniffer fixes for corrupted packet length and Jumbo frames ++- ARM thumb mode assembly fixes ++- Xcode 5.1 support including new clang ++- PIC32 MZ hardware support ++- CyaSSL Object has enough room to read the Record Header now w/o allocs ++- FIPS wrappers for AES, 3DES, SHA1, SHA256, SHA384, HMAC, and RSA. ++- A sample I/O pool is demonstrated with --enable-iopool to overtake memory ++ handling and reduce memory fragmentation on I/O large sizes ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++************ CyaSSL Release 2.9.0 (02/07/2014) ++ ++Release 2.9.0 CyaSSL has bug fixes and new features including: ++- Freescale Kinetis RNGB support ++- Freescale Kinetis mmCAU support ++- TLS Hello extensions ++ - ECC ++ - Secure Renegotiation (null) ++ - Truncated HMAC ++- SCEP support ++ - PKCS #7 Enveloped data and signed data ++ - PKCS #10 Certificate Signing Request generation ++- DTLS sliding window ++- OCSP Improvements ++ - API change to integrate into Certificate Manager ++ - IPv4/IPv6 agnostic ++ - example client/server support for OCSP ++ - OCSP nonces are optional ++- GMAC hashing ++- Windows build additions ++- Windows CYGWIN build fixes ++- Updated test certificates ++- Microchip MPLAB Harmony support ++- Update autoconf scripts ++- Additional X.509 inspection functions ++- ECC encrypt/decrypt primitives ++- ECC Certificate generation ++ ++The Freescale Kinetis K53 RNGB documentation can be found in Chapter 33 of the ++K53 Sub-Family Reference Manual: ++http://cache.freescale.com/files/32bit/doc/ref_manual/K53P144M100SF2RM.pdf ++ ++Freescale Kinetis K60 mmCAU (AES, DES, 3DES, MD5, SHA, SHA256) documentation ++can be found in the "ColdFire/ColdFire+ CAU and Kinetis mmCAU Software Library ++User Guide": ++http://cache.freescale.com/files/32bit/doc/user_guide/CAUAPIUG.pdf ++ ++ ++*****************CyaSSL Release 2.8.0 (8/30/2013) ++ ++Release 2.8.0 CyaSSL has bug fixes and new features including: ++- AES-GCM and AES-CCM use AES-NI ++- NetX default IO callback handlers ++- IPv6 fixes for DTLS Hello Cookies ++- The ability to unload Certs/Keys after the handshake, CyaSSL_UnloadCertsKeys() ++- SEP certificate extensions ++- Callback getters for easier resource freeing ++- External CYASSL_MAX_ERROR_SZ for correct error buffer sizing ++- MacEncrypt and DecryptVerify Callbacks for User Atomic Record Layer Processing ++- Public Key Callbacks for ECC and RSA ++- Client now sends blank cert upon request if doesn't have one with TLS <= 1.2 ++ ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++*****************CyaSSL Release 2.7.0 (6/17/2013) ++ ++Release 2.7.0 CyaSSL has bug fixes and new features including: ++- SNI support for client and server ++- KEIL MDK-ARM projects ++- Wildcard check to domain name match, and Subject altnames are checked too ++- Better error messages for certificate verification errors ++- Ability to discard session during handshake verify ++- More consistent error returns across all APIs ++- Ability to unload CAs at the CTX or CertManager level ++- Authority subject id support for Certificate matching ++- Persistent session cache functionality ++- Persistent CA cache functionality ++- Client session table lookups to push serverID table to library level ++- Camellia support to sniffer ++- User controllable settings for DTLS timeout values ++- Sniffer fixes for caching long lived sessions ++- DTLS reliability enhancements for the handshake ++- Better ThreadX support ++ ++When compiling with Mingw, libtool may give the following warning due to ++path conversion errors: ++ ++libtool: link: Could not determine host file name corresponding to ** ++libtool: link: Continuing, but uninstalled executables may not work. ++ ++If so, examples and testsuite will have problems when run, showing an ++error while loading shared libraries. To resolve, please run "make install". ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++************** CyaSSL Release 2.6.0 (04/15/2013) ++ ++Release 2.6.0 CyaSSL has bug fixes and new features including: ++- DTLS 1.2 support including AEAD ciphers ++- SHA-3 finalist Blake2 support, it's fast and uses little resources ++- SHA-384 cipher suites including ECC ones ++- HMAC now supports SHA-512 ++- Track memory use for example client/server with -t option ++- Better IPv6 examples with --enable-ipv6, before if ipv6 examples/tests were ++ turned on, localhost only was used. Now link-local (with scope ids) and ipv6 ++ hosts can be used as well. ++- Xcode v4.6 project for iOS v6.1 update ++- settings.h is now checked in all *.c files for true one file setting detection ++- Better alignment at SSL layer for hardware crypto alignment needs ++ * Note, SSL itself isn't friendly to alignment with 5 byte TLS headers and ++ 13 bytes DTLS headers, but every effort is now made to align with the ++ CYASSL_GENERAL_ALIGNMENT flag which sets desired alignment requirement ++- NO_64BIT flag to turn off 64bit data type accumulators in public key code ++ * Note, some systems are faster with 32bit accumulators ++- --enable-stacksize for example client/server stack use ++ * Note, modern desktop Operating Systems may add bytes to each stack frame ++- Updated compression/decompression with direct crypto access ++- All ./configure options are now lowercase only for consistency ++- ./configure builds default to fastmath option ++ * Note, if on ia32 and building in shared mode this may produce a problem ++ with a missing register being available because of PIC, there are at least ++ 5 solutions to this: ++ 1) --disable-fastmath , don't use fastmath ++ 2) --disable-shared, don't build a shared library ++ 3) C_EXTRA_FLAGS=-DTFM_NO_ASM , turn off assembly use ++ 4) use clang, it just seems to work ++ 5) play around with no PIC options to force all registers being open ++- Many new ./configure switches for option enable/disable for example ++ * rsa ++ * dh ++ * dsa ++ * md5 ++ * sha ++ * arc4 ++ * null (allow NULL ciphers) ++ * oldtls (only use TLS 1.2) ++ * asn (no certs or public keys allowed) ++- ./configure generates cyassl/options.h which allows a header the user can ++ include in their app to make sure the same options are set at the app and ++ CyaSSL level. ++- autoconf no longer needs serial-tests which lowers version requirements of ++ automake to 1.11 and autoconf to 2.63 ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++ ++************** CyaSSL Release 2.5.0 (02/04/2013) ++ ++Release 2.5.0 CyaSSL has bug fixes and new features including: ++- Fix for TLS CBC padding timing attack identified by Nadhem Alfardan and ++ Kenny Paterson: http://www.isg.rhul.ac.uk/tls/ ++- Microchip PIC32 (MIPS16, MIPS32) support ++- Microchip MPLAB X example projects for PIC32 Ethernet Starter Kit ++- Updated CTaoCrypt benchmark app for embedded systems ++- 1024-bit test certs/keys and cert/key buffers ++- AES-CCM-8 crypto and cipher suites ++- Camellia crypto and cipher suites ++- Bumped minimum autoconf version to 2.65, automake version to 1.12 ++- Addition of OCSP callbacks ++- STM32F2 support with hardware crypto and RNG ++- Cavium NITROX support ++ ++CTaoCrypt now has support for the Microchip PIC32 and has been tested with ++the Microchip PIC32 Ethernet Starter Kit, the XC32 compiler and ++MPLAB X IDE in both MIPS16 and MIPS32 instruction set modes. See the README ++located under the /mplabx directory for more details. ++ ++To add Cavium NITROX support do: ++ ++./configure --with-cavium=/home/user/cavium/software ++ ++pointing to your licensed cavium/software directory. Since Cavium doesn't ++build a library we pull in the cavium_common.o file which gives a libtool ++warning about the portability of this. Also, if you're using the github source ++tree you'll need to remove the -Wredundant-decls warning from the generated ++Makefile because the cavium headers don't conform to this warning. Currently ++CyaSSL supports Cavium RNG, AES, 3DES, RC4, HMAC, and RSA directly at the crypto ++layer. Support at the SSL level is partial and currently just does AES, 3DES, ++and RC4. RSA and HMAC are slower until the Cavium calls can be utilized in non ++blocking mode. The example client turns on cavium support as does the crypto ++test and benchmark. Please see the HAVE_CAVIUM define. ++ ++CyaSSL is able to use the STM32F2 hardware-based cryptography and random number ++generator through the STM32F2 Standard Peripheral Library. For necessary ++defines, see the CYASSL_STM32F2 define in settings.h. Documentation for the ++STM32F2 Standard Peripheral Library can be found in the following document: ++http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/USER_MANUAL/DM00023896.pdf ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++ ++*************** CyaSSL Release 2.4.6 (12/20/2012) ++ ++Release 2.4.6 CyaSSL has bug fixes and a few new features including: ++- ECC into main version ++- Lean PSK build (reduced code size, RAM usage, and stack usage) ++- FreeBSD CRL monitor support ++- CyaSSL_peek() ++- CyaSSL_send() and CyaSSL_recv() for I/O flag setting ++- CodeWarrior Support ++- MQX Support ++- Freescale Kinetis support including Hardware RNG ++- autoconf builds use jobserver ++- cyassl-config ++- Sniffer memory reductions ++ ++Thanks to Brian Aker for the improved autoconf system, make rpm, cyassl-config, ++warning system, and general good ideas for improving CyaSSL! ++ ++The Freescale Kinetis K70 RNGA documentation can be found in Chapter 37 of the ++K70 Sub-Family Reference Manual: ++http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K70P256M150SF3RM.pdf ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++*************** CyaSSL Release 2.4.0 (10/10/2012) ++ ++Release 2.4.0 CyaSSL has bug fixes and a few new features including: ++- DTLS reliability ++- Reduced memory usage after handshake ++- Updated build process ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++ ++*************** CyaSSL Release 2.3.0 (8/10/2012) ++ ++Release 2.3.0 CyaSSL has bug fixes and a few new features including: ++- AES-GCM crypto and cipher suites ++- make test cipher suite checks ++- Subject AltName processing ++- Command line support for client/server examples ++- Sniffer SessionTicket support ++- SHA-384 cipher suites ++- Verify cipher suite validity when user overrides ++- CRL dir monitoring ++- DTLS Cookie support, reliability coming soon ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++ ++***************CyaSSL Release 2.2.0 (5/18/2012) ++ ++Release 2.2.0 CyaSSL has bug fixes and a few new features including: ++- Initial CRL support (--enable-crl) ++- Initial OCSP support (--enable-ocsp) ++- Add static ECDH suites ++- SHA-384 support ++- ECC client certificate support ++- Add medium session cache size (1055 sessions) ++- Updated unit tests ++- Protection against mutex reinitialization ++ ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++ ++***************CyaSSL Release 2.0.8 (2/24/2012) ++ ++Release 2.0.8 CyaSSL has bug fixes and a few new features including: ++- A fix for malicious certificates pointed out by Remi Gacogne (thanks) ++ resulting in NULL pointer use. ++- Respond to renegotiation attempt with no_renegoatation alert ++- Add basic path support for load_verify_locations() ++- Add set Temp EC-DHE key size ++- Extra checks on rsa test when porting into ++ ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++ ++************* CyaSSL Release 2.0.6 (1/27/2012) ++ ++Release 2.0.6 CyaSSL has bug fixes and a few new features including: ++- Fixes for CA basis constraint check ++- CTX reference counting ++- Initial unit test additions ++- Lean and Mean Windows fix ++- ECC benchmarking ++- SSMTP build support ++- Ability to group handshake messages with set_group_messages(ctx/ssl) ++- CA cache addition callback ++- Export Base64_Encode for general use ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++ ++************* CyaSSL Release 2.0.2 (12/05/2011) ++ ++Release 2.0.2 CyaSSL has bug fixes and a few new features including: ++- CTaoCrypt Runtime library detection settings when directly using the crypto ++ library ++- Default certificate generation now uses SHAwRSA and adds SHA256wRSA generation ++- All test certificates now use 2048bit and SHA-1 for better modern browser ++ support ++- Direct AES block access and AES-CTR (counter) mode ++- Microchip pic32 support ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++ ++************* CyaSSL Release 2.0.0rc3 (9/28/2011) ++ ++Release 2.0.0rc3 for CyaSSL has bug fixes and a few new features including: ++- updated autoconf support ++- better make install and uninstall (uses system directories) ++- make test / make check ++- CyaSSL headers now in ++- CTaocrypt headers now in ++- OpenSSL compatibility headers now in ++- examples and tests all run from home directory so can use certs in ./certs ++ (see note 1) ++ ++So previous applications that used the OpenSSL compatibility header ++ now need to include instead, no other ++changes are required. ++ ++Special Thanks to Brian Aker for his autoconf, install, and header patches. ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++************CyaSSL Release 2.0.0rc2 (6/6/2011) ++ ++Release 2.0.0rc2 for CyaSSL has bug fixes and a few new features including: ++- bug fixes (Alerts, DTLS with DHE) ++- FreeRTOS support ++- lwIP support ++- Wshadow warnings removed ++- asn public header ++- CTaoCrypt public headers now all have ctc_ prefix (the manual is still being ++ updated to reflect this change) ++- and more. ++ ++This is the 2nd and perhaps final release candidate for version 2. ++Please send any comments or questions to support@wolfssl.com. ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++***********CyaSSL Release 2.0.0rc1 (5/2/2011) ++ ++Release 2.0.0rc1 for CyaSSL has many new features including: ++- bug fixes ++- SHA-256 cipher suites ++- Root Certificate Verification (instead of needing all certs in the chain) ++- PKCS #8 private key encryption (supports PKCS #5 v1-v2 and PKCS #12) ++- Serial number retrieval for x509 ++- PBKDF2 and PKCS #12 PBKDF ++- UID parsing for x509 ++- SHA-256 certificate signatures ++- Client and server can send chains (SSL_CTX_use_certificate_chain_file) ++- CA loading can now parse multiple certificates per file ++- Dynamic memory runtime hooks ++- Runtime hooks for logging ++- EDH on server side ++- More informative error codes ++- More informative logging messages ++- Version downgrade more robust (use SSL_v23*) ++- Shared build only by default through ./configure ++- Compiler visibility is now used, internal functions not polluting namespace ++- Single Makefile, no recursion, for faster and simpler building ++- Turn on all warnings possible build option, warning fixes ++- and more. ++ ++Because of all the new features and the multiple OS, compiler, feature-set ++options that CyaSSL allows, there may be some configuration fixes needed. ++Please send any comments or questions to support@wolfssl.com. ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++****************** CyaSSL Release 1.9.0 (3/2/2011) ++ ++Release 1.9.0 for CyaSSL adds bug fixes, improved TLSv1.2 through testing and ++better hash/sig algo ids, --enable-webServer for the yaSSL embedded web server, ++improper AES key setup detection, user cert verify callback improvements, and ++more. ++ ++The CyaSSL manual offering is included in the doc/ directory. For build ++instructions and comments about the new features please check the manual. ++ ++Please send any comments or questions to support@wolfssl.com. ++ ++****************** CyaSSL Release 1.8.0 (12/23/2010) ++ ++Release 1.8.0 for CyaSSL adds bug fixes, x509 v3 CA signed certificate ++generation, a C standard library abstraction layer, lower memory use, increased ++portability through the os_settings.h file, and the ability to use NTRU cipher ++suites when used in conjunction with an NTRU license and library. ++ ++The initial CyaSSL manual offering is included in the doc/ directory. For ++build instructions and comments about the new features please check the manual. ++ ++Please send any comments or questions to support@wolfssl.com. ++ ++Happy Holidays. ++ ++ ++********************* CyaSSL Release 1.6.5 (9/9/2010) ++ ++Release 1.6.5 for CyaSSL adds bug fixes and x509 v3 self signed certificate ++generation. ++ ++For general build instructions see doc/Building_CyaSSL.pdf. ++ ++To enable certificate generation support add this option to ./configure ++./configure --enable-certgen ++ ++An example is included in ctaocrypt/test/test.c and documentation is provided ++in doc/CyaSSL_Extensions_Reference.pdf item 11. ++ ++********************** CyaSSL Release 1.6.0 (8/27/2010) ++ ++Release 1.6.0 for CyaSSL adds bug fixes, RIPEMD-160, SHA-512, and RSA key ++generation. ++ ++For general build instructions see doc/Building_CyaSSL.pdf. ++ ++To add RIPEMD-160 support add this option to ./configure ++./configure --enable-ripemd ++ ++To add SHA-512 support add this option to ./configure ++./configure --enable-sha512 ++ ++To add RSA key generation support add this option to ./configure ++./configure --enable-keygen ++ ++Please see ctaocrypt/test/test.c for examples and usage. ++ ++For Windows, RIPEMD-160 and SHA-512 are enabled by default but key generation is ++off by default. To turn key generation on add the define CYASSL_KEY_GEN to ++CyaSSL. ++ ++ ++************* CyaSSL Release 1.5.6 (7/28/2010) ++ ++Release 1.5.6 for CyaSSL adds bug fixes, compatibility for our JSSE provider, ++and a fix for GCC builds on some systems. ++ ++For general build instructions see doc/Building_CyaSSL.pdf. ++ ++To add AES-NI support add this option to ./configure ++./configure --enable-aesni ++ ++You'll need GCC 4.4.3 or later to make use of the assembly. ++ ++************** CyaSSL Release 1.5.4 (7/7/2010) ++ ++Release 1.5.4 for CyaSSL adds bug fixes, support for AES-NI, SHA1 speed ++improvements from loop unrolling, and support for the Mongoose Web Server. ++ ++For general build instructions see doc/Building_CyaSSL.pdf. ++ ++To add AES-NI support add this option to ./configure ++./configure --enable-aesni ++ ++You'll need GCC 4.4.3 or later to make use of the assembly. ++ ++*************** CyaSSL Release 1.5.0 (5/11/2010) ++ ++Release 1.5.0 for CyaSSL adds bug fixes, GoAhead WebServer support, sniffer ++support, and initial swig interface support. ++ ++For general build instructions see doc/Building_CyaSSL.pdf. ++ ++To add support for GoAhead WebServer either --enable-opensslExtra or if you ++don't want all the features of opensslExtra you can just define GOAHEAD_WS ++instead. GOAHEAD_WS can be added to ./configure with CFLAGS=-DGOAHEAD_WS or ++you can define it yourself. ++ ++To look at the sniffer support please see the sniffertest app in ++sslSniffer/sslSnifferTest. Build with --enable-sniffer on *nix or use the ++vcproj files on windows. You'll need to have pcap installed on *nix and ++WinPcap on windows. ++ ++A swig interface file is now located in the swig directory for using Python, ++Java, Perl, and others with CyaSSL. This is initial support and experimental, ++please send questions or comments to support@wolfssl.com. ++ ++When doing load testing with CyaSSL, on the echoserver example say, the client ++machine may run out of tcp ephemeral ports, they will end up in the TIME_WAIT ++queue, and can't be reused by default. There are generally two ways to fix ++this. 1) Reduce the length sockets remain on the TIME_WAIT queue or 2) Allow ++items on the TIME_WAIT queue to be reused. ++ ++ ++To reduce the TIME_WAIT length in OS X to 3 seconds (3000 milliseconds) ++ ++sudo sysctl -w net.inet.tcp.msl=3000 ++ ++In Linux ++ ++sudo sysctl -w net.ipv4.tcp_tw_reuse=1 ++ ++allows reuse of sockets in TIME_WAIT ++ ++sudo sysctl -w net.ipv4.tcp_tw_recycle=1 ++ ++works but seems to remove sockets from TIME_WAIT entirely? ++ ++sudo sysctl -w net.ipv4.tcp_fin_timeout=1 ++ ++doen't control TIME_WAIT, it controls FIN_WAIT(2) contrary to some posts ++ ++ ++******************** CyaSSL Release 1.4.0 (2/18/2010) ++ ++Release 1.3.0 for CyaSSL adds bug fixes, better multi TLS/SSL version support ++through SSLv23_server_method(), and improved documentation in the doc/ folder. ++ ++For general build instructions doc/Building_CyaSSL.pdf. ++ ++******************** CyaSSL Release 1.3.0 (1/21/2010) ++ ++Release 1.3.0 for CyaSSL adds bug fixes, a potential security problem fix, ++better porting support, removal of assert()s, and a complete THREADX port. ++ ++For general build instructions see rc1 below. ++ ++******************** CyaSSL Release 1.2.0 (11/2/2009) ++ ++Release 1.2.0 for CyaSSL adds bug fixes and session negotiation if first use is ++read or write. ++ ++For general build instructions see rc1 below. ++ ++******************** CyaSSL Release 1.1.0 (9/2/2009) ++ ++Release 1.1.0 for CyaSSL adds bug fixes, a check against malicious session ++cache use, support for lighttpd, and TLS 1.2. ++ ++To get TLS 1.2 support please use the client and server functions: ++ ++SSL_METHOD *TLSv1_2_server_method(void); ++SSL_METHOD *TLSv1_2_client_method(void); ++ ++CyaSSL was tested against lighttpd 1.4.23. To build CyaSSL for use with ++lighttpd use the following commands from the CyaSSL install dir : ++ ++./configure --disable-shared --enable-opensslExtra --enable-fastmath --without-zlib ++ ++make ++make openssl-links ++ ++Then to build lighttpd with CyaSSL use the following commands from the ++lighttpd install dir: ++ ++./configure --with-openssl --with-openssl-includes=/include --with-openssl-libs=/lib LDFLAGS=-lm ++ ++make ++ ++On some systems you may get a linker error about a duplicate symbol for ++MD5_Init or other MD5 calls. This seems to be caused by the lighttpd src file ++md5.c, which defines MD5_Init(), and is included in liblightcomp_la-md5.o. ++When liblightcomp is linked with the SSL_LIBs the linker may complain about ++the duplicate symbol. This can be fixed by editing the lighttpd src file md5.c ++and adding this line to the beginning of the file: ++ ++#if 0 ++ ++and this line to the end of the file ++ ++#endif ++ ++Then from the lighttpd src dir do a: ++ ++make clean ++make ++ ++ ++If you get link errors about undefined symbols more than likely the actual ++OpenSSL libraries are found by the linker before the CyaSSL openssl-links that ++point to the CyaSSL library, causing the linker confusion. This can be fixed ++by editing the Makefile in the lighttpd src directory and changing the line: ++ ++SSL_LIB = -lssl -lcrypto ++ ++to ++ ++SSL_LIB = -lcyassl ++ ++Then from the lighttpd src dir do a: ++ ++make clean ++make ++ ++This should remove any confusion the linker may be having with missing symbols. ++ ++For any questions or concerns please contact support@wolfssl.com . ++ ++For general build instructions see rc1 below. ++ ++******************CyaSSL Release 1.0.6 (8/03/2009) ++ ++Release 1.0.6 for CyaSSL adds bug fixes, an improved session cache, and faster ++math with a huge code option. ++ ++The session cache now defaults to a client mode, also good for embedded servers. ++For servers not under heavy load (less than 200 new sessions per minute), define ++BIG_SESSION_CACHE. If the server will be under heavy load, define ++HUGE_SESSION_CACHE. ++ ++There is now a fasthugemath option for configure. This enables fastmath plus ++even faster math by greatly increasing the code size of the math library. Use ++the benchmark utility to compare public key operations. ++ ++ ++For general build instructions see rc1 below. ++ ++******************CyaSSL Release 1.0.3 (5/10/2009) ++ ++Release 1.0.3 for CyaSSL adds bug fixes and add increased support for OpenSSL ++compatibility when building other applications. ++ ++Release 1.0.3 includes an alpha release of DTLS for both client and servers. ++This is only for testing purposes at this time. Rebroadcast and reordering ++aren't fully implemented at this time but will be for the next release. ++ ++For general build instructions see rc1 below. ++ ++******************CyaSSL Release 1.0.2 (4/3/2009) ++ ++Release 1.0.2 for CyaSSL adds bug fixes for a couple I/O issues. Some systems ++will send a SIGPIPE on socket recv() at any time and this should be handled by ++the application by turning off SIGPIPE through setsockopt() or returning from ++the handler. ++ ++Release 1.0.2 includes an alpha release of DTLS for both client and servers. ++This is only for testing purposes at this time. Rebroadcast and reordering ++aren't fully implemented at this time but will be for the next release. ++ ++For general build instructions see rc1 below. ++ ++*****************CyaSSL Release Candidiate 3 rc3-1.0.0 (2/25/2009) ++ ++ ++Release Candidate 3 for CyaSSL 1.0.0 adds bug fixes and adds a project file for ++iPhone development with Xcode. cyassl-iphone.xcodeproj is located in the root ++directory. This release also includes a fix for supporting other ++implementations that bundle multiple messages at the record layer, this was ++lost when cyassl i/o was re-implemented but is now fixed. ++ ++For general build instructions see rc1 below. ++ ++*****************CyaSSL Release Candidiate 2 rc2-1.0.0 (1/21/2009) ++ ++ ++Release Candidate 2 for CyaSSL 1.0.0 adds bug fixes and adds two new stream ++ciphers along with their respective cipher suites. CyaSSL adds support for ++HC-128 and RABBIT stream ciphers. The new suites are: ++ ++TLS_RSA_WITH_HC_128_SHA ++TLS_RSA_WITH_RABBIT_SHA ++ ++And the corresponding cipher names are ++ ++HC128-SHA ++RABBIT-SHA ++ ++CyaSSL also adds support for building with devkitPro for PPC by changing the ++library proper to use libogc. The examples haven't been changed yet but if ++there's interest they can be. Here's an example ./configure to build CyaSSL ++for devkitPro: ++ ++./configure --disable-shared CC=/pathTo/devkitpro/devkitPPC/bin/powerpc-gekko-gcc --host=ppc --without-zlib --enable-singleThreaded RANLIB=/pathTo/devkitpro/devkitPPC/bin/powerpc-gekko-ranlib CFLAGS="-DDEVKITPRO -DGEKKO" ++ ++For linking purposes you'll need ++ ++LDFLAGS="-g -mrvl -mcpu=750 -meabi -mhard-float -Wl,-Map,$(notdir $@).map" ++ ++For general build instructions see rc1 below. ++ ++ ++********************CyaSSL Release Candidiate 1 rc1-1.0.0 (12/17/2008) ++ ++ ++Release Candidate 1 for CyaSSL 1.0.0 contains major internal changes. Several ++areas have optimization improvements, less dynamic memory use, and the I/O ++strategy has been refactored to allow alternate I/O handling or Library use. ++Many thanks to Thierry Fournier for providing these ideas and most of the work. ++ ++Because of these changes, this release is only a candidate since some problems ++are probably inevitable on some platform with some I/O use. Please report any ++problems and we'll try to resolve them as soon as possible. You can contact us ++at support@wolfssl.com or todd@wolfssl.com. ++ ++Using TomsFastMath by passing --enable-fastmath to ./configure now uses assembly ++on some platforms. This is new so please report any problems as every compiler, ++mode, OS combination hasn't been tested. On ia32 all of the registers need to ++be available so be sure to pass these options to CFLAGS: ++ ++CFLAGS="-O3 -fomit-frame-pointer" ++ ++OS X will also need -mdynamic-no-pic added to CFLAGS ++ ++Also if you're building in shared mode for ia32 you'll need to pass options to ++LDFLAGS as well on OS X: ++ ++LDFLAGS=-Wl,-read_only_relocs,warning ++ ++This gives warnings for some symbols but seems to work. ++ ++ ++--To build on Linux, Solaris, *BSD, Mac OS X, or Cygwin: ++ ++ ./configure ++ make ++ ++ from the ./testsuite/ directory run ./testsuite ++ ++to make a debug build: ++ ++ ./configure --enable-debug --disable-shared ++ make ++ ++ ++ ++--To build on Win32 ++ ++Choose (Re)Build All from the project workspace ++ ++Run the testsuite program ++ ++ ++ ++ ++ ++*************************CyaSSL version 0.9.9 (7/25/2008) ++ ++This release of CyaSSL adds bug fixes, Pre-Shared Keys, over-rideable memory ++handling, and optionally TomsFastMath. Thanks to Moisés Guimarães for the ++work on TomsFastMath. ++ ++To optionally use TomsFastMath pass --enable-fastmath to ./configure ++Or define USE_FAST_MATH in each project from CyaSSL for MSVC. ++ ++Please use the benchmark routine before and after to see the performance ++difference, on some platforms the gains will be little but RSA encryption ++always seems to be faster. On x86-64 machines with GCC the normal math library ++may outperform the fast one when using CFLAGS=-m64 because TomsFastMath can't ++yet use -m64 because of GCCs inability to do 128bit division. ++ ++ **** UPDATE GCC 4.2.1 can now do 128bit division *** ++ ++See notes below (0.2.0) for complete build instructions. ++ ++ ++****************CyaSSL version 0.9.8 (5/7/2008) ++ ++This release of CyaSSL adds bug fixes, client side Diffie-Hellman, and better ++socket handling. ++ ++See notes below (0.2.0) for complete build instructions. ++ ++ ++****************CyaSSL version 0.9.6 (1/31/2008) ++ ++This release of CyaSSL adds bug fixes, increased session management, and a fix ++for gnutls. ++ ++See notes below (0.2.0) for complete build instructions. ++ ++ ++****************CyaSSL version 0.9.0 (10/15/2007) ++ ++This release of CyaSSL adds bug fixes, MSVC 2005 support, GCC 4.2 support, ++IPV6 support and test, and new test certificates. ++ ++See notes below (0.2.0) for complete build instructions. ++ ++ ++****************CyaSSL version 0.8.0 (1/10/2007) ++ ++This release of CyaSSL adds increased socket support, for non-blocking writes, ++connects, and interrupted system calls. ++ ++See notes below (0.2.0) for complete build instructions. ++ ++ ++****************CyaSSL version 0.6.3 (10/30/2006) ++ ++This release of CyaSSL adds debug logging to stderr to aid in the debugging of ++CyaSSL on systems that may not provide the best support. ++ ++If CyaSSL is built with debugging support then you need to call ++CyaSSL_Debugging_ON() to turn logging on. ++ ++On Unix use ./configure --enable-debug ++ ++On Windows define DEBUG_CYASSL when building CyaSSL ++ ++ ++To turn logging back off call CyaSSL_Debugging_OFF() ++ ++See notes below (0.2.0) for complete build instructions. ++ ++ ++*****************CyaSSL version 0.6.2 (10/29/2006) ++ ++This release of CyaSSL adds TLS 1.1. ++ ++Note that CyaSSL has certificate verification on by default, unlike OpenSSL. ++To emulate OpenSSL behavior, you must call SSL_CTX_set_verify() with ++SSL_VERIFY_NONE. In order to have full security you should never do this, ++provide CyaSSL with the proper certificates to eliminate impostors and call ++CyaSSL_check_domain_name() to prevent man in the middle attacks. ++ ++See notes below (0.2.0) for build instructions. ++ ++*****************CyaSSL version 0.6.0 (10/25/2006) ++ ++This release of CyaSSL adds more SSL functions, better autoconf, nonblocking ++I/O for accept, connect, and read. There is now an --enable-small configure ++option that turns off TLS, AES, DES3, HMAC, and ERROR_STRINGS, see configure.in ++for the defines. Note that TLS requires HMAC and AES requires TLS. ++ ++See notes below (0.2.0) for build instructions. ++ ++ ++*****************CyaSSL version 0.5.5 (09/27/2006) ++ ++This mini release of CyaSSL adds better input processing through buffered input ++and big message support. Added SSL_pending() and some sanity checks on user ++settings. ++ ++See notes below (0.2.0) for build instructions. ++ ++ ++*****************CyaSSL version 0.5.0 (03/27/2006) ++ ++This release of CyaSSL adds AES support and minor bug fixes. ++ ++See notes below (0.2.0) for build instructions. ++ ++ ++*****************CyaSSL version 0.4.0 (03/15/2006) ++ ++This release of CyaSSL adds TLSv1 client/server support and libtool. ++ ++See notes below for build instructions. ++ ++ ++*****************CyaSSL version 0.3.0 (02/26/2006) ++ ++This release of CyaSSL adds SSLv3 server support and session resumption. ++ ++See notes below for build instructions. ++ ++ ++*****************CyaSSL version 0.2.0 (02/19/2006) ++ ++ ++This is the first release of CyaSSL and its crypt brother, CTaoCrypt. CyaSSL ++is written in ANSI C with the idea of a small code size, footprint, and memory ++usage in mind. CTaoCrypt can be as small as 32K, and the current client ++version of CyaSSL can be as small as 12K. ++ ++ ++The first release of CTaoCrypt supports MD5, SHA-1, 3DES, ARC4, Big Integer ++Support, RSA, ASN parsing, and basic x509 (en/de)coding. ++ ++The first release of CyaSSL supports normal client RSA mode SSLv3 connections ++with support for SHA-1 and MD5 digests. Ciphers include 3DES and RC4. ++ ++ ++--To build on Linux, Solaris, *BSD, Mac OS X, or Cygwin: ++ ++ ./configure ++ make ++ ++ from the ./testsuite/ directory run ./testsuite ++ ++to make a debug build: ++ ++ ./configure --enable-debug --disable-shared ++ make ++ ++ ++ ++--To build on Win32 ++ ++Choose (Re)Build All from the project workspace ++ ++Run the testsuite program ++ ++ ++ ++*** The next release of CyaSSL will support a server and more OpenSSL ++compatibility functions. ++ ++ ++Please send questions or comments to todd@wolfssl.com ++ +diff -ruNp mysql-5.6.23/extra/wolfssl/README.md mysql-5.6.23-wolfssl/extra/wolfssl/README.md +--- mysql-5.6.23/extra/wolfssl/README.md 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/README.md 2015-02-15 14:28:53.000000000 -0700 +@@ -0,0 +1,1122 @@ ++# Notes - Please read ++ ++## Note 1 ++``` ++CyaSSL now needs all examples and tests to be run from the CyaSSL home ++directory. This is because it finds certs and keys from ./certs/. Trying to ++maintain the ability to run each program from its own directory, the testsuite ++directory, the main directory (for make check/test), and for the various ++different project layouts (with or without config) was becoming harder and ++harder. Now to run testsuite just do: ++ ++./testsuite/testsuite ++ ++or ++ ++make check (when using autoconf) ++ ++On *nix or Windows the examples and testsuite will check to see if the current ++directory is the source directory and if so, attempt to change to the CyaSSL ++home directory. This should work in most setup cases, if not, just follow the ++beginning of the note and specify the full path. ++``` ++ ++## Note 2 ++``` ++CyaSSL takes a different approach to certificate verification than OpenSSL does. ++The default policy for the client is to verify the server, this means that if ++you don't load CAs to verify the server you'll get a connect error, no signer ++error to confirm failure (-188). If you want to mimic OpenSSL behavior of ++having SSL_connect succeed even if verifying the server fails and reducing ++security you can do this by calling: ++ ++SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); ++ ++before calling SSL_new(); Though it's not recommended. ++``` ++ ++# CyaSSL Release 3.3.2 (01/07/2015) ++ ++## Release 3.3.2 CyaSSL has bug fixes and new features including: ++ ++- Improvements in the build configuration under AIX. ++- Various compile warnings. ++- Changed a memcpy to memmove in the sniffer ++ ++# CyaSSL Release 3.3.0 (12/05/2014) ++ ++- Countermeasuers for Handshake message duplicates, CHANGE CIPHER without ++ FINISHED, and fast forward attempts. Thanks to Karthikeyan Bhargavan from ++ the Prosecco team at INRIA Paris-Rocquencourt for the report. ++- FIPS version submitted ++- Removes SSLv2 Client Hello processing, can be enabled with OLD_HELLO_ALLOWED ++- User can set mimimum downgrade version with CyaSSL_SetMinVersion() ++- Small stack improvements at TLS/SSL layer ++- TLS Master Secret generation and Key Expansion are now exposed ++- Adds client side Secure Renegotiation, * not recommended * ++- Client side session ticket support, not fully tested with Secure Renegotiation ++- Allows up to 4096bit DHE at TLS Key Exchange layer ++- Handles non standard SessionID sizes in Hello Messages ++- PicoTCP Support ++- Sniffer now supports SNI Virtual Hosts ++- Sniffer now handles non HTTPS protocols using STARTTLS ++- Sniffer can now parse records with multiple messages ++- TI-RTOS updates ++- Fix for ColdFire optimized fp_digit read only in explicit 32bit case ++- ADH Cipher Suite ADH-AES128-SHA for EAP-FAST ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++# CyaSSL Release 3.2.0 (09/10/2014) ++ ++#### Release 3.2.0 CyaSSL has bug fixes and new features including: ++ ++- ChaCha20 and Poly1305 crypto and suites ++- Small stack improvements for OCSP, CRL, TLS, DTLS ++- NTRU Encrypt and Decrypt benchmarks ++- Updated Visual Studio project files ++- Updated Keil MDK5 project files ++- Fix for DTLS sequence numbers with GCM/CCM ++- Updated HashDRBG with more secure struct declaration ++- TI-RTOS support and example Code Composer Studio project files ++- Ability to get enabled cipher suites, CyaSSL_get_ciphers() ++- AES-GCM/CCM/Direct support for Freescale mmCAU and CAU ++- Sniffer improvement checking for decrypt key setup ++- Support for raw ECC key import ++- Ability to convert ecc_key to DER, EccKeyToDer() ++- Security fix for RSA Padding check vulnerability reported by Intel Security ++ Advanced Threat Research team ++ ++The CyaSSL manual is available at: ++http://www.wolfssl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++# CyaSSL Release 3.1.0 (07/14/2014) ++ ++#### Release 3.1.0 CyaSSL has bug fixes and new features including: ++ ++- Fix for older versions of icc without 128-bit type ++- Intel ASM syntax for AES-NI ++- Updated NTRU support, keygen benchmark ++- FIPS check for minimum required HMAC key length ++- Small stack (--enable-smallstack) improvements for PKCS#7, ASN ++- TLS extension support for DTLS ++- Default I/O callbacks external to user ++- Updated example client with bad clock test ++- Ability to set optional ECC context info ++- Ability to enable/disable DH separate from opensslextra ++- Additional test key/cert buffers for CA and server ++- Updated example certificates ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++# CyaSSL Release 3.0.2 (05/30/2014) ++ ++#### Release 3.0.2 CyaSSL has bug fixes and new features including: ++ ++- Added the following cipher suites: ++ * TLS_PSK_WITH_AES_128_GCM_SHA256 ++ * TLS_PSK_WITH_AES_256_GCM_SHA384 ++ * TLS_PSK_WITH_AES_256_CBC_SHA384 ++ * TLS_PSK_WITH_NULL_SHA384 ++ * TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 ++ * TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 ++ * TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 ++ * TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 ++ * TLS_DHE_PSK_WITH_NULL_SHA256 ++ * TLS_DHE_PSK_WITH_NULL_SHA384 ++ * TLS_DHE_PSK_WITH_AES_128_CCM ++ * TLS_DHE_PSK_WITH_AES_256_CCM ++- Added AES-NI support for Microsoft Visual Studio builds. ++- Changed small stack build to be disabled by default. ++- Updated the Hash DRBG and provided a configure option to enable. ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++# CyaSSL Release 3.0.0 (04/29/2014) ++ ++#### Release 3.0.0 CyaSSL has bug fixes and new features including: ++ ++- FIPS release candidate ++- X.509 improvements that address items reported by Suman Jana with security ++ researchers at UT Austin and UC Davis ++- Small stack size improvements, --enable-smallstack. Offloads large local ++ variables to the heap. (Note this is not complete.) ++- Updated AES-CCM-8 cipher suites to use approved suite numbers. ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++# CyaSSL Release 2.9.4 (04/09/2014) ++ ++#### Release 2.9.4 CyaSSL has bug fixes and new features including: ++ ++- Security fixes that address items reported by Ivan Fratric of the Google ++ Security Team ++- X.509 Unknown critical extensions treated as errors, report by Suman Jana with ++ security researchers at UT Austin and UC Davis ++- Sniffer fixes for corrupted packet length and Jumbo frames ++- ARM thumb mode assembly fixes ++- Xcode 5.1 support including new clang ++- PIC32 MZ hardware support ++- CyaSSL Object has enough room to read the Record Header now w/o allocs ++- FIPS wrappers for AES, 3DES, SHA1, SHA256, SHA384, HMAC, and RSA. ++- A sample I/O pool is demonstrated with --enable-iopool to overtake memory ++ handling and reduce memory fragmentation on I/O large sizes ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++# CyaSSL Release 2.9.0 (02/07/2014) ++ ++#### Release 2.9.0 CyaSSL has bug fixes and new features including: ++- Freescale Kinetis RNGB support ++- Freescale Kinetis mmCAU support ++- TLS Hello extensions ++ - ECC ++ - Secure Renegotiation (null) ++ - Truncated HMAC ++- SCEP support ++ - PKCS #7 Enveloped data and signed data ++ - PKCS #10 Certificate Signing Request generation ++- DTLS sliding window ++- OCSP Improvements ++ - API change to integrate into Certificate Manager ++ - IPv4/IPv6 agnostic ++ - example client/server support for OCSP ++ - OCSP nonces are optional ++- GMAC hashing ++- Windows build additions ++- Windows CYGWIN build fixes ++- Updated test certificates ++- Microchip MPLAB Harmony support ++- Update autoconf scripts ++- Additional X.509 inspection functions ++- ECC encrypt/decrypt primitives ++- ECC Certificate generation ++ ++The Freescale Kinetis K53 RNGB documentation can be found in Chapter 33 of the ++K53 Sub-Family Reference Manual: ++http://cache.freescale.com/files/32bit/doc/ref_manual/K53P144M100SF2RM.pdf ++ ++Freescale Kinetis K60 mmCAU (AES, DES, 3DES, MD5, SHA, SHA256) documentation ++can be found in the "ColdFire/ColdFire+ CAU and Kinetis mmCAU Software Library ++User Guide": ++http://cache.freescale.com/files/32bit/doc/user_guide/CAUAPIUG.pdf ++ ++ ++# CyaSSL Release 2.8.0 (8/30/2013) ++ ++#### Release 2.8.0 CyaSSL has bug fixes and new features including: ++- AES-GCM and AES-CCM use AES-NI ++- NetX default IO callback handlers ++- IPv6 fixes for DTLS Hello Cookies ++- The ability to unload Certs/Keys after the handshake, CyaSSL_UnloadCertsKeys() ++- SEP certificate extensions ++- Callback getters for easier resource freeing ++- External CYASSL_MAX_ERROR_SZ for correct error buffer sizing ++- MacEncrypt and DecryptVerify Callbacks for User Atomic Record Layer Processing ++- Public Key Callbacks for ECC and RSA ++- Client now sends blank cert upon request if doesn't have one with TLS <= 1.2 ++ ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++# CyaSSL Release 2.7.0 (6/17/2013) ++ ++#### Release 2.7.0 CyaSSL has bug fixes and new features including: ++- SNI support for client and server ++- KEIL MDK-ARM projects ++- Wildcard check to domain name match, and Subject altnames are checked too ++- Better error messages for certificate verification errors ++- Ability to discard session during handshake verify ++- More consistent error returns across all APIs ++- Ability to unload CAs at the CTX or CertManager level ++- Authority subject id support for Certificate matching ++- Persistent session cache functionality ++- Persistent CA cache functionality ++- Client session table lookups to push serverID table to library level ++- Camellia support to sniffer ++- User controllable settings for DTLS timeout values ++- Sniffer fixes for caching long lived sessions ++- DTLS reliability enhancements for the handshake ++- Better ThreadX support ++ ++When compiling with Mingw, libtool may give the following warning due to ++path conversion errors: ++ ++``` ++libtool: link: Could not determine host file name corresponding to ** ++libtool: link: Continuing, but uninstalled executables may not work. ++``` ++ ++If so, examples and testsuite will have problems when run, showing an ++error while loading shared libraries. To resolve, please run "make install". ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++# CyaSSL Release 2.6.0 (04/15/2013) ++ ++#### Release 2.6.0 CyaSSL has bug fixes and new features including: ++- DTLS 1.2 support including AEAD ciphers ++- SHA-3 finalist Blake2 support, it's fast and uses little resources ++- SHA-384 cipher suites including ECC ones ++- HMAC now supports SHA-512 ++- Track memory use for example client/server with -t option ++- Better IPv6 examples with --enable-ipv6, before if ipv6 examples/tests were ++ turned on, localhost only was used. Now link-local (with scope ids) and ipv6 ++ hosts can be used as well. ++- Xcode v4.6 project for iOS v6.1 update ++- settings.h is now checked in all *.c files for true one file setting detection ++- Better alignment at SSL layer for hardware crypto alignment needs ++ * Note, SSL itself isn't friendly to alignment with 5 byte TLS headers and ++ 13 bytes DTLS headers, but every effort is now made to align with the ++ CYASSL_GENERAL_ALIGNMENT flag which sets desired alignment requirement ++- NO_64BIT flag to turn off 64bit data type accumulators in public key code ++ * Note, some systems are faster with 32bit accumulators ++- --enable-stacksize for example client/server stack use ++ * Note, modern desktop Operating Systems may add bytes to each stack frame ++- Updated compression/decompression with direct crypto access ++- All ./configure options are now lowercase only for consistency ++- ./configure builds default to fastmath option ++ * Note, if on ia32 and building in shared mode this may produce a problem ++ with a missing register being available because of PIC, there are at least ++ 5 solutions to this: ++ 1) --disable-fastmath , don't use fastmath ++ 2) --disable-shared, don't build a shared library ++ 3) C_EXTRA_FLAGS=-DTFM_NO_ASM , turn off assembly use ++ 4) use clang, it just seems to work ++ 5) play around with no PIC options to force all registers being open ++- Many new ./configure switches for option enable/disable for example ++ * rsa ++ * dh ++ * dsa ++ * md5 ++ * sha ++ * arc4 ++ * null (allow NULL ciphers) ++ * oldtls (only use TLS 1.2) ++ * asn (no certs or public keys allowed) ++- ./configure generates cyassl/options.h which allows a header the user can ++ include in their app to make sure the same options are set at the app and ++ CyaSSL level. ++- autoconf no longer needs serial-tests which lowers version requirements of ++ automake to 1.11 and autoconf to 2.63 ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++ ++# CyaSSL Release 2.5.0 (02/04/2013) ++ ++#### Release 2.5.0 CyaSSL has bug fixes and new features including: ++- Fix for TLS CBC padding timing attack identified by Nadhem Alfardan and ++ Kenny Paterson: http://www.isg.rhul.ac.uk/tls/ ++- Microchip PIC32 (MIPS16, MIPS32) support ++- Microchip MPLAB X example projects for PIC32 Ethernet Starter Kit ++- Updated CTaoCrypt benchmark app for embedded systems ++- 1024-bit test certs/keys and cert/key buffers ++- AES-CCM-8 crypto and cipher suites ++- Camellia crypto and cipher suites ++- Bumped minimum autoconf version to 2.65, automake version to 1.12 ++- Addition of OCSP callbacks ++- STM32F2 support with hardware crypto and RNG ++- Cavium NITROX support ++ ++CTaoCrypt now has support for the Microchip PIC32 and has been tested with ++the Microchip PIC32 Ethernet Starter Kit, the XC32 compiler and ++MPLAB X IDE in both MIPS16 and MIPS32 instruction set modes. See the README ++located under the /mplabx directory for more details. ++ ++To add Cavium NITROX support do: ++ ++./configure --with-cavium=/home/user/cavium/software ++ ++pointing to your licensed cavium/software directory. Since Cavium doesn't ++build a library we pull in the cavium_common.o file which gives a libtool ++warning about the portability of this. Also, if you're using the github source ++tree you'll need to remove the -Wredundant-decls warning from the generated ++Makefile because the cavium headers don't conform to this warning. Currently ++CyaSSL supports Cavium RNG, AES, 3DES, RC4, HMAC, and RSA directly at the crypto ++layer. Support at the SSL level is partial and currently just does AES, 3DES, ++and RC4. RSA and HMAC are slower until the Cavium calls can be utilized in non ++blocking mode. The example client turns on cavium support as does the crypto ++test and benchmark. Please see the HAVE_CAVIUM define. ++ ++CyaSSL is able to use the STM32F2 hardware-based cryptography and random number ++generator through the STM32F2 Standard Peripheral Library. For necessary ++defines, see the CYASSL_STM32F2 define in settings.h. Documentation for the ++STM32F2 Standard Peripheral Library can be found in the following document: ++http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/USER_MANUAL/DM00023896.pdf ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++ ++# CyaSSL Release 2.4.6 (12/20/2012) ++ ++#### Release 2.4.6 CyaSSL has bug fixes and a few new features including: ++- ECC into main version ++- Lean PSK build (reduced code size, RAM usage, and stack usage) ++- FreeBSD CRL monitor support ++- CyaSSL_peek() ++- CyaSSL_send() and CyaSSL_recv() for I/O flag setting ++- CodeWarrior Support ++- MQX Support ++- Freescale Kinetis support including Hardware RNG ++- autoconf builds use jobserver ++- cyassl-config ++- Sniffer memory reductions ++ ++Thanks to Brian Aker for the improved autoconf system, make rpm, cyassl-config, ++warning system, and general good ideas for improving CyaSSL! ++ ++The Freescale Kinetis K70 RNGA documentation can be found in Chapter 37 of the ++K70 Sub-Family Reference Manual: ++http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K70P256M150SF3RM.pdf ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++# CyaSSL Release 2.4.0 (10/10/2012) ++ ++#### Release 2.4.0 CyaSSL has bug fixes and a few new features including: ++- DTLS reliability ++- Reduced memory usage after handshake ++- Updated build process ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++ ++# CyaSSL Release 2.3.0 (8/10/2012) ++ ++#### Release 2.3.0 CyaSSL has bug fixes and a few new features including: ++- AES-GCM crypto and cipher suites ++- make test cipher suite checks ++- Subject AltName processing ++- Command line support for client/server examples ++- Sniffer SessionTicket support ++- SHA-384 cipher suites ++- Verify cipher suite validity when user overrides ++- CRL dir monitoring ++- DTLS Cookie support, reliability coming soon ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++ ++# CyaSSL Release 2.2.0 (5/18/2012) ++ ++#### Release 2.2.0 CyaSSL has bug fixes and a few new features including: ++- Initial CRL support (--enable-crl) ++- Initial OCSP support (--enable-ocsp) ++- Add static ECDH suites ++- SHA-384 support ++- ECC client certificate support ++- Add medium session cache size (1055 sessions) ++- Updated unit tests ++- Protection against mutex reinitialization ++ ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++ ++# CyaSSL Release 2.0.8 (2/24/2012) ++ ++#### Release 2.0.8 CyaSSL has bug fixes and a few new features including: ++- A fix for malicious certificates pointed out by Remi Gacogne (thanks) ++ resulting in NULL pointer use. ++- Respond to renegotiation attempt with no_renegoatation alert ++- Add basic path support for load_verify_locations() ++- Add set Temp EC-DHE key size ++- Extra checks on rsa test when porting into ++ ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++ ++# CyaSSL Release 2.0.6 (1/27/2012) ++ ++#### Release 2.0.6 CyaSSL has bug fixes and a few new features including: ++- Fixes for CA basis constraint check ++- CTX reference counting ++- Initial unit test additions ++- Lean and Mean Windows fix ++- ECC benchmarking ++- SSMTP build support ++- Ability to group handshake messages with set_group_messages(ctx/ssl) ++- CA cache addition callback ++- Export Base64_Encode for general use ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++ ++# CyaSSL Release 2.0.2 (12/05/2011) ++ ++#### Release 2.0.2 CyaSSL has bug fixes and a few new features including: ++- CTaoCrypt Runtime library detection settings when directly using the crypto ++ library ++- Default certificate generation now uses SHAwRSA and adds SHA256wRSA generation ++- All test certificates now use 2048bit and SHA-1 for better modern browser ++ support ++- Direct AES block access and AES-CTR (counter) mode ++- Microchip pic32 support ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++ ++ ++# CyaSSL Release 2.0.0rc3 (9/28/2011) ++ ++#### Release 2.0.0rc3 for CyaSSL has bug fixes and a few new features including: ++- updated autoconf support ++- better make install and uninstall (uses system directories) ++- make test / make check ++- CyaSSL headers now in ++- CTaocrypt headers now in ++- OpenSSL compatibility headers now in ++- examples and tests all run from home directory so can use certs in ./certs ++ (see note 1) ++ ++So previous applications that used the OpenSSL compatibility header ++ now need to include instead, no other ++changes are required. ++ ++Special Thanks to Brian Aker for his autoconf, install, and header patches. ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++# CyaSSL Release 2.0.0rc2 (6/6/2011) ++ ++#### Release 2.0.0rc2 for CyaSSL has bug fixes and a few new features including: ++- bug fixes (Alerts, DTLS with DHE) ++- FreeRTOS support ++- lwIP support ++- Wshadow warnings removed ++- asn public header ++- CTaoCrypt public headers now all have ctc_ prefix (the manual is still being ++ updated to reflect this change) ++- and more. ++ ++This is the 2nd and perhaps final release candidate for version 2. ++Please send any comments or questions to support@yassl.com. ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++# CyaSSL Release 2.0.0rc1 (5/2/2011) ++ ++#### Release 2.0.0rc1 for CyaSSL has many new features including: ++- bug fixes ++- SHA-256 cipher suites ++- Root Certificate Verification (instead of needing all certs in the chain) ++- PKCS #8 private key encryption (supports PKCS #5 v1-v2 and PKCS #12) ++- Serial number retrieval for x509 ++- PBKDF2 and PKCS #12 PBKDF ++- UID parsing for x509 ++- SHA-256 certificate signatures ++- Client and server can send chains (SSL_CTX_use_certificate_chain_file) ++- CA loading can now parse multiple certificates per file ++- Dynamic memory runtime hooks ++- Runtime hooks for logging ++- EDH on server side ++- More informative error codes ++- More informative logging messages ++- Version downgrade more robust (use SSL_v23*) ++- Shared build only by default through ./configure ++- Compiler visibility is now used, internal functions not polluting namespace ++- Single Makefile, no recursion, for faster and simpler building ++- Turn on all warnings possible build option, warning fixes ++- and more. ++ ++Because of all the new features and the multiple OS, compiler, feature-set ++options that CyaSSL allows, there may be some configuration fixes needed. ++Please send any comments or questions to support@yassl.com. ++ ++The CyaSSL manual is available at: ++http://www.yassl.com/documentation/CyaSSL-Manual.pdf. For build instructions ++and comments about the new features please check the manual. ++ ++# CyaSSL Release 1.9.0 (3/2/2011) ++ ++Release 1.9.0 for CyaSSL adds bug fixes, improved TLSv1.2 through testing and ++better hash/sig algo ids, --enable-webServer for the yaSSL embedded web server, ++improper AES key setup detection, user cert verify callback improvements, and ++more. ++ ++The CyaSSL manual offering is included in the doc/ directory. For build ++instructions and comments about the new features please check the manual. ++ ++Please send any comments or questions to support@yassl.com. ++ ++# CyaSSL Release 1.8.0 (12/23/2010) ++ ++Release 1.8.0 for CyaSSL adds bug fixes, x509 v3 CA signed certificate ++generation, a C standard library abstraction layer, lower memory use, increased ++portability through the os_settings.h file, and the ability to use NTRU cipher ++suites when used in conjunction with an NTRU license and library. ++ ++The initial CyaSSL manual offering is included in the doc/ directory. For ++build instructions and comments about the new features please check the manual. ++ ++Please send any comments or questions to support@yassl.com. ++ ++Happy Holidays. ++ ++ ++# CyaSSL Release 1.6.5 (9/9/2010) ++ ++Release 1.6.5 for CyaSSL adds bug fixes and x509 v3 self signed certificate ++generation. ++ ++For general build instructions see doc/Building_CyaSSL.pdf. ++ ++To enable certificate generation support add this option to ./configure ++./configure --enable-certgen ++ ++An example is included in ctaocrypt/test/test.c and documentation is provided ++in doc/CyaSSL_Extensions_Reference.pdf item 11. ++ ++# CyaSSL Release 1.6.0 (8/27/2010) ++ ++Release 1.6.0 for CyaSSL adds bug fixes, RIPEMD-160, SHA-512, and RSA key ++generation. ++ ++For general build instructions see doc/Building_CyaSSL.pdf. ++ ++To add RIPEMD-160 support add this option to ./configure ++./configure --enable-ripemd ++ ++To add SHA-512 support add this option to ./configure ++./configure --enable-sha512 ++ ++To add RSA key generation support add this option to ./configure ++./configure --enable-keygen ++ ++Please see ctaocrypt/test/test.c for examples and usage. ++ ++For Windows, RIPEMD-160 and SHA-512 are enabled by default but key generation is ++off by default. To turn key generation on add the define CYASSL_KEY_GEN to ++CyaSSL. ++ ++ ++# CyaSSL Release 1.5.6 (7/28/2010) ++ ++Release 1.5.6 for CyaSSL adds bug fixes, compatibility for our JSSE provider, ++and a fix for GCC builds on some systems. ++ ++For general build instructions see doc/Building_CyaSSL.pdf. ++ ++To add AES-NI support add this option to ./configure ++./configure --enable-aesni ++ ++You'll need GCC 4.4.3 or later to make use of the assembly. ++ ++# CyaSSL Release 1.5.4 (7/7/2010) ++ ++Release 1.5.4 for CyaSSL adds bug fixes, support for AES-NI, SHA1 speed ++improvements from loop unrolling, and support for the Mongoose Web Server. ++ ++For general build instructions see doc/Building_CyaSSL.pdf. ++ ++To add AES-NI support add this option to ./configure ++./configure --enable-aesni ++ ++You'll need GCC 4.4.3 or later to make use of the assembly. ++ ++# CyaSSL Release 1.5.0 (5/11/2010) ++ ++Release 1.5.0 for CyaSSL adds bug fixes, GoAhead WebServer support, sniffer ++support, and initial swig interface support. ++ ++For general build instructions see doc/Building_CyaSSL.pdf. ++ ++To add support for GoAhead WebServer either --enable-opensslExtra or if you ++don't want all the features of opensslExtra you can just define GOAHEAD_WS ++instead. GOAHEAD_WS can be added to ./configure with CFLAGS=-DGOAHEAD_WS or ++you can define it yourself. ++ ++To look at the sniffer support please see the sniffertest app in ++sslSniffer/sslSnifferTest. Build with --enable-sniffer on *nix or use the ++vcproj files on windows. You'll need to have pcap installed on *nix and ++WinPcap on windows. ++ ++A swig interface file is now located in the swig directory for using Python, ++Java, Perl, and others with CyaSSL. This is initial support and experimental, ++please send questions or comments to support@yassl.com. ++ ++When doing load testing with CyaSSL, on the echoserver example say, the client ++machine may run out of tcp ephemeral ports, they will end up in the TIME_WAIT ++queue, and can't be reused by default. There are generally two ways to fix ++this. ++ ++1. Reduce the length sockets remain on the TIME_WAIT queue OR ++2. Allow items on the TIME_WAIT queue to be reused. ++ ++ ++To reduce the TIME_WAIT length in OS X to 3 seconds (3000 milliseconds) ++ ++`sudo sysctl -w net.inet.tcp.msl=3000` ++ ++In Linux ++ ++`sudo sysctl -w net.ipv4.tcp_tw_reuse=1` ++ ++allows reuse of sockets in TIME_WAIT ++ ++`sudo sysctl -w net.ipv4.tcp_tw_recycle=1` ++ ++works but seems to remove sockets from TIME_WAIT entirely? ++ ++`sudo sysctl -w net.ipv4.tcp_fin_timeout=1` ++ ++doen't control TIME_WAIT, it controls FIN_WAIT(2) contrary to some posts ++ ++ ++# CyaSSL Release 1.4.0 (2/18/2010) ++ ++Release 1.3.0 for CyaSSL adds bug fixes, better multi TLS/SSL version support ++through SSLv23_server_method(), and improved documentation in the doc/ folder. ++ ++For general build instructions doc/Building_CyaSSL.pdf. ++ ++# CyaSSL Release 1.3.0 (1/21/2010) ++ ++Release 1.3.0 for CyaSSL adds bug fixes, a potential security problem fix, ++better porting support, removal of assert()s, and a complete THREADX port. ++ ++For general build instructions see rc1 below. ++ ++# CyaSSL Release 1.2.0 (11/2/2009) ++ ++Release 1.2.0 for CyaSSL adds bug fixes and session negotiation if first use is ++read or write. ++ ++For general build instructions see rc1 below. ++ ++# CyaSSL Release 1.1.0 (9/2/2009) ++ ++Release 1.1.0 for CyaSSL adds bug fixes, a check against malicious session ++cache use, support for lighttpd, and TLS 1.2. ++ ++To get TLS 1.2 support please use the client and server functions: ++ ++```c ++SSL_METHOD *TLSv1_2_server_method(void); ++SSL_METHOD *TLSv1_2_client_method(void); ++``` ++ ++CyaSSL was tested against lighttpd 1.4.23. To build CyaSSL for use with ++lighttpd use the following commands from the CyaSSL install dir : ++ ++``` ++./configure --disable-shared --enable-opensslExtra --enable-fastmath --without-zlib ++ ++make ++make openssl-links ++``` ++ ++Then to build lighttpd with CyaSSL use the following commands from the ++lighttpd install dir: ++ ++``` ++./configure --with-openssl --with-openssl-includes=/include --with-openssl-libs=/lib LDFLAGS=-lm ++ ++make ++``` ++ ++On some systems you may get a linker error about a duplicate symbol for ++MD5_Init or other MD5 calls. This seems to be caused by the lighttpd src file ++md5.c, which defines MD5_Init(), and is included in liblightcomp_la-md5.o. ++When liblightcomp is linked with the SSL_LIBs the linker may complain about ++the duplicate symbol. This can be fixed by editing the lighttpd src file md5.c ++and adding this line to the beginning of the file: ++ ++\#if 0 ++ ++and this line to the end of the file ++ ++\#endif ++ ++Then from the lighttpd src dir do a: ++ ++``` ++make clean ++make ++``` ++ ++If you get link errors about undefined symbols more than likely the actual ++OpenSSL libraries are found by the linker before the CyaSSL openssl-links that ++point to the CyaSSL library, causing the linker confusion. This can be fixed ++by editing the Makefile in the lighttpd src directory and changing the line: ++ ++`SSL_LIB = -lssl -lcrypto` ++ ++to ++ ++`SSL_LIB = -lcyassl` ++ ++Then from the lighttpd src dir do a: ++ ++``` ++make clean ++make ++``` ++ ++This should remove any confusion the linker may be having with missing symbols. ++ ++For any questions or concerns please contact support@yassl.com . ++ ++For general build instructions see rc1 below. ++ ++# CyaSSL Release 1.0.6 (8/03/2009) ++ ++Release 1.0.6 for CyaSSL adds bug fixes, an improved session cache, and faster ++math with a huge code option. ++ ++The session cache now defaults to a client mode, also good for embedded servers. ++For servers not under heavy load (less than 200 new sessions per minute), define ++BIG_SESSION_CACHE. If the server will be under heavy load, define ++HUGE_SESSION_CACHE. ++ ++There is now a fasthugemath option for configure. This enables fastmath plus ++even faster math by greatly increasing the code size of the math library. Use ++the benchmark utility to compare public key operations. ++ ++ ++For general build instructions see rc1 below. ++ ++# CyaSSL Release 1.0.3 (5/10/2009) ++ ++Release 1.0.3 for CyaSSL adds bug fixes and add increased support for OpenSSL ++compatibility when building other applications. ++ ++Release 1.0.3 includes an alpha release of DTLS for both client and servers. ++This is only for testing purposes at this time. Rebroadcast and reordering ++aren't fully implemented at this time but will be for the next release. ++ ++For general build instructions see rc1 below. ++ ++# CyaSSL Release 1.0.2 (4/3/2009) ++ ++Release 1.0.2 for CyaSSL adds bug fixes for a couple I/O issues. Some systems ++will send a SIGPIPE on socket recv() at any time and this should be handled by ++the application by turning off SIGPIPE through setsockopt() or returning from ++the handler. ++ ++Release 1.0.2 includes an alpha release of DTLS for both client and servers. ++This is only for testing purposes at this time. Rebroadcast and reordering ++aren't fully implemented at this time but will be for the next release. ++ ++For general build instructions see rc1 below. ++ ++## CyaSSL Release Candidiate 3 rc3-1.0.0 (2/25/2009) ++ ++ ++Release Candidate 3 for CyaSSL 1.0.0 adds bug fixes and adds a project file for ++iPhone development with Xcode. cyassl-iphone.xcodeproj is located in the root ++directory. This release also includes a fix for supporting other ++implementations that bundle multiple messages at the record layer, this was ++lost when cyassl i/o was re-implemented but is now fixed. ++ ++For general build instructions see rc1 below. ++ ++## CyaSSL Release Candidiate 2 rc2-1.0.0 (1/21/2009) ++ ++ ++Release Candidate 2 for CyaSSL 1.0.0 adds bug fixes and adds two new stream ++ciphers along with their respective cipher suites. CyaSSL adds support for ++HC-128 and RABBIT stream ciphers. The new suites are: ++ ++``` ++TLS_RSA_WITH_HC_128_SHA ++TLS_RSA_WITH_RABBIT_SHA ++``` ++ ++And the corresponding cipher names are ++ ++``` ++HC128-SHA ++RABBIT-SHA ++``` ++ ++CyaSSL also adds support for building with devkitPro for PPC by changing the ++library proper to use libogc. The examples haven't been changed yet but if ++there's interest they can be. Here's an example ./configure to build CyaSSL ++for devkitPro: ++ ++``` ++./configure --disable-shared CC=/pathTo/devkitpro/devkitPPC/bin/powerpc-gekko-gcc --host=ppc --without-zlib --enable-singleThreaded RANLIB=/pathTo/devkitpro/devkitPPC/bin/powerpc-gekko-ranlib CFLAGS="-DDEVKITPRO -DGEKKO" ++``` ++ ++For linking purposes you'll need ++ ++`LDFLAGS="-g -mrvl -mcpu=750 -meabi -mhard-float -Wl,-Map,$(notdir $@).map"` ++ ++For general build instructions see rc1 below. ++ ++ ++## CyaSSL Release Candidiate 1 rc1-1.0.0 (12/17/2008) ++ ++ ++Release Candidate 1 for CyaSSL 1.0.0 contains major internal changes. Several ++areas have optimization improvements, less dynamic memory use, and the I/O ++strategy has been refactored to allow alternate I/O handling or Library use. ++Many thanks to Thierry Fournier for providing these ideas and most of the work. ++ ++Because of these changes, this release is only a candidate since some problems ++are probably inevitable on some platform with some I/O use. Please report any ++problems and we'll try to resolve them as soon as possible. You can contact us ++at support@yassl.com or todd@yassl.com. ++ ++Using TomsFastMath by passing --enable-fastmath to ./configure now uses assembly ++on some platforms. This is new so please report any problems as every compiler, ++mode, OS combination hasn't been tested. On ia32 all of the registers need to ++be available so be sure to pass these options to CFLAGS: ++ ++`CFLAGS="-O3 -fomit-frame-pointer"` ++ ++OS X will also need -mdynamic-no-pic added to CFLAGS ++ ++Also if you're building in shared mode for ia32 you'll need to pass options to ++LDFLAGS as well on OS X: ++ ++`LDFLAGS=-Wl,-read_only_relocs,warning` ++ ++This gives warnings for some symbols but seems to work. ++ ++ ++#### To build on Linux, Solaris, *BSD, Mac OS X, or Cygwin: ++ ++ ./configure ++ make ++ ++ from the ./testsuite/ directory run ./testsuite ++ ++#### To make a debug build: ++ ++ ./configure --enable-debug --disable-shared ++ make ++ ++ ++ ++#### To build on Win32 ++ ++Choose (Re)Build All from the project workspace ++ ++Run the testsuite program ++ ++ ++ ++ ++ ++# CyaSSL version 0.9.9 (7/25/2008) ++ ++This release of CyaSSL adds bug fixes, Pre-Shared Keys, over-rideable memory ++handling, and optionally TomsFastMath. Thanks to Moisés Guimarães for the ++work on TomsFastMath. ++ ++To optionally use TomsFastMath pass --enable-fastmath to ./configure ++Or define USE_FAST_MATH in each project from CyaSSL for MSVC. ++ ++Please use the benchmark routine before and after to see the performance ++difference, on some platforms the gains will be little but RSA encryption ++always seems to be faster. On x86-64 machines with GCC the normal math library ++may outperform the fast one when using CFLAGS=-m64 because TomsFastMath can't ++yet use -m64 because of GCCs inability to do 128bit division. ++ ++ *** UPDATE GCC 4.2.1 can now do 128bit division *** ++ ++See notes below (0.2.0) for complete build instructions. ++ ++ ++# CyaSSL version 0.9.8 (5/7/2008) ++ ++This release of CyaSSL adds bug fixes, client side Diffie-Hellman, and better ++socket handling. ++ ++See notes below (0.2.0) for complete build instructions. ++ ++ ++# CyaSSL version 0.9.6 (1/31/2008) ++ ++This release of CyaSSL adds bug fixes, increased session management, and a fix ++for gnutls. ++ ++See notes below (0.2.0) for complete build instructions. ++ ++ ++# CyaSSL version 0.9.0 (10/15/2007) ++ ++This release of CyaSSL adds bug fixes, MSVC 2005 support, GCC 4.2 support, ++IPV6 support and test, and new test certificates. ++ ++See notes below (0.2.0) for complete build instructions. ++ ++ ++# CyaSSL version 0.8.0 (1/10/2007) ++ ++This release of CyaSSL adds increased socket support, for non-blocking writes, ++connects, and interrupted system calls. ++ ++See notes below (0.2.0) for complete build instructions. ++ ++ ++# CyaSSL version 0.6.3 (10/30/2006) ++ ++This release of CyaSSL adds debug logging to stderr to aid in the debugging of ++CyaSSL on systems that may not provide the best support. ++ ++If CyaSSL is built with debugging support then you need to call ++CyaSSL_Debugging_ON() to turn logging on. ++ ++On Unix use ./configure --enable-debug ++ ++On Windows define DEBUG_CYASSL when building CyaSSL ++ ++ ++To turn logging back off call CyaSSL_Debugging_OFF() ++ ++See notes below (0.2.0) for complete build instructions. ++ ++ ++# CyaSSL version 0.6.2 (10/29/2006) ++ ++This release of CyaSSL adds TLS 1.1. ++ ++Note that CyaSSL has certificate verification on by default, unlike OpenSSL. ++To emulate OpenSSL behavior, you must call SSL_CTX_set_verify() with ++SSL_VERIFY_NONE. In order to have full security you should never do this, ++provide CyaSSL with the proper certificates to eliminate impostors and call ++CyaSSL_check_domain_name() to prevent man in the middle attacks. ++ ++See notes below (0.2.0) for build instructions. ++ ++# CyaSSL version 0.6.0 (10/25/2006) ++ ++This release of CyaSSL adds more SSL functions, better autoconf, nonblocking ++I/O for accept, connect, and read. There is now an --enable-small configure ++option that turns off TLS, AES, DES3, HMAC, and ERROR_STRINGS, see configure.in ++for the defines. Note that TLS requires HMAC and AES requires TLS. ++ ++See notes below (0.2.0) for build instructions. ++ ++ ++# CyaSSL version 0.5.5 (09/27/2006) ++ ++This mini release of CyaSSL adds better input processing through buffered input ++and big message support. Added SSL_pending() and some sanity checks on user ++settings. ++ ++See notes below (0.2.0) for build instructions. ++ ++ ++# CyaSSL version 0.5.0 (03/27/2006) ++ ++This release of CyaSSL adds AES support and minor bug fixes. ++ ++See notes below (0.2.0) for build instructions. ++ ++ ++# CyaSSL version 0.4.0 (03/15/2006) ++ ++This release of CyaSSL adds TLSv1 client/server support and libtool. ++ ++See notes below for build instructions. ++ ++ ++# CyaSSL version 0.3.0 (02/26/2006) ++ ++This release of CyaSSL adds SSLv3 server support and session resumption. ++ ++See notes below for build instructions. ++ ++ ++# CyaSSL version 0.2.0 (02/19/2006) ++ ++ ++This is the first release of CyaSSL and its crypt brother, CTaoCrypt. CyaSSL ++is written in ANSI C with the idea of a small code size, footprint, and memory ++usage in mind. CTaoCrypt can be as small as 32K, and the current client ++version of CyaSSL can be as small as 12K. ++ ++ ++The first release of CTaoCrypt supports MD5, SHA-1, 3DES, ARC4, Big Integer ++Support, RSA, ASN parsing, and basic x509 (en/de)coding. ++ ++The first release of CyaSSL supports normal client RSA mode SSLv3 connections ++with support for SHA-1 and MD5 digests. Ciphers include 3DES and RC4. ++ ++ ++#### To build on Linux, Solaris, *BSD, Mac OS X, or Cygwin: ++ ++ ./configure ++ make ++ ++ from the ./testsuite/ directory run ./testsuite ++ ++#### to make a debug build: ++ ++ ./configure --enable-debug --disable-shared ++ make ++ ++ ++ ++#### To build on Win32 ++ ++Choose (Re)Build All from the project workspace ++ ++Run the testsuite program ++ ++ ++ ++*** The next release of CyaSSL will support a server and more OpenSSL ++compatibility functions. ++ ++ ++Please send questions or comments to todd@yassl.com +diff -ruNp mysql-5.6.23/extra/wolfssl/Vagrantfile mysql-5.6.23-wolfssl/extra/wolfssl/Vagrantfile +--- mysql-5.6.23/extra/wolfssl/Vagrantfile 1969-12-31 17:00:00.000000000 -0700 ++++ mysql-5.6.23-wolfssl/extra/wolfssl/Vagrantfile 2015-02-15 14:28:53.000000000 -0700 +@@ -0,0 +1,37 @@ ++# -*- mode: ruby -*- ++# vi: set ft=ruby : ++ ++$setup = <