From 3d2a76621f3bec443b607b2e79e68c9c3a4fc070 Mon Sep 17 00:00:00 2001 From: David Garske Date: Tue, 20 Oct 2026 15:20:05 -0700 Subject: [PATCH] TI C2000 example: add CCS projects for the SHA-2 and SHA-3 examples --- .../ti-c2000-f28p55x/Header/user_settings.h | 23 --- embedded/ti-c2000-f28p55x/Makefile | 8 +- embedded/ti-c2000-f28p55x/README.md | 4 +- embedded/ti-c2000-f28p55x/ccs/README.md | 83 ++++++++++ .../ti-c2000-f28p55x/ccs/sha2/user_settings.h | 150 +++++++++++++++++ .../ccs/sha2/wolfssl_sha2.projectspec | 54 ++++++ .../ti-c2000-f28p55x/ccs/sha3/user_settings.h | 155 ++++++++++++++++++ .../ccs/sha3/wolfssl_sha3.projectspec | 53 ++++++ 8 files changed, 504 insertions(+), 26 deletions(-) create mode 100644 embedded/ti-c2000-f28p55x/ccs/README.md create mode 100644 embedded/ti-c2000-f28p55x/ccs/sha2/user_settings.h create mode 100644 embedded/ti-c2000-f28p55x/ccs/sha2/wolfssl_sha2.projectspec create mode 100644 embedded/ti-c2000-f28p55x/ccs/sha3/user_settings.h create mode 100644 embedded/ti-c2000-f28p55x/ccs/sha3/wolfssl_sha3.projectspec diff --git a/embedded/ti-c2000-f28p55x/Header/user_settings.h b/embedded/ti-c2000-f28p55x/Header/user_settings.h index da80f79b9..d762ab622 100644 --- a/embedded/ti-c2000-f28p55x/Header/user_settings.h +++ b/embedded/ti-c2000-f28p55x/Header/user_settings.h @@ -141,28 +141,6 @@ extern "C" { #undef WOLFSSL_SHAKE256 #define WOLFSSL_SHAKE256 -/* Standalone hash examples (make SHA2=1 / SHA3=1): one hash family only, no - * RNG and no ML-DSA. */ -#if defined(WOLF_SHA2_EXAMPLE) || defined(WOLF_SHA3_EXAMPLE) -#define WOLF_HASH_EXAMPLE -#undef WC_NO_RNG -#define WC_NO_RNG -#endif -#ifdef WOLF_SHA2_EXAMPLE -#undef WOLFSSL_SHA224 -#define WOLFSSL_SHA224 -#undef WOLFSSL_SHA3 -#undef WOLFSSL_SHAKE128 -#undef WOLFSSL_SHAKE256 -#endif -#ifdef WOLF_SHA3_EXAMPLE -#undef NO_SHA256 -#define NO_SHA256 -#undef WOLFSSL_SHA512 -#undef WOLFSSL_SHA384 -#endif - -#ifndef WOLF_HASH_EXAMPLE /* ------------------------------------------------------------------------- */ /* ML-DSA-87 (Dilithium L5) - VERIFY ONLY */ /* ------------------------------------------------------------------------- */ @@ -244,7 +222,6 @@ extern "C" { * ~10.7 KB total RAM. Left off by default because the caller must keep the * public-key buffer valid for the key's lifetime. */ #endif -#endif /* !WOLF_HASH_EXAMPLE */ /* ------------------------------------------------------------------------- */ /* Disabled: big-integer / asymmetric (keeps TFM/ECC/integer out of build) */ diff --git a/embedded/ti-c2000-f28p55x/Makefile b/embedded/ti-c2000-f28p55x/Makefile index f2d2be5c5..824aab7a5 100644 --- a/embedded/ti-c2000-f28p55x/Makefile +++ b/embedded/ti-c2000-f28p55x/Makefile @@ -371,21 +371,25 @@ endif $(WOLFROOT)/wolfcrypt/src/misc.c \ $(WOLFROOT)/wolfcrypt/src/hash.c ifeq ($(SHA2),1) - CFLAGS += --define=WOLF_SHA2_EXAMPLE LFLAGS += --define=WOLF_SHA2_EXAMPLE WC_SRCS += \ $(WOLFROOT)/wolfcrypt/src/sha256.c \ $(WOLFROOT)/wolfcrypt/src/sha512.c BSP_SRCS := $(CURDIR)/Source/test_sha2.c + SHA_EXAMPLE_DIR := $(CURDIR)/ccs/sha2 else - CFLAGS += --define=WOLF_SHA3_EXAMPLE LFLAGS += --define=WOLF_SHA3_EXAMPLE WC_SRCS += $(WOLFROOT)/wolfcrypt/src/sha3.c BSP_SRCS := $(CURDIR)/Source/test_sha3.c + SHA_EXAMPLE_DIR := $(CURDIR)/ccs/sha3 endif BSP_SRCS += \ $(CURDIR)/Source/c2000_board.c \ $(DEV)/common/source/device.c + # The example's own user_settings.h (shared with its CCS project) must be + # found before the full-image one in Header/. + CFLAGS := $(subst -I$(CURDIR)/Header,-I$(SHA_EXAMPLE_DIR) \ + -I$(CURDIR)/Header,$(CFLAGS)) CFLAGS += --define=NO_CRYPT_TEST --define=NO_CRYPT_BENCHMARK HARNESS_SRCS := HARNESS_EXTRA := diff --git a/embedded/ti-c2000-f28p55x/README.md b/embedded/ti-c2000-f28p55x/README.md index 83132ea40..7c0c552bd 100644 --- a/embedded/ti-c2000-f28p55x/README.md +++ b/embedded/ti-c2000-f28p55x/README.md @@ -34,7 +34,9 @@ make CGT_ROOT=/path/to/ti-cgt-c2000_xx.y.z SHA3=1 # Source/test_sha3.c Each `main()` calls `c2000_board_init()` (`Source/c2000_board.c`: clocks, SCIA console, CPU Timer 0) and runs one function per variant that shows the complete API sequence, `wc_InitXxx()` -> `wc_XxxUpdate()` -> `wc_XxxFinal()` -> `wc_XxxFree()`, on the FIPS 180-4 / FIPS 202 "abc" vector, printing the digest and `PASS`/`FAIL`. A streaming case then feeds one message through several `Update` calls, and a throughput loop hashes 64 KiB per variant through the generic `wc_HashInit()` / `wc_HashUpdate()` / `wc_HashFinal()` API. Output ends with `SHA-2 example: PASS` (or `SHA-3 ...`) and `=== done ===`. -Only that family's wolfCrypt source is built (`sha256.c` + `sha512.c`, or `sha3.c`), with no RNG, ML-DSA or test/benchmark harness. `Header/user_settings.h` selects the algorithms under `WOLF_SHA2_EXAMPLE` / `WOLF_SHA3_EXAMPLE`. Both toggles build alone: combining one with the other or with any other toggle is a build error. The output image is `out/wolfcrypt_f28p55x.out` as for every other build, flashed the same way (see Flash and run). +Only that family's wolfCrypt source is built (`sha256.c` + `sha512.c`, or `sha3.c`), with no RNG, ML-DSA or test/benchmark harness. Each uses its own small `user_settings.h` from `ccs/sha2/` or `ccs/sha3/`, the same file its CCS project uses. Both toggles build alone: combining one with the other or with any other toggle is a build error. The output image is `out/wolfcrypt_f28p55x.out` as for every other build, flashed the same way (see Flash and run). + +The same two examples are also available as Code Composer Studio projects: see [ccs/README.md](ccs/README.md). ## Octet representation at the API boundary (`MLDSA=1`) diff --git a/embedded/ti-c2000-f28p55x/ccs/README.md b/embedded/ti-c2000-f28p55x/ccs/README.md new file mode 100644 index 000000000..c28faed60 --- /dev/null +++ b/embedded/ti-c2000-f28p55x/ccs/README.md @@ -0,0 +1,83 @@ +# wolfCrypt SHA-2 / SHA-3 CCS projects for the LAUNCHXL-F28P55X + +Two Code Composer Studio (CCS) projects for the TI LAUNCHXL-F28P55X (TMS320F28P550SJ, C2000 C28x): one for SHA-2, one for SHA-3. Each project is one small application file plus wolfCrypt, imported from a `.projectspec` in the same way as the C2000Ware examples. + +| Project | projectspec | Algorithms | +|---|---|---| +| `wolfssl_sha2` | `ccs/sha2/wolfssl_sha2.projectspec` | SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256 | +| `wolfssl_sha3` | `ccs/sha3/wolfssl_sha3.projectspec` | SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256 | + +## Prerequisites + +- Code Composer Studio 20.x. CCS 12.x imports the same `.projectspec` format but has not been tested. +- C2000Ware 26.01 (`C2000Ware_26_01_00_00`), installed where CCS can find it (CCS discovers it under `~/ti` or `C:\ti`). +- TI C2000 code generation tools 22.6.3.LTS. 25.11.0.LTS has also been tested. To use a different installed version, change it under Project Properties > General > Compiler version. +- A clone of the wolfSSL master branch. The C28x has 16-bit bytes (`CHAR_BIT == 16`) and needs the support for that in current wolfSSL. + +The projects expect wolfSSL to be cloned next to wolfssl-examples: + +``` +/wolfssl git clone https://github.com/wolfSSL/wolfssl.git +/wolfssl-examples git clone https://github.com/wolfSSL/wolfssl-examples.git +``` + +## Import and build + +1. File > Import Projects, and select `ccs/sha2/wolfssl_sha2.projectspec` or `ccs/sha3/wolfssl_sha3.projectspec`. +2. The application files (`test_sha2.c` or `test_sha3.c`, `c2000_board.c`, `c2000_board.h`, `user_settings.h`, `28p55x_wolf_flash_lnk.cmd`) and the C2000Ware device files are copied into the new project, so you can edit them freely. The wolfCrypt sources in the `wolfcrypt` folder are links into the wolfSSL clone. +3. Pick a build configuration and build: + - `CPU1_LAUNCHXL_FLASH`: optimized (`-O2`). + - `CPU1_LAUNCHXL_FLASH_DEBUG`: no optimization and full symbols, for stepping through the hash calls. + +If wolfSSL is somewhere else, `WOLFSSL_ROOT` must be changed in two places in each project (the projectspec records it as both a linked-resource path and a build variable): + +- Project Properties > Resource > Linked Resources > Path Variables: `WOLFSSL_ROOT` +- Project Properties > Build > Variables (select "All configurations"): `WOLFSSL_ROOT` + +## Flash, run and read the output + +1. Use the LaunchPad target configuration copied into the project (`targetConfigs/TMS320F28P550SJ9_LaunchPad.ccxml`) and start a debug session (Run > Debug), which programs flash. +2. Open a serial terminal on the LaunchPad's XDS110 "Application/User UART" port at 115200 8N1. +3. Run. The output is printed on the UART: + +``` +=== wolfCrypt SHA-2 example on TI C2000 LAUNCHXL-F28P55X === + +--- Known-answer tests --- +SHA-224 23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7 +SHA-224 KAT: PASS +SHA-256 ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad +SHA-256 KAT: PASS +... +--- Throughput (150 MHz) --- +SHA-256 64 KiB in 0.222 s = 288.0 KiB/s +... +SHA-2 example: PASS (0 failure(s)) +=== done === +``` + +The UART output stays clean only while the debugger is not halting the target, so let it run freely (or disconnect after flashing). To send `printf` to the CCS Console instead of the UART, remove `WOLF_C2000_SCI_STDOUT` under Project Properties > Build > C2000 Compiler > Predefined Symbols. The CCS Console is much slower. + +## Code flow + +`main()` in `test_sha2.c` / `test_sha3.c`: + +1. `c2000_board_init()` (`c2000_board.c`): PLL to 150 MHz, GPIO, SCIA console redirected to `stdout`, and CPU Timer 0 as the time base for `current_time()`. +2. One function per algorithm, e.g. `sha256_example()`, showing the complete wolfCrypt call sequence on the FIPS 180-4 / FIPS 202 "abc" test vector: `wc_InitSha256()` -> `wc_Sha256Update()` -> `wc_Sha256Final()` -> `wc_Sha256Free()`. The digest is printed and compared to the expected value (`PASS` / `FAIL`). +3. A streaming example that feeds one message through several `Update` calls (`sha256_stream_example()` / `shake256_stream_example()`). +4. `hash_bench()`: hashes 64 KiB per algorithm through the generic `wc_HashInit()` / `wc_HashUpdate()` / `wc_HashFinal()` API and prints the throughput. + +## Adding wolfCrypt hashing to your own CCS project + +1. Clone wolfSSL master. +2. Add these files from `/wolfcrypt/src/` to the project (Add Files, or link them): + - Always: `error.c`, `wc_port.c`, `memory.c`, `logging.c`, `misc.c`, `hash.c`. + - SHA-2: `sha256.c`, `sha512.c`. SHA-3: `sha3.c`. +3. Copy `ccs/sha2/user_settings.h` or `ccs/sha3/user_settings.h` into your project. The platform section must stay as is: it sets the C28x integer widths and the `CHAR_BIT == 16` handling. Then adjust the algorithm section. +4. Project Properties > Build > C2000 Compiler: + - Include Options: add your project directory (for `user_settings.h`) and the wolfSSL root directory (the one containing the `wolfssl/` folder). + - Predefined Symbols: add `WOLFSSL_USER_SETTINGS`. +5. Include `` before any other wolfCrypt header, then ``, `sha512.h` or `sha3.h`. +6. Linker command file: these examples use `28p55x_wolf_flash_lnk.cmd`, which places a 16 KW stack in low RAM (the C28x stack must sit below 0x10000) and runs the SHA-3 core `BlockSha3` from RAM for speed. The hash examples make no heap allocations. + +On the C28x a `byte` is 16 bits and holds one octet: every wolfCrypt byte buffer stores one octet per 16-bit cell, and lengths are octet counts. Data that arrives packed (two octets per cell) from flash or a peripheral must be unpacked with `wc_UnpackOctets()` before it is hashed. diff --git a/embedded/ti-c2000-f28p55x/ccs/sha2/user_settings.h b/embedded/ti-c2000-f28p55x/ccs/sha2/user_settings.h new file mode 100644 index 000000000..88628c2e0 --- /dev/null +++ b/embedded/ti-c2000-f28p55x/ccs/sha2/user_settings.h @@ -0,0 +1,150 @@ +/* user_settings.h + * + * Copyright (C) 2006-2026 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +/* wolfSSL user settings for the SHA-2 (SHA-224/256/384/512, SHA-512/224, SHA-512/256) example on the TI C2000 C28x + * (LAUNCHXL-F28P55X). Selected by defining WOLFSSL_USER_SETTINGS. + * + * The C28x has 16-bit bytes (CHAR_BIT == 16): every wolfCrypt byte buffer + * holds one octet per 16-bit cell. The platform settings below are required + * for that; the last section picks the hash algorithms. + */ + +#ifndef WOLFSSL_USER_SETTINGS_C2000_SHA2_H +#define WOLFSSL_USER_SETTINGS_C2000_SHA2_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* ------------------------------------------------------------------------- */ +/* Platform / C28x toolchain */ +/* ------------------------------------------------------------------------- */ +#undef SINGLE_THREADED +#define SINGLE_THREADED + +#undef WOLFCRYPT_ONLY /* crypto only, no TLS layer */ +#define WOLFCRYPT_ONLY + +#undef NO_FILESYSTEM +#define NO_FILESYSTEM + +#undef NO_WRITEV +#define NO_WRITEV + +#undef NO_MAIN_DRIVER /* main() lives in the example source */ +#define NO_MAIN_DRIVER + +#undef NO_DEV_RANDOM +#define NO_DEV_RANDOM + +#undef WOLFSSL_IGNORE_FILE_WARN +#define WOLFSSL_IGNORE_FILE_WARN + +/* C28x integer widths: char/short/int = 16-bit, long = 32-bit, + * long long = 64-bit. */ +#undef SIZEOF_LONG +#define SIZEOF_LONG 4 +#undef SIZEOF_LONG_LONG +#define SIZEOF_LONG_LONG 8 + +/* Use the toolchain's so CHAR_BIT is the real value (16 on C28x) + * instead of wolfSSL's 8-bit fallback. */ +#undef HAVE_LIMITS_H +#define HAVE_LIMITS_H + +/* 16-bit int: word16 = unsigned int, word32 = unsigned long. Without this + * wolfSSL assumes a 32-bit int and silently truncates 32-bit math. */ +#undef WC_16BIT_CPU +#define WC_16BIT_CPU + +/* Portable byte-by-byte paths; a byte buffer must never be cast to a wider + * word when a byte is 16 bits. */ +#undef WOLFSSL_GENERAL_ALIGNMENT +#define WOLFSSL_GENERAL_ALIGNMENT 2 + +/* Portable C cores - no assembly. */ +#undef WOLFSSL_NO_ASM +#define WOLFSSL_NO_ASM + +/* Build misc.c as its own translation unit. The TI compiler emits no + * out-of-line copy of a plain `inline` definition, so the inline-misc path + * leaves helpers such as xorbuf unresolved at link. */ +#undef NO_INLINE +#define NO_INLINE + +/* Hashing only: no random number generator. */ +#undef WC_NO_RNG +#define WC_NO_RNG + +/* ------------------------------------------------------------------------- */ +/* SHA-2 */ +/* ------------------------------------------------------------------------- */ +/* SHA-256 is on by default (NO_SHA256 not defined). */ +#undef WOLFSSL_SHA224 +#define WOLFSSL_SHA224 +#undef WOLFSSL_SHA384 +#define WOLFSSL_SHA384 +#undef WOLFSSL_SHA512 /* also SHA-512/224 and SHA-512/256 */ +#define WOLFSSL_SHA512 + +/* ------------------------------------------------------------------------- */ +/* Everything else off: hashing only */ +/* ------------------------------------------------------------------------- */ +#undef NO_BIG_INT /* no multi-precision math */ +#define NO_BIG_INT +#undef NO_RSA +#define NO_RSA +#undef NO_DH +#define NO_DH +#undef NO_DSA +#define NO_DSA +#undef NO_ASN +#define NO_ASN +#undef NO_CERTS +#define NO_CERTS +#undef NO_PWDBASED +#define NO_PWDBASED +#undef NO_PKCS7 +#define NO_PKCS7 +#undef NO_PKCS12 +#define NO_PKCS12 +#undef NO_SIG_WRAPPER +#define NO_SIG_WRAPPER +#undef NO_AES +#define NO_AES +#undef NO_DES3 +#define NO_DES3 +#undef NO_RC4 +#define NO_RC4 +#undef NO_MD4 +#define NO_MD4 +#undef NO_MD5 +#define NO_MD5 +#undef NO_SHA /* SHA-1 */ +#define NO_SHA +#undef NO_HMAC +#define NO_HMAC + +#ifdef __cplusplus +} +#endif + +#endif /* WOLFSSL_USER_SETTINGS_C2000_SHA2_H */ diff --git a/embedded/ti-c2000-f28p55x/ccs/sha2/wolfssl_sha2.projectspec b/embedded/ti-c2000-f28p55x/ccs/sha2/wolfssl_sha2.projectspec new file mode 100644 index 000000000..5934b0b49 --- /dev/null +++ b/embedded/ti-c2000-f28p55x/ccs/sha2/wolfssl_sha2.projectspec @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/embedded/ti-c2000-f28p55x/ccs/sha3/user_settings.h b/embedded/ti-c2000-f28p55x/ccs/sha3/user_settings.h new file mode 100644 index 000000000..d279e7099 --- /dev/null +++ b/embedded/ti-c2000-f28p55x/ccs/sha3/user_settings.h @@ -0,0 +1,155 @@ +/* user_settings.h + * + * Copyright (C) 2006-2026 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +/* wolfSSL user settings for the SHA-3 (SHA3-224/256/384/512, SHAKE128, SHAKE256) example on the TI C2000 C28x + * (LAUNCHXL-F28P55X). Selected by defining WOLFSSL_USER_SETTINGS. + * + * The C28x has 16-bit bytes (CHAR_BIT == 16): every wolfCrypt byte buffer + * holds one octet per 16-bit cell. The platform settings below are required + * for that; the last section picks the hash algorithms. + */ + +#ifndef WOLFSSL_USER_SETTINGS_C2000_SHA3_H +#define WOLFSSL_USER_SETTINGS_C2000_SHA3_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* ------------------------------------------------------------------------- */ +/* Platform / C28x toolchain */ +/* ------------------------------------------------------------------------- */ +#undef SINGLE_THREADED +#define SINGLE_THREADED + +#undef WOLFCRYPT_ONLY /* crypto only, no TLS layer */ +#define WOLFCRYPT_ONLY + +#undef NO_FILESYSTEM +#define NO_FILESYSTEM + +#undef NO_WRITEV +#define NO_WRITEV + +#undef NO_MAIN_DRIVER /* main() lives in the example source */ +#define NO_MAIN_DRIVER + +#undef NO_DEV_RANDOM +#define NO_DEV_RANDOM + +#undef WOLFSSL_IGNORE_FILE_WARN +#define WOLFSSL_IGNORE_FILE_WARN + +/* C28x integer widths: char/short/int = 16-bit, long = 32-bit, + * long long = 64-bit. */ +#undef SIZEOF_LONG +#define SIZEOF_LONG 4 +#undef SIZEOF_LONG_LONG +#define SIZEOF_LONG_LONG 8 + +/* Use the toolchain's so CHAR_BIT is the real value (16 on C28x) + * instead of wolfSSL's 8-bit fallback. */ +#undef HAVE_LIMITS_H +#define HAVE_LIMITS_H + +/* 16-bit int: word16 = unsigned int, word32 = unsigned long. Without this + * wolfSSL assumes a 32-bit int and silently truncates 32-bit math. */ +#undef WC_16BIT_CPU +#define WC_16BIT_CPU + +/* Portable byte-by-byte paths; a byte buffer must never be cast to a wider + * word when a byte is 16 bits. */ +#undef WOLFSSL_GENERAL_ALIGNMENT +#define WOLFSSL_GENERAL_ALIGNMENT 2 + +/* Portable C cores - no assembly. */ +#undef WOLFSSL_NO_ASM +#define WOLFSSL_NO_ASM + +/* Build misc.c as its own translation unit. The TI compiler emits no + * out-of-line copy of a plain `inline` definition, so the inline-misc path + * leaves helpers such as xorbuf unresolved at link. */ +#undef NO_INLINE +#define NO_INLINE + +/* Hashing only: no random number generator. */ +#undef WC_NO_RNG +#define WC_NO_RNG + +/* ------------------------------------------------------------------------- */ +/* SHA-3 */ +/* ------------------------------------------------------------------------- */ +#undef WOLFSSL_SHA3 +#define WOLFSSL_SHA3 +#undef WOLFSSL_SHAKE128 +#define WOLFSSL_SHAKE128 +#undef WOLFSSL_SHAKE256 +#define WOLFSSL_SHAKE256 +#undef WC_SHA3_NO_ASM +#define WC_SHA3_NO_ASM + +/* SHA-256 is on by default in wolfSSL; this example does not use it. */ +#undef NO_SHA256 +#define NO_SHA256 + +/* ------------------------------------------------------------------------- */ +/* Everything else off: hashing only */ +/* ------------------------------------------------------------------------- */ +#undef NO_BIG_INT /* no multi-precision math */ +#define NO_BIG_INT +#undef NO_RSA +#define NO_RSA +#undef NO_DH +#define NO_DH +#undef NO_DSA +#define NO_DSA +#undef NO_ASN +#define NO_ASN +#undef NO_CERTS +#define NO_CERTS +#undef NO_PWDBASED +#define NO_PWDBASED +#undef NO_PKCS7 +#define NO_PKCS7 +#undef NO_PKCS12 +#define NO_PKCS12 +#undef NO_SIG_WRAPPER +#define NO_SIG_WRAPPER +#undef NO_AES +#define NO_AES +#undef NO_DES3 +#define NO_DES3 +#undef NO_RC4 +#define NO_RC4 +#undef NO_MD4 +#define NO_MD4 +#undef NO_MD5 +#define NO_MD5 +#undef NO_SHA /* SHA-1 */ +#define NO_SHA +#undef NO_HMAC +#define NO_HMAC + +#ifdef __cplusplus +} +#endif + +#endif /* WOLFSSL_USER_SETTINGS_C2000_SHA3_H */ diff --git a/embedded/ti-c2000-f28p55x/ccs/sha3/wolfssl_sha3.projectspec b/embedded/ti-c2000-f28p55x/ccs/sha3/wolfssl_sha3.projectspec new file mode 100644 index 000000000..9b2e26056 --- /dev/null +++ b/embedded/ti-c2000-f28p55x/ccs/sha3/wolfssl_sha3.projectspec @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +