|
SharkSSL™ Embedded SSL/TLS Stack
|
These Thumb-2 sources use Keil/ARMASM syntax for little-endian Cortex-M3, Cortex-M4, and Cortex-M7. They are not drop-in GCC or IAR assembly files. Pass compatible SharkSSL feature definitions to the C compiler and to the assembly preprocessing step.
Select exactly one of SharkSslBigInt_M3.s (Cortex-M3) or SharkSslBigInt_M4.s (Cortex-M4/M7 with DSP instructions). They export the same symbols and must not be linked together. Keep SharkSslBigInt.c in the normal SharkSSL build and set:
SharkSslCrypto_M3.s supplies both SharkSslChaChaCtx_crypt and SharkSslPoly1305Ctx_process. Keep SharkSslCrypto.c in the build and configure both optimized implementations consistently with that object:
The two symbols are exported from the same assembly object; do not also link their C definitions. No GHASH or combined GCM assembly backend is supplied in this directory.
This directory has no dedicated X25519 assembly file. Use the configured C backend, or port and validate the M4 backend for this assembler before setting SHARKSSL_X25519_ASM=1.
Define B_LITTLE_ENDIAN for these backends. Set SHARKSSL_UNALIGNED_ACCESS only if the target, memory regions, and integration permit such accesses. Choose cipher suites, code-size options, and a secure RNG in the active SharkSSL configuration.
These hand-written Thumb-2 routines use processor-specific arithmetic and register scheduling to target lower cryptographic processing cost on small MCUs. The potential benefit is more CPU time available for application tasks without changing SharkSSL's public APIs. Performance depends on the selected routines, compiler settings, and target MCU. Measure with the intended compiler and Cortex-M processor; ARM64 and x86 results do not apply here.