From a616513860d6b0f87ab3afc547a9b70ded46475d Mon Sep 17 00:00:00 2001 From: David Garske Date: Fri, 19 May 2017 11:15:46 -0700 Subject: [PATCH 1/2] Added support for AES GCM with STM32F2/STM32F4 using Standard Peripheral Library and CubeMX. Added AES ECB Decrypt for Standard Peripheral Library. Fixes for wolfCrypt test with STM32 crypto hardware for unsupported tests (AES CTR plus 9 and AES GCM with IV != 12). Improve AES CBC for STM32 to handle block aligned only. Added IDE example for SystemWorkbench for STM32 (Open STM32 tools) IDE. --- IDE/OPENSTM32/.cproject | 148 ++ IDE/OPENSTM32/.project | 2444 +++++++++++++++++++++++++++ IDE/OPENSTM32/Inc/lwipopts.h | 105 ++ IDE/OPENSTM32/Inc/user_settings.h | 401 +++++ IDE/OPENSTM32/Inc/wolfssl_example.h | 14 + IDE/OPENSTM32/README.md | 27 + IDE/OPENSTM32/Src/main.c | 384 +++++ IDE/OPENSTM32/Src/wolfssl_example.c | 101 ++ IDE/OPENSTM32/include.am | 15 + IDE/OPENSTM32/wolfSTM32.cfg | 13 + IDE/OPENSTM32/wolfSTM32.ioc | 213 +++ IDE/OPENSTM32/wolfSTM32.xml | 9 + IDE/include.am | 1 + wolfcrypt/src/aes.c | 543 ++++-- wolfcrypt/test/test.c | 14 +- 15 files changed, 4307 insertions(+), 125 deletions(-) create mode 100644 IDE/OPENSTM32/.cproject create mode 100644 IDE/OPENSTM32/.project create mode 100644 IDE/OPENSTM32/Inc/lwipopts.h create mode 100644 IDE/OPENSTM32/Inc/user_settings.h create mode 100644 IDE/OPENSTM32/Inc/wolfssl_example.h create mode 100644 IDE/OPENSTM32/README.md create mode 100644 IDE/OPENSTM32/Src/main.c create mode 100644 IDE/OPENSTM32/Src/wolfssl_example.c create mode 100644 IDE/OPENSTM32/include.am create mode 100644 IDE/OPENSTM32/wolfSTM32.cfg create mode 100644 IDE/OPENSTM32/wolfSTM32.ioc create mode 100644 IDE/OPENSTM32/wolfSTM32.xml diff --git a/IDE/OPENSTM32/.cproject b/IDE/OPENSTM32/.cproject new file mode 100644 index 000000000..ae89015c2 --- /dev/null +++ b/IDE/OPENSTM32/.cproject @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/IDE/OPENSTM32/.project b/IDE/OPENSTM32/.project new file mode 100644 index 000000000..07ff873f8 --- /dev/null +++ b/IDE/OPENSTM32/.project @@ -0,0 +1,2444 @@ + + + wolfSTM32 + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + fr.ac6.mcu.ide.core.MCUProjectNature + + + + Middlewares/Third_Party/wolfSSL/src + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfssl + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/src/.DS_Store + 1 + PARENT-2-PROJECT_LOC/src/.DS_Store + + + Middlewares/Third_Party/wolfSSL/src/.deps + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/src/.dirstamp + 1 + PARENT-2-PROJECT_LOC/src/.dirstamp + + + Middlewares/Third_Party/wolfSSL/src/.libs + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/src/bio.c + 1 + PARENT-2-PROJECT_LOC/src/bio.c + + + Middlewares/Third_Party/wolfSSL/src/crl.c + 1 + PARENT-2-PROJECT_LOC/src/crl.c + + + Middlewares/Third_Party/wolfSSL/src/include.am + 1 + PARENT-2-PROJECT_LOC/src/include.am + + + Middlewares/Third_Party/wolfSSL/src/internal.c + 1 + PARENT-2-PROJECT_LOC/src/internal.c + + + Middlewares/Third_Party/wolfSSL/src/io.c + 1 + PARENT-2-PROJECT_LOC/src/io.c + + + Middlewares/Third_Party/wolfSSL/src/keys.c + 1 + PARENT-2-PROJECT_LOC/src/keys.c + + + Middlewares/Third_Party/wolfSSL/src/libwolfssl.la + 1 + PARENT-2-PROJECT_LOC/src/libwolfssl.la + + + Middlewares/Third_Party/wolfSSL/src/ocsp.c + 1 + PARENT-2-PROJECT_LOC/src/ocsp.c + + + Middlewares/Third_Party/wolfSSL/src/sniffer.c + 1 + PARENT-2-PROJECT_LOC/src/sniffer.c + + + Middlewares/Third_Party/wolfSSL/src/src_libwolfssl_la-internal.lo + 1 + PARENT-2-PROJECT_LOC/src/src_libwolfssl_la-internal.lo + + + Middlewares/Third_Party/wolfSSL/src/src_libwolfssl_la-io.lo + 1 + PARENT-2-PROJECT_LOC/src/src_libwolfssl_la-io.lo + + + Middlewares/Third_Party/wolfSSL/src/src_libwolfssl_la-keys.lo + 1 + PARENT-2-PROJECT_LOC/src/src_libwolfssl_la-keys.lo + + + Middlewares/Third_Party/wolfSSL/src/src_libwolfssl_la-ssl.lo + 1 + PARENT-2-PROJECT_LOC/src/src_libwolfssl_la-ssl.lo + + + Middlewares/Third_Party/wolfSSL/src/src_libwolfssl_la-tls.lo + 1 + PARENT-2-PROJECT_LOC/src/src_libwolfssl_la-tls.lo + + + Middlewares/Third_Party/wolfSSL/src/src_libwolfssl_la-tls13.lo + 1 + PARENT-2-PROJECT_LOC/src/src_libwolfssl_la-tls13.lo + + + Middlewares/Third_Party/wolfSSL/src/ssl.c + 1 + PARENT-2-PROJECT_LOC/src/ssl.c + + + Middlewares/Third_Party/wolfSSL/src/tls.c + 1 + PARENT-2-PROJECT_LOC/src/tls.c + + + Middlewares/Third_Party/wolfSSL/src/tls13.c + 1 + PARENT-2-PROJECT_LOC/src/tls13.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/.DS_Store + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/.DS_Store + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/benchmark + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/user-crypto + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfssl/.DS_Store + 1 + PARENT-2-PROJECT_LOC/wolfssl/.DS_Store + + + Middlewares/Third_Party/wolfSSL/wolfssl/callbacks.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/callbacks.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/certs_test.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/certs_test.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/crl.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/crl.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/error-ssl.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/error-ssl.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/include.am + 1 + PARENT-2-PROJECT_LOC/wolfssl/include.am + + + Middlewares/Third_Party/wolfSSL/wolfssl/internal.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/internal.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/io.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/io.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/ocsp.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/ocsp.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfssl/options.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/options.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/options.h.in + 1 + PARENT-2-PROJECT_LOC/wolfssl/options.h.in + + + Middlewares/Third_Party/wolfSSL/wolfssl/sniffer.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/sniffer.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/sniffer_error.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/sniffer_error.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/sniffer_error.rc + 1 + PARENT-2-PROJECT_LOC/wolfssl/sniffer_error.rc + + + Middlewares/Third_Party/wolfSSL/wolfssl/ssl.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/ssl.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/test.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/test.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/version.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/version.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/version.h.in + 1 + PARENT-2-PROJECT_LOC/wolfssl/version.h.in + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/src/.deps/.dirstamp + 1 + PARENT-2-PROJECT_LOC/src/.deps/.dirstamp + + + Middlewares/Third_Party/wolfSSL/src/.deps/src_libwolfssl_la-async.Plo + 1 + PARENT-2-PROJECT_LOC/src/.deps/src_libwolfssl_la-async.Plo + + + Middlewares/Third_Party/wolfSSL/src/.deps/src_libwolfssl_la-crl.Plo + 1 + PARENT-2-PROJECT_LOC/src/.deps/src_libwolfssl_la-crl.Plo + + + Middlewares/Third_Party/wolfSSL/src/.deps/src_libwolfssl_la-internal.Plo + 1 + PARENT-2-PROJECT_LOC/src/.deps/src_libwolfssl_la-internal.Plo + + + Middlewares/Third_Party/wolfSSL/src/.deps/src_libwolfssl_la-io.Plo + 1 + PARENT-2-PROJECT_LOC/src/.deps/src_libwolfssl_la-io.Plo + + + Middlewares/Third_Party/wolfSSL/src/.deps/src_libwolfssl_la-keys.Plo + 1 + PARENT-2-PROJECT_LOC/src/.deps/src_libwolfssl_la-keys.Plo + + + Middlewares/Third_Party/wolfSSL/src/.deps/src_libwolfssl_la-ocsp.Plo + 1 + PARENT-2-PROJECT_LOC/src/.deps/src_libwolfssl_la-ocsp.Plo + + + Middlewares/Third_Party/wolfSSL/src/.deps/src_libwolfssl_la-sniffer.Plo + 1 + PARENT-2-PROJECT_LOC/src/.deps/src_libwolfssl_la-sniffer.Plo + + + Middlewares/Third_Party/wolfSSL/src/.deps/src_libwolfssl_la-ssl.Plo + 1 + PARENT-2-PROJECT_LOC/src/.deps/src_libwolfssl_la-ssl.Plo + + + Middlewares/Third_Party/wolfSSL/src/.deps/src_libwolfssl_la-tls.Plo + 1 + PARENT-2-PROJECT_LOC/src/.deps/src_libwolfssl_la-tls.Plo + + + Middlewares/Third_Party/wolfSSL/src/.deps/src_libwolfssl_la-tls13.Plo + 1 + PARENT-2-PROJECT_LOC/src/.deps/src_libwolfssl_la-tls13.Plo + + + Middlewares/Third_Party/wolfSSL/src/.libs/libwolfssl.12.dylib + 1 + PARENT-2-PROJECT_LOC/src/.libs/libwolfssl.12.dylib + + + Middlewares/Third_Party/wolfSSL/src/.libs/libwolfssl.dylib + 1 + PARENT-2-PROJECT_LOC/src/.libs/libwolfssl.dylib + + + Middlewares/Third_Party/wolfSSL/src/.libs/libwolfssl.la + 1 + PARENT-2-PROJECT_LOC/src/.libs/libwolfssl.la + + + Middlewares/Third_Party/wolfSSL/src/.libs/libwolfssl.lai + 1 + PARENT-2-PROJECT_LOC/src/.libs/libwolfssl.lai + + + Middlewares/Third_Party/wolfSSL/src/.libs/src_libwolfssl_la-internal.o + 1 + PARENT-2-PROJECT_LOC/src/.libs/src_libwolfssl_la-internal.o + + + Middlewares/Third_Party/wolfSSL/src/.libs/src_libwolfssl_la-io.o + 1 + PARENT-2-PROJECT_LOC/src/.libs/src_libwolfssl_la-io.o + + + Middlewares/Third_Party/wolfSSL/src/.libs/src_libwolfssl_la-keys.o + 1 + PARENT-2-PROJECT_LOC/src/.libs/src_libwolfssl_la-keys.o + + + Middlewares/Third_Party/wolfSSL/src/.libs/src_libwolfssl_la-ssl.o + 1 + PARENT-2-PROJECT_LOC/src/.libs/src_libwolfssl_la-ssl.o + + + Middlewares/Third_Party/wolfSSL/src/.libs/src_libwolfssl_la-tls.o + 1 + PARENT-2-PROJECT_LOC/src/.libs/src_libwolfssl_la-tls.o + + + Middlewares/Third_Party/wolfSSL/src/.libs/src_libwolfssl_la-tls13.o + 1 + PARENT-2-PROJECT_LOC/src/.libs/src_libwolfssl_la-tls13.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/benchmark/.DS_Store + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/benchmark/.DS_Store + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/benchmark/.deps + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/benchmark/.dirstamp + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/benchmark/.dirstamp + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/benchmark/.libs + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/benchmark/benchmark + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/benchmark/benchmark + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/benchmark/benchmark.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/benchmark/benchmark.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/benchmark/benchmark.h + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/benchmark/benchmark.h + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/benchmark/benchmark.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/benchmark/benchmark.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/benchmark/benchmark.sln + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/benchmark/benchmark.sln + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/benchmark/benchmark.vcproj + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/benchmark/benchmark.vcproj + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/benchmark/include.am + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/benchmark/include.am + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.DS_Store + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.DS_Store + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.dirstamp + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.dirstamp + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/aes.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/aes.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/aes_asm.asm + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/aes_asm.asm + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/aes_asm.s + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/aes_asm.s + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/arc4.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/arc4.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/asm.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/asm.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/asn.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/asn.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/async.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/async.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/blake2b.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/blake2b.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/camellia.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/camellia.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/chacha.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/chacha.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/chacha20_poly1305.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/chacha20_poly1305.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/cmac.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/cmac.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/coding.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/coding.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/compress.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/compress.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/curve25519.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/curve25519.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/des3.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/des3.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/dh.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/dh.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/dsa.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/dsa.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/ecc.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/ecc.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/ecc_fp.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/ecc_fp.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/ed25519.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/ed25519.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/error.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/error.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/evp.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/evp.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fe_low_mem.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fe_low_mem.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fe_operations.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fe_operations.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fe_x25519_128.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fe_x25519_128.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_mont_small.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_mont_small.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_mul_comba_12.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_mul_comba_12.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_mul_comba_17.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_mul_comba_17.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_mul_comba_20.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_mul_comba_20.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_mul_comba_24.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_mul_comba_24.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_mul_comba_28.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_mul_comba_28.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_mul_comba_3.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_mul_comba_3.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_mul_comba_32.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_mul_comba_32.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_mul_comba_4.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_mul_comba_4.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_mul_comba_48.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_mul_comba_48.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_mul_comba_6.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_mul_comba_6.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_mul_comba_64.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_mul_comba_64.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_mul_comba_7.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_mul_comba_7.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_mul_comba_8.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_mul_comba_8.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_mul_comba_9.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_mul_comba_9.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_mul_comba_small_set.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_mul_comba_small_set.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_sqr_comba_12.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_sqr_comba_12.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_sqr_comba_17.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_sqr_comba_17.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_sqr_comba_20.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_sqr_comba_20.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_sqr_comba_24.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_sqr_comba_24.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_sqr_comba_28.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_sqr_comba_28.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_sqr_comba_3.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_sqr_comba_3.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_sqr_comba_32.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_sqr_comba_32.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_sqr_comba_4.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_sqr_comba_4.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_sqr_comba_48.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_sqr_comba_48.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_sqr_comba_6.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_sqr_comba_6.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_sqr_comba_64.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_sqr_comba_64.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_sqr_comba_7.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_sqr_comba_7.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_sqr_comba_8.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_sqr_comba_8.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_sqr_comba_9.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_sqr_comba_9.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/fp_sqr_comba_small_set.i + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/fp_sqr_comba_small_set.i + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/ge_low_mem.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/ge_low_mem.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/ge_operations.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/ge_operations.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/hash.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/hash.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/hc128.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/hc128.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/hmac.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/hmac.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/idea.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/idea.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/include.am + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/include.am + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/integer.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/integer.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/logging.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/logging.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/md2.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/md2.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/md4.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/md4.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/md5.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/md5.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/memory.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/memory.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/misc.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/misc.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/pkcs12.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/pkcs12.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/pkcs7.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/pkcs7.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/poly1305.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/poly1305.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/pwdbased.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/pwdbased.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/rabbit.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/rabbit.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/random.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/random.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/ripemd.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/ripemd.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/rsa.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/rsa.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/sha.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/sha.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/sha256.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/sha256.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/sha512.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/sha512.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/signature.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/signature.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-aes.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-aes.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-asn.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-asn.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-chacha.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-chacha.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-chacha20_poly1305.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-chacha20_poly1305.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-coding.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-coding.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-dh.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-dh.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-ecc.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-ecc.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-error.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-error.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-hash.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-hash.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-hmac.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-hmac.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-logging.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-logging.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-md5.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-md5.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-memory.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-memory.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-poly1305.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-poly1305.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-random.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-random.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-rsa.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-rsa.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-sha.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-sha.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-sha256.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-sha256.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-sha512.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-sha512.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-signature.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-signature.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-tfm.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-tfm.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-wc_encrypt.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-wc_encrypt.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-wc_port.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-wc_port.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/src_libwolfssl_la-wolfmath.lo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/src_libwolfssl_la-wolfmath.lo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/srp.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/srp.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/tfm.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/tfm.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/wc_encrypt.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/wc_encrypt.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/wc_port.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/wc_port.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/wolfevent.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/wolfevent.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/wolfmath.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/wolfmath.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test/.DS_Store + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/test/.DS_Store + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test/.deps + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test/.dirstamp + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/test/.dirstamp + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test/.libs + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test/include.am + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/test/include.am + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test/test.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/test/test.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test/test.h + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/test/test.h + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test/test.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/test/test.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test/test.sln + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/test/test.sln + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test/test.vcproj + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/test/test.vcproj + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test/testsuite_testsuite_test-test.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/test/testsuite_testsuite_test-test.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test/testwolfcrypt + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/test/testwolfcrypt + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/user-crypto/Makefile.am + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/user-crypto/Makefile.am + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/user-crypto/README.txt + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/user-crypto/README.txt + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/user-crypto/autogen.sh + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/user-crypto/autogen.sh + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/user-crypto/configure.ac + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/user-crypto/configure.ac + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/user-crypto/include + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/user-crypto/include.am + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/user-crypto/include.am + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/user-crypto/lib + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/user-crypto/src + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/aes.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/aes.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/asn1.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/asn1.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/bio.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/bio.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/bn.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/bn.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/conf.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/conf.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/crypto.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/crypto.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/des.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/des.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/dh.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/dh.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/dsa.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/dsa.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/ec.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/ec.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/ec25519.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/ec25519.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/ecdh.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/ecdh.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/ecdsa.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/ecdsa.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/ed25519.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/ed25519.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/engine.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/engine.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/err.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/err.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/evp.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/evp.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/hmac.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/hmac.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/include.am + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/include.am + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/lhash.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/lhash.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/md4.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/md4.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/md5.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/md5.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/ocsp.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/ocsp.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/opensslconf.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/opensslconf.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/opensslv.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/opensslv.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/ossl_typ.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/ossl_typ.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/pem.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/pem.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/pkcs12.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/pkcs12.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/rand.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/rand.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/ripemd.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/ripemd.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/rsa.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/rsa.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/sha.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/sha.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/ssl.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/ssl.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/ssl23.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/ssl23.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/stack.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/stack.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/ui.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/ui.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/x509.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/x509.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/openssl/x509v3.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/openssl/x509v3.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/.DS_Store + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/.DS_Store + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/aes.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/aes.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/arc4.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/arc4.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/asn.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/asn.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/asn_public.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/asn_public.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/async.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/async.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/blake2-impl.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/blake2-impl.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/blake2-int.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/blake2-int.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/blake2.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/blake2.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/camellia.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/camellia.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/chacha.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/chacha.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/chacha20_poly1305.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/chacha20_poly1305.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/cmac.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/cmac.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/coding.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/coding.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/compress.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/compress.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/curve25519.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/curve25519.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/des3.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/des3.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/dh.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/dh.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/dsa.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/dsa.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/ecc.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/ecc.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/ed25519.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/ed25519.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/error-crypt.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/error-crypt.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/fe_operations.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/fe_operations.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/fips_test.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/fips_test.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/ge_operations.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/ge_operations.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/hash.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/hash.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/hc128.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/hc128.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/hmac.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/hmac.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/idea.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/idea.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/include.am + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/include.am + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/integer.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/integer.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/logging.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/logging.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/md2.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/md2.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/md4.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/md4.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/md5.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/md5.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/mem_track.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/mem_track.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/memory.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/memory.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/misc.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/misc.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/mpi_class.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/mpi_class.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/mpi_superclass.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/mpi_superclass.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/pkcs12.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/pkcs12.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/pkcs7.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/pkcs7.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/poly1305.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/poly1305.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/pwdbased.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/pwdbased.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/rabbit.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/rabbit.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/random.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/random.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/ripemd.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/ripemd.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/rsa.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/rsa.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/settings.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/settings.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/sha.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/sha.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/sha256.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/sha256.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/sha512.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/sha512.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/signature.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/signature.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/srp.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/srp.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/tfm.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/tfm.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/types.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/types.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/visibility.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/visibility.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/wc_encrypt.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/wc_encrypt.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/wc_port.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/wc_port.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/wolfevent.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/wolfevent.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/wolfmath.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/wolfmath.h + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/benchmark/.deps/.dirstamp + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/benchmark/.deps/.dirstamp + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/benchmark/.deps/benchmark.Po + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/benchmark/.deps/benchmark.Po + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/benchmark/.deps/tune.Po + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/benchmark/.deps/tune.Po + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/benchmark/.libs/benchmark + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/benchmark/.libs/benchmark + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/.dirstamp + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/.dirstamp + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-aes.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-aes.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-arc4.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-arc4.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-asn.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-asn.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-async.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-async.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-bio.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-bio.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-blake2b.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-blake2b.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-camellia.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-camellia.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-chacha.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-chacha.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-chacha20_poly1305.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-chacha20_poly1305.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-cmac.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-cmac.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-coding.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-coding.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-compat-wolfcrypt.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-compat-wolfcrypt.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-compress.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-compress.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-curve25519.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-curve25519.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-des3.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-des3.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-dh.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-dh.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-dsa.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-dsa.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-ecc.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-ecc.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-ed25519.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-ed25519.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-error.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-error.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-fe_low_mem.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-fe_low_mem.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-fe_operations.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-fe_operations.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-ge_low_mem.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-ge_low_mem.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-ge_operations.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-ge_operations.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-hash.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-hash.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-hc128.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-hc128.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-hmac.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-hmac.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-idea.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-idea.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-integer.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-integer.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-logging.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-logging.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-md2.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-md2.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-md4.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-md4.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-md5.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-md5.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-memory.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-memory.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-misc.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-misc.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-pkcs12.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-pkcs12.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-pkcs7.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-pkcs7.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-poly1305.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-poly1305.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-pwdbased.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-pwdbased.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-rabbit.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-rabbit.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-random.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-random.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-ripemd.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-ripemd.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-rsa.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-rsa.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-sha.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-sha.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-sha256.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-sha256.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-sha512.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-sha512.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-sign_verify.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-sign_verify.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-signature.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-signature.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-srp.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-srp.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-tfm.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-tfm.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-wc_encrypt.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-wc_encrypt.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-wc_port.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-wc_port.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-wolfevent.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-wolfevent.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.deps/src_libwolfssl_la-wolfmath.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.deps/src_libwolfssl_la-wolfmath.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-aes.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-aes.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-asn.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-asn.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-chacha.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-chacha.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-chacha20_poly1305.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-chacha20_poly1305.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-coding.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-coding.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-dh.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-dh.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-ecc.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-ecc.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-error.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-error.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-hash.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-hash.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-hmac.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-hmac.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-logging.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-logging.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-md5.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-md5.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-memory.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-memory.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-poly1305.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-poly1305.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-random.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-random.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-rsa.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-rsa.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-sha.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-sha.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-sha256.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-sha256.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-sha512.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-sha512.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-signature.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-signature.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-tfm.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-tfm.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-wc_encrypt.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-wc_encrypt.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-wc_port.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-wc_port.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/.libs/src_libwolfssl_la-wolfmath.o + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/.libs/src_libwolfssl_la-wolfmath.o + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/.DS_Store + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/.DS_Store + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/arm + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/atmel + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/cavium + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/intel + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/nrf51.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/nrf51.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/nxp + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/pic32 + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/ti + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test/.deps/.dirstamp + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/test/.deps/.dirstamp + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test/.deps/test.Po + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/test/.deps/test.Po + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test/.deps/testsuite_testsuite_test-test.Po + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/test/.deps/testsuite_testsuite_test-test.Po + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/test/.libs/testwolfcrypt + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/test/.libs/testwolfcrypt + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/user-crypto/include/user_rsa.h + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/user-crypto/include/user_rsa.h + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/user-crypto/lib/.gitkeep + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/user-crypto/lib/.gitkeep + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/user-crypto/src/.deps + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/user-crypto/src/.dirstamp + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/user-crypto/src/.dirstamp + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/user-crypto/src/rsa.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/user-crypto/src/rsa.c + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/.DS_Store + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/port/.DS_Store + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/atmel + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/cavium + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/intel + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/nrf51.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/port/nrf51.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/nxp + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/pic32 + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/ti + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/arm/.deps + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/arm/.dirstamp + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/arm/.dirstamp + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/arm/armv8-aes.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/arm/armv8-aes.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/arm/armv8-sha256.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/arm/armv8-sha256.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/atmel/.DS_Store + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/atmel/.DS_Store + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/atmel/README.md + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/atmel/README.md + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/atmel/atmel.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/atmel/atmel.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/atmel/wolfcrypt_xdk_app + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/cavium/.DS_Store + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/cavium/.DS_Store + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/cavium/.deps + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/cavium/.dirstamp + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/cavium/.dirstamp + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/cavium/README.md + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/cavium/README.md + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/cavium/cavium_nitrox.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/cavium/cavium_nitrox.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/intel/.DS_Store + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/intel/.DS_Store + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/intel/.deps + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/intel/.dirstamp + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/intel/.dirstamp + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/intel/README.md + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/intel/README.md + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/intel/quickassist.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/intel/quickassist.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/intel/quickassist_mem.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/intel/quickassist_mem.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/nxp/ksdk_port.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/nxp/ksdk_port.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/pic32/pic32mz-hash.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/pic32/pic32mz-hash.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/ti/ti-aes.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/ti/ti-aes.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/ti/ti-ccm.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/ti/ti-ccm.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/ti/ti-des3.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/ti/ti-des3.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/ti/ti-hash.c + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/ti/ti-hash.c + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/user-crypto/src/.deps/.dirstamp + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/user-crypto/src/.deps/.dirstamp + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/user-crypto/src/.deps/src_libwolfssl_la-rsa.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/user-crypto/src/.deps/src_libwolfssl_la-rsa.Plo + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/atmel/atmel.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/port/atmel/atmel.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/cavium/.DS_Store + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/port/cavium/.DS_Store + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/cavium/cavium_nitrox.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/port/cavium/cavium_nitrox.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/intel/.DS_Store + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/port/intel/.DS_Store + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/intel/quickassist.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/port/intel/quickassist.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/intel/quickassist_mem.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/port/intel/quickassist_mem.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/nxp/ksdk_port.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/port/nxp/ksdk_port.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/pic32/pic32mz-crypt.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/port/pic32/pic32mz-crypt.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/ti/ti-ccm.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/port/ti/ti-ccm.h + + + Middlewares/Third_Party/wolfSSL/wolfssl/wolfcrypt/port/ti/ti-hash.h + 1 + PARENT-2-PROJECT_LOC/wolfssl/wolfcrypt/port/ti/ti-hash.h + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/arm/.deps/.dirstamp + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/arm/.deps/.dirstamp + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/arm/.deps/src_libwolfssl_la-armv8-aes.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/arm/.deps/src_libwolfssl_la-armv8-aes.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/arm/.deps/src_libwolfssl_la-armv8-sha256.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/arm/.deps/src_libwolfssl_la-armv8-sha256.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/atmel/wolfcrypt_xdk_app/.DS_Store + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/atmel/wolfcrypt_xdk_app/.DS_Store + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/atmel/wolfcrypt_xdk_app/samd21j18a_samd21_xplained_pro + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/cavium/.deps/.dirstamp + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/cavium/.deps/.dirstamp + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/cavium/.deps/src_libwolfssl_la-cavium_nitrox.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/cavium/.deps/src_libwolfssl_la-cavium_nitrox.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/intel/.deps/.dirstamp + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/intel/.deps/.dirstamp + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/intel/.deps/src_libwolfssl_la-qae_mem_utils.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/intel/.deps/src_libwolfssl_la-qae_mem_utils.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/intel/.deps/src_libwolfssl_la-quickassist.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/intel/.deps/src_libwolfssl_la-quickassist.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/intel/.deps/src_libwolfssl_la-quickassist.Tpo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/intel/.deps/src_libwolfssl_la-quickassist.Tpo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/intel/.deps/src_libwolfssl_la-quickassist_mem.Plo + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/intel/.deps/src_libwolfssl_la-quickassist_mem.Plo + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/atmel/wolfcrypt_xdk_app/samd21j18a_samd21_xplained_pro/.DS_Store + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/atmel/wolfcrypt_xdk_app/samd21j18a_samd21_xplained_pro/.DS_Store + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/atmel/wolfcrypt_xdk_app/samd21j18a_samd21_xplained_pro/gcc + 2 + virtual:/virtual + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/atmel/wolfcrypt_xdk_app/samd21j18a_samd21_xplained_pro/gcc/.DS_Store + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/atmel/wolfcrypt_xdk_app/samd21j18a_samd21_xplained_pro/gcc/.DS_Store + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/atmel/wolfcrypt_xdk_app/samd21j18a_samd21_xplained_pro/gcc/Makefile + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/atmel/wolfcrypt_xdk_app/samd21j18a_samd21_xplained_pro/gcc/Makefile + + + Middlewares/Third_Party/wolfSSL/wolfcrypt/src/port/atmel/wolfcrypt_xdk_app/samd21j18a_samd21_xplained_pro/gcc/config.mk + 1 + PARENT-2-PROJECT_LOC/wolfcrypt/src/port/atmel/wolfcrypt_xdk_app/samd21j18a_samd21_xplained_pro/gcc/config.mk + + + diff --git a/IDE/OPENSTM32/Inc/lwipopts.h b/IDE/OPENSTM32/Inc/lwipopts.h new file mode 100644 index 000000000..829967298 --- /dev/null +++ b/IDE/OPENSTM32/Inc/lwipopts.h @@ -0,0 +1,105 @@ +/* Define to prevent recursive inclusion --------------------------------------*/ +#ifndef __LWIPOPTS__H__ +#define __LWIPOPTS__H__ + +#include "stm32f4xx_hal.h" + +/*-----------------------------------------------------------------------------*/ +/* Current version of LwIP supported by CubeMx: 1.5.0_RC0_20160211 -*/ +/*-----------------------------------------------------------------------------*/ + +/* Within 'USER CODE' section, code will be kept by default at each generation */ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +#ifdef __cplusplus + extern "C" { +#endif + +/* STM32CubeMX Specific Parameters (not defined in opt.h) ---------------------*/ +/* Parameters set in STM32CubeMX LwIP Configuration GUI -*/ +/*----- WITH_RTOS enabled (Since FREERTOS is set) -----*/ +#define WITH_RTOS 1 +/*----- CHECKSUM_BY_HARDWARE disabled -----*/ +#define CHECKSUM_BY_HARDWARE 0 +/*-----------------------------------------------------------------------------*/ + +/* LwIP Stack Parameters (modified compared to initialization value in opt.h) -*/ +/* Parameters set in STM32CubeMX LwIP Configuration GUI -*/ +/*----- Value in opt.h for LWIP_DHCP: 0 -----*/ +#define LWIP_DHCP 1 +/*----- Value in opt.h for MEM_ALIGNMENT: 1 -----*/ +#define MEM_ALIGNMENT 4 +/*----- Value in opt.h for MEMP_NUM_SYS_TIMEOUT: (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (2*LWIP_DHCP) + LWIP_AUTOIP + LWIP_IGMP + LWIP_DNS + (PPP_SUPPORT*6*MEMP_NUM_PPP_PCB) + (LWIP_IPV6 ? (1 + LWIP_IPV6_REASS + LWIP_IPV6_MLD) : 0)) -*/ +//#define MEMP_NUM_SYS_TIMEOUT 5 +/*----- Value in opt.h for LWIP_ETHERNET: LWIP_ARP || PPPOE_SUPPORT -*/ +#define LWIP_ETHERNET 1 +/*----- Value in opt.h for LWIP_DNS_SECURE: (LWIP_DNS_SECURE_RAND_XID | LWIP_DNS_SECURE_NO_MULTIPLE_OUTSTANDING | LWIP_DNS_SECURE_RAND_SRC_PORT) -*/ +#define LWIP_DNS_SECURE 7 +/*----- Value in opt.h for TCP_SND_QUEUELEN: (4*TCP_SND_BUF + (TCP_MSS - 1))/TCP_MSS -----*/ +#define TCP_SND_QUEUELEN 9 +/*----- Value in opt.h for TCP_SNDLOWAT: LWIP_MIN(LWIP_MAX(((TCP_SND_BUF)/2), (2 * TCP_MSS) + 1), (TCP_SND_BUF) - 1) -*/ +#define TCP_SNDLOWAT 1071 +/*----- Value in opt.h for TCP_SNDQUEUELOWAT: LWIP_MAX(TCP_SND_QUEUELEN)/2, 5) -*/ +#define TCP_SNDQUEUELOWAT 5 +/*----- Value in opt.h for TCP_WND_UPDATE_THRESHOLD: LWIP_MIN(TCP_WND/4, TCP_MSS*4) -----*/ +#define TCP_WND_UPDATE_THRESHOLD 536 +/*----- Value in opt.h for TCPIP_THREAD_STACKSIZE: 0 -----*/ +#define TCPIP_THREAD_STACKSIZE 1024 +/*----- Value in opt.h for TCPIP_THREAD_PRIO: 1 -----*/ +#define TCPIP_THREAD_PRIO 3 +/*----- Value in opt.h for SLIPIF_THREAD_STACKSIZE: 0 -----*/ +#define SLIPIF_THREAD_STACKSIZE 1024 +/*----- Value in opt.h for SLIPIF_THREAD_PRIO: 1 -----*/ +#define SLIPIF_THREAD_PRIO 3 +/*----- Value in opt.h for DEFAULT_THREAD_STACKSIZE: 0 -----*/ +#define DEFAULT_THREAD_STACKSIZE 1024 +/*----- Value in opt.h for DEFAULT_THREAD_PRIO: 1 -----*/ +#define DEFAULT_THREAD_PRIO 3 +/*----- Value in opt.h for LWIP_STATS: 1 -----*/ +#define LWIP_STATS 0 +/*----- Value in opt.h for CHECKSUM_GEN_IP: 1 -----*/ +#define CHECKSUM_GEN_IP 0 +/*----- Value in opt.h for CHECKSUM_GEN_UDP: 1 -----*/ +#define CHECKSUM_GEN_UDP 0 +/*----- Value in opt.h for CHECKSUM_GEN_TCP: 1 -----*/ +#define CHECKSUM_GEN_TCP 0 +/*----- Value in opt.h for CHECKSUM_GEN_ICMP: 1 -----*/ +#define CHECKSUM_GEN_ICMP 0 +/*----- Value in opt.h for CHECKSUM_GEN_ICMP6: 1 -----*/ +#define CHECKSUM_GEN_ICMP6 0 +/*----- Value in opt.h for CHECKSUM_CHECK_IP: 1 -----*/ +#define CHECKSUM_CHECK_IP 0 +/*----- Value in opt.h for CHECKSUM_CHECK_UDP: 1 -----*/ +#define CHECKSUM_CHECK_UDP 0 +/*----- Value in opt.h for CHECKSUM_CHECK_TCP: 1 -----*/ +#define CHECKSUM_CHECK_TCP 0 +/*----- Value in opt.h for CHECKSUM_CHECK_ICMP: 1 -----*/ +#define CHECKSUM_CHECK_ICMP 0 +/*----- Value in opt.h for CHECKSUM_CHECK_ICMP6: 1 -----*/ +#define CHECKSUM_CHECK_ICMP6 0 +/*-----------------------------------------------------------------------------*/ + +/* Parameter(s) not set in STM32CubeMX LwIP Configuration GUI -*/ +/* LwIP Parameter(s) not in opt.h -----------------------------*/ +#define LWIP_PROVIDE_ERRNO 1 + + +#define LWIP_TIMEVAL_PRIVATE 0 + +#define LWIP_DEBUG 1 + +#define LWIP_DNS 1 +#define LWIP_SOCKET 1 +#define LWIP_RAW 1 +#define LWIP_NETCONN 1 + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +#ifdef __cplusplus +} +#endif +#endif /*__LWIPOPTS__H_H */ diff --git a/IDE/OPENSTM32/Inc/user_settings.h b/IDE/OPENSTM32/Inc/user_settings.h new file mode 100644 index 000000000..27f31012b --- /dev/null +++ b/IDE/OPENSTM32/Inc/user_settings.h @@ -0,0 +1,401 @@ +/* Example wolfSSL user settings for STM32F4 with CubeMX */ + +#ifndef WOLFSSL_USER_SETTINGS_H +#define WOLFSSL_USER_SETTINGS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* ------------------------------------------------------------------------- */ +/* Platform */ +/* ------------------------------------------------------------------------- */ +#undef WOLFSSL_GENERAL_ALIGNMENT +#define WOLFSSL_GENERAL_ALIGNMENT 4 + +#undef SINGLE_THREADED +#define SINGLE_THREADED + +#undef WOLFSSL_SMALL_STACK +#define WOLFSSL_SMALL_STACK + +#undef WOLFSSL_STM32F4 +#define WOLFSSL_STM32F4 + +#undef WOLFSSL_STM32_CUBEMX +#define WOLFSSL_STM32_CUBEMX + +#undef FREERTOS +//#define FREERTOS + +#undef WOLFSSL_LWIP +//#define WOLFSSL_LWIP + +#define HAVE_LWIP_NATIVE + + +/* ------------------------------------------------------------------------- */ +/* Math Configuration */ +/* ------------------------------------------------------------------------- */ +#undef USE_FAST_MATH +#define USE_FAST_MATH + +#ifdef USE_FAST_MATH + #undef TFM_TIMING_RESISTANT + #define TFM_TIMING_RESISTANT + + #undef TFM_NO_ASM + //#define TFM_NO_ASM + + /* Optimizations (TFM_ARM, TFM_ASM or none) */ + //#define TFM_ASM +#endif + + +/* ------------------------------------------------------------------------- */ +/* Crypto */ +/* ------------------------------------------------------------------------- */ +/* ECC */ +#if 1 + #undef HAVE_ECC + #define HAVE_ECC + + /* Manually define enabled curves */ + #undef ECC_USER_CURVES + #define ECC_USER_CURVES + + //#define HAVE_ECC192 + //#define HAVE_ECC224 + #undef NO_ECC256 + //#define HAVE_ECC384 + //#define HAVE_ECC521 + + /* Fixed point cache (speeds repeated operations against same private key) */ + #undef FP_ECC + //#define FP_ECC + #ifdef FP_ECC + /* Bits / Entries */ + #undef FP_ENTRIES + #define FP_ENTRIES 2 + #undef FP_LUT + #define FP_LUT 4 + #endif + + /* Optional ECC calculation method */ + /* Note: doubles heap usage, but slightly faster */ + #undef ECC_SHAMIR + #define ECC_SHAMIR + + /* Reduces heap usage, but slower */ + #undef ECC_TIMING_RESISTANT + #define ECC_TIMING_RESISTANT + + #ifdef USE_FAST_MATH + /* use reduced size math buffers for ecc points */ + #undef ALT_ECC_SIZE + #define ALT_ECC_SIZE + + /* optionally override the default max ecc bits */ + //#undef FP_MAX_BITS_ECC + //#define FP_MAX_BITS_ECC 512 + + /* Enable TFM optimizations for ECC */ + //#define TFM_ECC192 + //#define TFM_ECC224 + //#define TFM_ECC256 + //#define TFM_ECC384 + //#define TFM_ECC521 + #endif +#endif + +/* RSA */ +#undef NO_RSA +#if 1 + #ifdef USE_FAST_MATH + /* Maximum math bits (Max RSA key bits * 2) */ + #undef FP_MAX_BITS + #define FP_MAX_BITS 4096 + #endif + + /* half as much memory but twice as slow */ + #undef RSA_LOW_MEM + //#define RSA_LOW_MEM + + /* Enables blinding mode, to prevent timing attacks */ + #undef WC_RSA_BLINDING + #define WC_RSA_BLINDING + +#else + #define NO_RSA +#endif + +/* AES */ +#undef NO_AES +#if 1 + #undef HAVE_AESGCM + #define HAVE_AESGCM + + #ifdef HAVE_AESGCM + /* GCM with hardware acceleration requires AES counter/direct for unaligned sizes */ + #undef WOLFSSL_AES_COUNTER + #define WOLFSSL_AES_COUNTER + + #undef WOLFSSL_AES_DIRECT + #define WOLFSSL_AES_DIRECT + #endif + + /* GCM Method: GCM_SMALL, GCM_WORD32 or GCM_TABLE */ + #undef GCM_SMALL + #define GCM_SMALL +#else + #define NO_AES +#endif + +/* ChaCha20 / Poly1305 */ +#undef HAVE_CHACHA +#undef HAVE_POLY1305 +#if 0 + #define HAVE_CHACHA + #define HAVE_POLY1305 + + /* Needed for Poly1305 */ + #undef HAVE_ONE_TIME_AUTH + #define HAVE_ONE_TIME_AUTH +#endif + +/* Ed25519 / Curve25519 */ +#undef HAVE_CURVE25519 +#undef HAVE_ED25519 +#if 0 + #define HAVE_CURVE25519 + #define HAVE_ED25519 + + /* Optionally use small math (less flash usage, but much slower) */ + #if 0 + #define CURVED25519_SMALL + #endif +#endif + + +/* ------------------------------------------------------------------------- */ +/* Hashing */ +/* ------------------------------------------------------------------------- */ +/* Sha */ +#undef NO_SHA +#if 1 + /* 1k smaller, but 25% slower */ + //#define USE_SLOW_SHA +#else + #define NO_SHA +#endif + +/* Sha256 */ +#undef NO_SHA256 +#if 1 +#else + #define NO_SHA256 +#endif + +/* Sha512 */ +#undef WOLFSSL_SHA512 +#if 1 + #define WOLFSSL_SHA512 + + /* Sha384 */ + #undef WOLFSSL_SHA384 + #if 1 + #define WOLFSSL_SHA384 + #endif + + /* over twice as small, but 50% slower */ + //#define USE_SLOW_SHA2 +#endif + +/* MD5 */ +#undef NO_MD5 +#if 1 + /* enabled */ +#else + #define NO_MD5 +#endif + + +/* ------------------------------------------------------------------------- */ +/* HW Crypto Acceleration */ +/* ------------------------------------------------------------------------- */ +// See settings.h STM32F4 section + + +/* ------------------------------------------------------------------------- */ +/* Benchmark / Test */ +/* ------------------------------------------------------------------------- */ +/* Use reduced benchmark / test sizes */ +#undef BENCH_EMBEDDED +#define BENCH_EMBEDDED + +#undef USE_CERT_BUFFERS_2048 +#define USE_CERT_BUFFERS_2048 + +#undef USE_CERT_BUFFERS_256 +#define USE_CERT_BUFFERS_256 + + +/* ------------------------------------------------------------------------- */ +/* Debugging */ +/* ------------------------------------------------------------------------- */ +#undef WOLFSSL_DEBUG +//#define WOLFSSL_DEBUG + +#ifdef WOLFSSL_DEBUG + /* Use this to measure / print heap usage */ + #if 0 + #undef USE_WOLFSSL_MEMORY + #define USE_WOLFSSL_MEMORY + + #undef WOLFSSL_TRACK_MEMORY + #define WOLFSSL_TRACK_MEMORY + #endif +#else + #undef NO_WOLFSSL_MEMORY + #define NO_WOLFSSL_MEMORY + + #undef NO_ERROR_STRINGS + //#define NO_ERROR_STRINGS +#endif + + +/* ------------------------------------------------------------------------- */ +/* Port */ +/* ------------------------------------------------------------------------- */ + +/* Override Current Time */ +/* Allows custom "custom_time()" function to be used for benchmark */ +#define WOLFSSL_USER_CURRTIME + + +/* ------------------------------------------------------------------------- */ +/* RNG */ +/* ------------------------------------------------------------------------- */ +/* Size of returned HW RNG value */ +#define CUSTOM_RAND_TYPE unsigned int + +#define NO_OLD_RNGNAME + +/* Choose RNG method */ +#if 0 +#if 1 + /* Use built-in P-RNG (SHA256 based) with HW RNG */ + /* P-RNG + HW RNG (P-RNG is ~8K) */ + #undef HAVE_HASHDRBG + #define HAVE_HASHDRBG + + extern unsigned int custom_rand_generate(void); + #undef CUSTOM_RAND_GENERATE + #define CUSTOM_RAND_GENERATE custom_rand_generate +#else + /* Bypass P-RNG and use only HW RNG */ + extern int custom_rand_generate_block(unsigned char* output, unsigned int sz); + #undef CUSTOM_RAND_GENERATE_BLOCK + #define CUSTOM_RAND_GENERATE_BLOCK custom_rand_generate_block +#endif +#endif + + +/* ------------------------------------------------------------------------- */ +/* Enable Features */ +/* ------------------------------------------------------------------------- */ +#undef KEEP_PEER_CERT +//#define KEEP_PEER_CERT + +#undef HAVE_COMP_KEY +//#define HAVE_COMP_KEY + +#undef HAVE_TLS_EXTENSIONS +#define HAVE_TLS_EXTENSIONS + +#undef HAVE_SUPPORTED_CURVES +#define HAVE_SUPPORTED_CURVES + +#undef WOLFSSL_BASE64_ENCODE +//#define WOLFSSL_BASE64_ENCODE + +/* TLS Session Cache */ +#if 0 + #define SMALL_SESSION_CACHE +#else + #define NO_SESSION_CACHE +#endif + + +/* ------------------------------------------------------------------------- */ +/* Disable Features */ +/* ------------------------------------------------------------------------- */ +#undef NO_WOLFSSL_SERVER +//#define NO_WOLFSSL_SERVER + +#undef NO_WOLFSSL_CLIENT +//#define NO_WOLFSSL_CLIENT + +#undef NO_CRYPT_TEST +//#define NO_CRYPT_TEST + +#undef NO_CRYPT_BENCHMARK +//#define NO_CRYPT_BENCHMARK + +/* In-lining of misc.c functions */ +/* If defined, must include wolfcrypt/src/misc.c in build */ +/* Slower, but about 1k smaller */ +#undef NO_INLINE +//#define NO_INLINE + +#undef NO_FILESYSTEM +#define NO_FILESYSTEM + +#undef NO_WRITEV +#define NO_WRITEV + +#undef NO_MAIN_DRIVER +#define NO_MAIN_DRIVER + +#undef NO_DEV_RANDOM +#define NO_DEV_RANDOM + +#undef NO_DSA +#define NO_DSA + +#undef NO_DH +#define NO_DH + +#undef NO_DES3 +#define NO_DES3 + +#undef NO_RC4 +#define NO_RC4 + +#undef NO_OLD_TLS +#define NO_OLD_TLS + +#undef NO_HC128 +#define NO_HC128 + +#undef NO_RABBIT +#define NO_RABBIT + +#undef NO_PSK +#define NO_PSK + +#undef NO_MD4 +#define NO_MD4 + +#undef NO_PWDBASED +#define NO_PWDBASED + +#undef NO_CODING +#define NO_CODING + + +#ifdef __cplusplus +} +#endif + +#endif /* WOLFSSL_USER_SETTINGS_H */ diff --git a/IDE/OPENSTM32/Inc/wolfssl_example.h b/IDE/OPENSTM32/Inc/wolfssl_example.h new file mode 100644 index 000000000..ba23a402c --- /dev/null +++ b/IDE/OPENSTM32/Inc/wolfssl_example.h @@ -0,0 +1,14 @@ +/* + * wolfssl_example.h + * + * Created on: Oct 3, 2016 + * Author: davidgarske + */ + +#ifndef WOLFSSL_EXAMPLE_H_ +#define WOLFSSL_EXAMPLE_H_ + +void wolfCryptDemo(void const * argument); + + +#endif /* WOLFSSL_EXAMPLE_H_ */ diff --git a/IDE/OPENSTM32/README.md b/IDE/OPENSTM32/README.md new file mode 100644 index 000000000..ec1e618cc --- /dev/null +++ b/IDE/OPENSTM32/README.md @@ -0,0 +1,27 @@ +# wolfSSL STM32F2/F4 Example for Open STM32 Tools System Workbench + + +## Requirements + +* STM32CubeMX: STM32 CubeMX HAL code generation tool - [http://www.st.com/en/development-tools/stm32cubemx.html](http://www.st.com/en/development-tools/stm32cubemx.html) +* SystemWorkbench for STM32 - [http://www.st.com/en/development-tools/sw4stm32.html](http://www.st.com/en/development-tools/sw4stm32.html) + +## Setup + +1. Using the STM32CubeMX tool, load the `/IDE/OPENSTM32/wolfSTM32.ino` file. +2. Adjust the HAL options based on your specific micro-controller. +3. Generate source code. +4. Run `SystemWorkbench` and choose a new workspace location for this project. +5. Import `wolfSTM32' project from `/IDE/OPENSTM32/`. +6. Adjust the micro-controller define in `Project Settings -> C/C++ General -> Paths and Symbols -> Symbols -> GNU C`. Example uses `STM32F437xx`, but should be changed to reflect your micro-controller type. +7. Build and Run + +Note: You may need to manually copy over the CubeMX HAL files for `stm32f4xx_hal_cryp.c`, `stm32f4xx_hal_cryp_ex.c`, `stm32f4xx_hal_cryp.h`, `stm32f4xx_hal_cryp_ex.h`. Also uncomment the `#define HAL_CRYP_MODULE_ENABLED` line in `stm32f4xx_hal_conf.h`. + +## Configuration + +The settings for the wolfSTM32 project are located in `/IDE/OPENSTM32/Inc/user_settings.h`. + +## Support + +For questions please email [support@wolfssl.com](mailto:support@wolfssl.com) \ No newline at end of file diff --git a/IDE/OPENSTM32/Src/main.c b/IDE/OPENSTM32/Src/main.c new file mode 100644 index 000000000..839ffccd0 --- /dev/null +++ b/IDE/OPENSTM32/Src/main.c @@ -0,0 +1,384 @@ +/* Includes ------------------------------------------------------------------*/ +#include "stm32f4xx.h" +#include "cmsis_os.h" +#include "lwip.h" +#include "wolfssl_example.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +RNG_HandleTypeDef hrng; + +RTC_HandleTypeDef hrtc; + +UART_HandleTypeDef huart4; + +osThreadId defaultTaskHandle; + +/* USER CODE BEGIN PV */ +/* Private variables ---------------------------------------------------------*/ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +void Error_Handler(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_RNG_Init(void); +static void MX_UART4_Init(void); +static void MX_RTC_Init(void); + +/* USER CODE BEGIN PFP */ +/* Private function prototypes -----------------------------------------------*/ + +/* USER CODE END PFP */ + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration----------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* Configure the system clock */ + SystemClock_Config(); + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_RNG_Init(); + MX_UART4_Init(); + MX_RTC_Init(); + + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + osThreadDef(defaultTask, wolfCryptDemo, osPriorityNormal, 0, 24000); + defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + + /* Start scheduler */ + osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + + } + /* USER CODE END 3 */ + +} + +/** System Clock Configuration +*/ +#define SysTick_IRQn -1 + +void SystemClock_Config(void) +{ + + RCC_OscInitTypeDef RCC_OscInitStruct; + RCC_ClkInitTypeDef RCC_ClkInitStruct; + RCC_PeriphCLKInitTypeDef PeriphClkInitStruct; + + __HAL_RCC_PWR_CLK_ENABLE(); + + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.LSEState = RCC_LSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 15; + RCC_OscInitStruct.PLL.PLLN = 144; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 5; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3) != HAL_OK) + { + Error_Handler(); + } + + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC; + PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + { + Error_Handler(); + } + + HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); + + HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); + + /* SysTick_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(SysTick_IRQn, 15, 0); +} + +/* CRC init function */ +static void MX_CRC_Init(void) +{ + + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + +} + +/* RNG init function */ +static void MX_RNG_Init(void) +{ + + hrng.Instance = RNG; + if (HAL_RNG_Init(&hrng) != HAL_OK) + { + Error_Handler(); + } + +} + +/* RTC init function */ +#define RTC_ASYNCH_PREDIV 0x7F /* LSE as RTC clock */ +#define RTC_SYNCH_PREDIV 0x00FF /* LSE as RTC clock */ +static void MX_RTC_Init(void) +{ + + RTC_TimeTypeDef sTime; + RTC_DateTypeDef sDate; + + /**Initialize RTC and set the Time and Date + */ + hrtc.Instance = RTC; + hrtc.Init.HourFormat = RTC_HOURFORMAT_24; + hrtc.Init.AsynchPrediv = RTC_ASYNCH_PREDIV; + hrtc.Init.SynchPrediv = RTC_SYNCH_PREDIV; + hrtc.Init.OutPut = RTC_OUTPUT_DISABLE; + hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; + hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; + if (HAL_RTC_Init(&hrtc) != HAL_OK) + { + Error_Handler(); + } + + sTime.Hours = 0x0; + sTime.Minutes = 0x0; + sTime.Seconds = 0x0; + sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE; + sTime.StoreOperation = RTC_STOREOPERATION_RESET; + if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK) + { + Error_Handler(); + } + + sDate.WeekDay = RTC_WEEKDAY_MONDAY; + sDate.Month = RTC_MONTH_JANUARY; + sDate.Date = 0x1; + sDate.Year = 0x0; + + if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BCD) != HAL_OK) + { + Error_Handler(); + } + + /**Enable the TimeStamp + */ + if (HAL_RTCEx_SetTimeStamp(&hrtc, RTC_TIMESTAMPEDGE_RISING, RTC_TIMESTAMPPIN_DEFAULT) != HAL_OK) + { + Error_Handler(); + } + + /**Enable the reference Clock input + */ + if (HAL_RTCEx_SetRefClock(&hrtc) != HAL_OK) + { + Error_Handler(); + } + +} + +/* UART4 init function */ +static void MX_UART4_Init(void) +{ + + huart4.Instance = UART4; + huart4.Init.BaudRate = 115200; + huart4.Init.WordLength = UART_WORDLENGTH_8B; + huart4.Init.StopBits = UART_STOPBITS_1; + huart4.Init.Parity = UART_PARITY_NONE; + huart4.Init.Mode = UART_MODE_TX_RX; + huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart4.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart4) != HAL_OK) + { + Error_Handler(); + } + + // Turn off buffers, so I/O occurs immediately + setvbuf(stdin, NULL, _IONBF, 0); + setvbuf(stdout, NULL, _IONBF, 0); + setvbuf(stderr, NULL, _IONBF, 0); +} + +int _write (int fd, char *ptr, int len) +{ + (void)fd; + + /* Write "len" of char from "ptr" to file id "fd" + * Return number of char written. + * Need implementing with UART here. */ + HAL_UART_Transmit(&huart4, (uint8_t *)ptr, len, 0xFFFF); + + return len; +} + +int _read (int fd, char *ptr, int len) +{ + /* Read "len" of char to "ptr" from file id "fd" + * Return number of char read. + * Need implementing with UART here. */ + (void)fd; + + return HAL_UART_Receive(&huart4, (uint8_t*)ptr, len, 0xFFFF); +} + +void _ttywrch(int ch) { + /* Write one char "ch" to the default console + * Need implementing with UART here. */ + _write(0, (char*)&ch, 1); +} + + + +/** Configure pins as + * Analog + * Input + * Output + * EVENT_OUT + * EXTI +*/ +static void MX_GPIO_Init(void) +{ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM1 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ +/* USER CODE BEGIN Callback 0 */ + +/* USER CODE END Callback 0 */ + if (htim->Instance == TIM1) { + HAL_IncTick(); + } +/* USER CODE BEGIN Callback 1 */ + +/* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @param None + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler */ + /* User can add his own implementation to report the HAL error return state */ + while(1) + { + } + /* USER CODE END Error_Handler */ +} + +#ifdef USE_FULL_ASSERT + +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t* file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ + +} + +#endif diff --git a/IDE/OPENSTM32/Src/wolfssl_example.c b/IDE/OPENSTM32/Src/wolfssl_example.c new file mode 100644 index 000000000..b5c1b4251 --- /dev/null +++ b/IDE/OPENSTM32/Src/wolfssl_example.c @@ -0,0 +1,101 @@ +#include +#include "stm32f4xx_hal.h" +#include "cmsis_os.h" +#include "lwip.h" + +#ifdef HAVE_CONFIG_H + #include +#endif + +#include +#include +#include +#include + + +/***************************************************************************** + * Private types/enumerations/variables + ****************************************************************************/ + +/* UART definitions */ +extern UART_HandleTypeDef huart4; + + +/***************************************************************************** + * Public types/enumerations/variables + ****************************************************************************/ +typedef struct func_args { + int argc; + char** argv; + int return_code; +} func_args; + +const char menu1[] = "\r\n" + "\tt. WolfSSL Test\r\n" + "\tb. WolfSSL Benchmark\r\n"; + +/***************************************************************************** + * Private functions + ****************************************************************************/ + + +/***************************************************************************** + * Public functions + ****************************************************************************/ +void wolfCryptDemo(void const * argument) +{ + uint8_t buffer[1] = {'t'}; + func_args args; + + /* init code for LWIP */ + MX_LWIP_Init(); + + while (1) { + printf("\r\n\t\t\t\tMENU\r\n"); + printf(menu1); + printf("Please select one of the above options: "); + + HAL_UART_Receive(&huart4, buffer, sizeof(buffer), 1000); + + switch (buffer[0]) { + + case 't': + memset(&args, 0, sizeof(args)); + printf("\nCrypt Test\n"); + wolfcrypt_test(&args); + printf("Crypt Test: Return code %d\n", args.return_code); + break; + + case 'b': + memset(&args, 0, sizeof(args)); + printf("\nBenchmark Test\n"); + benchmark_test(&args); + printf("Benchmark Test: Return code %d\n", args.return_code); + break; + + // All other cases go here + default: printf("\r\nSelection out of range\r\n"); break; + } + } +} + +extern RTC_HandleTypeDef hrtc; +double current_time() +{ + RTC_TimeTypeDef time; + RTC_DateTypeDef date; + uint32_t subsec; + + /* must get time and date here due to STM32 HW bug */ + HAL_RTC_GetTime(&hrtc, &time, FORMAT_BIN); + HAL_RTC_GetDate(&hrtc, &date, FORMAT_BIN); + subsec = (255 - time.SubSeconds) * 1000 / 255; + + (void)date; + + /* return seconds.milliseconds */ + return ((double)time.Hours * 24) + + ((double)time.Minutes * 60) + + (double)time.Seconds + + ((double)subsec/1000); +} diff --git a/IDE/OPENSTM32/include.am b/IDE/OPENSTM32/include.am new file mode 100644 index 000000000..bac8b392d --- /dev/null +++ b/IDE/OPENSTM32/include.am @@ -0,0 +1,15 @@ +# vim:ft=automake +# included from Top Level Makefile.am +# All paths should be given relative to the root + +EXTRA_DIST+= IDE/OPENSTM32/README.md +EXTRA_DIST+= IDE/OPENSTM32/.cproject +EXTRA_DIST+= IDE/OPENSTM32/.project +EXTRA_DIST+= IDE/OPENSTM32/wolfSTM32.cfg +EXTRA_DIST+= IDE/OPENSTM32/wolfSTM32.ioc +EXTRA_DIST+= IDE/OPENSTM32/wolfSTM32.xml +EXTRA_DIST+= IDE/OPENSTM32/Src/main.c +EXTRA_DIST+= IDE/OPENSTM32/Src/wolfssl_example.c +EXTRA_DIST+= IDE/OPENSTM32/Inc/user_settings.h +EXTRA_DIST+= IDE/OPENSTM32/Inc/wolfssl_example.h +EXTRA_DIST+= IDE/OPENSTM32/Inc/lwipopts.h diff --git a/IDE/OPENSTM32/wolfSTM32.cfg b/IDE/OPENSTM32/wolfSTM32.cfg new file mode 100644 index 000000000..f9b02ce4c --- /dev/null +++ b/IDE/OPENSTM32/wolfSTM32.cfg @@ -0,0 +1,13 @@ +# This is an wolfSTM32 board with a single STM32F437IIHx chip. +# Generated by System Workbench for STM32 + +source [find interface/stlink-v2-1.cfg] + +set WORKAREASIZE 0x30000 +transport select "hla_jtag" +set CPUTAPID 0x4ba00477 + +source [find target/stm32f4x_stlink.cfg] + +# use hardware reset, connect under reset +reset_config srst_only srst_nogate diff --git a/IDE/OPENSTM32/wolfSTM32.ioc b/IDE/OPENSTM32/wolfSTM32.ioc new file mode 100644 index 000000000..d91e1d25c --- /dev/null +++ b/IDE/OPENSTM32/wolfSTM32.ioc @@ -0,0 +1,213 @@ +#MicroXplorer Configuration settings - do not modify +FREERTOS.IPParameters=Tasks01 +FREERTOS.Tasks01=defaultTask,0,128,StartDefaultTask,Default +File.Version=6 +KeepUserPlacement=false +LWIP.Version=v1.5.0_RC0_20160211_Cube +Mcu.Family=STM32F4 +Mcu.IP0=CRC +Mcu.IP1=ETH +Mcu.IP2=FREERTOS +Mcu.IP3=LWIP +Mcu.IP4=NVIC +Mcu.IP5=RCC +Mcu.IP6=RNG +Mcu.IP7=RTC +Mcu.IP8=SYS +Mcu.IP9=UART4 +Mcu.IPNb=10 +Mcu.Name=STM32F437I(G-I)Hx +Mcu.Package=UFBGA176 +Mcu.Pin0=PE2 +Mcu.Pin1=PG14 +Mcu.Pin10=PC10 +Mcu.Pin11=PC13 +Mcu.Pin12=PC14/OSC32_IN +Mcu.Pin13=PC15/OSC32_OUT +Mcu.Pin14=PH2 +Mcu.Pin15=PH0/OSC_IN +Mcu.Pin16=PH3 +Mcu.Pin17=PH1/OSC_OUT +Mcu.Pin18=PC1 +Mcu.Pin19=PC2 +Mcu.Pin2=PG13 +Mcu.Pin20=PC3 +Mcu.Pin21=PH6 +Mcu.Pin22=PA1 +Mcu.Pin23=PC4 +Mcu.Pin24=PH7 +Mcu.Pin25=PA2 +Mcu.Pin26=PC5 +Mcu.Pin27=PA7 +Mcu.Pin28=PB15 +Mcu.Pin29=VP_CRC_VS_CRC +Mcu.Pin3=PB4 +Mcu.Pin30=VP_FREERTOS_VS_ENABLE +Mcu.Pin31=VP_LWIP_VS_Enabled +Mcu.Pin32=VP_RNG_VS_RNG +Mcu.Pin33=VP_SYS_VS_tim1 +Mcu.Pin4=PB3 +Mcu.Pin5=PA15 +Mcu.Pin6=PA14 +Mcu.Pin7=PA13 +Mcu.Pin8=PG11 +Mcu.Pin9=PC11 +Mcu.PinsNb=34 +Mcu.UserConstants= +Mcu.UserName=STM32F437IIHx +MxCube.Version=4.16.1 +MxDb.Version=DB.4.0.161 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false +NVIC.ETH_IRQn=true\:0\:0\:false\:false\:true\:false +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false +NVIC.PendSV_IRQn=true\:15\:0\:false\:false\:false\:true +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:false\:false +NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:true +NVIC.TIM1_UP_TIM10_IRQn=true\:0\:0\:false\:false\:true\:false +NVIC.TimeBase=TIM1_UP_TIM10_IRQn +NVIC.TimeBaseIP=TIM1 +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false +PA1.Mode=MII +PA1.Signal=ETH_RX_CLK +PA13.Mode=JTAG_5_pins +PA13.Signal=SYS_JTMS-SWDIO +PA14.Mode=JTAG_5_pins +PA14.Signal=SYS_JTCK-SWCLK +PA15.Mode=JTAG_5_pins +PA15.Signal=SYS_JTDI +PA2.Mode=MII +PA2.Signal=ETH_MDIO +PA7.Mode=MII +PA7.Signal=ETH_RX_DV +PB15.Mode=Reference_Clock_Detection_Activate +PB15.Signal=RTC_REFIN +PB3.Mode=JTAG_5_pins +PB3.Signal=SYS_JTDO-SWO +PB4.Mode=JTAG_5_pins +PB4.Signal=SYS_JTRST +PC1.Mode=MII +PC1.Signal=ETH_MDC +PC10.Mode=Asynchronous +PC10.Signal=UART4_TX +PC11.Mode=Asynchronous +PC11.Signal=UART4_RX +PC13.Mode=Timestamp enabled - Input Enabled to AF1 +PC13.Signal=RTC_AF1 +PC14/OSC32_IN.Mode=LSE-External-Oscillator +PC14/OSC32_IN.Signal=RCC_OSC32_IN +PC15/OSC32_OUT.Mode=LSE-External-Oscillator +PC15/OSC32_OUT.Signal=RCC_OSC32_OUT +PC2.Mode=MII +PC2.Signal=ETH_TXD2 +PC3.Mode=MII +PC3.Signal=ETH_TX_CLK +PC4.Mode=MII +PC4.Signal=ETH_RXD0 +PC5.Mode=MII +PC5.Signal=ETH_RXD1 +PCC.Checker=false +PCC.Line=STM32F427/437 +PCC.MCU=STM32F437I(G-I)Hx +PCC.MXVersion=4.16.1 +PCC.PartNumber=STM32F437IIHx +PCC.Seq0=0 +PCC.Series=STM32F4 +PCC.Temperature=25 +PCC.Vdd=null +PE2.Mode=MII +PE2.Signal=ETH_TXD3 +PG11.Mode=MII +PG11.Signal=ETH_TX_EN +PG13.Mode=MII +PG13.Signal=ETH_TXD0 +PG14.Mode=MII +PG14.Signal=ETH_TXD1 +PH0/OSC_IN.Mode=HSE-External-Oscillator +PH0/OSC_IN.Signal=RCC_OSC_IN +PH1/OSC_OUT.Mode=HSE-External-Oscillator +PH1/OSC_OUT.Signal=RCC_OSC_OUT +PH2.Mode=MII +PH2.Signal=ETH_CRS +PH3.Mode=MII +PH3.Signal=ETH_COL +PH6.Mode=MII +PH6.Signal=ETH_RXD2 +PH7.Mode=MII +PH7.Signal=ETH_RXD3 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerOptimize=2 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=false +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32F437IIHx +ProjectManager.FirmwarePackage=STM32Cube FW_F4 V1.13.0 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x10000 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=1 +ProjectManager.PreviousToolchain=SW4STM32 +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=wolfSTM32.ioc +ProjectManager.ProjectName=wolfSTM32 +ProjectManager.StackSize=0x4000 +ProjectManager.TargetToolchain=SW4STM32 +ProjectManager.ToolChainLocation= +ProjectManager.UnderRoot=true +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false,2-MX_CRC_Init-CRC-false,3-MX_RNG_Init-RNG-false,4-MX_UART4_Init-UART4-false,5-MX_LWIP_Init-LWIP-false,6-MX_RTC_Init-RTC-false +RCC.48MHZClocksFreq_Value=48000000 +RCC.AHBFreq_Value=120000000 +RCC.APB1CLKDivider=RCC_HCLK_DIV4 +RCC.APB1Freq_Value=30000000 +RCC.APB1TimFreq_Value=60000000 +RCC.APB2CLKDivider=RCC_HCLK_DIV2 +RCC.APB2Freq_Value=60000000 +RCC.APB2TimFreq_Value=120000000 +RCC.CortexFreq_Value=120000000 +RCC.EthernetFreq_Value=120000000 +RCC.FCLKCortexFreq_Value=120000000 +RCC.FamilyName=M +RCC.HCLKFreq_Value=120000000 +RCC.HSE_VALUE=25000000 +RCC.HSI_VALUE=16000000 +RCC.I2SClocksFreq_Value=160000000 +RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLQ,PLLQCLKFreq_Value,PLLSourceVirtual,RCC_RTC_Clock_Source,RTCFreq_Value,RTCHSEDivFreq_Value,SAI_AClocksFreq_Value,SAI_BClocksFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value,VCOSAIOutputFreq_ValueQ,VcooutputI2S,VcooutputI2SQ +RCC.LSI_VALUE=32000 +RCC.MCO2PinFreq_Value=120000000 +RCC.PLLCLKFreq_Value=120000000 +RCC.PLLM=15 +RCC.PLLN=144 +RCC.PLLQ=5 +RCC.PLLQCLKFreq_Value=48000000 +RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE +RCC.RCC_RTC_Clock_Source=RCC_RTCCLKSOURCE_LSE +RCC.RTCFreq_Value=32768 +RCC.RTCHSEDivFreq_Value=12500000 +RCC.SAI_AClocksFreq_Value=20416666.666666668 +RCC.SAI_BClocksFreq_Value=20416666.666666668 +RCC.SYSCLKFreq_VALUE=120000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +RCC.VCOI2SOutputFreq_Value=320000000 +RCC.VCOInputFreq_Value=1666666.6666666667 +RCC.VCOOutputFreq_Value=240000000 +RCC.VCOSAIOutputFreq_Value=81666666.66666667 +RCC.VCOSAIOutputFreq_ValueQ=20416666.666666668 +RCC.VcooutputI2S=160000000 +RCC.VcooutputI2SQ=160000000 +VP_CRC_VS_CRC.Mode=CRC_Activate +VP_CRC_VS_CRC.Signal=CRC_VS_CRC +VP_FREERTOS_VS_ENABLE.Mode=Enabled +VP_FREERTOS_VS_ENABLE.Signal=FREERTOS_VS_ENABLE +VP_LWIP_VS_Enabled.Mode=Enabled +VP_LWIP_VS_Enabled.Signal=LWIP_VS_Enabled +VP_RNG_VS_RNG.Mode=RNG_Activate +VP_RNG_VS_RNG.Signal=RNG_VS_RNG +VP_SYS_VS_tim1.Mode=TIM1 +VP_SYS_VS_tim1.Signal=SYS_VS_tim1 +board=wolfSTM32 diff --git a/IDE/OPENSTM32/wolfSTM32.xml b/IDE/OPENSTM32/wolfSTM32.xml new file mode 100644 index 000000000..a45880924 --- /dev/null +++ b/IDE/OPENSTM32/wolfSTM32.xml @@ -0,0 +1,9 @@ + + + + wolfSTM32 + stm32f437iihx + JTAG + ST-LinkV2-1 + + diff --git a/IDE/include.am b/IDE/include.am index e94d1f1b5..92f5b952f 100644 --- a/IDE/include.am +++ b/IDE/include.am @@ -9,5 +9,6 @@ include IDE/WORKBENCH/include.am include IDE/ROWLEY-CROSSWORKS-ARM/include.am include IDE/ARDUINO/include.am include IDE/INTIME-RTOS/include.am +include IDE/OPENSTM32/include.am EXTRA_DIST+= IDE/IAR-EWARM IDE/MDK-ARM IDE/MDK5-ARM IDE/MYSQL IDE/LPCXPRESSO IDE/HEXIWEAR diff --git a/wolfcrypt/src/aes.c b/wolfcrypt/src/aes.c index 2ffa1b97d..e8a8b2b28 100755 --- a/wolfcrypt/src/aes.c +++ b/wolfcrypt/src/aes.c @@ -203,15 +203,17 @@ #if defined(STM32F2_CRYPTO) || defined(STM32F4_CRYPTO) /* STM32F2/F4 hardware AES support for CBC, CTR modes */ + /* CRYPT_AES_GCM starts the IV with 2 */ + #define STM32_GCM_IV_START 2 + #if defined(WOLFSSL_AES_DIRECT) || defined(HAVE_AESGCM) || defined(HAVE_AESCCM) static int wc_AesEncrypt(Aes* aes, const byte* inBlock, byte* outBlock) { int ret = 0; #ifdef WOLFSSL_STM32_CUBEMX CRYP_HandleTypeDef hcryp; - XMEMSET(&hcryp, 0, sizeof(CRYP_HandleTypeDef)); - /* load key into correct registers */ + XMEMSET(&hcryp, 0, sizeof(CRYP_HandleTypeDef)); switch(aes->rounds) { case 10: /* 128-bit key */ hcryp.Init.KeySize = CRYP_KEYSIZE_128B; @@ -232,7 +234,7 @@ HAL_CRYP_Init(&hcryp); if (HAL_CRYP_AESECB_Encrypt(&hcryp, (uint8_t*)inBlock, AES_BLOCK_SIZE, - outBlock, STM32_HAL_TIMEOUT) != HAL_OK) { + outBlock, STM32_HAL_TIMEOUT) != HAL_OK) { ret = WC_TIMEOUT_E; } @@ -252,8 +254,7 @@ CRYP_DeInit(); /* load key into correct registers */ - switch(aes->rounds) - { + switch (aes->rounds) { case 10: /* 128-bit key */ AES_CRYP_InitStructure.CRYP_KeySize = CRYP_KeySize_128b; AES_CRYP_KeyInitStructure.CRYP_Key2Left = enc_key[0]; @@ -307,7 +308,7 @@ CRYP_DataIn(*(uint32_t*)&inBlock[12]); /* wait until the complete message has been processed */ - while(CRYP_GetFlagStatus(CRYP_FLAG_BUSY) != RESET) {} + while (CRYP_GetFlagStatus(CRYP_FLAG_BUSY) != RESET) {} *(uint32_t*)&outBlock[0] = CRYP_DataOut(); *(uint32_t*)&outBlock[4] = CRYP_DataOut(); @@ -328,8 +329,8 @@ int ret = 0; #ifdef WOLFSSL_STM32_CUBEMX CRYP_HandleTypeDef hcryp; + XMEMSET(&hcryp, 0, sizeof(CRYP_HandleTypeDef)); - /* load key into correct registers */ switch(aes->rounds) { case 10: /* 128-bit key */ hcryp.Init.KeySize = CRYP_KEYSIZE_128B; @@ -350,13 +351,89 @@ HAL_CRYP_Init(&hcryp); if (HAL_CRYP_AESECB_Decrypt(&hcryp, (uint8_t*)inBlock, AES_BLOCK_SIZE, - outBlock, STM32_HAL_TIMEOUT) != HAL_OK) { + outBlock, STM32_HAL_TIMEOUT) != HAL_OK) { ret = WC_TIMEOUT_E; } HAL_CRYP_DeInit(&hcryp); #else - #error AES Decrypt not implemented for STM32 StdPeri lib + word32 *enc_key; + CRYP_InitTypeDef AES_CRYP_InitStructure; + CRYP_KeyInitTypeDef AES_CRYP_KeyInitStructure; + + enc_key = aes->key; + + /* crypto structure initialization */ + CRYP_KeyStructInit(&AES_CRYP_KeyInitStructure); + CRYP_StructInit(&AES_CRYP_InitStructure); + + /* reset registers to their default values */ + CRYP_DeInit(); + + /* load key into correct registers */ + switch (aes->rounds) { + case 10: /* 128-bit key */ + AES_CRYP_InitStructure.CRYP_KeySize = CRYP_KeySize_128b; + AES_CRYP_KeyInitStructure.CRYP_Key2Left = enc_key[0]; + AES_CRYP_KeyInitStructure.CRYP_Key2Right = enc_key[1]; + AES_CRYP_KeyInitStructure.CRYP_Key3Left = enc_key[2]; + AES_CRYP_KeyInitStructure.CRYP_Key3Right = enc_key[3]; + break; + + case 12: /* 192-bit key */ + AES_CRYP_InitStructure.CRYP_KeySize = CRYP_KeySize_192b; + AES_CRYP_KeyInitStructure.CRYP_Key1Left = enc_key[0]; + AES_CRYP_KeyInitStructure.CRYP_Key1Right = enc_key[1]; + AES_CRYP_KeyInitStructure.CRYP_Key2Left = enc_key[2]; + AES_CRYP_KeyInitStructure.CRYP_Key2Right = enc_key[3]; + AES_CRYP_KeyInitStructure.CRYP_Key3Left = enc_key[4]; + AES_CRYP_KeyInitStructure.CRYP_Key3Right = enc_key[5]; + break; + + case 14: /* 256-bit key */ + AES_CRYP_InitStructure.CRYP_KeySize = CRYP_KeySize_256b; + AES_CRYP_KeyInitStructure.CRYP_Key0Left = enc_key[0]; + AES_CRYP_KeyInitStructure.CRYP_Key0Right = enc_key[1]; + AES_CRYP_KeyInitStructure.CRYP_Key1Left = enc_key[2]; + AES_CRYP_KeyInitStructure.CRYP_Key1Right = enc_key[3]; + AES_CRYP_KeyInitStructure.CRYP_Key2Left = enc_key[4]; + AES_CRYP_KeyInitStructure.CRYP_Key2Right = enc_key[5]; + AES_CRYP_KeyInitStructure.CRYP_Key3Left = enc_key[6]; + AES_CRYP_KeyInitStructure.CRYP_Key3Right = enc_key[7]; + break; + + default: + break; + } + CRYP_KeyInit(&AES_CRYP_KeyInitStructure); + + /* set direction, mode, and datatype */ + AES_CRYP_InitStructure.CRYP_AlgoDir = CRYP_AlgoDir_Decrypt; + AES_CRYP_InitStructure.CRYP_AlgoMode = CRYP_AlgoMode_AES_ECB; + AES_CRYP_InitStructure.CRYP_DataType = CRYP_DataType_8b; + CRYP_Init(&AES_CRYP_InitStructure); + + /* enable crypto processor */ + CRYP_Cmd(ENABLE); + + /* flush IN/OUT FIFOs */ + CRYP_FIFOFlush(); + + CRYP_DataIn(*(uint32_t*)&inBlock[0]); + CRYP_DataIn(*(uint32_t*)&inBlock[4]); + CRYP_DataIn(*(uint32_t*)&inBlock[8]); + CRYP_DataIn(*(uint32_t*)&inBlock[12]); + + /* wait until the complete message has been processed */ + while (CRYP_GetFlagStatus(CRYP_FLAG_BUSY) != RESET) {} + + *(uint32_t*)&outBlock[0] = CRYP_DataOut(); + *(uint32_t*)&outBlock[4] = CRYP_DataOut(); + *(uint32_t*)&outBlock[8] = CRYP_DataOut(); + *(uint32_t*)&outBlock[12] = CRYP_DataOut(); + + /* disable crypto processor */ + CRYP_Cmd(DISABLE); #endif /* WOLFSSL_STM32_CUBEMX */ return ret; } @@ -2086,10 +2163,11 @@ int wc_AesSetIV(Aes* aes, const byte* iv) int wc_AesCbcEncrypt(Aes* aes, byte* out, const byte* in, word32 sz) { int ret = 0; + word32 blocks = (sz / AES_BLOCK_SIZE); CRYP_HandleTypeDef hcryp; + XMEMSET(&hcryp, 0, sizeof(CRYP_HandleTypeDef)); - /* load key into correct registers */ - switch(aes->rounds) { + switch (aes->rounds) { case 10: /* 128-bit key */ hcryp.Init.KeySize = CRYP_KEYSIZE_128B; break; @@ -2109,7 +2187,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv) HAL_CRYP_Init(&hcryp); - while (sz > 0) { + while (blocks--) { if (HAL_CRYP_AESCBC_Encrypt(&hcryp, (uint8_t*)in, AES_BLOCK_SIZE, out, STM32_HAL_TIMEOUT) != HAL_OK) { ret = WC_TIMEOUT_E; @@ -2132,10 +2210,11 @@ int wc_AesSetIV(Aes* aes, const byte* iv) int wc_AesCbcDecrypt(Aes* aes, byte* out, const byte* in, word32 sz) { int ret = 0; + word32 blocks = (sz / AES_BLOCK_SIZE); CRYP_HandleTypeDef hcryp; + XMEMSET(&hcryp, 0, sizeof(CRYP_HandleTypeDef)); - /* load key into correct registers */ - switch(aes->rounds) { + switch (aes->rounds) { case 10: /* 128-bit key */ hcryp.Init.KeySize = CRYP_KEYSIZE_128B; break; @@ -2155,7 +2234,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv) HAL_CRYP_Init(&hcryp); - while (sz > 0) { + while (blocks--) { if (HAL_CRYP_AESCBC_Decrypt(&hcryp, (uint8_t*)in, AES_BLOCK_SIZE, out, STM32_HAL_TIMEOUT) != HAL_OK) { ret = WC_TIMEOUT_E; @@ -2164,8 +2243,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv) /* store iv for next call */ XMEMCPY(aes->reg, aes->tmp, AES_BLOCK_SIZE); - sz -= AES_BLOCK_SIZE; - in += AES_BLOCK_SIZE; + in += AES_BLOCK_SIZE; out += AES_BLOCK_SIZE; } @@ -2178,6 +2256,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv) int wc_AesCbcEncrypt(Aes* aes, byte* out, const byte* in, word32 sz) { word32 *enc_key, *iv; + word32 blocks = (sz / AES_BLOCK_SIZE); CRYP_InitTypeDef AES_CRYP_InitStructure; CRYP_KeyInitTypeDef AES_CRYP_KeyInitStructure; CRYP_IVInitTypeDef AES_CRYP_IVInitStructure; @@ -2194,8 +2273,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv) CRYP_DeInit(); /* load key into correct registers */ - switch(aes->rounds) - { + switch (aes->rounds) { case 10: /* 128-bit key */ AES_CRYP_InitStructure.CRYP_KeySize = CRYP_KeySize_128b; AES_CRYP_KeyInitStructure.CRYP_Key2Left = enc_key[0]; @@ -2248,8 +2326,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv) /* enable crypto processor */ CRYP_Cmd(ENABLE); - while (sz > 0) - { + while (blocks--) { /* flush IN/OUT FIFOs */ CRYP_FIFOFlush(); @@ -2259,7 +2336,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv) CRYP_DataIn(*(uint32_t*)&in[12]); /* wait until the complete message has been processed */ - while(CRYP_GetFlagStatus(CRYP_FLAG_BUSY) != RESET) {} + while (CRYP_GetFlagStatus(CRYP_FLAG_BUSY) != RESET) {} *(uint32_t*)&out[0] = CRYP_DataOut(); *(uint32_t*)&out[4] = CRYP_DataOut(); @@ -2284,6 +2361,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv) int wc_AesCbcDecrypt(Aes* aes, byte* out, const byte* in, word32 sz) { word32 *dec_key, *iv; + word32 blocks = (sz / AES_BLOCK_SIZE); CRYP_InitTypeDef AES_CRYP_InitStructure; CRYP_KeyInitTypeDef AES_CRYP_KeyInitStructure; CRYP_IVInitTypeDef AES_CRYP_IVInitStructure; @@ -2297,14 +2375,13 @@ int wc_AesSetIV(Aes* aes, const byte* iv) CRYP_IVStructInit(&AES_CRYP_IVInitStructure); /* if input and output same will overwrite input iv */ - XMEMCPY(aes->tmp, in + sz - AES_BLOCK_SIZE, AES_BLOCK_SIZE); + XMEMCPY(aes->tmp, in + len - AES_BLOCK_SIZE, AES_BLOCK_SIZE); /* reset registers to their default values */ CRYP_DeInit(); /* load key into correct registers */ - switch(aes->rounds) - { + switch (aes->rounds) { case 10: /* 128-bit key */ AES_CRYP_InitStructure.CRYP_KeySize = CRYP_KeySize_128b; AES_CRYP_KeyInitStructure.CRYP_Key2Left = dec_key[0]; @@ -2350,7 +2427,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv) CRYP_Cmd(ENABLE); /* wait until key has been prepared */ - while(CRYP_GetFlagStatus(CRYP_FLAG_BUSY) != RESET) {} + while (CRYP_GetFlagStatus(CRYP_FLAG_BUSY) != RESET) {} /* set direction, mode, and datatype for decryption */ AES_CRYP_InitStructure.CRYP_AlgoDir = CRYP_AlgoDir_Decrypt; @@ -2370,8 +2447,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv) /* enable crypto processor */ CRYP_Cmd(ENABLE); - while (sz > 0) - { + while (blocks--) { /* flush IN/OUT FIFOs */ CRYP_FIFOFlush(); @@ -2381,7 +2457,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv) CRYP_DataIn(*(uint32_t*)&in[12]); /* wait until the complete message has been processed */ - while(CRYP_GetFlagStatus(CRYP_FLAG_BUSY) != RESET) {} + while (CRYP_GetFlagStatus(CRYP_FLAG_BUSY) != RESET) {} *(uint32_t*)&out[0] = CRYP_DataOut(); *(uint32_t*)&out[4] = CRYP_DataOut(); @@ -2391,8 +2467,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv) /* store iv for next call */ XMEMCPY(aes->reg, aes->tmp, AES_BLOCK_SIZE); - sz -= AES_BLOCK_SIZE; - in += AES_BLOCK_SIZE; + in += AES_BLOCK_SIZE; out += AES_BLOCK_SIZE; } @@ -2910,16 +2985,15 @@ int wc_AesEcbDecrypt(Aes* aes, byte* out, const byte* in, word32 sz) #endif /* AES-CTR */ -#ifdef WOLFSSL_AES_COUNTER - +#if defined(WOLFSSL_AES_COUNTER) || (defined(HAVE_AESGCM_DECRYPT) && defined(STM32F4_CRYPTO)) #if defined(STM32F2_CRYPTO) || defined(STM32F4_CRYPTO) #ifdef WOLFSSL_STM32_CUBEMX void wc_AesCtrEncrypt(Aes* aes, byte* out, const byte* in, word32 sz) { CRYP_HandleTypeDef hcryp; + XMEMSET(&hcryp, 0, sizeof(CRYP_HandleTypeDef)); - /* load key into correct registers */ - switch(aes->rounds) { + switch (aes->rounds) { case 10: /* 128-bit key */ hcryp.Init.KeySize = CRYP_KEYSIZE_128B; break; @@ -2934,13 +3008,15 @@ int wc_AesEcbDecrypt(Aes* aes, byte* out, const byte* in, word32 sz) } hcryp.Instance = CRYP; hcryp.Init.DataType = CRYP_DATATYPE_8B; - hcryp.Init.pKey = aes->key; - hcryp.Init.pInitVect = aes->reg; + hcryp.Init.pKey = (byte*)aes->key; + hcryp.Init.pInitVect = (byte*)aes->reg; HAL_CRYP_Init(&hcryp); - HAL_CRYP_AESCTR_Encrypt(&hcryp, in, AES_BLOCK_SIZE, out, - STM32_HAL_TIMEOUT); + if (HAL_CRYP_AESCTR_Encrypt(&hcryp, (byte*)in, sz, out, + STM32_HAL_TIMEOUT) != HAL_OK) { + /* failed */ + } HAL_CRYP_DeInit(&hcryp); } @@ -2948,6 +3024,7 @@ int wc_AesEcbDecrypt(Aes* aes, byte* out, const byte* in, word32 sz) void wc_AesCtrEncrypt(Aes* aes, byte* out, const byte* in, word32 sz) { word32 *enc_key, *iv; + int len = (int)sz; CRYP_InitTypeDef AES_CRYP_InitStructure; CRYP_KeyInitTypeDef AES_CRYP_KeyInitStructure; CRYP_IVInitTypeDef AES_CRYP_IVInitStructure; @@ -2964,8 +3041,7 @@ int wc_AesEcbDecrypt(Aes* aes, byte* out, const byte* in, word32 sz) CRYP_DeInit(); /* load key into correct registers */ - switch(aes->rounds) - { + switch (aes->rounds) { case 10: /* 128-bit key */ AES_CRYP_InitStructure.CRYP_KeySize = CRYP_KeySize_128b; AES_CRYP_KeyInitStructure.CRYP_Key2Left = enc_key[0]; @@ -3018,8 +3094,7 @@ int wc_AesEcbDecrypt(Aes* aes, byte* out, const byte* in, word32 sz) /* enable crypto processor */ CRYP_Cmd(ENABLE); - while (sz > 0) - { + while (len > 0) { /* flush IN/OUT FIFOs */ CRYP_FIFOFlush(); @@ -3029,7 +3104,7 @@ int wc_AesEcbDecrypt(Aes* aes, byte* out, const byte* in, word32 sz) CRYP_DataIn(*(uint32_t*)&in[12]); /* wait until the complete message has been processed */ - while(CRYP_GetFlagStatus(CRYP_FLAG_BUSY) != RESET) {} + while (CRYP_GetFlagStatus(CRYP_FLAG_BUSY) != RESET) {} *(uint32_t*)&out[0] = CRYP_DataOut(); *(uint32_t*)&out[4] = CRYP_DataOut(); @@ -3037,9 +3112,9 @@ int wc_AesEcbDecrypt(Aes* aes, byte* out, const byte* in, word32 sz) *(uint32_t*)&out[12] = CRYP_DataOut(); /* store iv for next call */ - XMEMCPY(aes->reg, out + sz - AES_BLOCK_SIZE, AES_BLOCK_SIZE); + XMEMCPY(aes->reg, out + len - AES_BLOCK_SIZE, AES_BLOCK_SIZE); - sz -= AES_BLOCK_SIZE; + len -= AES_BLOCK_SIZE; in += AES_BLOCK_SIZE; out += AES_BLOCK_SIZE; } @@ -4273,30 +4348,11 @@ int wc_AesGcmEncrypt(Aes* aes, byte* out, const byte* in, word32 sz, byte* authTag, word32 authTagSz, const byte* authIn, word32 authInSz) { -#if defined(FREESCALE_LTC_AES_GCM) - byte *key; - uint32_t keySize; + int ret = 0; + word32 keySize; +#ifdef FREESCALE_LTC_AES_GCM status_t status; - - if (authTagSz < WOLFSSL_MIN_AUTH_TAG_SZ) { - WOLFSSL_MSG("GcmEncrypt authTagSz too small error"); - return BAD_FUNC_ARG; - } - - key = (byte*)aes->key; - - status = wc_AesGetKeySize(aes, &keySize); - if (status != 0) { - return status; - } - - status = LTC_AES_EncryptTagGcm(LTC_BASE, in, out, sz, - iv, ivSz, authIn, authInSz, key, keySize, authTag, authTagSz); - - return (status == kStatus_Success) ? 0 : AES_GCM_AUTH_E; - -#else /* FREESCALE_LTC_AES_GCM */ - +#else word32 blocks = sz / AES_BLOCK_SIZE; word32 partial = sz % AES_BLOCK_SIZE; const byte* p = in; @@ -4305,16 +4361,138 @@ int wc_AesGcmEncrypt(Aes* aes, byte* out, const byte* in, word32 sz, byte initialCounter[AES_BLOCK_SIZE]; byte *ctr; byte scratch[AES_BLOCK_SIZE]; +#if defined(STM32F2_CRYPTO) || defined(STM32F4_CRYPTO) + #ifdef WOLFSSL_STM32_CUBEMX + CRYP_HandleTypeDef hcryp; + #else + byte keyCopy[AES_BLOCK_SIZE * 2]; + #endif /* WOLFSSL_STM32_CUBEMX */ + int status = 0; + byte* authInPadded = NULL; + byte tag[AES_BLOCK_SIZE]; + int authPadSz; +#endif /* STM32F2_CRYPTO || STM32F4_CRYPTO */ +#endif /* FREESCALE_LTC_AES_GCM */ - /* Sanity check for XMEMCPY in GHASH function and local xorbuf call */ - if (authTagSz > AES_BLOCK_SIZE) + /* argument checks */ + if (aes == NULL || authTagSz > AES_BLOCK_SIZE) { return BAD_FUNC_ARG; + } if (authTagSz < WOLFSSL_MIN_AUTH_TAG_SZ) { WOLFSSL_MSG("GcmEncrypt authTagSz too small error"); return BAD_FUNC_ARG; } + ret = wc_AesGetKeySize(aes, &keySize); + if (ret != 0) + return ret; + +#ifdef FREESCALE_LTC_AES_GCM + + status = LTC_AES_EncryptTagGcm(LTC_BASE, in, out, sz, iv, ivSz, + authIn, authInSz, (byte*)aes->key, keySize, authTag, authTagSz); + + ret = (status == kStatus_Success) ? 0 : AES_GCM_AUTH_E; + +#else + +#if defined(STM32F2_CRYPTO) || defined(STM32F4_CRYPTO) + + /* additional argument checks - STM32 HW only supports 12 byte IV */ + if (ivSz != NONCE_SZ) { + return BAD_FUNC_ARG; + } + + XMEMSET(initialCounter, 0, AES_BLOCK_SIZE); + XMEMCPY(initialCounter, iv, ivSz); + initialCounter[AES_BLOCK_SIZE - 1] = STM32_GCM_IV_START; + + /* STM32 HW AES-GCM requires / assumes inputs are a multiple of block size. + * We can avoid this by zero padding (authIn) AAD, but zero-padded plaintext + * will be encrypted and output incorrectly, causing a bad authTag. + * We will use HW accelerated AES-GCM if plain%AES_BLOCK_SZ==0. + * Otherwise, we will use accelerated AES_CTR for encrypt, and then + * perform GHASH in software. + * See NIST SP 800-38D */ + + /* Plain text is a multiple of block size, so use HW-Accelerated AES_GCM */ + if (!partial) { + /* pad authIn if it is not a block multiple */ + if ((authInSz % AES_BLOCK_SIZE) != 0) { + authPadSz = ((authInSz / AES_BLOCK_SIZE) + 1) * AES_BLOCK_SIZE; + /* Need to pad the AAD to a full block with zeros. */ + authInPadded = XMALLOC(authPadSz, aes->heap, DYNAMIC_TYPE_TMP_BUFFER); + if (authInPadded == NULL) { + return MEMORY_E; + } + XMEMSET(authInPadded, 0, authPadSz); + XMEMCPY(authInPadded, authIn, authInSz); + } else { + authPadSz = authInSz; + authInPadded = (byte*)authIn; + } + + + #ifdef WOLFSSL_STM32_CUBEMX + XMEMSET(&hcryp, 0, sizeof(CRYP_HandleTypeDef)); + switch (keySize) { + case 16: /* 128-bit key */ + hcryp.Init.KeySize = CRYP_KEYSIZE_128B; + break; + case 24: /* 192-bit key */ + hcryp.Init.KeySize = CRYP_KEYSIZE_192B; + break; + case 32: /* 256-bit key */ + hcryp.Init.KeySize = CRYP_KEYSIZE_256B; + break; + default: + break; + } + hcryp.Instance = CRYP; + hcryp.Init.DataType = CRYP_DATATYPE_8B; + hcryp.Init.pKey = (byte*)aes->key; + hcryp.Init.pInitVect = initialCounter; + hcryp.Init.Header = authInPadded; + hcryp.Init.HeaderSize = authInSz; + + HAL_CRYP_Init(&hcryp); + status = HAL_CRYPEx_AESGCM_Encrypt(&hcryp, (byte*)in, sz, + out, STM32_HAL_TIMEOUT); + /* Compute the authTag */ + if (status == HAL_OK) + status = HAL_CRYPEx_AESGCM_Finish(&hcryp, sz, tag, STM32_HAL_TIMEOUT); + + if (status != HAL_OK) + ret = AES_GCM_AUTH_E; + HAL_CRYP_DeInit(&hcryp); + #else + ByteReverseWords((word32*)keyCopy, (word32*)aes->key, keySize); + status = CRYP_AES_GCM(MODE_ENCRYPT, (uint8_t*)initialCounter, + (uint8_t*)keyCopy, keySize * 8, + (uint8_t*)in, sz, + (uint8_t*)authInPadded,authInSz, + (uint8_t*)out, tag); + if (status != SUCCESS) + ret = AES_GCM_AUTH_E; + #endif /* WOLFSSL_STM32_CUBEMX */ + + /* authTag may be shorter than AES_BLOCK_SZ, store separately */ + if (ret == 0) + XMEMCPY(authTag, tag, authTagSz); + + /* We only allocate extra memory if authInPadded is not a multiple of AES_BLOCK_SZ */ + if (authInPadded != NULL && authInSz != authPadSz) { + XFREE(authInPadded, aes->heap, DYNAMIC_TYPE_TMP_BUFFER); + } + + return ret; + } + +#endif + + /* Software AES-GCM */ + #if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_AES) /* if async and byte count above threshold */ if (aes->asyncDev.marker == WOLFSSL_ASYNC_MARKER_AES && @@ -4369,17 +4547,19 @@ int wc_AesGcmEncrypt(Aes* aes, byte* out, const byte* in, word32 sz, XMEMCPY(ctr, initialCounter, AES_BLOCK_SIZE); #ifdef WOLFSSL_PIC32MZ_CRYPT - if(blocks) - wc_AesCrypt(aes, out, in, blocks*AES_BLOCK_SIZE, - PIC32_ENCRYPTION, PIC32_ALGO_AES, PIC32_CRYPTOALGO_AES_GCM ); + if (blocks) { + wc_AesCrypt(aes, out, in, blocks * AES_BLOCK_SIZE, + PIC32_ENCRYPTION, PIC32_ALGO_AES, PIC32_CRYPTOALGO_AES_GCM); + } + /* process remainder using partial handling */ #endif while (blocks--) { IncrementGcmCounter(ctr); - #ifndef WOLFSSL_PIC32MZ_CRYPT - wc_AesEncrypt(aes, ctr, scratch); - xorbuf(scratch, p, AES_BLOCK_SIZE); - XMEMCPY(c, scratch, AES_BLOCK_SIZE); - #endif + #ifndef WOLFSSL_PIC32MZ_CRYPT + wc_AesEncrypt(aes, ctr, scratch); + xorbuf(scratch, p, AES_BLOCK_SIZE); + XMEMCPY(c, scratch, AES_BLOCK_SIZE); + #endif p += AES_BLOCK_SIZE; c += AES_BLOCK_SIZE; } @@ -4396,8 +4576,9 @@ int wc_AesGcmEncrypt(Aes* aes, byte* out, const byte* in, word32 sz, wc_AesEncrypt(aes, initialCounter, scratch); xorbuf(authTag, scratch, authTagSz); - return 0; #endif /* FREESCALE_LTC_AES_GCM */ + + return ret; } @@ -4407,25 +4588,23 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz, const byte* authTag, word32 authTagSz, const byte* authIn, word32 authInSz) { -#if defined(FREESCALE_LTC_AES_GCM) - byte *key; - uint32_t keySize; + int ret = 0; + word32 keySize; +#ifdef FREESCALE_LTC_AES_GCM status_t status; - - key = (byte*)aes->key; - - status = wc_AesGetKeySize(aes, &keySize); - if (status != 0) { - return status; - } - - status = LTC_AES_DecryptTagGcm(LTC_BASE, in, out, sz, - iv, ivSz, authIn, authInSz, key, keySize, authTag, authTagSz); - - return (status == kStatus_Success) ? 0 : AES_GCM_AUTH_E; - -#else /* FREESCALE_LTC_AES_GCM */ - +#elif defined(STM32F2_CRYPTO) || defined(STM32F4_CRYPTO) + #ifdef WOLFSSL_STM32_CUBEMX + CRYP_HandleTypeDef hcryp; + #else + byte keyCopy[AES_BLOCK_SIZE * 2]; + #endif /* WOLFSSL_STM32_CUBEMX */ + int status; + int inPadSz, authPadSz; + byte tag[AES_BLOCK_SIZE]; + byte *inPadded = NULL; + byte *authInPadded = NULL; + byte initialCounter[AES_BLOCK_SIZE]; +#else /* software AES-GCM */ word32 blocks = sz / AES_BLOCK_SIZE; word32 partial = sz % AES_BLOCK_SIZE; const byte* c = in; @@ -4434,6 +4613,9 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz, byte initialCounter[AES_BLOCK_SIZE]; byte *ctr; byte scratch[AES_BLOCK_SIZE]; + byte Tprime[AES_BLOCK_SIZE]; + byte EKY0[AES_BLOCK_SIZE]; +#endif /* argument checks */ if (aes == NULL || out == NULL || in == NULL || sz == 0 || iv == NULL || @@ -4441,6 +4623,129 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz, return BAD_FUNC_ARG; } + ret = wc_AesGetKeySize(aes, &keySize); + if (ret != 0) { + return ret; + } + +#ifdef FREESCALE_LTC_AES_GCM + + status = LTC_AES_DecryptTagGcm(LTC_BASE, in, out, sz, iv, ivSz, + authIn, authInSz, (byte*)aes->key, keySize, authTag, authTagSz); + + ret = (status == kStatus_Success) ? 0 : AES_GCM_AUTH_E; + +#elif defined(STM32F2_CRYPTO) || defined(STM32F4_CRYPTO) + + /* additional argument checks - STM32 HW only supports 12 byte IV */ + if (ivSz != NONCE_SZ) { + return BAD_FUNC_ARG; + } + + XMEMSET(initialCounter, 0, AES_BLOCK_SIZE); + XMEMCPY(initialCounter, iv, ivSz); + initialCounter[AES_BLOCK_SIZE - 1] = STM32_GCM_IV_START; + + /* Need to pad the AAD and input cipher text to a full block size since + * CRYP_AES_GCM will assume these are a multiple of AES_BLOCK_SIZE. + * It is okay to pad with zeros because GCM does this before GHASH already. + * See NIST SP 800-38D */ + + if ((sz % AES_BLOCK_SIZE) > 0) { + inPadSz = ((sz / AES_BLOCK_SIZE) + 1) * AES_BLOCK_SIZE; + inPadded = XMALLOC(inPadSz, aes->heap, DYNAMIC_TYPE_TMP_BUFFER); + if (inPadded == NULL) { + return MEMORY_E; + } + XMEMSET(inPadded, 0, inPadSz); + XMEMCPY(inPadded, in, sz); + } else { + inPadSz = sz; + inPadded = (byte*)in; + } + + if ((authInSz % AES_BLOCK_SIZE) > 0) { + authPadSz = ((authInSz / AES_BLOCK_SIZE) + 1) * AES_BLOCK_SIZE; + authInPadded = XMALLOC(authPadSz, aes->heap, DYNAMIC_TYPE_TMP_BUFFER); + if (authInPadded == NULL) { + if (inPadded != NULL && inPadSz != sz) + XFREE(inPadded , aes->heap, DYNAMIC_TYPE_TMP_BUFFER); + return MEMORY_E; + } + XMEMSET(authInPadded, 0, authPadSz); + XMEMCPY(authInPadded, authIn, authInSz); + } else { + authPadSz = authInSz; + authInPadded = (byte*)authIn; + } + +#ifdef WOLFSSL_STM32_CUBEMX + XMEMSET(&hcryp, 0, sizeof(CRYP_HandleTypeDef)); + switch(keySize) { + case 16: /* 128-bit key */ + hcryp.Init.KeySize = CRYP_KEYSIZE_128B; + break; + case 24: /* 192-bit key */ + hcryp.Init.KeySize = CRYP_KEYSIZE_192B; + break; + case 32: /* 256-bit key */ + hcryp.Init.KeySize = CRYP_KEYSIZE_256B; + break; + default: + break; + } + hcryp.Instance = CRYP; + hcryp.Init.DataType = CRYP_DATATYPE_8B; + hcryp.Init.pKey = (byte*)aes->key; + hcryp.Init.pInitVect = initialCounter; + hcryp.Init.Header = authInPadded; + hcryp.Init.HeaderSize = authInSz; + + HAL_CRYP_Init(&hcryp); + /* Use inPadded for output buffer instead of + * out so that we don't overflow our size. */ + status = HAL_CRYPEx_AESGCM_Decrypt(&hcryp, (byte*)inPadded, + sz, inPadded, STM32_HAL_TIMEOUT); + /* Compute the authTag */ + if (status == HAL_OK) + status = HAL_CRYPEx_AESGCM_Finish(&hcryp, sz, tag, STM32_HAL_TIMEOUT); + + if (status != HAL_OK) + ret = AES_GCM_AUTH_E; + + HAL_CRYP_DeInit(&hcryp); +#else + ByteReverseWords((word32*)keyCopy, (word32*)aes->key, keySize); + + /* Input size and auth size need to be the actual sizes, even though + * they are not block aligned, because this length (in bits) is used + * in the final GHASH. Use inPadded for output buffer instead of + * out so that we don't overflow our size. */ + status = CRYP_AES_GCM(MODE_DECRYPT, (uint8_t*)initialCounter, + (uint8_t*)keyCopy, keySize * 8, + (uint8_t*)inPadded, sz, + (uint8_t*)authInPadded,authInSz, + (uint8_t*)inPadded, tag); + if (status != SUCCESS) + ret = AES_GCM_AUTH_E; +#endif /* WOLFSSL_STM32_CUBEMX */ + + if (ret == 0 && ConstantCompare(authTag, tag, authTagSz) == 0) { + /* Only keep the decrypted data if authTag success. */ + XMEMCPY(out, inPadded, sz); + ret = 0; /* success */ + } + + /* only allocate padding buffers if the inputs are not a multiple of block sz */ + if (inPadded != NULL && inPadSz != sz) + XFREE(inPadded , aes->heap, DYNAMIC_TYPE_TMP_BUFFER); + if (authInPadded != NULL && authPadSz != authInSz) + XFREE(authInPadded, aes->heap, DYNAMIC_TYPE_TMP_BUFFER); + +#else + + /* software AES GCM */ + #if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_AES) /* if async and byte count above threshold */ if (aes->asyncDev.marker == WOLFSSL_ASYNC_MARKER_AES && @@ -4496,34 +4801,30 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz, } XMEMCPY(ctr, initialCounter, AES_BLOCK_SIZE); - /* Calculate the authTag again using the received auth data and the - * cipher text. */ - { - byte Tprime[AES_BLOCK_SIZE]; - byte EKY0[AES_BLOCK_SIZE]; + /* Calc the authTag again using the received auth data and the cipher text */ + GHASH(aes, authIn, authInSz, in, sz, Tprime, sizeof(Tprime)); + wc_AesEncrypt(aes, ctr, EKY0); + xorbuf(Tprime, EKY0, sizeof(Tprime)); - GHASH(aes, authIn, authInSz, in, sz, Tprime, sizeof(Tprime)); - wc_AesEncrypt(aes, ctr, EKY0); - xorbuf(Tprime, EKY0, sizeof(Tprime)); - - if (ConstantCompare(authTag, Tprime, authTagSz) != 0) { - return AES_GCM_AUTH_E; - } + if (ConstantCompare(authTag, Tprime, authTagSz) != 0) { + return AES_GCM_AUTH_E; } #ifdef WOLFSSL_PIC32MZ_CRYPT - if(blocks) - wc_AesCrypt(aes, out, in, blocks*AES_BLOCK_SIZE, - PIC32_DECRYPTION, PIC32_ALGO_AES, PIC32_CRYPTOALGO_AES_GCM ); + if (blocks) { + wc_AesCrypt(aes, out, in, blocks * AES_BLOCK_SIZE, + PIC32_DECRYPTION, PIC32_ALGO_AES, PIC32_CRYPTOALGO_AES_GCM); + } + /* process remainder using partial handling */ #endif while (blocks--) { IncrementGcmCounter(ctr); - #ifndef WOLFSSL_PIC32MZ_CRYPT - wc_AesEncrypt(aes, ctr, scratch); - xorbuf(scratch, c, AES_BLOCK_SIZE); - XMEMCPY(p, scratch, AES_BLOCK_SIZE); - #endif + #ifndef WOLFSSL_PIC32MZ_CRYPT + wc_AesEncrypt(aes, ctr, scratch); + xorbuf(scratch, c, AES_BLOCK_SIZE); + XMEMCPY(p, scratch, AES_BLOCK_SIZE); + #endif p += AES_BLOCK_SIZE; c += AES_BLOCK_SIZE; } @@ -4533,8 +4834,10 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz, xorbuf(scratch, c, partial); XMEMCPY(p, scratch, partial); } - return 0; -#endif /* FREESCALE_LTC_AES_GCM */ + +#endif + + return ret; } #endif /* HAVE_AES_DECRYPT || HAVE_AESGCM_DECRYPT */ diff --git a/wolfcrypt/test/test.c b/wolfcrypt/test/test.c index 1316b75c4..fbed19234 100644 --- a/wolfcrypt/test/test.c +++ b/wolfcrypt/test/test.c @@ -3892,6 +3892,7 @@ int aes_test(void) if (XMEMCMP(cipher, ctr128Cipher, sizeof(oddCipher))) return -4216; +#if !defined(STM32F2_CRYPTO) && !defined(STM32F4_CRYPTO) /* test not supported on STM32 crypto HW */ /* and an additional 9 bytes to reuse tmp left buffer */ wc_AesCtrEncrypt(&enc, cipher, ctrPlain, sizeof(oddCipher)); wc_AesCtrEncrypt(&dec, plain, cipher, sizeof(oddCipher)); @@ -3901,6 +3902,7 @@ int aes_test(void) if (XMEMCMP(cipher, oddCipher, sizeof(oddCipher))) return -4218; +#endif /* 192 bit key */ wc_AesSetKeyDirect(&enc, ctr192Key, sizeof(ctr192Key), @@ -4217,7 +4219,8 @@ int aesgcm_test(void) 0xcd, 0xdf, 0x88, 0x53, 0xbb, 0x2d, 0x55, 0x1b }; -#if !defined(HAVE_FIPS) && !defined(HAVE_INTEL_QA) +#if !defined(HAVE_FIPS) && !defined(HAVE_INTEL_QA) && \ + !defined(STM32F2_CRYPTO) && !defined(STM32F4_CRYPTO) /* Test Case 12, uses same plaintext and AAD data. */ const byte k2[] = { @@ -4255,7 +4258,7 @@ int aesgcm_test(void) 0xdc, 0xf5, 0x66, 0xff, 0x29, 0x1c, 0x25, 0xbb, 0xb8, 0x56, 0x8f, 0xc3, 0xd3, 0x76, 0xa6, 0xd9 }; -#endif /* !HAVE_FIPS && !HAVE_INTEL_QA */ +#endif /* !HAVE_FIPS && !HAVE_INTEL_QA && !STM32F2_CRYPTO && !STM32F4_CRYPTO */ byte resultT[sizeof(t1)]; byte resultP[sizeof(p)]; @@ -4297,8 +4300,9 @@ int aesgcm_test(void) if (XMEMCMP(p, resultP, sizeof(resultP))) return -4306; - /* QAT only supports 12-byte IV */ -#if !defined(HAVE_FIPS) && !defined(HAVE_INTEL_QA) + /* FIPS, QAT and STM32F2/4 HW Crypto only support 12-byte IV */ +#if !defined(HAVE_FIPS) && !defined(HAVE_INTEL_QA) && \ + !defined(STM32F2_CRYPTO) && !defined(STM32F4_CRYPTO) XMEMSET(resultT, 0, sizeof(resultT)); XMEMSET(resultC, 0, sizeof(resultC)); XMEMSET(resultP, 0, sizeof(resultP)); @@ -4326,7 +4330,7 @@ int aesgcm_test(void) return -4310; if (XMEMCMP(p, resultP, sizeof(resultP))) return -4311; -#endif /* !HAVE_FIPS && !HAVE_INTEL_QA */ +#endif /* !HAVE_FIPS && !HAVE_INTEL_QA && !STM32F2_CRYPTO && !STM32F4_CRYPTO */ wc_AesFree(&enc); From 184e9c409080ceb84516f0fff0aa1fa6488ae848 Mon Sep 17 00:00:00 2001 From: David Garske Date: Fri, 19 May 2017 14:10:50 -0700 Subject: [PATCH 2/2] Fix typo from intermediate change for unaligned CBC fixes. Thanks Nick. --- wolfcrypt/src/aes.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wolfcrypt/src/aes.c b/wolfcrypt/src/aes.c index e8a8b2b28..a8cba6d70 100755 --- a/wolfcrypt/src/aes.c +++ b/wolfcrypt/src/aes.c @@ -2375,7 +2375,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv) CRYP_IVStructInit(&AES_CRYP_IVInitStructure); /* if input and output same will overwrite input iv */ - XMEMCPY(aes->tmp, in + len - AES_BLOCK_SIZE, AES_BLOCK_SIZE); + XMEMCPY(aes->tmp, in + sz - AES_BLOCK_SIZE, AES_BLOCK_SIZE); /* reset registers to their default values */ CRYP_DeInit();