From f5922255b0dc89f6439a5ee2873feb6b60815606 Mon Sep 17 00:00:00 2001 From: Takashi Kojo Date: Tue, 4 Mar 2014 22:09:38 +0900 Subject: [PATCH] Catching up 2.9.0 --- IDE/MDK5-ARM/MDK-ARM/CyaSSL/config.h | 64 - .../CryptBenchmark/RTE/wolfSSL/config-Crypt.h | 185 --- .../CryptBenchmark/RTE/wolfSSL/config.h | 61 - .../CryptTest/RTE/wolfSSL/config-Crypt.h | 185 --- .../Projects/CryptTest/RTE/wolfSSL/config.h | 61 - IDE/MDK5-ARM/Projects/CryptTest/test.c | 6 +- .../CyaSSL-Full/CyaSSL-Full.uvguix.kojo | 1342 ---------------- .../CyaSSL-Full/CyaSSL-Full_CyaSSL-Full.dep | 79 - .../Object/CyaSSL-Full.build_log.htm | 12 - .../CyaSSL-Full/RTE/wolfSSL/config-Crypt.h | 185 --- .../CyaSSL-Full/RTE/wolfSSL/config-CyaSSL.h | 144 -- .../Projects/CyaSSL-Full/RTE/wolfSSL/config.h | 64 - IDE/MDK5-ARM/Projects/CyaSSL-Full/client.c | 3 +- IDE/MDK5-ARM/Projects/CyaSSL-Full/server.c | 10 +- IDE/MDK5-ARM/Projects/CyaSSL-Full/test.c | 6 +- .../EchoClient/RTE/wolfSSL/config-Crypt.h | 185 --- .../EchoClient/RTE/wolfSSL/config-CyaSSL.h | 144 -- .../Projects/EchoClient/RTE/wolfSSL/config.h | 61 - .../EchoServer/RTE/wolfSSL/config-Crypt.h | 185 --- .../EchoServer/RTE/wolfSSL/config-CyaSSL.h | 144 -- .../Projects/EchoServer/RTE/wolfSSL/config.h | 61 - .../SimpleClient/RTE/wolfSSL/config-Crypt.h | 185 --- .../SimpleClient/RTE/wolfSSL/config-CyaSSL.h | 144 -- .../SimpleClient/RTE/wolfSSL/config.h | 61 - IDE/MDK5-ARM/Projects/SimpleClient/client.c | 3 +- .../SimpleClient/config-SimpleClient.h | 70 - .../SimpleServer/RTE/wolfSSL/config-Crypt.h | 185 --- .../SimpleServer/RTE/wolfSSL/config-CyaSSL.h | 144 -- .../SimpleServer/RTE/wolfSSL/config.h | 61 - IDE/MDK5-ARM/Projects/SimpleServer/server.c | 2 +- Makefile.am | 1 + README | 41 +- certs/crl/cliCrl.pem | 58 +- certs/crl/crl.pem | 52 +- certs/crl/crl.revoked | 54 +- certs/crl/eccCliCRL.pem | 28 +- certs/crl/eccSrvCRL.pem | 28 +- certs/crl/gencrls.sh | 10 +- configure.ac | 169 ++- ctaocrypt/benchmark/benchmark.c | 53 +- ctaocrypt/src/asm.c | 12 +- ctaocrypt/src/asn.c | 971 +++++++++--- ctaocrypt/src/coding.c | 154 +- ctaocrypt/src/ecc.c | 337 ++++- ctaocrypt/src/error.c | 20 + ctaocrypt/src/fp_sqr_comba_12.i | 4 +- ctaocrypt/src/fp_sqr_comba_17.i | 3 + ctaocrypt/src/fp_sqr_comba_3.i | 3 + ctaocrypt/src/fp_sqr_comba_4.i | 3 + ctaocrypt/src/fp_sqr_comba_6.i | 3 + ctaocrypt/src/fp_sqr_comba_7.i | 3 + ctaocrypt/src/fp_sqr_comba_8.i | 3 + ctaocrypt/src/fp_sqr_comba_9.i | 3 + ctaocrypt/src/integer.c | 2 +- ctaocrypt/src/md5.c | 32 +- ctaocrypt/src/pkcs7.c | 1348 +++++++++++++++++ ctaocrypt/src/pwdbased.c | 16 + ctaocrypt/src/random.c | 64 +- ctaocrypt/src/sha512.c | 26 +- ctaocrypt/test/test.c | 577 ++++++- cyassl-ntru.vcproj | 20 + cyassl.vcproj | 20 + cyassl/ctaocrypt/aes.h | 8 + cyassl/ctaocrypt/asn.h | 104 +- cyassl/ctaocrypt/asn_public.h | 27 +- cyassl/ctaocrypt/coding.h | 3 + cyassl/ctaocrypt/des3.h | 18 +- cyassl/ctaocrypt/ecc.h | 44 +- cyassl/ctaocrypt/error.h | 8 + cyassl/ctaocrypt/include.am | 1 + cyassl/ctaocrypt/integer.h | 5 +- cyassl/ctaocrypt/md5.h | 12 +- cyassl/ctaocrypt/pkcs7.h | 123 ++ cyassl/ctaocrypt/settings.h | 72 +- cyassl/ctaocrypt/sha.h | 10 +- cyassl/ctaocrypt/sha256.h | 7 + cyassl/ctaocrypt/tfm.h | 68 +- cyassl/ctaocrypt/types.h | 20 +- cyassl/include.am | 5 +- cyassl/internal.h | 126 +- cyassl/ocsp.h | 8 +- cyassl/ssl.h | 88 +- cyassl/version.h | 4 +- examples/client/client.c | 22 +- examples/echoclient/echoclient.c | 4 +- examples/echoserver/echoserver.c | 4 +- examples/server/server.c | 25 +- m4/ax_debug.m4 | 1 - m4/ax_tls.m4 | 76 + .../nbproject/configurations.xml | 22 - mcapi/ctaocrypt_test.X/main.c | 51 - .../nbproject/Makefile-default.mk | 164 ++ .../nbproject/Makefile-genesis.properties | 8 + .../nbproject/Makefile-impl.mk | 69 + .../nbproject/Makefile-local-default.mk | 37 + .../nbproject/Makefile-variables.mk | 13 + .../nbproject/Package-default.bash | 73 + .../nbproject/configurations.xml | 22 - mcapi/ctaocrypt_test.X/nbproject/include.am | 3 +- .../nbproject/private/private.xml | 6 + mcapi/cyassl.X/nbproject/Makefile-default.mk | 626 ++++++++ .../nbproject/Makefile-genesis.properties | 8 + mcapi/cyassl.X/nbproject/Makefile-impl.mk | 69 + .../nbproject/Makefile-local-default.mk | 37 + .../cyassl.X/nbproject/Makefile-variables.mk | 13 + mcapi/cyassl.X/nbproject/Package-default.bash | 73 + mcapi/cyassl.X/nbproject/include.am | 1 - mcapi/include.am | 7 +- mcapi/mcapi_test.c | 6 +- mcapi/zlib.X/nbproject/Makefile-default.mk | 314 ++++ .../nbproject/Makefile-genesis.properties | 8 + mcapi/zlib.X/nbproject/Makefile-impl.mk | 69 + .../nbproject/Makefile-local-default.mk | 37 + mcapi/zlib.X/nbproject/Makefile-variables.mk | 13 + mcapi/zlib.X/nbproject/Package-default.bash | 73 + mplabx/PIC32MZ-Putc.c | 10 - mplabx/benchmark_main.c | 7 + mplabx/crypto.h | 82 + .../nbproject/Makefile-default.mk | 162 ++ .../nbproject/Makefile-genesis.properties | 8 + .../nbproject/Makefile-impl.mk | 69 + .../nbproject/Makefile-local-default.mk | 37 + .../nbproject/Makefile-variables.mk | 13 + .../nbproject/Package-default.bash | 73 + .../nbproject/configurations.xml | 28 +- .../nbproject/include.am | 3 +- .../nbproject/private/private.xml | 3 + .../nbproject/Makefile-default.mk | 162 ++ .../nbproject/Makefile-genesis.properties | 8 + .../nbproject/Makefile-impl.mk | 69 + .../nbproject/Makefile-local-default.mk | 37 + .../nbproject/Makefile-variables.mk | 13 + .../nbproject/Package-default.bash | 73 + .../nbproject/configurations.xml | 29 +- mplabx/ctaocrypt_test.X/nbproject/include.am | 3 +- .../SuppressibleMessageMemo.properties | 3 + .../nbproject/private/private.xml | 3 + .../dist/default/production/cyassl.X.a | Bin 0 -> 236980 bytes mplabx/cyassl.X/nbproject/Makefile-default.mk | 590 ++++++++ .../nbproject/Makefile-genesis.properties | 8 + mplabx/cyassl.X/nbproject/Makefile-impl.mk | 69 + .../nbproject/Makefile-local-default.mk | 37 + .../cyassl.X/nbproject/Makefile-variables.mk | 13 + .../cyassl.X/nbproject/Package-default.bash | 73 + mplabx/cyassl.X/nbproject/configurations.xml | 29 +- mplabx/cyassl.X/nbproject/include.am | 1 - mplabx/cyassl.X/nbproject/private/private.xml | 3 + mplabx/cyassl.X/print_mem.c | 7 + mplabx/include.am | 10 + .../config-EchoClient.h => mplabx/ssl-dummy.c | 50 +- mplabx/test_main.c | 6 + src/include.am | 4 + src/internal.c | 286 +++- src/io.c | 129 +- src/ocsp.c | 321 ++-- src/sniffer.c | 7 + src/ssl.c | 749 +++++++-- src/tls.c | 490 +++++- sslSniffer/sslSnifferTest/include.am | 2 +- sslSniffer/sslSnifferTest/snifftest.c | 24 +- tests/api.c | 184 ++- tests/suites.c | 4 +- tests/unit.c | 6 +- testsuite/testsuite.c | 23 +- 164 files changed, 9606 insertions(+), 5289 deletions(-) delete mode 100644 IDE/MDK5-ARM/MDK-ARM/CyaSSL/config.h delete mode 100644 IDE/MDK5-ARM/Projects/CryptBenchmark/RTE/wolfSSL/config-Crypt.h delete mode 100644 IDE/MDK5-ARM/Projects/CryptBenchmark/RTE/wolfSSL/config.h delete mode 100644 IDE/MDK5-ARM/Projects/CryptTest/RTE/wolfSSL/config-Crypt.h delete mode 100644 IDE/MDK5-ARM/Projects/CryptTest/RTE/wolfSSL/config.h delete mode 100644 IDE/MDK5-ARM/Projects/CyaSSL-Full/CyaSSL-Full.uvguix.kojo delete mode 100644 IDE/MDK5-ARM/Projects/CyaSSL-Full/CyaSSL-Full_CyaSSL-Full.dep delete mode 100644 IDE/MDK5-ARM/Projects/CyaSSL-Full/Object/CyaSSL-Full.build_log.htm delete mode 100644 IDE/MDK5-ARM/Projects/CyaSSL-Full/RTE/wolfSSL/config-Crypt.h delete mode 100644 IDE/MDK5-ARM/Projects/CyaSSL-Full/RTE/wolfSSL/config-CyaSSL.h delete mode 100644 IDE/MDK5-ARM/Projects/CyaSSL-Full/RTE/wolfSSL/config.h delete mode 100644 IDE/MDK5-ARM/Projects/EchoClient/RTE/wolfSSL/config-Crypt.h delete mode 100644 IDE/MDK5-ARM/Projects/EchoClient/RTE/wolfSSL/config-CyaSSL.h delete mode 100644 IDE/MDK5-ARM/Projects/EchoClient/RTE/wolfSSL/config.h delete mode 100644 IDE/MDK5-ARM/Projects/EchoServer/RTE/wolfSSL/config-Crypt.h delete mode 100644 IDE/MDK5-ARM/Projects/EchoServer/RTE/wolfSSL/config-CyaSSL.h delete mode 100644 IDE/MDK5-ARM/Projects/EchoServer/RTE/wolfSSL/config.h delete mode 100644 IDE/MDK5-ARM/Projects/SimpleClient/RTE/wolfSSL/config-Crypt.h delete mode 100644 IDE/MDK5-ARM/Projects/SimpleClient/RTE/wolfSSL/config-CyaSSL.h delete mode 100644 IDE/MDK5-ARM/Projects/SimpleClient/RTE/wolfSSL/config.h delete mode 100644 IDE/MDK5-ARM/Projects/SimpleClient/config-SimpleClient.h delete mode 100644 IDE/MDK5-ARM/Projects/SimpleServer/RTE/wolfSSL/config-Crypt.h delete mode 100644 IDE/MDK5-ARM/Projects/SimpleServer/RTE/wolfSSL/config-CyaSSL.h delete mode 100644 IDE/MDK5-ARM/Projects/SimpleServer/RTE/wolfSSL/config.h create mode 100644 ctaocrypt/src/pkcs7.c create mode 100644 cyassl/ctaocrypt/pkcs7.h create mode 100644 m4/ax_tls.m4 delete mode 100644 mcapi/ctaocrypt_test.X/main.c create mode 100644 mcapi/ctaocrypt_test.X/nbproject/Makefile-default.mk create mode 100644 mcapi/ctaocrypt_test.X/nbproject/Makefile-genesis.properties create mode 100644 mcapi/ctaocrypt_test.X/nbproject/Makefile-impl.mk create mode 100644 mcapi/ctaocrypt_test.X/nbproject/Makefile-local-default.mk create mode 100644 mcapi/ctaocrypt_test.X/nbproject/Makefile-variables.mk create mode 100644 mcapi/ctaocrypt_test.X/nbproject/Package-default.bash create mode 100644 mcapi/ctaocrypt_test.X/nbproject/private/private.xml create mode 100644 mcapi/cyassl.X/nbproject/Makefile-default.mk create mode 100644 mcapi/cyassl.X/nbproject/Makefile-genesis.properties create mode 100644 mcapi/cyassl.X/nbproject/Makefile-impl.mk create mode 100644 mcapi/cyassl.X/nbproject/Makefile-local-default.mk create mode 100644 mcapi/cyassl.X/nbproject/Makefile-variables.mk create mode 100644 mcapi/cyassl.X/nbproject/Package-default.bash create mode 100644 mcapi/zlib.X/nbproject/Makefile-default.mk create mode 100644 mcapi/zlib.X/nbproject/Makefile-genesis.properties create mode 100644 mcapi/zlib.X/nbproject/Makefile-impl.mk create mode 100644 mcapi/zlib.X/nbproject/Makefile-local-default.mk create mode 100644 mcapi/zlib.X/nbproject/Makefile-variables.mk create mode 100644 mcapi/zlib.X/nbproject/Package-default.bash delete mode 100644 mplabx/PIC32MZ-Putc.c create mode 100644 mplabx/crypto.h create mode 100644 mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-default.mk create mode 100644 mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-genesis.properties create mode 100644 mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-impl.mk create mode 100644 mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-local-default.mk create mode 100644 mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-variables.mk create mode 100644 mplabx/ctaocrypt_benchmark.X/nbproject/Package-default.bash create mode 100644 mplabx/ctaocrypt_benchmark.X/nbproject/private/private.xml create mode 100644 mplabx/ctaocrypt_test.X/nbproject/Makefile-default.mk create mode 100644 mplabx/ctaocrypt_test.X/nbproject/Makefile-genesis.properties create mode 100644 mplabx/ctaocrypt_test.X/nbproject/Makefile-impl.mk create mode 100644 mplabx/ctaocrypt_test.X/nbproject/Makefile-local-default.mk create mode 100644 mplabx/ctaocrypt_test.X/nbproject/Makefile-variables.mk create mode 100644 mplabx/ctaocrypt_test.X/nbproject/Package-default.bash create mode 100644 mplabx/ctaocrypt_test.X/nbproject/private/SuppressibleMessageMemo.properties create mode 100644 mplabx/ctaocrypt_test.X/nbproject/private/private.xml create mode 100644 mplabx/cyassl.X/dist/default/production/cyassl.X.a create mode 100644 mplabx/cyassl.X/nbproject/Makefile-default.mk create mode 100644 mplabx/cyassl.X/nbproject/Makefile-genesis.properties create mode 100644 mplabx/cyassl.X/nbproject/Makefile-impl.mk create mode 100644 mplabx/cyassl.X/nbproject/Makefile-local-default.mk create mode 100644 mplabx/cyassl.X/nbproject/Makefile-variables.mk create mode 100644 mplabx/cyassl.X/nbproject/Package-default.bash create mode 100644 mplabx/cyassl.X/nbproject/private/private.xml create mode 100644 mplabx/cyassl.X/print_mem.c create mode 100644 mplabx/include.am rename IDE/MDK5-ARM/Projects/EchoClient/config-EchoClient.h => mplabx/ssl-dummy.c (54%) diff --git a/IDE/MDK5-ARM/MDK-ARM/CyaSSL/config.h b/IDE/MDK5-ARM/MDK-ARM/CyaSSL/config.h deleted file mode 100644 index 5115b2d1a..000000000 --- a/IDE/MDK5-ARM/MDK-ARM/CyaSSL/config.h +++ /dev/null @@ -1,64 +0,0 @@ -/* config.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 - -#define CYASSL_STM32F2xx - -#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 --git a/IDE/MDK5-ARM/Projects/CryptBenchmark/RTE/wolfSSL/config-Crypt.h b/IDE/MDK5-ARM/Projects/CryptBenchmark/RTE/wolfSSL/config-Crypt.h deleted file mode 100644 index a11c3ef24..000000000 --- a/IDE/MDK5-ARM/Projects/CryptBenchmark/RTE/wolfSSL/config-Crypt.h +++ /dev/null @@ -1,185 +0,0 @@ -/* config-FS.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 --git a/IDE/MDK5-ARM/Projects/CryptBenchmark/RTE/wolfSSL/config.h b/IDE/MDK5-ARM/Projects/CryptBenchmark/RTE/wolfSSL/config.h deleted file mode 100644 index 4c8fcb01c..000000000 --- a/IDE/MDK5-ARM/Projects/CryptBenchmark/RTE/wolfSSL/config.h +++ /dev/null @@ -1,61 +0,0 @@ -/* config.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 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 --git a/IDE/MDK5-ARM/Projects/CryptTest/RTE/wolfSSL/config-Crypt.h b/IDE/MDK5-ARM/Projects/CryptTest/RTE/wolfSSL/config-Crypt.h deleted file mode 100644 index a11c3ef24..000000000 --- a/IDE/MDK5-ARM/Projects/CryptTest/RTE/wolfSSL/config-Crypt.h +++ /dev/null @@ -1,185 +0,0 @@ -/* config-FS.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 --git a/IDE/MDK5-ARM/Projects/CryptTest/RTE/wolfSSL/config.h b/IDE/MDK5-ARM/Projects/CryptTest/RTE/wolfSSL/config.h deleted file mode 100644 index 4c8fcb01c..000000000 --- a/IDE/MDK5-ARM/Projects/CryptTest/RTE/wolfSSL/config.h +++ /dev/null @@ -1,61 +0,0 @@ -/* config.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 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 --git a/IDE/MDK5-ARM/Projects/CryptTest/test.c b/IDE/MDK5-ARM/Projects/CryptTest/test.c index 7ba1b0b39..086032ab7 100644 --- a/IDE/MDK5-ARM/Projects/CryptTest/test.c +++ b/IDE/MDK5-ARM/Projects/CryptTest/test.c @@ -2779,7 +2779,8 @@ int rsa_test(void) if (certSz < 0) return -407; - certSz = SignCert(&myCert, derCert, FOURK_BUF, &caKey, &rng); + certSz = SignCert(myCert.bodySz, myCert.sigType, derCert, FOURK_BUF, + &caKey, &rng); if (certSz < 0) return -408; @@ -2891,7 +2892,8 @@ int rsa_test(void) if (certSz < 0) return -456; - certSz = SignCert(&myCert, derCert, FOURK_BUF, &caKey, &rng); + certSz = SignCert(myCert.bodySz, myCert.sigType, derCert, FOURK_BUF, + &caKey, &rng); if (certSz < 0) return -457; diff --git a/IDE/MDK5-ARM/Projects/CyaSSL-Full/CyaSSL-Full.uvguix.kojo b/IDE/MDK5-ARM/Projects/CyaSSL-Full/CyaSSL-Full.uvguix.kojo deleted file mode 100644 index 6bb8a7870..000000000 --- a/IDE/MDK5-ARM/Projects/CyaSSL-Full/CyaSSL-Full.uvguix.kojo +++ /dev/null @@ -1,1342 +0,0 @@ - - - - -4.1 - -
### uVision Project, (C) Keil Software
- - - - - - 38003 - Registers - 115 159 - - - 346 - Code Coverage - 966 160 - - - 204 - Performance Analyzer - 1126 - - - - - - 1506 - Symbols - - 133 133 133 - - - 1936 - Watch 1 - - 133 133 133 - - - 1937 - Watch 2 - - 133 133 133 - - - 1935 - Call Stack + Locals - - 133 133 133 - - - 2506 - Trace Data - - 75 135 130 95 70 230 200 - - - - - - 1 - 1 - 0 - - - - - - - 44 - 0 - 1 - - -1 - -1 - - - -1 - -1 - - - 148 - 32 - 1713 - 1071 - - - - 0 - - 60 - 010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000000000000 - - - - 0 - Build - - -1 - -1 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 200100004F00000090050000DF000000 - - - 16 - 8A000000A10000005203000031010000 - - - - 1005 - 1005 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000660000001901000048030000 - - - 16 - 8A000000A1000000A6010000E1020000 - - - - 109 - 109 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000660000001901000048030000 - - - 16 - 8A000000A1000000A6010000E1020000 - - - - 1465 - 1465 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 000000002D02000090050000BD020000 - - - 16 - 8A000000A10000005203000031010000 - - - - 1466 - 1466 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D05000090020000 - - - 16 - 8A000000A10000005203000031010000 - - - - 1467 - 1467 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D05000090020000 - - - 16 - 8A000000A10000005203000031010000 - - - - 1468 - 1468 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D05000090020000 - - - 16 - 8A000000A10000005203000031010000 - - - - 1506 - 1506 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - 03040000660000008D050000C6010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 1913 - 1913 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 200100006300000090050000DF000000 - - - 16 - 8A000000A10000005203000031010000 - - - - 1935 - 1935 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 03000000300200008D050000A4020000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 1936 - 1936 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D05000090020000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 1937 - 1937 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D05000090020000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 1939 - 1939 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D05000090020000 - - - 16 - 8A000000A10000005203000031010000 - - - - 1940 - 1940 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D05000090020000 - - - 16 - 8A000000A10000005203000031010000 - - - - 1941 - 1941 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D05000090020000 - - - 16 - 8A000000A10000005203000031010000 - - - - 1942 - 1942 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D05000090020000 - - - 16 - 8A000000A10000005203000031010000 - - - - 195 - 195 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000660000001901000048030000 - - - 16 - 8A000000A1000000A6010000E1020000 - - - - 196 - 196 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000660000001901000048030000 - - - 16 - 8A000000A1000000A6010000E1020000 - - - - 197 - 197 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 000000004102000090050000BD020000 - - - 16 - 8A000000A10000005203000031010000 - - - - 198 - 198 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 000000001902000090050000BD020000 - - - 16 - 8A000000A10000005203000031010000 - - - - 199 - 199 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000440200008D050000A4020000 - - - 16 - 8A000000A10000005203000031010000 - - - - 203 - 203 - 0 - 0 - 0 - 0 - 32767 - 0 - 8192 - 0 - - 16 - 200100006300000090050000DF000000 - - - 16 - 8A000000A10000005203000031010000 - - - - 204 - 204 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 23010000660000008D050000C6000000 - - - 16 - 8A000000A10000005203000031010000 - - - - 221 - 221 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 00000000000000000000000000000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 2506 - 2506 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 00040000630000009005000029020000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 2507 - 2507 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 000000002D02000090050000A9020000 - - - 16 - 8A000000A10000005203000031010000 - - - - 343 - 343 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 23010000660000008D050000C6000000 - - - 16 - 8A000000A10000005203000031010000 - - - - 346 - 346 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 23010000660000008D050000C6000000 - - - 16 - 8A000000A10000005203000031010000 - - - - 35824 - 35824 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 23010000660000008D050000C6000000 - - - 16 - 8A000000A10000005203000031010000 - - - - 35885 - 35885 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35886 - 35886 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35887 - 35887 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35888 - 35888 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35889 - 35889 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35890 - 35890 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35891 - 35891 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35892 - 35892 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35893 - 35893 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35894 - 35894 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35895 - 35895 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35896 - 35896 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35897 - 35897 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35898 - 35898 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35899 - 35899 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35900 - 35900 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35901 - 35901 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35902 - 35902 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35903 - 35903 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35904 - 35904 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 35905 - 35905 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03040000660000008D0500007C010000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 38003 - 38003 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000019010000A4020000 - - - 16 - 8A000000A1000000A6010000E1020000 - - - - 38007 - 38007 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 000000004102000090050000BD020000 - - - 16 - 8A000000A10000005203000031010000 - - - - 436 - 436 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000440200008D050000A4020000 - - - 16 - 8A000000A1000000A6010000E1020000 - - - - 437 - 437 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D05000090020000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 440 - 440 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D05000090020000 - - - 16 - 8A000000A10000001A02000031020000 - - - - 59392 - 59392 - 1 - 0 - 0 - 0 - 32767 - 0 - 8192 - 0 - - 16 - 0000000000000000B70300001C000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59393 - 0 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 00000000610300008106000074030000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59399 - 59399 - 1 - 0 - 0 - 0 - 32767 - 0 - 8192 - 1 - - 16 - 000000001C000000C201000038000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59400 - 59400 - 0 - 0 - 0 - 0 - 32767 - 0 - 8192 - 2 - - 16 - 00000000380000006F02000054000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 2619 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF20010000DF00000090050000E3000000000000000100001004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E6500200000000000008A000000A10000005203000031010000200100004F00000090050000DF0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFFC0300004F0000000004000029020000000000000200001004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C0000018000400000000000008A000000A10000001A02000031020000000400004F00000090050000290200000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF1C0100004F0000002001000061030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000008A000000A1000000A6010000E1020000000000004F0000001C010000610300000000000040140056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB090000018000400000000000008A000000A10000001A02000031020000000000001902000090050000BD02000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF0000000029020000900500002D020000000000000100001004000000010000000000000000000000FFFFFFFF04000000C5000000C7000000B401000077940000018000800000000000008A000000A10000005203000031010000000000002D02000090050000BD0200000000000040820046040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 - - - 59392 - File - - 2002 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000400020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000400000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000000000000010000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65FF7F0000 - - - 1423 - 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 1423 - 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 - - - - 59399 - Build - - 649 - 00200000010000000F00FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000004001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000B43796153534C2D46756C6C960000000000000001000B43796153534C2D46756C6C000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E0000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64FF7F0000 - - - 548 - 0F00FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 548 - 0F00FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A0000000000000000000000000000000001000000010000000180BE010000000000000B000000000000000000000000000000000100000001000000 - - - - 59400 - Debug - - 2220 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000000000000100000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000000000000100000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000000000000100000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000000000000100000001000000000000000000000001000000000000000000054465627567FF7F0000 - - - 898 - 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 898 - 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 - - - - 0 - 1920 - 1080 - - - - - - -
diff --git a/IDE/MDK5-ARM/Projects/CyaSSL-Full/CyaSSL-Full_CyaSSL-Full.dep b/IDE/MDK5-ARM/Projects/CyaSSL-Full/CyaSSL-Full_CyaSSL-Full.dep deleted file mode 100644 index 966cbe457..000000000 --- a/IDE/MDK5-ARM/Projects/CyaSSL-Full/CyaSSL-Full_CyaSSL-Full.dep +++ /dev/null @@ -1,79 +0,0 @@ -Dependencies for Project 'CyaSSL-Full', Target 'CyaSSL-Full': (DO NOT MODIFY !) -F (.\main.c)(0x52675C4A)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\main.o --omf_browse .\object\main.crf --depend .\object\main.d) -F (.\shell.c)(0x523B984C)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\shell.o --omf_browse .\object\shell.crf --depend .\object\shell.d) -F (.\test.c)(0x524E6E34)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\test.o --omf_browse .\object\test.crf --depend .\object\test.d) -F (.\benchmark.c)(0x5232780E)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\benchmark.o --omf_browse .\object\benchmark.crf --depend .\object\benchmark.d) -F (.\client.c)(0x523AC4A0)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\client.o --omf_browse .\object\client.crf --depend .\object\client.d) -F (.\echoclient.c)(0x523277E2)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\echoclient.o --omf_browse .\object\echoclient.crf --depend .\object\echoclient.d) -F (.\echoserver.c)(0x523277D4)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\echoserver.o --omf_browse .\object\echoserver.crf --depend .\object\echoserver.d) -F (.\server.c)(0x523AC4BA)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\server.o --omf_browse .\object\server.crf --depend .\object\server.d) -F (.\cert_data.c)(0x523277FE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\cert_data.o --omf_browse .\object\cert_data.crf --depend .\object\cert_data.d) -F (.\RTE\wolfSSL\config-CyaSSL.h)(0x523279FE)() -F (.\RTE\wolfSSL\config-Crypt.h)(0x52327A08)() -F (.\Abstract.txt)(0x526765CD)() -F (C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\Lib\ARM\RTX_CM3.lib)(0x5244BA9A)() -F (RTE\CMSIS\RTX_Conf_CM.c)(0x522BC824)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\rtx_conf_cm.o --omf_browse .\object\rtx_conf_cm.crf --depend .\object\rtx_conf_cm.d) -F (C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver\DMA_STM32F2xx.c)(0x520AB72C)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\dma_stm32f2xx.o --omf_browse .\object\dma_stm32f2xx.crf --depend .\object\dma_stm32f2xx.d) -F (C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver\GPIO_STM32F2xx.c)(0x514117F8)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\gpio_stm32f2xx.o --omf_browse .\object\gpio_stm32f2xx.crf --depend .\object\gpio_stm32f2xx.d) -F (RTE\Device\STM32F207IG\RTE_Device.h)(0x520C57EA)() -F (RTE\Device\STM32F207IG\startup_stm32f2xx.s)(0x524C04BE)(--cpu Cortex-M3 --pd "__RTX SETA 1" -g --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL --list .\object\startup_stm32f2xx.lst --xref -o .\object\startup_stm32f2xx.o --depend .\object\startup_stm32f2xx.d) -F (RTE\Device\STM32F207IG\system_stm32f2xx.c)(0x4E640246)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\system_stm32f2xx.o --omf_browse .\object\system_stm32f2xx.crf --depend .\object\system_stm32f2xx.d) -F (C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Driver\PHY_ST802RT1.c)(0x52411D22)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\phy_st802rt1.o --omf_browse .\object\phy_st802rt1.crf --depend .\object\phy_st802rt1.d) -F (C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver\EMAC_STM32F2xx.c)(0x52328C8E)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\emac_stm32f2xx.o --omf_browse .\object\emac_stm32f2xx.crf --depend .\object\emac_stm32f2xx.d) -F (C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver\MCI_STM32F2xx.c)(0x52324BC0)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\mci_stm32f2xx.o --omf_browse .\object\mci_stm32f2xx.crf --depend .\object\mci_stm32f2xx.d) -F (C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Lib\ARM\FS_LFN_CM3_L.lib)(0x524362F0)() -F (RTE\File_System\FS_Config.c)(0x51CBD1D2)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\fs_config.o --omf_browse .\object\fs_config.crf --depend .\object\fs_config.d) -F (RTE\File_System\FS_Config_MC_0.h)(0x520C36F0)() -F (C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Lib\ARM\Net_Dbg_CM3_L.lib)(0x524B8A0E)() -F (RTE\Network\Net_Config.c)(0x520C5816)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\net_config.o --omf_browse .\object\net_config.crf --depend .\object\net_config.d) -F (RTE\Network\Net_Config_BSD.h)(0x52326150)() -F (RTE\Network\Net_Config_DNS_Client.h)(0x51CBD1D2)() -F (RTE\Network\Net_Config_ETH_0.h)(0x520C56DC)() -F (RTE\Network\Net_Config_TCP.h)(0x52326152)() -F (RTE\Network\Net_Config_UDP.h)(0x52326152)() -F (RTE\Network\Net_Debug.c)(0x523BA1F2)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\net_debug.o --omf_browse .\object\net_debug.crf --depend .\object\net_debug.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL\cyassl_MDK_ARM.c)(0x523AC74C)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\cyassl_mdk_arm.o --omf_browse .\object\cyassl_mdk_arm.crf --depend .\object\cyassl_mdk_arm.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\STM32F2xx_StdPeriph_Lib\time-STM32F2xx.c)(0x525754AE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\time-stm32f2xx.o --omf_browse .\object\time-stm32f2xx.crf --depend .\object\time-stm32f2xx.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\aes.c)(0x5216DBDE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\aes.o --omf_browse .\object\aes.crf --depend .\object\aes.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\arc4.c)(0x5164C8AE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\arc4.o --omf_browse .\object\arc4.crf --depend .\object\arc4.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\asm.c)(0x5164C8AE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\asm.o --omf_browse .\object\asm.crf --depend .\object\asm.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\asn.c)(0x52329E8A)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\asn.o --omf_browse .\object\asn.crf --depend .\object\asn.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\blake2b.c)(0x5164C8AE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\blake2b.o --omf_browse .\object\blake2b.crf --depend .\object\blake2b.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\camellia.c)(0x51DA2952)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\camellia.o --omf_browse .\object\camellia.crf --depend .\object\camellia.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\coding.c)(0x5164C8AE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\coding.o --omf_browse .\object\coding.crf --depend .\object\coding.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\compress.c)(0x5164C8AE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\compress.o --omf_browse .\object\compress.crf --depend .\object\compress.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\des3.c)(0x51DA2952)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\des3.o --omf_browse .\object\des3.crf --depend .\object\des3.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\dh.c)(0x5164C8AE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\dh.o --omf_browse .\object\dh.crf --depend .\object\dh.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\dsa.c)(0x5164C8AE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\dsa.o --omf_browse .\object\dsa.crf --depend .\object\dsa.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\ecc.c)(0x5215D7AC)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\ecc.o --omf_browse .\object\ecc.crf --depend .\object\ecc.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\ecc_fp.c)(0x4FBF1BB4)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\ecc_fp.o --omf_browse .\object\ecc_fp.crf --depend .\object\ecc_fp.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\error.c)(0x520063E0)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\error.o --omf_browse .\object\error.crf --depend .\object\error.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\hc128.c)(0x51DA2952)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\hc128.o --omf_browse .\object\hc128.crf --depend .\object\hc128.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\hmac.c)(0x51942D42)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\hmac.o --omf_browse .\object\hmac.crf --depend .\object\hmac.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\integer.c)(0x51F0CCBE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\integer.o --omf_browse .\object\integer.crf --depend .\object\integer.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\logging.c)(0x51942D42)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\logging.o --omf_browse .\object\logging.crf --depend .\object\logging.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\md2.c)(0x5164C8AE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\md2.o --omf_browse .\object\md2.crf --depend .\object\md2.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\md4.c)(0x5164C8AE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\md4.o --omf_browse .\object\md4.crf --depend .\object\md4.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\md5.c)(0x51942D42)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\md5.o --omf_browse .\object\md5.crf --depend .\object\md5.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\memory.c)(0x523ABC8A)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\memory.o --omf_browse .\object\memory.crf --depend .\object\memory.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\misc.c)(0x51942D42)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\misc.o --omf_browse .\object\misc.crf --depend .\object\misc.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\pwdbased.c)(0x51942D42)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\pwdbased.o --omf_browse .\object\pwdbased.crf --depend .\object\pwdbased.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\rabbit.c)(0x51DA2952)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\rabbit.o --omf_browse .\object\rabbit.crf --depend .\object\rabbit.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\random.c)(0x51BA9FE8)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\random.o --omf_browse .\object\random.crf --depend .\object\random.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\ripemd.c)(0x5164C8AE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\ripemd.o --omf_browse .\object\ripemd.crf --depend .\object\ripemd.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\rsa.c)(0x5164C8AE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\rsa.o --omf_browse .\object\rsa.crf --depend .\object\rsa.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\sha.c)(0x51942D42)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\sha.o --omf_browse .\object\sha.crf --depend .\object\sha.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\sha256.c)(0x5164C8AE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\sha256.o --omf_browse .\object\sha256.crf --depend .\object\sha256.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\sha512.c)(0x5164C8AE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\sha512.o --omf_browse .\object\sha512.crf --depend .\object\sha512.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\ctaocrypt\src\tfm.c)(0x51F0CCBE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\tfm.o --omf_browse .\object\tfm.crf --depend .\object\tfm.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\src\crl.c)(0x5164C8AE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\crl.o --omf_browse .\object\crl.crf --depend .\object\crl.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\src\internal.c)(0x52663ACA)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\internal.o --omf_browse .\object\internal.crf --depend .\object\internal.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\src\io.c)(0x5232A8CE)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\io.o --omf_browse .\object\io.crf --depend .\object\io.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\src\keys.c)(0x521C327A)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\keys.o --omf_browse .\object\keys.crf --depend .\object\keys.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\src\ocsp.c)(0x51C7D2F0)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\ocsp.o --omf_browse .\object\ocsp.crf --depend .\object\ocsp.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\src\sniffer.c)(0x5204A7E4)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\sniffer.o --omf_browse .\object\sniffer.crf --depend .\object\sniffer.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\src\ssl.c)(0x524BE6BC)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\ssl.o --omf_browse .\object\ssl.crf --depend .\object\ssl.d) -F (C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\src\tls.c)(0x524E69A6)(-c --cpu Cortex-M3 -D__RTX -g -O3 --apcs=interwork -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\Device\STM32F207IG -I C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\RTE\wolfSSL -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Driver\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -I C:\Keil5\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS_RTX\INC -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\FileSystem\Include -I C:\Keil5\ARM\PACK\Keil\MDK-Middleware\5.1.2\Network\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\Device\Include -I C:\Keil5\ARM\PACK\Keil\STM32F2xx_DFP\1.0.4\RTE_Driver -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl -I C:\Keil5\ARM\PACK\wolfSSL\CyaSSL\2.8.0\cyassl\IDE\MDK5-ARM\MDK-ARM\CyaSSL -D_RTE_ -DSTM32F2XX -DHAVE_CONFIG_H -D__DBG_ITM -D__RTX -DMDK_CONF_CYASSL -DCYASSL_STM32F2xx -o .\object\tls.o --omf_browse .\object\tls.crf --depend .\object\tls.d) -F (RTE\wolfSSL\config-Crypt.h)(0x52327A08)() -F (RTE\wolfSSL\config-CyaSSL.h)(0x523279FE)() -F (RTE\wolfSSL\config.h)(0x524BE316)() diff --git a/IDE/MDK5-ARM/Projects/CyaSSL-Full/Object/CyaSSL-Full.build_log.htm b/IDE/MDK5-ARM/Projects/CyaSSL-Full/Object/CyaSSL-Full.build_log.htm deleted file mode 100644 index dc05157d2..000000000 --- a/IDE/MDK5-ARM/Projects/CyaSSL-Full/Object/CyaSSL-Full.build_log.htm +++ /dev/null @@ -1,12 +0,0 @@ - - -
-

µVision Build Log

-

Project:

-C:\ROOT\CyaSSL-Release\MDK5-Pack-2.8.0\wolfSSL.CyaSSL\cyassl\IDE\MDK5-ARM\Projects\CyaSSL-Full\CyaSSL-Full.uvprojx -Project File Date: 10/23/2013 - -

Output:

-
- - diff --git a/IDE/MDK5-ARM/Projects/CyaSSL-Full/RTE/wolfSSL/config-Crypt.h b/IDE/MDK5-ARM/Projects/CyaSSL-Full/RTE/wolfSSL/config-Crypt.h deleted file mode 100644 index a11c3ef24..000000000 --- a/IDE/MDK5-ARM/Projects/CyaSSL-Full/RTE/wolfSSL/config-Crypt.h +++ /dev/null @@ -1,185 +0,0 @@ -/* config-FS.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 --git a/IDE/MDK5-ARM/Projects/CyaSSL-Full/RTE/wolfSSL/config-CyaSSL.h b/IDE/MDK5-ARM/Projects/CyaSSL-Full/RTE/wolfSSL/config-CyaSSL.h deleted file mode 100644 index 02ba94bd4..000000000 --- a/IDE/MDK5-ARM/Projects/CyaSSL-Full/RTE/wolfSSL/config-CyaSSL.h +++ /dev/null @@ -1,144 +0,0 @@ -/* config-RTX-TCP-FS.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 --git a/IDE/MDK5-ARM/Projects/CyaSSL-Full/RTE/wolfSSL/config.h b/IDE/MDK5-ARM/Projects/CyaSSL-Full/RTE/wolfSSL/config.h deleted file mode 100644 index 5115b2d1a..000000000 --- a/IDE/MDK5-ARM/Projects/CyaSSL-Full/RTE/wolfSSL/config.h +++ /dev/null @@ -1,64 +0,0 @@ -/* config.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 - -#define CYASSL_STM32F2xx - -#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 --git a/IDE/MDK5-ARM/Projects/CyaSSL-Full/client.c b/IDE/MDK5-ARM/Projects/CyaSSL-Full/client.c index 2fd81fe2a..608a32457 100644 --- a/IDE/MDK5-ARM/Projects/CyaSSL-Full/client.c +++ b/IDE/MDK5-ARM/Projects/CyaSSL-Full/client.c @@ -469,7 +469,8 @@ THREAD_RETURN CYASSL_THREAD client_test(void* args) #ifdef HAVE_SNI if (sniHostName) - if (CyaSSL_CTX_UseSNI(ctx, 0, sniHostName, XSTRLEN(sniHostName))) + if (CyaSSL_CTX_UseSNI(ctx, 0, sniHostName, XSTRLEN(sniHostName)) + != SSL_SUCCESS) err_sys("UseSNI failed"); #endif diff --git a/IDE/MDK5-ARM/Projects/CyaSSL-Full/server.c b/IDE/MDK5-ARM/Projects/CyaSSL-Full/server.c index 8e155f30a..aeecd62fb 100644 --- a/IDE/MDK5-ARM/Projects/CyaSSL-Full/server.c +++ b/IDE/MDK5-ARM/Projects/CyaSSL-Full/server.c @@ -347,6 +347,10 @@ THREAD_RETURN CYASSL_THREAD server_test(void* args) usePsk = 1; #endif +#ifdef OPENSSL_EXTRA + SSL_CTX_set_default_passwd_cb(ctx, PasswordCallBack); +#endif + if (fewerPackets) CyaSSL_CTX_set_group_messages(ctx); @@ -404,10 +408,6 @@ THREAD_RETURN CYASSL_THREAD server_test(void* args) } #endif -#ifdef OPENSSL_EXTRA - SSL_CTX_set_default_passwd_cb(ctx, PasswordCallBack); -#endif - #if defined(CYASSL_SNIFFER) && !defined(HAVE_NTRU) && !defined(HAVE_ECC) /* don't use EDH, can't sniff tmp keys */ if (cipherList == NULL) { @@ -419,7 +419,7 @@ THREAD_RETURN CYASSL_THREAD server_test(void* args) #ifdef HAVE_SNI if (sniHostName) { if (CyaSSL_CTX_UseSNI(ctx, CYASSL_SNI_HOST_NAME, sniHostName, - XSTRLEN(sniHostName))) + XSTRLEN(sniHostName)) != SSL_SUCCESS) err_sys("UseSNI failed"); else CyaSSL_CTX_SNI_SetOptions(ctx, CYASSL_SNI_HOST_NAME, diff --git a/IDE/MDK5-ARM/Projects/CyaSSL-Full/test.c b/IDE/MDK5-ARM/Projects/CyaSSL-Full/test.c index 6165cee31..22b4070eb 100644 --- a/IDE/MDK5-ARM/Projects/CyaSSL-Full/test.c +++ b/IDE/MDK5-ARM/Projects/CyaSSL-Full/test.c @@ -2550,7 +2550,8 @@ int rsa_test(void) if (certSz < 0) return -407; - certSz = SignCert(&myCert, derCert, FOURK_BUF, &caKey, &rng); + certSz = SignCert(myCert.bodySz, myCert.sigType, derCert, FOURK_BUF, + &caKey, &rng); if (certSz < 0) return -408; @@ -2662,7 +2663,8 @@ int rsa_test(void) if (certSz < 0) return -456; - certSz = SignCert(&myCert, derCert, FOURK_BUF, &caKey, &rng); + certSz = SignCert(myCert.bodySz, myCert.sigType, derCert, FOURK_BUF, + &caKey, &rng); if (certSz < 0) return -457; diff --git a/IDE/MDK5-ARM/Projects/EchoClient/RTE/wolfSSL/config-Crypt.h b/IDE/MDK5-ARM/Projects/EchoClient/RTE/wolfSSL/config-Crypt.h deleted file mode 100644 index a11c3ef24..000000000 --- a/IDE/MDK5-ARM/Projects/EchoClient/RTE/wolfSSL/config-Crypt.h +++ /dev/null @@ -1,185 +0,0 @@ -/* config-FS.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 --git a/IDE/MDK5-ARM/Projects/EchoClient/RTE/wolfSSL/config-CyaSSL.h b/IDE/MDK5-ARM/Projects/EchoClient/RTE/wolfSSL/config-CyaSSL.h deleted file mode 100644 index 02ba94bd4..000000000 --- a/IDE/MDK5-ARM/Projects/EchoClient/RTE/wolfSSL/config-CyaSSL.h +++ /dev/null @@ -1,144 +0,0 @@ -/* config-RTX-TCP-FS.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 --git a/IDE/MDK5-ARM/Projects/EchoClient/RTE/wolfSSL/config.h b/IDE/MDK5-ARM/Projects/EchoClient/RTE/wolfSSL/config.h deleted file mode 100644 index 4c8fcb01c..000000000 --- a/IDE/MDK5-ARM/Projects/EchoClient/RTE/wolfSSL/config.h +++ /dev/null @@ -1,61 +0,0 @@ -/* config.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 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 --git a/IDE/MDK5-ARM/Projects/EchoServer/RTE/wolfSSL/config-Crypt.h b/IDE/MDK5-ARM/Projects/EchoServer/RTE/wolfSSL/config-Crypt.h deleted file mode 100644 index a11c3ef24..000000000 --- a/IDE/MDK5-ARM/Projects/EchoServer/RTE/wolfSSL/config-Crypt.h +++ /dev/null @@ -1,185 +0,0 @@ -/* config-FS.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 --git a/IDE/MDK5-ARM/Projects/EchoServer/RTE/wolfSSL/config-CyaSSL.h b/IDE/MDK5-ARM/Projects/EchoServer/RTE/wolfSSL/config-CyaSSL.h deleted file mode 100644 index 02ba94bd4..000000000 --- a/IDE/MDK5-ARM/Projects/EchoServer/RTE/wolfSSL/config-CyaSSL.h +++ /dev/null @@ -1,144 +0,0 @@ -/* config-RTX-TCP-FS.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 --git a/IDE/MDK5-ARM/Projects/EchoServer/RTE/wolfSSL/config.h b/IDE/MDK5-ARM/Projects/EchoServer/RTE/wolfSSL/config.h deleted file mode 100644 index 4c8fcb01c..000000000 --- a/IDE/MDK5-ARM/Projects/EchoServer/RTE/wolfSSL/config.h +++ /dev/null @@ -1,61 +0,0 @@ -/* config.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 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 --git a/IDE/MDK5-ARM/Projects/SimpleClient/RTE/wolfSSL/config-Crypt.h b/IDE/MDK5-ARM/Projects/SimpleClient/RTE/wolfSSL/config-Crypt.h deleted file mode 100644 index a11c3ef24..000000000 --- a/IDE/MDK5-ARM/Projects/SimpleClient/RTE/wolfSSL/config-Crypt.h +++ /dev/null @@ -1,185 +0,0 @@ -/* config-FS.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 --git a/IDE/MDK5-ARM/Projects/SimpleClient/RTE/wolfSSL/config-CyaSSL.h b/IDE/MDK5-ARM/Projects/SimpleClient/RTE/wolfSSL/config-CyaSSL.h deleted file mode 100644 index 02ba94bd4..000000000 --- a/IDE/MDK5-ARM/Projects/SimpleClient/RTE/wolfSSL/config-CyaSSL.h +++ /dev/null @@ -1,144 +0,0 @@ -/* config-RTX-TCP-FS.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 --git a/IDE/MDK5-ARM/Projects/SimpleClient/RTE/wolfSSL/config.h b/IDE/MDK5-ARM/Projects/SimpleClient/RTE/wolfSSL/config.h deleted file mode 100644 index 4c8fcb01c..000000000 --- a/IDE/MDK5-ARM/Projects/SimpleClient/RTE/wolfSSL/config.h +++ /dev/null @@ -1,61 +0,0 @@ -/* config.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 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 --git a/IDE/MDK5-ARM/Projects/SimpleClient/client.c b/IDE/MDK5-ARM/Projects/SimpleClient/client.c index 07cf20bea..e6f6a56e3 100644 --- a/IDE/MDK5-ARM/Projects/SimpleClient/client.c +++ b/IDE/MDK5-ARM/Projects/SimpleClient/client.c @@ -471,7 +471,8 @@ THREAD_RETURN CYASSL_THREAD client_test(void* args) #ifdef HAVE_SNI if (sniHostName) - if (CyaSSL_CTX_UseSNI(ctx, 0, sniHostName, XSTRLEN(sniHostName))) + if (CyaSSL_CTX_UseSNI(ctx, 0, sniHostName, XSTRLEN(sniHostName)) + != SSL_SUCCESS) err_sys("UseSNI failed"); #endif diff --git a/IDE/MDK5-ARM/Projects/SimpleClient/config-SimpleClient.h b/IDE/MDK5-ARM/Projects/SimpleClient/config-SimpleClient.h deleted file mode 100644 index 966c7fb66..000000000 --- a/IDE/MDK5-ARM/Projects/SimpleClient/config-SimpleClient.h +++ /dev/null @@ -1,70 +0,0 @@ -/* config-RTX-TCP-FS.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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.2.101" -// 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 0 -#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 --git a/IDE/MDK5-ARM/Projects/SimpleServer/RTE/wolfSSL/config-Crypt.h b/IDE/MDK5-ARM/Projects/SimpleServer/RTE/wolfSSL/config-Crypt.h deleted file mode 100644 index a11c3ef24..000000000 --- a/IDE/MDK5-ARM/Projects/SimpleServer/RTE/wolfSSL/config-Crypt.h +++ /dev/null @@ -1,185 +0,0 @@ -/* config-FS.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 --git a/IDE/MDK5-ARM/Projects/SimpleServer/RTE/wolfSSL/config-CyaSSL.h b/IDE/MDK5-ARM/Projects/SimpleServer/RTE/wolfSSL/config-CyaSSL.h deleted file mode 100644 index 02ba94bd4..000000000 --- a/IDE/MDK5-ARM/Projects/SimpleServer/RTE/wolfSSL/config-CyaSSL.h +++ /dev/null @@ -1,144 +0,0 @@ -/* config-RTX-TCP-FS.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 --git a/IDE/MDK5-ARM/Projects/SimpleServer/RTE/wolfSSL/config.h b/IDE/MDK5-ARM/Projects/SimpleServer/RTE/wolfSSL/config.h deleted file mode 100644 index 4c8fcb01c..000000000 --- a/IDE/MDK5-ARM/Projects/SimpleServer/RTE/wolfSSL/config.h +++ /dev/null @@ -1,61 +0,0 @@ -/* config.h - * - * Copyright (C) 2006-2013 wolfSSL Inc. - * - * This file is part of CyaSSL. - * - * CyaSSL 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. - * - * CyaSSL 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 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 --git a/IDE/MDK5-ARM/Projects/SimpleServer/server.c b/IDE/MDK5-ARM/Projects/SimpleServer/server.c index de53738e8..ecc9b510b 100644 --- a/IDE/MDK5-ARM/Projects/SimpleServer/server.c +++ b/IDE/MDK5-ARM/Projects/SimpleServer/server.c @@ -418,7 +418,7 @@ THREAD_RETURN CYASSL_THREAD server_test(void* args) #ifdef HAVE_SNI if (sniHostName) { if (CyaSSL_CTX_UseSNI(ctx, CYASSL_SNI_HOST_NAME, sniHostName, - XSTRLEN(sniHostName))) + XSTRLEN(sniHostName)) != SSL_SUCCESS) err_sys("UseSNI failed"); else CyaSSL_CTX_SNI_SetOptions(ctx, CYASSL_SNI_HOST_NAME, diff --git a/Makefile.am b/Makefile.am index 651b60afb..02fea25cc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -62,6 +62,7 @@ include mqx/ctaocrypt_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 diff --git a/README b/README index 8f4e61ee8..e8c6c4965 100644 --- a/README +++ b/README @@ -23,10 +23,10 @@ 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, unable to -verify (-155). It 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: +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); @@ -35,12 +35,43 @@ before calling SSL_new(); Though it's not recommended. *** end Notes *** -CyaSSL Release 2.9.0 (X/XX/XXXX) +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) diff --git a/certs/crl/cliCrl.pem b/certs/crl/cliCrl.pem index d94d778e7..e623562a9 100644 --- a/certs/crl/cliCrl.pem +++ b/certs/crl/cliCrl.pem @@ -2,38 +2,40 @@ Certificate Revocation List (CRL): Version 2 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: /C=US/ST=Oregon/L=Portland/O=yaSSL/OU=Programming/CN=www.yassl.com/emailAddress=info@yassl.com - Last Update: Jun 17 21:32:30 2013 GMT - Next Update: Dec 14 21:32:30 2013 GMT + Last Update: Feb 7 20:14:06 2014 GMT + Next Update: Feb 7 20:14:06 2015 GMT CRL extensions: X509v3 CRL Number: - 87 -No Revoked Certificates. + 3 +Revoked Certificates: + Serial Number: 02 + Revocation Date: Feb 7 20:14:06 2014 GMT Signature Algorithm: sha1WithRSAEncryption - 0f:16:d2:d6:62:f8:c0:db:b2:2c:de:9d:0a:10:72:0e:85:6e: - 25:1d:38:20:1b:d5:66:d9:d3:9e:0e:a6:9e:e8:60:20:1c:b5: - c9:ab:09:c3:a5:d5:c3:91:a3:9a:ff:44:40:68:da:7b:da:4a: - 3c:15:17:89:0a:49:b9:af:b2:ac:f0:e2:b5:0e:4d:c0:22:d7: - 5e:c1:02:9e:f3:95:20:62:7c:88:d9:32:97:12:04:1a:6f:8c: - d8:7b:9f:0c:1e:91:fe:98:52:17:de:f2:ee:7c:66:e7:db:91: - 99:7a:f7:09:c9:15:16:3d:a2:1c:13:af:ad:e0:70:b8:6b:e5: - dc:8e:f8:b5:ec:ff:f7:88:1b:ce:46:eb:22:ff:10:2f:ea:53: - f0:86:62:1a:ab:6f:4d:05:45:e8:5c:ba:b5:8d:0d:38:72:cd: - df:a1:74:31:bb:ad:68:7d:56:be:d8:7e:7a:f5:ef:52:be:14: - 5c:6d:ed:b4:2a:c9:ab:97:ba:e8:93:c5:6b:79:66:c7:52:a8: - 0d:62:dc:cb:e2:4c:e6:53:f4:c3:5c:ce:47:0f:39:46:9a:cb: - 82:d9:98:7d:69:41:aa:ac:6a:7a:e9:02:c9:9b:77:59:7f:6a: - 90:54:10:8a:45:c7:49:5f:ca:be:66:6a:20:e1:cd:e8:10:09: - 30:7e:16:44 + 36:33:8d:75:7a:2c:40:dc:e2:64:71:de:1d:06:b4:0e:d3:98: + 63:05:79:84:53:76:9b:aa:51:70:a1:3a:ab:12:f7:da:69:70: + 34:5b:4d:08:01:a6:3b:16:25:ac:3d:11:0c:80:94:bc:dc:b5: + 51:7c:84:11:65:d7:d2:24:16:f5:ac:11:0b:ea:72:62:4a:cb: + 83:c1:6c:96:ec:6b:ce:1f:26:88:89:8a:74:90:fb:d3:67:91: + 8c:f7:ef:0e:ca:81:39:22:89:1a:52:75:d0:13:ba:ee:83:0c: + 61:e9:b4:d8:f1:3f:80:77:29:d2:bb:7e:81:29:a8:fb:1f:ad: + 92:91:bd:e9:b8:29:3f:a3:ec:44:b5:09:e5:03:3c:1b:2d:df: + 4c:27:45:94:da:be:50:dd:b9:78:3f:1f:92:92:59:a5:ad:5a: + ef:95:71:ff:ca:ff:db:70:53:17:aa:00:40:9b:4c:ff:fb:be: + 73:7a:8e:0f:07:9b:b9:14:fd:a4:b4:d7:79:4b:3e:ff:c6:90: + ef:91:2e:a2:f3:ee:4b:1f:16:47:2a:a3:39:f9:b5:fd:74:fa: + 8f:c4:15:8d:77:7f:46:78:6f:ba:a5:4e:bc:63:8f:39:63:c9: + 68:3d:8f:02:3a:4a:d0:d5:c4:47:6a:2c:4d:6c:d5:e2:a7:5f: + 35:ba:65:e4 -----BEGIN X509 CRL----- -MIIB6DCB0QIBATANBgkqhkiG9w0BAQUFADCBjjELMAkGA1UEBhMCVVMxDzANBgNV +MIIB/jCB5wIBATANBgkqhkiG9w0BAQUFADCBjjELMAkGA1UEBhMCVVMxDzANBgNV BAgTBk9yZWdvbjERMA8GA1UEBxMIUG9ydGxhbmQxDjAMBgNVBAoTBXlhU1NMMRQw EgYDVQQLEwtQcm9ncmFtbWluZzEWMBQGA1UEAxMNd3d3Lnlhc3NsLmNvbTEdMBsG -CSqGSIb3DQEJARYOaW5mb0B5YXNzbC5jb20XDTEzMDYxNzIxMzIzMFoXDTEzMTIx -NDIxMzIzMFqgDjAMMAoGA1UdFAQDAgFXMA0GCSqGSIb3DQEBBQUAA4IBAQAPFtLW -YvjA27Is3p0KEHIOhW4lHTggG9Vm2dOeDqae6GAgHLXJqwnDpdXDkaOa/0RAaNp7 -2ko8FReJCkm5r7Ks8OK1Dk3AItdewQKe85UgYnyI2TKXEgQab4zYe58MHpH+mFIX -3vLufGbn25GZevcJyRUWPaIcE6+t4HC4a+Xcjvi17P/3iBvORusi/xAv6lPwhmIa -q29NBUXoXLq1jQ04cs3foXQxu61ofVa+2H569e9SvhRcbe20Ksmrl7rok8VreWbH -UqgNYtzL4kzmU/TDXM5HDzlGmsuC2Zh9aUGqrGp66QLJm3dZf2qQVBCKRcdJX8q+ -Zmog4c3oEAkwfhZE +CSqGSIb3DQEJARYOaW5mb0B5YXNzbC5jb20XDTE0MDIwNzIwMTQwNloXDTE1MDIw +NzIwMTQwNlowFDASAgECFw0xNDAyMDcyMDE0MDZaoA4wDDAKBgNVHRQEAwIBAzAN +BgkqhkiG9w0BAQUFAAOCAQEANjONdXosQNziZHHeHQa0DtOYYwV5hFN2m6pRcKE6 +qxL32mlwNFtNCAGmOxYlrD0RDICUvNy1UXyEEWXX0iQW9awRC+pyYkrLg8Fsluxr +zh8miImKdJD702eRjPfvDsqBOSKJGlJ10BO67oMMYem02PE/gHcp0rt+gSmo+x+t +kpG96bgpP6PsRLUJ5QM8Gy3fTCdFlNq+UN25eD8fkpJZpa1a75Vx/8r/23BTF6oA +QJtM//u+c3qODwebuRT9pLTXeUs+/8aQ75EuovPuSx8WRyqjOfm1/XT6j8QVjXd/ +RnhvuqVOvGOPOWPJaD2PAjpK0NXER2osTWzV4qdfNbpl5A== -----END X509 CRL----- diff --git a/certs/crl/crl.pem b/certs/crl/crl.pem index 06ebdebe2..d93a4707e 100644 --- a/certs/crl/crl.pem +++ b/certs/crl/crl.pem @@ -2,38 +2,38 @@ Certificate Revocation List (CRL): Version 2 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: /C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.yassl.com/emailAddress=info@yassl.com - Last Update: Jun 17 21:32:30 2013 GMT - Next Update: Dec 14 21:32:30 2013 GMT + Last Update: Feb 7 20:14:06 2014 GMT + Next Update: Feb 7 20:14:06 2015 GMT CRL extensions: X509v3 CRL Number: - 85 + 1 No Revoked Certificates. Signature Algorithm: sha1WithRSAEncryption - 4d:9c:63:22:02:91:fe:52:35:93:7c:b6:5b:e8:86:5a:29:a2: - 4d:9a:bc:d9:16:e0:8a:04:90:4d:ae:21:00:be:9c:81:5b:68: - 6e:90:1a:fd:1a:37:70:85:50:f2:02:87:1c:38:f4:ef:9d:41: - f5:4f:53:66:d4:c0:22:80:00:82:7a:09:42:49:c3:1c:c9:4c: - 9f:92:f9:66:f4:21:1f:24:67:4f:83:6a:bd:3a:19:f1:04:99: - ea:30:05:bf:a7:3d:bf:71:ac:3e:3a:ba:2a:c5:05:12:53:eb: - 5c:6f:ed:2d:4b:c0:f5:00:e1:95:45:c9:62:b5:89:66:4b:2b: - 01:fc:66:29:a3:0a:9a:05:ae:f7:9f:51:2a:9c:3b:18:03:ed: - c4:7c:33:62:93:30:49:ab:c4:d1:07:f4:18:ac:96:24:1e:c2: - fa:37:ed:82:db:06:66:8d:fb:25:93:35:7b:39:88:e8:8e:70: - e9:c8:be:00:c4:f7:a7:67:83:f8:3d:af:8b:71:5b:25:3b:1d: - 56:cd:d0:15:86:31:d1:cb:57:3a:00:b5:1c:7c:3e:99:44:ce: - bc:89:a7:78:37:50:ed:a1:b6:16:cd:72:20:c9:1f:60:b2:8a: - c5:62:30:26:f0:aa:b6:73:ca:8e:d6:ba:31:0a:21:a2:6e:40: - 4b:66:30:11 + 4b:c1:68:4f:80:01:0e:ab:ff:c1:8f:5e:e5:3c:01:7a:fd:9c: + bb:21:b3:68:73:7c:e9:dc:c5:70:a8:fd:1b:74:27:c2:9e:7d: + 11:9c:95:b9:fb:73:ac:50:bb:b7:4a:5e:f1:f3:44:b4:7c:b5: + 21:0f:32:48:2e:b2:03:95:a7:09:6b:25:87:c3:1d:9c:3f:8f: + 69:91:30:fb:e5:a1:b2:26:1a:ed:8f:73:06:2d:bd:bc:72:f4: + b8:bd:63:61:90:c7:91:2b:68:52:51:47:0d:d6:a1:79:b8:4b: + bc:30:57:94:fa:b7:49:80:1a:1f:4d:aa:a3:8b:cd:8f:5d:8e: + ad:8b:d6:d1:5b:c1:cf:f2:0c:60:22:19:87:42:db:42:8b:aa: + 47:36:4d:20:eb:cb:72:ce:4b:48:1b:f3:4d:0b:e0:f8:58:27: + 65:60:e7:97:50:83:a9:80:58:62:a8:02:ac:4e:37:79:42:47: + 65:aa:55:ca:7c:9a:9c:bf:6c:36:89:f3:f7:60:d3:30:be:d4: + ce:f1:af:41:7e:02:75:6e:82:86:96:b9:16:07:15:29:c0:65: + 4d:2f:13:4f:01:ec:47:f1:af:36:0a:d6:a1:dc:81:57:18:2d: + 00:7b:d4:49:88:c0:61:81:0e:cd:a7:39:6a:53:2a:7c:91:3d: + ac:62:8d:49 -----BEGIN X509 CRL----- MIIB6jCB0wIBATANBgkqhkiG9w0BAQUFADCBkDELMAkGA1UEBhMCVVMxEDAOBgNV BAgTB01vbnRhbmExEDAOBgNVBAcTB0JvemVtYW4xETAPBgNVBAoTCFNhd3Rvb3Ro MRMwEQYDVQQLEwpDb25zdWx0aW5nMRYwFAYDVQQDEw13d3cueWFzc2wuY29tMR0w -GwYJKoZIhvcNAQkBFg5pbmZvQHlhc3NsLmNvbRcNMTMwNjE3MjEzMjMwWhcNMTMx -MjE0MjEzMjMwWqAOMAwwCgYDVR0UBAMCAVUwDQYJKoZIhvcNAQEFBQADggEBAE2c -YyICkf5SNZN8tlvohlopok2avNkW4IoEkE2uIQC+nIFbaG6QGv0aN3CFUPIChxw4 -9O+dQfVPU2bUwCKAAIJ6CUJJwxzJTJ+S+Wb0IR8kZ0+Dar06GfEEmeowBb+nPb9x -rD46uirFBRJT61xv7S1LwPUA4ZVFyWK1iWZLKwH8ZimjCpoFrvefUSqcOxgD7cR8 -M2KTMEmrxNEH9BisliQewvo37YLbBmaN+yWTNXs5iOiOcOnIvgDE96dng/g9r4tx -WyU7HVbN0BWGMdHLVzoAtRx8PplEzryJp3g3UO2hthbNciDJH2CyisViMCbwqrZz -yo7WujEKIaJuQEtmMBE= +GwYJKoZIhvcNAQkBFg5pbmZvQHlhc3NsLmNvbRcNMTQwMjA3MjAxNDA2WhcNMTUw +MjA3MjAxNDA2WqAOMAwwCgYDVR0UBAMCAQEwDQYJKoZIhvcNAQEFBQADggEBAEvB +aE+AAQ6r/8GPXuU8AXr9nLshs2hzfOncxXCo/Rt0J8KefRGclbn7c6xQu7dKXvHz +RLR8tSEPMkgusgOVpwlrJYfDHZw/j2mRMPvlobImGu2PcwYtvbxy9Li9Y2GQx5Er +aFJRRw3WoXm4S7wwV5T6t0mAGh9NqqOLzY9djq2L1tFbwc/yDGAiGYdC20KLqkc2 +TSDry3LOS0gb800L4PhYJ2Vg55dQg6mAWGKoAqxON3lCR2WqVcp8mpy/bDaJ8/dg +0zC+1M7xr0F+AnVugoaWuRYHFSnAZU0vE08B7EfxrzYK1qHcgVcYLQB71EmIwGGB +Ds2nOWpTKnyRPaxijUk= -----END X509 CRL----- diff --git a/certs/crl/crl.revoked b/certs/crl/crl.revoked index 734593600..b67ee676d 100644 --- a/certs/crl/crl.revoked +++ b/certs/crl/crl.revoked @@ -2,40 +2,40 @@ Certificate Revocation List (CRL): Version 2 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: /C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.yassl.com/emailAddress=info@yassl.com - Last Update: Jun 17 21:32:30 2013 GMT - Next Update: Dec 14 21:32:30 2013 GMT + Last Update: Feb 7 20:14:06 2014 GMT + Next Update: Feb 7 20:14:06 2015 GMT CRL extensions: X509v3 CRL Number: - 86 + 2 Revoked Certificates: Serial Number: 02 - Revocation Date: Jun 17 21:32:30 2013 GMT + Revocation Date: Feb 7 20:14:06 2014 GMT Signature Algorithm: sha1WithRSAEncryption - 87:3b:bb:ac:6b:1a:e8:96:87:6f:a3:8e:39:77:28:01:a7:ea: - 76:36:c2:48:e2:41:02:3f:f3:f7:64:09:60:91:87:9e:57:74: - 38:a0:c3:20:47:7d:82:4b:2c:34:23:fe:66:dc:2b:3e:8a:a1: - d9:e3:06:ec:75:0f:b1:ef:32:e2:28:ab:7d:40:2c:82:59:74: - c9:95:b5:62:a6:6a:8e:34:e6:f6:f8:91:ff:aa:c1:21:93:79: - cb:6f:dc:be:94:21:b1:c8:dd:9e:b8:fe:ad:e8:50:6e:0d:76: - 92:32:54:51:96:cd:c7:be:d2:0f:6f:63:69:5f:b3:28:c1:57: - 0e:61:f7:62:81:9f:ea:e7:a5:14:89:41:56:63:46:da:bc:d8: - e0:78:44:c6:c7:1a:ab:1b:f1:0b:59:d5:4e:6d:14:bc:16:c2: - 02:43:06:0b:f4:16:6e:26:8c:36:09:61:0c:53:3f:72:85:64: - 33:4d:bf:70:44:c8:23:83:c3:51:98:a8:14:f7:b2:03:a1:7b: - 72:48:4d:24:d0:a8:a9:22:3d:9b:94:bf:24:24:01:6f:2e:4b: - 2b:21:24:8f:64:46:20:79:45:b3:45:1a:4f:93:10:e1:8d:04: - 4c:8d:83:63:96:9f:28:c5:37:0f:10:8e:02:9b:4d:96:8b:ea: - a3:31:88:9f + 10:5d:b1:d0:79:d2:8a:15:2d:40:0b:44:d6:d9:df:58:73:eb: + 55:2c:81:fe:e1:7b:62:48:8f:34:c5:06:51:e5:e8:50:70:8c: + 12:ba:e3:6e:fe:7d:0d:ce:44:08:9d:dc:d9:57:43:6c:54:12: + 82:d4:ed:6c:71:e5:74:44:bd:d1:a8:98:96:63:8b:68:5f:d2: + 87:28:dd:99:4f:aa:ba:8e:18:9e:c4:4f:69:9e:66:13:03:28: + 5f:3c:35:01:15:77:22:7c:ed:c5:4a:67:44:af:85:7f:df:8a: + fd:49:8b:e1:be:52:e3:ca:e8:ae:a3:ad:07:91:2c:51:c6:28: + 5f:26:17:14:39:5d:4e:21:9f:11:6f:c4:a2:ef:ef:b8:ec:27: + af:45:ad:b9:ed:e0:14:09:60:a0:50:ee:dd:f7:b1:3e:58:c4: + 0d:e8:b5:0b:a9:0d:98:ad:7c:74:ab:1c:d6:fa:c8:7d:e7:5a: + 3b:91:23:d5:62:ba:d4:e4:be:58:78:fe:09:ba:63:f6:9e:2c: + 3f:93:c2:fe:de:c5:00:21:50:39:91:ac:71:e6:fc:4a:37:a4: + e4:e9:5e:e7:ac:8d:95:21:d6:76:aa:10:a8:3c:28:3e:ef:1c: + 64:58:e9:1e:f6:7e:54:f3:cb:bb:ed:6f:5d:27:5a:b1:4b:91: + 8e:8c:67:7d -----BEGIN X509 CRL----- MIICADCB6QIBATANBgkqhkiG9w0BAQUFADCBkDELMAkGA1UEBhMCVVMxEDAOBgNV BAgTB01vbnRhbmExEDAOBgNVBAcTB0JvemVtYW4xETAPBgNVBAoTCFNhd3Rvb3Ro MRMwEQYDVQQLEwpDb25zdWx0aW5nMRYwFAYDVQQDEw13d3cueWFzc2wuY29tMR0w -GwYJKoZIhvcNAQkBFg5pbmZvQHlhc3NsLmNvbRcNMTMwNjE3MjEzMjMwWhcNMTMx -MjE0MjEzMjMwWjAUMBICAQIXDTEzMDYxNzIxMzIzMFqgDjAMMAoGA1UdFAQDAgFW -MA0GCSqGSIb3DQEBBQUAA4IBAQCHO7usaxrolodvo445dygBp+p2NsJI4kECP/P3 -ZAlgkYeeV3Q4oMMgR32CSyw0I/5m3Cs+iqHZ4wbsdQ+x7zLiKKt9QCyCWXTJlbVi -pmqONOb2+JH/qsEhk3nLb9y+lCGxyN2euP6t6FBuDXaSMlRRls3HvtIPb2NpX7Mo -wVcOYfdigZ/q56UUiUFWY0bavNjgeETGxxqrG/ELWdVObRS8FsICQwYL9BZuJow2 -CWEMUz9yhWQzTb9wRMgjg8NRmKgU97IDoXtySE0k0KipIj2blL8kJAFvLksrISSP -ZEYgeUWzRRpPkxDhjQRMjYNjlp8oxTcPEI4Cm02Wi+qjMYif +GwYJKoZIhvcNAQkBFg5pbmZvQHlhc3NsLmNvbRcNMTQwMjA3MjAxNDA2WhcNMTUw +MjA3MjAxNDA2WjAUMBICAQIXDTE0MDIwNzIwMTQwNlqgDjAMMAoGA1UdFAQDAgEC +MA0GCSqGSIb3DQEBBQUAA4IBAQAQXbHQedKKFS1AC0TW2d9Yc+tVLIH+4XtiSI80 +xQZR5ehQcIwSuuNu/n0NzkQIndzZV0NsVBKC1O1sceV0RL3RqJiWY4toX9KHKN2Z +T6q6jhiexE9pnmYTAyhfPDUBFXcifO3FSmdEr4V/34r9SYvhvlLjyuiuo60HkSxR +xihfJhcUOV1OIZ8Rb8Si7++47CevRa257eAUCWCgUO7d97E+WMQN6LULqQ2YrXx0 +qxzW+sh951o7kSPVYrrU5L5YeP4JumP2niw/k8L+3sUAIVA5kaxx5vxKN6Tk6V7n +rI2VIdZ2qhCoPCg+7xxkWOke9n5U88u77W9dJ1qxS5GOjGd9 -----END X509 CRL----- diff --git a/certs/crl/eccCliCRL.pem b/certs/crl/eccCliCRL.pem index d83afecd7..5cfe2d566 100644 --- a/certs/crl/eccCliCRL.pem +++ b/certs/crl/eccCliCRL.pem @@ -2,23 +2,25 @@ Certificate Revocation List (CRL): Version 2 (0x1) Signature Algorithm: ecdsa-with-SHA1 Issuer: /C=US/ST=Oregon/L=Salem/O=Client ECC/OU=Fast/CN=www.yassl.com/emailAddress=info@yassl.com - Last Update: Jun 17 21:32:30 2013 GMT - Next Update: Dec 14 21:32:30 2013 GMT + Last Update: Feb 7 20:14:06 2014 GMT + Next Update: Feb 7 20:14:06 2015 GMT CRL extensions: X509v3 CRL Number: - 88 -No Revoked Certificates. + 4 +Revoked Certificates: + Serial Number: 02 + Revocation Date: Feb 7 20:14:06 2014 GMT Signature Algorithm: ecdsa-with-SHA1 - 30:45:02:21:00:eb:6e:1b:5d:f9:43:f9:67:5b:4e:d1:6d:30: - c7:c1:57:a3:e6:25:af:87:7a:77:8d:d9:89:47:1d:a4:64:0e: - 21:02:20:11:20:49:d5:84:47:fa:12:61:46:ec:b6:db:0e:d0: - 9d:3d:95:24:4f:a3:43:ab:d0:ad:dd:d9:61:b7:49:e2:5e + 30:44:02:20:10:95:f9:c8:20:bc:7d:ce:79:6d:35:23:4c:82: + 8c:f5:8b:d1:4f:69:a9:5e:70:97:dd:bb:c2:67:13:46:b0:47: + 02:20:4f:1f:43:c2:cc:63:1c:6e:26:89:2d:e7:ce:69:45:6d: + fb:8f:53:cd:1f:84:0f:93:fe:83:91:69:f2:91:c6:f9 -----BEGIN X509 CRL----- -MIIBIDCByAIBATAJBgcqhkjOPQQBMIGJMQswCQYDVQQGEwJVUzEPMA0GA1UECBMG +MIIBNTCB3gIBATAJBgcqhkjOPQQBMIGJMQswCQYDVQQGEwJVUzEPMA0GA1UECBMG T3JlZ29uMQ4wDAYDVQQHEwVTYWxlbTETMBEGA1UEChMKQ2xpZW50IEVDQzENMAsG A1UECxMERmFzdDEWMBQGA1UEAxMNd3d3Lnlhc3NsLmNvbTEdMBsGCSqGSIb3DQEJ -ARYOaW5mb0B5YXNzbC5jb20XDTEzMDYxNzIxMzIzMFoXDTEzMTIxNDIxMzIzMFqg -DjAMMAoGA1UdFAQDAgFYMAkGByqGSM49BAEDSAAwRQIhAOtuG135Q/lnW07RbTDH -wVej5iWvh3p3jdmJRx2kZA4hAiARIEnVhEf6EmFG7LbbDtCdPZUkT6NDq9Ct3dlh -t0niXg== +ARYOaW5mb0B5YXNzbC5jb20XDTE0MDIwNzIwMTQwNloXDTE1MDIwNzIwMTQwNlow +FDASAgECFw0xNDAyMDcyMDE0MDZaoA4wDDAKBgNVHRQEAwIBBDAJBgcqhkjOPQQB +A0cAMEQCIBCV+cggvH3OeW01I0yCjPWL0U9pqV5wl927wmcTRrBHAiBPH0PCzGMc +biaJLefOaUVt+49TzR+ED5P+g5Fp8pHG+Q== -----END X509 CRL----- diff --git a/certs/crl/eccSrvCRL.pem b/certs/crl/eccSrvCRL.pem index c62ce585a..48fae36f3 100644 --- a/certs/crl/eccSrvCRL.pem +++ b/certs/crl/eccSrvCRL.pem @@ -2,23 +2,25 @@ Certificate Revocation List (CRL): Version 2 (0x1) Signature Algorithm: ecdsa-with-SHA1 Issuer: /C=US/ST=Washington/L=Seattle/O=Eliptic/OU=ECC/CN=www.yassl.com/emailAddress=info@yassl.com - Last Update: Jun 17 21:32:30 2013 GMT - Next Update: Dec 14 21:32:30 2013 GMT + Last Update: Feb 7 20:14:06 2014 GMT + Next Update: Feb 7 20:14:06 2015 GMT CRL extensions: X509v3 CRL Number: - 89 -No Revoked Certificates. + 5 +Revoked Certificates: + Serial Number: 02 + Revocation Date: Feb 7 20:14:06 2014 GMT Signature Algorithm: ecdsa-with-SHA1 - 30:44:02:20:0c:78:df:c4:4b:8b:e0:70:15:4f:f6:7d:82:d6: - 0d:dd:a5:a0:e2:6a:95:4b:2b:6b:29:14:15:ba:51:0d:e3:1f: - 02:20:2b:4b:1d:7c:9d:2f:5a:01:3d:9b:c1:94:cd:10:86:fe: - e2:9d:a0:b2:3c:97:10:ba:a6:56:43:78:b3:92:9b:0b + 30:44:02:20:2a:2a:2c:ff:8a:0f:6a:74:57:b8:41:a8:5a:5c: + 8c:7d:c1:7d:b1:76:a3:db:ff:22:1a:69:cd:80:8d:d5:e4:2a: + 02:20:2d:51:3e:01:5b:79:6c:f4:89:89:63:46:0b:65:44:46: + 59:2d:42:3e:ba:a8:6d:08:4a:20:1f:9a:06:cc:a9:65 -----BEGIN X509 CRL----- -MIIBITCBygIBATAJBgcqhkjOPQQBMIGLMQswCQYDVQQGEwJVUzETMBEGA1UECBMK +MIIBNzCB4AIBATAJBgcqhkjOPQQBMIGLMQswCQYDVQQGEwJVUzETMBEGA1UECBMK V2FzaGluZ3RvbjEQMA4GA1UEBxMHU2VhdHRsZTEQMA4GA1UEChMHRWxpcHRpYzEM MAoGA1UECxMDRUNDMRYwFAYDVQQDEw13d3cueWFzc2wuY29tMR0wGwYJKoZIhvcN -AQkBFg5pbmZvQHlhc3NsLmNvbRcNMTMwNjE3MjEzMjMwWhcNMTMxMjE0MjEzMjMw -WqAOMAwwCgYDVR0UBAMCAVkwCQYHKoZIzj0EAQNHADBEAiAMeN/ES4vgcBVP9n2C -1g3dpaDiapVLK2spFBW6UQ3jHwIgK0sdfJ0vWgE9m8GUzRCG/uKdoLI8lxC6plZD -eLOSmws= +AQkBFg5pbmZvQHlhc3NsLmNvbRcNMTQwMjA3MjAxNDA2WhcNMTUwMjA3MjAxNDA2 +WjAUMBICAQIXDTE0MDIwNzIwMTQwNlqgDjAMMAoGA1UdFAQDAgEFMAkGByqGSM49 +BAEDRwAwRAIgKios/4oPanRXuEGoWlyMfcF9sXaj2/8iGmnNgI3V5CoCIC1RPgFb +eWz0iYljRgtlREZZLUI+uqhtCEogH5oGzKll -----END X509 CRL----- diff --git a/certs/crl/gencrls.sh b/certs/crl/gencrls.sh index a2ae48ff5..df7d27143 100755 --- a/certs/crl/gencrls.sh +++ b/certs/crl/gencrls.sh @@ -5,7 +5,7 @@ # caCrl -openssl ca -gencrl -crldays 180 -out crl.pem -keyfile ~/cyassl/certs/ca-key.pem -cert ~/cyassl/certs/ca-cert.pem +openssl ca -gencrl -crldays 365 -out crl.pem -keyfile ~/cyassl/certs/ca-key.pem -cert ~/cyassl/certs/ca-cert.pem # metadata openssl crl -in crl.pem -text > tmp @@ -17,7 +17,7 @@ cp crl.pem ~/cyassl/certs/crl/crl.pem openssl ca -revoke ~/cyassl/certs/server-cert.pem -keyfile ~/cyassl/certs/ca-key.pem -cert ~/cyassl/certs/ca-cert.pem # caCrl server revoked generation -openssl ca -gencrl -crldays 180 -out crl.revoked -keyfile ~/cyassl/certs/ca-key.pem -cert ~/cyassl/certs/ca-cert.pem +openssl ca -gencrl -crldays 365 -out crl.revoked -keyfile ~/cyassl/certs/ca-key.pem -cert ~/cyassl/certs/ca-cert.pem # metadata openssl crl -in crl.revoked -text > tmp @@ -29,7 +29,7 @@ cp crl.revoked ~/cyassl/certs/crl/crl.revoked cp blank.index.txt demoCA/index.txt # cliCrl -openssl ca -gencrl -crldays 180 -out cliCrl.pem -keyfile ~/cyassl/certs/client-key.pem -cert ~/cyassl/certs/client-cert.pem +openssl ca -gencrl -crldays 365 -out cliCrl.pem -keyfile ~/cyassl/certs/client-key.pem -cert ~/cyassl/certs/client-cert.pem # metadata openssl crl -in cliCrl.pem -text > tmp @@ -38,7 +38,7 @@ mv tmp cliCrl.pem cp cliCrl.pem ~/cyassl/certs/crl/cliCrl.pem # eccCliCRL -openssl ca -gencrl -crldays 180 -out eccCliCRL.pem -keyfile ~/cyassl/certs/ecc-client-key.pem -cert ~/cyassl/certs/client-ecc-cert.pem +openssl ca -gencrl -crldays 365 -out eccCliCRL.pem -keyfile ~/cyassl/certs/ecc-client-key.pem -cert ~/cyassl/certs/client-ecc-cert.pem # metadata openssl crl -in eccCliCRL.pem -text > tmp @@ -47,7 +47,7 @@ mv tmp eccCliCRL.pem cp eccCliCRL.pem ~/cyassl/certs/crl/eccCliCRL.pem # eccSrvCRL -openssl ca -gencrl -crldays 180 -out eccSrvCRL.pem -keyfile ~/cyassl/certs/ecc-key.pem -cert ~/cyassl/certs/server-ecc.pem +openssl ca -gencrl -crldays 365 -out eccSrvCRL.pem -keyfile ~/cyassl/certs/ecc-key.pem -cert ~/cyassl/certs/server-ecc.pem # metadata openssl crl -in eccSrvCRL.pem -text > tmp diff --git a/configure.ac b/configure.ac index 57f16b732..6ba48ab95 100644 --- a/configure.ac +++ b/configure.ac @@ -6,7 +6,7 @@ # # -AC_INIT([cyassl],[2.8.3],[https://github.com/cyassl/cyassl/issues],[cyassl],[http://www.yassl.com]) +AC_INIT([cyassl],[2.9.0],[https://github.com/cyassl/cyassl/issues],[cyassl],[http://www.yassl.com]) AC_CONFIG_AUX_DIR([build-aux]) @@ -33,7 +33,7 @@ AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config.h:config.in])dnl Keep filename to 8.3 for MS-DOS. #shared library versioning -CYASSL_LIBRARY_VERSION=5:2:0 +CYASSL_LIBRARY_VERSION=5:3:0 # | | | # +------+ | +---+ # | | | @@ -103,6 +103,8 @@ OPTIMIZE_FAST_CFLAGS="-O2 -fomit-frame-pointer" OPTIMIZE_HUGE_CFLAGS="-funroll-loops -DTFM_SMALL_SET -DTFM_HUGE_SET" DEBUG_CFLAGS="-g -DDEBUG -DDEBUG_CYASSL" +# Thread local storage +AX_TLS([AM_CFLAGS="$AM_CFLAGS -DHAVE_THREAD_LS"]) # DEBUG AX_DEBUG @@ -308,17 +310,20 @@ fi # SNIFFER +ENABLED_SNIFFTEST=no AC_ARG_ENABLE([sniffer], - [AS_HELP_STRING([--enable-sniffer],[ Enable CyaSSL sniffer support (default: disabled) ])],[ - AS_IF([ test "x$enableval" = "xyes" ],[ AC_CHECK_HEADERS([pcap/pcap.h],[ - ENABLED_SNIFFER=yes - AM_CFLAGS="$AM_CFLAGS -DCYASSL_SNIFFER -DOPENSSL_EXTRA" - ],[ ENABLED_SNIFFER=no ]) ]) - ],[ - ENABLED_SNIFFER=no - ]) + [AS_HELP_STRING([--enable-sniffer],[ Enable CyaSSL sniffer support (default: disabled) ])],[ + ENABLED_SNIFFER=yes + AM_CFLAGS="$AM_CFLAGS -DCYASSL_SNIFFER -DOPENSSL_EXTRA" + AS_IF([ test "x$enableval" = "xyes" ],[ AC_CHECK_HEADERS([pcap/pcap.h],[ + ENABLED_SNIFFTEST=yes + ],[ AC_MSG_WARN([cannot enable sniffer test without having libpcap available.]) ]) ]) + ],[ + ENABLED_SNIFFER=no + ]) -AM_CONDITIONAL([BUILD_SNIFFER], [ test "x$ENABLED_SNIFFER" = "xyes" ]) +AM_CONDITIONAL([BUILD_SNIFFER], [ test "x$ENABLED_SNIFFER" = "xyes" ]) +AM_CONDITIONAL([BUILD_SNIFFTEST], [ test "x$ENABLED_SNIFFTEST" = "xyes" ]) # AES-GCM AC_ARG_ENABLE([aesgcm], @@ -526,6 +531,23 @@ then fi +# CERT REQUEST GENERATION +AC_ARG_ENABLE([certreq], + [ --enable-certreq Enable cert request generation (default: disabled)], + [ ENABLED_CERTREQ=$enableval ], + [ ENABLED_CERTREQ=no ] + ) + +if test "$ENABLED_CERTREQ" = "yes" +then + if test "$ENABLED_CERTGEN" = "no" + then + AC_MSG_ERROR([cannot enable certreq without enabling certgen.]) + fi + AM_CFLAGS="$AM_CFLAGS -DCYASSL_CERT_REQ" +fi + + # SEP AC_ARG_ENABLE([sep], [ --enable-sep Enable sep extensions (default: disabled)], @@ -595,10 +617,35 @@ AC_ARG_ENABLE([fpecc], if test "$ENABLED_FPECC" = "yes" then + if test "$ENABLED_ECC" = "no" + then + AC_MSG_ERROR([cannot enable fpecc without enabling ecc.]) + fi AM_CFLAGS="$AM_CFLAGS -DFP_ECC" fi +# ECC encrypt +AC_ARG_ENABLE([eccencrypt], + [ --enable-eccencrypt Enable ECC encrypt (default: disabled)], + [ ENABLED_ECC_ENCRYPT=$enableval ], + [ ENABLED_ECC_ENCRYPT=no ] + ) + +if test "$ENABLED_ECC_ENCRYPT" = "yes" +then + if test "$ENABLED_ECC" = "no" + then + AC_MSG_ERROR([cannot enable eccencrypt without enabling ecc.]) + fi + if test "$ENABLED_HKDF" = "no" + then + AC_MSG_ERROR([cannot enable eccencrypt without enabling hkdf.]) + fi + AM_CFLAGS="$AM_CFLAGS -DHAVE_ECC_ENCRYPT" +fi + + # PSK AC_ARG_ENABLE([psk], [ --enable-psk Enable PSK (default: disabled)], @@ -1058,6 +1105,20 @@ fi AM_CONDITIONAL([BUILD_OCSP], [test "x$ENABLED_OCSP" = "xyes"]) +if test "$ENABLED_OCSP" = "yes" +then + # check openssl command tool for testing ocsp + AC_CHECK_PROG([HAVE_OPENSSL_CMD],[openssl],[yes],[no]) + + if test "$HAVE_OPENSSL_CMD" = "yes" + then + AM_CFLAGS="$AM_CFLAGS -DHAVE_OPENSSL_CMD" + else + AC_MSG_WARN([openssl command line tool not available for testing ocsp]) + fi +fi + + # CRL AC_ARG_ENABLE([crl], [ --enable-crl Enable CRL (default: disabled)], @@ -1153,6 +1214,30 @@ then AM_CFLAGS="$AM_CFLAGS -DHAVE_TLS_EXTENSIONS -DHAVE_TRUNCATED_HMAC" fi +# Renegotiation Indication +AC_ARG_ENABLE([renegotiation-indication], + [ --enable-renegotiation-indication Enable Renegotiation Indication (default: disabled)], + [ ENABLED_RENEGOTIATION_INDICATION=$enableval ], + [ ENABLED_RENEGOTIATION_INDICATION=no ] + ) + +if test "x$ENABLED_RENEGOTIATION_INDICATION" = "xyes" +then + AM_CFLAGS="$AM_CFLAGS -DHAVE_TLS_EXTENSIONS -DHAVE_RENEGOTIATION_INDICATION" +fi + +# Supported Elliptic Curves Extensions +AC_ARG_ENABLE([supportedcurves], + [ --enable-supportedcurves Enable Supported Elliptic Curves (default: disabled)], + [ ENABLED_SUPPORTED_CURVES=$enableval ], + [ ENABLED_SUPPORTED_CURVES=no ] + ) + +if test "x$ENABLED_SUPPORTED_CURVES" = "xyes" +then + AM_CFLAGS="$AM_CFLAGS -DHAVE_TLS_EXTENSIONS -DHAVE_SUPPORTED_CURVES" +fi + # TLS Extensions AC_ARG_ENABLE([tlsx], [ --enable-tlsx Enable all TLS Extensions (default: disabled)], @@ -1164,9 +1249,61 @@ if test "x$ENABLED_TLSX" = "xyes" then ENABLED_SNI=yes ENABLED_MAX_FRAGMENT=yes - AM_CFLAGS="$AM_CFLAGS -DHAVE_TLS_EXTENSIONS -DHAVE_SNI -DHAVE_MAX_FRAGMENT" + ENABLED_TRUNCATED_HMAC=yes + ENABLED_RENEGOTIATION_INDICATION=yes + ENABLED_SUPPORTED_CURVES=yes + AM_CFLAGS="$AM_CFLAGS -DHAVE_TLS_EXTENSIONS -DHAVE_SNI -DHAVE_MAX_FRAGMENT -DHAVE_TRUNCATED_HMAC -DHAVE_RENEGOTIATION_INDICATION -DHAVE_SUPPORTED_CURVES" fi +# PKCS7 +AC_ARG_ENABLE([pkcs7], + [ --enable-pkcs7 Enable PKCS7 (default: disabled)], + [ ENABLED_PKCS7=$enableval ], + [ ENABLED_PKCS7=no ], + ) + +if test "$ENABLED_PKCS7" = "yes" +then + AM_CFLAGS="$AM_CFLAGS -DHAVE_PKCS7" +fi + +AM_CONDITIONAL([BUILD_PKCS7], [test "x$ENABLED_PKCS7" = "xyes"]) + + +# Simple Certificate Enrollment Protocol (SCEP) +AC_ARG_ENABLE([scep], + [ --enable-scep Enable wolfSCEP (default: disabled)], + [ ENABLED_WOLFSCEP=$enableval ], + [ ENABLED_WOLFSCEP=no ] + ) +if test "$ENABLED_WOLFSCEP" = "yes" +then + # Enable prereqs if not already enabled + if test "x$ENABLED_KEYGEN" = "xno" + then + ENABLED_KEYGEN="yes" + AM_CFLAGS="$AM_CFLAGS -DCYASSL_KEY_GEN" + fi + if test "x$ENABLED_CERTGEN" = "xno" + then + ENABLED_CERTGEN="yes" + AM_CFLAGS="$AM_CFLAGS -DCYASSL_CERT_GEN" + fi + if test "x$ENABLED_CERTREQ" = "xno" + then + ENABLED_CERTREQ="yes" + AM_CFLAGS="$AM_CFLAGS -DCYASSL_CERT_REQ" + fi + if test "x$ENABLED_PKCS7" = "xno" + then + ENABLED_PKCS7="yes" + AM_CFLAGS="$AM_CFLAGS -DHAVE_PKCS7" + AM_CONDITIONAL([BUILD_PKCS7], [test "x$ENABLED_PKCS7" = "xyes"]) + fi + AM_CFLAGS="$AM_CFLAGS -DCYASSL_HAVE_WOLFSCEP" +fi + + #valgrind AC_ARG_ENABLE([valgrind], [ --enable-valgrind Enable valgrind for unit tests (default: disabled)], @@ -1504,6 +1641,7 @@ echo " * Filesystem: $ENABLED_FILESYSTEM" echo " * OpenSSL Extra API: $ENABLED_OPENSSLEXTRA" echo " * fastmath: $ENABLED_FASTMATH" echo " * sniffer: $ENABLED_SNIFFER" +echo " * snifftest: $ENABLED_SNIFFTEST" echo " * ARC4: $ENABLED_ARC4" echo " * AES: $ENABLED_AES" echo " * AES-NI: $ENABLED_AESNI" @@ -1519,9 +1657,11 @@ echo " * SHA-512: $ENABLED_SHA512" echo " * BLAKE2: $ENABLED_BLAKE2" echo " * keygen: $ENABLED_KEYGEN" echo " * certgen: $ENABLED_CERTGEN" +echo " * certreq: $ENABLED_CERTREQ" echo " * HC-128: $ENABLED_HC128" echo " * RABBIT: $ENABLED_RABBIT" echo " * PWDBASED: $ENABLED_PWDBASED" +echo " * HKDF: $ENABLED_HKDF" echo " * MD4: $ENABLED_MD4" echo " * PSK: $ENABLED_PSK" echo " * LEANPSK: $ENABLED_LEANPSK" @@ -1530,6 +1670,7 @@ echo " * DSA: $ENABLED_DSA" echo " * DH: $ENABLED_DH" echo " * ECC: $ENABLED_ECC" echo " * FPECC: $ENABLED_FPECC" +echo " * ECC_ENCRYPT: $ENABLED_ECC_ENCRYPT" echo " * ASN: $ENABLED_ASN" echo " * CODING: $ENABLED_CODING" echo " * MEMORY: $ENABLED_MEMORY" @@ -1547,7 +1688,11 @@ echo " * NTRU: $ENABLED_NTRU" echo " * SNI: $ENABLED_SNI" echo " * Maximum Fragment Length: $ENABLED_MAX_FRAGMENT" echo " * Truncated HMAC: $ENABLED_TRUNCATED_HMAC" +echo " * Renegotiation Indication: $ENABLED_RENEGOTIATION_INDICATION" +echo " * Supported Elliptic Curves: $ENABLED_SUPPORTED_CURVES" echo " * All TLS Extensions: $ENABLED_TLSX" +echo " * PKCS#7 $ENABLED_PKCS7" +echo " * wolfSCEP $ENABLED_WOLFSCEP" echo " * valgrind unit tests: $ENABLED_VALGRIND" echo " * LIBZ: $ENABLED_LIBZ" echo " * Examples: $ENABLED_EXAMPLES" diff --git a/ctaocrypt/benchmark/benchmark.c b/ctaocrypt/benchmark/benchmark.c index a6143139e..2086aaf10 100644 --- a/ctaocrypt/benchmark/benchmark.c +++ b/ctaocrypt/benchmark/benchmark.c @@ -221,13 +221,13 @@ int benchmark_test(void *args) #ifdef BENCH_EMBEDDED const int numBlocks = 25; /* how many kB/megs to test (en/de)cryption */ const char blockType[] = "kB"; /* used in printf output */ -const int times = 1; /* public key iterations */ +const int ntimes = 1; /* public key iterations */ const int genTimes = 5; const int agreeTimes = 5; #else const int numBlocks = 5; const char blockType[] = "megs"; -const int times = 100; +const int ntimes = 100; const int genTimes = 100; const int agreeTimes = 100; #endif @@ -742,15 +742,15 @@ void bench_rsa(void) start = current_time(1); - for (i = 0; i < times; i++) + for (i = 0; i < ntimes; i++) ret = RsaPublicEncrypt(message,len,enc,sizeof(enc), &rsaKey, &rng); total = current_time(0) - start; - each = total / times; /* per second */ + each = total / ntimes; /* per second */ milliEach = each * 1000; /* milliseconds */ printf("RSA %d encryption took %6.2f milliseconds, avg over %d" - " iterations\n", rsaKeySz, milliEach, times); + " iterations\n", rsaKeySz, milliEach, ntimes); if (ret < 0) { printf("Rsa Public Encrypt failed\n"); @@ -759,17 +759,17 @@ void bench_rsa(void) start = current_time(1); - for (i = 0; i < times; i++) { + 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 / times; /* per second */ + each = total / ntimes; /* per second */ milliEach = each * 1000; /* milliseconds */ printf("RSA %d decryption took %6.2f milliseconds, avg over %d" - " iterations\n", rsaKeySz, milliEach, times); + " iterations\n", rsaKeySz, milliEach, ntimes); FreeRsaKey(&rsaKey); #ifdef HAVE_CAVIUM @@ -847,28 +847,28 @@ void bench_dh(void) start = current_time(1); - for (i = 0; i < times; i++) + for (i = 0; i < ntimes; i++) DhGenerateKeyPair(&dhKey, &rng, priv, &privSz, pub, &pubSz); total = current_time(0) - start; - each = total / times; /* per second */ + each = total / ntimes; /* per second */ milliEach = each * 1000; /* milliseconds */ printf("DH %d key generation %6.2f milliseconds, avg over %d" - " iterations\n", dhKeySz, milliEach, times); + " iterations\n", dhKeySz, milliEach, ntimes); DhGenerateKeyPair(&dhKey, &rng, priv2, &privSz2, pub2, &pubSz2); start = current_time(1); - for (i = 0; i < times; i++) + for (i = 0; i < ntimes; i++) DhAgree(&dhKey, agree, &agreeSz, priv, privSz, pub2, pubSz2); total = current_time(0) - start; - each = total / times; /* per second */ + each = total / ntimes; /* per second */ milliEach = each * 1000; /* milliseconds */ printf("DH %d key agreement %6.2f milliseconds, avg over %d" - " iterations\n", dhKeySz, milliEach, times); + " iterations\n", dhKeySz, milliEach, ntimes); #if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) fclose(file); @@ -923,7 +923,6 @@ void bench_eccKeyGen(void) ecc_key genKey; double start, total, each, milliEach; int i, ret; - const int genTimes = 5; ret = InitRng(&rng); if (ret < 0) { @@ -952,7 +951,6 @@ void bench_eccKeyAgree(void) ecc_key genKey, genKey2; double start, total, each, milliEach; int i, ret; - const int agreeTimes = 5; byte shared[1024]; byte sig[1024]; byte digest[32]; @@ -1048,13 +1046,13 @@ void bench_eccKeyAgree(void) double current_time(int reset) { - (void)reset; - static int init = 0; static LARGE_INTEGER freq; LARGE_INTEGER count; + (void)reset; + if (!init) { QueryPerformanceFrequency(&freq); init = 1; @@ -1089,20 +1087,35 @@ void bench_eccKeyAgree(void) } #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; - struct timeval tv; gettimeofday(&tv, 0); return (double)tv.tv_sec + (double)tv.tv_usec / 1000000; } #endif /* _WIN32 */ - diff --git a/ctaocrypt/src/asm.c b/ctaocrypt/src/asm.c index e19410e8a..941478a42 100644 --- a/ctaocrypt/src/asm.c +++ b/ctaocrypt/src/asm.c @@ -1004,15 +1004,17 @@ __asm__( \ #define SQRADDAC(i, j) \ do { fp_word t; \ - t = sc0 + ((fp_word)i) * ((fp_word)j); sc0 = t; \ - t = sc1 + (t >> DIGIT_BIT); sc1 = t; sc2 += t >> DIGIT_BIT; \ + t = sc0 + ((fp_word)i) * ((fp_word)j); sc0 = (fp_digit)t; \ + t = sc1 + (t >> DIGIT_BIT); sc1 = (fp_digit)t; \ + sc2 += (fp_digit)(t >> DIGIT_BIT); \ } while (0); #define SQRADDDB \ do { fp_word t; \ - t = ((fp_word)sc0) + ((fp_word)sc0) + c0; c0 = t; \ - t = ((fp_word)sc1) + ((fp_word)sc1) + c1 + (t >> DIGIT_BIT); c1 = t; \ - c2 = c2 + ((fp_word)sc2) + ((fp_word)sc2) + (t >> DIGIT_BIT); \ + t = ((fp_word)sc0) + ((fp_word)sc0) + c0; c0 = (fp_digit)t; \ + t = ((fp_word)sc1) + ((fp_word)sc1) + c1 + (t >> DIGIT_BIT); \ + c1 = (fp_digit)t; \ + c2 = c2 + (fp_digit)(((fp_word)sc2) + ((fp_word)sc2) + (t >> DIGIT_BIT)); \ } while (0); #endif diff --git a/ctaocrypt/src/asn.c b/ctaocrypt/src/asn.c index 65ff0a660..bf6811375 100644 --- a/ctaocrypt/src/asn.c +++ b/ctaocrypt/src/asn.c @@ -398,8 +398,8 @@ CPU_INT32S NetSecure_ValidateDateHandler(CPU_INT08U *date, CPU_INT08U format, #endif /* MICRIUM */ -static int GetLength(const byte* input, word32* inOutIdx, int* len, - word32 maxIdx) +CYASSL_LOCAL int GetLength(const byte* input, word32* inOutIdx, int* len, + word32 maxIdx) { int length = 0; word32 i = *inOutIdx; @@ -439,8 +439,8 @@ static int GetLength(const byte* input, word32* inOutIdx, int* len, } -static int GetSequence(const byte* input, word32* inOutIdx, int* len, - word32 maxIdx) +CYASSL_LOCAL int GetSequence(const byte* input, word32* inOutIdx, int* len, + word32 maxIdx) { int length = -1; word32 idx = *inOutIdx; @@ -456,7 +456,8 @@ static int GetSequence(const byte* input, word32* inOutIdx, int* len, } -static int GetSet(const byte* input, word32* inOutIdx, int* len, word32 maxIdx) +CYASSL_LOCAL int GetSet(const byte* input, word32* inOutIdx, int* len, + word32 maxIdx) { int length = -1; word32 idx = *inOutIdx; @@ -473,7 +474,7 @@ static int GetSet(const byte* input, word32* inOutIdx, int* len, word32 maxIdx) /* winodws header clash for WinCE using GetVersion */ -static int GetMyVersion(const byte* input, word32* inOutIdx, int* version) +CYASSL_LOCAL int GetMyVersion(const byte* input, word32* inOutIdx, int* version) { word32 idx = *inOutIdx; @@ -537,7 +538,7 @@ static int GetExplicitVersion(const byte* input, word32* inOutIdx, int* version) } -static int GetInt(mp_int* mpi, const byte* input, word32* inOutIdx, +CYASSL_LOCAL int GetInt(mp_int* mpi, const byte* input, word32* inOutIdx, word32 maxIdx) { word32 i = *inOutIdx; @@ -593,7 +594,7 @@ static int GetObjectId(const byte* input, word32* inOutIdx, word32* oid, } -static int GetAlgoId(const byte* input, word32* inOutIdx, word32* oid, +CYASSL_LOCAL int GetAlgoId(const byte* input, word32* inOutIdx, word32* oid, word32 maxIdx) { int length; @@ -764,7 +765,7 @@ int ToTraditional(byte* input, word32 sz) XMEMMOVE(input, input + inOutIdx, length); - return 0; + return length; } @@ -1280,6 +1281,10 @@ void InitDecodedCert(DecodedCert* cert, byte* source, word32 inSz, void* heap) XMEMSET(cert->extAuthKeyId, 0, SHA_SIZE); cert->extAuthKeyIdSet = 0; cert->isCA = 0; +#ifdef HAVE_PKCS7 + cert->issuerRaw = NULL; + cert->issuerRawLen = 0; +#endif #ifdef CYASSL_CERT_GEN cert->subjectSN = 0; cert->subjectSNLen = 0; @@ -1303,7 +1308,25 @@ void InitDecodedCert(DecodedCert* cert, byte* source, word32 inSz, void* heap) #ifdef OPENSSL_EXTRA XMEMSET(&cert->issuerName, 0, sizeof(DecodedName)); XMEMSET(&cert->subjectName, 0, sizeof(DecodedName)); + cert->extBasicConstSet = 0; + cert->extBasicConstCrit = 0; + cert->extBasicConstPlSet = 0; + cert->pathLength = 0; + cert->extSubjAltNameSet = 0; + cert->extSubjAltNameCrit = 0; + cert->extAuthKeyIdCrit = 0; + cert->extSubjKeyIdCrit = 0; + cert->extKeyUsageSet = 0; + cert->extKeyUsageCrit = 0; + cert->extKeyUsage = 0; + cert->extAuthKeyIdSrc = NULL; + cert->extAuthKeyIdSz = 0; + cert->extSubjKeyIdSrc = NULL; + cert->extSubjKeyIdSz = 0; #endif /* OPENSSL_EXTRA */ +#ifdef HAVE_ECC + cert->pkCurveOID = 0; +#endif /* HAVE_ECC */ #ifdef CYASSL_SEP cert->deviceTypeSz = 0; cert->deviceType = NULL; @@ -1311,6 +1334,10 @@ void InitDecodedCert(DecodedCert* cert, byte* source, word32 inSz, void* heap) cert->hwType = NULL; cert->hwSerialNumSz = 0; cert->hwSerialNum = NULL; + #ifdef OPENSSL_EXTRA + cert->extCertPolicySet = 0; + cert->extCertPolicyCrit = 0; + #endif /* OPENSSL_EXTRA */ #endif /* CYASSL_SEP */ } @@ -1434,7 +1461,7 @@ static int GetKey(DecodedCert* cert) if (GetSequence(cert->source, &cert->srcIdx, &length, cert->maxIdx) < 0) return ASN_PARSE_E; - + if (GetAlgoId(cert->source, &cert->srcIdx, &cert->keyOID, cert->maxIdx) < 0) return ASN_PARSE_E; @@ -1495,7 +1522,6 @@ static int GetKey(DecodedCert* cert) #ifdef HAVE_ECC case ECDSAk: { - word32 oid = 0; int oidSz = 0; byte b = cert->source[cert->srcIdx++]; @@ -1506,8 +1532,9 @@ static int GetKey(DecodedCert* cert) return ASN_PARSE_E; while(oidSz--) - oid += cert->source[cert->srcIdx++]; - if (CheckCurve(oid) < 0) + cert->pkCurveOID += cert->source[cert->srcIdx++]; + + if (CheckCurve(cert->pkCurveOID) < 0) return ECC_CURVE_OID_E; /* key header */ @@ -1586,6 +1613,14 @@ static int GetName(DecodedCert* cert, int nameType) length += cert->srcIdx; idx = 0; +#ifdef HAVE_PKCS7 + /* store pointer to raw issuer */ + if (nameType == ISSUER) { + cert->issuerRaw = &cert->source[cert->srcIdx]; + cert->issuerRawLen = length - cert->srcIdx; + } +#endif + while (cert->srcIdx < (word32)length) { byte b; byte joint[2]; @@ -2128,10 +2163,14 @@ int DecodeToKey(DecodedCert* cert, int verify) if ( (ret = GetCertHeader(cert)) < 0) return ret; + CYASSL_MSG("Got Cert Header"); + if ( (ret = GetAlgoId(cert->source, &cert->srcIdx, &cert->signatureOID, cert->maxIdx)) < 0) return ret; + CYASSL_MSG("Got Algo ID"); + if ( (ret = GetName(cert, ISSUER)) < 0) return ret; @@ -2141,9 +2180,13 @@ int DecodeToKey(DecodedCert* cert, int verify) if ( (ret = GetName(cert, SUBJECT)) < 0) return ret; + CYASSL_MSG("Got Subject Name"); + if ( (ret = GetKey(cert)) < 0) return ret; + CYASSL_MSG("Got Key"); + if (badDate != 0) return badDate; @@ -2197,7 +2240,7 @@ static word32 BytePrecision(word32 value) } -static word32 SetLength(word32 length, byte* output) +CYASSL_LOCAL word32 SetLength(word32 length, byte* output) { word32 i = 0, j; @@ -2216,14 +2259,114 @@ static word32 SetLength(word32 length, byte* output) } -static word32 SetSequence(word32 len, byte* output) +CYASSL_LOCAL word32 SetSequence(word32 len, byte* output) { output[0] = ASN_SEQUENCE | ASN_CONSTRUCTED; return SetLength(len, output + 1) + 1; } +CYASSL_LOCAL word32 SetOctetString(word32 len, byte* output) +{ + output[0] = ASN_OCTET_STRING; + return SetLength(len, output + 1) + 1; +} -static word32 SetAlgoID(int algoOID, byte* output, int type) +/* Write a set header to output */ +CYASSL_LOCAL word32 SetSet(word32 len, byte* output) +{ + output[0] = ASN_SET | ASN_CONSTRUCTED; + return SetLength(len, output + 1) + 1; +} + +CYASSL_LOCAL word32 SetImplicit(byte tag, byte number, word32 len, byte* output) +{ + + output[0] = ((tag == ASN_SEQUENCE || tag == ASN_SET) ? ASN_CONSTRUCTED : 0) + | ASN_CONTEXT_SPECIFIC | number; + return SetLength(len, output + 1) + 1; +} + +CYASSL_LOCAL word32 SetExplicit(byte number, word32 len, byte* output) +{ + output[0] = ASN_CONSTRUCTED | ASN_CONTEXT_SPECIFIC | number; + return SetLength(len, output + 1) + 1; +} + + +#if defined(HAVE_ECC) && defined(CYASSL_CERT_GEN) + +static word32 SetCurve(ecc_key* key, byte* output) +{ + + /* curve types */ + static const byte ECC_192v1_AlgoID[] = { 0x2a, 0x86, 0x48, 0xCE, 0x3d, + 0x03, 0x01, 0x01}; + static const byte ECC_256v1_AlgoID[] = { 0x2a, 0x86, 0x48, 0xCE, 0x3d, + 0x03, 0x01, 0x07}; + static const byte ECC_160r1_AlgoID[] = { 0x2b, 0x81, 0x04, 0x00, + 0x02}; + static const byte ECC_224r1_AlgoID[] = { 0x2b, 0x81, 0x04, 0x00, + 0x21}; + static const byte ECC_384r1_AlgoID[] = { 0x2b, 0x81, 0x04, 0x00, + 0x22}; + static const byte ECC_521r1_AlgoID[] = { 0x2b, 0x81, 0x04, 0x00, + 0x23}; + + int oidSz = 0; + int idx = 0; + int lenSz = 0; + const byte* oid = 0; + + output[0] = ASN_OBJECT_ID; + idx++; + + switch (key->dp->size) { + case 20: + oidSz = sizeof(ECC_160r1_AlgoID); + oid = ECC_160r1_AlgoID; + break; + + case 24: + oidSz = sizeof(ECC_192v1_AlgoID); + oid = ECC_192v1_AlgoID; + break; + + case 28: + oidSz = sizeof(ECC_224r1_AlgoID); + oid = ECC_224r1_AlgoID; + break; + + case 32: + oidSz = sizeof(ECC_256v1_AlgoID); + oid = ECC_256v1_AlgoID; + break; + + case 48: + oidSz = sizeof(ECC_384r1_AlgoID); + oid = ECC_384r1_AlgoID; + break; + + case 66: + oidSz = sizeof(ECC_521r1_AlgoID); + oid = ECC_521r1_AlgoID; + break; + + default: + return ASN_UNKNOWN_OID_E; + } + lenSz = SetLength(oidSz, output+idx); + idx += lenSz; + + XMEMCPY(output+idx, oid, oidSz); + idx += oidSz; + + return idx; +} + +#endif /* HAVE_ECC && CYASSL_CERT_GEN */ + + +CYASSL_LOCAL word32 SetAlgoID(int algoOID, byte* output, int type, int curveSz) { /* adding TAG_NULL and 0 to end */ @@ -2241,7 +2384,12 @@ static word32 SetAlgoID(int algoOID, byte* output, int type) static const byte md2AlgoID[] = { 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x02, 0x02, 0x05, 0x00}; - /* sigTypes */ + /* blkTypes, no NULL tags because IV is there instead */ + static const byte desCbcAlgoID[] = { 0x2B, 0x0E, 0x03, 0x02, 0x07 }; + static const byte des3CbcAlgoID[] = { 0x2A, 0x86, 0x48, 0x86, 0xF7, + 0x0D, 0x03, 0x07 }; + + /* RSA sigTypes */ #ifndef NO_RSA static const byte md5wRSA_AlgoID[] = { 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x04, 0x05, 0x00}; @@ -2255,13 +2403,33 @@ static word32 SetAlgoID(int algoOID, byte* output, int type) 0x0d, 0x01, 0x01, 0x0d, 0x05, 0x00}; #endif /* NO_RSA */ - /* keyTypes */ + /* ECDSA sigTypes */ + #ifdef HAVE_ECC + static const byte shawECDSA_AlgoID[] = { 0x2a, 0x86, 0x48, 0xCE, 0x3d, + 0x04, 0x01, 0x05, 0x00}; + static const byte sha256wECDSA_AlgoID[] = { 0x2a, 0x86, 0x48, 0xCE,0x3d, + 0x04, 0x03, 0x02, 0x05, 0x00}; + static const byte sha384wECDSA_AlgoID[] = { 0x2a, 0x86, 0x48, 0xCE,0x3d, + 0x04, 0x03, 0x03, 0x05, 0x00}; + static const byte sha512wECDSA_AlgoID[] = { 0x2a, 0x86, 0x48, 0xCE,0x3d, + 0x04, 0x03, 0x04, 0x05, 0x00}; + #endif /* HAVE_ECC */ + + /* RSA keyType */ #ifndef NO_RSA static const byte RSA_AlgoID[] = { 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00}; #endif /* NO_RSA */ + #ifdef HAVE_ECC + /* ECC keyType */ + /* no tags, so set tagSz smaller later */ + static const byte ECC_AlgoID[] = { 0x2a, 0x86, 0x48, 0xCE, 0x3d, + 0x02, 0x01}; + #endif /* HAVE_ECC */ + int algoSz = 0; + int tagSz = 2; /* tag null and terminator */ word32 idSz, seqSz; const byte* algoName = 0; byte ID_Length[MAX_LENGTH_SZ]; @@ -2304,6 +2472,23 @@ static word32 SetAlgoID(int algoOID, byte* output, int type) return 0; /* UNKOWN_HASH_E; */ } } + else if (type == blkType) { + switch (algoOID) { + case DESb: + algoSz = sizeof(desCbcAlgoID); + algoName = desCbcAlgoID; + tagSz = 0; + break; + case DES3b: + algoSz = sizeof(des3CbcAlgoID); + algoName = des3CbcAlgoID; + tagSz = 0; + break; + default: + CYASSL_MSG("Unknown Block Algo"); + return 0; + } + } else if (type == sigType) { /* sigType */ switch (algoOID) { #ifndef NO_RSA @@ -2332,6 +2517,27 @@ static word32 SetAlgoID(int algoOID, byte* output, int type) algoName = sha512wRSA_AlgoID; break; #endif /* NO_RSA */ + #ifdef HAVE_ECC + case CTC_SHAwECDSA: + algoSz = sizeof(shawECDSA_AlgoID); + algoName = shawECDSA_AlgoID; + break; + + case CTC_SHA256wECDSA: + algoSz = sizeof(sha256wECDSA_AlgoID); + algoName = sha256wECDSA_AlgoID; + break; + + case CTC_SHA384wECDSA: + algoSz = sizeof(sha384wECDSA_AlgoID); + algoName = sha384wECDSA_AlgoID; + break; + + case CTC_SHA512wECDSA: + algoSz = sizeof(sha512wECDSA_AlgoID); + algoName = sha512wECDSA_AlgoID; + break; + #endif /* HAVE_ECC */ default: CYASSL_MSG("Unknown Signature Algo"); return 0; @@ -2345,6 +2551,13 @@ static word32 SetAlgoID(int algoOID, byte* output, int type) algoName = RSA_AlgoID; break; #endif /* NO_RSA */ + #ifdef HAVE_ECC + case ECDSAk: + algoSz = sizeof(ECC_AlgoID); + algoName = ECC_AlgoID; + tagSz = 0; + break; + #endif /* HAVE_ECC */ default: CYASSL_MSG("Unknown Key Algo"); return 0; @@ -2355,8 +2568,9 @@ static word32 SetAlgoID(int algoOID, byte* output, int type) return 0; } - idSz = SetLength(algoSz - 2, ID_Length); /* don't include TAG_NULL/0 */ - seqSz = SetSequence(idSz + algoSz + 1, seqArray); + idSz = SetLength(algoSz - tagSz, ID_Length); /* don't include tags */ + seqSz = SetSequence(idSz + algoSz + 1 + curveSz, seqArray); + /* +1 for object id, curveID of curveSz follows for ecc */ seqArray[seqSz++] = ASN_OBJECT_ID; XMEMCPY(output, seqArray, seqSz); @@ -2376,7 +2590,7 @@ word32 EncodeSignature(byte* out, const byte* digest, word32 digSz, int hashOID) word32 encDigSz, algoSz, seqSz; encDigSz = SetDigest(digest, digSz, digArray); - algoSz = SetAlgoID(hashOID, algoArray, hashType); + algoSz = SetAlgoID(hashOID, algoArray, hashType, 0); seqSz = SetSequence(encDigSz + algoSz, seqArray); XMEMCPY(out, seqArray, seqSz); @@ -2491,6 +2705,7 @@ static int ConfirmSignature(const byte* buf, word32 bufSz, CYASSL_MSG("Verify Signautre has unsupported type"); return 0; } + (void)typeH; /* some builds won't read */ switch (keyOID) { #ifndef NO_RSA @@ -2752,8 +2967,28 @@ static void DecodeBasicCaConstraint(byte* input, int sz, DecodedCert* cert) return; } - if (input[idx]) + if (input[idx++]) cert->isCA = 1; + + #ifdef OPENSSL_EXTRA + /* If there isn't any more data, return. */ + if (idx >= (word32)sz) + return; + + /* Anything left should be the optional pathlength */ + if (input[idx++] != ASN_INTEGER) { + CYASSL_MSG("\tfail: pathlen not INTEGER"); + return; + } + + if (input[idx++] != 1) { + CYASSL_MSG("\tfail: pathlen too long"); + return; + } + + cert->pathLength = input[idx]; + cert->extBasicConstPlSet = 1; + #endif /* OPENSSL_EXTRA */ } @@ -2843,6 +3078,7 @@ static void DecodeAuthInfo(byte* input, int sz, DecodedCert* cert) { word32 idx = 0; int length = 0; + byte b; word32 oid; CYASSL_ENTER("DecodeAuthInfo"); @@ -2850,35 +3086,26 @@ static void DecodeAuthInfo(byte* input, int sz, DecodedCert* cert) /* Unwrap the list of AIAs */ if (GetSequence(input, &idx, &length, sz) < 0) return; - /* Unwrap a single AIA */ - if (GetSequence(input, &idx, &length, sz) < 0) return; + while (idx < (word32)sz) { + /* Unwrap a single AIA */ + if (GetSequence(input, &idx, &length, sz) < 0) return; - oid = 0; - if (GetObjectId(input, &idx, &oid, sz) < 0) return; + oid = 0; + if (GetObjectId(input, &idx, &oid, sz) < 0) return; - /* Only supporting URIs right now. */ - if (input[idx] == (ASN_CONTEXT_SPECIFIC | GENERALNAME_URI)) - { - idx++; + /* Only supporting URIs right now. */ + b = input[idx++]; if (GetLength(input, &idx, &length, sz) < 0) return; - cert->extAuthInfoSz = length; - cert->extAuthInfo = input + idx; + if (b == (ASN_CONTEXT_SPECIFIC | GENERALNAME_URI) && + oid == AIA_OCSP_OID) + { + cert->extAuthInfoSz = length; + cert->extAuthInfo = input + idx; + break; + } idx += length; } - else - { - /* Skip anything else. */ - idx++; - if (GetLength(input, &idx, &length, sz) < 0) return; - idx += length; - } - - if (idx < (word32)sz) - { - CYASSL_MSG("\tThere are more Authority Information Access records, " - "but we only use first one."); - } return; } @@ -2906,6 +3133,11 @@ static void DecodeAuthKeyId(byte* input, int sz, DecodedCert* cert) return; } + #ifdef OPENSSL_EXTRA + cert->extAuthKeyIdSrc = &input[idx]; + cert->extAuthKeyIdSz = length; + #endif /* OPENSSL_EXTRA */ + if (length == SHA_SIZE) { XMEMCPY(cert->extAuthKeyId, input + idx, length); } @@ -2915,7 +3147,6 @@ static void DecodeAuthKeyId(byte* input, int sz, DecodedCert* cert) ShaUpdate(&sha, input + idx, length); ShaFinal(&sha, cert->extAuthKeyId); } - cert->extAuthKeyIdSet = 1; return; } @@ -2938,6 +3169,11 @@ static void DecodeSubjKeyId(byte* input, int sz, DecodedCert* cert) return; } + #ifdef OPENSSL_EXTRA + cert->extSubjKeyIdSrc = &input[idx]; + cert->extSubjKeyIdSz = length; + #endif /* OPENSSL_EXTRA */ + if (length == SIGNER_DIGEST_SIZE) { XMEMCPY(cert->extSubjKeyId, input + idx, length); } @@ -2947,12 +3183,44 @@ static void DecodeSubjKeyId(byte* input, int sz, DecodedCert* cert) ShaUpdate(&sha, input + idx, length); ShaFinal(&sha, cert->extSubjKeyId); } - cert->extSubjKeyIdSet = 1; return; } +#ifdef OPENSSL_EXTRA + static void DecodeKeyUsage(byte* input, int sz, DecodedCert* cert) + { + word32 idx = 0; + int length; + byte unusedBits; + CYASSL_ENTER("DecodeKeyUsage"); + + if (input[idx++] != ASN_BIT_STRING) { + CYASSL_MSG("\tfail: key usage expected bit string"); + return; + } + + if (GetLength(input, &idx, &length, sz) < 0) { + CYASSL_MSG("\tfail: key usage bad length"); + return; + } + + unusedBits = input[idx++]; + length--; + + if (length == 2) { + cert->extKeyUsage = (input[idx] << 8) | input[idx+1]; + cert->extKeyUsage >>= unusedBits; + } + else if (length == 1) + cert->extKeyUsage = (input[idx] << 1); + + return; + } +#endif /* OPENSSL_EXTRA */ + + #ifdef CYASSL_SEP static void DecodeCertPolicy(byte* input, int sz, DecodedCert* cert) { @@ -3008,6 +3276,9 @@ static void DecodeCertExtensions(DecodedCert* cert) byte* input = cert->extensions; int length; word32 oid; + byte critical; + + (void)critical; CYASSL_ENTER("DecodeCertExtensions"); @@ -3032,9 +3303,16 @@ static void DecodeCertExtensions(DecodedCert* cert) } /* check for critical flag */ + critical = 0; if (input[idx] == ASN_BOOLEAN) { - CYASSL_MSG("\tfound optional critical flag, moving past"); - idx += (ASN_BOOL_SIZE + 1); + int boolLength = 0; + idx++; + if (GetLength(input, &idx, &boolLength, sz) < 0) { + CYASSL_MSG("\tfail: critical boolean length"); + return; + } + if (input[idx++]) + critical = 1; } /* process the extension based on the OID */ @@ -3050,6 +3328,10 @@ static void DecodeCertExtensions(DecodedCert* cert) switch (oid) { case BASIC_CA_OID: + #ifdef OPENSSL_EXTRA + cert->extBasicConstSet = 1; + cert->extBasicConstCrit = critical; + #endif DecodeBasicCaConstraint(&input[idx], length, cert); break; @@ -3062,29 +3344,54 @@ static void DecodeCertExtensions(DecodedCert* cert) break; case ALT_NAMES_OID: + #ifdef OPENSSL_EXTRA + cert->extSubjAltNameSet = 1; + cert->extSubjAltNameCrit = critical; + #endif DecodeAltNames(&input[idx], length, cert); break; case AUTH_KEY_OID: + cert->extAuthKeyIdSet = 1; + #ifdef OPENSSL_EXTRA + cert->extAuthKeyIdCrit = critical; + #endif DecodeAuthKeyId(&input[idx], length, cert); break; case SUBJ_KEY_OID: + cert->extSubjKeyIdSet = 1; + #ifdef OPENSSL_EXTRA + cert->extSubjKeyIdCrit = critical; + #endif DecodeSubjKeyId(&input[idx], length, cert); break; #ifdef CYASSL_SEP case CERT_POLICY_OID: + #ifdef OPENSSL_EXTRA + cert->extCertPolicySet = 1; + cert->extCertPolicyCrit = critical; + #endif DecodeCertPolicy(&input[idx], length, cert); break; #endif + #ifdef OPENSSL_EXTRA + case KEY_USAGE_OID: + cert->extKeyUsageSet = 1; + cert->extKeyUsageCrit = critical; + DecodeKeyUsage(&input[idx], length, cert); + break; + #endif + default: CYASSL_MSG("\tExtension type not handled, skipping"); break; } idx += length; } + (void)critical; CYASSL_LEAVE("DecodeCertExtensions", 0); return; @@ -3111,7 +3418,8 @@ int ParseCert(DecodedCert* cert, int type, int verify, void* cm) cert->subjectCNStored = 1; } - if (cert->keyOID == RSAk && cert->pubKeySize > 0) { + if (cert->keyOID == RSAk && + cert->publicKey != NULL && cert->pubKeySize > 0) { ptr = (char*) XMALLOC(cert->pubKeySize, cert->heap, DYNAMIC_TYPE_PUBLIC_KEY); if (ptr == NULL) @@ -3151,6 +3459,8 @@ int ParseCertRelative(DecodedCert* cert, int type, int verify, void* cm) return ret; } + CYASSL_MSG("Parsed Past Key"); + if (cert->srcIdx != cert->sigIndex) { if (cert->srcIdx < cert->sigIndex) { /* save extensions */ @@ -3180,7 +3490,6 @@ int ParseCertRelative(DecodedCert* cert, int type, int verify, void* cm) InitSha(&sha); ShaUpdate(&sha, cert->publicKey, cert->pubKeySize); ShaFinal(&sha, cert->extSubjKeyId); - cert->extSubjKeyIdSet = 1; } #endif @@ -3277,9 +3586,7 @@ void FreeSignerTable(Signer** table, int rows, void* heap) } -#if defined(CYASSL_KEY_GEN) || defined(CYASSL_CERT_GEN) - -static int SetMyVersion(word32 version, byte* output, int header) +CYASSL_LOCAL int SetMyVersion(word32 version, byte* output, int header) { int i = 0; @@ -3295,6 +3602,39 @@ static int SetMyVersion(word32 version, byte* output, int header) } +CYASSL_LOCAL int SetSerialNumber(const byte* sn, word32 snSz, byte* output) +{ + int result = 0; + + CYASSL_ENTER("SetSerialNumber"); + + if (snSz <= EXTERNAL_SERIAL_SIZE) { + output[0] = ASN_INTEGER; + /* The serial number is always positive. When encoding the + * INTEGER, if the MSB is 1, add a padding zero to keep the + * number positive. */ + if (sn[0] & 0x80) { + output[1] = (byte)snSz + 1; + output[2] = 0; + XMEMCPY(&output[3], sn, snSz); + result = snSz + 3; + } + else { + output[1] = (byte)snSz; + XMEMCPY(&output[2], sn, snSz); + result = snSz + 2; + } + } + return result; +} + + + + +#if defined(CYASSL_KEY_GEN) || defined(CYASSL_CERT_GEN) + +/* convert der buffer to pem into output, can't do inplace, der and output + need to be different */ int DerToPem(const byte* der, word32 derSz, byte* output, word32 outSz, int type) { @@ -3307,6 +3647,9 @@ int DerToPem(const byte* der, word32 derSz, byte* output, word32 outSz, int err; int outLen; /* return length or error */ + if (der == output) /* no in place conversion */ + return BAD_FUNC_ARG; + if (type == CERT_TYPE) { XSTRNCPY(header, "-----BEGIN CERTIFICATE-----\n", sizeof(header)); XSTRNCPY(footer, "-----END CERTIFICATE-----\n", sizeof(footer)); @@ -3321,6 +3664,14 @@ int DerToPem(const byte* der, word32 derSz, byte* output, word32 outSz, XSTRNCPY(footer, "-----END EC PRIVATE KEY-----\n", sizeof(footer)); } #endif + #ifdef CYASSL_CERT_REQ + else if (type == CERTREQ_TYPE) + { + XSTRNCPY(header, + "-----BEGIN CERTIFICATE REQUEST-----\n", sizeof(header)); + XSTRNCPY(footer, "-----END CERTIFICATE REQUEST-----\n", sizeof(footer)); + } + #endif else return BAD_FUNC_ARG; @@ -3532,6 +3883,10 @@ void InitCert(Cert* cert) cert->subject.unit[0] = '\0'; cert->subject.commonName[0] = '\0'; cert->subject.email[0] = '\0'; + +#ifdef CYASSL_CERT_REQ + cert->challengePw[0] ='\0'; +#endif } @@ -3547,6 +3902,9 @@ typedef struct DerCert { byte publicKey[MAX_PUBLIC_KEY_SZ]; /* rsa / ntru public key encoded */ byte ca[MAX_CA_SZ]; /* basic constraint CA true size */ byte extensions[MAX_EXTENSIONS_SZ]; /* all extensions */ +#ifdef CYASSL_CERT_REQ + byte attrib[MAX_ATTRIB_SZ]; /* Cert req attributes encoded */ +#endif int sizeSz; /* encoded size length */ int versionSz; /* encoded version length */ int serialSz; /* encoded serial length */ @@ -3558,16 +3916,23 @@ typedef struct DerCert { int caSz; /* encoded CA extension length */ int extensionsSz; /* encoded extensions total length */ int total; /* total encoded lengths */ +#ifdef CYASSL_CERT_REQ + int attribSz; +#endif } DerCert; +#ifdef CYASSL_CERT_REQ + /* Write a set header to output */ -static word32 SetSet(word32 len, byte* output) +static word32 SetUTF8String(word32 len, byte* output) { - output[0] = ASN_SET | ASN_CONSTRUCTED; + output[0] = ASN_UTF8STRING; return SetLength(len, output + 1) + 1; } +#endif /* CYASSL_CERT_REQ */ + /* Write a serial number to output */ static int SetSerial(const byte* serial, byte* output) @@ -3582,8 +3947,59 @@ static int SetSerial(const byte* serial, byte* output) } +#ifdef HAVE_ECC + +/* Write a public ECC key to output */ +static int SetEccPublicKey(byte* output, ecc_key* key) +{ + byte algo[MAX_ALGO_SZ]; + byte curve[MAX_ALGO_SZ]; + byte len[MAX_LENGTH_SZ + 1]; /* trailing 0 */ + byte pub[ECC_BUFSIZE]; + int algoSz; + int curveSz; + int lenSz; + int idx; + word32 pubSz = sizeof(pub); + + int ret = ecc_export_x963(key, pub, &pubSz); + if (ret != 0) return ret; + + /* headers */ + curveSz = SetCurve(key, curve); + if (curveSz <= 0) return curveSz; + + algoSz = SetAlgoID(ECDSAk, algo, keyType, curveSz); + lenSz = SetLength(pubSz + 1, len); + len[lenSz++] = 0; /* trailing 0 */ + + /* write */ + idx = SetSequence(pubSz + curveSz + lenSz + 1 + algoSz, output); + /* 1 is for ASN_BIT_STRING */ + /* algo */ + XMEMCPY(output + idx, algo, algoSz); + idx += algoSz; + /* curve */ + XMEMCPY(output + idx, curve, curveSz); + idx += curveSz; + /* bit string */ + output[idx++] = ASN_BIT_STRING; + /* length */ + XMEMCPY(output + idx, len, lenSz); + idx += lenSz; + /* pub */ + XMEMCPY(output + idx, pub, pubSz); + idx += pubSz; + + return idx; +} + + +#endif /* HAVE_ECC */ + + /* Write a public RSA key to output */ -static int SetPublicKey(byte* output, RsaKey* key) +static int SetRsaPublicKey(byte* output, RsaKey* key) { byte n[MAX_RSA_INT_SZ]; byte e[MAX_RSA_E_SZ]; @@ -3597,14 +4013,19 @@ static int SetPublicKey(byte* output, RsaKey* key) int lenSz; int idx; int rawLen; + int leadingBit; + int err; /* n */ - rawLen = mp_unsigned_bin_size(&key->n); + leadingBit = mp_leading_bit(&key->n); + rawLen = mp_unsigned_bin_size(&key->n) + leadingBit; n[0] = ASN_INTEGER; nSz = SetLength(rawLen, n + 1) + 1; /* int tag */ if ( (nSz + rawLen) < (int)sizeof(n)) { - int err = mp_to_unsigned_bin(&key->n, n + nSz); + if (leadingBit) + n[nSz] = 0; + err = mp_to_unsigned_bin(&key->n, n + nSz + leadingBit); if (err == MP_OKAY) nSz += rawLen; else @@ -3614,12 +4035,15 @@ static int SetPublicKey(byte* output, RsaKey* key) return BUFFER_E; /* e */ - rawLen = mp_unsigned_bin_size(&key->e); + leadingBit = mp_leading_bit(&key->e); + rawLen = mp_unsigned_bin_size(&key->e) + leadingBit; e[0] = ASN_INTEGER; eSz = SetLength(rawLen, e + 1) + 1; /* int tag */ if ( (eSz + rawLen) < (int)sizeof(e)) { - int err = mp_to_unsigned_bin(&key->e, e + eSz); + if (leadingBit) + e[eSz] = 0; + err = mp_to_unsigned_bin(&key->e, e + eSz + leadingBit); if (err == MP_OKAY) eSz += rawLen; else @@ -3629,7 +4053,7 @@ static int SetPublicKey(byte* output, RsaKey* key) return BUFFER_E; /* headers */ - algoSz = SetAlgoID(RSAk, algo, keyType); + algoSz = SetAlgoID(RSAk, algo, keyType, 0); seqSz = SetSequence(nSz + eSz, seq); lenSz = SetLength(seqSz + nSz + eSz + 1, len); len[lenSz++] = 0; /* trailing 0 */ @@ -3852,19 +4276,21 @@ static byte GetNameId(int idx) /* encode all extensions, return total bytes written */ -static int SetExtensions(byte* output, const byte* ext, int extSz) +static int SetExtensions(byte* output, const byte* ext, int extSz, int header) { byte sequence[MAX_SEQ_SZ]; byte len[MAX_LENGTH_SZ]; int sz = 0; int seqSz = SetSequence(extSz, sequence); - int lenSz = SetLength(seqSz + extSz, len); - output[0] = ASN_EXTENSIONS; /* extensions id */ - sz++; - XMEMCPY(&output[sz], len, lenSz); /* length */ - sz += lenSz; + if (header) { + int lenSz = SetLength(seqSz + extSz, len); + output[0] = ASN_EXTENSIONS; /* extensions id */ + sz++; + XMEMCPY(&output[sz], len, lenSz); /* length */ + sz += lenSz; + } XMEMCPY(&output[sz], sequence, seqSz); /* sequence */ sz += seqSz; XMEMCPY(&output[sz], ext, extSz); /* extensions */ @@ -3957,12 +4383,16 @@ static int SetName(byte* output, CertName* name) } else { /* joint id */ + byte bType = GetNameId(i); names[i].encoded[idx++] = 0x55; names[i].encoded[idx++] = 0x04; /* id type */ - names[i].encoded[idx++] = GetNameId(i); + names[i].encoded[idx++] = bType; /* str type */ - names[i].encoded[idx++] = 0x13; + if (bType == ASN_COUNTRY_NAME) + names[i].encoded[idx++] = 0x13; /* printable */ + else + names[i].encoded[idx++] = 0x0c; /* utf8 */ } /* second length */ XMEMCPY(names[i].encoded + idx, secondLen, secondSz); @@ -3994,15 +4424,11 @@ static int SetName(byte* output, CertName* name) return totalBytes; } -/* encode info from cert into DER enocder format */ -static int EncodeCert( -Cert* cert, -DerCert* der, -RsaKey* rsaKey, -RNG* rng, - const byte* ntruKey, -word16 ntruSz) +/* encode info from cert into DER encoded format */ +static int EncodeCert(Cert* cert, DerCert* der, RsaKey* rsaKey, ecc_key* eccKey, + RNG* rng, const byte* ntruKey, word16 ntruSz) { + (void)eccKey; (void)ntruKey; (void)ntruSz; @@ -4018,18 +4444,31 @@ word16 ntruSz) der->serialSz = SetSerial(cert->serial, der->serial); /* signature algo */ - der->sigAlgoSz = SetAlgoID(cert->sigType, der->sigAlgo, sigType); + der->sigAlgoSz = SetAlgoID(cert->sigType, der->sigAlgo, sigType, 0); if (der->sigAlgoSz == 0) return ALGO_ID_E; /* public key */ if (cert->keyType == RSA_KEY) { - der->publicKeySz = SetPublicKey(der->publicKey, rsaKey); - if (der->publicKeySz == 0) + if (rsaKey == NULL) + return PUBLIC_KEY_E; + der->publicKeySz = SetRsaPublicKey(der->publicKey, rsaKey); + if (der->publicKeySz <= 0) return PUBLIC_KEY_E; } - else { + +#ifdef HAVE_ECC + if (cert->keyType == ECC_KEY) { + if (eccKey == NULL) + return PUBLIC_KEY_E; + der->publicKeySz = SetEccPublicKey(der->publicKey, eccKey); + if (der->publicKeySz <= 0) + return PUBLIC_KEY_E; + } +#endif /* HAVE_ECC */ + #ifdef HAVE_NTRU + if (cert->keyType == NTRU_KEY) { word32 rc; word16 encodedSz; @@ -4046,8 +4485,8 @@ word16 ntruSz) return PUBLIC_KEY_E; der->publicKeySz = encodedSz; -#endif } +#endif /* HAVE_NTRU */ der->validitySz = 0; #ifdef CYASSL_ALT_NAMES @@ -4088,7 +4527,8 @@ word16 ntruSz) /* extensions, just CA now */ if (cert->isCA) { - der->extensionsSz = SetExtensions(der->extensions, der->ca, der->caSz); + der->extensionsSz = SetExtensions(der->extensions, + der->ca, der->caSz, TRUE); if (der->extensionsSz == 0) return EXTENSIONS_E; } @@ -4098,7 +4538,7 @@ word16 ntruSz) #ifdef CYASSL_ALT_NAMES if (der->extensionsSz == 0 && cert->altNamesSz) { der->extensionsSz = SetExtensions(der->extensions, cert->altNames, - cert->altNamesSz); + cert->altNamesSz, TRUE); if (der->extensionsSz == 0) return EXTENSIONS_E; } @@ -4153,12 +4593,15 @@ static int WriteCertBody(DerCert* der, byte* buffer) /* Make RSA signature from buffer (sz), write to sig (sigSz) */ static int MakeSignature(const byte* buffer, int sz, byte* sig, int sigSz, - RsaKey* key, RNG* rng, int sigAlgoType) + RsaKey* rsaKey, ecc_key* eccKey, RNG* rng, + int sigAlgoType) { byte digest[SHA256_DIGEST_SIZE]; /* max size */ byte encSig[MAX_ENCODED_DIG_SZ + MAX_ALGO_SZ + MAX_SEQ_SZ]; int encSigSz, digestSz, typeH; + (void)eccKey; + if (sigAlgoType == CTC_MD5wRSA) { Md5 md5; InitMd5(&md5); @@ -4167,7 +4610,7 @@ static int MakeSignature(const byte* buffer, int sz, byte* sig, int sigSz, digestSz = MD5_DIGEST_SIZE; typeH = MD5h; } - else if (sigAlgoType == CTC_SHAwRSA) { + else if (sigAlgoType == CTC_SHAwRSA || sigAlgoType == CTC_SHAwECDSA) { Sha sha; InitSha(&sha); ShaUpdate(&sha, buffer, sz); @@ -4175,7 +4618,7 @@ static int MakeSignature(const byte* buffer, int sz, byte* sig, int sigSz, digestSz = SHA_DIGEST_SIZE; typeH = SHAh; } - else if (sigAlgoType == CTC_SHA256wRSA) { + else if (sigAlgoType == CTC_SHA256wRSA || sigAlgoType == CTC_SHA256wECDSA) { Sha256 sha256; InitSha256(&sha256); Sha256Update(&sha256, buffer, sz); @@ -4186,9 +4629,23 @@ static int MakeSignature(const byte* buffer, int sz, byte* sig, int sigSz, else return ALGO_ID_E; - /* signature */ - encSigSz = EncodeSignature(encSig, digest, digestSz, typeH); - return RsaSSL_Sign(encSig, encSigSz, sig, sigSz, key, rng); + if (rsaKey) { + /* signature */ + encSigSz = EncodeSignature(encSig, digest, digestSz, typeH); + return RsaSSL_Sign(encSig, encSigSz, sig, sigSz, rsaKey, rng); + } +#ifdef HAVE_ECC + else if (eccKey) { + word32 outSz = sigSz; + int ret = ecc_sign_hash(digest, digestSz, sig, &outSz, rng, eccKey); + + if (ret != 0) + return ret; + return outSz; + } +#endif /* HAVE_ECC */ + + return ALGO_ID_E; } @@ -4201,7 +4658,7 @@ static int AddSignature(byte* buffer, int bodySz, const byte* sig, int sigSz, int idx = bodySz, seqSz; /* algo */ - idx += SetAlgoID(sigAlgoType, buffer + idx, sigType); + idx += SetAlgoID(sigAlgoType, buffer + idx, sigType, 0); /* bit string */ buffer[idx++] = ASN_BIT_STRING; /* length */ @@ -4222,13 +4679,17 @@ static int AddSignature(byte* buffer, int bodySz, const byte* sig, int sigSz, /* Make an x509 Certificate v3 any key type from cert input, write to buffer */ static int MakeAnyCert(Cert* cert, byte* derBuffer, word32 derSz, - RsaKey* rsaKey, RNG* rng, const byte* ntruKey, word16 ntruSz) + RsaKey* rsaKey, ecc_key* eccKey, RNG* rng, + const byte* ntruKey, word16 ntruSz) { DerCert der; int ret; - cert->keyType = rsaKey ? RSA_KEY : NTRU_KEY; - ret = EncodeCert(cert, &der, rsaKey, rng, ntruKey, ntruSz); + if (eccKey) + cert->keyType = ECC_KEY; + else + cert->keyType = rsaKey ? RSA_KEY : NTRU_KEY; + ret = EncodeCert(cert, &der, rsaKey, eccKey, rng, ntruKey, ntruSz); if (ret != 0) return ret; @@ -4239,10 +4700,11 @@ static int MakeAnyCert(Cert* cert, byte* derBuffer, word32 derSz, } -/* Make an x509 Certificate v3 RSA from cert input, write to buffer */ -int MakeCert(Cert* cert, byte* derBuffer, word32 derSz, RsaKey* rsaKey,RNG* rng) +/* Make an x509 Certificate v3 RSA or ECC from cert input, write to buffer */ +int MakeCert(Cert* cert, byte* derBuffer, word32 derSz, RsaKey* rsaKey, + ecc_key* eccKey, RNG* rng) { - return MakeAnyCert(cert, derBuffer, derSz, rsaKey, rng, NULL, 0); + return MakeAnyCert(cert, derBuffer, derSz, rsaKey, eccKey, rng, NULL, 0); } @@ -4251,41 +4713,231 @@ int MakeCert(Cert* cert, byte* derBuffer, word32 derSz, RsaKey* rsaKey,RNG* rng) int MakeNtruCert(Cert* cert, byte* derBuffer, word32 derSz, const byte* ntruKey, word16 keySz, RNG* rng) { - return MakeAnyCert(cert, derBuffer, derSz, NULL, rng, ntruKey, keySz); + return MakeAnyCert(cert, derBuffer, derSz, NULL, NULL, rng, ntruKey, keySz); } #endif /* HAVE_NTRU */ -int SignCert(Cert* cert, byte* buffer, word32 buffSz, RsaKey* key, RNG* rng) +#ifdef CYASSL_CERT_REQ + +static int SetReqAttrib(byte* output, char* pw, int extSz) +{ + static const byte cpOid[] = + { ASN_OBJECT_ID, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x09, 0x07 }; + static const byte erOid[] = + { ASN_OBJECT_ID, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x09, 0x0e }; + + int sz = 0; /* overall size */ + int cpSz = 0; /* Challenge Password section size */ + int cpSeqSz = 0; + int cpSetSz = 0; + int cpStrSz = 0; + int pwSz = 0; + int erSz = 0; /* Extension Request section size */ + int erSeqSz = 0; + int erSetSz = 0; + byte cpSeq[MAX_SEQ_SZ]; + byte cpSet[MAX_SET_SZ]; + byte cpStr[MAX_PRSTR_SZ]; + byte erSeq[MAX_SEQ_SZ]; + byte erSet[MAX_SET_SZ]; + + output[0] = 0xa0; + sz++; + + if (pw && pw[0]) { + pwSz = (int)XSTRLEN(pw); + cpStrSz = SetUTF8String(pwSz, cpStr); + cpSetSz = SetSet(cpStrSz + pwSz, cpSet); + cpSeqSz = SetSequence(sizeof(cpOid) + cpSetSz + cpStrSz + pwSz, cpSeq); + cpSz = cpSeqSz + sizeof(cpOid) + cpSetSz + cpStrSz + pwSz; + } + + if (extSz) { + erSetSz = SetSet(extSz, erSet); + erSeqSz = SetSequence(erSetSz + sizeof(erOid) + extSz, erSeq); + erSz = extSz + erSetSz + erSeqSz + sizeof(erOid); + } + + /* Put the pieces together. */ + sz += SetLength(cpSz + erSz, &output[sz]); + + if (cpSz) { + XMEMCPY(&output[sz], cpSeq, cpSeqSz); + sz += cpSeqSz; + XMEMCPY(&output[sz], cpOid, sizeof(cpOid)); + sz += sizeof(cpOid); + XMEMCPY(&output[sz], cpSet, cpSetSz); + sz += cpSetSz; + XMEMCPY(&output[sz], cpStr, cpStrSz); + sz += cpStrSz; + XMEMCPY(&output[sz], pw, pwSz); + sz += pwSz; + } + + if (erSz) { + XMEMCPY(&output[sz], erSeq, erSeqSz); + sz += erSeqSz; + XMEMCPY(&output[sz], erOid, sizeof(erOid)); + sz += sizeof(erOid); + XMEMCPY(&output[sz], erSet, erSetSz); + sz += erSetSz; + /* The actual extension data will be tacked onto the output later. */ + } + + return sz; +} + + +/* encode info from cert into DER encoded format */ +static int EncodeCertReq(Cert* cert, DerCert* der, + RsaKey* rsaKey, ecc_key* eccKey) +{ + (void)eccKey; + + /* init */ + XMEMSET(der, 0, sizeof(DerCert)); + + /* version */ + der->versionSz = SetMyVersion(cert->version, der->version, FALSE); + + /* subject name */ + der->subjectSz = SetName(der->subject, &cert->subject); + if (der->subjectSz == 0) + return SUBJECT_E; + + /* public key */ + if (cert->keyType == RSA_KEY) { + if (rsaKey == NULL) + return PUBLIC_KEY_E; + der->publicKeySz = SetRsaPublicKey(der->publicKey, rsaKey); + if (der->publicKeySz <= 0) + return PUBLIC_KEY_E; + } + +#ifdef HAVE_ECC + if (cert->keyType == ECC_KEY) { + if (eccKey == NULL) + return PUBLIC_KEY_E; + der->publicKeySz = SetEccPublicKey(der->publicKey, eccKey); + if (der->publicKeySz <= 0) + return PUBLIC_KEY_E; + } +#endif /* HAVE_ECC */ + + /* CA */ + if (cert->isCA) { + der->caSz = SetCa(der->ca); + if (der->caSz == 0) + return CA_TRUE_E; + } + else + der->caSz = 0; + + /* extensions, just CA now */ + if (cert->isCA) { + der->extensionsSz = SetExtensions(der->extensions, + der->ca, der->caSz, FALSE); + if (der->extensionsSz == 0) + return EXTENSIONS_E; + } + else + der->extensionsSz = 0; + + der->attribSz = SetReqAttrib(der->attrib, + cert->challengePw, der->extensionsSz); + if (der->attribSz == 0) + return REQ_ATTRIBUTE_E; + + der->total = der->versionSz + der->subjectSz + der->publicKeySz + + der->extensionsSz + der->attribSz; + + return 0; +} + + +/* write DER encoded cert req to buffer, size already checked */ +static int WriteCertReqBody(DerCert* der, byte* buffer) +{ + int idx; + + /* signed part header */ + idx = SetSequence(der->total, buffer); + /* version */ + XMEMCPY(buffer + idx, der->version, der->versionSz); + idx += der->versionSz; + /* subject */ + XMEMCPY(buffer + idx, der->subject, der->subjectSz); + idx += der->subjectSz; + /* public key */ + XMEMCPY(buffer + idx, der->publicKey, der->publicKeySz); + idx += der->publicKeySz; + /* attributes */ + XMEMCPY(buffer + idx, der->attrib, der->attribSz); + idx += der->attribSz; + /* extensions */ + if (der->extensionsSz) { + XMEMCPY(buffer + idx, der->extensions, min(der->extensionsSz, + sizeof(der->extensions))); + idx += der->extensionsSz; + } + + return idx; +} + + +int MakeCertReq(Cert* cert, byte* derBuffer, word32 derSz, + RsaKey* rsaKey, ecc_key* eccKey) +{ + DerCert der; + int ret; + + cert->keyType = (eccKey != NULL) ? ECC_KEY : RSA_KEY; + ret = EncodeCertReq(cert, &der, rsaKey, eccKey); + if (ret != 0) + return ret; + + if (der.total + MAX_SEQ_SZ * 2 > (int)derSz) + return BUFFER_E; + + return cert->bodySz = WriteCertReqBody(&der, derBuffer); +} + +#endif /* CYASSL_CERT_REQ */ + + +int SignCert(int requestSz, int sType, byte* buffer, word32 buffSz, + RsaKey* rsaKey, ecc_key* eccKey, RNG* rng) { byte sig[MAX_ENCODED_SIG_SZ]; int sigSz; - int bodySz = cert->bodySz; - if (bodySz < 0) - return bodySz; + if (requestSz < 0) + return requestSz; - sigSz = MakeSignature(buffer, bodySz, sig, sizeof(sig), key, rng, - cert->sigType); + sigSz = MakeSignature(buffer, requestSz, sig, sizeof(sig), rsaKey, eccKey, + rng, sType); if (sigSz < 0) return sigSz; - if (bodySz + MAX_SEQ_SZ * 2 + sigSz > (int)buffSz) + if (requestSz + MAX_SEQ_SZ * 2 + sigSz > (int)buffSz) return BUFFER_E; - return AddSignature(buffer, bodySz, sig, sigSz, cert->sigType); + return AddSignature(buffer, requestSz, sig, sigSz, sType); } int MakeSelfCert(Cert* cert, byte* buffer, word32 buffSz, RsaKey* key, RNG* rng) { - int ret = MakeCert(cert, buffer, buffSz, key, rng); + int ret = MakeCert(cert, buffer, buffSz, key, NULL, rng); if (ret < 0) return ret; - return SignCert(cert, buffer, buffSz, key, rng); + return SignCert(cert->bodySz, cert->sigType, buffer, buffSz, key, NULL,rng); } @@ -4611,7 +5263,8 @@ int StoreECC_DSA_Sig(byte* out, word32* outLen, mp_int* r, mp_int* s) int sLen = mp_unsigned_bin_size(s); int err; - if (*outLen < (rLen + sLen + headerSz + 2)) /* SEQ_TAG + LEN(ENUM) */ + if (*outLen < (rLen + rLeadingZero + sLen + sLeadingZero + + headerSz + 2)) /* SEQ_TAG + LEN(ENUM) */ return BAD_FUNC_ARG; idx = SetSequence(rLen+rLeadingZero+sLen+sLeadingZero+headerSz, out); @@ -5215,33 +5868,6 @@ int OcspResponseDecode(OcspResponse* resp) } -static int SetSerialNumber(const byte* sn, word32 snSz, byte* output) -{ - int result = 0; - - CYASSL_ENTER("SetSerialNumber"); - - if (snSz <= EXTERNAL_SERIAL_SIZE) { - output[0] = ASN_INTEGER; - /* The serial number is always positive. When encoding the - * INTEGER, if the MSB is 1, add a padding zero to keep the - * number positive. */ - if (sn[0] & 0x80) { - output[1] = (byte)snSz + 1; - output[2] = 0; - XMEMCPY(&output[3], sn, snSz); - result = snSz + 3; - } - else { - output[1] = (byte)snSz; - XMEMCPY(&output[2], sn, snSz); - result = snSz + 2; - } - } - return result; -} - - static word32 SetOcspReqExtensions(word32 extSz, byte* output, const byte* nonce, word32 nonceSz) { @@ -5310,7 +5936,7 @@ int EncodeOcspRequest(OcspRequest* req) CYASSL_ENTER("EncodeOcspRequest"); - algoSz = SetAlgoID(SHAh, algoArray, hashType); + algoSz = SetAlgoID(SHAh, algoArray, hashType, 0); req->issuerHash = req->cert->issuerHash; issuerSz = SetDigest(req->cert->issuerHash, SHA_SIZE, issuerArray); @@ -5398,7 +6024,9 @@ int CompareOcspReqResp(OcspRequest* req, OcspResponse* resp) return 1; } - if (req->useNonce) { + /* Nonces are not critical. The responder may not necessarily add + * the nonce to the response. */ + if (req->useNonce && resp->nonceSz != 0) { cmp = req->nonceSz - resp->nonceSz; if (cmp != 0) { @@ -5448,39 +6076,9 @@ int CompareOcspReqResp(OcspRequest* req, OcspResponse* resp) #endif -#ifdef HAVE_CRL - -/* initialize decoded CRL */ -void InitDecodedCRL(DecodedCRL* dcrl) -{ - CYASSL_MSG("InitDecodedCRL"); - - dcrl->certBegin = 0; - dcrl->sigIndex = 0; - dcrl->sigLength = 0; - dcrl->signatureOID = 0; - dcrl->certs = NULL; - dcrl->totalCerts = 0; -} - - -/* free decoded CRL resources */ -void FreeDecodedCRL(DecodedCRL* dcrl) -{ - RevokedCert* tmp = dcrl->certs; - - CYASSL_MSG("FreeDecodedCRL"); - - while(tmp) { - RevokedCert* next = tmp->next; - XFREE(tmp, NULL, DYNAMIC_TYPE_REVOKED); - tmp = next; - } -} - - /* store SHA1 hash of NAME */ -static int GetNameHash(const byte* source, word32* idx, byte* hash, int maxIdx) +CYASSL_LOCAL int GetNameHash(const byte* source, word32* idx, byte* hash, + int maxIdx) { Sha sha; int length; /* length of all distinguished names */ @@ -5515,6 +6113,37 @@ static int GetNameHash(const byte* source, word32* idx, byte* hash, int maxIdx) } +#ifdef HAVE_CRL + +/* initialize decoded CRL */ +void InitDecodedCRL(DecodedCRL* dcrl) +{ + CYASSL_MSG("InitDecodedCRL"); + + dcrl->certBegin = 0; + dcrl->sigIndex = 0; + dcrl->sigLength = 0; + dcrl->signatureOID = 0; + dcrl->certs = NULL; + dcrl->totalCerts = 0; +} + + +/* free decoded CRL resources */ +void FreeDecodedCRL(DecodedCRL* dcrl) +{ + RevokedCert* tmp = dcrl->certs; + + CYASSL_MSG("FreeDecodedCRL"); + + while(tmp) { + RevokedCert* next = tmp->next; + XFREE(tmp, NULL, DYNAMIC_TYPE_REVOKED); + tmp = next; + } +} + + /* Get Revoked Cert list, 0 on success */ static int GetRevoked(const byte* buff, word32* idx, DecodedCRL* dcrl, int maxIdx) diff --git a/ctaocrypt/src/coding.c b/ctaocrypt/src/coding.c index 78286faae..8add2d59a 100644 --- a/ctaocrypt/src/coding.c +++ b/ctaocrypt/src/coding.c @@ -147,16 +147,101 @@ const byte base64Encode[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', }; -/* porting assistance from yaSSL by Raphael HUCK */ -int Base64_Encode(const byte* in, word32 inLen, byte* out, word32* outLen) +/* make sure *i (idx) won't exceed max, store and possibly escape to out, + * raw means use e w/o decode, 0 on success */ +static int CEscape(int escaped, byte e, byte* out, word32* i, word32 max, + int raw) { + int doEscape = 0; + word32 needed = 1; + word32 idx = *i; + + byte basic; + byte plus = 0; + byte equals = 0; + byte newline = 0; + + if (raw) + basic = e; + else + basic = base64Encode[e]; + + /* check whether to escape */ + if (escaped) { + switch ((char)basic) { + case '+' : + plus = 1; + doEscape = 1; + needed += 2; + break; + case '=' : + equals = 1; + doEscape = 1; + needed += 2; + break; + case '\n' : + newline = 1; + doEscape = 1; + needed += 2; + break; + default: + /* do nothing */ + break; + } + } + + /* check size */ + if ( (idx+needed) > max) { + CYASSL_MSG("Escape buffer max too small"); + return BUFFER_E; + } + + /* store it */ + if (doEscape == 0) { + out[idx++] = basic; + } + else { + out[idx++] = '%'; /* start escape */ + + if (plus) { + out[idx++] = '2'; + out[idx++] = 'B'; + } + else if (equals) { + out[idx++] = '3'; + out[idx++] = 'D'; + } + else if (newline) { + out[idx++] = '0'; + out[idx++] = 'A'; + } + + } + *i = idx; + + return 0; +} + + +/* internal worker, handles both escaped and normal line endings */ +static int DoBase64_Encode(const byte* in, word32 inLen, byte* out, + word32* outLen, int escaped) +{ + int ret = 0; word32 i = 0, j = 0, n = 0; /* new line counter */ word32 outSz = (inLen + 3 - 1) / 3 * 4; - outSz += (outSz + PEM_LINE_SZ - 1) / PEM_LINE_SZ; /* new lines */ + word32 addSz = (outSz + PEM_LINE_SZ - 1) / PEM_LINE_SZ; /* new lines */ + if (escaped) + addSz *= 3; /* instead of just \n, we're doing %0A triplet */ + + outSz += addSz; + + /* if escaped we can't predetermine size for one pass encoding, but + * make sure we have enough if no escapes are in input */ if (outSz > *outLen) return BAD_FUNC_ARG; while (inLen > 2) { @@ -171,19 +256,25 @@ int Base64_Encode(const byte* in, word32 inLen, byte* out, word32* outLen) byte e4 = b3 & 0x3F; /* store */ - out[i++] = base64Encode[e1]; - out[i++] = base64Encode[e2]; - out[i++] = base64Encode[e3]; - out[i++] = base64Encode[e4]; + ret = CEscape(escaped, e1, out, &i, *outLen, 0); + if (ret != 0) break; + ret = CEscape(escaped, e2, out, &i, *outLen, 0); + if (ret != 0) break; + ret = CEscape(escaped, e3, out, &i, *outLen, 0); + if (ret != 0) break; + ret = CEscape(escaped, e4, out, &i, *outLen, 0); + if (ret != 0) break; inLen -= 3; - if ((++n % (PEM_LINE_SZ / 4)) == 0 && inLen) - out[i++] = '\n'; + if ((++n % (PEM_LINE_SZ / 4)) == 0 && inLen) { + ret = CEscape(escaped, '\n', out, &i, *outLen, 1); + if (ret != 0) break; + } } /* last integral */ - if (inLen) { + if (inLen && ret == 0) { int twoBytes = (inLen == 2); byte b1 = in[j++]; @@ -193,18 +284,43 @@ int Base64_Encode(const byte* in, word32 inLen, byte* out, word32* outLen) byte e2 = ((b1 & 0x3) << 4) | (b2 >> 4); byte e3 = (b2 & 0xF) << 2; - out[i++] = base64Encode[e1]; - out[i++] = base64Encode[e2]; - out[i++] = (twoBytes) ? base64Encode[e3] : PAD; - out[i++] = PAD; + ret = CEscape(escaped, e1, out, &i, *outLen, 0); + if (ret == 0) + ret = CEscape(escaped, e2, out, &i, *outLen, 0); + if (ret == 0) { + /* third */ + if (twoBytes) + ret = CEscape(escaped, e3, out, &i, *outLen, 0); + else + ret = CEscape(escaped, '=', out, &i, *outLen, 1); + } + /* fourth always pad */ + if (ret == 0) + ret = CEscape(escaped, '=', out, &i, *outLen, 1); } - out[i++] = '\n'; - if (i != outSz) - return ASN_INPUT_E; - *outLen = outSz; + if (ret == 0) + ret = CEscape(escaped, '\n', out, &i, *outLen, 1); - return 0; + if (i != outSz && escaped == 0 && ret == 0) + return ASN_INPUT_E; + + *outLen = i; + return ret; +} + + +/* Base64 Encode, PEM style, with \n line endings */ +int Base64_Encode(const byte* in, word32 inLen, byte* out, word32* outLen) +{ + return DoBase64_Encode(in, inLen, out, outLen, 0); +} + + +/* Base64 Encode, with %0A esacped line endings instead of \n */ +int Base64_EncodeEsc(const byte* in, word32 inLen, byte* out, word32* outLen) +{ + return DoBase64_Encode(in, inLen, out, outLen, 1); } diff --git a/ctaocrypt/src/ecc.c b/ctaocrypt/src/ecc.c index 0a87e00cb..609a386f8 100644 --- a/ctaocrypt/src/ecc.c +++ b/ctaocrypt/src/ecc.c @@ -1997,7 +1997,6 @@ int ecc_export_x963(ecc_key* key, byte* out, word32* outLen) int ecc_import_x963(const byte* in, word32 inLen, ecc_key* key) { int x, err; - if (in == NULL || key == NULL) return ECC_BAD_ARG_E; @@ -2144,17 +2143,22 @@ int ecc_sig_size(ecc_key* key) /** Our FP cache */ -static struct { +typedef struct { ecc_point* g; /* cached COPY of base point */ ecc_point* LUT[1U<encAlgo = ecAES_128_CBC; - options->kdfAlgo = ecHKDF_SHA256; - options->macAlgo = ecHMAC_SHA256; +enum ecCliState { + ecCLI_INIT = 1, + ecCLI_SALT_GET = 2, + ecCLI_SALT_SET = 3, + ecCLI_SENT_REQ = 4, + ecCLI_RECV_RESP = 5, + ecCLI_BAD_STATE = 99 +}; + +enum ecSrvState { + ecSRV_INIT = 1, + ecSRV_SALT_GET = 2, + ecSRV_SALT_SET = 3, + ecSRV_RECV_REQ = 4, + ecSRV_SENT_RESP = 5, + ecSRV_BAD_STATE = 99 +}; + + +struct ecEncCtx { + byte* kdfSalt; /* optional salt for kdf */ + byte* kdfInfo; /* optional info for kdf */ + byte* macSalt; /* optional salt for mac */ + word32 kdfSaltSz; /* size of kdfSalt */ + word32 kdfInfoSz; /* size of kdfInfo */ + word32 macSaltSz; /* size of macSalt */ + byte clientSalt[EXCHANGE_SALT_SZ]; /* for msg exchange */ + byte serverSalt[EXCHANGE_SALT_SZ]; /* for msg exchange */ + byte encAlgo; /* which encryption type */ + byte kdfAlgo; /* which key derivation function type */ + byte macAlgo; /* which mac function type */ + byte protocol; /* are we REQ_RESP client or server ? */ + byte cliSt; /* protocol state, for sanity checks */ + byte srvSt; /* protocol state, for sanity checks */ +}; + + +const byte* ecc_ctx_get_own_salt(ecEncCtx* ctx) +{ + if (ctx == NULL || ctx->protocol == 0) + return NULL; + + if (ctx->protocol == REQ_RESP_CLIENT) { + if (ctx->cliSt == ecCLI_INIT) { + ctx->cliSt = ecCLI_SALT_GET; + return ctx->clientSalt; + } + else { + ctx->cliSt = ecCLI_BAD_STATE; + return NULL; + } } + else if (ctx->protocol == REQ_RESP_SERVER) { + if (ctx->srvSt == ecSRV_INIT) { + ctx->srvSt = ecSRV_SALT_GET; + return ctx->serverSalt; + } + else { + ctx->srvSt = ecSRV_BAD_STATE; + return NULL; + } + } + + return NULL; +} + + +static const char* exchange_info = "Secure Message Exchange"; + +int ecc_ctx_set_peer_salt(ecEncCtx* ctx, const byte* salt) +{ + byte tmp[EXCHANGE_SALT_SZ/2]; + int halfSz = EXCHANGE_SALT_SZ/2; + + if (ctx == NULL || ctx->protocol == 0 || salt == NULL) + return BAD_FUNC_ARG; + + if (ctx->protocol == REQ_RESP_CLIENT) { + XMEMCPY(ctx->serverSalt, salt, EXCHANGE_SALT_SZ); + if (ctx->cliSt == ecCLI_SALT_GET) + ctx->cliSt = ecCLI_SALT_SET; + else { + ctx->cliSt = ecCLI_BAD_STATE; + return BAD_ENC_STATE_E; + } + } + else { + XMEMCPY(ctx->clientSalt, salt, EXCHANGE_SALT_SZ); + if (ctx->srvSt == ecSRV_SALT_GET) + ctx->srvSt = ecSRV_SALT_SET; + else { + ctx->srvSt = ecSRV_BAD_STATE; + return BAD_ENC_STATE_E; + } + } + + /* mix half and half */ + /* tmp stores 2nd half of client before overwrite */ + XMEMCPY(tmp, ctx->clientSalt + halfSz, halfSz); + XMEMCPY(ctx->clientSalt + halfSz, ctx->serverSalt, halfSz); + XMEMCPY(ctx->serverSalt, tmp, halfSz); + + ctx->kdfSalt = ctx->clientSalt; + ctx->kdfSaltSz = EXCHANGE_SALT_SZ; + + ctx->macSalt = ctx->serverSalt; + ctx->macSaltSz = EXCHANGE_SALT_SZ; + + ctx->kdfInfo = (byte*)exchange_info; + ctx->kdfInfoSz = EXCHANGE_INFO_SZ; + + return 0; +} + + +static int ecc_ctx_set_salt(ecEncCtx* ctx, int flags, RNG* rng) +{ + byte* saltBuffer = NULL; + + if (ctx == NULL || rng == NULL || flags == 0) + return BAD_FUNC_ARG; + + saltBuffer = (flags == REQ_RESP_CLIENT) ? ctx->clientSalt : ctx->serverSalt; + RNG_GenerateBlock(rng, saltBuffer, EXCHANGE_SALT_SZ); + + return 0; +} + + +static void ecc_ctx_init(ecEncCtx* ctx, int flags) +{ + if (ctx) { + XMEMSET(ctx, 0, sizeof(ecEncCtx)); + + ctx->encAlgo = ecAES_128_CBC; + ctx->kdfAlgo = ecHKDF_SHA256; + ctx->macAlgo = ecHMAC_SHA256; + ctx->protocol = (byte)flags; + + if (flags == REQ_RESP_CLIENT) + ctx->cliSt = ecCLI_INIT; + if (flags == REQ_RESP_SERVER) + ctx->srvSt = ecSRV_INIT; + } +} + + +/* alloc/init and set defaults, return new Context */ +ecEncCtx* ecc_ctx_new(int flags, RNG* rng) +{ + int ret = 0; + ecEncCtx* ctx = (ecEncCtx*)XMALLOC(sizeof(ecEncCtx), 0, DYNAMIC_TYPE_ECC); + + ecc_ctx_init(ctx, flags); + + if (ctx && flags) + ret = ecc_ctx_set_salt(ctx, flags, rng); + + if (ret != 0) { + ecc_ctx_free(ctx); + ctx = NULL; + } + + return ctx; } /* free any resources, clear any keys */ -void ecc_encrypt_free_options(ecEncOptions* options) +void ecc_ctx_free(ecEncCtx* ctx) { - if (options) { - XMEMSET(options, 0, sizeof(ecEncOptions)); + if (ctx) { + XMEMSET(ctx, 0, sizeof(ecEncCtx)); + XFREE(ctx, 0, DYNAMIC_TYPE_ECC); } } -static int ecc_get_key_sizes(ecEncOptions* options, int* encKeySz, int* ivSz, +static int ecc_get_key_sizes(ecEncCtx* ctx, int* encKeySz, int* ivSz, int* keysLen, word32* digestSz, word32* blockSz) { - if (options) { - switch (options->encAlgo) { + if (ctx) { + switch (ctx->encAlgo) { case ecAES_128_CBC: *encKeySz = KEY_SIZE_128; *ivSz = IV_SIZE_64; @@ -3529,7 +3701,7 @@ static int ecc_get_key_sizes(ecEncOptions* options, int* encKeySz, int* ivSz, return BAD_FUNC_ARG; } - switch (options->macAlgo) { + switch (ctx->macAlgo) { case ecHMAC_SHA256: *digestSz = SHA256_DIGEST_SIZE; break; @@ -3546,22 +3718,23 @@ static int ecc_get_key_sizes(ecEncOptions* options, int* encKeySz, int* ivSz, /* ecc encrypt with shared secret run through kdf - options holds non default algos and inputs + ctx holds non default algos and inputs msgSz should be the right size for encAlgo, i.e., already padded return 0 on success */ int ecc_encrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, - word32 msgSz, byte* out, word32* outSz, ecEncOptions* opts) + word32 msgSz, byte* out, word32* outSz, ecEncCtx* ctx) { int ret; word32 blockSz; word32 digestSz; - ecEncOptions options; + ecEncCtx localCtx; byte sharedSecret[ECC_MAXSIZE]; /* 521 max size */ byte keys[ECC_BUFSIZE]; /* max size */ word32 sharedSz = sizeof(sharedSecret); int keysLen; int encKeySz; int ivSz; + int offset = 0; /* keys offset if doing msg exchange */ byte* encKey; byte* encIv; byte* macKey; @@ -3570,19 +3743,37 @@ int ecc_encrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, outSz == NULL) return BAD_FUNC_ARG; - if (opts) - options = *opts; - else { - ecc_encrypt_init_options(&options); /* defaults */ + if (ctx == NULL) { /* use defaults */ + ecc_ctx_init(&localCtx, 0); + ctx = &localCtx; } - ret = ecc_get_key_sizes(&options, &encKeySz, &ivSz, &keysLen, &digestSz, + ret = ecc_get_key_sizes(ctx, &encKeySz, &ivSz, &keysLen, &digestSz, &blockSz); if (ret != 0) return ret; + + if (ctx->protocol == REQ_RESP_SERVER) { + offset = keysLen; + keysLen *= 2; + + if (ctx->srvSt != ecSRV_RECV_REQ) + return BAD_ENC_STATE_E; + + ctx->srvSt = ecSRV_BAD_STATE; /* we're done no more ops allowed */ + } + else if (ctx->protocol == REQ_RESP_CLIENT) { + if (ctx->cliSt != ecCLI_SALT_SET) + return BAD_ENC_STATE_E; + + ctx->cliSt = ecCLI_SENT_REQ; /* only do this once */ + } + + if (keysLen > (int)sizeof(keys)) + return BUFFER_E; if ( (msgSz%blockSz) != 0) - return BAD_FUNC_ARG; + return BAD_PADDING_E; if (*outSz < (msgSz + digestSz)) return BUFFER_E; @@ -3591,11 +3782,11 @@ int ecc_encrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, if (ret != 0) return ret; - switch (options.kdfAlgo) { + switch (ctx->kdfAlgo) { case ecHKDF_SHA256 : - ret = HKDF(SHA256, sharedSecret, sharedSz, options.kdfSalt, - options.kdfSaltSz, options.kdfInfo, - options.kdfInfoSz, keys, keysLen); + ret = HKDF(SHA256, sharedSecret, sharedSz, ctx->kdfSalt, + ctx->kdfSaltSz, ctx->kdfInfo, + ctx->kdfInfoSz, keys, keysLen); if (ret != 0) return ret; break; @@ -3604,11 +3795,11 @@ int ecc_encrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, return BAD_FUNC_ARG; } - encKey = keys; + encKey = keys + offset; encIv = encKey + encKeySz; macKey = encKey + encKeySz + ivSz; - switch (options.encAlgo) { + switch (ctx->encAlgo) { case ecAES_128_CBC: { Aes aes; @@ -3625,7 +3816,7 @@ int ecc_encrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, return BAD_FUNC_ARG; } - switch (options.macAlgo) { + switch (ctx->macAlgo) { case ecHMAC_SHA256: { Hmac hmac; @@ -3633,7 +3824,7 @@ int ecc_encrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, if (ret != 0) return ret; HmacUpdate(&hmac, out, msgSz); - HmacUpdate(&hmac, options.macSalt, options.macSaltSz); + HmacUpdate(&hmac, ctx->macSalt, ctx->macSaltSz); HmacFinal(&hmac, out+msgSz); } break; @@ -3648,19 +3839,23 @@ int ecc_encrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, } +/* ecc decrypt with shared secret run through kdf + ctx holds non default algos and inputs + return 0 on success */ int ecc_decrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, - word32 msgSz, byte* out, word32* outSz, ecEncOptions* opts) + word32 msgSz, byte* out, word32* outSz, ecEncCtx* ctx) { int ret; word32 blockSz; word32 digestSz; - ecEncOptions options; + ecEncCtx localCtx; byte sharedSecret[ECC_MAXSIZE]; /* 521 max size */ byte keys[ECC_BUFSIZE]; /* max size */ word32 sharedSz = sizeof(sharedSecret); int keysLen; int encKeySz; int ivSz; + int offset = 0; /* in case using msg exchange */ byte* encKey; byte* encIv; byte* macKey; @@ -3669,19 +3864,37 @@ int ecc_decrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, outSz == NULL) return BAD_FUNC_ARG; - if (opts) - options = *opts; - else { - ecc_encrypt_init_options(&options); /* defaults */ + if (ctx == NULL) { /* use defaults */ + ecc_ctx_init(&localCtx, 0); + ctx = &localCtx; } - - ret = ecc_get_key_sizes(&options, &encKeySz, &ivSz, &keysLen, &digestSz, + + ret = ecc_get_key_sizes(ctx, &encKeySz, &ivSz, &keysLen, &digestSz, &blockSz); if (ret != 0) return ret; + if (ctx->protocol == REQ_RESP_CLIENT) { + offset = keysLen; + keysLen *= 2; + + if (ctx->cliSt != ecCLI_SENT_REQ) + return BAD_ENC_STATE_E; + + ctx->cliSt = ecSRV_BAD_STATE; /* we're done no more ops allowed */ + } + else if (ctx->protocol == REQ_RESP_SERVER) { + if (ctx->srvSt != ecSRV_SALT_SET) + return BAD_ENC_STATE_E; + + ctx->srvSt = ecSRV_RECV_REQ; /* only do this once */ + } + + if (keysLen > (int)sizeof(keys)) + return BUFFER_E; + if ( ((msgSz-digestSz) % blockSz) != 0) - return BAD_FUNC_ARG; + return BAD_PADDING_E; if (*outSz < (msgSz - digestSz)) return BUFFER_E; @@ -3690,11 +3903,11 @@ int ecc_decrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, if (ret != 0) return ret; - switch (options.kdfAlgo) { + switch (ctx->kdfAlgo) { case ecHKDF_SHA256 : - ret = HKDF(SHA256, sharedSecret, sharedSz, options.kdfSalt, - options.kdfSaltSz, options.kdfInfo, - options.kdfInfoSz, keys, keysLen); + ret = HKDF(SHA256, sharedSecret, sharedSz, ctx->kdfSalt, + ctx->kdfSaltSz, ctx->kdfInfo, + ctx->kdfInfoSz, keys, keysLen); if (ret != 0) return ret; break; @@ -3703,11 +3916,11 @@ int ecc_decrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, return BAD_FUNC_ARG; } - encKey = keys; + encKey = keys + offset; encIv = encKey + encKeySz; macKey = encKey + encKeySz + ivSz; - switch (options.macAlgo) { + switch (ctx->macAlgo) { case ecHMAC_SHA256: { byte verify[SHA256_DIGEST_SIZE]; @@ -3716,7 +3929,7 @@ int ecc_decrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, if (ret != 0) return ret; HmacUpdate(&hmac, msg, msgSz-digestSz); - HmacUpdate(&hmac, options.macSalt, options.macSaltSz); + HmacUpdate(&hmac, ctx->macSalt, ctx->macSaltSz); HmacFinal(&hmac, verify); if (memcmp(verify, msg + msgSz - digestSz, digestSz) != 0) { @@ -3729,7 +3942,7 @@ int ecc_decrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, return BAD_FUNC_ARG; } - switch (options.encAlgo) { + switch (ctx->encAlgo) { case ecAES_128_CBC: { Aes aes; diff --git a/ctaocrypt/src/error.c b/ctaocrypt/src/error.c index e6b4eaf3b..d7ed45194 100644 --- a/ctaocrypt/src/error.c +++ b/ctaocrypt/src/error.c @@ -323,6 +323,26 @@ void CTaoCryptErrorString(int error, char* buffer) XSTRNCPY(buffer, "ASN OCSP sig error, confirm failure", max); break; + case BAD_ENC_STATE_E: + XSTRNCPY(buffer, "Bad ecc encrypt state operation", max); + break; + + case BAD_PADDING_E: + XSTRNCPY(buffer, "Bad padding, message wrong length", max); + break; + + case REQ_ATTRIBUTE_E: + XSTRNCPY(buffer, "Setting cert request attributes error", max); + break; + + case PKCS7_OID_E: + XSTRNCPY(buffer, "PKCS#7 error: mismatched OID value", max); + break; + + case PKCS7_RECIP_E: + XSTRNCPY(buffer, "PKCS#7 error: no matching recipient found", max); + break; + default: XSTRNCPY(buffer, "unknown error number", max); diff --git a/ctaocrypt/src/fp_sqr_comba_12.i b/ctaocrypt/src/fp_sqr_comba_12.i index 7ecb7c9e1..2f068c7d9 100644 --- a/ctaocrypt/src/fp_sqr_comba_12.i +++ b/ctaocrypt/src/fp_sqr_comba_12.i @@ -24,7 +24,9 @@ void fp_sqr_comba12(fp_int *A, fp_int *B) { fp_digit *a, b[24], c0, c1, c2, sc0, sc1, sc2; - +#ifdef TFM_ISO + fp_word tt; +#endif a = A->dp; COMBA_START; diff --git a/ctaocrypt/src/fp_sqr_comba_17.i b/ctaocrypt/src/fp_sqr_comba_17.i index fcd4daa5e..db34b1a78 100644 --- a/ctaocrypt/src/fp_sqr_comba_17.i +++ b/ctaocrypt/src/fp_sqr_comba_17.i @@ -24,6 +24,9 @@ void fp_sqr_comba17(fp_int *A, fp_int *B) { fp_digit *a, b[34], c0, c1, c2, sc0, sc1, sc2; +#ifdef TFM_ISO + fp_word tt; +#endif a = A->dp; COMBA_START; diff --git a/ctaocrypt/src/fp_sqr_comba_3.i b/ctaocrypt/src/fp_sqr_comba_3.i index 6cf7faf1a..fea21d183 100644 --- a/ctaocrypt/src/fp_sqr_comba_3.i +++ b/ctaocrypt/src/fp_sqr_comba_3.i @@ -24,6 +24,9 @@ void fp_sqr_comba3(fp_int *A, fp_int *B) { fp_digit *a, b[6], c0, c1, c2; +#ifdef TFM_ISO + fp_word tt; +#endif a = A->dp; COMBA_START; diff --git a/ctaocrypt/src/fp_sqr_comba_4.i b/ctaocrypt/src/fp_sqr_comba_4.i index 71c3c87af..7b7eefa6f 100644 --- a/ctaocrypt/src/fp_sqr_comba_4.i +++ b/ctaocrypt/src/fp_sqr_comba_4.i @@ -24,6 +24,9 @@ void fp_sqr_comba4(fp_int *A, fp_int *B) { fp_digit *a, b[8], c0, c1, c2; +#ifdef TFM_ISO + fp_word tt; +#endif a = A->dp; COMBA_START; diff --git a/ctaocrypt/src/fp_sqr_comba_6.i b/ctaocrypt/src/fp_sqr_comba_6.i index 189f339a4..dc7028138 100644 --- a/ctaocrypt/src/fp_sqr_comba_6.i +++ b/ctaocrypt/src/fp_sqr_comba_6.i @@ -24,6 +24,9 @@ void fp_sqr_comba6(fp_int *A, fp_int *B) { fp_digit *a, b[12], c0, c1, c2, sc0, sc1, sc2; +#ifdef TFM_ISO + fp_word tt; +#endif a = A->dp; COMBA_START; diff --git a/ctaocrypt/src/fp_sqr_comba_7.i b/ctaocrypt/src/fp_sqr_comba_7.i index 1a0cd2c19..7ba664e2f 100644 --- a/ctaocrypt/src/fp_sqr_comba_7.i +++ b/ctaocrypt/src/fp_sqr_comba_7.i @@ -24,6 +24,9 @@ void fp_sqr_comba7(fp_int *A, fp_int *B) { fp_digit *a, b[14], c0, c1, c2, sc0, sc1, sc2; +#ifdef TFM_ISO + fp_word tt; +#endif a = A->dp; COMBA_START; diff --git a/ctaocrypt/src/fp_sqr_comba_8.i b/ctaocrypt/src/fp_sqr_comba_8.i index b71feae3b..24efa52cb 100644 --- a/ctaocrypt/src/fp_sqr_comba_8.i +++ b/ctaocrypt/src/fp_sqr_comba_8.i @@ -24,6 +24,9 @@ void fp_sqr_comba8(fp_int *A, fp_int *B) { fp_digit *a, b[16], c0, c1, c2, sc0, sc1, sc2; +#ifdef TFM_ISO + fp_word tt; +#endif a = A->dp; COMBA_START; diff --git a/ctaocrypt/src/fp_sqr_comba_9.i b/ctaocrypt/src/fp_sqr_comba_9.i index 1db06de22..e9cc21665 100644 --- a/ctaocrypt/src/fp_sqr_comba_9.i +++ b/ctaocrypt/src/fp_sqr_comba_9.i @@ -24,6 +24,9 @@ void fp_sqr_comba9(fp_int *A, fp_int *B) { fp_digit *a, b[18], c0, c1, c2, sc0, sc1, sc2; +#ifdef TFM_ISO + fp_word tt; +#endif a = A->dp; COMBA_START; diff --git a/ctaocrypt/src/integer.c b/ctaocrypt/src/integer.c index d3cb044b8..88e16d57c 100644 --- a/ctaocrypt/src/integer.c +++ b/ctaocrypt/src/integer.c @@ -3765,7 +3765,7 @@ int mp_sqrmod (mp_int * a, mp_int * b, mp_int * c) #endif -#if defined(HAVE_ECC) || !defined(NO_PWDBASED) || defined(CYASSL_SNIFFER) +#if defined(HAVE_ECC) || !defined(NO_PWDBASED) || defined(CYASSL_SNIFFER) || defined(CYASSL_HAVE_WOLFSCEP) /* single digit addition */ int mp_add_d (mp_int* a, mp_digit b, mp_int* c) diff --git a/ctaocrypt/src/md5.c b/ctaocrypt/src/md5.c index 176bf44cd..6e645354b 100644 --- a/ctaocrypt/src/md5.c +++ b/ctaocrypt/src/md5.c @@ -26,7 +26,13 @@ #include -#ifndef NO_MD5 +#if !defined(NO_MD5) + +#ifdef CYASSL_PIC32MZ_HASH +#define InitMd5 InitMd5_sw +#define Md5Update Md5Update_sw +#define Md5Final Md5Final_sw +#endif #include @@ -36,6 +42,13 @@ #include #endif +#ifdef FREESCALE_MMCAU + #include "cau_api.h" + #define XTRANSFORM(S,B) cau_md5_hash_n((B), 1, (unsigned char*)(S)->digest) +#else + #define XTRANSFORM(S,B) Transform((S)) +#endif + #ifdef STM32F2_HASH /* @@ -174,6 +187,7 @@ void InitMd5(Md5* md5) md5->hiLen = 0; } +#ifndef FREESCALE_MMCAU static void Transform(Md5* md5) { @@ -266,6 +280,8 @@ static void Transform(Md5* md5) md5->digest[3] += d; } +#endif /* FREESCALE_MMCAU */ + static INLINE void AddLength(Md5* md5, word32 len) { @@ -289,10 +305,10 @@ void Md5Update(Md5* md5, const byte* data, word32 len) len -= add; if (md5->buffLen == MD5_BLOCK_SIZE) { - #ifdef BIG_ENDIAN_ORDER + #if defined(BIG_ENDIAN_ORDER) && !defined(FREESCALE_MMCAU) ByteReverseBytes(local, local, MD5_BLOCK_SIZE); #endif - Transform(md5); + XTRANSFORM(md5, local); AddLength(md5, MD5_BLOCK_SIZE); md5->buffLen = 0; } @@ -304,7 +320,7 @@ void Md5Final(Md5* md5, byte* hash) { byte* local = (byte*)md5->buffer; - AddLength(md5, md5->buffLen); /* before adding pads */ + AddLength(md5, md5->buffLen); /* before adding pads */ local[md5->buffLen++] = 0x80; /* add 1 */ @@ -313,10 +329,10 @@ void Md5Final(Md5* md5, byte* hash) XMEMSET(&local[md5->buffLen], 0, MD5_BLOCK_SIZE - md5->buffLen); md5->buffLen += MD5_BLOCK_SIZE - md5->buffLen; - #ifdef BIG_ENDIAN_ORDER + #if defined(BIG_ENDIAN_ORDER) && !defined(FREESCALE_MMCAU) ByteReverseBytes(local, local, MD5_BLOCK_SIZE); #endif - Transform(md5); + XTRANSFORM(md5, local); md5->buffLen = 0; } XMEMSET(&local[md5->buffLen], 0, MD5_PAD_SIZE - md5->buffLen); @@ -327,14 +343,14 @@ void Md5Final(Md5* md5, byte* hash) md5->loLen = md5->loLen << 3; /* store lengths */ - #ifdef BIG_ENDIAN_ORDER + #if defined(BIG_ENDIAN_ORDER) && !defined(FREESCALE_MMCAU) ByteReverseBytes(local, local, MD5_BLOCK_SIZE); #endif /* ! length ordering dependent on digest endian type ! */ XMEMCPY(&local[MD5_PAD_SIZE], &md5->loLen, sizeof(word32)); XMEMCPY(&local[MD5_PAD_SIZE + sizeof(word32)], &md5->hiLen, sizeof(word32)); - Transform(md5); + XTRANSFORM(md5, local); #ifdef BIG_ENDIAN_ORDER ByteReverseWords(md5->digest, md5->digest, MD5_DIGEST_SIZE); #endif diff --git a/ctaocrypt/src/pkcs7.c b/ctaocrypt/src/pkcs7.c new file mode 100644 index 000000000..d1f79eefb --- /dev/null +++ b/ctaocrypt/src/pkcs7.c @@ -0,0 +1,1348 @@ +/* pkcs7.c + * + * Copyright (C) 2006-2013 wolfSSL Inc. + * + * This file is part of CyaSSL. + * + * CyaSSL 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. + * + * CyaSSL 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 + +#ifdef HAVE_PKCS7 + +#include +#include +#include + +#ifndef min + static INLINE word32 min(word32 a, word32 b) + { + return a > b ? b : a; + } +#endif + + +/* placed ASN.1 contentType OID into *output, return idx on success, + * 0 upon failure */ +CYASSL_LOCAL int SetContentType(int pkcs7TypeOID, byte* output) +{ + /* PKCS#7 content types, RFC 2315, section 14 */ + static const byte pkcs7[] = { 0x2A, 0x86, 0x48, 0x86, 0xF7, + 0x0D, 0x01, 0x07 }; + static const byte data[] = { 0x2A, 0x86, 0x48, 0x86, 0xF7, + 0x0D, 0x01, 0x07, 0x01 }; + static const byte signedData[] = { 0x2A, 0x86, 0x48, 0x86, 0xF7, + 0x0D, 0x01, 0x07, 0x02}; + static const byte envelopedData[] = { 0x2A, 0x86, 0x48, 0x86, 0xF7, + 0x0D, 0x01, 0x07, 0x03 }; + static const byte signedAndEnveloped[] = { 0x2A, 0x86, 0x48, 0x86, 0xF7, + 0x0D, 0x01, 0x07, 0x04 }; + static const byte digestedData[] = { 0x2A, 0x86, 0x48, 0x86, 0xF7, + 0x0D, 0x01, 0x07, 0x05 }; + static const byte encryptedData[] = { 0x2A, 0x86, 0x48, 0x86, 0xF7, + 0x0D, 0x01, 0x07, 0x06 }; + + int idSz; + int typeSz = 0, idx = 0; + const byte* typeName = 0; + byte ID_Length[MAX_LENGTH_SZ]; + + switch (pkcs7TypeOID) { + case PKCS7_MSG: + typeSz = sizeof(pkcs7); + typeName = pkcs7; + break; + + case DATA: + typeSz = sizeof(data); + typeName = data; + break; + + case SIGNED_DATA: + typeSz = sizeof(signedData); + typeName = signedData; + break; + + case ENVELOPED_DATA: + typeSz = sizeof(envelopedData); + typeName = envelopedData; + break; + + case SIGNED_AND_ENVELOPED_DATA: + typeSz = sizeof(signedAndEnveloped); + typeName = signedAndEnveloped; + break; + + case DIGESTED_DATA: + typeSz = sizeof(digestedData); + typeName = digestedData; + break; + + case ENCRYPTED_DATA: + typeSz = sizeof(encryptedData); + typeName = encryptedData; + break; + + default: + CYASSL_MSG("Unknown PKCS#7 Type"); + return 0; + }; + + idSz = SetLength(typeSz, ID_Length); + output[idx++] = ASN_OBJECT_ID; + XMEMCPY(output + idx, ID_Length, idSz); + idx += idSz; + XMEMCPY(output + idx, typeName, typeSz); + idx += typeSz; + + return idx; + +} + + +/* get ASN.1 contentType OID sum, return 0 on success, <0 on failure */ +int GetContentType(const byte* input, word32* inOutIdx, word32* oid, + word32 maxIdx) +{ + int length; + word32 i = *inOutIdx; + byte b; + *oid = 0; + + CYASSL_ENTER("GetContentType"); + + b = input[i++]; + if (b != ASN_OBJECT_ID) + return ASN_OBJECT_ID_E; + + if (GetLength(input, &i, &length, maxIdx) < 0) + return ASN_PARSE_E; + + while(length--) { + *oid += input[i]; + i++; + } + + *inOutIdx = i; + + return 0; +} + + +/* init PKCS7 struct with recipient cert, decode into DecodedCert */ +int PKCS7_InitWithCert(PKCS7* pkcs7, byte* cert, word32 certSz) +{ + int ret = 0; + + XMEMSET(pkcs7, 0, sizeof(PKCS7)); + if (cert != NULL && certSz > 0) { + DecodedCert dCert; + + pkcs7->singleCert = cert; + pkcs7->singleCertSz = certSz; + InitDecodedCert(&dCert, cert, certSz, 0); + + ret = ParseCert(&dCert, CA_TYPE, NO_VERIFY, 0); + if (ret < 0) { + FreeDecodedCert(&dCert); + return ret; + } + XMEMCPY(pkcs7->publicKey, dCert.publicKey, dCert.pubKeySize); + pkcs7->publicKeySz = dCert.pubKeySize; + XMEMCPY(pkcs7->issuerHash, dCert.issuerHash, SHA_SIZE); + pkcs7->issuer = dCert.issuerRaw; + pkcs7->issuerSz = dCert.issuerRawLen; + XMEMCPY(pkcs7->issuerSn, dCert.serial, dCert.serialSz); + pkcs7->issuerSnSz = dCert.serialSz; + FreeDecodedCert(&dCert); + } + + return ret; +} + + +/* releases any memory allocated by a PKCS7 initializer */ +void PKCS7_Free(PKCS7* pkcs7) +{ + (void)pkcs7; +} + + +/* build PKCS#7 data content type */ +int PKCS7_EncodeData(PKCS7* pkcs7, byte* output, word32 outputSz) +{ + static const byte oid[] = + { ASN_OBJECT_ID, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, + 0x07, 0x01 }; + byte seq[MAX_SEQ_SZ]; + byte octetStr[MAX_OCTET_STR_SZ]; + word32 seqSz; + word32 octetStrSz; + word32 oidSz = (word32)sizeof(oid); + int idx = 0; + + octetStrSz = SetOctetString(pkcs7->contentSz, octetStr); + seqSz = SetSequence(pkcs7->contentSz + octetStrSz + oidSz, seq); + + if (outputSz < pkcs7->contentSz + octetStrSz + oidSz + seqSz) + return BUFFER_E; + + XMEMCPY(output, seq, seqSz); + idx += seqSz; + XMEMCPY(output + idx, oid, oidSz); + idx += oidSz; + XMEMCPY(output + idx, octetStr, octetStrSz); + idx += octetStrSz; + XMEMCPY(output + idx, pkcs7->content, pkcs7->contentSz); + idx += pkcs7->contentSz; + + return idx; +} + + +typedef struct EncodedAttrib { + byte valueSeq[MAX_SEQ_SZ]; + const byte* oid; + byte valueSet[MAX_SET_SZ]; + const byte* value; + word32 valueSeqSz, oidSz, idSz, valueSetSz, valueSz, totalSz; +} EncodedAttrib; + + +typedef struct ESD { + Sha sha; + byte contentDigest[SHA_DIGEST_SIZE + 2]; /* content only + ASN.1 heading */ + byte contentAttribsDigest[SHA_DIGEST_SIZE]; + byte encContentDigest[512]; + + byte outerSeq[MAX_SEQ_SZ]; + byte outerContent[MAX_EXP_SZ]; + byte innerSeq[MAX_SEQ_SZ]; + byte version[MAX_VERSION_SZ]; + byte digAlgoIdSet[MAX_SET_SZ]; + byte singleDigAlgoId[MAX_ALGO_SZ]; + + byte contentInfoSeq[MAX_SEQ_SZ]; + byte innerContSeq[MAX_EXP_SZ]; + byte innerOctets[MAX_OCTET_STR_SZ]; + + byte certsSet[MAX_SET_SZ]; + + byte signerInfoSet[MAX_SET_SZ]; + byte signerInfoSeq[MAX_SEQ_SZ]; + byte signerVersion[MAX_VERSION_SZ]; + byte issuerSnSeq[MAX_SEQ_SZ]; + byte issuerName[MAX_SEQ_SZ]; + byte issuerSn[MAX_SN_SZ]; + byte signerDigAlgoId[MAX_ALGO_SZ]; + byte digEncAlgoId[MAX_ALGO_SZ]; + byte signedAttribSet[MAX_SET_SZ]; + EncodedAttrib signedAttribs[6]; + byte signerDigest[MAX_OCTET_STR_SZ]; + word32 innerOctetsSz, innerContSeqSz, contentInfoSeqSz; + word32 outerSeqSz, outerContentSz, innerSeqSz, versionSz, digAlgoIdSetSz, + singleDigAlgoIdSz, certsSetSz; + word32 signerInfoSetSz, signerInfoSeqSz, signerVersionSz, + issuerSnSeqSz, issuerNameSz, issuerSnSz, + signerDigAlgoIdSz, digEncAlgoIdSz, signerDigestSz; + word32 encContentDigestSz, signedAttribsSz, signedAttribsCount, + signedAttribSetSz; +} ESD; + + +static int EncodeAttributes(EncodedAttrib* ea, int eaSz, + PKCS7Attrib* attribs, int attribsSz) +{ + int i; + int maxSz = min(eaSz, attribsSz); + int allAttribsSz = 0; + + for (i = 0; i < maxSz; i++) + { + int attribSz = 0; + + ea[i].value = attribs[i].value; + ea[i].valueSz = attribs[i].valueSz; + attribSz += ea[i].valueSz; + ea[i].valueSetSz = SetSet(attribSz, ea[i].valueSet); + attribSz += ea[i].valueSetSz; + ea[i].oid = attribs[i].oid; + ea[i].oidSz = attribs[i].oidSz; + attribSz += ea[i].oidSz; + ea[i].valueSeqSz = SetSequence(attribSz, ea[i].valueSeq); + attribSz += ea[i].valueSeqSz; + ea[i].totalSz = attribSz; + + allAttribsSz += attribSz; + } + return allAttribsSz; +} + + +static int FlattenAttributes(byte* output, EncodedAttrib* ea, int eaSz) +{ + int i, idx; + + idx = 0; + for (i = 0; i < eaSz; i++) { + XMEMCPY(output + idx, ea[i].valueSeq, ea[i].valueSeqSz); + idx += ea[i].valueSeqSz; + XMEMCPY(output + idx, ea[i].oid, ea[i].oidSz); + idx += ea[i].oidSz; + XMEMCPY(output + idx, ea[i].valueSet, ea[i].valueSetSz); + idx += ea[i].valueSetSz; + XMEMCPY(output + idx, ea[i].value, ea[i].valueSz); + idx += ea[i].valueSz; + } + return 0; +} + + +/* build PKCS#7 signedData content type */ +int PKCS7_EncodeSignedData(PKCS7* pkcs7, byte* output, word32 outputSz) +{ + static const byte outerOid[] = + { ASN_OBJECT_ID, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, + 0x07, 0x02 }; + static const byte innerOid[] = + { ASN_OBJECT_ID, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, + 0x07, 0x01 }; + + ESD esd; + word32 signerInfoSz = 0; + word32 totalSz = 0; + int idx = 0; + byte* flatSignedAttribs = NULL; + word32 flatSignedAttribsSz = 0; + word32 innerOidSz = sizeof(innerOid); + word32 outerOidSz = sizeof(outerOid); + + if (pkcs7 == NULL || pkcs7->content == NULL || pkcs7->contentSz == 0 || + pkcs7->encryptOID == 0 || pkcs7->hashOID == 0 || pkcs7->rng == 0 || + pkcs7->singleCert == NULL || pkcs7->singleCertSz == 0 || + pkcs7->privateKey == NULL || pkcs7->privateKeySz == 0 || + output == NULL || outputSz == 0) + return BAD_FUNC_ARG; + + XMEMSET(&esd, 0, sizeof(esd)); + InitSha(&esd.sha); + + if (pkcs7->contentSz != 0) + { + ShaUpdate(&esd.sha, pkcs7->content, pkcs7->contentSz); + esd.contentDigest[0] = ASN_OCTET_STRING; + esd.contentDigest[1] = SHA_DIGEST_SIZE; + ShaFinal(&esd.sha, &esd.contentDigest[2]); + } + + esd.innerOctetsSz = SetOctetString(pkcs7->contentSz, esd.innerOctets); + esd.innerContSeqSz = SetExplicit(0, esd.innerOctetsSz + pkcs7->contentSz, + esd.innerContSeq); + esd.contentInfoSeqSz = SetSequence(pkcs7->contentSz + esd.innerOctetsSz + + innerOidSz + esd.innerContSeqSz, + esd.contentInfoSeq); + + esd.issuerSnSz = SetSerialNumber(pkcs7->issuerSn, pkcs7->issuerSnSz, + esd.issuerSn); + signerInfoSz += esd.issuerSnSz; + esd.issuerNameSz = SetSequence(pkcs7->issuerSz, esd.issuerName); + signerInfoSz += esd.issuerNameSz + pkcs7->issuerSz; + esd.issuerSnSeqSz = SetSequence(signerInfoSz, esd.issuerSnSeq); + signerInfoSz += esd.issuerSnSeqSz; + esd.signerVersionSz = SetMyVersion(1, esd.signerVersion, 0); + signerInfoSz += esd.signerVersionSz; + esd.signerDigAlgoIdSz = SetAlgoID(pkcs7->hashOID, esd.signerDigAlgoId, + hashType, 0); + signerInfoSz += esd.signerDigAlgoIdSz; + esd.digEncAlgoIdSz = SetAlgoID(pkcs7->encryptOID, esd.digEncAlgoId, + keyType, 0); + signerInfoSz += esd.digEncAlgoIdSz; + + if (pkcs7->signedAttribsSz != 0) { + byte contentTypeOid[] = + { ASN_OBJECT_ID, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xF7, 0x0d, 0x01, + 0x09, 0x03 }; + byte contentType[] = + { ASN_OBJECT_ID, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x07, 0x01 }; + byte messageDigestOid[] = + { ASN_OBJECT_ID, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x09, 0x04 }; + + PKCS7Attrib cannedAttribs[2] = + { + { contentTypeOid, sizeof(contentTypeOid), + contentType, sizeof(contentType) }, + { messageDigestOid, sizeof(messageDigestOid), + esd.contentDigest, sizeof(esd.contentDigest) } + }; + word32 cannedAttribsCount = sizeof(cannedAttribs)/sizeof(PKCS7Attrib); + + esd.signedAttribsCount += cannedAttribsCount; + esd.signedAttribsSz += EncodeAttributes(&esd.signedAttribs[0], 2, + cannedAttribs, cannedAttribsCount); + + esd.signedAttribsCount += pkcs7->signedAttribsSz; + esd.signedAttribsSz += EncodeAttributes(&esd.signedAttribs[2], 4, + pkcs7->signedAttribs, pkcs7->signedAttribsSz); + + flatSignedAttribs = (byte*)XMALLOC(esd.signedAttribsSz, 0, NULL); + flatSignedAttribsSz = esd.signedAttribsSz; + if (flatSignedAttribs == NULL) + return MEMORY_E; + FlattenAttributes(flatSignedAttribs, + esd.signedAttribs, esd.signedAttribsCount); + esd.signedAttribSetSz = SetImplicit(ASN_SET, 0, esd.signedAttribsSz, + esd.signedAttribSet); + } + /* Calculate the final hash and encrypt it. */ + { + RsaKey privKey; + int result; + word32 scratch = 0; + + byte digestInfo[MAX_SEQ_SZ + MAX_ALGO_SZ + + MAX_OCTET_STR_SZ + SHA_DIGEST_SIZE]; + byte digestInfoSeq[MAX_SEQ_SZ]; + byte digestStr[MAX_OCTET_STR_SZ]; + word32 digestInfoSeqSz, digestStrSz; + int digIdx = 0; + + if (pkcs7->signedAttribsSz != 0) { + byte attribSet[MAX_SET_SZ]; + word32 attribSetSz; + + attribSetSz = SetSet(flatSignedAttribsSz, attribSet); + + InitSha(&esd.sha); + ShaUpdate(&esd.sha, attribSet, attribSetSz); + ShaUpdate(&esd.sha, flatSignedAttribs, flatSignedAttribsSz); + } + ShaFinal(&esd.sha, esd.contentAttribsDigest); + + digestStrSz = SetOctetString(SHA_DIGEST_SIZE, digestStr); + digestInfoSeqSz = SetSequence(esd.signerDigAlgoIdSz + + digestStrSz + SHA_DIGEST_SIZE, + digestInfoSeq); + + XMEMCPY(digestInfo + digIdx, digestInfoSeq, digestInfoSeqSz); + digIdx += digestInfoSeqSz; + XMEMCPY(digestInfo + digIdx, + esd.signerDigAlgoId, esd.signerDigAlgoIdSz); + digIdx += esd.signerDigAlgoIdSz; + XMEMCPY(digestInfo + digIdx, digestStr, digestStrSz); + digIdx += digestStrSz; + XMEMCPY(digestInfo + digIdx, esd.contentAttribsDigest, SHA_DIGEST_SIZE); + digIdx += SHA_DIGEST_SIZE; + + InitRsaKey(&privKey, NULL); + result = RsaPrivateKeyDecode(pkcs7->privateKey, &scratch, &privKey, + pkcs7->privateKeySz); + if (result < 0) { + XFREE(flatSignedAttribs, 0, NULL); + return PUBLIC_KEY_E; + } + result = RsaSSL_Sign(digestInfo, digIdx, + esd.encContentDigest, sizeof(esd.encContentDigest), + &privKey, pkcs7->rng); + FreeRsaKey(&privKey); + if (result < 0) { + XFREE(flatSignedAttribs, 0, NULL); + return result; + } + esd.encContentDigestSz = (word32)result; + } + signerInfoSz += flatSignedAttribsSz + esd.signedAttribSetSz; + + esd.signerDigestSz = SetOctetString(esd.encContentDigestSz, + esd.signerDigest); + signerInfoSz += esd.signerDigestSz + esd.encContentDigestSz; + + esd.signerInfoSeqSz = SetSequence(signerInfoSz, esd.signerInfoSeq); + signerInfoSz += esd.signerInfoSeqSz; + esd.signerInfoSetSz = SetSet(signerInfoSz, esd.signerInfoSet); + signerInfoSz += esd.signerInfoSetSz; + + esd.certsSetSz = SetImplicit(ASN_SET, 0, pkcs7->singleCertSz, esd.certsSet); + + esd.singleDigAlgoIdSz = SetAlgoID(pkcs7->hashOID, esd.singleDigAlgoId, + hashType, 0); + esd.digAlgoIdSetSz = SetSet(esd.singleDigAlgoIdSz, esd.digAlgoIdSet); + + + esd.versionSz = SetMyVersion(1, esd.version, 0); + + totalSz = esd.versionSz + esd.singleDigAlgoIdSz + esd.digAlgoIdSetSz + + esd.contentInfoSeqSz + esd.certsSetSz + pkcs7->singleCertSz + + esd.innerOctetsSz + esd.innerContSeqSz + + innerOidSz + pkcs7->contentSz + + signerInfoSz; + esd.innerSeqSz = SetSequence(totalSz, esd.innerSeq); + totalSz += esd.innerSeqSz; + esd.outerContentSz = SetExplicit(0, totalSz, esd.outerContent); + totalSz += esd.outerContentSz + outerOidSz; + esd.outerSeqSz = SetSequence(totalSz, esd.outerSeq); + totalSz += esd.outerSeqSz; + + if (outputSz < totalSz) + return BUFFER_E; + + idx = 0; + XMEMCPY(output + idx, esd.outerSeq, esd.outerSeqSz); + idx += esd.outerSeqSz; + XMEMCPY(output + idx, outerOid, outerOidSz); + idx += outerOidSz; + XMEMCPY(output + idx, esd.outerContent, esd.outerContentSz); + idx += esd.outerContentSz; + XMEMCPY(output + idx, esd.innerSeq, esd.innerSeqSz); + idx += esd.innerSeqSz; + XMEMCPY(output + idx, esd.version, esd.versionSz); + idx += esd.versionSz; + XMEMCPY(output + idx, esd.digAlgoIdSet, esd.digAlgoIdSetSz); + idx += esd.digAlgoIdSetSz; + XMEMCPY(output + idx, esd.singleDigAlgoId, esd.singleDigAlgoIdSz); + idx += esd.singleDigAlgoIdSz; + XMEMCPY(output + idx, esd.contentInfoSeq, esd.contentInfoSeqSz); + idx += esd.contentInfoSeqSz; + XMEMCPY(output + idx, innerOid, innerOidSz); + idx += innerOidSz; + XMEMCPY(output + idx, esd.innerContSeq, esd.innerContSeqSz); + idx += esd.innerContSeqSz; + XMEMCPY(output + idx, esd.innerOctets, esd.innerOctetsSz); + idx += esd.innerOctetsSz; + XMEMCPY(output + idx, pkcs7->content, pkcs7->contentSz); + idx += pkcs7->contentSz; + XMEMCPY(output + idx, esd.certsSet, esd.certsSetSz); + idx += esd.certsSetSz; + XMEMCPY(output + idx, pkcs7->singleCert, pkcs7->singleCertSz); + idx += pkcs7->singleCertSz; + XMEMCPY(output + idx, esd.signerInfoSet, esd.signerInfoSetSz); + idx += esd.signerInfoSetSz; + XMEMCPY(output + idx, esd.signerInfoSeq, esd.signerInfoSeqSz); + idx += esd.signerInfoSeqSz; + XMEMCPY(output + idx, esd.signerVersion, esd.signerVersionSz); + idx += esd.signerVersionSz; + XMEMCPY(output + idx, esd.issuerSnSeq, esd.issuerSnSeqSz); + idx += esd.issuerSnSeqSz; + XMEMCPY(output + idx, esd.issuerName, esd.issuerNameSz); + idx += esd.issuerNameSz; + XMEMCPY(output + idx, pkcs7->issuer, pkcs7->issuerSz); + idx += pkcs7->issuerSz; + XMEMCPY(output + idx, esd.issuerSn, esd.issuerSnSz); + idx += esd.issuerSnSz; + XMEMCPY(output + idx, esd.signerDigAlgoId, esd.signerDigAlgoIdSz); + idx += esd.signerDigAlgoIdSz; + + /* SignerInfo:Attributes */ + if (pkcs7->signedAttribsSz != 0) { + XMEMCPY(output + idx, esd.signedAttribSet, esd.signedAttribSetSz); + idx += esd.signedAttribSetSz; + XMEMCPY(output + idx, flatSignedAttribs, flatSignedAttribsSz); + idx += flatSignedAttribsSz; + XFREE(flatSignedAttribs, 0, NULL); + } + + XMEMCPY(output + idx, esd.digEncAlgoId, esd.digEncAlgoIdSz); + idx += esd.digEncAlgoIdSz; + XMEMCPY(output + idx, esd.signerDigest, esd.signerDigestSz); + idx += esd.signerDigestSz; + XMEMCPY(output + idx, esd.encContentDigest, esd.encContentDigestSz); + idx += esd.encContentDigestSz; + + return idx; +} + + +/* Finds the certificates in the message and saves it. */ +int PKCS7_VerifySignedData(PKCS7* pkcs7, byte* pkiMsg, word32 pkiMsgSz) +{ + word32 idx, contentType; + int length, version; + byte* content = NULL; + byte* sig = NULL; + byte* cert = NULL; + byte* signedAttr = NULL; + int contentSz = 0, sigSz = 0, certSz = 0, signedAttrSz = 0; + + (void)signedAttr; /* not used yet, just set */ + (void)signedAttrSz; + + if (pkcs7 == NULL || pkiMsg == NULL || pkiMsgSz == 0) + return BAD_FUNC_ARG; + + idx = 0; + + /* Get the contentInfo sequence */ + if (GetSequence(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* Get the contentInfo contentType */ + if (GetContentType(pkiMsg, &idx, &contentType, pkiMsgSz) < 0) + return ASN_PARSE_E; + + if (contentType != SIGNED_DATA) { + CYASSL_MSG("PKCS#7 input not of type SignedData"); + return PKCS7_OID_E; + } + + /* get the ContentInfo content */ + if (pkiMsg[idx++] != (ASN_CONSTRUCTED | ASN_CONTEXT_SPECIFIC | 0)) + return ASN_PARSE_E; + + if (GetLength(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* Get the signedData sequence */ + if (GetSequence(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* Get the version */ + if (GetMyVersion(pkiMsg, &idx, &version) < 0) + return ASN_PARSE_E; + + if (version != 1) { + CYASSL_MSG("PKCS#7 signedData needs to be of version 1"); + return ASN_VERSION_E; + } + + /* Get the set of DigestAlgorithmIdentifiers */ + if (GetSet(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* Skip the set. */ + idx += length; + + /* Get the inner ContentInfo sequence */ + if (GetSequence(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* Get the inner ContentInfo contentType */ + if (GetContentType(pkiMsg, &idx, &contentType, pkiMsgSz) < 0) + return ASN_PARSE_E; + + if (contentType != DATA) { + CYASSL_MSG("PKCS#7 inner input not of type Data"); + return PKCS7_OID_E; + } + + if (pkiMsg[idx++] != (ASN_CONSTRUCTED | ASN_CONTEXT_SPECIFIC | 0)) + return ASN_PARSE_E; + + if (GetLength(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + if (pkiMsg[idx++] != ASN_OCTET_STRING) + return ASN_PARSE_E; + + if (GetLength(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* Save the inner data as the content. */ + if (length > 0) { + /* Local pointer for calculating hashes later */ + pkcs7->content = content = &pkiMsg[idx]; + pkcs7->contentSz = contentSz = length; + idx += length; + } + + /* Get the implicit[0] set of certificates */ + if (pkiMsg[idx] == (ASN_CONSTRUCTED | ASN_CONTEXT_SPECIFIC | 0)) { + idx++; + if (GetLength(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + if (length > 0) { + /* At this point, idx is at the first certificate in + * a set of certificates. There may be more than one, + * or none, or they may be a PKCS 6 extended + * certificate. We want to save the first cert if it + * is X.509. */ + + word32 certIdx = idx; + + if (pkiMsg[certIdx++] == (ASN_CONSTRUCTED | ASN_SEQUENCE)) { + if (GetLength(pkiMsg, &certIdx, &certSz, pkiMsgSz) < 0) + return ASN_PARSE_E; + + cert = &pkiMsg[idx]; + certSz += (certIdx - idx); + } + PKCS7_InitWithCert(pkcs7, cert, certSz); + } + idx += length; + } + + /* Get the implicit[1] set of crls */ + if (pkiMsg[idx] == (ASN_CONSTRUCTED | ASN_CONTEXT_SPECIFIC | 1)) { + idx++; + if (GetLength(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* Skip the set */ + idx += length; + } + + /* Get the set of signerInfos */ + if (GetSet(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + if (length > 0) { + RsaKey key; + word32 scratch = 0; + int plainSz = 0; + byte digest[MAX_SEQ_SZ+MAX_ALGO_SZ+MAX_OCTET_STR_SZ+SHA_DIGEST_SIZE]; + + /* Get the sequence of the first signerInfo */ + if (GetSequence(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* Get the version */ + if (GetMyVersion(pkiMsg, &idx, &version) < 0) + return ASN_PARSE_E; + + if (version != 1) { + CYASSL_MSG("PKCS#7 signerInfo needs to be of version 1"); + return ASN_VERSION_E; + } + + /* Get the sequence of IssuerAndSerialNumber */ + if (GetSequence(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* Skip it */ + idx += length; + + /* Get the sequence of digestAlgorithm */ + if (GetSequence(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* Skip it */ + idx += length; + + /* Get the IMPLICIT[0] SET OF signedAttributes */ + if (pkiMsg[idx] == (ASN_CONSTRUCTED | ASN_CONTEXT_SPECIFIC | 0)) { + idx++; + + if (GetLength(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* save pointer and length */ + signedAttr = &pkiMsg[idx]; + signedAttrSz = length; + + idx += length; + } + + /* Get the sequence of digestEncryptionAlgorithm */ + if (GetSequence(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* Skip it */ + idx += length; + + /* Get the signature */ + if (pkiMsg[idx] == ASN_OCTET_STRING) { + idx++; + + if (GetLength(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* save pointer and length */ + sig = &pkiMsg[idx]; + sigSz = length; + + idx += length; + } + + XMEMSET(digest, 0, sizeof(digest)); + pkcs7->content = content; + pkcs7->contentSz = contentSz; + + InitRsaKey(&key, NULL); + if (RsaPublicKeyDecode(pkcs7->publicKey, &scratch, &key, + pkcs7->publicKeySz) < 0) { + CYASSL_MSG("ASN RSA key decode error"); + return PUBLIC_KEY_E; + } + plainSz = RsaSSL_Verify(sig, sigSz, digest, sizeof(digest), &key); + FreeRsaKey(&key); + if (plainSz < 0) + return plainSz; + } + + return 0; +} + + +/* create ASN.1 fomatted RecipientInfo structure, returns sequence size */ +CYASSL_LOCAL int CreateRecipientInfo(const byte* cert, word32 certSz, + int keyEncAlgo, int blockKeySz, + RNG* rng, byte* contentKeyPlain, + byte* contentKeyEnc, + int* keyEncSz, byte* out, word32 outSz) +{ + word32 idx = 0; + int ret = 0, totalSz = 0; + int verSz, issuerSz, snSz, keyEncAlgSz; + int issuerSeqSz, recipSeqSz, issuerSerialSeqSz; + int encKeyOctetStrSz; + + byte ver[MAX_VERSION_SZ]; + byte serial[MAX_SN_SZ]; + byte issuerSerialSeq[MAX_SEQ_SZ]; + byte recipSeq[MAX_SEQ_SZ]; + byte issuerSeq[MAX_SEQ_SZ]; + byte keyAlgArray[MAX_ALGO_SZ]; + byte encKeyOctetStr[MAX_OCTET_STR_SZ]; + + RsaKey pubKey; + DecodedCert decoded; + + InitDecodedCert(&decoded, (byte*)cert, certSz, 0); + ret = ParseCert(&decoded, CA_TYPE, NO_VERIFY, 0); + if (ret < 0) { + FreeDecodedCert(&decoded); + return ret; + } + + /* version */ + verSz = SetMyVersion(0, ver, 0); + + /* IssuerAndSerialNumber */ + if (decoded.issuerRaw == NULL || decoded.issuerRawLen == 0) { + CYASSL_MSG("DecodedCert lacks raw issuer pointer and length"); + FreeDecodedCert(&decoded); + return -1; + } + issuerSz = decoded.issuerRawLen; + issuerSeqSz = SetSequence(issuerSz, issuerSeq); + + if (decoded.serial == NULL || decoded.serialSz == 0) { + CYASSL_MSG("DecodedCert missing serial number"); + FreeDecodedCert(&decoded); + return -1; + } + snSz = SetSerialNumber(decoded.serial, decoded.serialSz, serial); + + issuerSerialSeqSz = SetSequence(issuerSeqSz + issuerSz + snSz, + issuerSerialSeq); + + /* KeyEncryptionAlgorithmIdentifier, only support RSA now */ + if (keyEncAlgo != RSAk) + return ALGO_ID_E; + + keyEncAlgSz = SetAlgoID(keyEncAlgo, keyAlgArray, keyType, 0); + if (keyEncAlgSz == 0) + return BAD_FUNC_ARG; + + /* EncryptedKey */ + InitRsaKey(&pubKey, 0); + if (RsaPublicKeyDecode(decoded.publicKey, &idx, &pubKey, + decoded.pubKeySize) < 0) { + CYASSL_MSG("ASN RSA key decode error"); + return PUBLIC_KEY_E; + } + + *keyEncSz = RsaPublicEncrypt(contentKeyPlain, blockKeySz, contentKeyEnc, + MAX_ENCRYPTED_KEY_SZ, &pubKey, rng); + FreeRsaKey(&pubKey); + if (*keyEncSz < 0) { + CYASSL_MSG("RSA Public Encrypt failed"); + return *keyEncSz; + } + + encKeyOctetStrSz = SetOctetString(*keyEncSz, encKeyOctetStr); + + /* RecipientInfo */ + recipSeqSz = SetSequence(verSz + issuerSerialSeqSz + issuerSeqSz + + issuerSz + snSz + keyEncAlgSz + encKeyOctetStrSz + + *keyEncSz, recipSeq); + + if (recipSeqSz + verSz + issuerSerialSeqSz + issuerSeqSz + snSz + + keyEncAlgSz + encKeyOctetStrSz + *keyEncSz > (int)outSz) { + CYASSL_MSG("RecipientInfo output buffer too small"); + return BUFFER_E; + } + + XMEMCPY(out + totalSz, recipSeq, recipSeqSz); + totalSz += recipSeqSz; + XMEMCPY(out + totalSz, ver, verSz); + totalSz += verSz; + XMEMCPY(out + totalSz, issuerSerialSeq, issuerSerialSeqSz); + totalSz += issuerSerialSeqSz; + XMEMCPY(out + totalSz, issuerSeq, issuerSeqSz); + totalSz += issuerSeqSz; + XMEMCPY(out + totalSz, decoded.issuerRaw, issuerSz); + totalSz += issuerSz; + XMEMCPY(out + totalSz, serial, snSz); + totalSz += snSz; + XMEMCPY(out + totalSz, keyAlgArray, keyEncAlgSz); + totalSz += keyEncAlgSz; + XMEMCPY(out + totalSz, encKeyOctetStr, encKeyOctetStrSz); + totalSz += encKeyOctetStrSz; + XMEMCPY(out + totalSz, contentKeyEnc, *keyEncSz); + totalSz += *keyEncSz; + + FreeDecodedCert(&decoded); + + return totalSz; +} + + +/* build PKCS#7 envelopedData content type, return enveloped size */ +int PKCS7_EncodeEnvelopedData(PKCS7* pkcs7, byte* output, word32 outputSz) +{ + int i, idx = 0; + int totalSz = 0, padSz = 0, desOutSz = 0; + + int contentInfoSeqSz, outerContentTypeSz, outerContentSz; + byte contentInfoSeq[MAX_SEQ_SZ]; + byte outerContentType[MAX_ALGO_SZ]; + byte outerContent[MAX_SEQ_SZ]; + + int envDataSeqSz, verSz; + byte envDataSeq[MAX_SEQ_SZ]; + byte ver[MAX_VERSION_SZ]; + + RNG rng; + int contentKeyEncSz, blockKeySz; + int dynamicFlag = 0; + byte contentKeyPlain[MAX_CONTENT_KEY_LEN]; + byte contentKeyEnc[MAX_ENCRYPTED_KEY_SZ]; + byte* plain; + byte* encryptedContent; + + int recipSz, recipSetSz; + byte recip[MAX_RECIP_SZ]; + byte recipSet[MAX_SET_SZ]; + + int encContentOctetSz, encContentSeqSz, contentTypeSz; + int contentEncAlgoSz, ivOctetStringSz; + byte encContentSeq[MAX_SEQ_SZ]; + byte contentType[MAX_ALGO_SZ]; + byte contentEncAlgo[MAX_ALGO_SZ]; + byte tmpIv[DES_BLOCK_SIZE]; + byte ivOctetString[MAX_OCTET_STR_SZ]; + byte encContentOctet[MAX_OCTET_STR_SZ]; + + if (pkcs7 == NULL || pkcs7->content == NULL || pkcs7->contentSz == 0 || + pkcs7->encryptOID == 0 || pkcs7->singleCert == NULL) + return BAD_FUNC_ARG; + + if (output == NULL || outputSz == 0) + return BAD_FUNC_ARG; + + /* PKCS#7 only supports DES, 3DES for now */ + switch (pkcs7->encryptOID) { + case DESb: + blockKeySz = DES_KEYLEN; + break; + + case DES3b: + blockKeySz = DES3_KEYLEN; + break; + + default: + CYASSL_MSG("Unsupported content cipher type"); + return ALGO_ID_E; + }; + + /* outer content type */ + outerContentTypeSz = SetContentType(ENVELOPED_DATA, outerContentType); + + /* version, defined as 0 in RFC 2315 */ + verSz = SetMyVersion(0, ver, 0); + + /* generate random content encryption key */ + InitRng(&rng); + RNG_GenerateBlock(&rng, contentKeyPlain, blockKeySz); + + /* build RecipientInfo, only handle 1 for now */ + recipSz = CreateRecipientInfo(pkcs7->singleCert, pkcs7->singleCertSz, RSAk, + blockKeySz, &rng, contentKeyPlain, + contentKeyEnc, &contentKeyEncSz, recip, + MAX_RECIP_SZ); + + if (recipSz < 0) { + CYASSL_MSG("Failed to create RecipientInfo"); + return recipSz; + } + recipSetSz = SetSet(recipSz, recipSet); + + /* EncryptedContentInfo */ + contentTypeSz = SetContentType(pkcs7->contentOID, contentType); + if (contentTypeSz == 0) + return BAD_FUNC_ARG; + + /* allocate encrypted content buffer, pad if necessary, PKCS#7 padding */ + padSz = DES_BLOCK_SIZE - (pkcs7->contentSz % DES_BLOCK_SIZE); + desOutSz = pkcs7->contentSz + padSz; + + if (padSz != 0) { + plain = XMALLOC(desOutSz, NULL, DYNAMIC_TYPE_TMP_BUFFER); + if (plain == NULL) { + return MEMORY_E; + } + XMEMCPY(plain, pkcs7->content, pkcs7->contentSz); + dynamicFlag = 1; + + for (i = 0; i < padSz; i++) { + plain[pkcs7->contentSz + i] = padSz; + } + + } else { + plain = pkcs7->content; + desOutSz = pkcs7->contentSz; + } + + encryptedContent = XMALLOC(desOutSz, NULL, DYNAMIC_TYPE_TMP_BUFFER); + if (encryptedContent == NULL) { + if (dynamicFlag) + XFREE(plain, NULL, DYNAMIC_TYPE_TMP_BUFFER); + return MEMORY_E; + } + + /* generate IV for block cipher */ + RNG_GenerateBlock(&rng, tmpIv, DES_BLOCK_SIZE); + + /* put together IV OCTET STRING */ + ivOctetStringSz = SetOctetString(DES_BLOCK_SIZE, ivOctetString); + + /* build up our ContentEncryptionAlgorithmIdentifier sequence, + * adding (ivOctetStringSz + DES_BLOCK_SIZE) for IV OCTET STRING */ + contentEncAlgoSz = SetAlgoID(pkcs7->encryptOID, contentEncAlgo, + blkType, ivOctetStringSz + DES_BLOCK_SIZE); + if (contentEncAlgoSz == 0) + return BAD_FUNC_ARG; + + /* encrypt content */ + if (pkcs7->encryptOID == DESb) { + Des des; + Des_SetKey(&des, contentKeyPlain, tmpIv, DES_ENCRYPTION); + Des_CbcEncrypt(&des, encryptedContent, plain, desOutSz); + + } else if (pkcs7->encryptOID == DES3b) { + Des3 des3; + Des3_SetKey(&des3, contentKeyPlain, tmpIv, DES_ENCRYPTION); + Des3_CbcEncrypt(&des3, encryptedContent, plain, desOutSz); + } + + encContentOctetSz = SetImplicit(ASN_OCTET_STRING, 0, + desOutSz, encContentOctet); + + encContentSeqSz = SetSequence(contentTypeSz + contentEncAlgoSz + + ivOctetStringSz + DES_BLOCK_SIZE + + encContentOctetSz + desOutSz, encContentSeq); + + /* keep track of sizes for outer wrapper layering */ + totalSz = verSz + recipSetSz + recipSz + encContentSeqSz + contentTypeSz + + contentEncAlgoSz + ivOctetStringSz + DES_BLOCK_SIZE + + encContentOctetSz + desOutSz; + + /* EnvelopedData */ + envDataSeqSz = SetSequence(totalSz, envDataSeq); + totalSz += envDataSeqSz; + + /* outer content */ + outerContentSz = SetExplicit(0, totalSz, outerContent); + totalSz += outerContentTypeSz; + totalSz += outerContentSz; + + /* ContentInfo */ + contentInfoSeqSz = SetSequence(totalSz, contentInfoSeq); + totalSz += contentInfoSeqSz; + + if (totalSz > (int)outputSz) { + CYASSL_MSG("Pkcs7_encrypt output buffer too small"); + XFREE(encryptedContent, NULL, DYNAMIC_TYPE_TMP_BUFFER); + if (dynamicFlag) + XFREE(plain, NULL, DYNAMIC_TYPE_TMP_BUFFER); + return BUFFER_E; + } + + XMEMCPY(output + idx, contentInfoSeq, contentInfoSeqSz); + idx += contentInfoSeqSz; + XMEMCPY(output + idx, outerContentType, outerContentTypeSz); + idx += outerContentTypeSz; + XMEMCPY(output + idx, outerContent, outerContentSz); + idx += outerContentSz; + XMEMCPY(output + idx, envDataSeq, envDataSeqSz); + idx += envDataSeqSz; + XMEMCPY(output + idx, ver, verSz); + idx += verSz; + XMEMCPY(output + idx, recipSet, recipSetSz); + idx += recipSetSz; + XMEMCPY(output + idx, recip, recipSz); + idx += recipSz; + XMEMCPY(output + idx, encContentSeq, encContentSeqSz); + idx += encContentSeqSz; + XMEMCPY(output + idx, contentType, contentTypeSz); + idx += contentTypeSz; + XMEMCPY(output + idx, contentEncAlgo, contentEncAlgoSz); + idx += contentEncAlgoSz; + XMEMCPY(output + idx, ivOctetString, ivOctetStringSz); + idx += ivOctetStringSz; + XMEMCPY(output + idx, tmpIv, DES_BLOCK_SIZE); + idx += DES_BLOCK_SIZE; + XMEMCPY(output + idx, encContentOctet, encContentOctetSz); + idx += encContentOctetSz; + XMEMCPY(output + idx, encryptedContent, desOutSz); + idx += desOutSz; + +#ifdef NO_RC4 + FreeRng(&rng); +#endif + + XMEMSET(contentKeyPlain, 0, MAX_CONTENT_KEY_LEN); + XMEMSET(contentKeyEnc, 0, MAX_ENCRYPTED_KEY_SZ); + + if (dynamicFlag) + XFREE(plain, NULL, DYNAMMIC_TYPE_TMP_BUFFER); + XFREE(encryptedContent, NULL, DYNAMIC_TYPE_TMP_BUFFER); + + return idx; +} + +/* unwrap and decrypt PKCS#7 envelopedData object, return decoded size */ +CYASSL_API int PKCS7_DecodeEnvelopedData(PKCS7* pkcs7, byte* pkiMsg, + word32 pkiMsgSz, byte* output, + word32 outputSz) +{ + int recipFound = 0; + int ret, version, length; + word32 savedIdx = 0, idx = 0; + word32 contentType, encOID; + byte issuerHash[SHA_DIGEST_SIZE]; + mp_int serialNum; + + int encryptedKeySz, keySz; + byte tmpIv[DES_BLOCK_SIZE]; + byte encryptedKey[MAX_ENCRYPTED_KEY_SZ]; + byte* decryptedKey = NULL; + + RsaKey privKey; + int encryptedContentSz; + byte padLen; + byte* encryptedContent = NULL; + + if (pkcs7 == NULL || pkcs7->singleCert == NULL || + pkcs7->singleCertSz == 0 || pkcs7->privateKey == NULL || + pkcs7->privateKeySz == 0) + return BAD_FUNC_ARG; + + if (pkiMsg == NULL || pkiMsgSz == 0 || + output == NULL || outputSz == 0) + return BAD_FUNC_ARG; + + /* load private key */ + InitRsaKey(&privKey, 0); + ret = RsaPrivateKeyDecode(pkcs7->privateKey, &idx, &privKey, + pkcs7->privateKeySz); + if (ret != 0) { + CYASSL_MSG("Failed to decode RSA private key"); + return ret; + } + + idx = 0; + + /* read past ContentInfo, verify type is envelopedData */ + if (GetSequence(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + if (GetContentType(pkiMsg, &idx, &contentType, pkiMsgSz) < 0) + return ASN_PARSE_E; + + if (contentType != ENVELOPED_DATA) { + CYASSL_MSG("PKCS#7 input not of type EnvelopedData"); + return PKCS7_OID_E; + } + + if (pkiMsg[idx++] != (ASN_CONSTRUCTED | ASN_CONTEXT_SPECIFIC | 0)) + return ASN_PARSE_E; + + if (GetLength(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* remove EnvelopedData and version */ + if (GetSequence(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + if (GetMyVersion(pkiMsg, &idx, &version) < 0) + return ASN_PARSE_E; + + if (version != 0) { + CYASSL_MSG("PKCS#7 envelopedData needs to be of version 0"); + return ASN_VERSION_E; + } + + /* walk through RecipientInfo set, find correct recipient */ + if (GetSet(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + savedIdx = idx; + recipFound = 0; + + /* when looking for next recipient, use first sequence and version to + * indicate there is another, if not, move on */ + while(recipFound == 0) { + + /* remove RecipientInfo, if we don't have a SEQUENCE, back up idx to + * last good saved one */ + if (GetSequence(pkiMsg, &idx, &length, pkiMsgSz) < 0) { + idx = savedIdx; + break; + } + + if (GetMyVersion(pkiMsg, &idx, &version) < 0) { + idx = savedIdx; + break; + } + + if (version != 0) + return ASN_VERSION_E; + + /* remove IssuerAndSerialNumber */ + if (GetSequence(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + if (GetNameHash(pkiMsg, &idx, issuerHash, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* if we found correct recipient, issuer hashes will match */ + if (XMEMCMP(issuerHash, pkcs7->issuerHash, SHA_DIGEST_SIZE) == 0) { + recipFound = 1; + } + + if (GetInt(&serialNum, pkiMsg, &idx, pkiMsgSz) < 0) + return ASN_PARSE_E; + mp_clear(&serialNum); + + if (GetAlgoId(pkiMsg, &idx, &encOID, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* key encryption algorithm must be RSA for now */ + if (encOID != RSAk) + return ALGO_ID_E; + + /* read encryptedKey */ + if (pkiMsg[idx++] != ASN_OCTET_STRING) + return ASN_PARSE_E; + + if (GetLength(pkiMsg, &idx, &encryptedKeySz, pkiMsgSz) < 0) + return ASN_PARSE_E; + + if (recipFound == 1) + XMEMCPY(encryptedKey, &pkiMsg[idx], encryptedKeySz); + idx += encryptedKeySz; + + /* update good idx */ + savedIdx = idx; + } + + if (recipFound == 0) { + CYASSL_MSG("No recipient found in envelopedData that matches input"); + return PKCS7_RECIP_E; + } + + /* remove EncryptedContentInfo */ + if (GetSequence(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + if (GetContentType(pkiMsg, &idx, &contentType, pkiMsgSz) < 0) + return ASN_PARSE_E; + + if (GetAlgoId(pkiMsg, &idx, &encOID, pkiMsgSz) < 0) + return ASN_PARSE_E; + + /* get block cipher IV, stored in OPTIONAL parameter of AlgoID */ + if (pkiMsg[idx++] != ASN_OCTET_STRING) + return ASN_PARSE_E; + + if (GetLength(pkiMsg, &idx, &length, pkiMsgSz) < 0) + return ASN_PARSE_E; + + if (length != DES_BLOCK_SIZE) { + CYASSL_MSG("Incorrect IV length, must be of DES_BLOCK_SIZE"); + return ASN_PARSE_E; + } + + XMEMCPY(tmpIv, &pkiMsg[idx], length); + idx += length; + + /* read encryptedContent, cont[0] */ + if (pkiMsg[idx++] != (ASN_CONTEXT_SPECIFIC | 0)) + return ASN_PARSE_E; + + if (GetLength(pkiMsg, &idx, &encryptedContentSz, pkiMsgSz) < 0) + return ASN_PARSE_E; + + encryptedContent = XMALLOC(encryptedContentSz, NULL, + DYNAMIC_TYPE_TMP_BUFFER); + + XMEMCPY(encryptedContent, &pkiMsg[idx], encryptedContentSz); + + /* decrypt encryptedKey */ + keySz = RsaPrivateDecryptInline(encryptedKey, encryptedKeySz, + &decryptedKey, &privKey); + FreeRsaKey(&privKey); + if (keySz <= 0) + return keySz; + + /* decrypt encryptedContent */ + if (encOID == DESb) { + Des des; + Des_SetKey(&des, decryptedKey, tmpIv, DES_DECRYPTION); + Des_CbcDecrypt(&des, encryptedContent, encryptedContent, + encryptedContentSz); + } else if (encOID == DES3b) { + Des3 des; + Des3_SetKey(&des, decryptedKey, tmpIv, DES_DECRYPTION); + Des3_CbcDecrypt(&des, encryptedContent, encryptedContent, + encryptedContentSz); + } else { + CYASSL_MSG("Unsupported content encryption OID type"); + return ALGO_ID_E; + } + + padLen = encryptedContent[encryptedContentSz-1]; + + /* copy plaintext to output */ + XMEMCPY(output, encryptedContent, encryptedContentSz - padLen); + + /* free memory, zero out keys */ + XMEMSET(encryptedKey, 0, MAX_ENCRYPTED_KEY_SZ); + XMEMSET(encryptedContent, 0, encryptedContentSz); + XFREE(encryptedContent, NULL, DYNAMIC_TYPE_TMP_BUFFER); + + return encryptedContentSz - padLen; +} + + +#else /* HAVE_PKCS7 */ + + +#ifdef _MSC_VER + /* 4206 warning for blank file */ + #pragma warning(disable: 4206) +#endif + + +#endif /* HAVE_PKCS7 */ + diff --git a/ctaocrypt/src/pwdbased.c b/ctaocrypt/src/pwdbased.c index 3f330ef4d..6152292ca 100644 --- a/ctaocrypt/src/pwdbased.c +++ b/ctaocrypt/src/pwdbased.c @@ -27,6 +27,22 @@ #ifndef NO_PWDBASED +#ifdef CYASSL_PIC32MZ_HASH + +#define InitMd5 InitMd5_sw +#define Md5Update Md5Update_sw +#define Md5Final Md5Final_sw + +#define InitSha InitSha_sw +#define ShaUpdate ShaUpdate_sw +#define ShaFinal ShaFinal_sw + +#define InitSha256 InitSha256_sw +#define Sha256Update Sha256Update_sw +#define Sha256Final Sha256Final_sw + +#endif + #include #include #include diff --git a/ctaocrypt/src/random.c b/ctaocrypt/src/random.c index 1032897b4..09966b8a8 100644 --- a/ctaocrypt/src/random.c +++ b/ctaocrypt/src/random.c @@ -460,15 +460,14 @@ int GenerateSeed(OS_Seed* os, byte* output, word32 sz) #elif defined(MICROCHIP_PIC32) - #ifdef MICROCHIP_MPLAB_HARMONY - #define PIC32_SEED_COUNT _CP0_GET_COUNT - #else - #if !defined(CYASSL_MICROCHIP_PIC32MZ) - #include - #endif - #define PIC32_SEED_COUNT ReadCoreTimer +#ifdef MICROCHIP_MPLAB_HARMONY + #define PIC32_SEED_COUNT _CP0_GET_COUNT +#else + #if !defined(CYASSL_MICROCHIP_PIC32MZ) + #include #endif - + #define PIC32_SEED_COUNT ReadCoreTimer +#endif #ifdef CYASSL_MIC32MZ_RNG #include "xc.h" int GenerateSeed(OS_Seed* os, byte* output, word32 sz) @@ -479,16 +478,17 @@ int GenerateSeed(OS_Seed* os, byte* output, word32 sz) word32 size = sz ; byte* op = output ; + /* This part has to be replaced with better random seed */ RNGNUMGEN1 = ReadCoreTimer(); - RNGPOLY1 = 0x01020304; - RNGPOLY2 = 0x05060709; + RNGPOLY1 = ReadCoreTimer(); + RNGPOLY2 = ReadCoreTimer(); RNGNUMGEN2 = ReadCoreTimer(); #ifdef DEBUG_CYASSL printf("GenerateSeed::Seed=%08x, %08x\n", RNGNUMGEN1, RNGNUMGEN2) ; #endif RNGCONbits.PLEN = 0x40; RNGCONbits.PRNGEN = 1; - for(i=0; i<3; i++) { /* wait for RNGNUMGEN ready */ + for(i=0; i<5; i++) { /* wait for RNGNUMGEN ready */ volatile int x ; x = RNGNUMGEN1 ; x = RNGNUMGEN2 ; @@ -503,36 +503,24 @@ int GenerateSeed(OS_Seed* os, byte* output, word32 sz) if(size==0)break ; } } while(size) ; - -#ifdef DEBUG_CYASSL - printf("\nReturn=") ; - for(i=0; idigest, sizeof(T)); - /* 64 operations, partially loop unrolled */ +#ifdef USE_SLOW_SHA2 + /* over twice as small, but 50% slower */ + /* 80 operations, not unrolled */ + for (j = 0; j < 80; j += 16) { + int m; + for (m = 0; m < 16; m++) { /* braces needed here for macros {} */ + R(m); + } + } +#else + /* 80 operations, partially loop unrolled */ for (j = 0; j < 80; j += 16) { R( 0); R( 1); R( 2); R( 3); R( 4); R( 5); R( 6); R( 7); R( 8); R( 9); R(10); R(11); R(12); R(13); R(14); R(15); } +#endif /* USE_SLOW_SHA2 */ /* Add the working vars back into digest */ @@ -280,13 +291,24 @@ static void Transform384(Sha384* sha384) /* Copy digest to working vars */ XMEMCPY(T, sha384->digest, sizeof(T)); - /* 64 operations, partially loop unrolled */ +#ifdef USE_SLOW_SHA2 + /* over twice as small, but 50% slower */ + /* 80 operations, not unrolled */ + for (j = 0; j < 80; j += 16) { + int m; + for (m = 0; m < 16; m++) { /* braces needed for macros {} */ + R2(m); + } + } +#else + /* 80 operations, partially loop unrolled */ for (j = 0; j < 80; j += 16) { R2( 0); R2( 1); R2( 2); R2( 3); R2( 4); R2( 5); R2( 6); R2( 7); R2( 8); R2( 9); R2(10); R2(11); R2(12); R2(13); R2(14); R2(15); } +#endif /* USE_SLOW_SHA2 */ /* Add the working vars back into digest */ diff --git a/ctaocrypt/test/test.c b/ctaocrypt/test/test.c index 5ba050838..e7459904f 100644 --- a/ctaocrypt/test/test.c +++ b/ctaocrypt/test/test.c @@ -61,6 +61,9 @@ #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 */ @@ -174,6 +177,10 @@ int pbkdf2_test(void); #ifdef HAVE_LIBZ int compress_test(void); #endif +#ifdef HAVE_PKCS7 + int pkcs7enveloped_test(void); + int pkcs7signed_test(void); +#endif @@ -458,6 +465,18 @@ void ctaocrypt_test(void* args) 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; } @@ -1897,6 +1916,12 @@ int aes_test(void) 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); @@ -1909,6 +1934,30 @@ int aes_test(void) 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 */ @@ -2033,8 +2082,10 @@ int aesgcm_test(void) 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; @@ -2487,17 +2538,27 @@ byte GetEntropy(ENTROPY_CMD cmd, byte* out) #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 ; } /* set by shell command */ - void set_clientCert(char *cert) { clientCert = cert ; } /* set by shell command */ + 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 ; } /* set by shell command */ - void set_caCertFile(char * cert) { caCertFile = cert ; } /* set by shell command */ + 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"; @@ -2505,6 +2566,10 @@ byte GetEntropy(ENTROPY_CMD cmd, byte* out) #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 @@ -2784,11 +2849,12 @@ int rsa_test(void) if (ret < 0) return -405; - certSz = MakeCert(&myCert, derCert, FOURK_BUF, &key, &rng); + certSz = MakeCert(&myCert, derCert, FOURK_BUF, &key, NULL, &rng); if (certSz < 0) return -407; - certSz = SignCert(&myCert, derCert, FOURK_BUF, &caKey, &rng); + certSz = SignCert(myCert.bodySz, myCert.sigType, derCert, FOURK_BUF, + &caKey, NULL, &rng); if (certSz < 0) return -408; @@ -2820,6 +2886,95 @@ int rsa_test(void) 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) + return -5312; + + file3 = fopen(eccCaKeyFile, "rb"); + + if (!file3) + return -5412; + + bytes3 = fread(tmp, 1, FOURK_BUF, file3); + fclose(file3); + + ecc_init(&caKey); + ret = EccPrivateKeyDecode(tmp, &idx3, &caKey, (word32)bytes3); + if (ret != 0) 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) + return -5405; + + certSz = MakeCert(&myCert, derCert, FOURK_BUF, NULL, &caKey, &rng); + if (certSz < 0) + return -5407; + + certSz = SignCert(myCert.bodySz, myCert.sigType, derCert, FOURK_BUF, + NULL, &caKey, &rng); + if (certSz < 0) + return -5408; + +#ifdef CYASSL_TEST_CERT + InitDecodedCert(&decode, derCert, certSz, 0); + ret = ParseCert(&decode, CERT_TYPE, NO_VERIFY, 0); + if (ret != 0) + return -5409; + FreeDecodedCert(&decode); +#endif + + derFile = fopen("./certecc.der", "wb"); + if (!derFile) + return -5410; + ret = (int)fwrite(derCert, certSz, 1, derFile); + fclose(derFile); + + pemSz = DerToPem(derCert, certSz, pem, FOURK_BUF, CERT_TYPE); + if (pemSz < 0) + return -5411; + + pemFile = fopen("./certecc.pem", "wb"); + if (!pemFile) + return -5412; + ret = (int)fwrite(pem, pemSz, 1, pemFile); + fclose(pemFile); + free(pem); + free(derCert); + ecc_free(&caKey); + } +#endif /* HAVE_ECC */ #ifdef HAVE_NTRU { RsaKey caKey; @@ -2900,7 +3055,8 @@ int rsa_test(void) if (certSz < 0) return -456; - certSz = SignCert(&myCert, derCert, FOURK_BUF, &caKey, &rng); + certSz = SignCert(myCert.bodySz, myCert.sigType, derCert, FOURK_BUF, + &caKey, NULL, &rng); if (certSz < 0) return -457; @@ -2938,6 +3094,66 @@ int rsa_test(void) FreeRsaKey(&caKey); } #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) + 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) + return -465; + + derSz = SignCert(req.bodySz, req.sigType, der, FOURK_BUF, + &key, NULL, &rng); + if (derSz < 0) + return -466; + + pemSz = DerToPem(der, derSz, pem, FOURK_BUF, CERTREQ_TYPE); + if (pemSz < 0) + return -467; + + reqFile = fopen("./certreq.der", "wb"); + if (!reqFile) + return -468; + + ret = (int)fwrite(der, derSz, 1, reqFile); + fclose(reqFile); + + reqFile = fopen("./certreq.pem", "wb"); + if (!reqFile) + return -469; + ret = (int)fwrite(pem, pemSz, 1, reqFile); + fclose(reqFile); + + free(pem); + free(der); + } +#endif /* CYASSL_CERT_REQ */ #endif /* CYASSL_CERT_GEN */ FreeRsaKey(&key); @@ -3628,12 +3844,12 @@ int ecc_encrypt_test(void) for (i = 0; i < 48; i++) msg[i] = i; - /* send encrypted msg to B */ + /* encrypt msg to B */ ret = ecc_encrypt(&userA, &userB, msg, sizeof(msg), out, &outSz, NULL); if (ret != 0) return -3003; - /* decrypted msg to B */ + /* decrypt msg from A */ ret = ecc_decrypt(&userB, &userA, out, outSz, plain, &plainSz, NULL); if (ret != 0) return -3004; @@ -3641,6 +3857,84 @@ int ecc_encrypt_test(void) 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); @@ -3766,4 +4060,269 @@ int compress_test(void) #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) + return -202; + + certFile = fopen(clientCert, "rb"); + if (!certFile) + 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) + 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) + return -203; + + /* decode envelopedData */ + decodedSz = PKCS7_DecodeEnvelopedData(&pkcs7, enveloped, envelopedSz, + decoded, sizeof(decoded)); + if (decodedSz <= 0) + return -204; + + /* test decode result */ + if (memcmp(decoded, data, sizeof(data)) != 0) { + return -205; + } + + /* output pkcs7 envelopedData for external testing */ + pkcs7File = fopen(pkcs7OutFile, "wb"); + if (!pkcs7File) + 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); + keyDer = (byte*)malloc(FOURK_BUF); + out = (byte*)malloc(FOURK_BUF); + + if (certDer == NULL) + return -207; + if (keyDer == NULL) + return -208; + if (out == NULL) + 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); + senderNonce[0] = 0x04; + senderNonce[1] = PKCS7_NONCE_SZ; + RNG_GenerateBlock(&rng, &senderNonce[2], PKCS7_NONCE_SZ); + + 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; + + InitSha(&sha); + 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 -210; + } + 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 -211; + } + ret = (int)fwrite(out, 1, outSz, file); + fclose(file); + + 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 -212; + } + + if (msg.singleCert == NULL || msg.singleCertSz == 0) { + free(certDer); + free(keyDer); + free(out); + PKCS7_Free(&msg); + return -213; + } + + file = fopen("./pkcs7cert.der", "wb"); + if (!file) { + free(certDer); + free(keyDer); + free(out); + PKCS7_Free(&msg); + return -214; + } + 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 --git a/cyassl-ntru.vcproj b/cyassl-ntru.vcproj index 57720a52d..0813acdc7 100755 --- a/cyassl-ntru.vcproj +++ b/cyassl-ntru.vcproj @@ -166,10 +166,22 @@ RelativePath=".\ctaocrypt\src\asn.c" > + + + + + + @@ -182,6 +194,10 @@ RelativePath=".\ctaocrypt\src\dsa.c" > + + @@ -230,6 +246,10 @@ RelativePath=".\ctaocrypt\src\misc.c" > + + diff --git a/cyassl.vcproj b/cyassl.vcproj index 958f3ab61..82f919d25 100755 --- a/cyassl.vcproj +++ b/cyassl.vcproj @@ -162,10 +162,22 @@ RelativePath=".\ctaocrypt\src\asn.c" > + + + + + + @@ -178,6 +190,10 @@ RelativePath=".\ctaocrypt\src\dsa.c" > + + @@ -222,6 +238,10 @@ RelativePath=".\ctaocrypt\src\memory.c" > + + diff --git a/cyassl/ctaocrypt/aes.h b/cyassl/ctaocrypt/aes.h index 37861903e..b08e4e86a 100644 --- a/cyassl/ctaocrypt/aes.h +++ b/cyassl/ctaocrypt/aes.h @@ -92,6 +92,14 @@ typedef struct Aes { word32 magic; /* using cavium magic */ word64 contextHandle; /* nitrox context memory handle */ #endif +#ifdef CYASSL_AES_COUNTER + word32 left; /* unsued bytes left from last call */ +#endif +#ifdef CYASSL_PIC32MZ_CRYPT + word32 key_ce[AES_BLOCK_SIZE*2/sizeof(word32)] ; + word32 iv_ce [AES_BLOCK_SIZE /sizeof(word32)] ; + int keylen ; +#endif } Aes; diff --git a/cyassl/ctaocrypt/asn.h b/cyassl/ctaocrypt/asn.h index 70dbfbe09..db7ab2932 100644 --- a/cyassl/ctaocrypt/asn.h +++ b/cyassl/ctaocrypt/asn.h @@ -59,6 +59,7 @@ enum ASN_Tags { ASN_TAG_NULL = 0x05, ASN_OBJECT_ID = 0x06, ASN_ENUMERATED = 0x0a, + ASN_UTF8STRING = 0x0c, ASN_SEQUENCE = 0x10, ASN_SET = 0x11, ASN_UTC_TIME = 0x17, @@ -125,6 +126,9 @@ enum Misc_ASN { MAX_ALGO_SZ = 20, MAX_SEQ_SZ = 5, /* enum(seq | con) + length(4) */ MAX_SET_SZ = 5, /* enum(set | con) + length(4) */ + MAX_OCTET_STR_SZ = 5, /* enum(set | con) + length(4) */ + MAX_EXP_SZ = 5, /* enum(contextspec|con|exp) + length(4) */ + MAX_PRSTR_SZ = 5, /* enum(prstr) + length(4) */ MAX_VERSION_SZ = 5, /* enum + id + version(byte) + (header(2))*/ MAX_ENCODED_DIG_SZ = 73, /* sha512 + enum(bit or octet) + legnth(4) */ MAX_RSA_INT_SZ = 517, /* RSA raw sz 4096 for bits + tag + len(4) */ @@ -135,6 +139,11 @@ enum Misc_ASN { MAX_CA_SZ = 32, /* Max encoded CA basic constraint length */ MAX_SN_SZ = 35, /* Max encoded serial number (INT) length */ #ifdef CYASSL_CERT_GEN + #ifdef CYASSL_CERT_REQ + /* Max encoded cert req attributes length */ + MAX_ATTRIB_SZ = MAX_SEQ_SZ * 3 + (11 + MAX_SEQ_SZ) * 2 + + MAX_PRSTR_SZ + CTC_NAME_SIZE, /* 11 is the OID size */ + #endif #ifdef CYASSL_ALT_NAMES MAX_EXTENSIONS_SZ = 1 + MAX_LENGTH_SZ + CTC_MAX_ALT_SIZE, #else @@ -151,9 +160,11 @@ enum Misc_ASN { enum Oid_Types { - hashType = 0, - sigType = 1, - keyType = 2 + hashType = 0, + sigType = 1, + keyType = 2, + curveType = 3, + blkType = 4 }; @@ -167,6 +178,12 @@ enum Hash_Sum { }; +enum Block_Sum { + DESb = 69, + DES3b = 652 +}; + + enum Key_Sum { DSAk = 515, RSAk = 645, @@ -198,7 +215,8 @@ enum Extensions_Sum { CA_ISSUER_OID = 117, AUTH_KEY_OID = 149, SUBJ_KEY_OID = 128, - CERT_POLICY_OID = 146 + CERT_POLICY_OID = 146, + KEY_USAGE_OID = 129 /* 2.5.29.15 */ }; enum CertificatePolicy_Sum { @@ -209,6 +227,11 @@ enum SepHardwareName_Sum { HW_NAME_OID = 79 /* 1.3.6.1.5.5.7.8.4 from RFC 4108*/ }; +enum AuthInfo_Sum { + AIA_OCSP_OID = 116, /* 1.3.6.1.5.5.7.48.1 */ + AIA_CA_ISSUER_OID = 117 /* 1.3.6.1.5.5.7.48.2 */ +}; + enum VerifyType { NO_VERIFY = 0, @@ -216,6 +239,18 @@ enum VerifyType { }; +/* Key usage extension bits */ +#define KEYUSE_DIGITAL_SIG 0x0100 +#define KEYUSE_CONTENT_COMMIT 0x0080 +#define KEYUSE_KEY_ENCIPHER 0x0040 +#define KEYUSE_DATA_ENCIPHER 0x0020 +#define KEYUSE_KEY_AGREE 0x0010 +#define KEYUSE_KEY_CERT_SIGN 0x0008 +#define KEYUSE_CRL_SIGN 0x0004 +#define KEYUSE_ENCIPHER_ONLY 0x0002 +#define KEYUSE_DECIPHER_ONLY 0x0001 + + typedef struct DNS_entry DNS_entry; struct DNS_entry { @@ -296,11 +331,35 @@ struct DecodedCert { byte extSubjKeyIdSet; /* Set when the SKID was read from cert */ byte extAuthKeyId[SHA_SIZE]; /* Authority Key ID */ byte extAuthKeyIdSet; /* Set when the AKID was read from cert */ - byte isCA; /* CA basic constraint true */ + byte isCA; /* CA basic constraint true */ +#ifdef OPENSSL_EXTRA + byte extBasicConstSet; + byte extBasicConstCrit; + byte extBasicConstPlSet; + word32 pathLength; /* CA basic constraint path length, opt */ + byte extSubjAltNameSet; + byte extSubjAltNameCrit; + byte extAuthKeyIdCrit; + byte extSubjKeyIdCrit; + byte extKeyUsageSet; + byte extKeyUsageCrit; + word16 extKeyUsage; /* Key usage bitfield */ + byte* extAuthKeyIdSrc; + word32 extAuthKeyIdSz; + byte* extSubjKeyIdSrc; + word32 extSubjKeyIdSz; +#endif +#ifdef HAVE_ECC + word32 pkCurveOID; /* Public Key's curve OID */ +#endif /* HAVE_ECC */ byte* beforeDate; int beforeDateLen; byte* afterDate; int afterDateLen; +#ifdef HAVE_PKCS7 + byte* issuerRaw; /* pointer to issuer inside source */ + int issuerRawLen; +#endif #if defined(CYASSL_CERT_GEN) /* easy access to subject info for other sign */ char* subjectSN; @@ -329,6 +388,10 @@ struct DecodedCert { byte* hwType; int hwSerialNumSz; byte* hwSerialNum; + #ifdef OPENSSL_EXTRA + byte extCertPolicySet; + byte extCertPolicyCrit; + #endif /* OPENSSL_EXTRA */ #endif /* CYASSL_SEP */ }; @@ -385,15 +448,37 @@ CYASSL_LOCAL int ToTraditionalEnc(byte* buffer, word32 length,const char*, int); CYASSL_LOCAL int ValidateDate(const byte* date, byte format, int dateType); +/* ASN.1 helper functions */ +CYASSL_LOCAL int GetLength(const byte* input, word32* inOutIdx, int* len, + word32 maxIdx); +CYASSL_LOCAL int GetSequence(const byte* input, word32* inOutIdx, int* len, + word32 maxIdx); +CYASSL_LOCAL int GetSet(const byte* input, word32* inOutIdx, int* len, + word32 maxIdx); +CYASSL_LOCAL int GetMyVersion(const byte* input, word32* inOutIdx, + int* version); +CYASSL_LOCAL int GetInt(mp_int* mpi, const byte* input, word32* inOutIdx, + word32 maxIdx); +CYASSL_LOCAL int GetAlgoId(const byte* input, word32* inOutIdx, word32* oid, + word32 maxIdx); +CYASSL_LOCAL word32 SetLength(word32 length, byte* output); +CYASSL_LOCAL word32 SetSequence(word32 len, byte* output); +CYASSL_LOCAL word32 SetOctetString(word32 len, byte* output); +CYASSL_LOCAL word32 SetImplicit(byte tag, byte number, word32 len,byte* output); +CYASSL_LOCAL word32 SetExplicit(byte number, word32 len, byte* output); +CYASSL_LOCAL word32 SetSet(word32 len, byte* output); +CYASSL_LOCAL word32 SetAlgoID(int algoOID, byte* output, int type, int curveSz); +CYASSL_LOCAL int SetMyVersion(word32 version, byte* output, int header); +CYASSL_LOCAL int SetSerialNumber(const byte* sn, word32 snSz, byte* output); +CYASSL_LOCAL int GetNameHash(const byte* source, word32* idx, byte* hash, + int maxIdx); + #ifdef HAVE_ECC /* ASN sig helpers */ CYASSL_LOCAL int StoreECC_DSA_Sig(byte* out, word32* outLen, mp_int* r, mp_int* s); CYASSL_LOCAL int DecodeECC_DSA_Sig(const byte* sig, word32 sigLen, mp_int* r, mp_int* s); - /* private key helpers */ - CYASSL_API int EccPrivateKeyDecode(const byte* input,word32* inOutIdx, - ecc_key*,word32); #endif #ifdef CYASSL_CERT_GEN @@ -403,7 +488,8 @@ enum cert_enums { JOINT_LEN = 2, EMAIL_JOINT_LEN = 9, RSA_KEY = 10, - NTRU_KEY = 11 + NTRU_KEY = 11, + ECC_KEY = 12 }; diff --git a/cyassl/ctaocrypt/asn_public.h b/cyassl/ctaocrypt/asn_public.h index f824fbb36..24c6a79e5 100644 --- a/cyassl/ctaocrypt/asn_public.h +++ b/cyassl/ctaocrypt/asn_public.h @@ -24,6 +24,7 @@ #define CTAO_CRYPT_ASN_PUBLIC_H #include +#include #ifdef CYASSL_CERT_GEN #include #endif @@ -41,7 +42,8 @@ enum CertType { DH_PARAM_TYPE, CRL_TYPE, CA_TYPE, - ECC_PRIVATEKEY_TYPE + ECC_PRIVATEKEY_TYPE, + CERTREQ_TYPE }; @@ -63,6 +65,10 @@ enum Ctc_SigType { #ifdef CYASSL_CERT_GEN +#ifndef HAVE_ECC + typedef struct ecc_key ecc_key; +#endif + enum Ctc_Misc { CTC_NAME_SIZE = 64, CTC_DATE_SIZE = 32, @@ -103,6 +109,9 @@ typedef struct Cert { byte afterDate[CTC_DATE_SIZE]; /* after date copy */ int afterDateSz; /* size of copy */ #endif +#ifdef CYASSL_CERT_REQ + char challengePw[CTC_NAME_SIZE]; +#endif } Cert; @@ -120,8 +129,14 @@ typedef struct Cert { keyType = RSA_KEY (default) */ CYASSL_API void InitCert(Cert*); -CYASSL_API int MakeCert(Cert*, byte* derBuffer, word32 derSz, RsaKey*, RNG*); -CYASSL_API int SignCert(Cert*, byte* derBuffer, word32 derSz, RsaKey*, RNG*); +CYASSL_API int MakeCert(Cert*, byte* derBuffer, word32 derSz, RsaKey*, + ecc_key*, RNG*); +#ifdef CYASSL_CERT_REQ + CYASSL_API int MakeCertReq(Cert*, byte* derBuffer, word32 derSz, RsaKey*, + ecc_key*); +#endif +CYASSL_API int SignCert(int requestSz, int sigType, byte* derBuffer, + word32 derSz, RsaKey*, ecc_key*, RNG*); CYASSL_API int MakeSelfCert(Cert*, byte* derBuffer, word32 derSz, RsaKey*, RNG*); CYASSL_API int SetIssuer(Cert*, const char*); @@ -147,6 +162,12 @@ CYASSL_API int SetDatesBuffer(Cert*, const byte*, int); word32 outputSz, int type); #endif +#ifdef HAVE_ECC + /* private key helpers */ + CYASSL_API int EccPrivateKeyDecode(const byte* input,word32* inOutIdx, + ecc_key*,word32); +#endif + #ifdef __cplusplus } /* extern "C" */ diff --git a/cyassl/ctaocrypt/coding.h b/cyassl/ctaocrypt/coding.h index a22cd3801..911163794 100644 --- a/cyassl/ctaocrypt/coding.h +++ b/cyassl/ctaocrypt/coding.h @@ -39,6 +39,9 @@ CYASSL_LOCAL int Base64_Decode(const byte* in, word32 inLen, byte* out, CYASSL_API int Base64_Encode(const byte* in, word32 inLen, byte* out, word32* outLen); + CYASSL_API + int Base64_EncodeEsc(const byte* in, word32 inLen, byte* out, + word32* outLen); CYASSL_LOCAL int Base16_Decode(const byte* in, word32 inLen, byte* out, word32* outLen); #endif diff --git a/cyassl/ctaocrypt/des3.h b/cyassl/ctaocrypt/des3.h index 6a970d40d..fe931960e 100644 --- a/cyassl/ctaocrypt/des3.h +++ b/cyassl/ctaocrypt/des3.h @@ -45,6 +45,12 @@ enum { DES_DECRYPTION = 1 }; +#define DES_IVLEN 8 +#define DES_KEYLEN 8 +#define DES3_IVLEN 8 +#define DES3_KEYLEN 24 + + #ifdef STM32F2_CRYPTO enum { DES_CBC = 0, @@ -55,14 +61,24 @@ enum { /* DES encryption and decryption */ typedef struct Des { - word32 key[DES_KS_SIZE]; word32 reg[DES_BLOCK_SIZE / sizeof(word32)]; /* for CBC mode */ word32 tmp[DES_BLOCK_SIZE / sizeof(word32)]; /* same */ +#ifdef HAVE_COLDFIRE_SEC + byte keylen ; /* for Coldfire SEC */ + byte ivlen ; /* for Coldfire SEC */ + byte iv[DES3_IVLEN]; /* for Coldfire SEC */ +#endif + word32 key[DES_KS_SIZE]; } Des; /* DES3 encryption and decryption */ typedef struct Des3 { +#ifdef HAVE_COLDFIRE_SEC + byte keylen ; /* for Coldfire SEC */ + byte ivlen ; /* for Coldfire SEC */ + byte iv[DES3_IVLEN]; /* for Coldfire SEC */ +#endif word32 key[3][DES_KS_SIZE]; word32 reg[DES_BLOCK_SIZE / sizeof(word32)]; /* for CBC mode */ word32 tmp[DES_BLOCK_SIZE / sizeof(word32)]; /* same */ diff --git a/cyassl/ctaocrypt/ecc.h b/cyassl/ctaocrypt/ecc.h index 683429fec..2434a6844 100644 --- a/cyassl/ctaocrypt/ecc.h +++ b/cyassl/ctaocrypt/ecc.h @@ -49,7 +49,7 @@ typedef struct { int size; /* The size of the curve in octets */ const char* name; /* name of this curve */ const char* prime; /* prime that defines the field, curve is in (hex) */ - const char* B; /* fields B param (hex) */ + const char* Bf; /* fields B param (hex) */ const char* order; /* order of the curve (hex) */ const char* Gx; /* x coordinate of the base point on curve (hex) */ const char* Gy; /* y coordinate of the base point on curve (hex) */ @@ -119,6 +119,7 @@ CYASSL_API int ecc_sig_size(ecc_key* key); +#ifdef HAVE_ECC_ENCRYPT /* ecc encrypt */ enum ecEncAlgo { @@ -137,34 +138,39 @@ enum ecMacAlgo { }; enum { - KEY_SIZE_128 = 16, - KEY_SIZE_256 = 32, - IV_SIZE_64 = 8 + KEY_SIZE_128 = 16, + KEY_SIZE_256 = 32, + IV_SIZE_64 = 8, + EXCHANGE_SALT_SZ = 16, + EXCHANGE_INFO_SZ = 23 }; -typedef struct ecEncOptions { - byte encAlgo; /* which encryption type */ - byte kdfAlgo; /* which key derivation function type */ - byte macAlgo; /* which mac function type */ - byte* kdfSalt; /* optional salt for kdf */ - byte* kdfInfo; /* optional info for kdf */ - byte* macSalt; /* optional salt for mac */ - word32 kdfSaltSz; /* size of kdfSalt */ - word32 kdfInfoSz; /* size of kdfInfo */ - word32 macSaltSz; /* size of macSalt */ -} ecEncOptions; +enum ecFlags { + REQ_RESP_CLIENT = 1, + REQ_RESP_SERVER = 2 +}; + + +typedef struct ecEncCtx ecEncCtx; CYASSL_API -void ecc_encrypt_init_options(ecEncOptions*); /* init and set to defaults */ +ecEncCtx* ecc_ctx_new(int flags, RNG* rng); CYASSL_API -void ecc_encrypt_free_options(ecEncOptions*); /* release/clear options */ +void ecc_ctx_free(ecEncCtx*); + +CYASSL_API +const byte* ecc_ctx_get_own_salt(ecEncCtx*); +CYASSL_API +int ecc_ctx_set_peer_salt(ecEncCtx*, const byte* salt); CYASSL_API int ecc_encrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, - word32 msgSz, byte* out, word32* outSz, ecEncOptions* options); + word32 msgSz, byte* out, word32* outSz, ecEncCtx* ctx); CYASSL_API int ecc_decrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, - word32 msgSz, byte* out, word32* outSz, ecEncOptions* options); + word32 msgSz, byte* out, word32* outSz, ecEncCtx* ctx); + +#endif /* HAVE_ECC_ENCRYPT */ #ifdef __cplusplus } /* extern "C" */ diff --git a/cyassl/ctaocrypt/error.h b/cyassl/ctaocrypt/error.h index 7bb7960c3..af4d8e9c8 100644 --- a/cyassl/ctaocrypt/error.h +++ b/cyassl/ctaocrypt/error.h @@ -114,6 +114,14 @@ enum { ASN_CRL_NO_SIGNER_E = -190, /* ASN CRL no signer to confirm failure */ ASN_OCSP_CONFIRM_E = -191, /* ASN OCSP signature confirm failure */ + BAD_ENC_STATE_E = -192, /* Bad ecc enc state operation */ + BAD_PADDING_E = -193, /* Bad padding, msg not correct length */ + + REQ_ATTRIBUTE_E = -194, /* setting cert request attributes error */ + + PKCS7_OID_E = -195, /* PKCS#7, mismatched OID error */ + PKCS7_RECIP_E = -196, /* PKCS#7, recipient error */ + MIN_CODE_E = -200 /* errors -101 - -199 */ }; diff --git a/cyassl/ctaocrypt/include.am b/cyassl/ctaocrypt/include.am index 8be43c5e1..5c38659ef 100644 --- a/cyassl/ctaocrypt/include.am +++ b/cyassl/ctaocrypt/include.am @@ -21,6 +21,7 @@ nobase_include_HEADERS+= \ cyassl/ctaocrypt/md4.h \ cyassl/ctaocrypt/md5.h \ cyassl/ctaocrypt/misc.h \ + cyassl/ctaocrypt/pkcs7.h \ cyassl/ctaocrypt/port.h \ cyassl/ctaocrypt/pwdbased.h \ cyassl/ctaocrypt/rabbit.h \ diff --git a/cyassl/ctaocrypt/integer.h b/cyassl/ctaocrypt/integer.h index 2f7ab84fa..707eff7bf 100644 --- a/cyassl/ctaocrypt/integer.h +++ b/cyassl/ctaocrypt/integer.h @@ -286,6 +286,7 @@ int mp_2expt (mp_int * a, int b); int mp_reduce_2k_setup(mp_int *a, mp_digit *d); int mp_add_d (mp_int* a, mp_digit b, mp_int* c); int mp_set_int (mp_int * a, unsigned long b); +int mp_sub_d (mp_int * a, mp_digit b, mp_int * c); /* end support added functions */ /* added */ @@ -305,10 +306,6 @@ int mp_init_multi(mp_int* a, mp_int* b, mp_int* c, mp_int* d, mp_int* e, int mp_lcm (mp_int * a, mp_int * b, mp_int * c); #endif -#if defined(HAVE_ECC) || !defined(NO_PWDBASED) || defined(CYASSL_SNIFFER) - int mp_sub_d (mp_int * a, mp_digit b, mp_int * c); -#endif - #ifdef __cplusplus } #endif diff --git a/cyassl/ctaocrypt/md5.h b/cyassl/ctaocrypt/md5.h index 2ab16b1b9..b669998e3 100644 --- a/cyassl/ctaocrypt/md5.h +++ b/cyassl/ctaocrypt/md5.h @@ -42,22 +42,28 @@ enum { MD5_PAD_SIZE = 56 }; +#ifdef CYASSL_PIC32MZ_HASH +#include "port/pic32/pic32mz-crypt.h" +#endif /* MD5 digest */ typedef struct Md5 { word32 buffLen; /* in bytes */ word32 loLen; /* length in bytes */ word32 hiLen; /* length in bytes */ - word32 digest[MD5_DIGEST_SIZE / sizeof(word32)]; word32 buffer[MD5_BLOCK_SIZE / sizeof(word32)]; + #ifndef CYASSL_PIC32MZ_HASH + word32 digest[MD5_DIGEST_SIZE / sizeof(word32)]; + #else + word32 digest[PIC32_HASH_SIZE / sizeof(word32)]; + pic32mz_desc desc ; /* Crypt Engine descripter */ + #endif } Md5; - CYASSL_API void InitMd5(Md5*); CYASSL_API void Md5Update(Md5*, const byte*, word32); CYASSL_API void Md5Final(Md5*, byte*); - #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/cyassl/ctaocrypt/pkcs7.h b/cyassl/ctaocrypt/pkcs7.h new file mode 100644 index 000000000..b4313f399 --- /dev/null +++ b/cyassl/ctaocrypt/pkcs7.h @@ -0,0 +1,123 @@ +/* pkcs7.h + * + * Copyright (C) 2006-2013 wolfSSL Inc. + * + * This file is part of CyaSSL. + * + * CyaSSL 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. + * + * CyaSSL 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_PKCS7 + +#ifndef CTAO_CRYPT_PKCS7_H +#define CTAO_CRYPT_PKCS7_H + +#include +#include +#include +#include +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/* PKCS#7 content types, ref RFC 2315 (Section 14) */ +enum PKCS7_TYPES { + PKCS7_MSG = 650, /* 1.2.840.113549.1.7 */ + DATA = 651, /* 1.2.840.113549.1.7.1 */ + SIGNED_DATA = 652, /* 1.2.840.113549.1.7.2 */ + ENVELOPED_DATA = 653, /* 1.2.840.113549.1.7.3 */ + SIGNED_AND_ENVELOPED_DATA = 654, /* 1.2.840.113549.1.7.4 */ + DIGESTED_DATA = 655, /* 1.2.840.113549.1.7.5 */ + ENCRYPTED_DATA = 656 /* 1.2.840.113549.1.7.6 */ +}; + +enum Pkcs7_Misc { + PKCS7_NONCE_SZ = 16, + MAX_ENCRYPTED_KEY_SZ = 512, /* max enc. key size, RSA <= 4096 */ + MAX_CONTENT_KEY_LEN = DES3_KEYLEN, /* highest current cipher is 3DES */ + MAX_RECIP_SZ = MAX_VERSION_SZ + + MAX_SEQ_SZ + ASN_NAME_MAX + MAX_SN_SZ + + MAX_SEQ_SZ + MAX_ALGO_SZ + 1 + MAX_ENCRYPTED_KEY_SZ +}; + + +typedef struct PKCS7Attrib { + byte* oid; + word32 oidSz; + byte* value; + word32 valueSz; +} PKCS7Attrib; + + +typedef struct PKCS7 { + byte* content; /* inner content, not owner */ + word32 contentSz; /* content size */ + int contentOID; /* PKCS#7 content type OID sum */ + + RNG* rng; + + int hashOID; + int encryptOID; /* key encryption algorithm OID */ + + byte* singleCert; /* recipient cert, DER, not owner */ + word32 singleCertSz; /* size of recipient cert buffer, bytes */ + byte issuerHash[SHA_SIZE]; /* hash of all alt Names */ + byte* issuer; /* issuer name of singleCert */ + word32 issuerSz; /* length of issuer name */ + byte issuerSn[MAX_SN_SZ]; /* singleCert's serial number */ + word32 issuerSnSz; /* length of serial number */ + byte publicKey[512]; + word32 publicKeySz; + byte* privateKey; /* private key, DER, not owner */ + word32 privateKeySz; /* size of private key buffer, bytes */ + + PKCS7Attrib* signedAttribs; + word32 signedAttribsSz; +} PKCS7; + + +CYASSL_LOCAL int SetContentType(int pkcs7TypeOID, byte* output); +CYASSL_LOCAL int GetContentType(const byte* input, word32* inOutIdx, + word32* oid, word32 maxIdx); +CYASSL_LOCAL int CreateRecipientInfo(const byte* cert, word32 certSz, + int keyEncAlgo, int blockKeySz, + RNG* rng, byte* contentKeyPlain, + byte* contentKeyEnc, + int* keyEncSz, byte* out, word32 outSz); + +CYASSL_API int PKCS7_InitWithCert(PKCS7* pkcs7, byte* cert, word32 certSz); +CYASSL_API void PKCS7_Free(PKCS7* pkcs7); +CYASSL_API int PKCS7_EncodeData(PKCS7* pkcs7, byte* output, word32 outputSz); +CYASSL_API int PKCS7_EncodeSignedData(PKCS7* pkcs7, + byte* output, word32 outputSz); +CYASSL_API int PKCS7_VerifySignedData(PKCS7* pkcs7, + byte* pkiMsg, word32 pkiMsgSz); +CYASSL_API int PKCS7_EncodeEnvelopedData(PKCS7* pkcs7, + byte* output, word32 outputSz); +CYASSL_API int PKCS7_DecodeEnvelopedData(PKCS7* pkcs7, byte* pkiMsg, + word32 pkiMsgSz, byte* output, + word32 outputSz); + +#ifdef __cplusplus + } /* extern "C" */ +#endif + +#endif /* CTAO_CRYPT_PKCS7_H */ + +#endif /* HAVE_PKCS7 */ + diff --git a/cyassl/ctaocrypt/settings.h b/cyassl/ctaocrypt/settings.h index d61c5484a..31a596df3 100644 --- a/cyassl/ctaocrypt/settings.h +++ b/cyassl/ctaocrypt/settings.h @@ -43,7 +43,7 @@ /* #define MBED */ /* Uncomment next line if using Microchip PIC32 ethernet starter kit */ -/* #define MICROCHIP_PIC32 */ +#define MICROCHIP_PIC32 /* Uncomment next line if using Microchip TCP/IP stack, version 5 */ /* #define MICROCHIP_TCPIP_V5 */ @@ -51,6 +51,9 @@ /* 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 */ @@ -78,6 +81,9 @@ /* Uncomment next line if using Comverge settings */ /* #define COMVERGE */ +/* Uncomment next line if using QL SEP settings */ +/* #define CYASSL_QL */ + #include @@ -112,6 +118,7 @@ #endif #ifdef MICROCHIP_PIC32 + /* #define CYASSL_MICROCHIP_PIC32MZ */ #define SIZEOF_LONG_LONG 8 #define SINGLE_THREADED #define CYASSL_USER_IO @@ -122,6 +129,18 @@ #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" @@ -149,10 +168,26 @@ #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 @@ -313,8 +348,8 @@ #include "mutex.h" #endif - #define XMALLOC(s, h, type) (void *)_mem_alloc_system((s)) - #define XFREE(p, h, type) _mem_free(p) + #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 @@ -524,6 +559,37 @@ #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 diff --git a/cyassl/ctaocrypt/sha.h b/cyassl/ctaocrypt/sha.h index ce96f2781..4904f9b92 100644 --- a/cyassl/ctaocrypt/sha.h +++ b/cyassl/ctaocrypt/sha.h @@ -43,14 +43,22 @@ enum { SHA_PAD_SIZE = 56 }; +#ifdef CYASSL_PIC32MZ_HASH +#include "port/pic32/pic32mz-crypt.h" +#endif /* Sha digest */ typedef struct Sha { word32 buffLen; /* in bytes */ word32 loLen; /* length in bytes */ word32 hiLen; /* length in bytes */ - word32 digest[SHA_DIGEST_SIZE / sizeof(word32)]; word32 buffer[SHA_BLOCK_SIZE / sizeof(word32)]; + #ifndef CYASSL_PIC32MZ_HASH + word32 digest[SHA_DIGEST_SIZE / sizeof(word32)]; + #else + word32 digest[PIC32_HASH_SIZE / sizeof(word32)]; + pic32mz_desc desc ; /* Crypt Engine descripter */ + #endif } Sha; diff --git a/cyassl/ctaocrypt/sha256.h b/cyassl/ctaocrypt/sha256.h index 7c65e133c..7231cfafd 100644 --- a/cyassl/ctaocrypt/sha256.h +++ b/cyassl/ctaocrypt/sha256.h @@ -34,6 +34,10 @@ extern "C" { #endif +#ifdef CYASSL_PIC32MZ_HASH +#include "port/pic32/pic32mz-crypt.h" +#endif + /* in bytes */ enum { @@ -51,6 +55,9 @@ typedef struct Sha256 { word32 hiLen; /* length in bytes */ word32 digest[SHA256_DIGEST_SIZE / sizeof(word32)]; word32 buffer[SHA256_BLOCK_SIZE / sizeof(word32)]; + #ifdef CYASSL_PIC32MZ_HASH + pic32mz_desc desc ; /* Crypt Engine descripter */ + #endif } Sha256; diff --git a/cyassl/ctaocrypt/tfm.h b/cyassl/ctaocrypt/tfm.h index 2495f67ab..e1b16e2d3 100644 --- a/cyassl/ctaocrypt/tfm.h +++ b/cyassl/ctaocrypt/tfm.h @@ -510,104 +510,104 @@ void s_fp_add(fp_int *a, fp_int *b, fp_int *c); void s_fp_sub(fp_int *a, fp_int *b, fp_int *c); void fp_reverse(unsigned char *s, int len); -void fp_mul_comba(fp_int *A, fp_int *B, fp_int *C); +void fp_mul_comba(fp_int *a, fp_int *b, fp_int *c); #ifdef TFM_SMALL_SET -void fp_mul_comba_small(fp_int *A, fp_int *B, fp_int *C); +void fp_mul_comba_small(fp_int *a, fp_int *b, fp_int *c); #endif #ifdef TFM_MUL3 -void fp_mul_comba3(fp_int *A, fp_int *B, fp_int *C); +void fp_mul_comba3(fp_int *a, fp_int *b, fp_int *c); #endif #ifdef TFM_MUL4 -void fp_mul_comba4(fp_int *A, fp_int *B, fp_int *C); +void fp_mul_comba4(fp_int *a, fp_int *b, fp_int *c); #endif #ifdef TFM_MUL6 -void fp_mul_comba6(fp_int *A, fp_int *B, fp_int *C); +void fp_mul_comba6(fp_int *a, fp_int *b, fp_int *c); #endif #ifdef TFM_MUL7 -void fp_mul_comba7(fp_int *A, fp_int *B, fp_int *C); +void fp_mul_comba7(fp_int *a, fp_int *b, fp_int *c); #endif #ifdef TFM_MUL8 -void fp_mul_comba8(fp_int *A, fp_int *B, fp_int *C); +void fp_mul_comba8(fp_int *a, fp_int *b, fp_int *c); #endif #ifdef TFM_MUL9 -void fp_mul_comba9(fp_int *A, fp_int *B, fp_int *C); +void fp_mul_comba9(fp_int *a, fp_int *b, fp_int *c); #endif #ifdef TFM_MUL12 -void fp_mul_comba12(fp_int *A, fp_int *B, fp_int *C); +void fp_mul_comba12(fp_int *a, fp_int *b, fp_int *c); #endif #ifdef TFM_MUL17 -void fp_mul_comba17(fp_int *A, fp_int *B, fp_int *C); +void fp_mul_comba17(fp_int *a, fp_int *b, fp_int *c); #endif #ifdef TFM_MUL20 -void fp_mul_comba20(fp_int *A, fp_int *B, fp_int *C); +void fp_mul_comba20(fp_int *a, fp_int *b, fp_int *c); #endif #ifdef TFM_MUL24 -void fp_mul_comba24(fp_int *A, fp_int *B, fp_int *C); +void fp_mul_comba24(fp_int *a, fp_int *b, fp_int *c); #endif #ifdef TFM_MUL28 -void fp_mul_comba28(fp_int *A, fp_int *B, fp_int *C); +void fp_mul_comba28(fp_int *a, fp_int *b, fp_int *c); #endif #ifdef TFM_MUL32 -void fp_mul_comba32(fp_int *A, fp_int *B, fp_int *C); +void fp_mul_comba32(fp_int *a, fp_int *b, fp_int *c); #endif #ifdef TFM_MUL48 -void fp_mul_comba48(fp_int *A, fp_int *B, fp_int *C); +void fp_mul_comba48(fp_int *a, fp_int *b, fp_int *c); #endif #ifdef TFM_MUL64 -void fp_mul_comba64(fp_int *A, fp_int *B, fp_int *C); +void fp_mul_comba64(fp_int *a, fp_int *b, fp_int *c); #endif -void fp_sqr_comba(fp_int *A, fp_int *B); +void fp_sqr_comba(fp_int *a, fp_int *b); #ifdef TFM_SMALL_SET -void fp_sqr_comba_small(fp_int *A, fp_int *B); +void fp_sqr_comba_small(fp_int *a, fp_int *b); #endif #ifdef TFM_SQR3 -void fp_sqr_comba3(fp_int *A, fp_int *B); +void fp_sqr_comba3(fp_int *a, fp_int *b); #endif #ifdef TFM_SQR4 -void fp_sqr_comba4(fp_int *A, fp_int *B); +void fp_sqr_comba4(fp_int *a, fp_int *b); #endif #ifdef TFM_SQR6 -void fp_sqr_comba6(fp_int *A, fp_int *B); +void fp_sqr_comba6(fp_int *a, fp_int *b); #endif #ifdef TFM_SQR7 -void fp_sqr_comba7(fp_int *A, fp_int *B); +void fp_sqr_comba7(fp_int *a, fp_int *b); #endif #ifdef TFM_SQR8 -void fp_sqr_comba8(fp_int *A, fp_int *B); +void fp_sqr_comba8(fp_int *a, fp_int *b); #endif #ifdef TFM_SQR9 -void fp_sqr_comba9(fp_int *A, fp_int *B); +void fp_sqr_comba9(fp_int *a, fp_int *b); #endif #ifdef TFM_SQR12 -void fp_sqr_comba12(fp_int *A, fp_int *B); +void fp_sqr_comba12(fp_int *a, fp_int *b); #endif #ifdef TFM_SQR17 -void fp_sqr_comba17(fp_int *A, fp_int *B); +void fp_sqr_comba17(fp_int *a, fp_int *b); #endif #ifdef TFM_SQR20 -void fp_sqr_comba20(fp_int *A, fp_int *B); +void fp_sqr_comba20(fp_int *a, fp_int *b); #endif #ifdef TFM_SQR24 -void fp_sqr_comba24(fp_int *A, fp_int *B); +void fp_sqr_comba24(fp_int *a, fp_int *b); #endif #ifdef TFM_SQR28 -void fp_sqr_comba28(fp_int *A, fp_int *B); +void fp_sqr_comba28(fp_int *a, fp_int *b); #endif #ifdef TFM_SQR32 -void fp_sqr_comba32(fp_int *A, fp_int *B); +void fp_sqr_comba32(fp_int *a, fp_int *b); #endif #ifdef TFM_SQR48 -void fp_sqr_comba48(fp_int *A, fp_int *B); +void fp_sqr_comba48(fp_int *a, fp_int *b); #endif #ifdef TFM_SQR64 -void fp_sqr_comba64(fp_int *A, fp_int *B); +void fp_sqr_comba64(fp_int *a, fp_int *b); #endif /*extern const char *fp_s_rmap;*/ @@ -642,7 +642,7 @@ int mp_mul (mp_int * a, mp_int * b, mp_int * c); int mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d); int mp_mod(mp_int *a, mp_int *b, mp_int *c); int mp_invmod(mp_int *a, mp_int *b, mp_int *c); -int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y); +int mp_exptmod (mp_int * g, mp_int * x, mp_int * p, mp_int * y); int mp_cmp(mp_int *a, mp_int *b); int mp_cmp_d(mp_int *a, mp_digit b); @@ -663,7 +663,7 @@ void mp_rshb(mp_int *a, int x); #ifdef HAVE_ECC int mp_read_radix(mp_int* a, const char* str, int radix); int mp_set(fp_int *a, fp_digit b); - int mp_sqr(fp_int *A, fp_int *B); + int mp_sqr(fp_int *a, fp_int *b); int mp_montgomery_reduce(fp_int *a, fp_int *m, fp_digit mp); int mp_montgomery_setup(fp_int *a, fp_digit *rho); int mp_div_2(fp_int * a, fp_int * b); diff --git a/cyassl/ctaocrypt/types.h b/cyassl/ctaocrypt/types.h index 8c44bb89f..ea9cf8c11 100644 --- a/cyassl/ctaocrypt/types.h +++ b/cyassl/ctaocrypt/types.h @@ -139,6 +139,18 @@ enum { #endif +/* set up thread local storage if available */ +#ifdef HAVE_THREAD_LS + #if defined(_MSC_VER) + #define THREAD_LS_T __declspec(thread) + #else + #define THREAD_LS_T __thread + #endif +#else + #define THREAD_LS_T +#endif + + /* Micrium will use Visual Studio for compilation but not the Win32 API */ #if defined(_WIN32) && !defined(MICRIUM) && !defined(FREERTOS) \ && !defined(EBSNET) @@ -205,6 +217,11 @@ enum { #define XISALPHA(c) isalpha((c)) #endif /* needed by CyaSSL_check_domain_name() */ + #ifdef __CYGWIN__ + /* Cygwin uses a macro version of tolower() by default, use the + * function version. */ + #undef tolower + #endif #define XTOLOWER(c) tolower((c)) #endif @@ -253,7 +270,8 @@ enum { DYNAMIC_TYPE_CAVIUM_TMP = 40, DYNAMIC_TYPE_CAVIUM_RSA = 41, DYNAMIC_TYPE_X509 = 42, - DYNAMIC_TYPE_TLSX = 43 + DYNAMIC_TYPE_TLSX = 43, + DYNAMIC_TYPE_OCSP = 44 }; /* max error buffer string size */ diff --git a/cyassl/include.am b/cyassl/include.am index 0cd892a37..9784ab249 100644 --- a/cyassl/include.am +++ b/cyassl/include.am @@ -9,7 +9,6 @@ EXTRA_DIST+= cyassl/sniffer_error.rc nobase_include_HEADERS+= \ cyassl/error.h \ - cyassl/internal.h \ cyassl/ssl.h \ cyassl/sniffer_error.h \ cyassl/sniffer.h \ @@ -20,3 +19,7 @@ nobase_include_HEADERS+= \ cyassl/options.h \ cyassl/ocsp.h \ cyassl/crl.h + +noinst_HEADERS+= \ + cyassl/internal.h + diff --git a/cyassl/internal.h b/cyassl/internal.h index 32b8964bf..989947acd 100644 --- a/cyassl/internal.h +++ b/cyassl/internal.h @@ -483,7 +483,6 @@ enum { TLS_RSA_WITH_AES_256_CBC_B2B256 = 0xF9, TLS_RSA_WITH_HC_128_B2B256 = 0xFA, /* eSTREAM too */ - /* CyaSSL extension - NTRU */ TLS_NTRU_RSA_WITH_RC4_128_SHA = 0xe5, TLS_NTRU_RSA_WITH_3DES_EDE_CBC_SHA = 0xe6, @@ -533,8 +532,10 @@ enum { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA = 0x45, TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA = 0x88, TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 = 0xbe, - TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 = 0xc4 + TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 = 0xc4, + /* Renegotiation Indication Extension Special Suite */ + TLS_EMPTY_RENEGOTIATION_INFO_SCSV = 0xff }; @@ -608,6 +609,7 @@ enum Misc { CERT_HEADER_SZ = 3, /* always 3 bytes */ REQ_HEADER_SZ = 2, /* cert request header sz */ HINT_LEN_SZ = 2, /* length of hint size field */ + TRUNCATED_HMAC_SZ = 10, /* length of hmac w/ truncated hmac extension */ HELLO_EXT_TYPE_SZ = 2, /* length of a hello extension type */ HELLO_EXT_SZ = 8, /* total length of the lazy hello extensions */ HELLO_EXT_LEN = 6, /* length of the lazy hello extensions */ @@ -981,24 +983,23 @@ typedef struct OCSP_Entry OCSP_Entry; #endif struct OCSP_Entry { - OCSP_Entry* next; /* next entry */ + OCSP_Entry* next; /* next entry */ byte issuerHash[OCSP_DIGEST_SIZE]; /* issuer hash */ byte issuerKeyHash[OCSP_DIGEST_SIZE]; /* issuer public key hash */ - CertStatus* status; /* OCSP response list */ - int totalStatus; /* number on list */ + CertStatus* status; /* OCSP response list */ + int totalStatus; /* number on list */ }; +#ifndef HAVE_OCSP + typedef struct CYASSL_OCSP CYASSL_OCSP; +#endif + /* CyaSSL OCSP controller */ struct CYASSL_OCSP { - byte enabled; - byte useOverrideUrl; - byte useNonce; - char overrideUrl[80]; - OCSP_Entry* ocspList; - void* IOCB_OcspCtx; - CallbackIOOcsp CBIOOcsp; - CallbackIOOcspRespFree CBIOOcspRespFree; + CYASSL_CERT_MANAGER* cm; /* pointer back to cert manager */ + OCSP_Entry* ocspList; /* OCSP response list */ + CyaSSL_Mutex ocspLock; /* OCSP list lock */ }; #ifndef MAX_DATE_SIZE @@ -1076,6 +1077,14 @@ struct CYASSL_CERT_MANAGER { byte crlEnabled; /* is CRL on ? */ byte crlCheckAll; /* always leaf, but all ? */ CbMissingCRL cbMissingCRL; /* notify through cb of missing crl */ + CYASSL_OCSP* ocsp; /* OCSP checker */ + byte ocspEnabled; /* is OCSP on ? */ + byte ocspSendNonce; /* send the OCSP nonce ? */ + byte ocspUseOverrideURL; /* ignore cert's responder, override */ + char* ocspOverrideURL; /* use this responder */ + void* ocspIOCtx; /* I/O callback CTX */ + CbOCSPIO ocspIOCb; /* I/O callback for OCSP lookup */ + CbOCSPRespFree ocspRespFreeCb; /* Frees OCSP Response from IO Cb */ }; CYASSL_LOCAL int CM_SaveCertCache(CYASSL_CERT_MANAGER*, const char*); @@ -1101,11 +1110,8 @@ typedef struct CYASSL_DTLS_CTX { typedef enum { SERVER_NAME_INDICATION = 0, MAX_FRAGMENT_LENGTH = 1, - /*CLIENT_CERTIFICATE_URL = 2, - TRUSTED_CA_KEYS = 3,*/ TRUNCATED_HMAC = 4, - /*STATUS_REQUEST = 5, - SIGNATURE_ALGORITHMS = 13,*/ + ELLIPTIC_CURVES = 10 } TLSX_Type; typedef struct TLSX { @@ -1153,6 +1159,8 @@ CYASSL_LOCAL void TLSX_SNI_SetOptions(TLSX* extensions, byte type, CYASSL_LOCAL byte TLSX_SNI_Status(TLSX* extensions, byte type); CYASSL_LOCAL word16 TLSX_SNI_GetRequest(TLSX* extensions, byte type, void** data); +CYASSL_LOCAL int TLSX_SNI_GetFromBuffer(const byte* buffer, word32 bufferSz, + byte type, byte* sni, word32* inOutSz); #endif #endif /* HAVE_SNI */ @@ -1166,12 +1174,27 @@ CYASSL_LOCAL int TLSX_UseMaxFragment(TLSX** extensions, byte mfl); #ifdef HAVE_TRUNCATED_HMAC -#define TRUNCATED_HMAC_SIZE 10 - CYASSL_LOCAL int TLSX_UseTruncatedHMAC(TLSX** extensions); #endif /* HAVE_TRUNCATED_HMAC */ +#ifdef HAVE_SUPPORTED_CURVES + +typedef struct EllipticCurve { + word16 name; /* CurveNames */ + struct EllipticCurve* next; /* List Behavior */ + +} EllipticCurve; + +CYASSL_LOCAL int TLSX_UseSupportedCurve(TLSX** extensions, word16 name); + +#ifndef NO_CYASSL_SERVER +CYASSL_LOCAL int TLSX_ValidateEllipticCurves(CYASSL* ssl, byte first, + byte second); +#endif + +#endif /* HAVE_SUPPORTED_CURVES */ + #endif /* HAVE_TLS_EXTENSIONS */ /* CyaSSL context type */ @@ -1213,6 +1236,7 @@ struct CYASSL_CTX { word32 timeout; /* session timeout */ #ifdef HAVE_ECC word16 eccTempKeySz; /* in octets 20 - 66 */ + word32 pkCurveOID; /* curve Ecc_Sum */ #endif #ifndef NO_PSK byte havePSK; /* psk key set by user */ @@ -1360,6 +1384,30 @@ enum ClientCertificateType { enum CipherType { stream, block, aead }; +#ifdef CYASSL_DTLS + + #ifdef WORD64_AVAILABLE + typedef word64 DtlsSeq; + #else + typedef word32 DtlsSeq; + #endif + #define DTLS_SEQ_BITS (sizeof(DtlsSeq) * CHAR_BIT) + + typedef struct DtlsState { + DtlsSeq window; /* Sliding window for current epoch */ + word16 nextEpoch; /* Expected epoch in next record */ + word32 nextSeq; /* Expected sequence in next record */ + + word16 curEpoch; /* Received epoch in current record */ + word32 curSeq; /* Received sequence in current record */ + + DtlsSeq prevWindow; /* Sliding window for old epoch */ + word32 prevSeq; /* Next sequence in allowed old epoch */ + } DtlsState; + +#endif /* CYASSL_DTLS */ + + /* keys and secrets */ typedef struct Keys { byte client_write_MAC_secret[MAX_DIGEST_SIZE]; /* max sizes */ @@ -1378,15 +1426,13 @@ typedef struct Keys { word32 sequence_number; #ifdef CYASSL_DTLS - word32 dtls_sequence_number; - word32 dtls_peer_sequence_number; - word32 dtls_expected_peer_sequence_number; - word16 dtls_handshake_number; + DtlsState dtls_state; /* Peer's state */ word16 dtls_peer_handshake_number; word16 dtls_expected_peer_handshake_number; - word16 dtls_epoch; - word16 dtls_peer_epoch; - word16 dtls_expected_peer_epoch; + + word16 dtls_epoch; /* Current tx epoch */ + word32 dtls_sequence_number; /* Current tx sequence */ + word16 dtls_handshake_number; /* Current tx handshake seq */ #endif word32 encryptSz; /* last size of encrypted data */ @@ -1661,6 +1707,10 @@ struct CYASSL_X509 { byte hwType[EXTERNAL_SERIAL_SIZE]; int hwSerialNumSz; byte hwSerialNum[EXTERNAL_SERIAL_SIZE]; + #ifdef OPENSSL_EXTRA + byte certPolicySet; + byte certPolicyCrit; + #endif /* OPENSSL_EXTRA */ #endif int notBeforeSz; byte notBefore[MAX_DATE_SZ]; @@ -1670,10 +1720,33 @@ struct CYASSL_X509 { buffer sig; int pubKeyOID; buffer pubKey; + #ifdef HAVE_ECC + word32 pkCurveOID; + #endif /* HAVE_ECC */ buffer derCert; /* may need */ DNS_entry* altNames; /* alt names list */ DNS_entry* altNamesNext; /* hint for retrieval */ byte dynamicMemory; /* dynamic memory flag */ + byte isCa; +#ifdef OPENSSL_EXTRA + word32 pathLength; + word16 keyUsage; + byte basicConstSet; + byte basicConstCrit; + byte basicConstPlSet; + byte subjAltNameSet; + byte subjAltNameCrit; + byte authKeyIdSet; + byte authKeyIdCrit; + byte* authKeyId; + word32 authKeyIdSz; + byte subjKeyIdSet; + byte subjKeyIdCrit; + byte* subjKeyId; + word32 subjKeyIdSz; + byte keyUsageSet; + byte keyUsageCrit; +#endif /* OPENSSL_EXTRA */ }; @@ -1783,6 +1856,7 @@ struct CYASSL { ecc_key* eccTempKey; /* private ECDHE key */ ecc_key* eccDsaKey; /* private ECDSA key */ word16 eccTempKeySz; /* in octets 20 - 66 */ + word32 pkCurveOID; /* curve Ecc_Sum */ byte peerEccKeyPresent; byte peerEccDsaKeyPresent; byte eccTempKeyPresent; diff --git a/cyassl/ocsp.h b/cyassl/ocsp.h index f47f671b1..f6931bd98 100644 --- a/cyassl/ocsp.h +++ b/cyassl/ocsp.h @@ -36,12 +36,10 @@ typedef struct CYASSL_OCSP CYASSL_OCSP; -CYASSL_LOCAL int CyaSSL_OCSP_Init(CYASSL_OCSP*); -CYASSL_LOCAL void CyaSSL_OCSP_Cleanup(CYASSL_OCSP*); - -CYASSL_LOCAL int CyaSSL_OCSP_set_override_url(CYASSL_OCSP*, const char*); -CYASSL_LOCAL int CyaSSL_OCSP_Lookup_Cert(CYASSL_OCSP*, DecodedCert*); +CYASSL_LOCAL int InitOCSP(CYASSL_OCSP*, CYASSL_CERT_MANAGER*); +CYASSL_LOCAL void FreeOCSP(CYASSL_OCSP*, int dynamic); +CYASSL_LOCAL int CheckCertOCSP(CYASSL_OCSP*, DecodedCert*); #ifdef __cplusplus } /* extern "C" */ diff --git a/cyassl/ssl.h b/cyassl/ssl.h index bd5f25c38..9013e5345 100644 --- a/cyassl/ssl.h +++ b/cyassl/ssl.h @@ -99,6 +99,9 @@ typedef struct CYASSL_EVP_PKEY { union { char* ptr; } pkey; + #ifdef HAVE_ECC + int pkey_curve; + #endif } CYASSL_EVP_PKEY; typedef struct CYASSL_MD4_CTX { @@ -413,6 +416,16 @@ CYASSL_API int CyaSSL_X509_STORE_CTX_get_error_depth(CYASSL_X509_STORE_CTX*); CYASSL_API char* CyaSSL_X509_NAME_oneline(CYASSL_X509_NAME*, char*, int); CYASSL_API CYASSL_X509_NAME* CyaSSL_X509_get_issuer_name(CYASSL_X509*); CYASSL_API CYASSL_X509_NAME* CyaSSL_X509_get_subject_name(CYASSL_X509*); +CYASSL_API int CyaSSL_X509_ext_isSet_by_NID(CYASSL_X509*, int); +CYASSL_API int CyaSSL_X509_ext_get_critical_by_NID(CYASSL_X509*, int); +CYASSL_API int CyaSSL_X509_get_isCA(CYASSL_X509*); +CYASSL_API int CyaSSL_X509_get_isSet_pathLength(CYASSL_X509*); +CYASSL_API unsigned int CyaSSL_X509_get_pathLength(CYASSL_X509*); +CYASSL_API unsigned int CyaSSL_X509_get_keyUsage(CYASSL_X509*); +CYASSL_API unsigned char* CyaSSL_X509_get_authorityKeyID( + CYASSL_X509*, unsigned char*, int*); +CYASSL_API unsigned char* CyaSSL_X509_get_subjectKeyID( + CYASSL_X509*, unsigned char*, int*); CYASSL_API int CyaSSL_X509_NAME_entry_count(CYASSL_X509_NAME*); CYASSL_API int CyaSSL_X509_NAME_get_text_by_NID( CYASSL_X509_NAME*, int, char*, int); @@ -530,6 +543,9 @@ enum { OCSP_RESPONSE = 8, OCSP_BASICRESP = 16, + CYASSL_OCSP_URL_OVERRIDE = 1, + CYASSL_OCSP_NO_NONCE = 2, + CYASSL_CRL_CHECKALL = 1, ASN1_GENERALIZEDTIME = 4, @@ -810,9 +826,9 @@ CYASSL_API CYASSL_X509* #ifndef NO_FILESYSTEM CYASSL_API CYASSL_X509* CyaSSL_X509_d2i_fp(CYASSL_X509** x509, FILE* file); -#endif CYASSL_API CYASSL_X509* CyaSSL_X509_load_certificate_file(const char* fname, int format); +#endif #ifdef CYASSL_SEP CYASSL_API unsigned char* @@ -930,15 +946,6 @@ CYASSL_API void CyaSSL_CTX_SetGenCookie(CYASSL_CTX*, CallbackGenCookie); CYASSL_API void CyaSSL_SetCookieCtx(CYASSL* ssl, void *ctx); CYASSL_API void* CyaSSL_GetCookieCtx(CYASSL* ssl); -typedef int (*CallbackIOOcsp)(void*, const char*, int, - unsigned char*, int, unsigned char**); -typedef void (*CallbackIOOcspRespFree)(void*,unsigned char*); -#ifdef HAVE_OCSP -CYASSL_API void CyaSSL_SetIOOcsp(CYASSL_CTX *ocsp, CallbackIOOcsp cb); -CYASSL_API void CyaSSL_SetIOOcspRespFree(CYASSL_CTX *ocsp, - CallbackIOOcspRespFree cb); -CYASSL_API void CyaSSL_SetIOOcspCtx(CYASSL_CTX *ocsp, void *octx); -#endif /* I/O Callback default errors */ enum IOerrors { @@ -966,9 +973,14 @@ CYASSL_API int CyaSSL_GetObjectSize(void); /* object size based on build */ CYASSL_API int CyaSSL_SetVersion(CYASSL* ssl, int version); CYASSL_API int CyaSSL_KeyPemToDer(const unsigned char*, int sz, unsigned char*, int, const char*); +CYASSL_API int CyaSSL_CertPemToDer(const unsigned char*, int sz, unsigned char*, + int, int); typedef void (*CallbackCACache)(unsigned char* der, int sz, int type); typedef void (*CbMissingCRL)(const char* url); +typedef int (*CbOCSPIO)(void*, const char*, int, + unsigned char*, int, unsigned char**); +typedef void (*CbOCSPRespFree)(void*,unsigned char*); /* User Atomic Record Layer CallBacks */ typedef int (*CallbackMacEncrypt)(CYASSL* ssl, unsigned char* macOut, @@ -994,6 +1006,7 @@ CYASSL_API const unsigned char* CyaSSL_GetClientWriteIV(CYASSL*); CYASSL_API const unsigned char* CyaSSL_GetServerWriteKey(CYASSL*); CYASSL_API const unsigned char* CyaSSL_GetServerWriteIV(CYASSL*); CYASSL_API int CyaSSL_GetKeySize(CYASSL*); +CYASSL_API int CyaSSL_GetIVSize(CYASSL*); CYASSL_API int CyaSSL_GetSide(CYASSL*); CYASSL_API int CyaSSL_IsTLSv1_1(CYASSL*); CYASSL_API int CyaSSL_GetBulkCipher(CYASSL*); @@ -1113,16 +1126,34 @@ CYASSL_API void* CyaSSL_GetRsaDecCtx(CYASSL* ssl); int, int); CYASSL_API int CyaSSL_CertManagerSetCRL_Cb(CYASSL_CERT_MANAGER*, CbMissingCRL); + CYASSL_API int CyaSSL_CertManagerCheckOCSP(CYASSL_CERT_MANAGER*, + unsigned char*, int sz); + CYASSL_API int CyaSSL_CertManagerEnableOCSP(CYASSL_CERT_MANAGER*, + int options); + CYASSL_API int CyaSSL_CertManagerDisableOCSP(CYASSL_CERT_MANAGER*); + CYASSL_API int CyaSSL_CertManagerSetOCSPOverrideURL(CYASSL_CERT_MANAGER*, + const char*); + CYASSL_API int CyaSSL_CertManagerSetOCSP_Cb(CYASSL_CERT_MANAGER*, + CbOCSPIO, CbOCSPRespFree, void*); CYASSL_API int CyaSSL_EnableCRL(CYASSL* ssl, int options); CYASSL_API int CyaSSL_DisableCRL(CYASSL* ssl); CYASSL_API int CyaSSL_LoadCRL(CYASSL*, const char*, int, int); CYASSL_API int CyaSSL_SetCRL_Cb(CYASSL*, CbMissingCRL); + CYASSL_API int CyaSSL_EnableOCSP(CYASSL*, int options); + CYASSL_API int CyaSSL_DisableOCSP(CYASSL*); + CYASSL_API int CyaSSL_SetOCSP_OverrideURL(CYASSL*, const char*); + CYASSL_API int CyaSSL_SetOCSP_Cb(CYASSL*, CbOCSPIO, CbOCSPRespFree, void*); CYASSL_API int CyaSSL_CTX_EnableCRL(CYASSL_CTX* ctx, int options); CYASSL_API int CyaSSL_CTX_DisableCRL(CYASSL_CTX* ctx); CYASSL_API int CyaSSL_CTX_LoadCRL(CYASSL_CTX*, const char*, int, int); CYASSL_API int CyaSSL_CTX_SetCRL_Cb(CYASSL_CTX*, CbMissingCRL); + CYASSL_API int CyaSSL_CTX_EnableOCSP(CYASSL_CTX*, int options); + CYASSL_API int CyaSSL_CTX_DisableOCSP(CYASSL_CTX*); + CYASSL_API int CyaSSL_CTX_SetOCSP_OverrideURL(CYASSL_CTX*, const char*); + CYASSL_API int CyaSSL_CTX_SetOCSP_Cb(CYASSL_CTX*, + CbOCSPIO, CbOCSPRespFree, void*); #endif /* !NO_CERTS */ /* end of handshake frees temporary arrays, if user needs for get_keys or @@ -1174,6 +1205,10 @@ CYASSL_API unsigned char CyaSSL_SNI_Status(CYASSL* ssl, unsigned char type); CYASSL_API unsigned short CyaSSL_SNI_GetRequest(CYASSL *ssl, unsigned char type, void** data); +CYASSL_API int CyaSSL_SNI_GetFromBuffer( + const unsigned char* clientHello, unsigned int helloSz, + unsigned char type, unsigned char* sni, unsigned int* inOutSz); + #endif /* NO_CYASSL_SERVER */ #endif /* HAVE_SNI */ @@ -1196,6 +1231,7 @@ CYASSL_API int CyaSSL_CTX_UseMaxFragment(CYASSL_CTX* ctx, unsigned char mfl); #endif /* NO_CYASSL_CLIENT */ #endif /* HAVE_MAX_FRAGMENT */ +/* Truncated HMAC */ #ifdef HAVE_TRUNCATED_HMAC #ifndef NO_CYASSL_CLIENT @@ -1205,6 +1241,27 @@ CYASSL_API int CyaSSL_CTX_UseTruncatedHMAC(CYASSL_CTX* ctx); #endif /* NO_CYASSL_CLIENT */ #endif /* HAVE_TRUNCATED_HMAC */ +/* Elliptic Curves */ +#ifdef HAVE_SUPPORTED_CURVES + +enum { + CYASSL_ECC_SECP160R1 = 0x10, + CYASSL_ECC_SECP192R1 = 0x13, + CYASSL_ECC_SECP224R1 = 0x15, + CYASSL_ECC_SECP256R1 = 0x17, + CYASSL_ECC_SECP384R1 = 0x18, + CYASSL_ECC_SECP521R1 = 0x19 +}; + +#ifndef NO_CYASSL_CLIENT + +CYASSL_API int CyaSSL_UseSupportedCurve(CYASSL* ssl, unsigned short name); +CYASSL_API int CyaSSL_CTX_UseSupportedCurve(CYASSL_CTX* ctx, + unsigned short name); + +#endif /* NO_CYASSL_CLIENT */ +#endif /* HAVE_SUPPORTED_CURVES */ + #define CYASSL_CRL_MONITOR 0x01 /* monitor this dir flag */ #define CYASSL_CRL_START_MON 0x02 /* start monitoring flag */ @@ -1227,14 +1284,9 @@ CYASSL_API int CyaSSL_accept_ex(CYASSL*, HandShakeCallBack, TimeoutCallBack, #endif /* CYASSL_CALLBACKS */ -CYASSL_API int CyaSSL_CTX_OCSP_set_options(CYASSL_CTX*, int); -CYASSL_API int CyaSSL_CTX_OCSP_set_override_url(CYASSL_CTX*, const char*); - -/* OCSP Options */ -#define CYASSL_OCSP_ENABLE 0x0001 /* Enable OCSP lookups */ -#define CYASSL_OCSP_URL_OVERRIDE 0x0002 /* Use the override URL instead of URL - * in certificate */ -#define CYASSL_OCSP_NO_NONCE 0x0004 /* Disables the request nonce. */ +#ifdef CYASSL_HAVE_WOLFSCEP +CYASSL_API void CyaSSL_wolfSCEP(void); +#endif /* CYASSL_HAVE_WOLFSCEP */ #ifdef __cplusplus diff --git a/cyassl/version.h b/cyassl/version.h index e66d54a0d..30bf70457 100644 --- a/cyassl/version.h +++ b/cyassl/version.h @@ -26,8 +26,8 @@ extern "C" { #endif -#define LIBCYASSL_VERSION_STRING "2.8.3" -#define LIBCYASSL_VERSION_HEX 0x02008003 +#define LIBCYASSL_VERSION_STRING "2.9.0" +#define LIBCYASSL_VERSION_HEX 0x02009000 #ifdef __cplusplus } diff --git a/examples/client/client.c b/examples/client/client.c index 6c82d627c..ac6f935a8 100644 --- a/examples/client/client.c +++ b/examples/client/client.c @@ -505,10 +505,13 @@ THREAD_RETURN CYASSL_THREAD client_test(void* args) #ifdef HAVE_OCSP if (useOcsp) { - CyaSSL_CTX_OCSP_set_options(ctx, - CYASSL_OCSP_ENABLE | CYASSL_OCSP_NO_NONCE); - if (ocspUrl != NULL) - CyaSSL_CTX_OCSP_set_override_url(ctx, ocspUrl); + 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 @@ -547,17 +550,18 @@ THREAD_RETURN CYASSL_THREAD client_test(void* args) #ifdef HAVE_SNI if (sniHostName) - if (CyaSSL_CTX_UseSNI(ctx, 0, sniHostName, XSTRLEN(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)) + if (CyaSSL_CTX_UseMaxFragment(ctx, maxFragment) != SSL_SUCCESS) err_sys("UseMaxFragment failed"); #endif #ifdef HAVE_TRUNCATED_HMAC if (truncatedHMAC) - if (CyaSSL_CTX_UseTruncatedHMAC(ctx)) + if (CyaSSL_CTX_UseTruncatedHMAC(ctx) != SSL_SUCCESS) err_sys("UseTruncatedHMAC failed"); #endif @@ -803,8 +807,10 @@ THREAD_RETURN CYASSL_THREAD client_test(void* args) #if defined(DEBUG_CYASSL) && !defined(CYASSL_MDK_SHELL) && !defined(STACK_TRAP) CyaSSL_Debugging_ON(); #endif - if (CurrentDir("client") || CurrentDir("build")) + if (CurrentDir("client")) ChangeDirBack(2); + else if (CurrentDir("Debug") || CurrentDir("Release")) + ChangeDirBack(3); #ifdef HAVE_STACK_SIZE StackSizeCheck(&args, client_test); diff --git a/examples/echoclient/echoclient.c b/examples/echoclient/echoclient.c index 0c444a2a2..ee654d481 100644 --- a/examples/echoclient/echoclient.c +++ b/examples/echoclient/echoclient.c @@ -255,8 +255,10 @@ void echoclient_test(void* args) CyaSSL_Debugging_ON(); #endif - if (CurrentDir("echoclient") || CurrentDir("build")) + if (CurrentDir("echoclient")) ChangeDirBack(2); + else if (CurrentDir("Debug") || CurrentDir("Release")) + ChangeDirBack(3); echoclient_test(&args); CyaSSL_Cleanup(); diff --git a/examples/echoserver/echoserver.c b/examples/echoserver/echoserver.c index cc4ed7200..1eac9b5a9 100644 --- a/examples/echoserver/echoserver.c +++ b/examples/echoserver/echoserver.c @@ -339,8 +339,10 @@ THREAD_RETURN CYASSL_THREAD echoserver_test(void* args) #if defined(DEBUG_CYASSL) && !defined(CYASSL_MDK_SHELL) CyaSSL_Debugging_ON(); #endif - if (CurrentDir("echoserver") || CurrentDir("build")) + if (CurrentDir("echoserver")) ChangeDirBack(2); + else if (CurrentDir("Debug") || CurrentDir("Release")) + ChangeDirBack(3); echoserver_test(&args); CyaSSL_Cleanup(); diff --git a/examples/server/server.c b/examples/server/server.c index 9be9c4802..f99be0aa2 100644 --- a/examples/server/server.c +++ b/examples/server/server.c @@ -374,6 +374,10 @@ THREAD_RETURN CYASSL_THREAD server_test(void* args) if (fewerPackets) CyaSSL_CTX_set_group_messages(ctx); +#ifdef OPENSSL_EXTRA + 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) @@ -428,10 +432,6 @@ THREAD_RETURN CYASSL_THREAD server_test(void* args) } #endif -#ifdef OPENSSL_EXTRA - SSL_CTX_set_default_passwd_cb(ctx, PasswordCallBack); -#endif - #if defined(CYASSL_SNIFFER) && !defined(HAVE_NTRU) && !defined(HAVE_ECC) /* don't use EDH, can't sniff tmp keys */ if (cipherList == NULL) { @@ -443,7 +443,7 @@ THREAD_RETURN CYASSL_THREAD server_test(void* args) #ifdef HAVE_SNI if (sniHostName) if (CyaSSL_CTX_UseSNI(ctx, CYASSL_SNI_HOST_NAME, sniHostName, - XSTRLEN(sniHostName))) + XSTRLEN(sniHostName)) != SSL_SUCCESS) err_sys("UseSNI failed"); #endif @@ -459,10 +459,13 @@ THREAD_RETURN CYASSL_THREAD server_test(void* args) #endif #ifdef HAVE_OCSP if (useOcsp) { - CyaSSL_CTX_OCSP_set_options(ctx, - CYASSL_OCSP_ENABLE | CYASSL_OCSP_NO_NONCE); - if (ocspUrl != NULL) - CyaSSL_CTX_OCSP_set_override_url(ctx, ocspUrl); + 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 @@ -556,8 +559,10 @@ THREAD_RETURN CYASSL_THREAD server_test(void* args) #if defined(DEBUG_CYASSL) && !defined(CYASSL_MDK_SHELL) CyaSSL_Debugging_ON(); #endif - if (CurrentDir("server") || CurrentDir("build")) + if (CurrentDir("server")) ChangeDirBack(2); + else if (CurrentDir("Debug") || CurrentDir("Release")) + ChangeDirBack(3); #ifdef HAVE_STACK_SIZE StackSizeCheck(&args, server_test); diff --git a/m4/ax_debug.m4 b/m4/ax_debug.m4 index 5522d7215..5ea3c3594 100644 --- a/m4/ax_debug.m4 +++ b/m4/ax_debug.m4 @@ -52,7 +52,6 @@ AC_DEFUN([AX_DEBUG], [Add debug code/turns off optimizations (yes|no) @<:@default=no@:>@])], [ax_enable_debug=yes AC_DEFINE([DEBUG],[1],[Define to 1 to enable debugging code.]) - AX_CHECK_LIBRARY([MCHECK],[mcheck.h],[mcheck],[AX_APPEND_LINK_FLAGS([-lmcheck])]) AX_ADD_AM_MACRO([--debug],[AM_YFLAGS]) AX_ADD_AM_MACRO([-D_GLIBCXX_DEBUG],[AM_CPPFLAGS])], [ax_enable_debug=no diff --git a/m4/ax_tls.m4 b/m4/ax_tls.m4 new file mode 100644 index 000000000..033e3b135 --- /dev/null +++ b/m4/ax_tls.m4 @@ -0,0 +1,76 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_tls.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_TLS([action-if-found], [action-if-not-found]) +# +# DESCRIPTION +# +# Provides a test for the compiler support of thread local storage (TLS) +# extensions. Defines TLS if it is found. Currently knows about GCC/ICC +# and MSVC. I think SunPro uses the same as GCC, and Borland apparently +# supports either. +# +# LICENSE +# +# Copyright (c) 2008 Alan Woodland +# Copyright (c) 2010 Diego Elio Petteno` +# +# 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 3 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, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 10 + +AC_DEFUN([AX_TLS], [ + AC_MSG_CHECKING(for thread local storage (TLS) class) + AC_CACHE_VAL(ac_cv_tls, [ + ax_tls_keywords="__thread __declspec(thread) none" + for ax_tls_keyword in $ax_tls_keywords; do + AS_CASE([$ax_tls_keyword], + [none], [ac_cv_tls=none ; break], + [AC_TRY_COMPILE( + [#include + static void + foo(void) { + static ] $ax_tls_keyword [ int bar; + exit(1); + }], + [], + [ac_cv_tls=$ax_tls_keyword ; break], + ac_cv_tls=none + )]) + done + ]) + AC_MSG_RESULT($ac_cv_tls) + + AS_IF([test "$ac_cv_tls" != "none"], + AC_DEFINE_UNQUOTED([TLS], $ac_cv_tls, [If the compiler supports a TLS storage class define it to that here]) + m4_ifnblank([$1], [$1]), + m4_ifnblank([$2], [$2]) + ) +]) diff --git a/mcapi/ctaocrypt_mcapi.X/nbproject/configurations.xml b/mcapi/ctaocrypt_mcapi.X/nbproject/configurations.xml index 54eef5bf8..e9792ab63 100644 --- a/mcapi/ctaocrypt_mcapi.X/nbproject/configurations.xml +++ b/mcapi/ctaocrypt_mcapi.X/nbproject/configurations.xml @@ -167,28 +167,6 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/mcapi/ctaocrypt_test.X/main.c b/mcapi/ctaocrypt_test.X/main.c deleted file mode 100644 index c39a3c9e9..000000000 --- a/mcapi/ctaocrypt_test.X/main.c +++ /dev/null @@ -1,51 +0,0 @@ -/* main.c - * - * Copyright (C) 2006-2013 wolfSSL Inc. All rights reserved. - * - * This file is part of CyaSSL. - * - * Contact licensing@yassl.com with any questions or comments. - * - * http://www.yassl.com - */ - - -#define PIC32_STARTER_KIT - -#include -#include -#include -#include -#include - -/* 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; - -/* - * Main driver for CTaoCrypt tests. - */ -int main(int argc, char** argv) { - - SYSTEMConfigPerformance(80000000); - - DBINIT(); - printf("CTaoCrypt Test:\n"); - - func_args args; - - args.argc = argc; - args.argv = argv; - - ctaocrypt_test(&args); - - if (args.return_code == 0) { - printf("All tests passed!\n"); - } - - return 0; -} - diff --git a/mcapi/ctaocrypt_test.X/nbproject/Makefile-default.mk b/mcapi/ctaocrypt_test.X/nbproject/Makefile-default.mk new file mode 100644 index 000000000..736bc3eec --- /dev/null +++ b/mcapi/ctaocrypt_test.X/nbproject/Makefile-default.mk @@ -0,0 +1,164 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Include project Makefile +ifeq "${IGNORE_LOCAL}" "TRUE" +# do not include local makefile. User is passing all local related variables already +else +include Makefile +# Include makefile containing local settings +ifeq "$(wildcard nbproject/Makefile-local-default.mk)" "nbproject/Makefile-local-default.mk" +include nbproject/Makefile-local-default.mk +endif +endif + +# Environment +MKDIR=gnumkdir -p +RM=rm -f +MV=mv +CP=cp + +# Macros +CND_CONF=default +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +IMAGE_TYPE=debug +OUTPUT_SUFFIX=elf +DEBUGGABLE_SUFFIX=elf +FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +else +IMAGE_TYPE=production +OUTPUT_SUFFIX=hex +DEBUGGABLE_SUFFIX=elf +FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +endif + +# Object Directory +OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE} + +# Distribution Directory +DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} + +# Source Files Quoted if spaced +SOURCEFILES_QUOTED_IF_SPACED=../../ctaocrypt/test/test.c ../../mplabx/test_main.c + +# Object Files Quoted if spaced +OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/_ext/1679622190/test.o ${OBJECTDIR}/_ext/1042050482/test_main.o +POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/1679622190/test.o.d ${OBJECTDIR}/_ext/1042050482/test_main.o.d + +# Object Files +OBJECTFILES=${OBJECTDIR}/_ext/1679622190/test.o ${OBJECTDIR}/_ext/1042050482/test_main.o + +# Source Files +SOURCEFILES=../../ctaocrypt/test/test.c ../../mplabx/test_main.c + + +CFLAGS= +ASFLAGS= +LDLIBSOPTIONS= + +############# Tool locations ########################################## +# If you copy a project from one host to another, the path where the # +# compiler is installed may be different. # +# If you open this project with MPLAB X in the new host, this # +# makefile will be regenerated and the paths will be corrected. # +####################################################################### +# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build +FIXDEPS=fixDeps + +.build-conf: ${BUILD_SUBPROJECTS} + ${MAKE} ${MAKE_OPTIONS} -f nbproject/Makefile-default.mk dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} + +MP_PROCESSOR_OPTION=32MX795F512L +MP_LINKER_FILE_OPTION= +# ------------------------------------------------------------------------------------ +# Rules for buildStep: assemble +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: assembleWithPreprocess +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: compile +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +${OBJECTDIR}/_ext/1679622190/test.o: ../../ctaocrypt/test/test.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1679622190 + @${RM} ${OBJECTDIR}/_ext/1679622190/test.o.d + @${RM} ${OBJECTDIR}/_ext/1679622190/test.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1679622190/test.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DNO_MAIN_DRIVER -DUSE_CERT_BUFFERS_1024 -DCYASSL_SHA384 -DCYASSL_SHA512 -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1679622190/test.o.d" -o ${OBJECTDIR}/_ext/1679622190/test.o ../../ctaocrypt/test/test.c + +${OBJECTDIR}/_ext/1042050482/test_main.o: ../../mplabx/test_main.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1042050482 + @${RM} ${OBJECTDIR}/_ext/1042050482/test_main.o.d + @${RM} ${OBJECTDIR}/_ext/1042050482/test_main.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1042050482/test_main.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DNO_MAIN_DRIVER -DUSE_CERT_BUFFERS_1024 -DCYASSL_SHA384 -DCYASSL_SHA512 -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1042050482/test_main.o.d" -o ${OBJECTDIR}/_ext/1042050482/test_main.o ../../mplabx/test_main.c + +else +${OBJECTDIR}/_ext/1679622190/test.o: ../../ctaocrypt/test/test.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1679622190 + @${RM} ${OBJECTDIR}/_ext/1679622190/test.o.d + @${RM} ${OBJECTDIR}/_ext/1679622190/test.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1679622190/test.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DNO_MAIN_DRIVER -DUSE_CERT_BUFFERS_1024 -DCYASSL_SHA384 -DCYASSL_SHA512 -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1679622190/test.o.d" -o ${OBJECTDIR}/_ext/1679622190/test.o ../../ctaocrypt/test/test.c + +${OBJECTDIR}/_ext/1042050482/test_main.o: ../../mplabx/test_main.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1042050482 + @${RM} ${OBJECTDIR}/_ext/1042050482/test_main.o.d + @${RM} ${OBJECTDIR}/_ext/1042050482/test_main.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1042050482/test_main.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DNO_MAIN_DRIVER -DUSE_CERT_BUFFERS_1024 -DCYASSL_SHA384 -DCYASSL_SHA512 -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1042050482/test_main.o.d" -o ${OBJECTDIR}/_ext/1042050482/test_main.o ../../mplabx/test_main.c + +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: compileCPP +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: link +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk ../cyassl.X/dist/default/debug/cyassl.X.a ../zlib.X/dist/default/debug/zlib.X.a + @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} + ${MP_CC} $(MP_EXTRA_LD_PRE) -mdebugger -D__MPLAB_DEBUGGER_PK3=1 -mprocessor=$(MP_PROCESSOR_OPTION) -Os -o dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} ..\cyassl.X\dist\default\debug\cyassl.X.a ..\zlib.X\dist\default\debug\zlib.X.a -mreserve=data@0x0:0x1FC -mreserve=boot@0x1FC02000:0x1FC02FEF -mreserve=boot@0x1FC02000:0x1FC024FF -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,--defsym=__MPLAB_DEBUGGER_PK3=1,--defsym=_min_heap_size=32768,--defsym=_min_stack_size=1024,--gc-sections + +else +dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk ../cyassl.X/dist/default/production/cyassl.X.a ../zlib.X/dist/default/production/zlib.X.a + @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} + ${MP_CC} $(MP_EXTRA_LD_PRE) -mprocessor=$(MP_PROCESSOR_OPTION) -Os -o dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} ..\cyassl.X\dist\default\production\cyassl.X.a ..\zlib.X\dist\default\production\zlib.X.a -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=_min_heap_size=32768,--defsym=_min_stack_size=1024,--gc-sections + ${MP_CC_DIR}\\xc32-bin2hex dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} +endif + + +# Subprojects +.build-subprojects: + cd /D ../cyassl.X && ${MAKE} -f Makefile CONF=default + cd /D ../zlib.X && ${MAKE} -f Makefile CONF=default + + +# Subprojects +.clean-subprojects: + cd /D ../cyassl.X && rm -rf "build/default" "dist/default" + cd /D ../zlib.X && rm -rf "build/default" "dist/default" + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r build/default + ${RM} -r dist/default + +# Enable dependency checking +.dep.inc: .depcheck-impl + +DEPFILES=$(shell mplabwildcard ${POSSIBLE_DEPFILES}) +ifneq (${DEPFILES},) +include ${DEPFILES} +endif diff --git a/mcapi/ctaocrypt_test.X/nbproject/Makefile-genesis.properties b/mcapi/ctaocrypt_test.X/nbproject/Makefile-genesis.properties new file mode 100644 index 000000000..c3e8ca8d5 --- /dev/null +++ b/mcapi/ctaocrypt_test.X/nbproject/Makefile-genesis.properties @@ -0,0 +1,8 @@ +# +#Mon Feb 24 10:53:41 JST 2014 +default.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=cd6a1e93a26f632c22d91cbbe4deaf2c +default.languagetoolchain.dir=C\:\\Program Files (x86)\\Microchip\\xc32\\v1.30-TC9\\bin +com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=43bd1633f14a944b6e95abd1333fdfc3 +default.languagetoolchain.version=1.30 +host.platform=windows +conf.ids=default diff --git a/mcapi/ctaocrypt_test.X/nbproject/Makefile-impl.mk b/mcapi/ctaocrypt_test.X/nbproject/Makefile-impl.mk new file mode 100644 index 000000000..32630f76c --- /dev/null +++ b/mcapi/ctaocrypt_test.X/nbproject/Makefile-impl.mk @@ -0,0 +1,69 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a pre- and a post- target defined where you can add customization code. +# +# This makefile implements macros and targets common to all configurations. +# +# NOCDDL + + +# Building and Cleaning subprojects are done by default, but can be controlled with the SUB +# macro. If SUB=no, subprojects will not be built or cleaned. The following macro +# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf +# and .clean-reqprojects-conf unless SUB has the value 'no' +SUB_no=NO +SUBPROJECTS=${SUB_${SUB}} +BUILD_SUBPROJECTS_=.build-subprojects +BUILD_SUBPROJECTS_NO= +BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} +CLEAN_SUBPROJECTS_=.clean-subprojects +CLEAN_SUBPROJECTS_NO= +CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} + + +# Project Name +PROJECTNAME=ctaocrypt_test.X + +# Active Configuration +DEFAULTCONF=default +CONF=${DEFAULTCONF} + +# All Configurations +ALLCONFS=default + + +# build +.build-impl: .build-pre + ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf + + +# clean +.clean-impl: .clean-pre + ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf + +# clobber +.clobber-impl: .clobber-pre .depcheck-impl + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default clean + + + +# all +.all-impl: .all-pre .depcheck-impl + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default build + + + +# dependency checking support +.depcheck-impl: +# @echo "# This code depends on make tool being used" >.dep.inc +# @if [ -n "${MAKE_VERSION}" ]; then \ +# echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \ +# echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ +# echo "include \$${DEPFILES}" >>.dep.inc; \ +# echo "endif" >>.dep.inc; \ +# else \ +# echo ".KEEP_STATE:" >>.dep.inc; \ +# echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ +# fi diff --git a/mcapi/ctaocrypt_test.X/nbproject/Makefile-local-default.mk b/mcapi/ctaocrypt_test.X/nbproject/Makefile-local-default.mk new file mode 100644 index 000000000..2d8424143 --- /dev/null +++ b/mcapi/ctaocrypt_test.X/nbproject/Makefile-local-default.mk @@ -0,0 +1,37 @@ +# +# Generated Makefile - do not edit! +# +# +# This file contains information about the location of compilers and other tools. +# If you commmit this file into your revision control server, you will be able to +# to checkout the project and build it from the command line with make. However, +# if more than one person works on the same project, then this file might show +# conflicts since different users are bound to have compilers in different places. +# In that case you might choose to not commit this file and let MPLAB X recreate this file +# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at +# least once so the file gets created and the project can be built. Finally, you can also +# avoid using this file at all if you are only building from the command line with make. +# You can invoke make with the values of the macros: +# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ... +# +SHELL=cmd.exe +PATH_TO_IDE_BIN=C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/ +# Adding MPLAB X bin directory to path. +PATH:=C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/:$(PATH) +# Path to java used to run MPLAB X when this makefile was created +MP_JAVA_PATH="C:\Program Files (x86)\Microchip\MPLABX-v1.95.RC3\sys\java\jre1.7.0_25-windows-x64\java-windows/bin/" +OS_CURRENT="$(shell uname -s)" +MP_CC="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin\xc32-gcc.exe" +MP_CPPC="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin\xc32-g++.exe" +# MP_BC is not defined +MP_AS="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin\xc32-as.exe" +MP_LD="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin\xc32-ld.exe" +MP_AR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin\xc32-ar.exe" +DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar" +MP_CC_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin" +MP_CPPC_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin" +# MP_BC_DIR is not defined +MP_AS_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin" +MP_LD_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin" +MP_AR_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin" +# MP_BC_DIR is not defined diff --git a/mcapi/ctaocrypt_test.X/nbproject/Makefile-variables.mk b/mcapi/ctaocrypt_test.X/nbproject/Makefile-variables.mk new file mode 100644 index 000000000..09fbeab2d --- /dev/null +++ b/mcapi/ctaocrypt_test.X/nbproject/Makefile-variables.mk @@ -0,0 +1,13 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +CND_BASEDIR=`pwd` +# default configuration +CND_ARTIFACT_DIR_default=dist/default/production +CND_ARTIFACT_NAME_default=ctaocrypt_test.X.production.hex +CND_ARTIFACT_PATH_default=dist/default/production/ctaocrypt_test.X.production.hex +CND_PACKAGE_DIR_default=${CND_DISTDIR}/default/package +CND_PACKAGE_NAME_default=ctaocrypttest.x.tar +CND_PACKAGE_PATH_default=${CND_DISTDIR}/default/package/ctaocrypttest.x.tar diff --git a/mcapi/ctaocrypt_test.X/nbproject/Package-default.bash b/mcapi/ctaocrypt_test.X/nbproject/Package-default.bash new file mode 100644 index 000000000..24387c9d2 --- /dev/null +++ b/mcapi/ctaocrypt_test.X/nbproject/Package-default.bash @@ -0,0 +1,73 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_CONF=default +CND_DISTDIR=dist +TMPDIR=build/${CND_CONF}/${IMAGE_TYPE}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +OUTPUT_BASENAME=ctaocrypt_test.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +PACKAGE_TOP_DIR=ctaocrypttest.x/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/package +rm -rf ${TMPDIR} +mkdir -p ${TMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory ${TMPDIR}/ctaocrypttest.x/bin +copyFileToTmpDir "${OUTPUT_PATH}" "${TMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/package/ctaocrypttest.x.tar +cd ${TMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/package/ctaocrypttest.x.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${TMPDIR} diff --git a/mcapi/ctaocrypt_test.X/nbproject/configurations.xml b/mcapi/ctaocrypt_test.X/nbproject/configurations.xml index e0ee5463e..d5b8d3e85 100644 --- a/mcapi/ctaocrypt_test.X/nbproject/configurations.xml +++ b/mcapi/ctaocrypt_test.X/nbproject/configurations.xml @@ -184,28 +184,6 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/mcapi/ctaocrypt_test.X/nbproject/include.am b/mcapi/ctaocrypt_test.X/nbproject/include.am index ec09b769e..dc3d2f9a2 100644 --- a/mcapi/ctaocrypt_test.X/nbproject/include.am +++ b/mcapi/ctaocrypt_test.X/nbproject/include.am @@ -3,8 +3,7 @@ # EXTRA_DIST += \ - mcapi/ctaocrypt_test.X/Makefile \ - mcapi/ctaocrypt_test.X/main.c + mcapi/ctaocrypt_test.X/Makefile EXTRA_DIST += \ mcapi/ctaocrypt_test.X/nbproject/configurations.xml \ diff --git a/mcapi/ctaocrypt_test.X/nbproject/private/private.xml b/mcapi/ctaocrypt_test.X/nbproject/private/private.xml new file mode 100644 index 000000000..776e0527b --- /dev/null +++ b/mcapi/ctaocrypt_test.X/nbproject/private/private.xml @@ -0,0 +1,6 @@ + + + file:/C:/ROOT/CyaSSL-Release/PIC32MZ-HWCrypt/ctaocrypt/test/test.c + file:/C:/ROOT/CyaSSL-Release/PIC32MZ-HWCrypt/mplabx/test_main.c + + diff --git a/mcapi/cyassl.X/nbproject/Makefile-default.mk b/mcapi/cyassl.X/nbproject/Makefile-default.mk new file mode 100644 index 000000000..d9d2aed90 --- /dev/null +++ b/mcapi/cyassl.X/nbproject/Makefile-default.mk @@ -0,0 +1,626 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Include project Makefile +ifeq "${IGNORE_LOCAL}" "TRUE" +# do not include local makefile. User is passing all local related variables already +else +include Makefile +# Include makefile containing local settings +ifeq "$(wildcard nbproject/Makefile-local-default.mk)" "nbproject/Makefile-local-default.mk" +include nbproject/Makefile-local-default.mk +endif +endif + +# Environment +MKDIR=gnumkdir -p +RM=rm -f +MV=mv +CP=cp + +# Macros +CND_CONF=default +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +IMAGE_TYPE=debug +OUTPUT_SUFFIX=a +DEBUGGABLE_SUFFIX= +FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/cyassl.X.${OUTPUT_SUFFIX} +else +IMAGE_TYPE=production +OUTPUT_SUFFIX=a +DEBUGGABLE_SUFFIX= +FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/cyassl.X.${OUTPUT_SUFFIX} +endif + +# Object Directory +OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE} + +# Distribution Directory +DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} + +# Source Files Quoted if spaced +SOURCEFILES_QUOTED_IF_SPACED=../../src/crl.c ../../src/internal.c ../../src/io.c ../../src/keys.c ../../src/ocsp.c ../../src/sniffer.c ../../src/ssl.c ../../src/tls.c ../../ctaocrypt/src/aes.c ../../ctaocrypt/src/arc4.c ../../ctaocrypt/src/asm.c ../../ctaocrypt/src/asn.c ../../ctaocrypt/src/coding.c ../../ctaocrypt/src/des3.c ../../ctaocrypt/src/dh.c ../../ctaocrypt/src/dsa.c ../../ctaocrypt/src/ecc.c ../../ctaocrypt/src/ecc_fp.c ../../ctaocrypt/src/error.c ../../ctaocrypt/src/hc128.c ../../ctaocrypt/src/hmac.c ../../ctaocrypt/src/integer.c ../../ctaocrypt/src/logging.c ../../ctaocrypt/src/md2.c ../../ctaocrypt/src/md4.c ../../ctaocrypt/src/md5.c ../../ctaocrypt/src/memory.c ../../ctaocrypt/src/misc.c ../../ctaocrypt/src/pwdbased.c ../../ctaocrypt/src/rabbit.c ../../ctaocrypt/src/random.c ../../ctaocrypt/src/ripemd.c ../../ctaocrypt/src/rsa.c ../../ctaocrypt/src/sha.c ../../ctaocrypt/src/sha256.c ../../ctaocrypt/src/sha512.c ../../ctaocrypt/src/tfm.c ../../mcapi/crypto.c ../../ctaocrypt/src/compress.c ../../ctaocrypt/src/camellia.c ../../ctaocrypt/src/port.c + +# Object Files Quoted if spaced +OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/_ext/1445274692/crl.o ${OBJECTDIR}/_ext/1445274692/internal.o ${OBJECTDIR}/_ext/1445274692/io.o ${OBJECTDIR}/_ext/1445274692/keys.o ${OBJECTDIR}/_ext/1445274692/ocsp.o ${OBJECTDIR}/_ext/1445274692/sniffer.o ${OBJECTDIR}/_ext/1445274692/ssl.o ${OBJECTDIR}/_ext/1445274692/tls.o ${OBJECTDIR}/_ext/1439655260/aes.o ${OBJECTDIR}/_ext/1439655260/arc4.o ${OBJECTDIR}/_ext/1439655260/asm.o ${OBJECTDIR}/_ext/1439655260/asn.o ${OBJECTDIR}/_ext/1439655260/coding.o ${OBJECTDIR}/_ext/1439655260/des3.o ${OBJECTDIR}/_ext/1439655260/dh.o ${OBJECTDIR}/_ext/1439655260/dsa.o ${OBJECTDIR}/_ext/1439655260/ecc.o ${OBJECTDIR}/_ext/1439655260/ecc_fp.o ${OBJECTDIR}/_ext/1439655260/error.o ${OBJECTDIR}/_ext/1439655260/hc128.o ${OBJECTDIR}/_ext/1439655260/hmac.o ${OBJECTDIR}/_ext/1439655260/integer.o ${OBJECTDIR}/_ext/1439655260/logging.o ${OBJECTDIR}/_ext/1439655260/md2.o ${OBJECTDIR}/_ext/1439655260/md4.o ${OBJECTDIR}/_ext/1439655260/md5.o ${OBJECTDIR}/_ext/1439655260/memory.o ${OBJECTDIR}/_ext/1439655260/misc.o ${OBJECTDIR}/_ext/1439655260/pwdbased.o ${OBJECTDIR}/_ext/1439655260/rabbit.o ${OBJECTDIR}/_ext/1439655260/random.o ${OBJECTDIR}/_ext/1439655260/ripemd.o ${OBJECTDIR}/_ext/1439655260/rsa.o ${OBJECTDIR}/_ext/1439655260/sha.o ${OBJECTDIR}/_ext/1439655260/sha256.o ${OBJECTDIR}/_ext/1439655260/sha512.o ${OBJECTDIR}/_ext/1439655260/tfm.o ${OBJECTDIR}/_ext/1628556068/crypto.o ${OBJECTDIR}/_ext/1439655260/compress.o ${OBJECTDIR}/_ext/1439655260/camellia.o ${OBJECTDIR}/_ext/1439655260/port.o +POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/1445274692/crl.o.d ${OBJECTDIR}/_ext/1445274692/internal.o.d ${OBJECTDIR}/_ext/1445274692/io.o.d ${OBJECTDIR}/_ext/1445274692/keys.o.d ${OBJECTDIR}/_ext/1445274692/ocsp.o.d ${OBJECTDIR}/_ext/1445274692/sniffer.o.d ${OBJECTDIR}/_ext/1445274692/ssl.o.d ${OBJECTDIR}/_ext/1445274692/tls.o.d ${OBJECTDIR}/_ext/1439655260/aes.o.d ${OBJECTDIR}/_ext/1439655260/arc4.o.d ${OBJECTDIR}/_ext/1439655260/asm.o.d ${OBJECTDIR}/_ext/1439655260/asn.o.d ${OBJECTDIR}/_ext/1439655260/coding.o.d ${OBJECTDIR}/_ext/1439655260/des3.o.d ${OBJECTDIR}/_ext/1439655260/dh.o.d ${OBJECTDIR}/_ext/1439655260/dsa.o.d ${OBJECTDIR}/_ext/1439655260/ecc.o.d ${OBJECTDIR}/_ext/1439655260/ecc_fp.o.d ${OBJECTDIR}/_ext/1439655260/error.o.d ${OBJECTDIR}/_ext/1439655260/hc128.o.d ${OBJECTDIR}/_ext/1439655260/hmac.o.d ${OBJECTDIR}/_ext/1439655260/integer.o.d ${OBJECTDIR}/_ext/1439655260/logging.o.d ${OBJECTDIR}/_ext/1439655260/md2.o.d ${OBJECTDIR}/_ext/1439655260/md4.o.d ${OBJECTDIR}/_ext/1439655260/md5.o.d ${OBJECTDIR}/_ext/1439655260/memory.o.d ${OBJECTDIR}/_ext/1439655260/misc.o.d ${OBJECTDIR}/_ext/1439655260/pwdbased.o.d ${OBJECTDIR}/_ext/1439655260/rabbit.o.d ${OBJECTDIR}/_ext/1439655260/random.o.d ${OBJECTDIR}/_ext/1439655260/ripemd.o.d ${OBJECTDIR}/_ext/1439655260/rsa.o.d ${OBJECTDIR}/_ext/1439655260/sha.o.d ${OBJECTDIR}/_ext/1439655260/sha256.o.d ${OBJECTDIR}/_ext/1439655260/sha512.o.d ${OBJECTDIR}/_ext/1439655260/tfm.o.d ${OBJECTDIR}/_ext/1628556068/crypto.o.d ${OBJECTDIR}/_ext/1439655260/compress.o.d ${OBJECTDIR}/_ext/1439655260/camellia.o.d ${OBJECTDIR}/_ext/1439655260/port.o.d + +# Object Files +OBJECTFILES=${OBJECTDIR}/_ext/1445274692/crl.o ${OBJECTDIR}/_ext/1445274692/internal.o ${OBJECTDIR}/_ext/1445274692/io.o ${OBJECTDIR}/_ext/1445274692/keys.o ${OBJECTDIR}/_ext/1445274692/ocsp.o ${OBJECTDIR}/_ext/1445274692/sniffer.o ${OBJECTDIR}/_ext/1445274692/ssl.o ${OBJECTDIR}/_ext/1445274692/tls.o ${OBJECTDIR}/_ext/1439655260/aes.o ${OBJECTDIR}/_ext/1439655260/arc4.o ${OBJECTDIR}/_ext/1439655260/asm.o ${OBJECTDIR}/_ext/1439655260/asn.o ${OBJECTDIR}/_ext/1439655260/coding.o ${OBJECTDIR}/_ext/1439655260/des3.o ${OBJECTDIR}/_ext/1439655260/dh.o ${OBJECTDIR}/_ext/1439655260/dsa.o ${OBJECTDIR}/_ext/1439655260/ecc.o ${OBJECTDIR}/_ext/1439655260/ecc_fp.o ${OBJECTDIR}/_ext/1439655260/error.o ${OBJECTDIR}/_ext/1439655260/hc128.o ${OBJECTDIR}/_ext/1439655260/hmac.o ${OBJECTDIR}/_ext/1439655260/integer.o ${OBJECTDIR}/_ext/1439655260/logging.o ${OBJECTDIR}/_ext/1439655260/md2.o ${OBJECTDIR}/_ext/1439655260/md4.o ${OBJECTDIR}/_ext/1439655260/md5.o ${OBJECTDIR}/_ext/1439655260/memory.o ${OBJECTDIR}/_ext/1439655260/misc.o ${OBJECTDIR}/_ext/1439655260/pwdbased.o ${OBJECTDIR}/_ext/1439655260/rabbit.o ${OBJECTDIR}/_ext/1439655260/random.o ${OBJECTDIR}/_ext/1439655260/ripemd.o ${OBJECTDIR}/_ext/1439655260/rsa.o ${OBJECTDIR}/_ext/1439655260/sha.o ${OBJECTDIR}/_ext/1439655260/sha256.o ${OBJECTDIR}/_ext/1439655260/sha512.o ${OBJECTDIR}/_ext/1439655260/tfm.o ${OBJECTDIR}/_ext/1628556068/crypto.o ${OBJECTDIR}/_ext/1439655260/compress.o ${OBJECTDIR}/_ext/1439655260/camellia.o ${OBJECTDIR}/_ext/1439655260/port.o + +# Source Files +SOURCEFILES=../../src/crl.c ../../src/internal.c ../../src/io.c ../../src/keys.c ../../src/ocsp.c ../../src/sniffer.c ../../src/ssl.c ../../src/tls.c ../../ctaocrypt/src/aes.c ../../ctaocrypt/src/arc4.c ../../ctaocrypt/src/asm.c ../../ctaocrypt/src/asn.c ../../ctaocrypt/src/coding.c ../../ctaocrypt/src/des3.c ../../ctaocrypt/src/dh.c ../../ctaocrypt/src/dsa.c ../../ctaocrypt/src/ecc.c ../../ctaocrypt/src/ecc_fp.c ../../ctaocrypt/src/error.c ../../ctaocrypt/src/hc128.c ../../ctaocrypt/src/hmac.c ../../ctaocrypt/src/integer.c ../../ctaocrypt/src/logging.c ../../ctaocrypt/src/md2.c ../../ctaocrypt/src/md4.c ../../ctaocrypt/src/md5.c ../../ctaocrypt/src/memory.c ../../ctaocrypt/src/misc.c ../../ctaocrypt/src/pwdbased.c ../../ctaocrypt/src/rabbit.c ../../ctaocrypt/src/random.c ../../ctaocrypt/src/ripemd.c ../../ctaocrypt/src/rsa.c ../../ctaocrypt/src/sha.c ../../ctaocrypt/src/sha256.c ../../ctaocrypt/src/sha512.c ../../ctaocrypt/src/tfm.c ../../mcapi/crypto.c ../../ctaocrypt/src/compress.c ../../ctaocrypt/src/camellia.c ../../ctaocrypt/src/port.c + + +CFLAGS= +ASFLAGS= +LDLIBSOPTIONS= + +############# Tool locations ########################################## +# If you copy a project from one host to another, the path where the # +# compiler is installed may be different. # +# If you open this project with MPLAB X in the new host, this # +# makefile will be regenerated and the paths will be corrected. # +####################################################################### +# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build +FIXDEPS=fixDeps + +.build-conf: ${BUILD_SUBPROJECTS} + ${MAKE} ${MAKE_OPTIONS} -f nbproject/Makefile-default.mk dist/${CND_CONF}/${IMAGE_TYPE}/cyassl.X.${OUTPUT_SUFFIX} + +MP_PROCESSOR_OPTION=32MX795F512L +MP_LINKER_FILE_OPTION= +# ------------------------------------------------------------------------------------ +# Rules for buildStep: assemble +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: assembleWithPreprocess +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: compile +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +${OBJECTDIR}/_ext/1445274692/crl.o: ../../src/crl.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/crl.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/crl.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/crl.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1445274692/crl.o.d" -o ${OBJECTDIR}/_ext/1445274692/crl.o ../../src/crl.c + +${OBJECTDIR}/_ext/1445274692/internal.o: ../../src/internal.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/internal.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/internal.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/internal.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1445274692/internal.o.d" -o ${OBJECTDIR}/_ext/1445274692/internal.o ../../src/internal.c + +${OBJECTDIR}/_ext/1445274692/io.o: ../../src/io.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/io.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/io.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/io.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1445274692/io.o.d" -o ${OBJECTDIR}/_ext/1445274692/io.o ../../src/io.c + +${OBJECTDIR}/_ext/1445274692/keys.o: ../../src/keys.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/keys.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/keys.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/keys.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1445274692/keys.o.d" -o ${OBJECTDIR}/_ext/1445274692/keys.o ../../src/keys.c + +${OBJECTDIR}/_ext/1445274692/ocsp.o: ../../src/ocsp.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/ocsp.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/ocsp.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/ocsp.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1445274692/ocsp.o.d" -o ${OBJECTDIR}/_ext/1445274692/ocsp.o ../../src/ocsp.c + +${OBJECTDIR}/_ext/1445274692/sniffer.o: ../../src/sniffer.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/sniffer.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/sniffer.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/sniffer.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1445274692/sniffer.o.d" -o ${OBJECTDIR}/_ext/1445274692/sniffer.o ../../src/sniffer.c + +${OBJECTDIR}/_ext/1445274692/ssl.o: ../../src/ssl.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/ssl.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/ssl.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/ssl.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1445274692/ssl.o.d" -o ${OBJECTDIR}/_ext/1445274692/ssl.o ../../src/ssl.c + +${OBJECTDIR}/_ext/1445274692/tls.o: ../../src/tls.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/tls.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/tls.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/tls.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1445274692/tls.o.d" -o ${OBJECTDIR}/_ext/1445274692/tls.o ../../src/tls.c + +${OBJECTDIR}/_ext/1439655260/aes.o: ../../ctaocrypt/src/aes.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/aes.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/aes.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/aes.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/aes.o.d" -o ${OBJECTDIR}/_ext/1439655260/aes.o ../../ctaocrypt/src/aes.c + +${OBJECTDIR}/_ext/1439655260/arc4.o: ../../ctaocrypt/src/arc4.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/arc4.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/arc4.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/arc4.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/arc4.o.d" -o ${OBJECTDIR}/_ext/1439655260/arc4.o ../../ctaocrypt/src/arc4.c + +${OBJECTDIR}/_ext/1439655260/asm.o: ../../ctaocrypt/src/asm.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/asm.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/asm.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/asm.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/asm.o.d" -o ${OBJECTDIR}/_ext/1439655260/asm.o ../../ctaocrypt/src/asm.c + +${OBJECTDIR}/_ext/1439655260/asn.o: ../../ctaocrypt/src/asn.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/asn.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/asn.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/asn.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/asn.o.d" -o ${OBJECTDIR}/_ext/1439655260/asn.o ../../ctaocrypt/src/asn.c + +${OBJECTDIR}/_ext/1439655260/coding.o: ../../ctaocrypt/src/coding.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/coding.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/coding.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/coding.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/coding.o.d" -o ${OBJECTDIR}/_ext/1439655260/coding.o ../../ctaocrypt/src/coding.c + +${OBJECTDIR}/_ext/1439655260/des3.o: ../../ctaocrypt/src/des3.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/des3.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/des3.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/des3.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/des3.o.d" -o ${OBJECTDIR}/_ext/1439655260/des3.o ../../ctaocrypt/src/des3.c + +${OBJECTDIR}/_ext/1439655260/dh.o: ../../ctaocrypt/src/dh.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/dh.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/dh.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/dh.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/dh.o.d" -o ${OBJECTDIR}/_ext/1439655260/dh.o ../../ctaocrypt/src/dh.c + +${OBJECTDIR}/_ext/1439655260/dsa.o: ../../ctaocrypt/src/dsa.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/dsa.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/dsa.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/dsa.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/dsa.o.d" -o ${OBJECTDIR}/_ext/1439655260/dsa.o ../../ctaocrypt/src/dsa.c + +${OBJECTDIR}/_ext/1439655260/ecc.o: ../../ctaocrypt/src/ecc.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/ecc.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/ecc.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/ecc.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/ecc.o.d" -o ${OBJECTDIR}/_ext/1439655260/ecc.o ../../ctaocrypt/src/ecc.c + +${OBJECTDIR}/_ext/1439655260/ecc_fp.o: ../../ctaocrypt/src/ecc_fp.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/ecc_fp.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/ecc_fp.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/ecc_fp.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/ecc_fp.o.d" -o ${OBJECTDIR}/_ext/1439655260/ecc_fp.o ../../ctaocrypt/src/ecc_fp.c + +${OBJECTDIR}/_ext/1439655260/error.o: ../../ctaocrypt/src/error.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/error.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/error.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/error.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/error.o.d" -o ${OBJECTDIR}/_ext/1439655260/error.o ../../ctaocrypt/src/error.c + +${OBJECTDIR}/_ext/1439655260/hc128.o: ../../ctaocrypt/src/hc128.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/hc128.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/hc128.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/hc128.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/hc128.o.d" -o ${OBJECTDIR}/_ext/1439655260/hc128.o ../../ctaocrypt/src/hc128.c + +${OBJECTDIR}/_ext/1439655260/hmac.o: ../../ctaocrypt/src/hmac.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/hmac.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/hmac.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/hmac.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/hmac.o.d" -o ${OBJECTDIR}/_ext/1439655260/hmac.o ../../ctaocrypt/src/hmac.c + +${OBJECTDIR}/_ext/1439655260/integer.o: ../../ctaocrypt/src/integer.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/integer.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/integer.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/integer.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/integer.o.d" -o ${OBJECTDIR}/_ext/1439655260/integer.o ../../ctaocrypt/src/integer.c + +${OBJECTDIR}/_ext/1439655260/logging.o: ../../ctaocrypt/src/logging.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/logging.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/logging.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/logging.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/logging.o.d" -o ${OBJECTDIR}/_ext/1439655260/logging.o ../../ctaocrypt/src/logging.c + +${OBJECTDIR}/_ext/1439655260/md2.o: ../../ctaocrypt/src/md2.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/md2.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/md2.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/md2.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/md2.o.d" -o ${OBJECTDIR}/_ext/1439655260/md2.o ../../ctaocrypt/src/md2.c + +${OBJECTDIR}/_ext/1439655260/md4.o: ../../ctaocrypt/src/md4.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/md4.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/md4.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/md4.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/md4.o.d" -o ${OBJECTDIR}/_ext/1439655260/md4.o ../../ctaocrypt/src/md4.c + +${OBJECTDIR}/_ext/1439655260/md5.o: ../../ctaocrypt/src/md5.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/md5.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/md5.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/md5.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/md5.o.d" -o ${OBJECTDIR}/_ext/1439655260/md5.o ../../ctaocrypt/src/md5.c + +${OBJECTDIR}/_ext/1439655260/memory.o: ../../ctaocrypt/src/memory.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/memory.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/memory.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/memory.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/memory.o.d" -o ${OBJECTDIR}/_ext/1439655260/memory.o ../../ctaocrypt/src/memory.c + +${OBJECTDIR}/_ext/1439655260/misc.o: ../../ctaocrypt/src/misc.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/misc.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/misc.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/misc.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/misc.o.d" -o ${OBJECTDIR}/_ext/1439655260/misc.o ../../ctaocrypt/src/misc.c + +${OBJECTDIR}/_ext/1439655260/pwdbased.o: ../../ctaocrypt/src/pwdbased.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/pwdbased.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/pwdbased.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/pwdbased.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/pwdbased.o.d" -o ${OBJECTDIR}/_ext/1439655260/pwdbased.o ../../ctaocrypt/src/pwdbased.c + +${OBJECTDIR}/_ext/1439655260/rabbit.o: ../../ctaocrypt/src/rabbit.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/rabbit.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/rabbit.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/rabbit.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/rabbit.o.d" -o ${OBJECTDIR}/_ext/1439655260/rabbit.o ../../ctaocrypt/src/rabbit.c + +${OBJECTDIR}/_ext/1439655260/random.o: ../../ctaocrypt/src/random.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/random.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/random.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/random.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/random.o.d" -o ${OBJECTDIR}/_ext/1439655260/random.o ../../ctaocrypt/src/random.c + +${OBJECTDIR}/_ext/1439655260/ripemd.o: ../../ctaocrypt/src/ripemd.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/ripemd.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/ripemd.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/ripemd.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/ripemd.o.d" -o ${OBJECTDIR}/_ext/1439655260/ripemd.o ../../ctaocrypt/src/ripemd.c + +${OBJECTDIR}/_ext/1439655260/rsa.o: ../../ctaocrypt/src/rsa.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/rsa.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/rsa.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/rsa.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/rsa.o.d" -o ${OBJECTDIR}/_ext/1439655260/rsa.o ../../ctaocrypt/src/rsa.c + +${OBJECTDIR}/_ext/1439655260/sha.o: ../../ctaocrypt/src/sha.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/sha.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/sha.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/sha.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/sha.o.d" -o ${OBJECTDIR}/_ext/1439655260/sha.o ../../ctaocrypt/src/sha.c + +${OBJECTDIR}/_ext/1439655260/sha256.o: ../../ctaocrypt/src/sha256.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/sha256.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/sha256.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/sha256.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/sha256.o.d" -o ${OBJECTDIR}/_ext/1439655260/sha256.o ../../ctaocrypt/src/sha256.c + +${OBJECTDIR}/_ext/1439655260/sha512.o: ../../ctaocrypt/src/sha512.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/sha512.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/sha512.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/sha512.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/sha512.o.d" -o ${OBJECTDIR}/_ext/1439655260/sha512.o ../../ctaocrypt/src/sha512.c + +${OBJECTDIR}/_ext/1439655260/tfm.o: ../../ctaocrypt/src/tfm.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/tfm.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/tfm.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/tfm.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/tfm.o.d" -o ${OBJECTDIR}/_ext/1439655260/tfm.o ../../ctaocrypt/src/tfm.c + +${OBJECTDIR}/_ext/1628556068/crypto.o: ../../mcapi/crypto.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1628556068 + @${RM} ${OBJECTDIR}/_ext/1628556068/crypto.o.d + @${RM} ${OBJECTDIR}/_ext/1628556068/crypto.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1628556068/crypto.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1628556068/crypto.o.d" -o ${OBJECTDIR}/_ext/1628556068/crypto.o ../../mcapi/crypto.c + +${OBJECTDIR}/_ext/1439655260/compress.o: ../../ctaocrypt/src/compress.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/compress.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/compress.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/compress.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/compress.o.d" -o ${OBJECTDIR}/_ext/1439655260/compress.o ../../ctaocrypt/src/compress.c + +${OBJECTDIR}/_ext/1439655260/camellia.o: ../../ctaocrypt/src/camellia.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/camellia.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/camellia.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/camellia.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/camellia.o.d" -o ${OBJECTDIR}/_ext/1439655260/camellia.o ../../ctaocrypt/src/camellia.c + +${OBJECTDIR}/_ext/1439655260/port.o: ../../ctaocrypt/src/port.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/port.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/port.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/port.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/port.o.d" -o ${OBJECTDIR}/_ext/1439655260/port.o ../../ctaocrypt/src/port.c + +else +${OBJECTDIR}/_ext/1445274692/crl.o: ../../src/crl.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/crl.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/crl.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/crl.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1445274692/crl.o.d" -o ${OBJECTDIR}/_ext/1445274692/crl.o ../../src/crl.c + +${OBJECTDIR}/_ext/1445274692/internal.o: ../../src/internal.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/internal.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/internal.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/internal.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1445274692/internal.o.d" -o ${OBJECTDIR}/_ext/1445274692/internal.o ../../src/internal.c + +${OBJECTDIR}/_ext/1445274692/io.o: ../../src/io.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/io.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/io.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/io.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1445274692/io.o.d" -o ${OBJECTDIR}/_ext/1445274692/io.o ../../src/io.c + +${OBJECTDIR}/_ext/1445274692/keys.o: ../../src/keys.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/keys.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/keys.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/keys.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1445274692/keys.o.d" -o ${OBJECTDIR}/_ext/1445274692/keys.o ../../src/keys.c + +${OBJECTDIR}/_ext/1445274692/ocsp.o: ../../src/ocsp.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/ocsp.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/ocsp.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/ocsp.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1445274692/ocsp.o.d" -o ${OBJECTDIR}/_ext/1445274692/ocsp.o ../../src/ocsp.c + +${OBJECTDIR}/_ext/1445274692/sniffer.o: ../../src/sniffer.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/sniffer.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/sniffer.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/sniffer.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1445274692/sniffer.o.d" -o ${OBJECTDIR}/_ext/1445274692/sniffer.o ../../src/sniffer.c + +${OBJECTDIR}/_ext/1445274692/ssl.o: ../../src/ssl.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/ssl.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/ssl.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/ssl.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1445274692/ssl.o.d" -o ${OBJECTDIR}/_ext/1445274692/ssl.o ../../src/ssl.c + +${OBJECTDIR}/_ext/1445274692/tls.o: ../../src/tls.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/tls.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/tls.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/tls.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1445274692/tls.o.d" -o ${OBJECTDIR}/_ext/1445274692/tls.o ../../src/tls.c + +${OBJECTDIR}/_ext/1439655260/aes.o: ../../ctaocrypt/src/aes.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/aes.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/aes.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/aes.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/aes.o.d" -o ${OBJECTDIR}/_ext/1439655260/aes.o ../../ctaocrypt/src/aes.c + +${OBJECTDIR}/_ext/1439655260/arc4.o: ../../ctaocrypt/src/arc4.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/arc4.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/arc4.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/arc4.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/arc4.o.d" -o ${OBJECTDIR}/_ext/1439655260/arc4.o ../../ctaocrypt/src/arc4.c + +${OBJECTDIR}/_ext/1439655260/asm.o: ../../ctaocrypt/src/asm.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/asm.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/asm.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/asm.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/asm.o.d" -o ${OBJECTDIR}/_ext/1439655260/asm.o ../../ctaocrypt/src/asm.c + +${OBJECTDIR}/_ext/1439655260/asn.o: ../../ctaocrypt/src/asn.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/asn.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/asn.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/asn.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/asn.o.d" -o ${OBJECTDIR}/_ext/1439655260/asn.o ../../ctaocrypt/src/asn.c + +${OBJECTDIR}/_ext/1439655260/coding.o: ../../ctaocrypt/src/coding.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/coding.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/coding.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/coding.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/coding.o.d" -o ${OBJECTDIR}/_ext/1439655260/coding.o ../../ctaocrypt/src/coding.c + +${OBJECTDIR}/_ext/1439655260/des3.o: ../../ctaocrypt/src/des3.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/des3.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/des3.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/des3.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/des3.o.d" -o ${OBJECTDIR}/_ext/1439655260/des3.o ../../ctaocrypt/src/des3.c + +${OBJECTDIR}/_ext/1439655260/dh.o: ../../ctaocrypt/src/dh.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/dh.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/dh.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/dh.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/dh.o.d" -o ${OBJECTDIR}/_ext/1439655260/dh.o ../../ctaocrypt/src/dh.c + +${OBJECTDIR}/_ext/1439655260/dsa.o: ../../ctaocrypt/src/dsa.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/dsa.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/dsa.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/dsa.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/dsa.o.d" -o ${OBJECTDIR}/_ext/1439655260/dsa.o ../../ctaocrypt/src/dsa.c + +${OBJECTDIR}/_ext/1439655260/ecc.o: ../../ctaocrypt/src/ecc.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/ecc.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/ecc.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/ecc.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/ecc.o.d" -o ${OBJECTDIR}/_ext/1439655260/ecc.o ../../ctaocrypt/src/ecc.c + +${OBJECTDIR}/_ext/1439655260/ecc_fp.o: ../../ctaocrypt/src/ecc_fp.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/ecc_fp.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/ecc_fp.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/ecc_fp.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/ecc_fp.o.d" -o ${OBJECTDIR}/_ext/1439655260/ecc_fp.o ../../ctaocrypt/src/ecc_fp.c + +${OBJECTDIR}/_ext/1439655260/error.o: ../../ctaocrypt/src/error.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/error.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/error.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/error.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/error.o.d" -o ${OBJECTDIR}/_ext/1439655260/error.o ../../ctaocrypt/src/error.c + +${OBJECTDIR}/_ext/1439655260/hc128.o: ../../ctaocrypt/src/hc128.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/hc128.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/hc128.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/hc128.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/hc128.o.d" -o ${OBJECTDIR}/_ext/1439655260/hc128.o ../../ctaocrypt/src/hc128.c + +${OBJECTDIR}/_ext/1439655260/hmac.o: ../../ctaocrypt/src/hmac.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/hmac.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/hmac.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/hmac.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/hmac.o.d" -o ${OBJECTDIR}/_ext/1439655260/hmac.o ../../ctaocrypt/src/hmac.c + +${OBJECTDIR}/_ext/1439655260/integer.o: ../../ctaocrypt/src/integer.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/integer.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/integer.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/integer.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/integer.o.d" -o ${OBJECTDIR}/_ext/1439655260/integer.o ../../ctaocrypt/src/integer.c + +${OBJECTDIR}/_ext/1439655260/logging.o: ../../ctaocrypt/src/logging.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/logging.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/logging.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/logging.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/logging.o.d" -o ${OBJECTDIR}/_ext/1439655260/logging.o ../../ctaocrypt/src/logging.c + +${OBJECTDIR}/_ext/1439655260/md2.o: ../../ctaocrypt/src/md2.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/md2.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/md2.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/md2.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/md2.o.d" -o ${OBJECTDIR}/_ext/1439655260/md2.o ../../ctaocrypt/src/md2.c + +${OBJECTDIR}/_ext/1439655260/md4.o: ../../ctaocrypt/src/md4.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/md4.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/md4.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/md4.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/md4.o.d" -o ${OBJECTDIR}/_ext/1439655260/md4.o ../../ctaocrypt/src/md4.c + +${OBJECTDIR}/_ext/1439655260/md5.o: ../../ctaocrypt/src/md5.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/md5.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/md5.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/md5.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/md5.o.d" -o ${OBJECTDIR}/_ext/1439655260/md5.o ../../ctaocrypt/src/md5.c + +${OBJECTDIR}/_ext/1439655260/memory.o: ../../ctaocrypt/src/memory.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/memory.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/memory.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/memory.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/memory.o.d" -o ${OBJECTDIR}/_ext/1439655260/memory.o ../../ctaocrypt/src/memory.c + +${OBJECTDIR}/_ext/1439655260/misc.o: ../../ctaocrypt/src/misc.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/misc.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/misc.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/misc.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/misc.o.d" -o ${OBJECTDIR}/_ext/1439655260/misc.o ../../ctaocrypt/src/misc.c + +${OBJECTDIR}/_ext/1439655260/pwdbased.o: ../../ctaocrypt/src/pwdbased.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/pwdbased.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/pwdbased.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/pwdbased.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/pwdbased.o.d" -o ${OBJECTDIR}/_ext/1439655260/pwdbased.o ../../ctaocrypt/src/pwdbased.c + +${OBJECTDIR}/_ext/1439655260/rabbit.o: ../../ctaocrypt/src/rabbit.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/rabbit.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/rabbit.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/rabbit.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/rabbit.o.d" -o ${OBJECTDIR}/_ext/1439655260/rabbit.o ../../ctaocrypt/src/rabbit.c + +${OBJECTDIR}/_ext/1439655260/random.o: ../../ctaocrypt/src/random.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/random.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/random.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/random.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/random.o.d" -o ${OBJECTDIR}/_ext/1439655260/random.o ../../ctaocrypt/src/random.c + +${OBJECTDIR}/_ext/1439655260/ripemd.o: ../../ctaocrypt/src/ripemd.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/ripemd.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/ripemd.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/ripemd.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/ripemd.o.d" -o ${OBJECTDIR}/_ext/1439655260/ripemd.o ../../ctaocrypt/src/ripemd.c + +${OBJECTDIR}/_ext/1439655260/rsa.o: ../../ctaocrypt/src/rsa.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/rsa.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/rsa.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/rsa.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/rsa.o.d" -o ${OBJECTDIR}/_ext/1439655260/rsa.o ../../ctaocrypt/src/rsa.c + +${OBJECTDIR}/_ext/1439655260/sha.o: ../../ctaocrypt/src/sha.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/sha.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/sha.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/sha.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/sha.o.d" -o ${OBJECTDIR}/_ext/1439655260/sha.o ../../ctaocrypt/src/sha.c + +${OBJECTDIR}/_ext/1439655260/sha256.o: ../../ctaocrypt/src/sha256.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/sha256.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/sha256.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/sha256.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/sha256.o.d" -o ${OBJECTDIR}/_ext/1439655260/sha256.o ../../ctaocrypt/src/sha256.c + +${OBJECTDIR}/_ext/1439655260/sha512.o: ../../ctaocrypt/src/sha512.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/sha512.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/sha512.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/sha512.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/sha512.o.d" -o ${OBJECTDIR}/_ext/1439655260/sha512.o ../../ctaocrypt/src/sha512.c + +${OBJECTDIR}/_ext/1439655260/tfm.o: ../../ctaocrypt/src/tfm.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/tfm.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/tfm.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/tfm.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/tfm.o.d" -o ${OBJECTDIR}/_ext/1439655260/tfm.o ../../ctaocrypt/src/tfm.c + +${OBJECTDIR}/_ext/1628556068/crypto.o: ../../mcapi/crypto.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1628556068 + @${RM} ${OBJECTDIR}/_ext/1628556068/crypto.o.d + @${RM} ${OBJECTDIR}/_ext/1628556068/crypto.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1628556068/crypto.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1628556068/crypto.o.d" -o ${OBJECTDIR}/_ext/1628556068/crypto.o ../../mcapi/crypto.c + +${OBJECTDIR}/_ext/1439655260/compress.o: ../../ctaocrypt/src/compress.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/compress.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/compress.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/compress.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/compress.o.d" -o ${OBJECTDIR}/_ext/1439655260/compress.o ../../ctaocrypt/src/compress.c + +${OBJECTDIR}/_ext/1439655260/camellia.o: ../../ctaocrypt/src/camellia.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/camellia.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/camellia.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/camellia.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/camellia.o.d" -o ${OBJECTDIR}/_ext/1439655260/camellia.o ../../ctaocrypt/src/camellia.c + +${OBJECTDIR}/_ext/1439655260/port.o: ../../ctaocrypt/src/port.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/port.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/port.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/port.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DCYASSL_SHA512 -DCYASSL_SHA384 -DCYASSL_AES_COUNTER -DCYASSL_AES_DIRECT -DHAVE_ECC -DHAVE_LIBZ -DHAVE_MCAPI -I"../../" -I"../../mcapi" -I"../../zlib-1.2.7" -I"/Users/chrisc/yaSSL/products/cyassl/git/cyassl57/zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/1439655260/port.o.d" -o ${OBJECTDIR}/_ext/1439655260/port.o ../../ctaocrypt/src/port.c + +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: compileCPP +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: archive +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +dist/${CND_CONF}/${IMAGE_TYPE}/cyassl.X.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} + ${MP_AR} $(MP_EXTRA_AR_PRE) r dist/${CND_CONF}/${IMAGE_TYPE}/cyassl.X.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} +else +dist/${CND_CONF}/${IMAGE_TYPE}/cyassl.X.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} + ${MP_AR} $(MP_EXTRA_AR_PRE) r dist/${CND_CONF}/${IMAGE_TYPE}/cyassl.X.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} +endif + + +# Subprojects +.build-subprojects: + + +# Subprojects +.clean-subprojects: + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r build/default + ${RM} -r dist/default + +# Enable dependency checking +.dep.inc: .depcheck-impl + +DEPFILES=$(shell mplabwildcard ${POSSIBLE_DEPFILES}) +ifneq (${DEPFILES},) +include ${DEPFILES} +endif diff --git a/mcapi/cyassl.X/nbproject/Makefile-genesis.properties b/mcapi/cyassl.X/nbproject/Makefile-genesis.properties new file mode 100644 index 000000000..e2b5ea418 --- /dev/null +++ b/mcapi/cyassl.X/nbproject/Makefile-genesis.properties @@ -0,0 +1,8 @@ +# +#Mon Feb 24 12:04:34 JST 2014 +default.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=cd6a1e93a26f632c22d91cbbe4deaf2c +default.languagetoolchain.dir=C\:\\Program Files (x86)\\Microchip\\xc32\\v1.30-TC9\\bin +com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=43bd1633f14a944b6e95abd1333fdfc3 +default.languagetoolchain.version=1.30 +host.platform=windows +conf.ids=default diff --git a/mcapi/cyassl.X/nbproject/Makefile-impl.mk b/mcapi/cyassl.X/nbproject/Makefile-impl.mk new file mode 100644 index 000000000..6f20c0abd --- /dev/null +++ b/mcapi/cyassl.X/nbproject/Makefile-impl.mk @@ -0,0 +1,69 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a pre- and a post- target defined where you can add customization code. +# +# This makefile implements macros and targets common to all configurations. +# +# NOCDDL + + +# Building and Cleaning subprojects are done by default, but can be controlled with the SUB +# macro. If SUB=no, subprojects will not be built or cleaned. The following macro +# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf +# and .clean-reqprojects-conf unless SUB has the value 'no' +SUB_no=NO +SUBPROJECTS=${SUB_${SUB}} +BUILD_SUBPROJECTS_=.build-subprojects +BUILD_SUBPROJECTS_NO= +BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} +CLEAN_SUBPROJECTS_=.clean-subprojects +CLEAN_SUBPROJECTS_NO= +CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} + + +# Project Name +PROJECTNAME=cyassl.X + +# Active Configuration +DEFAULTCONF=default +CONF=${DEFAULTCONF} + +# All Configurations +ALLCONFS=default + + +# build +.build-impl: .build-pre + ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf + + +# clean +.clean-impl: .clean-pre + ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf + +# clobber +.clobber-impl: .clobber-pre .depcheck-impl + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default clean + + + +# all +.all-impl: .all-pre .depcheck-impl + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default build + + + +# dependency checking support +.depcheck-impl: +# @echo "# This code depends on make tool being used" >.dep.inc +# @if [ -n "${MAKE_VERSION}" ]; then \ +# echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \ +# echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ +# echo "include \$${DEPFILES}" >>.dep.inc; \ +# echo "endif" >>.dep.inc; \ +# else \ +# echo ".KEEP_STATE:" >>.dep.inc; \ +# echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ +# fi diff --git a/mcapi/cyassl.X/nbproject/Makefile-local-default.mk b/mcapi/cyassl.X/nbproject/Makefile-local-default.mk new file mode 100644 index 000000000..2d8424143 --- /dev/null +++ b/mcapi/cyassl.X/nbproject/Makefile-local-default.mk @@ -0,0 +1,37 @@ +# +# Generated Makefile - do not edit! +# +# +# This file contains information about the location of compilers and other tools. +# If you commmit this file into your revision control server, you will be able to +# to checkout the project and build it from the command line with make. However, +# if more than one person works on the same project, then this file might show +# conflicts since different users are bound to have compilers in different places. +# In that case you might choose to not commit this file and let MPLAB X recreate this file +# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at +# least once so the file gets created and the project can be built. Finally, you can also +# avoid using this file at all if you are only building from the command line with make. +# You can invoke make with the values of the macros: +# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ... +# +SHELL=cmd.exe +PATH_TO_IDE_BIN=C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/ +# Adding MPLAB X bin directory to path. +PATH:=C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/:$(PATH) +# Path to java used to run MPLAB X when this makefile was created +MP_JAVA_PATH="C:\Program Files (x86)\Microchip\MPLABX-v1.95.RC3\sys\java\jre1.7.0_25-windows-x64\java-windows/bin/" +OS_CURRENT="$(shell uname -s)" +MP_CC="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin\xc32-gcc.exe" +MP_CPPC="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin\xc32-g++.exe" +# MP_BC is not defined +MP_AS="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin\xc32-as.exe" +MP_LD="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin\xc32-ld.exe" +MP_AR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin\xc32-ar.exe" +DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar" +MP_CC_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin" +MP_CPPC_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin" +# MP_BC_DIR is not defined +MP_AS_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin" +MP_LD_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin" +MP_AR_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin" +# MP_BC_DIR is not defined diff --git a/mcapi/cyassl.X/nbproject/Makefile-variables.mk b/mcapi/cyassl.X/nbproject/Makefile-variables.mk new file mode 100644 index 000000000..b480b107d --- /dev/null +++ b/mcapi/cyassl.X/nbproject/Makefile-variables.mk @@ -0,0 +1,13 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +CND_BASEDIR=`pwd` +# default configuration +CND_ARTIFACT_DIR_default=dist/default/production +CND_ARTIFACT_NAME_default=cyassl.X.a +CND_ARTIFACT_PATH_default=dist/default/production/cyassl.X.a +CND_PACKAGE_DIR_default=${CND_DISTDIR}/default/package +CND_PACKAGE_NAME_default=cyassl.X.tar +CND_PACKAGE_PATH_default=${CND_DISTDIR}/default/package/cyassl.X.tar diff --git a/mcapi/cyassl.X/nbproject/Package-default.bash b/mcapi/cyassl.X/nbproject/Package-default.bash new file mode 100644 index 000000000..baae5e998 --- /dev/null +++ b/mcapi/cyassl.X/nbproject/Package-default.bash @@ -0,0 +1,73 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_CONF=default +CND_DISTDIR=dist +TMPDIR=build/${CND_CONF}/${IMAGE_TYPE}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=dist/${CND_CONF}/${IMAGE_TYPE}/cyassl.X.${OUTPUT_SUFFIX} +OUTPUT_BASENAME=cyassl.X.${OUTPUT_SUFFIX} +PACKAGE_TOP_DIR=cyassl.X/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/package +rm -rf ${TMPDIR} +mkdir -p ${TMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory ${TMPDIR}/cyassl.X/lib +copyFileToTmpDir "${OUTPUT_PATH}" "${TMPDIR}/${PACKAGE_TOP_DIR}lib/${OUTPUT_BASENAME}" 0644 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/package/cyassl.X.tar +cd ${TMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/package/cyassl.X.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${TMPDIR} diff --git a/mcapi/cyassl.X/nbproject/include.am b/mcapi/cyassl.X/nbproject/include.am index 163090026..fc7e8d972 100644 --- a/mcapi/cyassl.X/nbproject/include.am +++ b/mcapi/cyassl.X/nbproject/include.am @@ -3,7 +3,6 @@ # EXTRA_DIST += \ - mcapi/README \ mcapi/cyassl.X/Makefile EXTRA_DIST += \ diff --git a/mcapi/include.am b/mcapi/include.am index 7486c0fd5..993ba29c0 100644 --- a/mcapi/include.am +++ b/mcapi/include.am @@ -6,9 +6,14 @@ if BUILD_MCAPI check_PROGRAMS += mcapi/test noinst_PROGRAMS += mcapi/test mcapi_test_SOURCES = mcapi/crypto.c \ - mcapi/test.c + mcapi/mcapi_test.c mcapi_test_LDADD = src/libcyassl.la mcapi_test_DEPENDENCIES = src/libcyassl.la endif noinst_HEADERS += mcapi/crypto.h + +EXTRA_DIST += \ + mcapi/README \ + mcapi/PIC32MZ-serial.h + diff --git a/mcapi/mcapi_test.c b/mcapi/mcapi_test.c index c22618772..24e69174d 100644 --- a/mcapi/mcapi_test.c +++ b/mcapi/mcapi_test.c @@ -53,7 +53,7 @@ #include #include "PIC32MZ-serial.h" #define SYSTEMConfigPerformance /* void out SYSTEMConfigPerformance(); */ -#else +#elif defined(MICROCHIP_PIC32) #define PIC32_STARTER_KIT #include #include @@ -61,6 +61,8 @@ #include #include #define init_serial() /* void out init_serial() */ +#else + #include /* order matters above ? */ #endif #define OUR_DATA_SIZE 1024 static byte ourData[OUR_DATA_SIZE]; @@ -93,9 +95,11 @@ int main(int argc, char** argv) (void)argc; (void)argv; +#if defined(MICROCHIP_PIC32) init_serial() ; /* initialize PIC32MZ serial I/O */ SYSTEMConfigPerformance(80000000); DBINIT(); +#endif /* align key, iv pointers */ key = (byte*)XMALLOC(32, NULL, DYNAMIC_TYPE_KEY); diff --git a/mcapi/zlib.X/nbproject/Makefile-default.mk b/mcapi/zlib.X/nbproject/Makefile-default.mk new file mode 100644 index 000000000..7d2f68fae --- /dev/null +++ b/mcapi/zlib.X/nbproject/Makefile-default.mk @@ -0,0 +1,314 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Include project Makefile +ifeq "${IGNORE_LOCAL}" "TRUE" +# do not include local makefile. User is passing all local related variables already +else +include Makefile +# Include makefile containing local settings +ifeq "$(wildcard nbproject/Makefile-local-default.mk)" "nbproject/Makefile-local-default.mk" +include nbproject/Makefile-local-default.mk +endif +endif + +# Environment +MKDIR=gnumkdir -p +RM=rm -f +MV=mv +CP=cp + +# Macros +CND_CONF=default +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +IMAGE_TYPE=debug +OUTPUT_SUFFIX=a +DEBUGGABLE_SUFFIX= +FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/zlib.X.${OUTPUT_SUFFIX} +else +IMAGE_TYPE=production +OUTPUT_SUFFIX=a +DEBUGGABLE_SUFFIX= +FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/zlib.X.${OUTPUT_SUFFIX} +endif + +# Object Directory +OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE} + +# Distribution Directory +DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} + +# Source Files Quoted if spaced +SOURCEFILES_QUOTED_IF_SPACED=../../zlib-1.2.7/adler32.c ../../zlib-1.2.7/compress.c ../../zlib-1.2.7/crc32.c ../../zlib-1.2.7/deflate.c ../../zlib-1.2.7/gzclose.c ../../zlib-1.2.7/gzlib.c ../../zlib-1.2.7/gzread.c ../../zlib-1.2.7/gzwrite.c ../../zlib-1.2.7/infback.c ../../zlib-1.2.7/inffast.c ../../zlib-1.2.7/inflate.c ../../zlib-1.2.7/inftrees.c ../../zlib-1.2.7/trees.c ../../zlib-1.2.7/uncompr.c ../../zlib-1.2.7/zutil.c + +# Object Files Quoted if spaced +OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/_ext/608321700/adler32.o ${OBJECTDIR}/_ext/608321700/compress.o ${OBJECTDIR}/_ext/608321700/crc32.o ${OBJECTDIR}/_ext/608321700/deflate.o ${OBJECTDIR}/_ext/608321700/gzclose.o ${OBJECTDIR}/_ext/608321700/gzlib.o ${OBJECTDIR}/_ext/608321700/gzread.o ${OBJECTDIR}/_ext/608321700/gzwrite.o ${OBJECTDIR}/_ext/608321700/infback.o ${OBJECTDIR}/_ext/608321700/inffast.o ${OBJECTDIR}/_ext/608321700/inflate.o ${OBJECTDIR}/_ext/608321700/inftrees.o ${OBJECTDIR}/_ext/608321700/trees.o ${OBJECTDIR}/_ext/608321700/uncompr.o ${OBJECTDIR}/_ext/608321700/zutil.o +POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/608321700/adler32.o.d ${OBJECTDIR}/_ext/608321700/compress.o.d ${OBJECTDIR}/_ext/608321700/crc32.o.d ${OBJECTDIR}/_ext/608321700/deflate.o.d ${OBJECTDIR}/_ext/608321700/gzclose.o.d ${OBJECTDIR}/_ext/608321700/gzlib.o.d ${OBJECTDIR}/_ext/608321700/gzread.o.d ${OBJECTDIR}/_ext/608321700/gzwrite.o.d ${OBJECTDIR}/_ext/608321700/infback.o.d ${OBJECTDIR}/_ext/608321700/inffast.o.d ${OBJECTDIR}/_ext/608321700/inflate.o.d ${OBJECTDIR}/_ext/608321700/inftrees.o.d ${OBJECTDIR}/_ext/608321700/trees.o.d ${OBJECTDIR}/_ext/608321700/uncompr.o.d ${OBJECTDIR}/_ext/608321700/zutil.o.d + +# Object Files +OBJECTFILES=${OBJECTDIR}/_ext/608321700/adler32.o ${OBJECTDIR}/_ext/608321700/compress.o ${OBJECTDIR}/_ext/608321700/crc32.o ${OBJECTDIR}/_ext/608321700/deflate.o ${OBJECTDIR}/_ext/608321700/gzclose.o ${OBJECTDIR}/_ext/608321700/gzlib.o ${OBJECTDIR}/_ext/608321700/gzread.o ${OBJECTDIR}/_ext/608321700/gzwrite.o ${OBJECTDIR}/_ext/608321700/infback.o ${OBJECTDIR}/_ext/608321700/inffast.o ${OBJECTDIR}/_ext/608321700/inflate.o ${OBJECTDIR}/_ext/608321700/inftrees.o ${OBJECTDIR}/_ext/608321700/trees.o ${OBJECTDIR}/_ext/608321700/uncompr.o ${OBJECTDIR}/_ext/608321700/zutil.o + +# Source Files +SOURCEFILES=../../zlib-1.2.7/adler32.c ../../zlib-1.2.7/compress.c ../../zlib-1.2.7/crc32.c ../../zlib-1.2.7/deflate.c ../../zlib-1.2.7/gzclose.c ../../zlib-1.2.7/gzlib.c ../../zlib-1.2.7/gzread.c ../../zlib-1.2.7/gzwrite.c ../../zlib-1.2.7/infback.c ../../zlib-1.2.7/inffast.c ../../zlib-1.2.7/inflate.c ../../zlib-1.2.7/inftrees.c ../../zlib-1.2.7/trees.c ../../zlib-1.2.7/uncompr.c ../../zlib-1.2.7/zutil.c + + +CFLAGS= +ASFLAGS= +LDLIBSOPTIONS= + +############# Tool locations ########################################## +# If you copy a project from one host to another, the path where the # +# compiler is installed may be different. # +# If you open this project with MPLAB X in the new host, this # +# makefile will be regenerated and the paths will be corrected. # +####################################################################### +# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build +FIXDEPS=fixDeps + +.build-conf: ${BUILD_SUBPROJECTS} + ${MAKE} ${MAKE_OPTIONS} -f nbproject/Makefile-default.mk dist/${CND_CONF}/${IMAGE_TYPE}/zlib.X.${OUTPUT_SUFFIX} + +MP_PROCESSOR_OPTION=32MX795F512L +MP_LINKER_FILE_OPTION= +# ------------------------------------------------------------------------------------ +# Rules for buildStep: assemble +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: assembleWithPreprocess +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: compile +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +${OBJECTDIR}/_ext/608321700/adler32.o: ../../zlib-1.2.7/adler32.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/adler32.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/adler32.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/adler32.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/adler32.o.d" -o ${OBJECTDIR}/_ext/608321700/adler32.o ../../zlib-1.2.7/adler32.c + +${OBJECTDIR}/_ext/608321700/compress.o: ../../zlib-1.2.7/compress.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/compress.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/compress.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/compress.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/compress.o.d" -o ${OBJECTDIR}/_ext/608321700/compress.o ../../zlib-1.2.7/compress.c + +${OBJECTDIR}/_ext/608321700/crc32.o: ../../zlib-1.2.7/crc32.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/crc32.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/crc32.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/crc32.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/crc32.o.d" -o ${OBJECTDIR}/_ext/608321700/crc32.o ../../zlib-1.2.7/crc32.c + +${OBJECTDIR}/_ext/608321700/deflate.o: ../../zlib-1.2.7/deflate.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/deflate.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/deflate.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/deflate.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/deflate.o.d" -o ${OBJECTDIR}/_ext/608321700/deflate.o ../../zlib-1.2.7/deflate.c + +${OBJECTDIR}/_ext/608321700/gzclose.o: ../../zlib-1.2.7/gzclose.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/gzclose.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/gzclose.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/gzclose.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/gzclose.o.d" -o ${OBJECTDIR}/_ext/608321700/gzclose.o ../../zlib-1.2.7/gzclose.c + +${OBJECTDIR}/_ext/608321700/gzlib.o: ../../zlib-1.2.7/gzlib.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/gzlib.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/gzlib.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/gzlib.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/gzlib.o.d" -o ${OBJECTDIR}/_ext/608321700/gzlib.o ../../zlib-1.2.7/gzlib.c + +${OBJECTDIR}/_ext/608321700/gzread.o: ../../zlib-1.2.7/gzread.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/gzread.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/gzread.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/gzread.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/gzread.o.d" -o ${OBJECTDIR}/_ext/608321700/gzread.o ../../zlib-1.2.7/gzread.c + +${OBJECTDIR}/_ext/608321700/gzwrite.o: ../../zlib-1.2.7/gzwrite.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/gzwrite.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/gzwrite.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/gzwrite.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/gzwrite.o.d" -o ${OBJECTDIR}/_ext/608321700/gzwrite.o ../../zlib-1.2.7/gzwrite.c + +${OBJECTDIR}/_ext/608321700/infback.o: ../../zlib-1.2.7/infback.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/infback.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/infback.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/infback.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/infback.o.d" -o ${OBJECTDIR}/_ext/608321700/infback.o ../../zlib-1.2.7/infback.c + +${OBJECTDIR}/_ext/608321700/inffast.o: ../../zlib-1.2.7/inffast.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/inffast.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/inffast.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/inffast.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/inffast.o.d" -o ${OBJECTDIR}/_ext/608321700/inffast.o ../../zlib-1.2.7/inffast.c + +${OBJECTDIR}/_ext/608321700/inflate.o: ../../zlib-1.2.7/inflate.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/inflate.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/inflate.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/inflate.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/inflate.o.d" -o ${OBJECTDIR}/_ext/608321700/inflate.o ../../zlib-1.2.7/inflate.c + +${OBJECTDIR}/_ext/608321700/inftrees.o: ../../zlib-1.2.7/inftrees.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/inftrees.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/inftrees.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/inftrees.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/inftrees.o.d" -o ${OBJECTDIR}/_ext/608321700/inftrees.o ../../zlib-1.2.7/inftrees.c + +${OBJECTDIR}/_ext/608321700/trees.o: ../../zlib-1.2.7/trees.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/trees.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/trees.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/trees.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/trees.o.d" -o ${OBJECTDIR}/_ext/608321700/trees.o ../../zlib-1.2.7/trees.c + +${OBJECTDIR}/_ext/608321700/uncompr.o: ../../zlib-1.2.7/uncompr.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/uncompr.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/uncompr.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/uncompr.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/uncompr.o.d" -o ${OBJECTDIR}/_ext/608321700/uncompr.o ../../zlib-1.2.7/uncompr.c + +${OBJECTDIR}/_ext/608321700/zutil.o: ../../zlib-1.2.7/zutil.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/zutil.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/zutil.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/zutil.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PIC32MXSK=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/zutil.o.d" -o ${OBJECTDIR}/_ext/608321700/zutil.o ../../zlib-1.2.7/zutil.c + +else +${OBJECTDIR}/_ext/608321700/adler32.o: ../../zlib-1.2.7/adler32.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/adler32.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/adler32.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/adler32.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/adler32.o.d" -o ${OBJECTDIR}/_ext/608321700/adler32.o ../../zlib-1.2.7/adler32.c + +${OBJECTDIR}/_ext/608321700/compress.o: ../../zlib-1.2.7/compress.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/compress.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/compress.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/compress.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/compress.o.d" -o ${OBJECTDIR}/_ext/608321700/compress.o ../../zlib-1.2.7/compress.c + +${OBJECTDIR}/_ext/608321700/crc32.o: ../../zlib-1.2.7/crc32.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/crc32.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/crc32.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/crc32.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/crc32.o.d" -o ${OBJECTDIR}/_ext/608321700/crc32.o ../../zlib-1.2.7/crc32.c + +${OBJECTDIR}/_ext/608321700/deflate.o: ../../zlib-1.2.7/deflate.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/deflate.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/deflate.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/deflate.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/deflate.o.d" -o ${OBJECTDIR}/_ext/608321700/deflate.o ../../zlib-1.2.7/deflate.c + +${OBJECTDIR}/_ext/608321700/gzclose.o: ../../zlib-1.2.7/gzclose.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/gzclose.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/gzclose.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/gzclose.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/gzclose.o.d" -o ${OBJECTDIR}/_ext/608321700/gzclose.o ../../zlib-1.2.7/gzclose.c + +${OBJECTDIR}/_ext/608321700/gzlib.o: ../../zlib-1.2.7/gzlib.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/gzlib.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/gzlib.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/gzlib.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/gzlib.o.d" -o ${OBJECTDIR}/_ext/608321700/gzlib.o ../../zlib-1.2.7/gzlib.c + +${OBJECTDIR}/_ext/608321700/gzread.o: ../../zlib-1.2.7/gzread.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/gzread.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/gzread.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/gzread.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/gzread.o.d" -o ${OBJECTDIR}/_ext/608321700/gzread.o ../../zlib-1.2.7/gzread.c + +${OBJECTDIR}/_ext/608321700/gzwrite.o: ../../zlib-1.2.7/gzwrite.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/gzwrite.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/gzwrite.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/gzwrite.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/gzwrite.o.d" -o ${OBJECTDIR}/_ext/608321700/gzwrite.o ../../zlib-1.2.7/gzwrite.c + +${OBJECTDIR}/_ext/608321700/infback.o: ../../zlib-1.2.7/infback.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/infback.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/infback.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/infback.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/infback.o.d" -o ${OBJECTDIR}/_ext/608321700/infback.o ../../zlib-1.2.7/infback.c + +${OBJECTDIR}/_ext/608321700/inffast.o: ../../zlib-1.2.7/inffast.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/inffast.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/inffast.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/inffast.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/inffast.o.d" -o ${OBJECTDIR}/_ext/608321700/inffast.o ../../zlib-1.2.7/inffast.c + +${OBJECTDIR}/_ext/608321700/inflate.o: ../../zlib-1.2.7/inflate.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/inflate.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/inflate.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/inflate.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/inflate.o.d" -o ${OBJECTDIR}/_ext/608321700/inflate.o ../../zlib-1.2.7/inflate.c + +${OBJECTDIR}/_ext/608321700/inftrees.o: ../../zlib-1.2.7/inftrees.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/inftrees.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/inftrees.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/inftrees.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/inftrees.o.d" -o ${OBJECTDIR}/_ext/608321700/inftrees.o ../../zlib-1.2.7/inftrees.c + +${OBJECTDIR}/_ext/608321700/trees.o: ../../zlib-1.2.7/trees.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/trees.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/trees.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/trees.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/trees.o.d" -o ${OBJECTDIR}/_ext/608321700/trees.o ../../zlib-1.2.7/trees.c + +${OBJECTDIR}/_ext/608321700/uncompr.o: ../../zlib-1.2.7/uncompr.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/uncompr.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/uncompr.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/uncompr.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/uncompr.o.d" -o ${OBJECTDIR}/_ext/608321700/uncompr.o ../../zlib-1.2.7/uncompr.c + +${OBJECTDIR}/_ext/608321700/zutil.o: ../../zlib-1.2.7/zutil.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/608321700 + @${RM} ${OBJECTDIR}/_ext/608321700/zutil.o.d + @${RM} ${OBJECTDIR}/_ext/608321700/zutil.o + @${FIXDEPS} "${OBJECTDIR}/_ext/608321700/zutil.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -Os -DHAVE_HIDDEN -DMAX_MEM_LEVEL=1 -DMAX_WBITS=11 -I"../../zlib-1.2.7" -MMD -MF "${OBJECTDIR}/_ext/608321700/zutil.o.d" -o ${OBJECTDIR}/_ext/608321700/zutil.o ../../zlib-1.2.7/zutil.c + +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: compileCPP +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: archive +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +dist/${CND_CONF}/${IMAGE_TYPE}/zlib.X.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} + ${MP_AR} $(MP_EXTRA_AR_PRE) r dist/${CND_CONF}/${IMAGE_TYPE}/zlib.X.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} +else +dist/${CND_CONF}/${IMAGE_TYPE}/zlib.X.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} + ${MP_AR} $(MP_EXTRA_AR_PRE) r dist/${CND_CONF}/${IMAGE_TYPE}/zlib.X.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} +endif + + +# Subprojects +.build-subprojects: + + +# Subprojects +.clean-subprojects: + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r build/default + ${RM} -r dist/default + +# Enable dependency checking +.dep.inc: .depcheck-impl + +DEPFILES=$(shell mplabwildcard ${POSSIBLE_DEPFILES}) +ifneq (${DEPFILES},) +include ${DEPFILES} +endif diff --git a/mcapi/zlib.X/nbproject/Makefile-genesis.properties b/mcapi/zlib.X/nbproject/Makefile-genesis.properties new file mode 100644 index 000000000..c3e8ca8d5 --- /dev/null +++ b/mcapi/zlib.X/nbproject/Makefile-genesis.properties @@ -0,0 +1,8 @@ +# +#Mon Feb 24 10:53:41 JST 2014 +default.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=cd6a1e93a26f632c22d91cbbe4deaf2c +default.languagetoolchain.dir=C\:\\Program Files (x86)\\Microchip\\xc32\\v1.30-TC9\\bin +com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=43bd1633f14a944b6e95abd1333fdfc3 +default.languagetoolchain.version=1.30 +host.platform=windows +conf.ids=default diff --git a/mcapi/zlib.X/nbproject/Makefile-impl.mk b/mcapi/zlib.X/nbproject/Makefile-impl.mk new file mode 100644 index 000000000..df37d06fb --- /dev/null +++ b/mcapi/zlib.X/nbproject/Makefile-impl.mk @@ -0,0 +1,69 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a pre- and a post- target defined where you can add customization code. +# +# This makefile implements macros and targets common to all configurations. +# +# NOCDDL + + +# Building and Cleaning subprojects are done by default, but can be controlled with the SUB +# macro. If SUB=no, subprojects will not be built or cleaned. The following macro +# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf +# and .clean-reqprojects-conf unless SUB has the value 'no' +SUB_no=NO +SUBPROJECTS=${SUB_${SUB}} +BUILD_SUBPROJECTS_=.build-subprojects +BUILD_SUBPROJECTS_NO= +BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} +CLEAN_SUBPROJECTS_=.clean-subprojects +CLEAN_SUBPROJECTS_NO= +CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} + + +# Project Name +PROJECTNAME=zlib.X + +# Active Configuration +DEFAULTCONF=default +CONF=${DEFAULTCONF} + +# All Configurations +ALLCONFS=default + + +# build +.build-impl: .build-pre + ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf + + +# clean +.clean-impl: .clean-pre + ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf + +# clobber +.clobber-impl: .clobber-pre .depcheck-impl + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default clean + + + +# all +.all-impl: .all-pre .depcheck-impl + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default build + + + +# dependency checking support +.depcheck-impl: +# @echo "# This code depends on make tool being used" >.dep.inc +# @if [ -n "${MAKE_VERSION}" ]; then \ +# echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \ +# echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ +# echo "include \$${DEPFILES}" >>.dep.inc; \ +# echo "endif" >>.dep.inc; \ +# else \ +# echo ".KEEP_STATE:" >>.dep.inc; \ +# echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ +# fi diff --git a/mcapi/zlib.X/nbproject/Makefile-local-default.mk b/mcapi/zlib.X/nbproject/Makefile-local-default.mk new file mode 100644 index 000000000..2d8424143 --- /dev/null +++ b/mcapi/zlib.X/nbproject/Makefile-local-default.mk @@ -0,0 +1,37 @@ +# +# Generated Makefile - do not edit! +# +# +# This file contains information about the location of compilers and other tools. +# If you commmit this file into your revision control server, you will be able to +# to checkout the project and build it from the command line with make. However, +# if more than one person works on the same project, then this file might show +# conflicts since different users are bound to have compilers in different places. +# In that case you might choose to not commit this file and let MPLAB X recreate this file +# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at +# least once so the file gets created and the project can be built. Finally, you can also +# avoid using this file at all if you are only building from the command line with make. +# You can invoke make with the values of the macros: +# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ... +# +SHELL=cmd.exe +PATH_TO_IDE_BIN=C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/ +# Adding MPLAB X bin directory to path. +PATH:=C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/:$(PATH) +# Path to java used to run MPLAB X when this makefile was created +MP_JAVA_PATH="C:\Program Files (x86)\Microchip\MPLABX-v1.95.RC3\sys\java\jre1.7.0_25-windows-x64\java-windows/bin/" +OS_CURRENT="$(shell uname -s)" +MP_CC="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin\xc32-gcc.exe" +MP_CPPC="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin\xc32-g++.exe" +# MP_BC is not defined +MP_AS="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin\xc32-as.exe" +MP_LD="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin\xc32-ld.exe" +MP_AR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin\xc32-ar.exe" +DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar" +MP_CC_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin" +MP_CPPC_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin" +# MP_BC_DIR is not defined +MP_AS_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin" +MP_LD_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin" +MP_AR_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30-TC9\bin" +# MP_BC_DIR is not defined diff --git a/mcapi/zlib.X/nbproject/Makefile-variables.mk b/mcapi/zlib.X/nbproject/Makefile-variables.mk new file mode 100644 index 000000000..6d21f14b9 --- /dev/null +++ b/mcapi/zlib.X/nbproject/Makefile-variables.mk @@ -0,0 +1,13 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +CND_BASEDIR=`pwd` +# default configuration +CND_ARTIFACT_DIR_default=dist/default/production +CND_ARTIFACT_NAME_default=zlib.X.a +CND_ARTIFACT_PATH_default=dist/default/production/zlib.X.a +CND_PACKAGE_DIR_default=${CND_DISTDIR}/default/package +CND_PACKAGE_NAME_default=zlib.X.tar +CND_PACKAGE_PATH_default=${CND_DISTDIR}/default/package/zlib.X.tar diff --git a/mcapi/zlib.X/nbproject/Package-default.bash b/mcapi/zlib.X/nbproject/Package-default.bash new file mode 100644 index 000000000..66c5b0bd9 --- /dev/null +++ b/mcapi/zlib.X/nbproject/Package-default.bash @@ -0,0 +1,73 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_CONF=default +CND_DISTDIR=dist +TMPDIR=build/${CND_CONF}/${IMAGE_TYPE}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=dist/${CND_CONF}/${IMAGE_TYPE}/zlib.X.${OUTPUT_SUFFIX} +OUTPUT_BASENAME=zlib.X.${OUTPUT_SUFFIX} +PACKAGE_TOP_DIR=zlib.X/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/package +rm -rf ${TMPDIR} +mkdir -p ${TMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory ${TMPDIR}/zlib.X/lib +copyFileToTmpDir "${OUTPUT_PATH}" "${TMPDIR}/${PACKAGE_TOP_DIR}lib/${OUTPUT_BASENAME}" 0644 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/package/zlib.X.tar +cd ${TMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/package/zlib.X.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${TMPDIR} diff --git a/mplabx/PIC32MZ-Putc.c b/mplabx/PIC32MZ-Putc.c deleted file mode 100644 index d77c4794d..000000000 --- a/mplabx/PIC32MZ-Putc.c +++ /dev/null @@ -1,10 +0,0 @@ - -#ifdef MICROCHIP_PIC32 -#if defined (__32MZ2048ECH144__) || defined (__32MZ2048ECM144__) -void _mon_putc (char c) -{ - while (U2STAbits.UTXBF); - U2TXREG = c; -} -#endif -#endif \ No newline at end of file diff --git a/mplabx/benchmark_main.c b/mplabx/benchmark_main.c index f9c0bdaef..de98d44d3 100644 --- a/mplabx/benchmark_main.c +++ b/mplabx/benchmark_main.c @@ -18,6 +18,13 @@ * 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 + #if defined(CYASSL_MICROCHIP_PIC32MZ) #define MICROCHIP_PIC32 #include diff --git a/mplabx/crypto.h b/mplabx/crypto.h new file mode 100644 index 000000000..76dccadff --- /dev/null +++ b/mplabx/crypto.h @@ -0,0 +1,82 @@ +/* + * File: crypto.h + * Author: C15009 + * + * Created on July 23, 2013, 12:26 PM + */ + +#ifndef CRYPTO_H +#define CRYPTO_H + +#ifdef __cplusplus +extern "C" { +#endif + + typedef struct saCtrl { + unsigned int CRYPTOALGO : 4; + unsigned int MULTITASK : 3; + unsigned int KEYSIZE : 2; + unsigned int ENCTYPE : 1; + unsigned int ALGO : 7; + unsigned int : 3; + unsigned int FLAGS : 1; + unsigned int FB : 1; + unsigned int LOADIV : 1; + unsigned int LNC : 1; + unsigned int IRFLAG : 1; + unsigned int ICVONLY : 1; + unsigned int OR_EN : 1; + unsigned int NO_RX : 1; + unsigned int : 1; + unsigned int VERIFY : 1; + unsigned int : 2; + } saCtrl; + + typedef struct securityAssociation { + saCtrl SA_CTRL; + unsigned int SA_AUTHKEY[8]; + unsigned int SA_ENCKEY[8]; + unsigned int SA_AUTHIV[8]; + unsigned int SA_ENCIV[4]; + } securityAssociation; + + typedef struct bdCtrl { + unsigned int BUFLEN : 16; + unsigned int CBD_INT_EN : 1; + unsigned int PKT_INT_EN : 1; + unsigned int LIFM : 1; + unsigned int LAST_BD: 1; + unsigned int : 2; + unsigned int SA_FETCH_EN : 1; + unsigned int : 4; + unsigned int CRY_MODE: 3; + unsigned int : 1; + unsigned int DESC_EN : 1; + /* Naveen did this + unsigned int CRDMA_EN: 1; + unsigned int UPD_RES : 1; + unsigned int SA_FETCH_EN : 1; + unsigned int SEC_CODE : 1; + unsigned int : 7; + unsigned int DESC_EN : 1; */ + } bdCtrl; + + typedef struct bufferDescriptor { + bdCtrl BD_CTRL; +// unsigned int BD_CTRL; + unsigned int SA_ADDR; + unsigned int SRCADDR; + unsigned int DSTADDR; + unsigned int NXTPTR; + unsigned int UPDPTR; + unsigned int MSGLEN; + unsigned int ENCOFF; + } bufferDescriptor; + + +#ifdef __cplusplus +} +#endif + +#endif /* CRYPTO_H */ + diff --git a/mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-default.mk b/mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-default.mk new file mode 100644 index 000000000..2ca7717ba --- /dev/null +++ b/mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-default.mk @@ -0,0 +1,162 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Include project Makefile +ifeq "${IGNORE_LOCAL}" "TRUE" +# do not include local makefile. User is passing all local related variables already +else +include Makefile +# Include makefile containing local settings +ifeq "$(wildcard nbproject/Makefile-local-default.mk)" "nbproject/Makefile-local-default.mk" +include nbproject/Makefile-local-default.mk +endif +endif + +# Environment +MKDIR=gnumkdir -p +RM=rm -f +MV=mv +CP=cp + +# Macros +CND_CONF=default +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +IMAGE_TYPE=debug +OUTPUT_SUFFIX=elf +DEBUGGABLE_SUFFIX=elf +FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_benchmark.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +else +IMAGE_TYPE=production +OUTPUT_SUFFIX=hex +DEBUGGABLE_SUFFIX=elf +FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_benchmark.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +endif + +# Object Directory +OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE} + +# Distribution Directory +DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} + +# Source Files Quoted if spaced +SOURCEFILES_QUOTED_IF_SPACED=../../ctaocrypt/benchmark/benchmark.c ../benchmark_main.c + +# Object Files Quoted if spaced +OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/_ext/2132364733/benchmark.o ${OBJECTDIR}/_ext/1472/benchmark_main.o +POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/2132364733/benchmark.o.d ${OBJECTDIR}/_ext/1472/benchmark_main.o.d + +# Object Files +OBJECTFILES=${OBJECTDIR}/_ext/2132364733/benchmark.o ${OBJECTDIR}/_ext/1472/benchmark_main.o + +# Source Files +SOURCEFILES=../../ctaocrypt/benchmark/benchmark.c ../benchmark_main.c + + +CFLAGS= +ASFLAGS= +LDLIBSOPTIONS= + +############# Tool locations ########################################## +# If you copy a project from one host to another, the path where the # +# compiler is installed may be different. # +# If you open this project with MPLAB X in the new host, this # +# makefile will be regenerated and the paths will be corrected. # +####################################################################### +# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build +FIXDEPS=fixDeps + +.build-conf: ${BUILD_SUBPROJECTS} + ${MAKE} ${MAKE_OPTIONS} -f nbproject/Makefile-default.mk dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_benchmark.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} + +MP_PROCESSOR_OPTION=32MZ2048ECM144 +MP_LINKER_FILE_OPTION= +# ------------------------------------------------------------------------------------ +# Rules for buildStep: assemble +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: assembleWithPreprocess +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: compile +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +${OBJECTDIR}/_ext/2132364733/benchmark.o: ../../ctaocrypt/benchmark/benchmark.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/2132364733 + @${RM} ${OBJECTDIR}/_ext/2132364733/benchmark.o.d + @${RM} ${OBJECTDIR}/_ext/2132364733/benchmark.o + @${FIXDEPS} "${OBJECTDIR}/_ext/2132364733/benchmark.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O1 -DNO_MAIN_DRIVER -DUSE_CERT_BUFFERS_1024 -DBENCH_EMBEDDED -DHAVE_ECC -DCYASSL_SHA512 -I"../../" -MMD -MF "${OBJECTDIR}/_ext/2132364733/benchmark.o.d" -o ${OBJECTDIR}/_ext/2132364733/benchmark.o ../../ctaocrypt/benchmark/benchmark.c + +${OBJECTDIR}/_ext/1472/benchmark_main.o: ../benchmark_main.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1472 + @${RM} ${OBJECTDIR}/_ext/1472/benchmark_main.o.d + @${RM} ${OBJECTDIR}/_ext/1472/benchmark_main.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1472/benchmark_main.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O1 -DNO_MAIN_DRIVER -DUSE_CERT_BUFFERS_1024 -DBENCH_EMBEDDED -DHAVE_ECC -DCYASSL_SHA512 -I"../../" -MMD -MF "${OBJECTDIR}/_ext/1472/benchmark_main.o.d" -o ${OBJECTDIR}/_ext/1472/benchmark_main.o ../benchmark_main.c + +else +${OBJECTDIR}/_ext/2132364733/benchmark.o: ../../ctaocrypt/benchmark/benchmark.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/2132364733 + @${RM} ${OBJECTDIR}/_ext/2132364733/benchmark.o.d + @${RM} ${OBJECTDIR}/_ext/2132364733/benchmark.o + @${FIXDEPS} "${OBJECTDIR}/_ext/2132364733/benchmark.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O1 -DNO_MAIN_DRIVER -DUSE_CERT_BUFFERS_1024 -DBENCH_EMBEDDED -DHAVE_ECC -DCYASSL_SHA512 -I"../../" -MMD -MF "${OBJECTDIR}/_ext/2132364733/benchmark.o.d" -o ${OBJECTDIR}/_ext/2132364733/benchmark.o ../../ctaocrypt/benchmark/benchmark.c + +${OBJECTDIR}/_ext/1472/benchmark_main.o: ../benchmark_main.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1472 + @${RM} ${OBJECTDIR}/_ext/1472/benchmark_main.o.d + @${RM} ${OBJECTDIR}/_ext/1472/benchmark_main.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1472/benchmark_main.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O1 -DNO_MAIN_DRIVER -DUSE_CERT_BUFFERS_1024 -DBENCH_EMBEDDED -DHAVE_ECC -DCYASSL_SHA512 -I"../../" -MMD -MF "${OBJECTDIR}/_ext/1472/benchmark_main.o.d" -o ${OBJECTDIR}/_ext/1472/benchmark_main.o ../benchmark_main.c + +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: compileCPP +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: link +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_benchmark.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk ../cyassl.X/dist/default/debug/cyassl.X.a + @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} + ${MP_CC} $(MP_EXTRA_LD_PRE) -mdebugger -D__MPLAB_DEBUGGER_PK3=1 -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -o dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_benchmark.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} ..\cyassl.X\dist\default\debug\cyassl.X.a -mreserve=data@0x0:0x27F -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,--defsym=__MPLAB_DEBUGGER_PK3=1,--defsym=_min_heap_size=20480,--defsym=_min_stack_size=20480 + +else +dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_benchmark.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk ../cyassl.X/dist/default/production/cyassl.X.a + @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} + ${MP_CC} $(MP_EXTRA_LD_PRE) -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -o dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_benchmark.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} ..\cyassl.X\dist\default\production\cyassl.X.a -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=_min_heap_size=20480,--defsym=_min_stack_size=20480 + ${MP_CC_DIR}\\xc32-bin2hex dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_benchmark.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} +endif + + +# Subprojects +.build-subprojects: + cd /D ../cyassl.X && ${MAKE} MAKE_OPTIONS="" -f Makefile CONF=default + + +# Subprojects +.clean-subprojects: + cd /D ../cyassl.X && rm -rf "build/default" "dist/default" + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r build/default + ${RM} -r dist/default + +# Enable dependency checking +.dep.inc: .depcheck-impl + +DEPFILES=$(shell mplabwildcard ${POSSIBLE_DEPFILES}) +ifneq (${DEPFILES},) +include ${DEPFILES} +endif diff --git a/mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-genesis.properties b/mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-genesis.properties new file mode 100644 index 000000000..996a3b7f3 --- /dev/null +++ b/mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-genesis.properties @@ -0,0 +1,8 @@ +# +#Tue Mar 04 21:07:46 JST 2014 +default.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=cd6a1e93a26f632c22d91cbbe4deaf2c +default.languagetoolchain.dir=C\:\\Program Files (x86)\\Microchip\\xc32\\v1.30\\bin +com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=43bd1633f14a944b6e95abd1333fdfc3 +default.languagetoolchain.version=1.30 +host.platform=windows +conf.ids=default diff --git a/mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-impl.mk b/mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-impl.mk new file mode 100644 index 000000000..3d6aa0df3 --- /dev/null +++ b/mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-impl.mk @@ -0,0 +1,69 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a pre- and a post- target defined where you can add customization code. +# +# This makefile implements macros and targets common to all configurations. +# +# NOCDDL + + +# Building and Cleaning subprojects are done by default, but can be controlled with the SUB +# macro. If SUB=no, subprojects will not be built or cleaned. The following macro +# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf +# and .clean-reqprojects-conf unless SUB has the value 'no' +SUB_no=NO +SUBPROJECTS=${SUB_${SUB}} +BUILD_SUBPROJECTS_=.build-subprojects +BUILD_SUBPROJECTS_NO= +BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} +CLEAN_SUBPROJECTS_=.clean-subprojects +CLEAN_SUBPROJECTS_NO= +CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} + + +# Project Name +PROJECTNAME=ctaocrypt_benchmark.X + +# Active Configuration +DEFAULTCONF=default +CONF=${DEFAULTCONF} + +# All Configurations +ALLCONFS=default + + +# build +.build-impl: .build-pre + ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf + + +# clean +.clean-impl: .clean-pre + ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf + +# clobber +.clobber-impl: .clobber-pre .depcheck-impl + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default clean + + + +# all +.all-impl: .all-pre .depcheck-impl + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default build + + + +# dependency checking support +.depcheck-impl: +# @echo "# This code depends on make tool being used" >.dep.inc +# @if [ -n "${MAKE_VERSION}" ]; then \ +# echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \ +# echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ +# echo "include \$${DEPFILES}" >>.dep.inc; \ +# echo "endif" >>.dep.inc; \ +# else \ +# echo ".KEEP_STATE:" >>.dep.inc; \ +# echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ +# fi diff --git a/mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-local-default.mk b/mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-local-default.mk new file mode 100644 index 000000000..3350f874d --- /dev/null +++ b/mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-local-default.mk @@ -0,0 +1,37 @@ +# +# Generated Makefile - do not edit! +# +# +# This file contains information about the location of compilers and other tools. +# If you commmit this file into your revision control server, you will be able to +# to checkout the project and build it from the command line with make. However, +# if more than one person works on the same project, then this file might show +# conflicts since different users are bound to have compilers in different places. +# In that case you might choose to not commit this file and let MPLAB X recreate this file +# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at +# least once so the file gets created and the project can be built. Finally, you can also +# avoid using this file at all if you are only building from the command line with make. +# You can invoke make with the values of the macros: +# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ... +# +SHELL=cmd.exe +PATH_TO_IDE_BIN=C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/ +# Adding MPLAB X bin directory to path. +PATH:=C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/:$(PATH) +# Path to java used to run MPLAB X when this makefile was created +MP_JAVA_PATH="C:\Program Files (x86)\Microchip\MPLABX-v1.95.RC3\sys\java\jre1.7.0_25-windows-x64\java-windows/bin/" +OS_CURRENT="$(shell uname -s)" +MP_CC="C:\Program Files (x86)\Microchip\xc32\v1.30\bin\xc32-gcc.exe" +MP_CPPC="C:\Program Files (x86)\Microchip\xc32\v1.30\bin\xc32-g++.exe" +# MP_BC is not defined +MP_AS="C:\Program Files (x86)\Microchip\xc32\v1.30\bin\xc32-as.exe" +MP_LD="C:\Program Files (x86)\Microchip\xc32\v1.30\bin\xc32-ld.exe" +MP_AR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin\xc32-ar.exe" +DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar" +MP_CC_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin" +MP_CPPC_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin" +# MP_BC_DIR is not defined +MP_AS_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin" +MP_LD_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin" +MP_AR_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin" +# MP_BC_DIR is not defined diff --git a/mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-variables.mk b/mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-variables.mk new file mode 100644 index 000000000..479dfc45e --- /dev/null +++ b/mplabx/ctaocrypt_benchmark.X/nbproject/Makefile-variables.mk @@ -0,0 +1,13 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +CND_BASEDIR=`pwd` +# default configuration +CND_ARTIFACT_DIR_default=dist/default/production +CND_ARTIFACT_NAME_default=ctaocrypt_benchmark.X.production.hex +CND_ARTIFACT_PATH_default=dist/default/production/ctaocrypt_benchmark.X.production.hex +CND_PACKAGE_DIR_default=${CND_DISTDIR}/default/package +CND_PACKAGE_NAME_default=ctaocryptbenchmark.x.tar +CND_PACKAGE_PATH_default=${CND_DISTDIR}/default/package/ctaocryptbenchmark.x.tar diff --git a/mplabx/ctaocrypt_benchmark.X/nbproject/Package-default.bash b/mplabx/ctaocrypt_benchmark.X/nbproject/Package-default.bash new file mode 100644 index 000000000..869e322bf --- /dev/null +++ b/mplabx/ctaocrypt_benchmark.X/nbproject/Package-default.bash @@ -0,0 +1,73 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_CONF=default +CND_DISTDIR=dist +TMPDIR=build/${CND_CONF}/${IMAGE_TYPE}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_benchmark.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +OUTPUT_BASENAME=ctaocrypt_benchmark.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +PACKAGE_TOP_DIR=ctaocryptbenchmark.x/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/package +rm -rf ${TMPDIR} +mkdir -p ${TMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory ${TMPDIR}/ctaocryptbenchmark.x/bin +copyFileToTmpDir "${OUTPUT_PATH}" "${TMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/package/ctaocryptbenchmark.x.tar +cd ${TMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/package/ctaocryptbenchmark.x.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${TMPDIR} diff --git a/mplabx/ctaocrypt_benchmark.X/nbproject/configurations.xml b/mplabx/ctaocrypt_benchmark.X/nbproject/configurations.xml index 1b9409815..e752de2df 100644 --- a/mplabx/ctaocrypt_benchmark.X/nbproject/configurations.xml +++ b/mplabx/ctaocrypt_benchmark.X/nbproject/configurations.xml @@ -29,10 +29,10 @@ localhost - PIC32MX795F512L + PIC32MZ2048ECM144 - SKDEPIC32PlatformTool + PKOBSKDEPlatformTool XC32 1.30 3 @@ -166,8 +166,28 @@ - - + + + + + + + + + + + + + + + + + + + + + diff --git a/mplabx/ctaocrypt_benchmark.X/nbproject/include.am b/mplabx/ctaocrypt_benchmark.X/nbproject/include.am index 567fbba38..9af74c3b8 100644 --- a/mplabx/ctaocrypt_benchmark.X/nbproject/include.am +++ b/mplabx/ctaocrypt_benchmark.X/nbproject/include.am @@ -3,8 +3,7 @@ # EXTRA_DIST += \ - mplabx/ctaocrypt_benchmark.X/Makefile \ - mplabx/ctaocrypt_benchmark.X/main.c + mplabx/ctaocrypt_benchmark.X/Makefile EXTRA_DIST += \ mplabx/ctaocrypt_benchmark.X/nbproject/configurations.xml \ diff --git a/mplabx/ctaocrypt_benchmark.X/nbproject/private/private.xml b/mplabx/ctaocrypt_benchmark.X/nbproject/private/private.xml new file mode 100644 index 000000000..e39667075 --- /dev/null +++ b/mplabx/ctaocrypt_benchmark.X/nbproject/private/private.xml @@ -0,0 +1,3 @@ + + + diff --git a/mplabx/ctaocrypt_test.X/nbproject/Makefile-default.mk b/mplabx/ctaocrypt_test.X/nbproject/Makefile-default.mk new file mode 100644 index 000000000..0b3936f76 --- /dev/null +++ b/mplabx/ctaocrypt_test.X/nbproject/Makefile-default.mk @@ -0,0 +1,162 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Include project Makefile +ifeq "${IGNORE_LOCAL}" "TRUE" +# do not include local makefile. User is passing all local related variables already +else +include Makefile +# Include makefile containing local settings +ifeq "$(wildcard nbproject/Makefile-local-default.mk)" "nbproject/Makefile-local-default.mk" +include nbproject/Makefile-local-default.mk +endif +endif + +# Environment +MKDIR=gnumkdir -p +RM=rm -f +MV=mv +CP=cp + +# Macros +CND_CONF=default +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +IMAGE_TYPE=debug +OUTPUT_SUFFIX=elf +DEBUGGABLE_SUFFIX=elf +FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +else +IMAGE_TYPE=production +OUTPUT_SUFFIX=hex +DEBUGGABLE_SUFFIX=elf +FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +endif + +# Object Directory +OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE} + +# Distribution Directory +DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} + +# Source Files Quoted if spaced +SOURCEFILES_QUOTED_IF_SPACED=../../ctaocrypt/test/test.c ../test_main.c + +# Object Files Quoted if spaced +OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/_ext/1679622190/test.o ${OBJECTDIR}/_ext/1472/test_main.o +POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/1679622190/test.o.d ${OBJECTDIR}/_ext/1472/test_main.o.d + +# Object Files +OBJECTFILES=${OBJECTDIR}/_ext/1679622190/test.o ${OBJECTDIR}/_ext/1472/test_main.o + +# Source Files +SOURCEFILES=../../ctaocrypt/test/test.c ../test_main.c + + +CFLAGS= +ASFLAGS= +LDLIBSOPTIONS= + +############# Tool locations ########################################## +# If you copy a project from one host to another, the path where the # +# compiler is installed may be different. # +# If you open this project with MPLAB X in the new host, this # +# makefile will be regenerated and the paths will be corrected. # +####################################################################### +# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build +FIXDEPS=fixDeps + +.build-conf: ${BUILD_SUBPROJECTS} + ${MAKE} ${MAKE_OPTIONS} -f nbproject/Makefile-default.mk dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} + +MP_PROCESSOR_OPTION=32MZ2048ECM144 +MP_LINKER_FILE_OPTION= +# ------------------------------------------------------------------------------------ +# Rules for buildStep: assemble +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: assembleWithPreprocess +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: compile +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +${OBJECTDIR}/_ext/1679622190/test.o: ../../ctaocrypt/test/test.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1679622190 + @${RM} ${OBJECTDIR}/_ext/1679622190/test.o.d + @${RM} ${OBJECTDIR}/_ext/1679622190/test.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1679622190/test.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DNO_MAIN_DRIVER -DUSE_CERT_BUFFERS_1024 -DCYASSL_SHA384 -DCYASSL_SHA512 -DHAVE_ECC -I"../../" -MMD -MF "${OBJECTDIR}/_ext/1679622190/test.o.d" -o ${OBJECTDIR}/_ext/1679622190/test.o ../../ctaocrypt/test/test.c + +${OBJECTDIR}/_ext/1472/test_main.o: ../test_main.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1472 + @${RM} ${OBJECTDIR}/_ext/1472/test_main.o.d + @${RM} ${OBJECTDIR}/_ext/1472/test_main.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1472/test_main.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DNO_MAIN_DRIVER -DUSE_CERT_BUFFERS_1024 -DCYASSL_SHA384 -DCYASSL_SHA512 -DHAVE_ECC -I"../../" -MMD -MF "${OBJECTDIR}/_ext/1472/test_main.o.d" -o ${OBJECTDIR}/_ext/1472/test_main.o ../test_main.c + +else +${OBJECTDIR}/_ext/1679622190/test.o: ../../ctaocrypt/test/test.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1679622190 + @${RM} ${OBJECTDIR}/_ext/1679622190/test.o.d + @${RM} ${OBJECTDIR}/_ext/1679622190/test.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1679622190/test.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DNO_MAIN_DRIVER -DUSE_CERT_BUFFERS_1024 -DCYASSL_SHA384 -DCYASSL_SHA512 -DHAVE_ECC -I"../../" -MMD -MF "${OBJECTDIR}/_ext/1679622190/test.o.d" -o ${OBJECTDIR}/_ext/1679622190/test.o ../../ctaocrypt/test/test.c + +${OBJECTDIR}/_ext/1472/test_main.o: ../test_main.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1472 + @${RM} ${OBJECTDIR}/_ext/1472/test_main.o.d + @${RM} ${OBJECTDIR}/_ext/1472/test_main.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1472/test_main.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DNO_MAIN_DRIVER -DUSE_CERT_BUFFERS_1024 -DCYASSL_SHA384 -DCYASSL_SHA512 -DHAVE_ECC -I"../../" -MMD -MF "${OBJECTDIR}/_ext/1472/test_main.o.d" -o ${OBJECTDIR}/_ext/1472/test_main.o ../test_main.c + +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: compileCPP +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: link +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk ../cyassl.X/dist/default/debug/cyassl.X.a + @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} + ${MP_CC} $(MP_EXTRA_LD_PRE) -mdebugger -D__MPLAB_DEBUGGER_PK3=1 -mprocessor=$(MP_PROCESSOR_OPTION) -Os -o dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} ..\cyassl.X\dist\default\debug\cyassl.X.a -mreserve=data@0x0:0x27F -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,--defsym=__MPLAB_DEBUGGER_PK3=1,--defsym=_min_heap_size=20480,--gc-sections + +else +dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk ../cyassl.X/dist/default/production/cyassl.X.a + @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} + ${MP_CC} $(MP_EXTRA_LD_PRE) -mprocessor=$(MP_PROCESSOR_OPTION) -Os -o dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} ..\cyassl.X\dist\default\production\cyassl.X.a -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=_min_heap_size=20480,--gc-sections + ${MP_CC_DIR}\\xc32-bin2hex dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} +endif + + +# Subprojects +.build-subprojects: + cd /D ../cyassl.X && ${MAKE} MAKE_OPTIONS="" -f Makefile CONF=default + + +# Subprojects +.clean-subprojects: + cd /D ../cyassl.X && rm -rf "build/default" "dist/default" + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r build/default + ${RM} -r dist/default + +# Enable dependency checking +.dep.inc: .depcheck-impl + +DEPFILES=$(shell mplabwildcard ${POSSIBLE_DEPFILES}) +ifneq (${DEPFILES},) +include ${DEPFILES} +endif diff --git a/mplabx/ctaocrypt_test.X/nbproject/Makefile-genesis.properties b/mplabx/ctaocrypt_test.X/nbproject/Makefile-genesis.properties new file mode 100644 index 000000000..f6865cdde --- /dev/null +++ b/mplabx/ctaocrypt_test.X/nbproject/Makefile-genesis.properties @@ -0,0 +1,8 @@ +# +#Tue Mar 04 21:12:11 JST 2014 +default.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=cd6a1e93a26f632c22d91cbbe4deaf2c +default.languagetoolchain.dir=C\:\\Program Files (x86)\\Microchip\\xc32\\v1.30\\bin +com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=43bd1633f14a944b6e95abd1333fdfc3 +default.languagetoolchain.version=1.30 +host.platform=windows +conf.ids=default diff --git a/mplabx/ctaocrypt_test.X/nbproject/Makefile-impl.mk b/mplabx/ctaocrypt_test.X/nbproject/Makefile-impl.mk new file mode 100644 index 000000000..32630f76c --- /dev/null +++ b/mplabx/ctaocrypt_test.X/nbproject/Makefile-impl.mk @@ -0,0 +1,69 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a pre- and a post- target defined where you can add customization code. +# +# This makefile implements macros and targets common to all configurations. +# +# NOCDDL + + +# Building and Cleaning subprojects are done by default, but can be controlled with the SUB +# macro. If SUB=no, subprojects will not be built or cleaned. The following macro +# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf +# and .clean-reqprojects-conf unless SUB has the value 'no' +SUB_no=NO +SUBPROJECTS=${SUB_${SUB}} +BUILD_SUBPROJECTS_=.build-subprojects +BUILD_SUBPROJECTS_NO= +BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} +CLEAN_SUBPROJECTS_=.clean-subprojects +CLEAN_SUBPROJECTS_NO= +CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} + + +# Project Name +PROJECTNAME=ctaocrypt_test.X + +# Active Configuration +DEFAULTCONF=default +CONF=${DEFAULTCONF} + +# All Configurations +ALLCONFS=default + + +# build +.build-impl: .build-pre + ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf + + +# clean +.clean-impl: .clean-pre + ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf + +# clobber +.clobber-impl: .clobber-pre .depcheck-impl + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default clean + + + +# all +.all-impl: .all-pre .depcheck-impl + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default build + + + +# dependency checking support +.depcheck-impl: +# @echo "# This code depends on make tool being used" >.dep.inc +# @if [ -n "${MAKE_VERSION}" ]; then \ +# echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \ +# echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ +# echo "include \$${DEPFILES}" >>.dep.inc; \ +# echo "endif" >>.dep.inc; \ +# else \ +# echo ".KEEP_STATE:" >>.dep.inc; \ +# echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ +# fi diff --git a/mplabx/ctaocrypt_test.X/nbproject/Makefile-local-default.mk b/mplabx/ctaocrypt_test.X/nbproject/Makefile-local-default.mk new file mode 100644 index 000000000..3350f874d --- /dev/null +++ b/mplabx/ctaocrypt_test.X/nbproject/Makefile-local-default.mk @@ -0,0 +1,37 @@ +# +# Generated Makefile - do not edit! +# +# +# This file contains information about the location of compilers and other tools. +# If you commmit this file into your revision control server, you will be able to +# to checkout the project and build it from the command line with make. However, +# if more than one person works on the same project, then this file might show +# conflicts since different users are bound to have compilers in different places. +# In that case you might choose to not commit this file and let MPLAB X recreate this file +# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at +# least once so the file gets created and the project can be built. Finally, you can also +# avoid using this file at all if you are only building from the command line with make. +# You can invoke make with the values of the macros: +# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ... +# +SHELL=cmd.exe +PATH_TO_IDE_BIN=C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/ +# Adding MPLAB X bin directory to path. +PATH:=C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/:$(PATH) +# Path to java used to run MPLAB X when this makefile was created +MP_JAVA_PATH="C:\Program Files (x86)\Microchip\MPLABX-v1.95.RC3\sys\java\jre1.7.0_25-windows-x64\java-windows/bin/" +OS_CURRENT="$(shell uname -s)" +MP_CC="C:\Program Files (x86)\Microchip\xc32\v1.30\bin\xc32-gcc.exe" +MP_CPPC="C:\Program Files (x86)\Microchip\xc32\v1.30\bin\xc32-g++.exe" +# MP_BC is not defined +MP_AS="C:\Program Files (x86)\Microchip\xc32\v1.30\bin\xc32-as.exe" +MP_LD="C:\Program Files (x86)\Microchip\xc32\v1.30\bin\xc32-ld.exe" +MP_AR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin\xc32-ar.exe" +DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar" +MP_CC_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin" +MP_CPPC_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin" +# MP_BC_DIR is not defined +MP_AS_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin" +MP_LD_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin" +MP_AR_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin" +# MP_BC_DIR is not defined diff --git a/mplabx/ctaocrypt_test.X/nbproject/Makefile-variables.mk b/mplabx/ctaocrypt_test.X/nbproject/Makefile-variables.mk new file mode 100644 index 000000000..09fbeab2d --- /dev/null +++ b/mplabx/ctaocrypt_test.X/nbproject/Makefile-variables.mk @@ -0,0 +1,13 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +CND_BASEDIR=`pwd` +# default configuration +CND_ARTIFACT_DIR_default=dist/default/production +CND_ARTIFACT_NAME_default=ctaocrypt_test.X.production.hex +CND_ARTIFACT_PATH_default=dist/default/production/ctaocrypt_test.X.production.hex +CND_PACKAGE_DIR_default=${CND_DISTDIR}/default/package +CND_PACKAGE_NAME_default=ctaocrypttest.x.tar +CND_PACKAGE_PATH_default=${CND_DISTDIR}/default/package/ctaocrypttest.x.tar diff --git a/mplabx/ctaocrypt_test.X/nbproject/Package-default.bash b/mplabx/ctaocrypt_test.X/nbproject/Package-default.bash new file mode 100644 index 000000000..24387c9d2 --- /dev/null +++ b/mplabx/ctaocrypt_test.X/nbproject/Package-default.bash @@ -0,0 +1,73 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_CONF=default +CND_DISTDIR=dist +TMPDIR=build/${CND_CONF}/${IMAGE_TYPE}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=dist/${CND_CONF}/${IMAGE_TYPE}/ctaocrypt_test.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +OUTPUT_BASENAME=ctaocrypt_test.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +PACKAGE_TOP_DIR=ctaocrypttest.x/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/package +rm -rf ${TMPDIR} +mkdir -p ${TMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory ${TMPDIR}/ctaocrypttest.x/bin +copyFileToTmpDir "${OUTPUT_PATH}" "${TMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/package/ctaocrypttest.x.tar +cd ${TMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/package/ctaocrypttest.x.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${TMPDIR} diff --git a/mplabx/ctaocrypt_test.X/nbproject/configurations.xml b/mplabx/ctaocrypt_test.X/nbproject/configurations.xml index de0a4cde1..210ed2136 100644 --- a/mplabx/ctaocrypt_test.X/nbproject/configurations.xml +++ b/mplabx/ctaocrypt_test.X/nbproject/configurations.xml @@ -30,10 +30,10 @@ localhost - PIC32MX795F512L + PIC32MZ2048ECM144 - SKDEPIC32PlatformTool + PKOBSKDEPlatformTool XC32 1.30 3 @@ -167,8 +167,29 @@ - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/mplabx/ctaocrypt_test.X/nbproject/include.am b/mplabx/ctaocrypt_test.X/nbproject/include.am index e7d868de8..ea0df611c 100644 --- a/mplabx/ctaocrypt_test.X/nbproject/include.am +++ b/mplabx/ctaocrypt_test.X/nbproject/include.am @@ -3,8 +3,7 @@ # EXTRA_DIST += \ - mplabx/ctaocrypt_test.X/Makefile \ - mplabx/ctaocrypt_test.X/main.c + mplabx/ctaocrypt_test.X/Makefile EXTRA_DIST += \ mplabx/ctaocrypt_test.X/nbproject/configurations.xml \ diff --git a/mplabx/ctaocrypt_test.X/nbproject/private/SuppressibleMessageMemo.properties b/mplabx/ctaocrypt_test.X/nbproject/private/SuppressibleMessageMemo.properties new file mode 100644 index 000000000..c0bf8789b --- /dev/null +++ b/mplabx/ctaocrypt_test.X/nbproject/private/SuppressibleMessageMemo.properties @@ -0,0 +1,3 @@ +# +#Tue Dec 17 15:03:03 JST 2013 +pkobskde/DEVID_MISMATCH=true diff --git a/mplabx/ctaocrypt_test.X/nbproject/private/private.xml b/mplabx/ctaocrypt_test.X/nbproject/private/private.xml new file mode 100644 index 000000000..e39667075 --- /dev/null +++ b/mplabx/ctaocrypt_test.X/nbproject/private/private.xml @@ -0,0 +1,3 @@ + + + diff --git a/mplabx/cyassl.X/dist/default/production/cyassl.X.a b/mplabx/cyassl.X/dist/default/production/cyassl.X.a new file mode 100644 index 0000000000000000000000000000000000000000..ebe1820e1bdb5d7783add72f9418383312f316c2 GIT binary patch literal 236980 zcmeFadt6l2_wc{x%&3T{sHj+0Gdgp?G#l?|R0ybOYNV)CmRu7OfdCC_G(t)w6Dun! zEAon|Kwh!T$XjGqR%Ui5%`~&Jva+(~d9O1wh(@12-{<%Ip4ab>-+H|c`|N%8oPEyT z>%I2cYvvqm;fXoPY1jB)X+2;1^c&o7;GjYMoCB;@r*Ww9U#qp>0H>$Gn&7XL+NV_O zQ~&)otCv!;%|83@TM6f0-Syn|Mt`Mz+fj}+v6-G&uFl)m>{q77Ta87T8gJWsDU)w| zZ?77^uwWZ$ndaqmq(`WhUp$%Fa`sTy*NWTwYG2W8+ivu1lRI zwLE*#={c#%#-~OkPd|5%OrsBx^POOI}aiE3z0a(~}h*p1D} zN>0tqRne)rQ@q9O_G`2sWn8ozZ*&jdtglVuBj+FPC)FDrmow75@8s-8#U*ALCm)uR zla(_*FDE^7sv4P@o;N-%aZ2u;io|pA-pugy%)|`Y_txn&+PR4h)jhk>xruU#igaRXPWo-LRBCeal6v*K9!N|{X>?$EVzyBsGxg3!r75Y6Kb)JEn3I|^B^Rrd>N#C*YF@7KvFY^M zlxeB6rljVdmp3x$45G1fo7{(7UoMwCB`q;G&B)C(F8o|RH9tEmCvQsr;DP--pPzny z-g`XTqncB)GBZ4Po$jgUE9Y{&jRBdrRaz!S85qLO@N(Wyx@jG`&mk8PrC z_;6z!#-#Lz8lMSZ@0^VoGb4{a5IyzmjRs`T-h|9^`>~PNMGxX~^{v!0Be@LD$Z$yB$mXUQHxyI!%4BRX?YQRdG z%sFy=1u{H&>5`LiB#}`gq1cBEoGhcIbA3XE#(g4ZmA;S@rRH(ZK5g+{KdRDjL;o_kVn&Ty zZ`d)eSLVok>HFL%XoGR%GE&kYYDm&ZYrINvexXObDD!AKJ2EniGq;Na5jE6jol^2L z8m9fJ+{}zz8Trht%p^R3X`Z@~vt-8feIhn>x=em?S<%dFiK)50vl=b-yz9Kaefpih z&g zlqy_M>wY;TGEh^2YH5|*9cgc&B723a?NwoFOI3fhxyq?FRrOLEt3uU=D!W==WmPX! z1*nLiuBy6$y;ACxQm>RcrGBd39HCwgv8Xk6KlQvlKrOYK)#_ri zN}F$1BiN#fSwEI36~&hJgi<4(aI0qF%B_XF)e5_ENA|Z@J52VnW+r>VQDx6hRrZ)} zCVPZtvWFd3_P`{iMfxeNy{6RqPD&fqQmH39C{@UEZAc5H?rN(XWoeot|FFqX{W_H% zTwqZP7B~u8XnyK}1p%sLfl^wywsD}+mh@9vkyB}|E9s+1yI%dKrk7=CdO<5q&p%ATb*#a)#|Mis>RtAd!8N{@fQXYyZ^(~oX|3s(1@uec9JzL73Jy_2zMt)X>Q>`kmFZXd@!%Z) zMdMsD7Rt1keC{0ov@tFjQ>6v!{$V3rM*nKxJNzpqxQwyU4(k5dV_nABXt}z6>O-?0 zd%MX$VYJb|{5Jktx7*L5*Da##d&)LbHeS2ctvXuaBoG$eYII+1Viy(B z?o#^XYnQTczm`!Bo3&7>A)Dv8RsVk4GcA(I*xD!W_{*WkKI8 z+`k1~b2keY-BLqh`TRFdZI9^f*g2w8a?gf7S!4`1_0=A0uPmx~fg7Gghf1EybBPYw zV~3gaga=KAz7DzK9%VsiEsU>)F|cf6f1Iwu(P4B_*wzzDOro2{n2J7I-g1aO%GfH) zV8%^!y99Pi7nH1?;S${w{Vch0noD$9FE7^YWvQB;FyExy2m2c1X<6qG{Z*D@*p!O? zZZ*=bCp>0wrduD;?8V(Q(OuCE(G~x+=`P*+kn#_n>Qe5&zIs@drpMoIvez~<+hgaO z?4iRndqS~Ew=Pol>>VaO^eEiso76bMIY|N7rEX?>*nFkj$xgeqm}8k-%ep=eSkeQR zDm^fYvgsx*?sBDdvoJm_lv(Yqum`7`9ARH7dwiP79y5~j#9)i|)@b1&N?l|&?3{K} zE2Xe=E!1lj7PZUnh@Yk$5#2EN^J=u{P^H;>V*Pj8Td7?Y0cwX`sg#|7+$xMG1S#(=yxn^?~VAoYZjH!b@u98Fw_15{FFFfE)h7mf>3 z%@#CY93nx{I5;twVQw3r00LdcGRS2 zUuo9U+L(3cx3ssH`+lAKW*!_;=knPc|JYFt_b+X0y_+k~{Rf20{p$%QVP%wYul5+b z#~%3ZGr~-MJ{#;M+-K6`_nGwAHSo8W_BPSpM%u%s45{$gb?lg7tFcwe;^z?CtBq~u zY0s}yxL%D7piSl8)K|s_8?4#Oi!>RZl93~^B^x!nv>8#X=@BhWdU={juZ}b6F`H@c znm#Ig&}?O4o*FWM^jBTxpg`53GDvknr-CcHsuq=2)wa^E+En6oRrXTNE1fE!vcGCo z8K(Rz!&S4&2<2B<5Y|~mtDs6{S*gpMBy)|{8(SRM(a-}!2O>JsFQ4@j9ndQ-#sB$I zoi`2@t2Di0CEE&3FMkvrIKVacW1jWrI$LmkG7imWd&c3I-53X%3q|jY_WYDF?$$1z zaj)CTxO>New)DEo&F8gO7h=}ybT$V%_5^c!zNUw@rM+($hZBqgHeU3Mxmntlx!BV- z?V$sr=SF)GZH)Gmds-hoySG{H&mJ3%F1>NSo@MW)Y!BORlc8e?-3btS~a}6_%nzw+p3hRhHOiIOTm72QNLYalK zv+fmkd?4~u*ZScL`Kj~;J;Qc0AI~SBwl;vW0LlW$2apd`MfPvp^+BiH$#!XLk2|7c zpu!)*#^m>@Nl>eK94bO!66JM8~&~M zgF}j3B{z(6mE1AbRr30c_;~oT_)CUQX>fkbZurR96j@Vv=D8Ji!+(>tho#6~^1>Kb z$=1>MYuC9-UX6E^%(~tswzg#T1Xsxu<2^nYbD!9n0;@%pq>pfwBo24UJXd0ib}1A0 zW8!{H_=5Q9hMy?@tofiWZ5#Ju#uiKa;`6ZvGuoFqz?`f5$KxmB?~1P|>nvH%i0>zB z8DouvetXtT_>8jt(&!hBdob2cMRxyF=`QhaWo>1wk-XRG>j(dsRG0XVvJUhQOL571 zK(A#^%>T`#S8UYu>WL=3rn6ZO{fjw#gQi=jYOK37Y?-Equ13GcFml83O@`r{L|2|t zmWAkoqo>tka=8nFL_e-|TPF$!!owLhzN|&p)&G{Rdwi7D*w6~bnlU$glvNFLw8D=# z=OZw0h>tQ5{>4X;`9pjZ<`2ErZ1(sld(QbNwJptJ<4gJsciF`T)cTn%s_jC(wgq!W zbF-gnvrx}JV+v5s7wXw>W6$40XWw*cWAS~$>$o0tRIX{rYaTr_)+c_BK1iw3R2Va&O~L{>JH zy6D%ghA&cK_#%1eNMNd5%w<(OVZU7tRRFOZKOiB2l__w*I(n!q;UdiHm$VObHv zi{S&rypGQ*egHa(FHnHLBPGqy9PTTevh>cIwJRd%;UG_e`jj21HvY;L!C8~#Ju$UD*V?{ z>_H}dAZwPNokmR1X9L22GS)5U=G(80dC?a$l75ibko1AHtygR{)+=__hhhu#@<)ud znqEF1|Nj|HufZpeIgT9|!1XbY6Gy?ntdjK#muNgjYwycpP?jy%!{Ehj~TVG;Q zay(FNMu#?4X`5ThIZCB|SIUgFQ-rLgHf!=(`nAe#U9NRyU;Mg)YNO54k{5_=Q68w4 zbDrg;<&3|*VlKM5taQ2PK*bDCT&sdui?veIgG-cNJylhp7i-apYIJlX<5h$0+J^qs zqLaJOyE?{sANsl8wk4Yw?VSTXjM&@!KRu9eyb~DLU2} z+tY=0^M9J7{8=}*tc*s#Vi^0;jJ4Q1HKY^s$Y&u1F|6|}dvyP5>?@pTy*+DNk4^Wd z&knNQXPqhWh3dWM#!ccVd{3ZP?_t}`_KTsD@x+2+(Jxt7$Dv~~m+5uH7{fxb8E5Ff zujxODDKoDaF-tg=*sq~itapuT@T_-@YY3EU2sYO8#x>OXpTD-oZxa8=n8Ruhv9_+! zup9V^nT+99^ktqgzj)TY61(2*iAT$PCb4E?K4Y$wbvC|~=!DEI$}02OuSTrHSYykY zmuoa)9kS+?xklEztReOIRvtY$wHIC4&V17gefdgTLch!ULimx-2CCKAlhqPu$9AlS z>(0j9AoGxwGRm4=^H3;twC&9lbxZB!m3vShyYZPG4$>+W(K1|z zEjf?$m7G(K%bMDE?Fs0Tv@hpKK^LSx=Pk`cH|%1Ay`MMc7WVa;JGrMxoNG(fTJA@$ zdELx?Ev)9+^_W2>?qT6ZqkItcj%qcOyVW3c^;g|9#}1m^i_ePArJ)ycUrzFrm1Y<| zlc!!bdYq3QyJY^vRuy6Mim`QzuxYaPU5@@bv6F#n1-d(EwpFbxEr<|b;F#_oJHb_f z-4o`8J8dBSX3Vh?lVR;y&@9}}nm`X7W)h#w9t`iH%MD*!XB@3+bEzJ>Qmy4)^w7#!eqsSrm8`wDai6tZ$1ZGTo!3_Gqg{(iU=5N`xs%050BJDsU{$}v zRl|3M^~8K_r)pKOS{V|imW5QSl~pxd`$n~_%8#|{F5<&IgLe}9EudW~UtX%LTKFgQ z(IFT=z&x^FZLF##hWsTlxe7c3Wyh1)T^^xyQ8L19aRZIj`AH!Sv!O~7In~U z)(FiO$`VQ9$Yc-Z`g@ve<29O8ZFd;){hNmAi(T`OfV~WxOe5VIlo}#(mg6nR_eX`_b-v�{C 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%0AACrUYQw3&IW(>nNTVSUS5IsqNq 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 literal 0 HcmV?d00001 diff --git a/mplabx/cyassl.X/nbproject/Makefile-default.mk b/mplabx/cyassl.X/nbproject/Makefile-default.mk new file mode 100644 index 000000000..bffad1ce1 --- /dev/null +++ b/mplabx/cyassl.X/nbproject/Makefile-default.mk @@ -0,0 +1,590 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Include project Makefile +ifeq "${IGNORE_LOCAL}" "TRUE" +# do not include local makefile. User is passing all local related variables already +else +include Makefile +# Include makefile containing local settings +ifeq "$(wildcard nbproject/Makefile-local-default.mk)" "nbproject/Makefile-local-default.mk" +include nbproject/Makefile-local-default.mk +endif +endif + +# Environment +MKDIR=gnumkdir -p +RM=rm -f +MV=mv +CP=cp + +# Macros +CND_CONF=default +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +IMAGE_TYPE=debug +OUTPUT_SUFFIX=a +DEBUGGABLE_SUFFIX= +FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/cyassl.X.${OUTPUT_SUFFIX} +else +IMAGE_TYPE=production +OUTPUT_SUFFIX=a +DEBUGGABLE_SUFFIX= +FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/cyassl.X.${OUTPUT_SUFFIX} +endif + +# Object Directory +OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE} + +# Distribution Directory +DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} + +# Source Files Quoted if spaced +SOURCEFILES_QUOTED_IF_SPACED=../../src/crl.c ../../src/internal.c ../../src/io.c ../../src/keys.c ../../src/ocsp.c ../../src/sniffer.c ../../src/ssl.c ../../src/tls.c ../../ctaocrypt/src/aes.c ../../ctaocrypt/src/arc4.c ../../ctaocrypt/src/asm.c ../../ctaocrypt/src/asn.c ../../ctaocrypt/src/coding.c ../../ctaocrypt/src/des3.c ../../ctaocrypt/src/dh.c ../../ctaocrypt/src/dsa.c ../../ctaocrypt/src/ecc.c ../../ctaocrypt/src/ecc_fp.c ../../ctaocrypt/src/error.c ../../ctaocrypt/src/hc128.c ../../ctaocrypt/src/hmac.c ../../ctaocrypt/src/integer.c ../../ctaocrypt/src/logging.c ../../ctaocrypt/src/md2.c ../../ctaocrypt/src/md4.c ../../ctaocrypt/src/md5.c ../../ctaocrypt/src/memory.c ../../ctaocrypt/src/misc.c ../../ctaocrypt/src/pwdbased.c ../../ctaocrypt/src/rabbit.c ../../ctaocrypt/src/random.c ../../ctaocrypt/src/ripemd.c ../../ctaocrypt/src/rsa.c ../../ctaocrypt/src/sha.c ../../ctaocrypt/src/sha256.c ../../ctaocrypt/src/sha512.c ../../ctaocrypt/src/tfm.c ../../ctaocrypt/src/port.c + +# Object Files Quoted if spaced +OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/_ext/1445274692/crl.o ${OBJECTDIR}/_ext/1445274692/internal.o ${OBJECTDIR}/_ext/1445274692/io.o ${OBJECTDIR}/_ext/1445274692/keys.o ${OBJECTDIR}/_ext/1445274692/ocsp.o ${OBJECTDIR}/_ext/1445274692/sniffer.o ${OBJECTDIR}/_ext/1445274692/ssl.o ${OBJECTDIR}/_ext/1445274692/tls.o ${OBJECTDIR}/_ext/1439655260/aes.o ${OBJECTDIR}/_ext/1439655260/arc4.o ${OBJECTDIR}/_ext/1439655260/asm.o ${OBJECTDIR}/_ext/1439655260/asn.o ${OBJECTDIR}/_ext/1439655260/coding.o ${OBJECTDIR}/_ext/1439655260/des3.o ${OBJECTDIR}/_ext/1439655260/dh.o ${OBJECTDIR}/_ext/1439655260/dsa.o ${OBJECTDIR}/_ext/1439655260/ecc.o ${OBJECTDIR}/_ext/1439655260/ecc_fp.o ${OBJECTDIR}/_ext/1439655260/error.o ${OBJECTDIR}/_ext/1439655260/hc128.o ${OBJECTDIR}/_ext/1439655260/hmac.o ${OBJECTDIR}/_ext/1439655260/integer.o ${OBJECTDIR}/_ext/1439655260/logging.o ${OBJECTDIR}/_ext/1439655260/md2.o ${OBJECTDIR}/_ext/1439655260/md4.o ${OBJECTDIR}/_ext/1439655260/md5.o ${OBJECTDIR}/_ext/1439655260/memory.o ${OBJECTDIR}/_ext/1439655260/misc.o ${OBJECTDIR}/_ext/1439655260/pwdbased.o ${OBJECTDIR}/_ext/1439655260/rabbit.o ${OBJECTDIR}/_ext/1439655260/random.o ${OBJECTDIR}/_ext/1439655260/ripemd.o ${OBJECTDIR}/_ext/1439655260/rsa.o ${OBJECTDIR}/_ext/1439655260/sha.o ${OBJECTDIR}/_ext/1439655260/sha256.o ${OBJECTDIR}/_ext/1439655260/sha512.o ${OBJECTDIR}/_ext/1439655260/tfm.o ${OBJECTDIR}/_ext/1439655260/port.o +POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/1445274692/crl.o.d ${OBJECTDIR}/_ext/1445274692/internal.o.d ${OBJECTDIR}/_ext/1445274692/io.o.d ${OBJECTDIR}/_ext/1445274692/keys.o.d ${OBJECTDIR}/_ext/1445274692/ocsp.o.d ${OBJECTDIR}/_ext/1445274692/sniffer.o.d ${OBJECTDIR}/_ext/1445274692/ssl.o.d ${OBJECTDIR}/_ext/1445274692/tls.o.d ${OBJECTDIR}/_ext/1439655260/aes.o.d ${OBJECTDIR}/_ext/1439655260/arc4.o.d ${OBJECTDIR}/_ext/1439655260/asm.o.d ${OBJECTDIR}/_ext/1439655260/asn.o.d ${OBJECTDIR}/_ext/1439655260/coding.o.d ${OBJECTDIR}/_ext/1439655260/des3.o.d ${OBJECTDIR}/_ext/1439655260/dh.o.d ${OBJECTDIR}/_ext/1439655260/dsa.o.d ${OBJECTDIR}/_ext/1439655260/ecc.o.d ${OBJECTDIR}/_ext/1439655260/ecc_fp.o.d ${OBJECTDIR}/_ext/1439655260/error.o.d ${OBJECTDIR}/_ext/1439655260/hc128.o.d ${OBJECTDIR}/_ext/1439655260/hmac.o.d ${OBJECTDIR}/_ext/1439655260/integer.o.d ${OBJECTDIR}/_ext/1439655260/logging.o.d ${OBJECTDIR}/_ext/1439655260/md2.o.d ${OBJECTDIR}/_ext/1439655260/md4.o.d ${OBJECTDIR}/_ext/1439655260/md5.o.d ${OBJECTDIR}/_ext/1439655260/memory.o.d ${OBJECTDIR}/_ext/1439655260/misc.o.d ${OBJECTDIR}/_ext/1439655260/pwdbased.o.d ${OBJECTDIR}/_ext/1439655260/rabbit.o.d ${OBJECTDIR}/_ext/1439655260/random.o.d ${OBJECTDIR}/_ext/1439655260/ripemd.o.d ${OBJECTDIR}/_ext/1439655260/rsa.o.d ${OBJECTDIR}/_ext/1439655260/sha.o.d ${OBJECTDIR}/_ext/1439655260/sha256.o.d ${OBJECTDIR}/_ext/1439655260/sha512.o.d ${OBJECTDIR}/_ext/1439655260/tfm.o.d ${OBJECTDIR}/_ext/1439655260/port.o.d + +# Object Files +OBJECTFILES=${OBJECTDIR}/_ext/1445274692/crl.o ${OBJECTDIR}/_ext/1445274692/internal.o ${OBJECTDIR}/_ext/1445274692/io.o ${OBJECTDIR}/_ext/1445274692/keys.o ${OBJECTDIR}/_ext/1445274692/ocsp.o ${OBJECTDIR}/_ext/1445274692/sniffer.o ${OBJECTDIR}/_ext/1445274692/ssl.o ${OBJECTDIR}/_ext/1445274692/tls.o ${OBJECTDIR}/_ext/1439655260/aes.o ${OBJECTDIR}/_ext/1439655260/arc4.o ${OBJECTDIR}/_ext/1439655260/asm.o ${OBJECTDIR}/_ext/1439655260/asn.o ${OBJECTDIR}/_ext/1439655260/coding.o ${OBJECTDIR}/_ext/1439655260/des3.o ${OBJECTDIR}/_ext/1439655260/dh.o ${OBJECTDIR}/_ext/1439655260/dsa.o ${OBJECTDIR}/_ext/1439655260/ecc.o ${OBJECTDIR}/_ext/1439655260/ecc_fp.o ${OBJECTDIR}/_ext/1439655260/error.o ${OBJECTDIR}/_ext/1439655260/hc128.o ${OBJECTDIR}/_ext/1439655260/hmac.o ${OBJECTDIR}/_ext/1439655260/integer.o ${OBJECTDIR}/_ext/1439655260/logging.o ${OBJECTDIR}/_ext/1439655260/md2.o ${OBJECTDIR}/_ext/1439655260/md4.o ${OBJECTDIR}/_ext/1439655260/md5.o ${OBJECTDIR}/_ext/1439655260/memory.o ${OBJECTDIR}/_ext/1439655260/misc.o ${OBJECTDIR}/_ext/1439655260/pwdbased.o ${OBJECTDIR}/_ext/1439655260/rabbit.o ${OBJECTDIR}/_ext/1439655260/random.o ${OBJECTDIR}/_ext/1439655260/ripemd.o ${OBJECTDIR}/_ext/1439655260/rsa.o ${OBJECTDIR}/_ext/1439655260/sha.o ${OBJECTDIR}/_ext/1439655260/sha256.o ${OBJECTDIR}/_ext/1439655260/sha512.o ${OBJECTDIR}/_ext/1439655260/tfm.o ${OBJECTDIR}/_ext/1439655260/port.o + +# Source Files +SOURCEFILES=../../src/crl.c ../../src/internal.c ../../src/io.c ../../src/keys.c ../../src/ocsp.c ../../src/sniffer.c ../../src/ssl.c ../../src/tls.c ../../ctaocrypt/src/aes.c ../../ctaocrypt/src/arc4.c ../../ctaocrypt/src/asm.c ../../ctaocrypt/src/asn.c ../../ctaocrypt/src/coding.c ../../ctaocrypt/src/des3.c ../../ctaocrypt/src/dh.c ../../ctaocrypt/src/dsa.c ../../ctaocrypt/src/ecc.c ../../ctaocrypt/src/ecc_fp.c ../../ctaocrypt/src/error.c ../../ctaocrypt/src/hc128.c ../../ctaocrypt/src/hmac.c ../../ctaocrypt/src/integer.c ../../ctaocrypt/src/logging.c ../../ctaocrypt/src/md2.c ../../ctaocrypt/src/md4.c ../../ctaocrypt/src/md5.c ../../ctaocrypt/src/memory.c ../../ctaocrypt/src/misc.c ../../ctaocrypt/src/pwdbased.c ../../ctaocrypt/src/rabbit.c ../../ctaocrypt/src/random.c ../../ctaocrypt/src/ripemd.c ../../ctaocrypt/src/rsa.c ../../ctaocrypt/src/sha.c ../../ctaocrypt/src/sha256.c ../../ctaocrypt/src/sha512.c ../../ctaocrypt/src/tfm.c ../../ctaocrypt/src/port.c + + +CFLAGS= +ASFLAGS= +LDLIBSOPTIONS= + +############# Tool locations ########################################## +# If you copy a project from one host to another, the path where the # +# compiler is installed may be different. # +# If you open this project with MPLAB X in the new host, this # +# makefile will be regenerated and the paths will be corrected. # +####################################################################### +# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build +FIXDEPS=fixDeps + +.build-conf: ${BUILD_SUBPROJECTS} + ${MAKE} ${MAKE_OPTIONS} -f nbproject/Makefile-default.mk dist/${CND_CONF}/${IMAGE_TYPE}/cyassl.X.${OUTPUT_SUFFIX} + +MP_PROCESSOR_OPTION=32MZ2048ECM144 +MP_LINKER_FILE_OPTION= +# ------------------------------------------------------------------------------------ +# Rules for buildStep: assemble +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: assembleWithPreprocess +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: compile +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +${OBJECTDIR}/_ext/1445274692/crl.o: ../../src/crl.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/crl.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/crl.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/crl.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1445274692/crl.o.d" -o ${OBJECTDIR}/_ext/1445274692/crl.o ../../src/crl.c + +${OBJECTDIR}/_ext/1445274692/internal.o: ../../src/internal.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/internal.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/internal.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/internal.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1445274692/internal.o.d" -o ${OBJECTDIR}/_ext/1445274692/internal.o ../../src/internal.c + +${OBJECTDIR}/_ext/1445274692/io.o: ../../src/io.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/io.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/io.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/io.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1445274692/io.o.d" -o ${OBJECTDIR}/_ext/1445274692/io.o ../../src/io.c + +${OBJECTDIR}/_ext/1445274692/keys.o: ../../src/keys.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/keys.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/keys.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/keys.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1445274692/keys.o.d" -o ${OBJECTDIR}/_ext/1445274692/keys.o ../../src/keys.c + +${OBJECTDIR}/_ext/1445274692/ocsp.o: ../../src/ocsp.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/ocsp.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/ocsp.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/ocsp.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1445274692/ocsp.o.d" -o ${OBJECTDIR}/_ext/1445274692/ocsp.o ../../src/ocsp.c + +${OBJECTDIR}/_ext/1445274692/sniffer.o: ../../src/sniffer.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/sniffer.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/sniffer.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/sniffer.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1445274692/sniffer.o.d" -o ${OBJECTDIR}/_ext/1445274692/sniffer.o ../../src/sniffer.c + +${OBJECTDIR}/_ext/1445274692/ssl.o: ../../src/ssl.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/ssl.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/ssl.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/ssl.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1445274692/ssl.o.d" -o ${OBJECTDIR}/_ext/1445274692/ssl.o ../../src/ssl.c + +${OBJECTDIR}/_ext/1445274692/tls.o: ../../src/tls.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/tls.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/tls.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/tls.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1445274692/tls.o.d" -o ${OBJECTDIR}/_ext/1445274692/tls.o ../../src/tls.c + +${OBJECTDIR}/_ext/1439655260/aes.o: ../../ctaocrypt/src/aes.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/aes.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/aes.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/aes.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/aes.o.d" -o ${OBJECTDIR}/_ext/1439655260/aes.o ../../ctaocrypt/src/aes.c + +${OBJECTDIR}/_ext/1439655260/arc4.o: ../../ctaocrypt/src/arc4.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/arc4.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/arc4.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/arc4.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/arc4.o.d" -o ${OBJECTDIR}/_ext/1439655260/arc4.o ../../ctaocrypt/src/arc4.c + +${OBJECTDIR}/_ext/1439655260/asm.o: ../../ctaocrypt/src/asm.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/asm.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/asm.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/asm.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/asm.o.d" -o ${OBJECTDIR}/_ext/1439655260/asm.o ../../ctaocrypt/src/asm.c + +${OBJECTDIR}/_ext/1439655260/asn.o: ../../ctaocrypt/src/asn.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/asn.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/asn.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/asn.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/asn.o.d" -o ${OBJECTDIR}/_ext/1439655260/asn.o ../../ctaocrypt/src/asn.c + +${OBJECTDIR}/_ext/1439655260/coding.o: ../../ctaocrypt/src/coding.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/coding.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/coding.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/coding.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/coding.o.d" -o ${OBJECTDIR}/_ext/1439655260/coding.o ../../ctaocrypt/src/coding.c + +${OBJECTDIR}/_ext/1439655260/des3.o: ../../ctaocrypt/src/des3.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/des3.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/des3.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/des3.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/des3.o.d" -o ${OBJECTDIR}/_ext/1439655260/des3.o ../../ctaocrypt/src/des3.c + +${OBJECTDIR}/_ext/1439655260/dh.o: ../../ctaocrypt/src/dh.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/dh.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/dh.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/dh.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/dh.o.d" -o ${OBJECTDIR}/_ext/1439655260/dh.o ../../ctaocrypt/src/dh.c + +${OBJECTDIR}/_ext/1439655260/dsa.o: ../../ctaocrypt/src/dsa.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/dsa.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/dsa.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/dsa.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/dsa.o.d" -o ${OBJECTDIR}/_ext/1439655260/dsa.o ../../ctaocrypt/src/dsa.c + +${OBJECTDIR}/_ext/1439655260/ecc.o: ../../ctaocrypt/src/ecc.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/ecc.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/ecc.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/ecc.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/ecc.o.d" -o ${OBJECTDIR}/_ext/1439655260/ecc.o ../../ctaocrypt/src/ecc.c + +${OBJECTDIR}/_ext/1439655260/ecc_fp.o: ../../ctaocrypt/src/ecc_fp.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/ecc_fp.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/ecc_fp.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/ecc_fp.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/ecc_fp.o.d" -o ${OBJECTDIR}/_ext/1439655260/ecc_fp.o ../../ctaocrypt/src/ecc_fp.c + +${OBJECTDIR}/_ext/1439655260/error.o: ../../ctaocrypt/src/error.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/error.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/error.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/error.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/error.o.d" -o ${OBJECTDIR}/_ext/1439655260/error.o ../../ctaocrypt/src/error.c + +${OBJECTDIR}/_ext/1439655260/hc128.o: ../../ctaocrypt/src/hc128.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/hc128.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/hc128.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/hc128.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/hc128.o.d" -o ${OBJECTDIR}/_ext/1439655260/hc128.o ../../ctaocrypt/src/hc128.c + +${OBJECTDIR}/_ext/1439655260/hmac.o: ../../ctaocrypt/src/hmac.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/hmac.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/hmac.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/hmac.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/hmac.o.d" -o ${OBJECTDIR}/_ext/1439655260/hmac.o ../../ctaocrypt/src/hmac.c + +${OBJECTDIR}/_ext/1439655260/integer.o: ../../ctaocrypt/src/integer.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/integer.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/integer.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/integer.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/integer.o.d" -o ${OBJECTDIR}/_ext/1439655260/integer.o ../../ctaocrypt/src/integer.c + +${OBJECTDIR}/_ext/1439655260/logging.o: ../../ctaocrypt/src/logging.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/logging.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/logging.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/logging.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/logging.o.d" -o ${OBJECTDIR}/_ext/1439655260/logging.o ../../ctaocrypt/src/logging.c + +${OBJECTDIR}/_ext/1439655260/md2.o: ../../ctaocrypt/src/md2.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/md2.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/md2.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/md2.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/md2.o.d" -o ${OBJECTDIR}/_ext/1439655260/md2.o ../../ctaocrypt/src/md2.c + +${OBJECTDIR}/_ext/1439655260/md4.o: ../../ctaocrypt/src/md4.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/md4.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/md4.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/md4.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/md4.o.d" -o ${OBJECTDIR}/_ext/1439655260/md4.o ../../ctaocrypt/src/md4.c + +${OBJECTDIR}/_ext/1439655260/md5.o: ../../ctaocrypt/src/md5.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/md5.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/md5.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/md5.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/md5.o.d" -o ${OBJECTDIR}/_ext/1439655260/md5.o ../../ctaocrypt/src/md5.c + +${OBJECTDIR}/_ext/1439655260/memory.o: ../../ctaocrypt/src/memory.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/memory.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/memory.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/memory.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/memory.o.d" -o ${OBJECTDIR}/_ext/1439655260/memory.o ../../ctaocrypt/src/memory.c + +${OBJECTDIR}/_ext/1439655260/misc.o: ../../ctaocrypt/src/misc.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/misc.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/misc.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/misc.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/misc.o.d" -o ${OBJECTDIR}/_ext/1439655260/misc.o ../../ctaocrypt/src/misc.c + +${OBJECTDIR}/_ext/1439655260/pwdbased.o: ../../ctaocrypt/src/pwdbased.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/pwdbased.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/pwdbased.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/pwdbased.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/pwdbased.o.d" -o ${OBJECTDIR}/_ext/1439655260/pwdbased.o ../../ctaocrypt/src/pwdbased.c + +${OBJECTDIR}/_ext/1439655260/rabbit.o: ../../ctaocrypt/src/rabbit.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/rabbit.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/rabbit.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/rabbit.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/rabbit.o.d" -o ${OBJECTDIR}/_ext/1439655260/rabbit.o ../../ctaocrypt/src/rabbit.c + +${OBJECTDIR}/_ext/1439655260/random.o: ../../ctaocrypt/src/random.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/random.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/random.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/random.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/random.o.d" -o ${OBJECTDIR}/_ext/1439655260/random.o ../../ctaocrypt/src/random.c + +${OBJECTDIR}/_ext/1439655260/ripemd.o: ../../ctaocrypt/src/ripemd.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/ripemd.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/ripemd.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/ripemd.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/ripemd.o.d" -o ${OBJECTDIR}/_ext/1439655260/ripemd.o ../../ctaocrypt/src/ripemd.c + +${OBJECTDIR}/_ext/1439655260/rsa.o: ../../ctaocrypt/src/rsa.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/rsa.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/rsa.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/rsa.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/rsa.o.d" -o ${OBJECTDIR}/_ext/1439655260/rsa.o ../../ctaocrypt/src/rsa.c + +${OBJECTDIR}/_ext/1439655260/sha.o: ../../ctaocrypt/src/sha.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/sha.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/sha.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/sha.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/sha.o.d" -o ${OBJECTDIR}/_ext/1439655260/sha.o ../../ctaocrypt/src/sha.c + +${OBJECTDIR}/_ext/1439655260/sha256.o: ../../ctaocrypt/src/sha256.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/sha256.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/sha256.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/sha256.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/sha256.o.d" -o ${OBJECTDIR}/_ext/1439655260/sha256.o ../../ctaocrypt/src/sha256.c + +${OBJECTDIR}/_ext/1439655260/sha512.o: ../../ctaocrypt/src/sha512.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/sha512.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/sha512.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/sha512.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/sha512.o.d" -o ${OBJECTDIR}/_ext/1439655260/sha512.o ../../ctaocrypt/src/sha512.c + +${OBJECTDIR}/_ext/1439655260/tfm.o: ../../ctaocrypt/src/tfm.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/tfm.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/tfm.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/tfm.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/tfm.o.d" -o ${OBJECTDIR}/_ext/1439655260/tfm.o ../../ctaocrypt/src/tfm.c + +${OBJECTDIR}/_ext/1439655260/port.o: ../../ctaocrypt/src/port.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/port.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/port.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/port.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/port.o.d" -o ${OBJECTDIR}/_ext/1439655260/port.o ../../ctaocrypt/src/port.c + +else +${OBJECTDIR}/_ext/1445274692/crl.o: ../../src/crl.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/crl.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/crl.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/crl.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1445274692/crl.o.d" -o ${OBJECTDIR}/_ext/1445274692/crl.o ../../src/crl.c + +${OBJECTDIR}/_ext/1445274692/internal.o: ../../src/internal.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/internal.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/internal.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/internal.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1445274692/internal.o.d" -o ${OBJECTDIR}/_ext/1445274692/internal.o ../../src/internal.c + +${OBJECTDIR}/_ext/1445274692/io.o: ../../src/io.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/io.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/io.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/io.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1445274692/io.o.d" -o ${OBJECTDIR}/_ext/1445274692/io.o ../../src/io.c + +${OBJECTDIR}/_ext/1445274692/keys.o: ../../src/keys.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/keys.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/keys.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/keys.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1445274692/keys.o.d" -o ${OBJECTDIR}/_ext/1445274692/keys.o ../../src/keys.c + +${OBJECTDIR}/_ext/1445274692/ocsp.o: ../../src/ocsp.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/ocsp.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/ocsp.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/ocsp.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1445274692/ocsp.o.d" -o ${OBJECTDIR}/_ext/1445274692/ocsp.o ../../src/ocsp.c + +${OBJECTDIR}/_ext/1445274692/sniffer.o: ../../src/sniffer.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/sniffer.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/sniffer.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/sniffer.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1445274692/sniffer.o.d" -o ${OBJECTDIR}/_ext/1445274692/sniffer.o ../../src/sniffer.c + +${OBJECTDIR}/_ext/1445274692/ssl.o: ../../src/ssl.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/ssl.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/ssl.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/ssl.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1445274692/ssl.o.d" -o ${OBJECTDIR}/_ext/1445274692/ssl.o ../../src/ssl.c + +${OBJECTDIR}/_ext/1445274692/tls.o: ../../src/tls.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1445274692 + @${RM} ${OBJECTDIR}/_ext/1445274692/tls.o.d + @${RM} ${OBJECTDIR}/_ext/1445274692/tls.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1445274692/tls.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1445274692/tls.o.d" -o ${OBJECTDIR}/_ext/1445274692/tls.o ../../src/tls.c + +${OBJECTDIR}/_ext/1439655260/aes.o: ../../ctaocrypt/src/aes.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/aes.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/aes.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/aes.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/aes.o.d" -o ${OBJECTDIR}/_ext/1439655260/aes.o ../../ctaocrypt/src/aes.c + +${OBJECTDIR}/_ext/1439655260/arc4.o: ../../ctaocrypt/src/arc4.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/arc4.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/arc4.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/arc4.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/arc4.o.d" -o ${OBJECTDIR}/_ext/1439655260/arc4.o ../../ctaocrypt/src/arc4.c + +${OBJECTDIR}/_ext/1439655260/asm.o: ../../ctaocrypt/src/asm.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/asm.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/asm.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/asm.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/asm.o.d" -o ${OBJECTDIR}/_ext/1439655260/asm.o ../../ctaocrypt/src/asm.c + +${OBJECTDIR}/_ext/1439655260/asn.o: ../../ctaocrypt/src/asn.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/asn.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/asn.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/asn.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/asn.o.d" -o ${OBJECTDIR}/_ext/1439655260/asn.o ../../ctaocrypt/src/asn.c + +${OBJECTDIR}/_ext/1439655260/coding.o: ../../ctaocrypt/src/coding.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/coding.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/coding.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/coding.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/coding.o.d" -o ${OBJECTDIR}/_ext/1439655260/coding.o ../../ctaocrypt/src/coding.c + +${OBJECTDIR}/_ext/1439655260/des3.o: ../../ctaocrypt/src/des3.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/des3.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/des3.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/des3.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/des3.o.d" -o ${OBJECTDIR}/_ext/1439655260/des3.o ../../ctaocrypt/src/des3.c + +${OBJECTDIR}/_ext/1439655260/dh.o: ../../ctaocrypt/src/dh.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/dh.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/dh.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/dh.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/dh.o.d" -o ${OBJECTDIR}/_ext/1439655260/dh.o ../../ctaocrypt/src/dh.c + +${OBJECTDIR}/_ext/1439655260/dsa.o: ../../ctaocrypt/src/dsa.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/dsa.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/dsa.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/dsa.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/dsa.o.d" -o ${OBJECTDIR}/_ext/1439655260/dsa.o ../../ctaocrypt/src/dsa.c + +${OBJECTDIR}/_ext/1439655260/ecc.o: ../../ctaocrypt/src/ecc.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/ecc.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/ecc.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/ecc.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/ecc.o.d" -o ${OBJECTDIR}/_ext/1439655260/ecc.o ../../ctaocrypt/src/ecc.c + +${OBJECTDIR}/_ext/1439655260/ecc_fp.o: ../../ctaocrypt/src/ecc_fp.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/ecc_fp.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/ecc_fp.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/ecc_fp.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/ecc_fp.o.d" -o ${OBJECTDIR}/_ext/1439655260/ecc_fp.o ../../ctaocrypt/src/ecc_fp.c + +${OBJECTDIR}/_ext/1439655260/error.o: ../../ctaocrypt/src/error.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/error.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/error.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/error.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/error.o.d" -o ${OBJECTDIR}/_ext/1439655260/error.o ../../ctaocrypt/src/error.c + +${OBJECTDIR}/_ext/1439655260/hc128.o: ../../ctaocrypt/src/hc128.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/hc128.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/hc128.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/hc128.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/hc128.o.d" -o ${OBJECTDIR}/_ext/1439655260/hc128.o ../../ctaocrypt/src/hc128.c + +${OBJECTDIR}/_ext/1439655260/hmac.o: ../../ctaocrypt/src/hmac.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/hmac.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/hmac.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/hmac.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/hmac.o.d" -o ${OBJECTDIR}/_ext/1439655260/hmac.o ../../ctaocrypt/src/hmac.c + +${OBJECTDIR}/_ext/1439655260/integer.o: ../../ctaocrypt/src/integer.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/integer.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/integer.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/integer.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/integer.o.d" -o ${OBJECTDIR}/_ext/1439655260/integer.o ../../ctaocrypt/src/integer.c + +${OBJECTDIR}/_ext/1439655260/logging.o: ../../ctaocrypt/src/logging.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/logging.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/logging.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/logging.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/logging.o.d" -o ${OBJECTDIR}/_ext/1439655260/logging.o ../../ctaocrypt/src/logging.c + +${OBJECTDIR}/_ext/1439655260/md2.o: ../../ctaocrypt/src/md2.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/md2.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/md2.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/md2.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/md2.o.d" -o ${OBJECTDIR}/_ext/1439655260/md2.o ../../ctaocrypt/src/md2.c + +${OBJECTDIR}/_ext/1439655260/md4.o: ../../ctaocrypt/src/md4.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/md4.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/md4.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/md4.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/md4.o.d" -o ${OBJECTDIR}/_ext/1439655260/md4.o ../../ctaocrypt/src/md4.c + +${OBJECTDIR}/_ext/1439655260/md5.o: ../../ctaocrypt/src/md5.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/md5.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/md5.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/md5.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/md5.o.d" -o ${OBJECTDIR}/_ext/1439655260/md5.o ../../ctaocrypt/src/md5.c + +${OBJECTDIR}/_ext/1439655260/memory.o: ../../ctaocrypt/src/memory.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/memory.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/memory.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/memory.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/memory.o.d" -o ${OBJECTDIR}/_ext/1439655260/memory.o ../../ctaocrypt/src/memory.c + +${OBJECTDIR}/_ext/1439655260/misc.o: ../../ctaocrypt/src/misc.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/misc.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/misc.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/misc.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/misc.o.d" -o ${OBJECTDIR}/_ext/1439655260/misc.o ../../ctaocrypt/src/misc.c + +${OBJECTDIR}/_ext/1439655260/pwdbased.o: ../../ctaocrypt/src/pwdbased.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/pwdbased.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/pwdbased.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/pwdbased.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/pwdbased.o.d" -o ${OBJECTDIR}/_ext/1439655260/pwdbased.o ../../ctaocrypt/src/pwdbased.c + +${OBJECTDIR}/_ext/1439655260/rabbit.o: ../../ctaocrypt/src/rabbit.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/rabbit.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/rabbit.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/rabbit.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/rabbit.o.d" -o ${OBJECTDIR}/_ext/1439655260/rabbit.o ../../ctaocrypt/src/rabbit.c + +${OBJECTDIR}/_ext/1439655260/random.o: ../../ctaocrypt/src/random.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/random.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/random.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/random.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/random.o.d" -o ${OBJECTDIR}/_ext/1439655260/random.o ../../ctaocrypt/src/random.c + +${OBJECTDIR}/_ext/1439655260/ripemd.o: ../../ctaocrypt/src/ripemd.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/ripemd.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/ripemd.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/ripemd.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/ripemd.o.d" -o ${OBJECTDIR}/_ext/1439655260/ripemd.o ../../ctaocrypt/src/ripemd.c + +${OBJECTDIR}/_ext/1439655260/rsa.o: ../../ctaocrypt/src/rsa.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/rsa.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/rsa.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/rsa.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/rsa.o.d" -o ${OBJECTDIR}/_ext/1439655260/rsa.o ../../ctaocrypt/src/rsa.c + +${OBJECTDIR}/_ext/1439655260/sha.o: ../../ctaocrypt/src/sha.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/sha.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/sha.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/sha.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/sha.o.d" -o ${OBJECTDIR}/_ext/1439655260/sha.o ../../ctaocrypt/src/sha.c + +${OBJECTDIR}/_ext/1439655260/sha256.o: ../../ctaocrypt/src/sha256.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/sha256.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/sha256.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/sha256.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/sha256.o.d" -o ${OBJECTDIR}/_ext/1439655260/sha256.o ../../ctaocrypt/src/sha256.c + +${OBJECTDIR}/_ext/1439655260/sha512.o: ../../ctaocrypt/src/sha512.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/sha512.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/sha512.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/sha512.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/sha512.o.d" -o ${OBJECTDIR}/_ext/1439655260/sha512.o ../../ctaocrypt/src/sha512.c + +${OBJECTDIR}/_ext/1439655260/tfm.o: ../../ctaocrypt/src/tfm.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/tfm.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/tfm.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/tfm.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/tfm.o.d" -o ${OBJECTDIR}/_ext/1439655260/tfm.o ../../ctaocrypt/src/tfm.c + +${OBJECTDIR}/_ext/1439655260/port.o: ../../ctaocrypt/src/port.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} ${OBJECTDIR}/_ext/1439655260 + @${RM} ${OBJECTDIR}/_ext/1439655260/port.o.d + @${RM} ${OBJECTDIR}/_ext/1439655260/port.o + @${FIXDEPS} "${OBJECTDIR}/_ext/1439655260/port.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O3 -DCYASSL_SHA512 -DCYASSL_SHA384 -DHAVE_ECC -I"../../" -I"../" -MMD -MF "${OBJECTDIR}/_ext/1439655260/port.o.d" -o ${OBJECTDIR}/_ext/1439655260/port.o ../../ctaocrypt/src/port.c + +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: compileCPP +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +else +endif + +# ------------------------------------------------------------------------------------ +# Rules for buildStep: archive +ifeq ($(TYPE_IMAGE), DEBUG_RUN) +dist/${CND_CONF}/${IMAGE_TYPE}/cyassl.X.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} + ${MP_AR} $(MP_EXTRA_AR_PRE) r dist/${CND_CONF}/${IMAGE_TYPE}/cyassl.X.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} +else +dist/${CND_CONF}/${IMAGE_TYPE}/cyassl.X.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} + ${MP_AR} $(MP_EXTRA_AR_PRE) r dist/${CND_CONF}/${IMAGE_TYPE}/cyassl.X.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} +endif + + +# Subprojects +.build-subprojects: + + +# Subprojects +.clean-subprojects: + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r build/default + ${RM} -r dist/default + +# Enable dependency checking +.dep.inc: .depcheck-impl + +DEPFILES=$(shell mplabwildcard ${POSSIBLE_DEPFILES}) +ifneq (${DEPFILES},) +include ${DEPFILES} +endif diff --git a/mplabx/cyassl.X/nbproject/Makefile-genesis.properties b/mplabx/cyassl.X/nbproject/Makefile-genesis.properties new file mode 100644 index 000000000..8fa40f592 --- /dev/null +++ b/mplabx/cyassl.X/nbproject/Makefile-genesis.properties @@ -0,0 +1,8 @@ +# +#Tue Mar 04 21:12:12 JST 2014 +default.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=cd6a1e93a26f632c22d91cbbe4deaf2c +default.languagetoolchain.dir=C\:\\Program Files (x86)\\Microchip\\xc32\\v1.30\\bin +com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=43bd1633f14a944b6e95abd1333fdfc3 +default.languagetoolchain.version=1.30 +host.platform=windows +conf.ids=default diff --git a/mplabx/cyassl.X/nbproject/Makefile-impl.mk b/mplabx/cyassl.X/nbproject/Makefile-impl.mk new file mode 100644 index 000000000..6f20c0abd --- /dev/null +++ b/mplabx/cyassl.X/nbproject/Makefile-impl.mk @@ -0,0 +1,69 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a pre- and a post- target defined where you can add customization code. +# +# This makefile implements macros and targets common to all configurations. +# +# NOCDDL + + +# Building and Cleaning subprojects are done by default, but can be controlled with the SUB +# macro. If SUB=no, subprojects will not be built or cleaned. The following macro +# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf +# and .clean-reqprojects-conf unless SUB has the value 'no' +SUB_no=NO +SUBPROJECTS=${SUB_${SUB}} +BUILD_SUBPROJECTS_=.build-subprojects +BUILD_SUBPROJECTS_NO= +BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} +CLEAN_SUBPROJECTS_=.clean-subprojects +CLEAN_SUBPROJECTS_NO= +CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} + + +# Project Name +PROJECTNAME=cyassl.X + +# Active Configuration +DEFAULTCONF=default +CONF=${DEFAULTCONF} + +# All Configurations +ALLCONFS=default + + +# build +.build-impl: .build-pre + ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf + + +# clean +.clean-impl: .clean-pre + ${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf + +# clobber +.clobber-impl: .clobber-pre .depcheck-impl + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default clean + + + +# all +.all-impl: .all-pre .depcheck-impl + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default build + + + +# dependency checking support +.depcheck-impl: +# @echo "# This code depends on make tool being used" >.dep.inc +# @if [ -n "${MAKE_VERSION}" ]; then \ +# echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \ +# echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ +# echo "include \$${DEPFILES}" >>.dep.inc; \ +# echo "endif" >>.dep.inc; \ +# else \ +# echo ".KEEP_STATE:" >>.dep.inc; \ +# echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ +# fi diff --git a/mplabx/cyassl.X/nbproject/Makefile-local-default.mk b/mplabx/cyassl.X/nbproject/Makefile-local-default.mk new file mode 100644 index 000000000..3350f874d --- /dev/null +++ b/mplabx/cyassl.X/nbproject/Makefile-local-default.mk @@ -0,0 +1,37 @@ +# +# Generated Makefile - do not edit! +# +# +# This file contains information about the location of compilers and other tools. +# If you commmit this file into your revision control server, you will be able to +# to checkout the project and build it from the command line with make. However, +# if more than one person works on the same project, then this file might show +# conflicts since different users are bound to have compilers in different places. +# In that case you might choose to not commit this file and let MPLAB X recreate this file +# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at +# least once so the file gets created and the project can be built. Finally, you can also +# avoid using this file at all if you are only building from the command line with make. +# You can invoke make with the values of the macros: +# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ... +# +SHELL=cmd.exe +PATH_TO_IDE_BIN=C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/ +# Adding MPLAB X bin directory to path. +PATH:=C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/:$(PATH) +# Path to java used to run MPLAB X when this makefile was created +MP_JAVA_PATH="C:\Program Files (x86)\Microchip\MPLABX-v1.95.RC3\sys\java\jre1.7.0_25-windows-x64\java-windows/bin/" +OS_CURRENT="$(shell uname -s)" +MP_CC="C:\Program Files (x86)\Microchip\xc32\v1.30\bin\xc32-gcc.exe" +MP_CPPC="C:\Program Files (x86)\Microchip\xc32\v1.30\bin\xc32-g++.exe" +# MP_BC is not defined +MP_AS="C:\Program Files (x86)\Microchip\xc32\v1.30\bin\xc32-as.exe" +MP_LD="C:\Program Files (x86)\Microchip\xc32\v1.30\bin\xc32-ld.exe" +MP_AR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin\xc32-ar.exe" +DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files (x86)/Microchip/MPLABX-v1.95.RC3/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar" +MP_CC_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin" +MP_CPPC_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin" +# MP_BC_DIR is not defined +MP_AS_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin" +MP_LD_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin" +MP_AR_DIR="C:\Program Files (x86)\Microchip\xc32\v1.30\bin" +# MP_BC_DIR is not defined diff --git a/mplabx/cyassl.X/nbproject/Makefile-variables.mk b/mplabx/cyassl.X/nbproject/Makefile-variables.mk new file mode 100644 index 000000000..b480b107d --- /dev/null +++ b/mplabx/cyassl.X/nbproject/Makefile-variables.mk @@ -0,0 +1,13 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +CND_BASEDIR=`pwd` +# default configuration +CND_ARTIFACT_DIR_default=dist/default/production +CND_ARTIFACT_NAME_default=cyassl.X.a +CND_ARTIFACT_PATH_default=dist/default/production/cyassl.X.a +CND_PACKAGE_DIR_default=${CND_DISTDIR}/default/package +CND_PACKAGE_NAME_default=cyassl.X.tar +CND_PACKAGE_PATH_default=${CND_DISTDIR}/default/package/cyassl.X.tar diff --git a/mplabx/cyassl.X/nbproject/Package-default.bash b/mplabx/cyassl.X/nbproject/Package-default.bash new file mode 100644 index 000000000..baae5e998 --- /dev/null +++ b/mplabx/cyassl.X/nbproject/Package-default.bash @@ -0,0 +1,73 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_CONF=default +CND_DISTDIR=dist +TMPDIR=build/${CND_CONF}/${IMAGE_TYPE}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=dist/${CND_CONF}/${IMAGE_TYPE}/cyassl.X.${OUTPUT_SUFFIX} +OUTPUT_BASENAME=cyassl.X.${OUTPUT_SUFFIX} +PACKAGE_TOP_DIR=cyassl.X/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/package +rm -rf ${TMPDIR} +mkdir -p ${TMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory ${TMPDIR}/cyassl.X/lib +copyFileToTmpDir "${OUTPUT_PATH}" "${TMPDIR}/${PACKAGE_TOP_DIR}lib/${OUTPUT_BASENAME}" 0644 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/package/cyassl.X.tar +cd ${TMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/package/cyassl.X.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${TMPDIR} diff --git a/mplabx/cyassl.X/nbproject/configurations.xml b/mplabx/cyassl.X/nbproject/configurations.xml index e12a2e988..7c67ebfcc 100644 --- a/mplabx/cyassl.X/nbproject/configurations.xml +++ b/mplabx/cyassl.X/nbproject/configurations.xml @@ -67,10 +67,10 @@ localhost - PIC32MX795F512L + PIC32MZ2048ECM144 - SKDEPIC32PlatformTool + PKOBSKDEPlatformTool XC32 1.30 3 @@ -181,9 +181,28 @@ - - - + + + + + + + + + + + + + + + + + + + + + diff --git a/mplabx/cyassl.X/nbproject/include.am b/mplabx/cyassl.X/nbproject/include.am index 4db3841b2..7d0b98793 100644 --- a/mplabx/cyassl.X/nbproject/include.am +++ b/mplabx/cyassl.X/nbproject/include.am @@ -3,7 +3,6 @@ # EXTRA_DIST += \ - mplabx/README \ mplabx/cyassl.X/Makefile EXTRA_DIST += \ diff --git a/mplabx/cyassl.X/nbproject/private/private.xml b/mplabx/cyassl.X/nbproject/private/private.xml new file mode 100644 index 000000000..e39667075 --- /dev/null +++ b/mplabx/cyassl.X/nbproject/private/private.xml @@ -0,0 +1,3 @@ + + + diff --git a/mplabx/cyassl.X/print_mem.c b/mplabx/cyassl.X/print_mem.c new file mode 100644 index 000000000..b90e8c55c --- /dev/null +++ b/mplabx/cyassl.X/print_mem.c @@ -0,0 +1,7 @@ +void print_mem(const unsigned char *p, int size) { + for(; size>0; size--, p++) { + if(size%4 == 0)printf(" ") ; + printf("%02x", (int)*p) ; + } + puts("") ; + } diff --git a/mplabx/include.am b/mplabx/include.am new file mode 100644 index 000000000..b63cdecaa --- /dev/null +++ b/mplabx/include.am @@ -0,0 +1,10 @@ +# vim:ft=automake +# All paths should be given relative to the root +# + +EXTRA_DIST += \ + mplabx/PIC32MZ-serial.h \ + mplabx/README \ + mplabx/benchmark_main.c \ + mplabx/test_main.c + diff --git a/IDE/MDK5-ARM/Projects/EchoClient/config-EchoClient.h b/mplabx/ssl-dummy.c similarity index 54% rename from IDE/MDK5-ARM/Projects/EchoClient/config-EchoClient.h rename to mplabx/ssl-dummy.c index b5520ecbe..88110ce98 100644 --- a/IDE/MDK5-ARM/Projects/EchoClient/config-EchoClient.h +++ b/mplabx/ssl-dummy.c @@ -1,4 +1,4 @@ -/* config-RTX-TCP-FS.h +/* ssl-dummy.c * * Copyright (C) 2006-2013 wolfSSL Inc. * @@ -19,32 +19,34 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ +#ifdef HAVE_CONFIG_H + #include +#endif -/**** CyaSSL for KEIL-RL Configuration ****/ +#include +#include -#define __CORTEX_M3__ -#define CYASSL_MDK_ARM -#define NO_WRITEV -#define NO_CYASSL_DIR -#define NO_MAIN_DRIVER +Signer* GetCA(void* vp, byte* hash) +{ + return NULL ; +} +int CyaSSL_dtls(CYASSL* ssl) +{ + return NULL ; +} -#define CYASSL_DER_LOAD -#define HAVE_NULL_CIPHER +int CyaSSL_get_using_nonblock(CYASSL* ssl) +{ + return NULL ; +} -#define HAVE_KEIL_RTX -#define CYASSL_CMSIS_RTOS -#define CYASSL_KEIL_TCP_NET +Signer* GetCAByName(void* vp, byte* hash) +{ + return NULL ; +} - -// <<< Use Configuration Wizard in Context Menu >>> -// Build Target: Simple Client -// Callee IP Address -// Default: "192.168.1.100" -#define CYASSL_CALLEE_IP "192.168.2.101" -// Callee Port Number -// Default: "11111" -#define CYASSL_CALLEE_PORT 11111 - -// -// <<< end of configuration section >>> +int CyaSSL_PemCertToDer(const char* fileName, unsigned char* derBuf, int derSz) +{ + return NULL ; +} diff --git a/mplabx/test_main.c b/mplabx/test_main.c index cc9992da3..ee1fa95a5 100644 --- a/mplabx/test_main.c +++ b/mplabx/test_main.c @@ -19,6 +19,12 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ +#ifdef HAVE_CONFIG_H + #include +#endif + +#include + #if defined(CYASSL_MICROCHIP_PIC32MZ) #define MICROCHIP_PIC32 #include diff --git a/src/include.am b/src/include.am index d187ab0d6..e57f0f6fc 100644 --- a/src/include.am +++ b/src/include.am @@ -136,3 +136,7 @@ if BUILD_LIBZ src_libcyassl_la_SOURCES += ctaocrypt/src/compress.c endif +if BUILD_PKCS7 +src_libcyassl_la_SOURCES += ctaocrypt/src/pkcs7.c +endif + diff --git a/src/internal.c b/src/internal.c index 92194f5de..04c516389 100644 --- a/src/internal.c +++ b/src/internal.c @@ -87,6 +87,13 @@ CYASSL_CALLBACKS needs LARGE_STATIC_BUFFERS, please add LARGE_STATIC_BUFFERS #endif #endif + +#ifdef CYASSL_DTLS + static INLINE int DtlsCheckWindow(DtlsState* state); + static INLINE int DtlsUpdateWindow(DtlsState* state); +#endif + + typedef enum { doProcessInit = 0, #ifndef NO_CYASSL_SERVER @@ -419,9 +426,6 @@ int InitSSL_Ctx(CYASSL_CTX* ctx, CYASSL_METHOD* method) ctx->sendVerify = 0; ctx->quietShutdown = 0; ctx->groupMessages = 0; -#ifdef HAVE_OCSP - CyaSSL_OCSP_Init(&ctx->ocsp); -#endif #ifdef HAVE_CAVIUM ctx->devId = NO_CAVIUM_DEVICE; #endif @@ -472,9 +476,6 @@ void SSL_CtxResourceFree(CYASSL_CTX* ctx) XFREE(ctx->certChain.buffer, ctx->heap, DYNAMIC_TYPE_CERT); CyaSSL_CertManagerFree(ctx->cm); #endif -#ifdef HAVE_OCSP - CyaSSL_OCSP_Cleanup(&ctx->ocsp); -#endif #ifdef HAVE_TLS_EXTENSIONS TLSX_FreeAll(ctx->extensions); #endif @@ -628,8 +629,10 @@ void InitSuites(Suites* suites, ProtocolVersion pv, byte haveRSA, byte havePSK, if (suites->setSuites) return; /* trust user settings, don't override */ - if (side == CYASSL_SERVER_END && haveStaticECC) + if (side == CYASSL_SERVER_END && haveStaticECC) { haveRSA = 0; /* can't do RSA with ECDSA key */ + (void)haveRSA; /* some builds won't read */ + } if (side == CYASSL_SERVER_END && haveECDSAsig) { haveRSAsig = 0; /* can't have RSA sig if signed by ECDSA */ @@ -643,6 +646,13 @@ void InitSuites(Suites* suites, ProtocolVersion pv, byte haveRSA, byte havePSK, } #endif +#ifdef HAVE_RENEGOTIATION_INDICATION + if (side == CYASSL_CLIENT_END) { + suites->suites[idx++] = 0; + suites->suites[idx++] = TLS_EMPTY_RENEGOTIATION_INFO_SCSV; + } +#endif + #ifdef BUILD_TLS_NTRU_RSA_WITH_AES_256_CBC_SHA if (tls && haveNTRU && haveRSA) { suites->suites[idx++] = 0; @@ -1271,6 +1281,33 @@ void InitX509(CYASSL_X509* x509, int dynamicFlag) x509->altNames = NULL; x509->altNamesNext = NULL; x509->dynamicMemory = (byte)dynamicFlag; + x509->isCa = 0; +#ifdef HAVE_ECC + x509->pkCurveOID = 0; +#endif /* HAVE_ECC */ +#ifdef OPENSSL_EXTRA + x509->pathLength = 0; + x509->basicConstSet = 0; + x509->basicConstCrit = 0; + x509->basicConstPlSet = 0; + x509->subjAltNameSet = 0; + x509->subjAltNameCrit = 0; + x509->authKeyIdSet = 0; + x509->authKeyIdCrit = 0; + x509->authKeyId = NULL; + x509->authKeyIdSz = 0; + x509->subjKeyIdSet = 0; + x509->subjKeyIdCrit = 0; + x509->subjKeyId = NULL; + x509->subjKeyIdSz = 0; + x509->keyUsageSet = 0; + x509->keyUsageCrit = 0; + x509->keyUsage = 0; + #ifdef CYASSL_SEP + x509->certPolicySet = 0; + x509->certPolicyCrit = 0; + #endif /* CYASSL_SEP */ +#endif /* OPENSSL_EXTRA */ } @@ -1286,6 +1323,10 @@ void FreeX509(CYASSL_X509* x509) XFREE(x509->pubKey.buffer, NULL, DYNAMIC_TYPE_PUBLIC_KEY); XFREE(x509->derCert.buffer, NULL, DYNAMIC_TYPE_SUBJECT_CN); XFREE(x509->sig.buffer, NULL, 0); + #ifdef OPENSSL_EXTRA + XFREE(x509->authKeyId, NULL, 0); + XFREE(x509->subjKeyId, NULL, 0); + #endif /* OPENSSL_EXTRA */ if (x509->altNames) FreeAltNames(x509->altNames, NULL); if (x509->dynamicMemory) @@ -1359,6 +1400,7 @@ int InitSSL(CYASSL* ssl, CYASSL_CTX* ctx) #ifdef HAVE_ECC ssl->eccTempKeySz = ctx->eccTempKeySz; + ssl->pkCurveOID = ctx->pkCurveOID; ssl->peerEccKeyPresent = 0; ssl->peerEccDsaKeyPresent = 0; ssl->eccDsaKeyPresent = 0; @@ -1390,6 +1432,9 @@ int InitSSL(CYASSL* ssl, CYASSL_CTX* ctx) #ifdef CYASSL_DTLS ssl->IOCB_CookieCtx = NULL; /* we don't use for default cb */ ssl->dtls_expected_rx = MAX_MTU; + ssl->keys.dtls_state.window = 0; + ssl->keys.dtls_state.nextEpoch = 0; + ssl->keys.dtls_state.nextSeq = 0; #endif #ifndef NO_OLD_TLS @@ -1447,13 +1492,13 @@ int InitSSL(CYASSL* ssl, CYASSL_CTX* ctx) #ifdef CYASSL_DTLS ssl->keys.dtls_sequence_number = 0; - ssl->keys.dtls_peer_sequence_number = 0; - ssl->keys.dtls_expected_peer_sequence_number = 0; + ssl->keys.dtls_state.curSeq = 0; + ssl->keys.dtls_state.nextSeq = 0; ssl->keys.dtls_handshake_number = 0; ssl->keys.dtls_expected_peer_handshake_number = 0; ssl->keys.dtls_epoch = 0; - ssl->keys.dtls_peer_epoch = 0; - ssl->keys.dtls_expected_peer_epoch = 0; + ssl->keys.dtls_state.curEpoch = 0; + ssl->keys.dtls_state.nextEpoch = 0; ssl->dtls_timeout_init = DTLS_TIMEOUT_INIT; ssl->dtls_timeout_max = DTLS_TIMEOUT_MAX; ssl->dtls_timeout = ssl->dtls_timeout_init; @@ -1595,6 +1640,7 @@ int InitSSL(CYASSL* ssl, CYASSL_CTX* ctx) CYASSL_MSG("Arrays Memory error"); return MEMORY_E; } + XMEMSET(ssl->arrays, 0, sizeof(Arrays)); #ifndef NO_PSK ssl->arrays->client_identity[0] = 0; @@ -2731,9 +2777,9 @@ static int GetRecordHeader(CYASSL* ssl, const byte* input, word32* inOutIdx, /* type and version in same sport */ XMEMCPY(rh, input + *inOutIdx, ENUM_LEN + VERSION_SZ); *inOutIdx += ENUM_LEN + VERSION_SZ; - ato16(input + *inOutIdx, &ssl->keys.dtls_peer_epoch); + ato16(input + *inOutIdx, &ssl->keys.dtls_state.curEpoch); *inOutIdx += 4; /* advance past epoch, skip first 2 seq bytes for now */ - ato32(input + *inOutIdx, &ssl->keys.dtls_peer_sequence_number); + ato32(input + *inOutIdx, &ssl->keys.dtls_state.curSeq); *inOutIdx += 4; /* advance past rest of seq */ ato16(input + *inOutIdx, size); *inOutIdx += LENGTH_SZ; @@ -2754,27 +2800,14 @@ static int GetRecordHeader(CYASSL* ssl, const byte* input, word32* inOutIdx, return VERSION_ERROR; /* only use requested version */ } } -#if 0 - /* Instead of this, check the datagram against the sliding window of - * received datagram goodness. */ + #ifdef CYASSL_DTLS - /* If DTLS, check the sequence number against expected. If out of - * order, drop the record. Allows newer records in and resets the - * expected to the next record. */ if (ssl->options.dtls) { - if ((ssl->keys.dtls_expected_peer_epoch == - ssl->keys.dtls_peer_epoch) && - (ssl->keys.dtls_peer_sequence_number >= - ssl->keys.dtls_expected_peer_sequence_number)) { - ssl->keys.dtls_expected_peer_sequence_number = - ssl->keys.dtls_peer_sequence_number + 1; - } - else { + if (DtlsCheckWindow(&ssl->keys.dtls_state) != 1) return SEQUENCE_ERROR; - } } #endif -#endif + /* record layer length check */ #ifdef HAVE_MAX_FRAGMENT if (*size > (ssl->max_fragment + MAX_COMP_EXTRA + MAX_MSG_EXTRA)) @@ -3136,8 +3169,7 @@ int CopyDecodedToX509(CYASSL_X509* x509, DecodedCert* dCert) ret = MEMORY_E; } else { - XMEMCPY(x509->sig.buffer, - &dCert->source[dCert->sigIndex], dCert->sigLength); + XMEMCPY(x509->sig.buffer, dCert->signature, dCert->sigLength); x509->sig.length = dCert->sigLength; x509->sigOID = dCert->signatureOID; } @@ -3157,6 +3189,51 @@ int CopyDecodedToX509(CYASSL_X509* x509, DecodedCert* dCert) dCert->altNames = NULL; /* takes ownership */ x509->altNamesNext = x509->altNames; /* index hint */ + x509->isCa = dCert->isCA; +#ifdef OPENSSL_EXTRA + x509->pathLength = dCert->pathLength; + x509->keyUsage = dCert->extKeyUsage; + + x509->basicConstSet = dCert->extBasicConstSet; + x509->basicConstCrit = dCert->extBasicConstCrit; + x509->basicConstPlSet = dCert->extBasicConstPlSet; + x509->subjAltNameSet = dCert->extSubjAltNameSet; + x509->subjAltNameCrit = dCert->extSubjAltNameCrit; + x509->authKeyIdSet = dCert->extAuthKeyIdSet; + x509->authKeyIdCrit = dCert->extAuthKeyIdCrit; + if (dCert->extAuthKeyIdSrc != NULL && dCert->extAuthKeyIdSz != 0) { + x509->authKeyId = (byte*)XMALLOC(dCert->extAuthKeyIdSz, NULL, 0); + if (x509->authKeyId != NULL) { + XMEMCPY(x509->authKeyId, + dCert->extAuthKeyIdSrc, dCert->extAuthKeyIdSz); + x509->authKeyIdSz = dCert->extAuthKeyIdSz; + } + else + ret = MEMORY_E; + } + x509->subjKeyIdSet = dCert->extSubjKeyIdSet; + x509->subjKeyIdCrit = dCert->extSubjKeyIdCrit; + if (dCert->extSubjKeyIdSrc != NULL && dCert->extSubjKeyIdSz != 0) { + x509->subjKeyId = (byte*)XMALLOC(dCert->extSubjKeyIdSz, NULL, 0); + if (x509->subjKeyId != NULL) { + XMEMCPY(x509->subjKeyId, + dCert->extSubjKeyIdSrc, dCert->extSubjKeyIdSz); + x509->subjKeyIdSz = dCert->extSubjKeyIdSz; + } + else + ret = MEMORY_E; + } + x509->keyUsageSet = dCert->extKeyUsageSet; + x509->keyUsageCrit = dCert->extKeyUsageCrit; + #ifdef CYASSL_SEP + x509->certPolicySet = dCert->extCertPolicySet; + x509->certPolicyCrit = dCert->extCertPolicyCrit; + #endif /* CYASSL_SEP */ +#endif /* OPENSSL_EXTRA */ +#ifdef HAVE_ECC + x509->pkCurveOID = dCert->pkCurveOID; +#endif /* HAVE_ECC */ + return ret; } @@ -3318,8 +3395,8 @@ static int DoCertificate(CYASSL* ssl, byte* input, word32* inOutIdx) } #ifdef HAVE_OCSP - if (fatal == 0) { - ret = CyaSSL_OCSP_Lookup_Cert(&ssl->ctx->ocsp, &dCert); + if (fatal == 0 && ssl->ctx->cm->ocspEnabled) { + ret = CheckCertOCSP(ssl->ctx->cm->ocsp, &dCert); if (ret != 0) { CYASSL_MSG("\tOCSP Lookup not ok"); fatal = 0; @@ -3332,7 +3409,7 @@ static int DoCertificate(CYASSL* ssl, byte* input, word32* inOutIdx) int doCrlLookup = 1; #ifdef HAVE_OCSP - if (ssl->ctx->ocsp.enabled) { + if (ssl->ctx->cm->ocspEnabled) { doCrlLookup = (ret == OCSP_CERT_UNKNOWN); } #endif /* HAVE_OCSP */ @@ -3793,11 +3870,72 @@ static int DoHandShakeMsg(CYASSL* ssl, byte* input, word32* inOutIdx, #ifdef CYASSL_DTLS + +static INLINE int DtlsCheckWindow(DtlsState* state) +{ + word32 cur; + word32 next; + DtlsSeq window; + + if (state->curEpoch == state->nextEpoch) { + next = state->nextSeq; + window = state->window; + } + else if (state->curEpoch < state->nextEpoch) { + next = state->prevSeq; + window = state->prevWindow; + } + else { + return 0; + } + + cur = state->curSeq; + + if ((next > DTLS_SEQ_BITS) && (cur < next - DTLS_SEQ_BITS)) { + return 0; + } + else if ((cur < next) && (window & (1 << (next - cur - 1)))) { + return 0; + } + + return 1; +} + + +static INLINE int DtlsUpdateWindow(DtlsState* state) +{ + word32 cur; + word32* next; + DtlsSeq* window; + + if (state->curEpoch == state->nextEpoch) { + next = &state->nextSeq; + window = &state->window; + } + else { + next = &state->prevSeq; + window = &state->prevWindow; + } + + cur = state->curSeq; + + if (cur < *next) { + *window |= (1 << (*next - cur - 1)); + } + else { + *window <<= (1 + cur - *next); + *window |= 1; + *next = cur + 1; + } + + return 1; +} + + static int DtlsMsgDrain(CYASSL* ssl) { DtlsMsg* item = ssl->dtls_msg_list; int ret = 0; - word32 idx = 0; /* While there is an item in the store list, and it is the expected * message, and it is complete, and there hasn't been an error in the @@ -3806,6 +3944,7 @@ static int DtlsMsgDrain(CYASSL* ssl) ssl->keys.dtls_expected_peer_handshake_number == item->seq && item->fragSz == item->sz && ret == 0) { + word32 idx = 0; ssl->keys.dtls_expected_peer_handshake_number++; ret = DoHandShakeMsgType(ssl, item->msg, &idx, item->type, item->sz, item->sz); @@ -4192,23 +4331,27 @@ static INLINE int Decrypt(CYASSL* ssl, byte* plain, const byte* input, /* check cipher text size for sanity */ static int SanityCheckCipherText(CYASSL* ssl, word32 encryptSz) { - word32 minLength = 0; +#ifdef HAVE_TRUNCATED_HMAC + word32 minLength = ssl->truncated_hmac ? TRUNCATED_HMAC_SZ + : ssl->specs.hash_size; +#else + word32 minLength = ssl->specs.hash_size; /* covers stream */ +#endif if (ssl->specs.cipher_type == block) { if (encryptSz % ssl->specs.block_size) { CYASSL_MSG("Block ciphertext not block size"); return SANITY_CIPHER_E; } - minLength = ssl->specs.hash_size + 1; /* pad byte */ + + minLength++; /* pad byte */ + if (ssl->specs.block_size > minLength) minLength = ssl->specs.block_size; if (ssl->options.tls1_1) minLength += ssl->specs.block_size; /* explicit IV */ } - else if (ssl->specs.cipher_type == stream) { - minLength = ssl->specs.hash_size; - } else if (ssl->specs.cipher_type == aead) { minLength = ssl->specs.block_size; /* explicit IV + implicit IV + CTR */ } @@ -4652,7 +4795,12 @@ static INLINE int VerifyMac(CYASSL* ssl, const byte* input, word32 msgSz, int ret; word32 pad = 0; word32 padByte = 0; +#ifdef HAVE_TRUNCATED_HMAC + word32 digestSz = ssl->truncated_hmac ? TRUNCATED_HMAC_SZ + : ssl->specs.hash_size; +#else word32 digestSz = ssl->specs.hash_size; +#endif byte verify[MAX_DIGEST_SIZE]; if (ssl->specs.cipher_type == block) { @@ -4804,8 +4952,6 @@ int ProcessReply(CYASSL* ssl) &ssl->curRL, &ssl->curSize); #ifdef CYASSL_DTLS if (ssl->options.dtls && ret == SEQUENCE_ERROR) { - /* This message is out of order. If we are handshaking, save - *it for later. Otherwise go ahead and process it. */ ssl->options.processReply = doProcessInit; ssl->buffers.inputBuffer.length = 0; ssl->buffers.inputBuffer.idx = 0; @@ -4841,7 +4987,14 @@ int ProcessReply(CYASSL* ssl) /* the record layer is here */ case runProcessingOneMessage: - if (ssl->keys.encryptionOn && ssl->keys.decryptedCur == 0) { + #ifdef CYASSL_DTLS + if (ssl->options.dtls && + ssl->keys.dtls_state.curEpoch < ssl->keys.dtls_state.nextEpoch) + ssl->keys.decryptedCur = 1; + #endif + + if (ssl->keys.encryptionOn && ssl->keys.decryptedCur == 0) + { ret = SanityCheckCipherText(ssl, ssl->curSize); if (ret < 0) return ret; @@ -4891,6 +5044,12 @@ int ProcessReply(CYASSL* ssl) ssl->keys.decryptedCur = 1; } + if (ssl->options.dtls) { + #ifdef CYASSL_DTLS + DtlsUpdateWindow(&ssl->keys.dtls_state); + #endif /* CYASSL_DTLS */ + } + CYASSL_MSG("received record layer msg"); switch (ssl->curRL.type) { @@ -4950,8 +5109,8 @@ int ProcessReply(CYASSL* ssl) #ifdef CYASSL_DTLS if (ssl->options.dtls) { DtlsPoolReset(ssl); - ssl->keys.dtls_expected_peer_epoch++; - ssl->keys.dtls_expected_peer_sequence_number = 0; + ssl->keys.dtls_state.nextEpoch++; + ssl->keys.dtls_state.nextSeq = 0; } #endif @@ -5237,7 +5396,12 @@ static void BuildCertHashes(CYASSL* ssl, Hashes* hashes) static int BuildMessage(CYASSL* ssl, byte* output, const byte* input, int inSz, int type) { +#ifdef HAVE_TRUNCATED_HMAC + word32 digestSz = min(ssl->specs.hash_size, + ssl->truncated_hmac ? TRUNCATED_HMAC_SZ : ssl->specs.hash_size); +#else word32 digestSz = ssl->specs.hash_size; +#endif word32 sz = RECORD_HEADER_SZ + inSz + digestSz; word32 pad = 0, i; word32 idx = RECORD_HEADER_SZ; @@ -5313,8 +5477,19 @@ static int BuildMessage(CYASSL* ssl, byte* output, const byte* input, int inSz, #endif } else { - if (ssl->specs.cipher_type != aead) - ssl->hmac(ssl, output+idx, output + headerSz + ivSz, inSz, type, 0); + if (ssl->specs.cipher_type != aead) { +#ifdef HAVE_TRUNCATED_HMAC + if (ssl->truncated_hmac && ssl->specs.hash_size > digestSz) { + byte hmac[MAX_DIGEST_SIZE]; + + ssl->hmac(ssl, hmac, output + headerSz + ivSz, inSz, type, 0); + + XMEMCPY(output + idx, hmac, digestSz); + } else +#endif + ssl->hmac(ssl, output+idx, output + headerSz + ivSz, inSz, + type, 0); + } if ( (ret = Encrypt(ssl, output + headerSz, output+headerSz,size)) != 0) return ret; @@ -7947,7 +8122,7 @@ static void PickHashSigAlgo(CYASSL* ssl, case ecc_diffie_hellman_kea: { ecc_key myKey; - ecc_key* peerKey = &myKey; + ecc_key* peerKey = NULL; word32 size = sizeof(encSecret); if (ssl->specs.static_ecdh) { @@ -7962,6 +8137,9 @@ static void PickHashSigAlgo(CYASSL* ssl, peerKey = ssl->peerEccKey; } + if (peerKey == NULL) + return NO_PEER_KEY; + ecc_init(&myKey); ret = ecc_make_key(ssl->rng, peerKey->dp->size, &myKey); if (ret != 0) @@ -9131,7 +9309,7 @@ static void PickHashSigAlgo(CYASSL* ssl, return 1; break; -#ifndef NO_3DES +#ifndef NO_DES3 case TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA : if (requirement == REQUIRES_RSA) return 1; @@ -9160,7 +9338,7 @@ static void PickHashSigAlgo(CYASSL* ssl, #endif #endif /* NO_RSA */ -#ifndef NO_3DES +#ifndef NO_DES3 case TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA : if (requirement == REQUIRES_ECC_DSA) return 1; @@ -9587,6 +9765,13 @@ static void PickHashSigAlgo(CYASSL* ssl, } } +#ifdef HAVE_SUPPORTED_CURVES + if (!TLSX_ValidateEllipticCurves(ssl, first, second)) { + CYASSL_MSG("Don't have matching curves"); + return 0; + } +#endif + /* ECCDHE is always supported if ECC on */ return 1; @@ -9716,6 +9901,7 @@ static void PickHashSigAlgo(CYASSL* ssl, if (clSuites.suiteSz > MAX_SUITE_SZ) return BUFFER_ERROR; + clSuites.hashSigAlgoSz = 0; /* session size */ ato16(&input[idx], &sessionSz); diff --git a/src/io.c b/src/io.c index ca620d4ad..55f28eed3 100644 --- a/src/io.c +++ b/src/io.c @@ -352,7 +352,7 @@ int EmbedReceiveFrom(CYASSL *ssl, char *buf, int sz, void *ctx) int err; int sd = dtlsCtx->fd; int dtls_timeout = CyaSSL_dtls_get_current_timeout(ssl); - struct sockaddr_in6 peer; + struct sockaddr_storage peer; XSOCKLENT peerSz = sizeof(peer); CYASSL_ENTER("EmbedReceiveFrom()"); @@ -471,34 +471,21 @@ int EmbedSendTo(CYASSL* ssl, char *buf, int sz, void *ctx) int EmbedGenerateCookie(CYASSL* ssl, byte *buf, int sz, void *ctx) { int sd = ssl->wfd; - struct sockaddr_in6 peer; + struct sockaddr_storage peer; XSOCKLENT peerSz = sizeof(peer); Sha sha; byte digest[SHA_DIGEST_SIZE]; (void)ctx; + XMEMSET(&peer, 0, sizeof(peer)); if (getpeername(sd, (struct sockaddr*)&peer, &peerSz) != 0) { CYASSL_MSG("getpeername failed in EmbedGenerateCookie"); return GEN_COOKIE_E; } InitSha(&sha); - - if (peer.sin6_family == AF_INET6) { - ShaUpdate(&sha, (byte*)&peer.sin6_port, sizeof(peer.sin6_port)); - ShaUpdate(&sha, (byte*)&peer.sin6_addr, sizeof(peer.sin6_addr)); - } - else if (peer.sin6_family == AF_INET) { - struct sockaddr_in *s = (struct sockaddr_in*)&peer; - ShaUpdate(&sha, (byte*)&s->sin_port, sizeof(s->sin_port)); - ShaUpdate(&sha, (byte*)&s->sin_addr, sizeof(s->sin_addr)); - } - else { - CYASSL_MSG("peer sin_family unknown type in EmbedGenerateCookie"); - return GEN_COOKIE_E; - } - + ShaUpdate(&sha, (byte*)&peer, peerSz); ShaFinal(&sha, digest); if (sz > SHA_DIGEST_SIZE) @@ -512,52 +499,62 @@ int EmbedGenerateCookie(CYASSL* ssl, byte *buf, int sz, void *ctx) #ifdef HAVE_OCSP -#ifdef TEST_IPV6 - typedef struct sockaddr_in6 SOCKADDR_IN_T; - #define AF_INET_V AF_INET6 -#else - typedef struct sockaddr_in SOCKADDR_IN_T; - #define AF_INET_V AF_INET -#endif - -static INLINE int tcp_connect(SOCKET_T* sockfd, const char* ip, word16 port) +static int tcp_connect(SOCKET_T* sockfd, const char* ip, word16 port) { - SOCKADDR_IN_T addr; - const char* host = ip; + struct sockaddr_storage addr; + int sockaddr_len = sizeof(struct sockaddr_in); + XMEMSET(&addr, 0, sizeof(addr)); - /* peer could be in human readable form */ - if (ip != INADDR_ANY && isalpha(ip[0])) { + #ifdef HAVE_GETADDRINFO + { + struct addrinfo hints; + struct addrinfo* answer = NULL; + char strPort[8]; + + XMEMSET(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_protocol = IPPROTO_TCP; + + XSNPRINTF(strPort, sizeof(strPort), "%d", port); + strPort[7] = '\0'; + + if (getaddrinfo(ip, strPort, &hints, &answer) < 0 || answer == NULL) { + CYASSL_MSG("no addr info for OCSP responder"); + return -1; + } + + sockaddr_len = answer->ai_addrlen; + XMEMCPY(&addr, answer->ai_addr, sockaddr_len); + freeaddrinfo(answer); + + } + #else /* HAVE_GETADDRINFO */ + { struct hostent* entry = gethostbyname(ip); + struct sockaddr_in *sin = (struct sockaddr_in *)&addr; if (entry) { - struct sockaddr_in tmp; - XMEMSET(&tmp, 0, sizeof(struct sockaddr_in)); - XMEMCPY(&tmp.sin_addr.s_addr, entry->h_addr_list[0], - entry->h_length); - host = inet_ntoa(tmp.sin_addr); + sin->sin_family = AF_INET; + sin->sin_port = htons(port); + XMEMCPY(&sin->sin_addr.s_addr, entry->h_addr_list[0], + entry->h_length); } else { - CYASSL_MSG("no addr entry for OCSP responder"); + CYASSL_MSG("no addr info for OCSP responder"); return -1; } } + #endif /* HAVE_GETADDRINFO */ - *sockfd = socket(AF_INET_V, SOCK_STREAM, 0); + *sockfd = socket(addr.ss_family, SOCK_STREAM, 0); if (*sockfd < 0) { CYASSL_MSG("bad socket fd, out of fds?"); return -1; } - XMEMSET(&addr, 0, sizeof(SOCKADDR_IN_T)); - addr.sin_family = AF_INET_V; - addr.sin_port = htons(port); - if (host == INADDR_ANY) - addr.sin_addr.s_addr = INADDR_ANY; - else - addr.sin_addr.s_addr = inet_addr(host); - - if (connect(*sockfd, (const struct sockaddr*)&addr, sizeof(addr)) != 0) { + if (connect(*sockfd, (struct sockaddr *)&addr, sockaddr_len) != 0) { CYASSL_MSG("OCSP responder tcp connect failed"); return -1; } @@ -597,15 +594,26 @@ static int decode_url(const char* url, int urlSz, int i, cur; /* need to break the url down into scheme, address, and port */ - /* "http://example.com:8080/" */ + /* "http://example.com:8080/" */ + /* "http://[::1]:443/" */ if (XSTRNCMP(url, "http://", 7) == 0) { cur = 7; } else cur = 0; i = 0; - while (url[cur] != 0 && url[cur] != ':' && + if (url[cur] == '[') { + cur++; + /* copy until ']' */ + while (url[cur] != 0 && url[cur] != ']' && cur < urlSz) { + outName[i++] = url[cur++]; + } + cur++; /* skip ']' */ + } + else { + while (url[cur] != 0 && url[cur] != ':' && url[cur] != '/' && cur < urlSz) { - outName[i++] = url[cur++]; + outName[i++] = url[cur++]; + } } outName[i] = 0; /* Need to pick out the path after the domain name */ @@ -670,7 +678,7 @@ static int process_http_response(int sfd, byte** respBuf, if (result > 0) { len += result; start = (char*)httpBuf; - start[len+1] = 0; + start[len] = 0; } else { CYASSL_MSG("process_http_response recv http from peer failed"); @@ -929,27 +937,6 @@ CYASSL_API void* CyaSSL_GetCookieCtx(CYASSL* ssl) #endif /* CYASSL_DTLS */ -#ifdef HAVE_OCSP - -CYASSL_API void CyaSSL_SetIOOcsp(CYASSL_CTX* ctx, CallbackIOOcsp cb) -{ - ctx->ocsp.CBIOOcsp = cb; -} - -CYASSL_API void CyaSSL_SetIOOcspRespFree(CYASSL_CTX* ctx, - CallbackIOOcspRespFree cb) -{ - ctx->ocsp.CBIOOcspRespFree = cb; -} - -CYASSL_API void CyaSSL_SetIOOcspCtx(CYASSL_CTX* ctx, void *octx) -{ - ctx->ocsp.IOCB_OcspCtx = octx; -} - -#endif - - #ifdef HAVE_NETX /* The NetX receive callback diff --git a/src/ocsp.c b/src/ocsp.c index 6933e9748..d03f66d88 100644 --- a/src/ocsp.c +++ b/src/ocsp.c @@ -27,55 +27,32 @@ #ifdef HAVE_OCSP -#ifdef EBSNET - #include "rtip.h" - #include "socket.h" -#endif - #include #include #include -#include - -#include - -#ifndef EBSNET - #include - #include - #include - #include - #include - #include - #include - #include - #include -#endif -CYASSL_API int ocsp_test(unsigned char* buf, int sz); -#define CYASSL_OCSP_ENABLE 0x0001 /* Enable OCSP lookups */ -#define CYASSL_OCSP_URL_OVERRIDE 0x0002 /* Use the override URL instead of URL - * in certificate */ -#define CYASSL_OCSP_NO_NONCE 0x0004 /* Disables the request nonce */ - -typedef struct sockaddr_in SOCKADDR_IN_T; -#define AF_INET_V AF_INET -#define SOCKET_T unsigned int - - -int CyaSSL_OCSP_Init(CYASSL_OCSP* ocsp) +int InitOCSP(CYASSL_OCSP* ocsp, CYASSL_CERT_MANAGER* cm) { - if (ocsp != NULL) { - XMEMSET(ocsp, 0, sizeof(*ocsp)); - ocsp->useNonce = 1; - #ifndef CYASSL_USER_IO - ocsp->CBIOOcsp = EmbedOcspLookup; - ocsp->CBIOOcspRespFree = EmbedOcspRespFree; - #endif - return 0; - } + CYASSL_ENTER("InitOCSP"); + XMEMSET(ocsp, 0, sizeof(*ocsp)); + ocsp->cm = cm; + if (InitMutex(&ocsp->ocspLock) != 0) + return BAD_MUTEX_E; - return -1; + return 0; +} + + +static int InitOCSP_Entry(OCSP_Entry* ocspe, DecodedCert* cert) +{ + CYASSL_ENTER("InitOCSP_Entry"); + + XMEMSET(ocspe, 0, sizeof(*ocspe)); + XMEMCPY(ocspe->issuerHash, cert->issuerHash, SHA_DIGEST_SIZE); + XMEMCPY(ocspe->issuerKeyHash, cert->issuerKeyHash, SHA_DIGEST_SIZE); + + return 0; } @@ -93,118 +70,22 @@ static void FreeOCSP_Entry(OCSP_Entry* ocspe) } -void CyaSSL_OCSP_Cleanup(CYASSL_OCSP* ocsp) +void FreeOCSP(CYASSL_OCSP* ocsp, int dynamic) { OCSP_Entry* tmp = ocsp->ocspList; - ocsp->enabled = 0; + CYASSL_ENTER("FreeOCSP"); + while (tmp) { OCSP_Entry* next = tmp->next; FreeOCSP_Entry(tmp); XFREE(tmp, NULL, DYNAMIC_TYPE_OCSP_ENTRY); tmp = next; } -} - -int CyaSSL_OCSP_set_override_url(CYASSL_OCSP* ocsp, const char* url) -{ - if (ocsp != NULL) { - int urlSz = (int)XSTRLEN(url); - if (urlSz < (int)sizeof(ocsp->overrideUrl)) { - XSTRNCPY(ocsp->overrideUrl, url, urlSz); - return 1; - } - } - - return 0; -} - - -static int InitOCSP_Entry(OCSP_Entry* ocspe, DecodedCert* cert) -{ - CYASSL_ENTER("InitOCSP_Entry"); - - ocspe->next = NULL; - XMEMCPY(ocspe->issuerHash, cert->issuerHash, SHA_DIGEST_SIZE); - XMEMCPY(ocspe->issuerKeyHash, cert->issuerKeyHash, SHA_DIGEST_SIZE); - ocspe->status = NULL; - ocspe->totalStatus = 0; - - return 0; -} - - -static OCSP_Entry* find_ocsp_entry(CYASSL_OCSP* ocsp, DecodedCert* cert) -{ - OCSP_Entry* entry = ocsp->ocspList; - - while (entry) - { - if (XMEMCMP(entry->issuerHash, cert->issuerHash, SHA_DIGEST_SIZE) == 0 - && XMEMCMP(entry->issuerKeyHash, cert->issuerKeyHash, - SHA_DIGEST_SIZE) == 0) - { - CYASSL_MSG("Found OCSP responder"); - break; - } - else - { - entry = entry->next; - } - } - - if (entry == NULL) - { - CYASSL_MSG("Add a new OCSP entry"); - entry = (OCSP_Entry*)XMALLOC(sizeof(OCSP_Entry), - NULL, DYNAMIC_TYPE_OCSP_ENTRY); - if (entry != NULL) - { - InitOCSP_Entry(entry, cert); - entry->next = ocsp->ocspList; - ocsp->ocspList = entry; - } - } - - return entry; -} - - -static CertStatus* find_cert_status(OCSP_Entry* ocspe, DecodedCert* cert) -{ - CertStatus* stat = ocspe->status; - - while (stat) - { - if(stat->serialSz == cert->serialSz && - (XMEMCMP(stat->serial, cert->serial, cert->serialSz) == 0)) - { - break; - } - else - { - stat = stat->next; - } - } - if (stat == NULL) - { - stat = (CertStatus*)XMALLOC(sizeof(CertStatus), - NULL, DYNAMIC_TYPE_OCSP_STATUS); - if (stat != NULL) - { - XMEMCPY(stat->serial, cert->serial, cert->serialSz); - stat->serialSz = cert->serialSz; - stat->status = -1; - stat->nextDate[0] = 0; - ocspe->totalStatus++; - - stat->next = ocspe->status; - ocspe->status = stat; - } - } - - return stat; + FreeMutex(&ocsp->ocspLock); + if (dynamic) + XFREE(ocsp, NULL, DYNAMIC_TYPE_OCSP); } @@ -224,62 +105,84 @@ static int xstat2err(int stat) } -int CyaSSL_OCSP_Lookup_Cert(CYASSL_OCSP* ocsp, DecodedCert* cert) +int CheckCertOCSP(CYASSL_OCSP* ocsp, DecodedCert* cert) { byte* ocspReqBuf = NULL; int ocspReqSz = 2048; byte* ocspRespBuf = NULL; OcspRequest ocspRequest; OcspResponse ocspResponse; - int result = 0; + int result = -1; OCSP_Entry* ocspe; - CertStatus* certStatus; + CertStatus* certStatus = NULL; + CertStatus newStatus; const char *url; int urlSz; - /* If OCSP lookups are disabled, return success. */ - if (!ocsp->enabled) { - CYASSL_MSG("OCSP lookup disabled, assuming CERT_GOOD"); - return 0; + CYASSL_ENTER("CheckCertOCSP"); + + if (LockMutex(&ocsp->ocspLock) != 0) { + CYASSL_LEAVE("CheckCertOCSP", BAD_MUTEX_E); + return BAD_MUTEX_E; + } + + ocspe = ocsp->ocspList; + while (ocspe) { + if (XMEMCMP(ocspe->issuerHash, cert->issuerHash, SHA_DIGEST_SIZE) == 0 + && XMEMCMP(ocspe->issuerKeyHash, cert->issuerKeyHash, + SHA_DIGEST_SIZE) == 0) + break; + else + ocspe = ocspe->next; } - ocspe = find_ocsp_entry(ocsp, cert); if (ocspe == NULL) { - CYASSL_MSG("alloc OCSP entry failed"); - return MEMORY_ERROR; + ocspe = (OCSP_Entry*)XMALLOC(sizeof(OCSP_Entry), + NULL, DYNAMIC_TYPE_OCSP_ENTRY); + if (ocspe != NULL) { + InitOCSP_Entry(ocspe, cert); + ocspe->next = ocsp->ocspList; + ocsp->ocspList = ocspe; + } + else { + UnLockMutex(&ocsp->ocspLock); + CYASSL_LEAVE("CheckCertOCSP", MEMORY_ERROR); + return MEMORY_ERROR; + } + } + else { + certStatus = ocspe->status; + while (certStatus) { + if (certStatus->serialSz == cert->serialSz && + XMEMCMP(certStatus->serial, cert->serial, cert->serialSz) == 0) + break; + else + certStatus = certStatus->next; + } } - certStatus = find_cert_status(ocspe, cert); - if (certStatus == NULL) - { - CYASSL_MSG("alloc OCSP cert status failed"); - return MEMORY_ERROR; - } - - if (certStatus->status != -1) - { + if (certStatus != NULL) { if (!ValidateDate(certStatus->thisDate, certStatus->thisDateFormat, BEFORE) || (certStatus->nextDate[0] == 0) || !ValidateDate(certStatus->nextDate, - certStatus->nextDateFormat, AFTER)) - { + certStatus->nextDateFormat, AFTER)) { CYASSL_MSG("\tinvalid status date, looking up cert"); - certStatus->status = -1; } - else - { - CYASSL_MSG("\tusing cached status"); + else { result = xstat2err(certStatus->status); + UnLockMutex(&ocsp->ocspLock); + CYASSL_LEAVE("CheckCertOCSP", result); return result; } } - if (ocsp->useOverrideUrl) { - if (ocsp->overrideUrl[0] != '\0') { - url = ocsp->overrideUrl; + UnLockMutex(&ocsp->ocspLock); + + if (ocsp->cm->ocspUseOverrideURL) { + url = ocsp->cm->ocspOverrideURL; + if (url != NULL && url[0] != '\0') urlSz = (int)XSTRLEN(url); - } else return OCSP_NEED_URL; } @@ -288,56 +191,82 @@ int CyaSSL_OCSP_Lookup_Cert(CYASSL_OCSP* ocsp, DecodedCert* cert) urlSz = cert->extAuthInfoSz; } else { - CYASSL_MSG("\tcert doesn't have extAuthInfo, assuming CERT_GOOD"); + /* cert doesn't have extAuthInfo, assuming CERT_GOOD */ return 0; } ocspReqBuf = (byte*)XMALLOC(ocspReqSz, NULL, DYNAMIC_TYPE_IN_BUFFER); if (ocspReqBuf == NULL) { - CYASSL_MSG("\talloc OCSP request buffer failed"); + CYASSL_LEAVE("CheckCertOCSP", MEMORY_ERROR); return MEMORY_ERROR; } - InitOcspRequest(&ocspRequest, cert, ocsp->useNonce, ocspReqBuf, ocspReqSz); + InitOcspRequest(&ocspRequest, cert, ocsp->cm->ocspSendNonce, + ocspReqBuf, ocspReqSz); ocspReqSz = EncodeOcspRequest(&ocspRequest); - if (ocsp->CBIOOcsp) { - result = ocsp->CBIOOcsp(ocsp->IOCB_OcspCtx, url, urlSz, - ocspReqBuf, ocspReqSz, &ocspRespBuf); - } + if (ocsp->cm->ocspIOCb) + result = ocsp->cm->ocspIOCb(ocsp->cm->ocspIOCtx, url, urlSz, + ocspReqBuf, ocspReqSz, &ocspRespBuf); if (result >= 0 && ocspRespBuf) { - InitOcspResponse(&ocspResponse, certStatus, ocspRespBuf, result); + XMEMSET(&newStatus, 0, sizeof(CertStatus)); + + InitOcspResponse(&ocspResponse, &newStatus, ocspRespBuf, result); OcspResponseDecode(&ocspResponse); - if (ocspResponse.responseStatus != OCSP_SUCCESSFUL) { - CYASSL_MSG("OCSP Responder failure"); + if (ocspResponse.responseStatus != OCSP_SUCCESSFUL) result = OCSP_LOOKUP_FAIL; - } else { - if (CompareOcspReqResp(&ocspRequest, &ocspResponse) == 0) - { + else { + if (CompareOcspReqResp(&ocspRequest, &ocspResponse) == 0) { result = xstat2err(ocspResponse.status->status); + + if (LockMutex(&ocsp->ocspLock) != 0) + result = BAD_MUTEX_E; + else { + if (certStatus != NULL) + /* Replace existing certificate entry with updated */ + XMEMCPY(certStatus, &newStatus, sizeof(CertStatus)); + else { + /* Save new certificate entry */ + certStatus = (CertStatus*)XMALLOC(sizeof(CertStatus), + NULL, DYNAMIC_TYPE_OCSP_STATUS); + if (certStatus != NULL) { + XMEMCPY(certStatus, &newStatus, sizeof(CertStatus)); + certStatus->next = ocspe->status; + ocspe->status = certStatus; + ocspe->totalStatus++; + } + } + + UnLockMutex(&ocsp->ocspLock); + } } else - { - CYASSL_MSG("OCSP Response incorrect for Request"); result = OCSP_LOOKUP_FAIL; - } } } - else { + else result = OCSP_LOOKUP_FAIL; - } - if (ocspReqBuf != NULL) { + if (ocspReqBuf != NULL) XFREE(ocspReqBuf, NULL, DYNAMIC_TYPE_IN_BUFFER); - } - if (ocspRespBuf != NULL && ocsp->CBIOOcspRespFree) { - ocsp->CBIOOcspRespFree(ocsp->IOCB_OcspCtx, ocspRespBuf); - } + if (ocspRespBuf != NULL && ocsp->cm->ocspRespFreeCb) + ocsp->cm->ocspRespFreeCb(ocsp->cm->ocspIOCtx, ocspRespBuf); + + CYASSL_LEAVE("CheckCertOCSP", result); return result; } +#else /* HAVE_OCSP */ + + +#ifdef _MSC_VER + /* 4206 warning for blank file */ + #pragma warning(disable: 4206) +#endif + + #endif /* HAVE_OCSP */ diff --git a/src/sniffer.c b/src/sniffer.c index 7eb272f87..8e0bff995 100644 --- a/src/sniffer.c +++ b/src/sniffer.c @@ -417,6 +417,13 @@ void ssl_FreeSniffer(void) FreeMutex(&SessionMutex); FreeMutex(&ServerListMutex); + + if (TraceFile) { + TraceOn = 0; + fclose(TraceFile); + TraceFile = NULL; + } + CyaSSL_Cleanup(); } diff --git a/src/ssl.c b/src/ssl.c index f17449376..c77ec56c1 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -568,6 +568,15 @@ word16 CyaSSL_SNI_GetRequest(CYASSL* ssl, byte type, void** data) return 0; } +int CyaSSL_SNI_GetFromBuffer(const byte* clientHello, word32 helloSz, byte type, + byte* sni, word32* inOutSz) +{ + if (clientHello && helloSz > 0 && sni && inOutSz && *inOutSz > 0) + return TLSX_SNI_GetFromBuffer(clientHello, helloSz, type, sni, inOutSz); + + return BAD_FUNC_ARG; +} + #endif /* NO_CYASSL_SERVER */ #endif /* HAVE_SNI */ @@ -613,6 +622,56 @@ int CyaSSL_CTX_UseTruncatedHMAC(CYASSL_CTX* ctx) #endif /* NO_CYASSL_CLIENT */ #endif /* HAVE_TRUNCATED_HMAC */ +/* Elliptic Curves */ +#ifdef HAVE_SUPPORTED_CURVES +#ifndef NO_CYASSL_CLIENT + +int CyaSSL_UseSupportedCurve(CYASSL* ssl, word16 name) +{ + if (ssl == NULL) + return BAD_FUNC_ARG; + + switch (name) { + case CYASSL_ECC_SECP160R1: + case CYASSL_ECC_SECP192R1: + case CYASSL_ECC_SECP224R1: + case CYASSL_ECC_SECP256R1: + case CYASSL_ECC_SECP384R1: + case CYASSL_ECC_SECP521R1: + break; + + default: + return BAD_FUNC_ARG; + } + + return TLSX_UseSupportedCurve(&ssl->extensions, name); +} + +int CyaSSL_CTX_UseSupportedCurve(CYASSL_CTX* ctx, word16 name) +{ + if (ctx == NULL) + return BAD_FUNC_ARG; + + switch (name) { + case CYASSL_ECC_SECP160R1: + case CYASSL_ECC_SECP192R1: + case CYASSL_ECC_SECP224R1: + case CYASSL_ECC_SECP256R1: + case CYASSL_ECC_SECP384R1: + case CYASSL_ECC_SECP521R1: + break; + + default: + return BAD_FUNC_ARG; + } + + return TLSX_UseSupportedCurve(&ctx->extensions, name); +} + +#endif /* NO_CYASSL_CLIENT */ +#endif /* HAVE_SUPPORTED_CURVES */ + + #ifndef CYASSL_LEANPSK int CyaSSL_send(CYASSL* ssl, const void* data, int sz, int flags) { @@ -901,6 +960,15 @@ int CyaSSL_GetKeySize(CYASSL* ssl) } +int CyaSSL_GetIVSize(CYASSL* ssl) +{ + if (ssl) + return ssl->specs.iv_size; + + return BAD_FUNC_ARG; +} + + int CyaSSL_GetBulkCipher(CYASSL* ssl) { if (ssl) @@ -967,8 +1035,9 @@ int CyaSSL_GetSide(CYASSL* ssl) int CyaSSL_GetHmacSize(CYASSL* ssl) { + /* AEAD ciphers don't have HMAC keys */ if (ssl) - return ssl->specs.hash_size; + return (ssl->specs.cipher_type != aead) ? ssl->specs.hash_size : 0; return BAD_FUNC_ARG; } @@ -986,16 +1055,7 @@ CYASSL_CERT_MANAGER* CyaSSL_CertManagerNew(void) cm = (CYASSL_CERT_MANAGER*) XMALLOC(sizeof(CYASSL_CERT_MANAGER), 0, DYNAMIC_TYPE_CERT_MANAGER); if (cm) { - int i; - - for (i = 0; i < CA_TABLE_SIZE; i++) - cm->caTable[i] = NULL; - cm->heap = NULL; - cm->caCacheCallback = NULL; - cm->crl = NULL; - cm->crlEnabled = 0; - cm->crlCheckAll = 0; - cm->cbMissingCRL = NULL; + XMEMSET(cm, 0, sizeof(CYASSL_CERT_MANAGER)); if (InitMutex(&cm->caLock) != 0) { CYASSL_MSG("Bad mutex init"); @@ -1017,6 +1077,10 @@ void CyaSSL_CertManagerFree(CYASSL_CERT_MANAGER* cm) if (cm->crl) FreeCRL(cm->crl, 1); #endif + #ifdef HAVE_OCSP + if (cm->ocsp) + FreeOCSP(cm->ocsp, 1); + #endif FreeSignerTable(cm->caTable, CA_TABLE_SIZE, NULL); FreeMutex(&cm->caLock); XFREE(cm, NULL, DYNAMIC_TYPE_CERT_MANAGER); @@ -1045,6 +1109,124 @@ int CyaSSL_CertManagerUnloadCAs(CYASSL_CERT_MANAGER* cm) } +/* Return bytes written to buff or < 0 for error */ +int CyaSSL_CertPemToDer(const unsigned char* pem, int pemSz, + unsigned char* buff, int buffSz, + int type) +{ + EncryptedInfo info; + int eccKey = 0; + int ret; + buffer der; + + CYASSL_ENTER("CyaSSL_CertPemToDer"); + + if (pem == NULL || buff == NULL || buffSz <= 0) { + CYASSL_MSG("Bad pem der args"); + return BAD_FUNC_ARG; + } + + if (type != CERT_TYPE && type != CA_TYPE && type != CERTREQ_TYPE) { + CYASSL_MSG("Bad cert type"); + return BAD_FUNC_ARG; + } + + info.set = 0; + info.ctx = NULL; + info.consumed = 0; + der.buffer = NULL; + + ret = PemToDer(pem, pemSz, type, &der, NULL, &info, &eccKey); + if (ret < 0) { + CYASSL_MSG("Bad Pem To Der"); + } + else { + if (der.length <= (word32)buffSz) { + XMEMCPY(buff, der.buffer, der.length); + ret = der.length; + } + else { + CYASSL_MSG("Bad der length"); + ret = BAD_FUNC_ARG; + } + } + + XFREE(der.buffer, NULL, DYNAMIC_TYPE_KEY); + + return ret; +} + + +/* our KeyPemToDer password callback, password in userData */ +static INLINE int OurPasswordCb(char* passwd, int sz, int rw, void* userdata) +{ + (void)rw; + + if (userdata == NULL) + return 0; + + XSTRNCPY(passwd, (char*)userdata, sz); + return min((word32)sz, (word32)XSTRLEN((char*)userdata)); +} + + +/* Return bytes written to buff or < 0 for error */ +int CyaSSL_KeyPemToDer(const unsigned char* pem, int pemSz, unsigned char* buff, + int buffSz, const char* pass) +{ + EncryptedInfo info; + int eccKey = 0; + int ret; + buffer der; + + (void)pass; + + CYASSL_ENTER("CyaSSL_KeyPemToDer"); + + if (pem == NULL || buff == NULL || buffSz <= 0) { + CYASSL_MSG("Bad pem der args"); + return BAD_FUNC_ARG; + } + + info.set = 0; + info.ctx = NULL; + info.consumed = 0; + der.buffer = NULL; + +#ifdef OPENSSL_EXTRA + if (pass) { + info.ctx = CyaSSL_CTX_new(CyaSSLv23_client_method()); + if (info.ctx == NULL) + return MEMORY_E; + CyaSSL_CTX_set_default_passwd_cb(info.ctx, OurPasswordCb); + CyaSSL_CTX_set_default_passwd_cb_userdata(info.ctx, (void*)pass); + } +#endif + + ret = PemToDer(pem, pemSz, PRIVATEKEY_TYPE, &der, NULL, &info, &eccKey); + if (ret < 0) { + CYASSL_MSG("Bad Pem To Der"); + } + else { + if (der.length <= (word32)buffSz) { + XMEMCPY(buff, der.buffer, der.length); + ret = der.length; + } + else { + CYASSL_MSG("Bad der length"); + ret = BAD_FUNC_ARG; + } + } + + XFREE(der.buffer, NULL, DYNAMIC_TYPE_KEY); + + if (info.ctx) + CyaSSL_CTX_free(info.ctx); + + return ret; +} + + #endif /* !NO_CERTS */ @@ -1484,6 +1666,7 @@ int CyaSSL_Init(void) char* consumedEnd; char* bufferEnd = (char*)(buff + longSz); long neededSz; + int ret = 0; int pkcs8 = 0; int pkcs8Enc = 0; int dynamicType = 0; @@ -1497,6 +1680,12 @@ int CyaSSL_Init(void) XSTRNCPY(footer, "-----END CERTIFICATE-----", sizeof(footer)); dynamicType = (type == CA_TYPE) ? DYNAMIC_TYPE_CA : DYNAMIC_TYPE_CERT; + } else if (type == CERTREQ_TYPE) { + XSTRNCPY(header, "-----BEGIN CERTIFICATE REQUEST-----", + sizeof(header)); + XSTRNCPY(footer, "-----END CERTIFICATE REQUEST-----", + sizeof(footer)); + dynamicType = DYNAMIC_TYPE_KEY; } else if (type == DH_PARAM_TYPE) { XSTRNCPY(header, "-----BEGIN DH PARAMETERS-----", sizeof(header)); XSTRNCPY(footer, "-----END DH PARAMETERS-----", sizeof(footer)); @@ -1635,8 +1824,15 @@ int CyaSSL_Init(void) &der->length) < 0) return SSL_BAD_FILE; - if (pkcs8) - return ToTraditional(der->buffer, der->length); + if (pkcs8) { + /* convert and adjust length */ + if ( (ret = ToTraditional(der->buffer, der->length)) < 0 ) { + return ret; + } else { + der->length = ret; + return 0; + } + } #if defined(OPENSSL_EXTRA) && !defined(NO_PWDBASED) if (pkcs8Enc) { @@ -1647,8 +1843,14 @@ int CyaSSL_Init(void) return SSL_BAD_FILE; /* no callback error */ passwordSz = info->ctx->passwd_cb(password, sizeof(password), 0, info->ctx->userdata); - return ToTraditionalEnc(der->buffer, der->length, password, - passwordSz); + /* convert and adjust length */ + if ( (ret = ToTraditionalEnc(der->buffer, der->length, password, + passwordSz)) < 0 ) { + return ret; + } else { + der->length = ret; + return 0; + } } #endif @@ -1677,6 +1879,7 @@ int CyaSSL_Init(void) der.buffer = 0; (void)dynamicType; + (void)rsaKey; if (used) *used = sz; /* used bytes default to sz, PEM chain may shorten*/ @@ -1927,7 +2130,8 @@ int CyaSSL_Init(void) } ecc_free(&key); eccKey = 1; - ctx->haveStaticECC = 1; + if (ctx) + ctx->haveStaticECC = 1; if (ssl) ssl->options.haveStaticECC = 1; } @@ -1959,6 +2163,13 @@ int CyaSSL_Init(void) break; } +#ifdef HAVE_ECC + if (ctx) + ctx->pkCurveOID = cert.pkCurveOID; + if (ssl) + ssl->pkCurveOID = cert.pkCurveOID; +#endif + FreeDecodedCert(&cert); } @@ -2399,6 +2610,62 @@ int CyaSSL_CertManagerDisableCRL(CYASSL_CERT_MANAGER* cm) } +/* turn on OCSP if off and compiled in, set options */ +int CyaSSL_CertManagerEnableOCSP(CYASSL_CERT_MANAGER* cm, int options) +{ + int ret = SSL_SUCCESS; + + (void)options; + + CYASSL_ENTER("CyaSSL_CertManagerEnableOCSP"); + if (cm == NULL) + return BAD_FUNC_ARG; + + #ifdef HAVE_OCSP + if (cm->ocsp == NULL) { + cm->ocsp = (CYASSL_OCSP*)XMALLOC(sizeof(CYASSL_OCSP), cm->heap, + DYNAMIC_TYPE_OCSP); + if (cm->ocsp == NULL) + return MEMORY_E; + + if (InitOCSP(cm->ocsp, cm) != 0) { + CYASSL_MSG("Init OCSP failed"); + FreeOCSP(cm->ocsp, 1); + cm->ocsp = NULL; + return SSL_FAILURE; + } + } + cm->ocspEnabled = 1; + if (options & CYASSL_OCSP_URL_OVERRIDE) + cm->ocspUseOverrideURL = 1; + if (options & CYASSL_OCSP_NO_NONCE) + cm->ocspSendNonce = 0; + else + cm->ocspSendNonce = 1; + #ifndef CYASSL_USER_IO + cm->ocspIOCb = EmbedOcspLookup; + cm->ocspRespFreeCb = EmbedOcspRespFree; + #endif /* CYASSL_USER_IO */ + #else + ret = NOT_COMPILED_IN; + #endif + + return ret; +} + + +int CyaSSL_CertManagerDisableOCSP(CYASSL_CERT_MANAGER* cm) +{ + CYASSL_ENTER("CyaSSL_CertManagerDisableOCSP"); + if (cm == NULL) + return BAD_FUNC_ARG; + + cm->ocspEnabled = 0; + + return SSL_SUCCESS; +} + + int CyaSSL_CTX_check_private_key(CYASSL_CTX* ctx) { /* TODO: check private against public for RSA match */ @@ -2561,6 +2828,171 @@ int CyaSSL_CTX_SetCRL_Cb(CYASSL_CTX* ctx, CbMissingCRL cb) #endif /* HAVE_CRL */ +#ifdef HAVE_OCSP + + +/* check CRL if enabled, SSL_SUCCESS */ +int CyaSSL_CertManagerCheckOCSP(CYASSL_CERT_MANAGER* cm, byte* der, int sz) +{ + int ret; + DecodedCert cert; + + CYASSL_ENTER("CyaSSL_CertManagerCheckOCSP"); + + if (cm == NULL) + return BAD_FUNC_ARG; + + if (cm->ocspEnabled == 0) + return SSL_SUCCESS; + + InitDecodedCert(&cert, der, sz, NULL); + + ret = ParseCertRelative(&cert, CERT_TYPE, NO_VERIFY, cm); + if (ret != 0) { + CYASSL_MSG("ParseCert failed"); + return ret; + } + else { + ret = CheckCertOCSP(cm->ocsp, &cert); + if (ret != 0) { + CYASSL_MSG("CheckCertOCSP failed"); + } + } + + FreeDecodedCert(&cert); + + if (ret == 0) + return SSL_SUCCESS; /* convert */ + + return ret; +} + + +int CyaSSL_CertManagerSetOCSPOverrideURL(CYASSL_CERT_MANAGER* cm, + const char* url) +{ + CYASSL_ENTER("CyaSSL_CertManagerSetOCSPOverrideURL"); + if (cm == NULL) + return BAD_FUNC_ARG; + + XFREE(cm->ocspOverrideURL, cm->heap, 0); + if (url != NULL) { + int urlSz = (int)XSTRLEN(url) + 1; + cm->ocspOverrideURL = (char*)XMALLOC(urlSz, cm->heap, 0); + if (cm->ocspOverrideURL != NULL) { + XMEMCPY(cm->ocspOverrideURL, url, urlSz); + } + else + return MEMORY_E; + } + else + cm->ocspOverrideURL = NULL; + + return SSL_SUCCESS; +} + + +int CyaSSL_CertManagerSetOCSP_Cb(CYASSL_CERT_MANAGER* cm, + CbOCSPIO ioCb, CbOCSPRespFree respFreeCb, void* ioCbCtx) +{ + CYASSL_ENTER("CyaSSL_CertManagerSetOCSP_Cb"); + if (cm == NULL) + return BAD_FUNC_ARG; + + cm->ocspIOCb = ioCb; + cm->ocspRespFreeCb = respFreeCb; + cm->ocspIOCtx = ioCbCtx; + + return SSL_SUCCESS; +} + + +int CyaSSL_EnableOCSP(CYASSL* ssl, int options) +{ + CYASSL_ENTER("CyaSSL_EnableOCSP"); + if (ssl) + return CyaSSL_CertManagerEnableOCSP(ssl->ctx->cm, options); + else + return BAD_FUNC_ARG; +} + + +int CyaSSL_DisableOCSP(CYASSL* ssl) +{ + CYASSL_ENTER("CyaSSL_DisableOCSP"); + if (ssl) + return CyaSSL_CertManagerDisableOCSP(ssl->ctx->cm); + else + return BAD_FUNC_ARG; +} + + +int CyaSSL_SetOCSP_OverrideURL(CYASSL* ssl, const char* url) +{ + CYASSL_ENTER("CyaSSL_SetOCSP_OverrideURL"); + if (ssl) + return CyaSSL_CertManagerSetOCSPOverrideURL(ssl->ctx->cm, url); + else + return BAD_FUNC_ARG; +} + + +int CyaSSL_SetOCSP_Cb(CYASSL* ssl, + CbOCSPIO ioCb, CbOCSPRespFree respFreeCb, void* ioCbCtx) +{ + CYASSL_ENTER("CyaSSL_SetOCSP_Cb"); + if (ssl) + return CyaSSL_CertManagerSetOCSP_Cb(ssl->ctx->cm, + ioCb, respFreeCb, ioCbCtx); + else + return BAD_FUNC_ARG; +} + + +int CyaSSL_CTX_EnableOCSP(CYASSL_CTX* ctx, int options) +{ + CYASSL_ENTER("CyaSSL_CTX_EnableOCSP"); + if (ctx) + return CyaSSL_CertManagerEnableOCSP(ctx->cm, options); + else + return BAD_FUNC_ARG; +} + + +int CyaSSL_CTX_DisableOCSP(CYASSL_CTX* ctx) +{ + CYASSL_ENTER("CyaSSL_CTX_DisableOCSP"); + if (ctx) + return CyaSSL_CertManagerDisableOCSP(ctx->cm); + else + return BAD_FUNC_ARG; +} + + +int CyaSSL_CTX_SetOCSP_OverrideURL(CYASSL_CTX* ctx, const char* url) +{ + CYASSL_ENTER("CyaSSL_SetOCSP_OverrideURL"); + if (ctx) + return CyaSSL_CertManagerSetOCSPOverrideURL(ctx->cm, url); + else + return BAD_FUNC_ARG; +} + + +int CyaSSL_CTX_SetOCSP_Cb(CYASSL_CTX* ctx, + CbOCSPIO ioCb, CbOCSPRespFree respFreeCb, void* ioCbCtx) +{ + CYASSL_ENTER("CyaSSL_CTX_SetOCSP_Cb"); + if (ctx) + return CyaSSL_CertManagerSetOCSP_Cb(ctx->cm, ioCb, respFreeCb, ioCbCtx); + else + return BAD_FUNC_ARG; +} + + +#endif /* HAVE_OCSP */ + + #ifdef CYASSL_DER_LOAD /* Add format parameter to allow DER load of CA files */ @@ -7048,28 +7480,170 @@ int CyaSSL_set_compression(CYASSL* ssl) } - /* copy name into in buffer, at most sz bytes, if buffer is null will - malloc buffer, call responsible for freeing */ - char* CyaSSL_X509_NAME_oneline(CYASSL_X509_NAME* name, char* in, int sz) + int CyaSSL_X509_get_isCA(CYASSL_X509* x509) { - int copySz = min(sz, name->sz); + int isCA = 0; - CYASSL_ENTER("CyaSSL_X509_NAME_oneline"); - if (!name->sz) return in; + CYASSL_ENTER("CyaSSL_X509_get_isCA"); - if (!in) { - in = (char*)XMALLOC(name->sz, 0, DYNAMIC_TYPE_OPENSSL); - if (!in ) return in; - copySz = name->sz; + if (x509 != NULL) + isCA = x509->isCa; + + CYASSL_LEAVE("CyaSSL_X509_get_isCA", isCA); + + return isCA; + } + + +#ifdef OPENSSL_EXTRA + int CyaSSL_X509_ext_isSet_by_NID(CYASSL_X509* x509, int nid) + { + int isSet = 0; + + CYASSL_ENTER("CyaSSL_X509_ext_isSet_by_NID"); + + if (x509 != NULL) { + switch (nid) { + case BASIC_CA_OID: isSet = x509->basicConstSet; break; + case ALT_NAMES_OID: isSet = x509->subjAltNameSet; break; + case AUTH_KEY_OID: isSet = x509->authKeyIdSet; break; + case SUBJ_KEY_OID: isSet = x509->subjKeyIdSet; break; + case KEY_USAGE_OID: isSet = x509->keyUsageSet; break; + #ifdef CYASSL_SEP + case CERT_POLICY_OID: isSet = x509->certPolicySet; break; + #endif /* CYASSL_SEP */ + } } - if (copySz == 0) - return in; + CYASSL_LEAVE("CyaSSL_X509_ext_isSet_by_NID", isSet); - XMEMCPY(in, name->name, copySz - 1); - in[copySz - 1] = 0; + return isSet; + } - return in; + + int CyaSSL_X509_ext_get_critical_by_NID(CYASSL_X509* x509, int nid) + { + int crit = 0; + + CYASSL_ENTER("CyaSSL_X509_ext_get_critical_by_NID"); + + if (x509 != NULL) { + switch (nid) { + case BASIC_CA_OID: crit = x509->basicConstCrit; break; + case ALT_NAMES_OID: crit = x509->subjAltNameCrit; break; + case AUTH_KEY_OID: crit = x509->authKeyIdCrit; break; + case SUBJ_KEY_OID: crit = x509->subjKeyIdCrit; break; + case KEY_USAGE_OID: crit = x509->keyUsageCrit; break; + #ifdef CYASSL_SEP + case CERT_POLICY_OID: crit = x509->certPolicyCrit; break; + #endif /* CYASSL_SEP */ + } + } + + CYASSL_LEAVE("CyaSSL_X509_ext_get_critical_by_NID", crit); + + return crit; + } + + + int CyaSSL_X509_get_isSet_pathLength(CYASSL_X509* x509) + { + int isSet = 0; + + CYASSL_ENTER("CyaSSL_X509_get_isSet_pathLength"); + + if (x509 != NULL) + isSet = x509->basicConstPlSet; + + CYASSL_LEAVE("CyaSSL_X509_get_isSet_pathLength", isSet); + + return isSet; + } + + + word32 CyaSSL_X509_get_pathLength(CYASSL_X509* x509) + { + word32 pathLength = 0; + + CYASSL_ENTER("CyaSSL_X509_get_pathLength"); + + if (x509 != NULL) + pathLength = x509->pathLength; + + CYASSL_LEAVE("CyaSSL_X509_get_pathLength", pathLength); + + return pathLength; + } + + + unsigned int CyaSSL_X509_get_keyUsage(CYASSL_X509* x509) + { + word16 usage = 0; + + CYASSL_ENTER("CyaSSL_X509_get_keyUsage"); + + if (x509 != NULL) + usage = x509->keyUsage; + + CYASSL_LEAVE("CyaSSL_X509_get_keyUsage", usage); + + return usage; + } + + + byte* CyaSSL_X509_get_authorityKeyID( + CYASSL_X509* x509, byte* dst, int* dstLen) + { + byte *id = NULL; + int copySz = 0; + + CYASSL_ENTER("CyaSSL_X509_get_authorityKeyID"); + + if (x509 != NULL) { + if (x509->authKeyIdSet) { + copySz = min(dstLen != NULL ? *dstLen : 0, + (int)x509->authKeyIdSz); + id = x509->authKeyId; + } + + if (dst != NULL && dstLen != NULL && id != NULL && copySz > 0) { + XMEMCPY(dst, id, copySz); + id = dst; + *dstLen = copySz; + } + } + + CYASSL_LEAVE("CyaSSL_X509_get_authorityKeyID", copySz); + + return id; + } + + + byte* CyaSSL_X509_get_subjectKeyID( + CYASSL_X509* x509, byte* dst, int* dstLen) + { + byte *id = NULL; + int copySz = 0; + + CYASSL_ENTER("CyaSSL_X509_get_subjectKeyID"); + + if (x509 != NULL) { + if (x509->subjKeyIdSet) { + copySz = min(dstLen != NULL ? *dstLen : 0, + (int)x509->subjKeyIdSz); + id = x509->subjKeyId; + } + + if (dst != NULL && dstLen != NULL && id != NULL && copySz > 0) { + XMEMCPY(dst, id, copySz); + id = dst; + *dstLen = copySz; + } + } + + CYASSL_LEAVE("CyaSSL_X509_get_subjectKeyID", copySz); + + return id; } @@ -7141,6 +7715,32 @@ int CyaSSL_set_compression(CYASSL* ssl) CYASSL_LEAVE("CyaSSL_X509_NAME_get_text_by_NID", textSz); return textSz; } +#endif + + + /* copy name into in buffer, at most sz bytes, if buffer is null will + malloc buffer, call responsible for freeing */ + char* CyaSSL_X509_NAME_oneline(CYASSL_X509_NAME* name, char* in, int sz) + { + int copySz = min(sz, name->sz); + + CYASSL_ENTER("CyaSSL_X509_NAME_oneline"); + if (!name->sz) return in; + + if (!in) { + in = (char*)XMALLOC(name->sz, 0, DYNAMIC_TYPE_OPENSSL); + if (!in ) return in; + copySz = name->sz; + } + + if (copySz == 0) + return in; + + XMEMCPY(in, name->name, copySz - 1); + in[copySz - 1] = 0; + + return in; + } int CyaSSL_X509_get_signature_type(CYASSL_X509* x509) @@ -7340,6 +7940,8 @@ CYASSL_X509* CyaSSL_X509_d2i(CYASSL_X509** x509, const byte* in, int len) } +#ifndef NO_FILESYSTEM + CYASSL_X509* CyaSSL_X509_d2i_fp(CYASSL_X509** x509, XFILE file) { CYASSL_X509* newX509 = NULL; @@ -7463,6 +8065,7 @@ CYASSL_X509* CyaSSL_X509_load_certificate_file(const char* fname, int format) return x509; } +#endif /* NO_FILESYSTEM */ #endif /* KEEP_PEER_CERT || SESSION_CERTS */ @@ -8329,6 +8932,9 @@ CYASSL_X509* CyaSSL_X509_load_certificate_file(const char* fname, int format) XMEMCPY(key->pkey.ptr, x509->pubKey.buffer, x509->pubKey.length); key->pkey_sz = x509->pubKey.length; + #ifdef HAVE_ECC + key->pkey_curve = (int)x509->pkCurveOID; + #endif /* HAVE_ECC */ } } return key; @@ -10430,49 +11036,6 @@ static int initGlobalRNG = 0; -/* Return bytes written to buff or < 0 for error */ -int CyaSSL_KeyPemToDer(const unsigned char* pem, int pemSz, unsigned char* buff, - int buffSz, const char* pass) -{ - EncryptedInfo info; - int eccKey = 0; - int ret; - buffer der; - - (void)pass; - - CYASSL_ENTER("CyaSSL_KeyPemToDer"); - - if (pem == NULL || buff == NULL || buffSz <= 0) { - CYASSL_MSG("Bad pem der args"); - return BAD_FUNC_ARG; - } - - info.set = 0; - info.ctx = NULL; - info.consumed = 0; - der.buffer = NULL; - - ret = PemToDer(pem, pemSz, PRIVATEKEY_TYPE, &der, NULL, &info, &eccKey); - if (ret < 0) { - CYASSL_MSG("Bad Pem To Der"); - } - else { - if (der.length <= (word32)buffSz) { - XMEMCPY(buff, der.buffer, der.length); - ret = der.length; - } - else { - CYASSL_MSG("Bad der length"); - ret = BAD_FUNC_ARG; - } - } - - XFREE(der.buffer, NULL, DYNAMIC_TYPE_KEY); - - return ret; -} - /* Load RSA from Der, SSL_SUCCESS on success < 0 on error */ int CyaSSL_RSA_LoadDer(CYASSL_RSA* rsa, const unsigned char* der, int derSz) @@ -10685,38 +11248,6 @@ const byte* CyaSSL_get_sessionID(const CYASSL_SESSION* session) #endif /* SESSION_CERTS */ -int CyaSSL_CTX_OCSP_set_options(CYASSL_CTX* ctx, int options) -{ - CYASSL_ENTER("CyaSSL_CTX_OCSP_set_options"); -#ifdef HAVE_OCSP - if (ctx != NULL) { - ctx->ocsp.enabled = (options & CYASSL_OCSP_ENABLE) != 0; - ctx->ocsp.useOverrideUrl = (options & CYASSL_OCSP_URL_OVERRIDE) != 0; - ctx->ocsp.useNonce = (options & CYASSL_OCSP_NO_NONCE) == 0; - return SSL_SUCCESS; - } - return SSL_FAILURE; -#else - (void)ctx; - (void)options; - return NOT_COMPILED_IN; -#endif -} - - -int CyaSSL_CTX_OCSP_set_override_url(CYASSL_CTX* ctx, const char* url) -{ - CYASSL_ENTER("CyaSSL_CTX_OCSP_set_override_url"); -#ifdef HAVE_OCSP - return CyaSSL_OCSP_set_override_url(&ctx->ocsp, url); -#else - (void)ctx; - (void)url; - return NOT_COMPILED_IN; -#endif -} - - #ifndef NO_CERTS #ifdef HAVE_PK_CALLBACKS @@ -10866,3 +11397,9 @@ void* CyaSSL_GetRsaDecCtx(CYASSL* ssl) #endif /* HAVE_PK_CALLBACKS */ #endif /* NO_CERTS */ + +#ifdef CYASSL_HAVE_WOLFSCEP + /* Used by autoconf to see if wolfSCEP is available */ + void CyaSSL_wolfSCEP(void) {} +#endif + diff --git a/src/tls.c b/src/tls.c index 878e2e003..6f4d4e6cb 100644 --- a/src/tls.c +++ b/src/tls.c @@ -376,6 +376,14 @@ static INLINE void ato16(const byte* c, word16* u16) { *u16 = (c[0] << 8) | (c[1]); } + +#ifdef HAVE_SNI +/* convert a 24 bit integer into a 32 bit one */ +static INLINE void c24to32(const word24 u24, word32* u32) +{ + *u32 = (u24[0] << 16) | (u24[1] << 8) | u24[2]; +} +#endif #endif /* convert 32 bit integer to opaque */ @@ -393,7 +401,7 @@ static INLINE word32 GetSEQIncrement(CYASSL* ssl, int verify) #ifdef CYASSL_DTLS if (ssl->options.dtls) { if (verify) - return ssl->keys.dtls_peer_sequence_number; /* explicit from peer */ + return ssl->keys.dtls_state.curSeq; /* explicit from peer */ else return ssl->keys.dtls_sequence_number - 1; /* already incremented */ } @@ -410,9 +418,9 @@ static INLINE word32 GetSEQIncrement(CYASSL* ssl, int verify) static INLINE word32 GetEpoch(CYASSL* ssl, int verify) { if (verify) - return ssl->keys.dtls_peer_epoch; + return ssl->keys.dtls_state.curEpoch; else - return ssl->keys.dtls_epoch; + return ssl->keys.dtls_epoch; } #endif /* CYASSL_DTLS */ @@ -507,6 +515,12 @@ void TLS_hmac(CYASSL* ssl, byte* digest, const byte* in, word32 sz, #ifdef HAVE_TLS_EXTENSIONS +#define IS_OFF(semaphore, light) \ + ((semaphore)[(light) / 8] ^ (byte) (0x01 << ((light) % 8))) + +#define TURN_ON(semaphore, light) \ + ((semaphore)[(light) / 8] |= (byte) (0x01 << ((light) % 8))) + static int TLSX_Append(TLSX** list, TLSX_Type type) { TLSX* extension; @@ -528,7 +542,9 @@ static int TLSX_Append(TLSX** list, TLSX_Type type) #ifndef NO_CYASSL_SERVER -static void TLSX_SetResponse(CYASSL* ssl, TLSX_Type type) +void TLSX_SetResponse(CYASSL* ssl, TLSX_Type type); + +void TLSX_SetResponse(CYASSL* ssl, TLSX_Type type) { TLSX *ext = TLSX_Find(ssl->extensions, type); @@ -760,7 +776,7 @@ static int TLSX_SNI_Parse(CYASSL* ssl, byte* input, word16 length, int r = TLSX_UseSNI(&ssl->extensions, type, input + offset, size); - if (r) return r; /* throw error */ + if (r != SSL_SUCCESS) return r; /* throw error */ TLSX_SNI_SetStatus(ssl->extensions, type, matched ? CYASSL_SNI_REAL_MATCH : CYASSL_SNI_FAKE_MATCH); @@ -826,7 +842,7 @@ int TLSX_UseSNI(TLSX** extensions, byte type, const void* data, word16 size) } } while ((sni = sni->next)); - return 0; + return SSL_SUCCESS; } #ifndef NO_CYASSL_SERVER @@ -854,6 +870,135 @@ void TLSX_SNI_SetOptions(TLSX* extensions, byte type, byte options) if (sni) sni->options = options; } + +int TLSX_SNI_GetFromBuffer(const byte* clientHello, word32 helloSz, + byte type, byte* sni, word32* inOutSz) +{ + word32 offset = 0; + word32 len32 = 0; + word16 len16 = 0; + + if (helloSz < RECORD_HEADER_SZ + HANDSHAKE_HEADER_SZ + CLIENT_HELLO_FIRST) + return INCOMPLETE_DATA; + + /* TLS record header */ + if ((enum ContentType) clientHello[offset++] != handshake) + return BUFFER_ERROR; + + if (clientHello[offset++] != SSLv3_MAJOR) + return BUFFER_ERROR; + + if (clientHello[offset++] < TLSv1_MINOR) + return BUFFER_ERROR; + + ato16(clientHello + offset, &len16); + offset += OPAQUE16_LEN; + + if (offset + len16 > helloSz) + return INCOMPLETE_DATA; + + /* Handshake header */ + if ((enum HandShakeType) clientHello[offset] != client_hello) + return BUFFER_ERROR; + + c24to32(clientHello + offset + 1, &len32); + offset += HANDSHAKE_HEADER_SZ; + + if (offset + len32 > helloSz) + return INCOMPLETE_DATA; + + /* client hello */ + offset += VERSION_SZ + RAN_LEN; /* version, random */ + + if (helloSz < offset + clientHello[offset]) + return INCOMPLETE_DATA; + + offset += ENUM_LEN + clientHello[offset]; /* skip session id */ + + /* cypher suites */ + if (helloSz < offset + OPAQUE16_LEN) + return INCOMPLETE_DATA; + + ato16(clientHello + offset, &len16); + offset += OPAQUE16_LEN; + + if (helloSz < offset + len16) + return INCOMPLETE_DATA; + + offset += len16; /* skip cypher suites */ + + /* compression methods */ + if (helloSz < offset + 1) + return INCOMPLETE_DATA; + + if (helloSz < offset + clientHello[offset]) + return INCOMPLETE_DATA; + + offset += ENUM_LEN + clientHello[offset]; /* skip compression methods */ + + /* extensions */ + if (helloSz < offset + OPAQUE16_LEN) + return 0; /* no extensions in client hello. */ + + ato16(clientHello + offset, &len16); + offset += OPAQUE16_LEN; + + if (helloSz < offset + len16) + return INCOMPLETE_DATA; + + while (len16 > OPAQUE16_LEN + OPAQUE16_LEN) { + word16 extType; + word16 extLen; + + ato16(clientHello + offset, &extType); + offset += OPAQUE16_LEN; + + ato16(clientHello + offset, &extLen); + offset += OPAQUE16_LEN; + + if (helloSz < offset + extLen) + return INCOMPLETE_DATA; + + if (extType != SERVER_NAME_INDICATION) { + offset += extLen; /* skip extension */ + } else { + word16 listLen; + + ato16(clientHello + offset, &listLen); + offset += OPAQUE16_LEN; + + if (helloSz < offset + listLen) + return INCOMPLETE_DATA; + + while (listLen > ENUM_LEN + OPAQUE16_LEN) { + byte sniType = clientHello[offset++]; + word16 sniLen; + + ato16(clientHello + offset, &sniLen); + offset += OPAQUE16_LEN; + + if (helloSz < offset + sniLen) + return INCOMPLETE_DATA; + + if (sniType != type) { + offset += sniLen; + listLen -= min(ENUM_LEN + OPAQUE16_LEN + sniLen, listLen); + continue; + } + + *inOutSz = min(sniLen, *inOutSz); + XMEMCPY(sni, clientHello + offset, *inOutSz); + + return SSL_SUCCESS; + } + } + + len16 -= min(2 * OPAQUE16_LEN + extLen, len16); + } + + return len16 ? BUFFER_ERROR : SSL_SUCCESS; +} + #endif #define SNI_FREE_ALL TLSX_SNI_FreeAll @@ -902,7 +1047,7 @@ static int TLSX_MFL_Parse(CYASSL* ssl, byte* input, word16 length, if (isRequest) { int r = TLSX_UseMaxFragment(&ssl->extensions, *input); - if (r) return r; /* throw error */ + if (r != SSL_SUCCESS) return r; /* throw error */ TLSX_SetResponse(ssl, MAX_FRAGMENT_LENGTH); } @@ -952,7 +1097,7 @@ int TLSX_UseMaxFragment(TLSX** extensions, byte mfl) } } while ((extension = extension->next)); - return 0; + return SSL_SUCCESS; } @@ -983,7 +1128,7 @@ int TLSX_UseTruncatedHMAC(TLSX** extensions) if ((ret = TLSX_Append(extensions, TRUNCATED_HMAC)) != 0) return ret; - return 0; + return SSL_SUCCESS; } static int TLSX_THM_Parse(CYASSL* ssl, byte* input, word16 length, @@ -996,7 +1141,7 @@ static int TLSX_THM_Parse(CYASSL* ssl, byte* input, word16 length, if (isRequest) { int r = TLSX_UseTruncatedHMAC(&ssl->extensions); - if (r) return r; /* throw error */ + if (r != SSL_SUCCESS) return r; /* throw error */ TLSX_SetResponse(ssl, TRUNCATED_HMAC); } @@ -1004,9 +1149,6 @@ static int TLSX_THM_Parse(CYASSL* ssl, byte* input, word16 length, ssl->truncated_hmac = 1; -#error "TRUNCATED HMAC IS NOT FINISHED YET \ -(contact moises@wolfssl.com for more info)" - return 0; } @@ -1018,6 +1160,292 @@ static int TLSX_THM_Parse(CYASSL* ssl, byte* input, word16 length, #endif /* HAVE_TRUNCATED_HMAC */ +#ifdef HAVE_SUPPORTED_CURVES + +#ifndef HAVE_ECC +#error "Elliptic Curves Extension requires Elliptic Curve Cryptography. \ +Use --enable-ecc in the configure script or define HAVE_ECC." +#endif + +static void TLSX_EllipticCurve_FreeAll(EllipticCurve* list) +{ + EllipticCurve* curve; + + while ((curve = list)) { + list = curve->next; + XFREE(curve, 0, DYNAMIC_TYPE_TLSX); + } +} + +static int TLSX_EllipticCurve_Append(EllipticCurve** list, word16 name) +{ + EllipticCurve* curve; + + if (list == NULL) + return BAD_FUNC_ARG; + + if ((curve = XMALLOC(sizeof(EllipticCurve), 0, DYNAMIC_TYPE_TLSX)) == NULL) + return MEMORY_E; + + curve->name = name; + curve->next = *list; + + *list = curve; + + return 0; +} + +#ifndef NO_CYASSL_CLIENT + +static void TLSX_EllipticCurve_ValidateRequest(CYASSL* ssl, byte* semaphore) +{ + int i; + + for (i = 0; i < ssl->suites->suiteSz; i+= 2) + if (ssl->suites->suites[i] == ECC_BYTE) + return; + + /* No elliptic curve suite found */ + TURN_ON(semaphore, ELLIPTIC_CURVES); +} + +static word16 TLSX_EllipticCurve_GetSize(EllipticCurve* list) +{ + EllipticCurve* curve; + word16 length = OPAQUE16_LEN; /* list length */ + + while ((curve = list)) { + list = curve->next; + length += OPAQUE16_LEN; /* curve length */ + } + + return length; +} + +static word16 TLSX_EllipticCurve_WriteR(EllipticCurve* curve, byte* output); +static word16 TLSX_EllipticCurve_WriteR(EllipticCurve* curve, byte* output) +{ + word16 offset = 0; + + if (!curve) + return offset; + + offset = TLSX_EllipticCurve_WriteR(curve->next, output); + c16toa(curve->name, output + offset); + + return OPAQUE16_LEN + offset; +} + +static word16 TLSX_EllipticCurve_Write(EllipticCurve* list, byte* output) +{ + word16 length = TLSX_EllipticCurve_WriteR(list, output + OPAQUE16_LEN); + + c16toa(length, output); /* writing list length */ + + return OPAQUE16_LEN + length; +} + +#endif /* NO_CYASSL_CLIENT */ +#ifndef NO_CYASSL_SERVER + +static int TLSX_EllipticCurve_Parse(CYASSL* ssl, byte* input, word16 length, + byte isRequest) +{ + word16 offset; + word16 name; + int r; + + (void) isRequest; /* shut up compiler! */ + + if (OPAQUE16_LEN > length || length % OPAQUE16_LEN) + return INCOMPLETE_DATA; + + ato16(input, &offset); + + /* validating curve list length */ + if (length != OPAQUE16_LEN + offset) + return INCOMPLETE_DATA; + + while (offset) { + ato16(input + offset, &name); + offset -= OPAQUE16_LEN; + + r = TLSX_UseSupportedCurve(&ssl->extensions, name); + + if (r != SSL_SUCCESS) return r; /* throw error */ + } + + return 0; +} + +int TLSX_ValidateEllipticCurves(CYASSL* ssl, byte first, byte second) { + TLSX* extension = (first == ECC_BYTE) + ? TLSX_Find(ssl->extensions, ELLIPTIC_CURVES) + : NULL; + EllipticCurve* curve = NULL; + word32 oid = 0; + word16 octets = 0; /* acording to 'ecc_set_type ecc_sets[];' */ + int sig = 0; /* valitade signature */ + int key = 0; /* validate key */ + + if (!extension) + return 1; /* no suite restriction */ + + for (curve = extension->data; curve && !(sig && key); curve = curve->next) { + + switch (curve->name) { + case CYASSL_ECC_SECP160R1: oid = ECC_160R1; octets = 20; break; + case CYASSL_ECC_SECP192R1: oid = ECC_192R1; octets = 24; break; + case CYASSL_ECC_SECP224R1: oid = ECC_224R1; octets = 28; break; + case CYASSL_ECC_SECP256R1: oid = ECC_256R1; octets = 32; break; + case CYASSL_ECC_SECP384R1: oid = ECC_384R1; octets = 48; break; + case CYASSL_ECC_SECP521R1: oid = ECC_521R1; octets = 66; break; + default: continue; /* unsupported curve */ + } + + switch (second) { +#ifndef NO_DSA + /* ECDHE_ECDSA */ + case TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: + case TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: + case TLS_ECDHE_ECDSA_WITH_RC4_128_SHA: + case TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA: + case TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256: + case TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384: + case TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: + case TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384: + case TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8: + case TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8: + sig |= ssl->pkCurveOID == oid; + key |= ssl->eccTempKeySz == octets; + break; + + /* ECDH_ECDSA */ + case TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA: + case TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA: + case TLS_ECDH_ECDSA_WITH_RC4_128_SHA: + case TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA: + case TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256: + case TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384: + case TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256: + case TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384: + sig |= ssl->pkCurveOID == oid; + key |= ssl->pkCurveOID == oid; + break; +#endif +#ifndef NO_RSA + /* ECDHE_RSA */ + case TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: + case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA: + case TLS_ECDHE_RSA_WITH_RC4_128_SHA: + case TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA: + case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256: + case TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384: + case TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: + case TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384: + sig = 1; + key |= ssl->eccTempKeySz == octets; + break; + + /* ECDH_RSA */ + case TLS_ECDH_RSA_WITH_AES_256_CBC_SHA: + case TLS_ECDH_RSA_WITH_AES_128_CBC_SHA: + case TLS_ECDH_RSA_WITH_RC4_128_SHA: + case TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA: + case TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256: + case TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384: + case TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256: + case TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384: + sig = 1; + key |= ssl->pkCurveOID == oid; + break; +#endif + default: + sig = 1; + key = 1; + break; + } + } + + return sig && key; +} + +#endif /* NO_CYASSL_SERVER */ + +int TLSX_UseSupportedCurve(TLSX** extensions, word16 name) +{ + TLSX* extension = NULL; + EllipticCurve* curve = NULL; + int ret = 0; + + if (extensions == NULL) + return BAD_FUNC_ARG; + + if ((ret = TLSX_EllipticCurve_Append(&curve, name)) != 0) + return ret; + + extension = *extensions; + + /* find EllipticCurve extension if it already exists. */ + while (extension && extension->type != ELLIPTIC_CURVES) + extension = extension->next; + + /* push new EllipticCurve extension if it doesn't exists. */ + if (!extension) { + if ((ret = TLSX_Append(extensions, ELLIPTIC_CURVES)) != 0) { + XFREE(curve, 0, DYNAMIC_TYPE_TLSX); + return ret; + } + + extension = *extensions; + } + + /* push new EllipticCurve object to extension data. */ + curve->next = (EllipticCurve*) extension->data; + extension->data = (void*) curve; + + /* look for another curve of the same name to remove (replacement) */ + do { + if (curve->next && curve->next->name == name) { + EllipticCurve *next = curve->next; + + curve->next = next->next; + XFREE(next, 0, DYNAMIC_TYPE_TLSX); + + break; + } + } while ((curve = curve->next)); + + return SSL_SUCCESS; +} + +#define EC_FREE_ALL TLSX_EllipticCurve_FreeAll +#define EC_VALIDATE_REQUEST TLSX_EllipticCurve_ValidateRequest + +#ifndef NO_CYASSL_CLIENT +#define EC_GET_SIZE TLSX_EllipticCurve_GetSize +#define EC_WRITE TLSX_EllipticCurve_Write +#else +#define EC_GET_SIZE(list) 0 +#define EC_WRITE(a, b) 0 +#endif + +#ifndef NO_CYASSL_SERVER +#define EC_PARSE TLSX_EllipticCurve_Parse +#else +#define EC_PARSE(a, b, c, d) 0 +#endif + +#else + +#define EC_FREE_ALL(list) +#define EC_GET_SIZE(list) 0 +#define EC_WRITE(a, b) 0 +#define EC_PARSE(a, b, c, d) 0 +#define EC_VALIDATE_REQUEST(a, b) + +#endif /* HAVE_SUPPORTED_CURVES */ + TLSX* TLSX_Find(TLSX* list, TLSX_Type type) { TLSX* extension = list; @@ -1047,18 +1475,16 @@ void TLSX_FreeAll(TLSX* list) case TRUNCATED_HMAC: /* Nothing to do. */ break; + + case ELLIPTIC_CURVES: + EC_FREE_ALL(extension->data); + break; } XFREE(extension, 0, DYNAMIC_TYPE_TLSX); } } -#define IS_OFF(semaphore, light) \ - ((semaphore)[(light) / 8] ^ (byte) (0x01 << ((light) % 8))) - -#define TURN_ON(semaphore, light) \ - ((semaphore)[(light) / 8] |= (byte) (0x01 << ((light) % 8))) - static word16 TLSX_GetSize(TLSX* list, byte* semaphore, byte isRequest) { TLSX* extension; @@ -1086,6 +1512,10 @@ static word16 TLSX_GetSize(TLSX* list, byte* semaphore, byte isRequest) case TRUNCATED_HMAC: /* empty extension. */ break; + + case ELLIPTIC_CURVES: + length += EC_GET_SIZE((EllipticCurve *) extension->data); + break; } TURN_ON(semaphore, extension->type); @@ -1130,6 +1560,11 @@ static word16 TLSX_Write(TLSX* list, byte* output, byte* semaphore, case TRUNCATED_HMAC: /* empty extension. */ break; + + case ELLIPTIC_CURVES: + offset += EC_WRITE((EllipticCurve *) extension->data, + output + offset); + break; } /* writing extension data length */ @@ -1152,6 +1587,8 @@ word16 TLSX_GetRequestSize(CYASSL* ssl) if (ssl && IsTLS(ssl)) { byte semaphore[16] = {0}; + EC_VALIDATE_REQUEST(ssl, semaphore); + if (ssl->extensions) length += TLSX_GetSize(ssl->extensions, semaphore, 1); @@ -1177,6 +1614,8 @@ word16 TLSX_WriteRequest(CYASSL* ssl, byte* output) offset += OPAQUE16_LEN; /* extensions length */ + EC_VALIDATE_REQUEST(ssl, semaphore); + if (ssl->extensions) offset += TLSX_Write(ssl->extensions, output + offset, semaphore, 1); @@ -1296,6 +1735,12 @@ int TLSX_Parse(CYASSL* ssl, byte* input, word16 length, byte isRequest, ret = THM_PARSE(ssl, input + offset, size, isRequest); break; + case ELLIPTIC_CURVES: + CYASSL_MSG("Elliptic Curves extension received"); + + ret = EC_PARSE(ssl, input + offset, size, isRequest); + break; + case HELLO_EXT_SIG_ALGO: if (isRequest) { /* do not mess with offset inside the switch! */ @@ -1328,6 +1773,13 @@ int TLSX_Parse(CYASSL* ssl, byte* input, word16 length, byte isRequest, #undef IS_OFF #undef TURN_ON +#elif defined(HAVE_SNI) \ + || defined(HAVE_MAX_FRAGMENT) \ + || defined(HAVE_TRUNCATED_HMAC) \ + || defined(HAVE_SUPPORTED_CURVES) + +#error "Using TLS extensions requires HAVE_TLS_EXTENSIONS to be defined." + #endif /* HAVE_TLS_EXTENSIONS */ diff --git a/sslSniffer/sslSnifferTest/include.am b/sslSniffer/sslSnifferTest/include.am index 44349f976..d4c90accc 100644 --- a/sslSniffer/sslSnifferTest/include.am +++ b/sslSniffer/sslSnifferTest/include.am @@ -2,7 +2,7 @@ # included from Top Level Makefile.am # All paths should be given relative to the root -if BUILD_SNIFFER +if BUILD_SNIFFTEST noinst_PROGRAMS += sslSniffer/sslSnifferTest/snifftest sslSniffer_sslSnifferTest_snifftest_SOURCES = sslSniffer/sslSnifferTest/snifftest.c sslSniffer_sslSnifferTest_snifftest_LDADD = src/libcyassl.la -lpcap diff --git a/sslSniffer/sslSnifferTest/snifftest.c b/sslSniffer/sslSnifferTest/snifftest.c index 7d5a7561e..2570a65bc 100755 --- a/sslSniffer/sslSnifferTest/snifftest.c +++ b/sslSniffer/sslSnifferTest/snifftest.c @@ -69,18 +69,25 @@ enum { }; -pcap_t* pcap = 0; -pcap_if_t *alldevs; +pcap_t* pcap = NULL; +pcap_if_t* alldevs = NULL; + + +static void FreeAll(void) +{ + if (pcap) + pcap_close(pcap); + if (alldevs) + pcap_freealldevs(alldevs); +#ifndef _WIN32 + ssl_FreeSniffer(); +#endif +} static void sig_handler(const int sig) { printf("SIGINT handled = %d.\n", sig); - if (pcap) - pcap_close(pcap); - pcap_freealldevs(alldevs); -#ifndef _WIN32 - ssl_FreeSniffer(); -#endif + FreeAll(); if (sig) exit(EXIT_SUCCESS); } @@ -286,6 +293,7 @@ int main(int argc, char** argv) else if (saveFile) break; /* we're done reading file */ } + FreeAll(); return EXIT_SUCCESS; } diff --git a/tests/api.c b/tests/api.c index ecd89a5ba..94a232f06 100644 --- a/tests/api.c +++ b/tests/api.c @@ -56,6 +56,9 @@ static void test_CyaSSL_UseMaxFragment(void); #ifdef HAVE_TRUNCATED_HMAC static void test_CyaSSL_UseTruncatedHMAC(void); #endif /* HAVE_TRUNCATED_HMAC */ +#ifdef HAVE_SUPPORTED_CURVES +static void test_CyaSSL_UseSupportedCurve(void); +#endif /* HAVE_SUPPORTED_CURVES */ /* test function helpers */ static int test_method(CYASSL_METHOD *method, const char *name); @@ -116,6 +119,9 @@ int ApiTest(void) #ifdef HAVE_TRUNCATED_HMAC test_CyaSSL_UseTruncatedHMAC(); #endif /* HAVE_TRUNCATED_HMAC */ +#ifdef HAVE_SUPPORTED_CURVES + test_CyaSSL_UseSupportedCurve(); +#endif /* HAVE_SUPPORTED_CURVES */ test_CyaSSL_Cleanup(); printf(" End API Tests\n"); @@ -236,14 +242,13 @@ int test_CyaSSL_CTX_new(CYASSL_METHOD *method) return TEST_SUCCESS; } -#ifdef HAVE_TLS_EXTENSIONS #ifdef HAVE_SNI static void use_SNI_at_ctx(CYASSL_CTX* ctx) { byte type = CYASSL_SNI_HOST_NAME; char name[] = "www.yassl.com"; - AssertIntEQ(0, CyaSSL_CTX_UseSNI(ctx, type, (void *) name, XSTRLEN(name))); + AssertIntEQ(1, CyaSSL_CTX_UseSNI(ctx, type, (void *) name, XSTRLEN(name))); } static void use_SNI_at_ssl(CYASSL* ssl) @@ -251,7 +256,7 @@ static void use_SNI_at_ssl(CYASSL* ssl) byte type = CYASSL_SNI_HOST_NAME; char name[] = "www.yassl.com"; - AssertIntEQ(0, CyaSSL_UseSNI(ssl, type, (void *) name, XSTRLEN(name))); + AssertIntEQ(1, CyaSSL_UseSNI(ssl, type, (void *) name, XSTRLEN(name))); } static void different_SNI_at_ssl(CYASSL* ssl) @@ -259,7 +264,7 @@ static void different_SNI_at_ssl(CYASSL* ssl) byte type = CYASSL_SNI_HOST_NAME; char name[] = "ww2.yassl.com"; - AssertIntEQ(0, CyaSSL_UseSNI(ssl, type, (void *) name, XSTRLEN(name))); + AssertIntEQ(1, CyaSSL_UseSNI(ssl, type, (void *) name, XSTRLEN(name))); } static void use_SNI_WITH_CONTINUE_at_ssl(CYASSL* ssl) @@ -332,6 +337,88 @@ static void verify_SNI_fake_matching(CYASSL* ssl) AssertStrEQ(name, request); } +static void test_CyaSSL_SNI_GetFromBuffer(void) +{ + byte buffer[] = { /* www.paypal.com */ + 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x60, 0x03, 0x03, 0x5c, + 0xc4, 0xb3, 0x8c, 0x87, 0xef, 0xa4, 0x09, 0xe0, 0x02, 0xab, 0x86, 0xca, + 0x76, 0xf0, 0x9e, 0x01, 0x65, 0xf6, 0xa6, 0x06, 0x13, 0x1d, 0x0f, 0xa5, + 0x79, 0xb0, 0xd4, 0x77, 0x22, 0xeb, 0x1a, 0x00, 0x00, 0x16, 0x00, 0x6b, + 0x00, 0x67, 0x00, 0x39, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x35, + 0x00, 0x2f, 0x00, 0x05, 0x00, 0x04, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x21, + 0x00, 0x00, 0x00, 0x13, 0x00, 0x11, 0x00, 0x00, 0x0e, 0x77, 0x77, 0x77, + 0x2e, 0x70, 0x61, 0x79, 0x70, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x00, + 0x0d, 0x00, 0x06, 0x00, 0x04, 0x04, 0x01, 0x02, 0x01 + }; + + byte buffer2[] = { /* api.textmate.org */ + 0x16, 0x03, 0x01, 0x00, 0xc6, 0x01, 0x00, 0x00, 0xc2, 0x03, 0x03, 0x52, + 0x8b, 0x7b, 0xca, 0x69, 0xec, 0x97, 0xd5, 0x08, 0x03, 0x50, 0xfe, 0x3b, + 0x99, 0xc3, 0x20, 0xce, 0xa5, 0xf6, 0x99, 0xa5, 0x71, 0xf9, 0x57, 0x7f, + 0x04, 0x38, 0xf6, 0x11, 0x0b, 0xb8, 0xd3, 0x00, 0x00, 0x5e, 0x00, 0xff, + 0xc0, 0x24, 0xc0, 0x23, 0xc0, 0x0a, 0xc0, 0x09, 0xc0, 0x07, 0xc0, 0x08, + 0xc0, 0x28, 0xc0, 0x27, 0xc0, 0x14, 0xc0, 0x13, 0xc0, 0x11, 0xc0, 0x12, + 0xc0, 0x26, 0xc0, 0x25, 0xc0, 0x2a, 0xc0, 0x29, 0xc0, 0x05, 0xc0, 0x04, + 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x0f, 0xc0, 0x0e, 0xc0, 0x0c, 0xc0, 0x0d, + 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x2f, 0x00, 0x05, 0x00, 0x04, 0x00, 0x35, + 0x00, 0x0a, 0x00, 0x67, 0x00, 0x6b, 0x00, 0x33, 0x00, 0x39, 0x00, 0x16, + 0x00, 0xaf, 0x00, 0xae, 0x00, 0x8d, 0x00, 0x8c, 0x00, 0x8a, 0x00, 0x8b, + 0x00, 0xb1, 0x00, 0xb0, 0x00, 0x2c, 0x00, 0x3b, 0x01, 0x00, 0x00, 0x3b, + 0x00, 0x00, 0x00, 0x15, 0x00, 0x13, 0x00, 0x00, 0x10, 0x61, 0x70, 0x69, + 0x2e, 0x74, 0x65, 0x78, 0x74, 0x6d, 0x61, 0x74, 0x65, 0x2e, 0x6f, 0x72, + 0x67, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x06, 0x00, 0x17, 0x00, 0x18, 0x00, + 0x19, 0x00, 0x0b, 0x00, 0x02, 0x01, 0x00, 0x00, 0x0d, 0x00, 0x0c, 0x00, + 0x0a, 0x05, 0x01, 0x04, 0x01, 0x02, 0x01, 0x04, 0x03, 0x02, 0x03 + }; + + byte buffer3[] = { /* no sni extension */ + 0x16, 0x03, 0x03, 0x00, 0x4d, 0x01, 0x00, 0x00, 0x49, 0x03, 0x03, 0xea, + 0xa1, 0x9f, 0x60, 0xdd, 0x52, 0x12, 0x13, 0xbd, 0x84, 0x34, 0xd5, 0x1c, + 0x38, 0x25, 0xa8, 0x97, 0xd2, 0xd5, 0xc6, 0x45, 0xaf, 0x1b, 0x08, 0xe4, + 0x1e, 0xbb, 0xdf, 0x9d, 0x39, 0xf0, 0x65, 0x00, 0x00, 0x16, 0x00, 0x6b, + 0x00, 0x67, 0x00, 0x39, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x35, + 0x00, 0x2f, 0x00, 0x05, 0x00, 0x04, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x0a, + 0x00, 0x0d, 0x00, 0x06, 0x00, 0x04, 0x04, 0x01, 0x02, 0x01 + }; + + byte result[32] = {0}; + word32 length = 32; + + AssertIntEQ(SSL_SUCCESS, CyaSSL_SNI_GetFromBuffer(buffer3, sizeof(buffer3), + 0, result, &length)); + + AssertIntEQ(SSL_SUCCESS, CyaSSL_SNI_GetFromBuffer(buffer2, sizeof(buffer2), + 1, result, &length)); + + AssertIntEQ(-228, CyaSSL_SNI_GetFromBuffer(buffer, sizeof(buffer), 0, + result, &length)); + buffer[0] = 0x16; + + AssertIntEQ(-228, CyaSSL_SNI_GetFromBuffer(buffer, sizeof(buffer), 0, + result, &length)); + buffer[1] = 0x03; + + AssertIntEQ(-228, CyaSSL_SNI_GetFromBuffer(buffer, sizeof(buffer), 0, + result, &length)); + buffer[2] = 0x03; + + AssertIntEQ(-210, CyaSSL_SNI_GetFromBuffer(buffer, sizeof(buffer), 0, + result, &length)); + buffer[4] = 0x64; + + AssertIntEQ(1, CyaSSL_SNI_GetFromBuffer(buffer, sizeof(buffer), 0, + result, &length)); + result[length] = 0; + AssertStrEQ("www.paypal.com", (const char*) result); + + length = 32; + + AssertIntEQ(1, CyaSSL_SNI_GetFromBuffer(buffer2, sizeof(buffer2), 0, + result, &length)); + result[length] = 0; + AssertStrEQ("api.textmate.org", (const char*) result); +} + void test_CyaSSL_UseSNI(void) { callback_functions client_callbacks = {CyaSSLv23_client_method, 0, 0, 0}; @@ -344,20 +431,22 @@ void test_CyaSSL_UseSNI(void) AssertNotNull(ssl); /* error cases */ - AssertIntNE(0, CyaSSL_CTX_UseSNI(NULL, 0, (void *) "ctx", XSTRLEN("ctx"))); - AssertIntNE(0, CyaSSL_UseSNI( NULL, 0, (void *) "ssl", XSTRLEN("ssl"))); - AssertIntNE(0, CyaSSL_CTX_UseSNI(ctx, -1, (void *) "ctx", XSTRLEN("ctx"))); - AssertIntNE(0, CyaSSL_UseSNI( ssl, -1, (void *) "ssl", XSTRLEN("ssl"))); - AssertIntNE(0, CyaSSL_CTX_UseSNI(ctx, 0, (void *) NULL, XSTRLEN("ctx"))); - AssertIntNE(0, CyaSSL_UseSNI( ssl, 0, (void *) NULL, XSTRLEN("ssl"))); + AssertIntNE(1, CyaSSL_CTX_UseSNI(NULL, 0, (void *) "ctx", XSTRLEN("ctx"))); + AssertIntNE(1, CyaSSL_UseSNI( NULL, 0, (void *) "ssl", XSTRLEN("ssl"))); + AssertIntNE(1, CyaSSL_CTX_UseSNI(ctx, -1, (void *) "ctx", XSTRLEN("ctx"))); + AssertIntNE(1, CyaSSL_UseSNI( ssl, -1, (void *) "ssl", XSTRLEN("ssl"))); + AssertIntNE(1, CyaSSL_CTX_UseSNI(ctx, 0, (void *) NULL, XSTRLEN("ctx"))); + AssertIntNE(1, CyaSSL_UseSNI( ssl, 0, (void *) NULL, XSTRLEN("ssl"))); /* success case */ - AssertIntEQ(0, CyaSSL_CTX_UseSNI(ctx, 0, (void *) "ctx", XSTRLEN("ctx"))); - AssertIntEQ(0, CyaSSL_UseSNI( ssl, 0, (void *) "ssl", XSTRLEN("ssl"))); + AssertIntEQ(1, CyaSSL_CTX_UseSNI(ctx, 0, (void *) "ctx", XSTRLEN("ctx"))); + AssertIntEQ(1, CyaSSL_UseSNI( ssl, 0, (void *) "ssl", XSTRLEN("ssl"))); CyaSSL_free(ssl); CyaSSL_CTX_free(ctx); +#if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) + /* Testing success case at ctx */ client_callbacks.ctx_ready = server_callbacks.ctx_ready = use_SNI_at_ctx; server_callbacks.on_result = verify_SNI_real_matching; @@ -390,6 +479,10 @@ void test_CyaSSL_UseSNI(void) server_callbacks.on_result = verify_SNI_fake_matching; test_CyaSSL_client_server(&client_callbacks, &server_callbacks); + +#endif + + test_CyaSSL_SNI_GetFromBuffer(); } #endif /* HAVE_SNI */ @@ -403,24 +496,24 @@ static void test_CyaSSL_UseMaxFragment(void) AssertNotNull(ssl); /* error cases */ - AssertIntNE(0, CyaSSL_CTX_UseMaxFragment(NULL, CYASSL_MFL_2_9)); - AssertIntNE(0, CyaSSL_UseMaxFragment( NULL, CYASSL_MFL_2_9)); - AssertIntNE(0, CyaSSL_CTX_UseMaxFragment(ctx, 0)); - AssertIntNE(0, CyaSSL_CTX_UseMaxFragment(ctx, 6)); - AssertIntNE(0, CyaSSL_UseMaxFragment(ssl, 0)); - AssertIntNE(0, CyaSSL_UseMaxFragment(ssl, 6)); + AssertIntNE(1, CyaSSL_CTX_UseMaxFragment(NULL, CYASSL_MFL_2_9)); + AssertIntNE(1, CyaSSL_UseMaxFragment( NULL, CYASSL_MFL_2_9)); + AssertIntNE(1, CyaSSL_CTX_UseMaxFragment(ctx, 0)); + AssertIntNE(1, CyaSSL_CTX_UseMaxFragment(ctx, 6)); + AssertIntNE(1, CyaSSL_UseMaxFragment(ssl, 0)); + AssertIntNE(1, CyaSSL_UseMaxFragment(ssl, 6)); /* success case */ - AssertIntEQ(0, CyaSSL_CTX_UseMaxFragment(ctx, CYASSL_MFL_2_9)); - AssertIntEQ(0, CyaSSL_CTX_UseMaxFragment(ctx, CYASSL_MFL_2_10)); - AssertIntEQ(0, CyaSSL_CTX_UseMaxFragment(ctx, CYASSL_MFL_2_11)); - AssertIntEQ(0, CyaSSL_CTX_UseMaxFragment(ctx, CYASSL_MFL_2_12)); - AssertIntEQ(0, CyaSSL_CTX_UseMaxFragment(ctx, CYASSL_MFL_2_13)); - AssertIntEQ(0, CyaSSL_UseMaxFragment( ssl, CYASSL_MFL_2_9)); - AssertIntEQ(0, CyaSSL_UseMaxFragment( ssl, CYASSL_MFL_2_10)); - AssertIntEQ(0, CyaSSL_UseMaxFragment( ssl, CYASSL_MFL_2_11)); - AssertIntEQ(0, CyaSSL_UseMaxFragment( ssl, CYASSL_MFL_2_12)); - AssertIntEQ(0, CyaSSL_UseMaxFragment( ssl, CYASSL_MFL_2_13)); + AssertIntEQ(1, CyaSSL_CTX_UseMaxFragment(ctx, CYASSL_MFL_2_9)); + AssertIntEQ(1, CyaSSL_CTX_UseMaxFragment(ctx, CYASSL_MFL_2_10)); + AssertIntEQ(1, CyaSSL_CTX_UseMaxFragment(ctx, CYASSL_MFL_2_11)); + AssertIntEQ(1, CyaSSL_CTX_UseMaxFragment(ctx, CYASSL_MFL_2_12)); + AssertIntEQ(1, CyaSSL_CTX_UseMaxFragment(ctx, CYASSL_MFL_2_13)); + AssertIntEQ(1, CyaSSL_UseMaxFragment( ssl, CYASSL_MFL_2_9)); + AssertIntEQ(1, CyaSSL_UseMaxFragment( ssl, CYASSL_MFL_2_10)); + AssertIntEQ(1, CyaSSL_UseMaxFragment( ssl, CYASSL_MFL_2_11)); + AssertIntEQ(1, CyaSSL_UseMaxFragment( ssl, CYASSL_MFL_2_12)); + AssertIntEQ(1, CyaSSL_UseMaxFragment( ssl, CYASSL_MFL_2_13)); CyaSSL_free(ssl); CyaSSL_CTX_free(ctx); @@ -437,19 +530,44 @@ static void test_CyaSSL_UseTruncatedHMAC(void) AssertNotNull(ssl); /* error cases */ - AssertIntNE(0, CyaSSL_CTX_UseTruncatedHMAC(NULL)); - AssertIntNE(0, CyaSSL_UseTruncatedHMAC(NULL)); + AssertIntNE(1, CyaSSL_CTX_UseTruncatedHMAC(NULL)); + AssertIntNE(1, CyaSSL_UseTruncatedHMAC(NULL)); /* success case */ - AssertIntEQ(0, CyaSSL_CTX_UseTruncatedHMAC(ctx)); - AssertIntEQ(0, CyaSSL_UseTruncatedHMAC(ssl)); + AssertIntEQ(1, CyaSSL_CTX_UseTruncatedHMAC(ctx)); + AssertIntEQ(1, CyaSSL_UseTruncatedHMAC(ssl)); CyaSSL_free(ssl); CyaSSL_CTX_free(ctx); } #endif /* HAVE_TRUNCATED_HMAC */ -#endif /* HAVE_TLS_EXTENSIONS */ +#ifdef HAVE_SUPPORTED_CURVES +static void test_CyaSSL_UseSupportedCurve(void) +{ + CYASSL_CTX *ctx = CyaSSL_CTX_new(CyaSSLv23_client_method()); + CYASSL *ssl = CyaSSL_new(ctx); + + AssertNotNull(ctx); + AssertNotNull(ssl); + +#ifndef NO_CYASSL_CLIENT + /* error cases */ + AssertIntNE(1, CyaSSL_CTX_UseSupportedCurve(NULL, CYASSL_ECC_SECP160R1)); + AssertIntNE(1, CyaSSL_CTX_UseSupportedCurve(ctx, 0)); + + AssertIntNE(1, CyaSSL_UseSupportedCurve(NULL, CYASSL_ECC_SECP160R1)); + AssertIntNE(1, CyaSSL_UseSupportedCurve(ssl, 0)); + + /* success case */ + AssertIntEQ(1, CyaSSL_CTX_UseSupportedCurve(ctx, CYASSL_ECC_SECP160R1)); + AssertIntEQ(1, CyaSSL_UseSupportedCurve(ssl, CYASSL_ECC_SECP160R1)); +#endif + + CyaSSL_free(ssl); + CyaSSL_CTX_free(ctx); +} +#endif /* HAVE_SUPPORTED_CURVES */ #if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) /* Helper for testing CyaSSL_CTX_use_certificate_file() */ diff --git a/tests/suites.c b/tests/suites.c index 72e23e1ba..4df5a469b 100644 --- a/tests/suites.c +++ b/tests/suites.c @@ -80,8 +80,8 @@ static int IsValidCipherSuite(const char* line, char* suite) int valid = 0; const char* find = "-l "; - char* begin = strstr(line, find); - char* end; + const char* begin = strstr(line, find); + const char* end; suite[0] = '\0'; diff --git a/tests/unit.c b/tests/unit.c index 72f14ff68..f1926f2e9 100644 --- a/tests/unit.c +++ b/tests/unit.c @@ -27,10 +27,10 @@ int main(int argc, char** argv) err_sys("Cavium OpenNitroxDevice failed"); #endif /* HAVE_CAVIUM */ - if (CurrentDir("tests")) + if (CurrentDir("tests") || CurrentDir("_build")) ChangeDirBack(1); - else if (CurrentDir("build")) - ChangeDirBack(2); + else if (CurrentDir("Debug") || CurrentDir("Release")) + ChangeDirBack(3); if ( (ret = ApiTest()) != 0) { printf("api test failed with %d\n", ret); diff --git a/testsuite/testsuite.c b/testsuite/testsuite.c index 351a7471f..6d6cc8921 100644 --- a/testsuite/testsuite.c +++ b/testsuite/testsuite.c @@ -51,11 +51,16 @@ enum { NUMARGS = 3 }; +#ifndef USE_WINDOWS_API + const char outputName[] = "/tmp/output"; +#else + const char outputName[] = "output"; +#endif + int myoptind = 0; char* myoptarg = NULL; - int main(int argc, char** argv) { func_args server_args; @@ -79,11 +84,13 @@ int main(int argc, char** argv) CyaSSL_Debugging_ON(); #endif - if (CurrentDir("testsuite")) + if (CurrentDir("testsuite") || CurrentDir("_build")) ChangeDirBack(1); - else if (CurrentDir("build")) /* Xcode->Preferences->Locations->Build */ - ChangeDirBack(2); /* Location "Place build product in locations - specified by targets", uses build/Debug */ + else if (CurrentDir("Debug") || CurrentDir("Release")) + ChangeDirBack(3); /* Xcode->Preferences->Locations->Locations*/ + /* Derived Data Advanced -> Custom */ + /* Relative to Workspace, Build/Products */ + /* Debug or Release */ server_args.signal = &ready; InitTcpReady(&ready); @@ -115,8 +122,8 @@ int main(int argc, char** argv) strcpy(echo_args.argv[0], "echoclient"); strcpy(echo_args.argv[1], "input"); - strcpy(echo_args.argv[2], "output"); - remove("output"); + strcpy(echo_args.argv[2], outputName); + remove(outputName); /* Share the signal, it has the new port number in it. */ echo_args.signal = server_args.signal; @@ -144,7 +151,7 @@ int main(int argc, char** argv) byte output[SHA256_DIGEST_SIZE]; file_test("input", input); - file_test("output", output); + file_test(outputName, output); if (memcmp(input, output, sizeof(input)) != 0) return EXIT_FAILURE; }