From c7e3485dd77eff6632c7c9e053d73b9269c42422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Thu, 23 Nov 2023 13:47:07 +0100 Subject: [PATCH] Revert "same change for STM32WL - also update trunk" This reverts commit f9fdb0f98d5e095b5537e9b740231368fc088210. --- .trunk/trunk.yaml | 20 ++++----- arch/stm32/stm32wl5e.ini | 2 +- src/platform/stm32wl/STM32WLCryptoEngine.cpp | 46 ++++---------------- 3 files changed, 19 insertions(+), 49 deletions(-) diff --git a/.trunk/trunk.yaml b/.trunk/trunk.yaml index 66a16a152..e31b026f4 100644 --- a/.trunk/trunk.yaml +++ b/.trunk/trunk.yaml @@ -1,25 +1,25 @@ version: 0.1 cli: - version: 1.17.2 + version: 1.17.1 plugins: sources: - id: trunk - ref: v1.3.0 + ref: v1.2.6 uri: https://github.com/trunk-io/plugins lint: enabled: - bandit@1.7.5 - - checkov@3.1.9 + - checkov@3.0.16 - terrascan@1.18.3 - - trivy@0.47.0 - - trufflehog@3.63.2-rc0 + - trivy@0.46.1 + - trufflehog@3.62.1 - taplo@0.8.1 - - ruff@0.1.6 - - yamllint@1.33.0 + - ruff@0.1.3 + - yamllint@1.32.0 - isort@5.12.0 - markdownlint@0.37.0 - oxipng@9.0.0 - - svgo@3.0.4 + - svgo@3.0.2 - actionlint@1.6.26 - flake8@6.1.0 - hadolint@2.12.0 @@ -27,9 +27,9 @@ lint: - shellcheck@0.9.0 - black@23.9.1 - git-diff-check - - gitleaks@8.18.1 + - gitleaks@8.18.0 - clang-format@16.0.3 - - prettier@3.1.0 + - prettier@3.0.3 runtimes: enabled: - python@3.10.8 diff --git a/arch/stm32/stm32wl5e.ini b/arch/stm32/stm32wl5e.ini index 262da12a6..524edd6b9 100644 --- a/arch/stm32/stm32wl5e.ini +++ b/arch/stm32/stm32wl5e.ini @@ -21,7 +21,7 @@ upload_protocol = stlink lib_deps = ${env.lib_deps} jgromes/RadioLib@^6.1.0 - rweather/Crypto + https://github.com/kokke/tiny-AES-c.git#f06ac37fc31dfdaca2e0d9bec83f90d5663c319b https://github.com/littlefs-project/littlefs.git#v2.5.1 https://github.com/stm32duino/STM32FreeRTOS.git#10.3.1 diff --git a/src/platform/stm32wl/STM32WLCryptoEngine.cpp b/src/platform/stm32wl/STM32WLCryptoEngine.cpp index 6187cf302..7367a2bc0 100644 --- a/src/platform/stm32wl/STM32WLCryptoEngine.cpp +++ b/src/platform/stm32wl/STM32WLCryptoEngine.cpp @@ -1,63 +1,33 @@ -#include "AES.h" -#include "CTR.h" #include "CryptoEngine.h" +#include "aes.hpp" #include "configuration.h" class STM32WLCryptoEngine : public CryptoEngine { - - CTRCommon *ctr = NULL; - public: STM32WLCryptoEngine() {} ~STM32WLCryptoEngine() {} - virtual void setKey(const CryptoKey &k) override - { - CryptoEngine::setKey(k); - LOG_DEBUG("Installing AES%d key!\n", key.length * 8); - if (ctr) { - delete ctr; - ctr = NULL; - } - if (key.length != 0) { - if (key.length == 16) - ctr = new CTR(); - else - ctr = new CTR(); - - ctr->setKey(key.bytes, key.length); - } - } /** * Encrypt a packet * * @param bytes is updated in place */ - virtual void encrypt(uint32_t fromNode, uint64_t packetId, size_t numBytes, uint8_t *bytes) override + virtual void encrypt(uint32_t fromNode, uint64_t packetNum, size_t numBytes, uint8_t *bytes) override { if (key.length > 0) { - initNonce(fromNode, packetId); - if (numBytes <= MAX_BLOCKSIZE) { - static uint8_t scratch[MAX_BLOCKSIZE]; - memcpy(scratch, bytes, numBytes); - memset(scratch + numBytes, 0, - sizeof(scratch) - numBytes); // Fill rest of buffer with zero (in case cypher looks at it) - - ctr->setIV(nonce, sizeof(nonce)); - ctr->setCounterSize(4); - ctr->encrypt(bytes, scratch, numBytes); - } else { - LOG_ERROR("Packet too large for crypto engine: %d. noop encryption!\n", numBytes); - } + AES_ctx ctx; + initNonce(fromNode, packetNum); + AES_init_ctx_iv(&ctx, key.bytes, nonce); + AES_CTR_xcrypt_buffer(&ctx, bytes, numBytes); } } - virtual void decrypt(uint32_t fromNode, uint64_t packetId, size_t numBytes, uint8_t *bytes) override + virtual void decrypt(uint32_t fromNode, uint64_t packetNum, size_t numBytes, uint8_t *bytes) override { // For CTR, the implementation is the same - encrypt(fromNode, packetId, numBytes, bytes); + encrypt(fromNode, packetNum, numBytes, bytes); } private: