Commit Graph

5 Commits (a48d12683f8b6b96b07c262398097eeb89990506)

Author SHA1 Message Date
ccli8 99dd189177 [Nuvoton] Remove unnecessary header files in crypto-misc.cpp 2019-02-11 18:10:51 +08:00
ccli8 ad1e57bdef [Nuvoton] Refine MBED_CONF_RTOS_PRESENT check in crypto_misc.cpp 2019-01-03 09:21:05 +08:00
ccli8 39f705e033 [Nuvoton] Fix crypto_misc.cpp compile error with RTOS-absent
Replace Mutex with PlatformMutex which supports RTOS-absent
2019-01-02 15:53:31 +08:00
ccli8 388076d36d [Nuvoton] Remove unnecessary mbed_rtos_storage.h in crypto_misc.cpp 2019-01-02 14:06:03 +08:00
ccli8 ca44675086 [Nuvoton] Fix crypto AC management
1. For SHA AC, use atomic flag to manage its ownership.
   (1) Nuvoton SHA AC doesn't support SHA context save & restore, so S/W
       SHA fallback has been supported before. To make non-blocking 'acquire'
       semantics clearer, introduce 'try_acquire' to substitute for 'acquire'.
   (2) No biting CPU due to mechanism above.
   (3) No deadlock due to mechanism above.
2. For AES/DES/ECC AC, change to mutex to manage their ownership.
   (1) Change crypto-misc.c to crypto-misc.cpp to utilize C++ SingletonPtr
       which guarantees thread-safe mutex construct-on-first-use.
   (2) With change to crypto-misc.cpp, add 'extern "C"' modifier to CRYPTO_IRQHandler()
       to avoid name mangling in C++.
   (3) No priority inversion because mutex has osMutexPrioInherit attribute
       bit set.
   (4) No deadlock because these AC are all locked for a short sequence
       of operations rather than the whole lifetime of mbedtls context.
   (5) For double mbedtls_internal_ecp_init() issue, it has been fixed in upper
       mbedtls layer. So no need to change ecc init/free flow.
2018-12-19 10:17:39 +08:00