|
|
@@ -12,8 +12,10 @@
|
|
|
SHA: peripheral independent, but DMA is shared with AES
|
|
|
AES: peripheral independent, but DMA is shared with SHA
|
|
|
MPI/RSA: independent
|
|
|
+ECC: independent
|
|
|
HMAC: needs SHA
|
|
|
DS: needs HMAC (which needs SHA), AES and MPI
|
|
|
+ECDSA: needs ECC and MPI
|
|
|
*/
|
|
|
|
|
|
/* Lock for DS peripheral */
|
|
|
@@ -28,6 +30,12 @@ static _lock_t s_crypto_mpi_lock;
|
|
|
/* Single lock for SHA and AES, sharing a reserved GDMA channel */
|
|
|
static _lock_t s_crypto_sha_aes_lock;
|
|
|
|
|
|
+/* Lock for ECC peripheral */
|
|
|
+static _lock_t s_crypto_ecc_lock;
|
|
|
+
|
|
|
+/* Lock for ECDSA peripheral */
|
|
|
+static _lock_t s_crypto_ecdsa_lock;
|
|
|
+
|
|
|
void esp_crypto_hmac_lock_acquire(void)
|
|
|
{
|
|
|
_lock_acquire(&s_crypto_hmac_lock);
|
|
|
@@ -73,3 +81,27 @@ void esp_crypto_mpi_lock_release(void)
|
|
|
{
|
|
|
_lock_release(&s_crypto_mpi_lock);
|
|
|
}
|
|
|
+
|
|
|
+void esp_crypto_ecc_lock_acquire(void)
|
|
|
+{
|
|
|
+ _lock_acquire(&s_crypto_ecc_lock);
|
|
|
+}
|
|
|
+
|
|
|
+void esp_crypto_ecc_lock_release(void)
|
|
|
+{
|
|
|
+ _lock_release(&s_crypto_ecc_lock);
|
|
|
+}
|
|
|
+
|
|
|
+void esp_crypto_ecdsa_lock_acquire(void)
|
|
|
+{
|
|
|
+ _lock_acquire(&s_crypto_ecdsa_lock);
|
|
|
+ esp_crypto_ecc_lock_acquire();
|
|
|
+ esp_crypto_mpi_lock_acquire();
|
|
|
+}
|
|
|
+
|
|
|
+void esp_crypto_ecdsa_lock_release(void)
|
|
|
+{
|
|
|
+ esp_crypto_mpi_lock_release();
|
|
|
+ esp_crypto_ecc_lock_release();
|
|
|
+ _lock_release(&s_crypto_ecdsa_lock);
|
|
|
+}
|