mirror of
https://github.com/meshtastic/firmware.git
synced 2025-04-23 17:13:38 +00:00
same change for STM32WL - also update trunk
This commit is contained in:
parent
ac318a9850
commit
603e564db3
@ -1,25 +1,25 @@
|
|||||||
version: 0.1
|
version: 0.1
|
||||||
cli:
|
cli:
|
||||||
version: 1.17.1
|
version: 1.17.2
|
||||||
plugins:
|
plugins:
|
||||||
sources:
|
sources:
|
||||||
- id: trunk
|
- id: trunk
|
||||||
ref: v1.2.6
|
ref: v1.3.0
|
||||||
uri: https://github.com/trunk-io/plugins
|
uri: https://github.com/trunk-io/plugins
|
||||||
lint:
|
lint:
|
||||||
enabled:
|
enabled:
|
||||||
- bandit@1.7.5
|
- bandit@1.7.5
|
||||||
- checkov@3.0.16
|
- checkov@3.1.9
|
||||||
- terrascan@1.18.3
|
- terrascan@1.18.3
|
||||||
- trivy@0.46.1
|
- trivy@0.47.0
|
||||||
- trufflehog@3.62.1
|
- trufflehog@3.63.2-rc0
|
||||||
- taplo@0.8.1
|
- taplo@0.8.1
|
||||||
- ruff@0.1.3
|
- ruff@0.1.6
|
||||||
- yamllint@1.32.0
|
- yamllint@1.33.0
|
||||||
- isort@5.12.0
|
- isort@5.12.0
|
||||||
- markdownlint@0.37.0
|
- markdownlint@0.37.0
|
||||||
- oxipng@9.0.0
|
- oxipng@9.0.0
|
||||||
- svgo@3.0.2
|
- svgo@3.0.4
|
||||||
- actionlint@1.6.26
|
- actionlint@1.6.26
|
||||||
- flake8@6.1.0
|
- flake8@6.1.0
|
||||||
- hadolint@2.12.0
|
- hadolint@2.12.0
|
||||||
@ -27,9 +27,9 @@ lint:
|
|||||||
- shellcheck@0.9.0
|
- shellcheck@0.9.0
|
||||||
- black@23.9.1
|
- black@23.9.1
|
||||||
- git-diff-check
|
- git-diff-check
|
||||||
- gitleaks@8.18.0
|
- gitleaks@8.18.1
|
||||||
- clang-format@16.0.3
|
- clang-format@16.0.3
|
||||||
- prettier@3.0.3
|
- prettier@3.1.0
|
||||||
runtimes:
|
runtimes:
|
||||||
enabled:
|
enabled:
|
||||||
- python@3.10.8
|
- python@3.10.8
|
||||||
|
@ -21,7 +21,7 @@ upload_protocol = stlink
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${env.lib_deps}
|
${env.lib_deps}
|
||||||
jgromes/RadioLib@^6.1.0
|
jgromes/RadioLib@^6.1.0
|
||||||
https://github.com/kokke/tiny-AES-c.git#f06ac37fc31dfdaca2e0d9bec83f90d5663c319b
|
rweather/Crypto
|
||||||
https://github.com/littlefs-project/littlefs.git#v2.5.1
|
https://github.com/littlefs-project/littlefs.git#v2.5.1
|
||||||
https://github.com/stm32duino/STM32FreeRTOS.git#10.3.1
|
https://github.com/stm32duino/STM32FreeRTOS.git#10.3.1
|
||||||
|
|
||||||
|
@ -1,33 +1,63 @@
|
|||||||
|
#include "AES.h"
|
||||||
|
#include "CTR.h"
|
||||||
#include "CryptoEngine.h"
|
#include "CryptoEngine.h"
|
||||||
#include "aes.hpp"
|
|
||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
|
|
||||||
class STM32WLCryptoEngine : public CryptoEngine
|
class STM32WLCryptoEngine : public CryptoEngine
|
||||||
{
|
{
|
||||||
|
|
||||||
|
CTRCommon *ctr = NULL;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
STM32WLCryptoEngine() {}
|
STM32WLCryptoEngine() {}
|
||||||
|
|
||||||
~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<AES128>();
|
||||||
|
else
|
||||||
|
ctr = new CTR<AES256>();
|
||||||
|
|
||||||
|
ctr->setKey(key.bytes, key.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Encrypt a packet
|
* Encrypt a packet
|
||||||
*
|
*
|
||||||
* @param bytes is updated in place
|
* @param bytes is updated in place
|
||||||
*/
|
*/
|
||||||
virtual void encrypt(uint32_t fromNode, uint64_t packetNum, size_t numBytes, uint8_t *bytes) override
|
virtual void encrypt(uint32_t fromNode, uint64_t packetId, size_t numBytes, uint8_t *bytes) override
|
||||||
{
|
{
|
||||||
if (key.length > 0) {
|
if (key.length > 0) {
|
||||||
AES_ctx ctx;
|
initNonce(fromNode, packetId);
|
||||||
initNonce(fromNode, packetNum);
|
if (numBytes <= MAX_BLOCKSIZE) {
|
||||||
AES_init_ctx_iv(&ctx, key.bytes, nonce);
|
static uint8_t scratch[MAX_BLOCKSIZE];
|
||||||
AES_CTR_xcrypt_buffer(&ctx, bytes, numBytes);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void decrypt(uint32_t fromNode, uint64_t packetNum, size_t numBytes, uint8_t *bytes) override
|
virtual void decrypt(uint32_t fromNode, uint64_t packetId, size_t numBytes, uint8_t *bytes) override
|
||||||
{
|
{
|
||||||
// For CTR, the implementation is the same
|
// For CTR, the implementation is the same
|
||||||
encrypt(fromNode, packetNum, numBytes, bytes);
|
encrypt(fromNode, packetId, numBytes, bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Loading…
Reference in New Issue
Block a user