firmware/src
Jonathan Bennett 74afd13171
Re-implement PKI from #1509 (#4379)
* Re-implement PKI from #1509
co-authored-by: edinnen <ethanjdinnen@protonmail.com>

* Set the key lengnth to actually make PKI work.

* Remove unused variable and initialize keys to null

* move printBytes() to meshUtils

* Don't reset PKI key son reboot unless needed.

* Remove double encryption for PKI messages

* Cleanup encrypt logic

* Add the MESHTASTIC_EXCLUDE_PKI option, and set it for minimal builds. Required for STM32 targets for now.

* Use SHA-256 for PKI key hashing, and add MESHTASTIC_EXCLUDE_PKI_KEYGEN for STM32

* Fix a crash when node is null

* Don't send PKI encrypted packets while licensed

* use chIndex 8 for PKI

* Don't be so clever, that you corrupt incoming packets

* Pass on channel 8 for now

* Typo

* Lock keys once non-zero

* We in fact need 2 scratch buffers, to store the encrypted bytes, unencrypted bytes, and decoded protobuf.

* Lighter approach to retaining known key

* Attach the public key to PKI decrypted packets in device memory

* Turn PKI back off for STM32 :(

* Don't just memcp over a protobuf

* Don't PKI encrypt nodeinfo packets

* Add a bit more memory logging around nodeDB

* Use the proper macro to refer to NODENUM_BROADCAST

* Typo fix

* Don't PKI encrypt ROUTING (naks and acks)

* Adds SecurityConfig protobuf

* Add admin messages over PKI

* Disable PKI for the WIO-e5

* Add MINIMUM_SAFE_FREE_HEAP macro and set to safe 1.5k

* Add missed "has_security"

* Add the admin_channel_enabled option

* STM32 again

* add missed configuration.h at the top of files

* Add EXCLUDE_TZ and RTC

* Enable PKI build on STM32 once again

* Attempt 1 at moving PKI to aes-ccm

* Fix buffers for encrypt/decrypt

* Eliminate unused aes variable

* Add debugging lines

* Set hash to 0 for PKI

* Fix debug lines so they don't print pointers.

* logic fix and more debug

* Rather important typo

* Check for short packets before attempting decrypt

* Don't forget to give cryptoEngine the keys!

* Use the right scratch buffer

* Cleanup

* moar cleanups

* Minor hardening

* Remove some in-progress stuff

* Turn PKI back off on STM32

* Return false

* 2.5 protos

* Sync up protos

* Add initial cryptography test vector tests

* re-add MINIMUM_SAFE_FREE_HEAP

* Housekeeping and comment fixes

* Add explanatory comment about weak dh25519 keys

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2024-08-10 13:45:41 -05:00
..
buzz trunk roundhouse kick 2023-01-21 21:23:24 +01:00
concurrency Tracker role wakeup and sleep cycle when power.is_power_saving true (#2846) 2023-09-30 21:09:17 -05:00
detect Make STM compile again and update toolchain. (#2960) 2024-07-25 20:16:21 -05:00
Fusion Add support for BMX160/RAK12034 compass module (#4021) 2024-06-11 17:47:45 -05:00
gps Adds MESHTASTIC_EXCLUDE_TZ option (#4423) 2024-08-09 00:52:31 -05:00
graphics "Scan and Select" input for Canned Messages (#4365) 2024-08-06 17:16:56 -05:00
input "Scan and Select" input for Canned Messages (#4365) 2024-08-06 17:16:56 -05:00
mesh Re-implement PKI from #1509 (#4379) 2024-08-10 13:45:41 -05:00
modules Re-implement PKI from #1509 (#4379) 2024-08-10 13:45:41 -05:00
mqtt Make SPI frequency and TOPHONE queue size configurable on Native (#4369) 2024-08-01 19:29:49 -05:00
nimble Revert "Sync Wio lr1110 refresh with master (#4288)" 2024-07-22 15:30:36 +02:00
platform Finish powermon/powerstress (#4230) 2024-08-06 12:35:54 -05:00
serialization Macro to trace log all MeshPackets as JSON (#4336) 2024-07-28 19:49:10 -05:00
AccelerometerThread.h Revert "Sync Wio lr1110 refresh with master (#4288)" 2024-07-22 15:30:36 +02:00
airtime.cpp Remove deprecated MyNodeInfo fields (#2552) 2023-06-08 08:07:32 -05:00
airtime.h Fix various typos (#2607) 2023-07-14 16:25:20 -05:00
AmbientLightingThread.h added NeoPixel support using Adafruit library 2024-04-22 14:42:52 +01:00
AudioThread.h RTTTL ringtones on T-Deck / T-Watch S3 and potentially more I2S audio enabled devices (#2917) 2023-12-12 08:36:37 -06:00
BluetoothCommon.cpp Revert "Sync Wio lr1110 refresh with master (#4288)" 2024-07-22 15:30:36 +02:00
BluetoothCommon.h Revert "Sync Wio lr1110 refresh with master (#4288)" 2024-07-22 15:30:36 +02:00
ButtonThread.cpp Make SPI frequency and TOPHONE queue size configurable on Native (#4369) 2024-08-01 19:29:49 -05:00
ButtonThread.h Cleanup - remove unused defines. (#4353) 2024-07-31 06:56:06 -05:00
commands.h Revert "Sync Wio lr1110 refresh with master (#4288)" 2024-07-22 15:30:36 +02:00
configuration.h Re-implement PKI from #1509 (#4379) 2024-08-10 13:45:41 -05:00
DebugConfiguration.cpp Revert "Sync Wio lr1110 refresh with master (#4288)" 2024-07-22 15:30:36 +02:00
DebugConfiguration.h Remove LED_INVERTED, see below for why ;-) (#4382) 2024-08-05 06:02:32 -05:00
DisplayFormatters.cpp Refactor away some code duplication in screen frames and display formatter for modem presets (#2872) 2023-10-09 20:43:16 -05:00
DisplayFormatters.h Refactor away some code duplication in screen frames and display formatter for modem presets (#2872) 2023-10-09 20:43:16 -05:00
error.h Remove deprecated MyNodeInfo fields (#2552) 2023-06-08 08:07:32 -05:00
freertosinc.h Make STM compile again and update toolchain. (#2960) 2024-07-25 20:16:21 -05:00
FSCommon.cpp Make STM compile again and update toolchain. (#2960) 2024-07-25 20:16:21 -05:00
FSCommon.h Make STM compile again and update toolchain. (#2960) 2024-07-25 20:16:21 -05:00
GpioLogic.cpp Finish powermon/powerstress (#4230) 2024-08-06 12:35:54 -05:00
GpioLogic.h Finish powermon/powerstress (#4230) 2024-08-06 12:35:54 -05:00
GPSStatus.h Revert "Sync Wio lr1110 refresh with master (#4288)" 2024-07-22 15:30:36 +02:00
Led.cpp Finish powermon/powerstress (#4230) 2024-08-06 12:35:54 -05:00
Led.h Finish powermon/powerstress (#4230) 2024-08-06 12:35:54 -05:00
main.cpp Re-implement PKI from #1509 (#4379) 2024-08-10 13:45:41 -05:00
main.h Revert "Sync Wio lr1110 refresh with master (#4288)" 2024-07-22 15:30:36 +02:00
memGet.cpp RP2040: Add getFreeHeap() and getHeapSize() support 2024-05-14 19:04:31 +02:00
memGet.h - Abstract the memory stats into its own class. 2023-02-17 12:31:51 +01:00
meshUtils.cpp Move printBytes to meshUtils (#4424) 2024-08-09 01:43:13 -05:00
meshUtils.h Re-implement PKI from #1509 (#4379) 2024-08-10 13:45:41 -05:00
network-stubs.cpp trunk roundhouse kick 2023-01-21 21:23:24 +01:00
NodeStatus.h trunk roundhouse kick 2023-01-21 21:23:24 +01:00
Observer.cpp trunk roundhouse kick 2023-01-21 21:23:24 +01:00
Observer.h Fix: return failure when PhoneAPI times out (#3136) 2024-01-28 07:53:39 -06:00
Power.cpp Finish powermon/powerstress (#4230) 2024-08-06 12:35:54 -05:00
power.h Finish powermon/powerstress (#4230) 2024-08-06 12:35:54 -05:00
PowerFSM.cpp Add more exclude options to save program ram/flash (#4408) 2024-08-06 18:48:55 -05:00
PowerFSM.h Add more exclude options to save program ram/flash (#4408) 2024-08-06 18:48:55 -05:00
PowerFSMThread.h Add more exclude options to save program ram/flash (#4408) 2024-08-06 18:48:55 -05:00
PowerMon.cpp Finish powermon/powerstress (#4230) 2024-08-06 12:35:54 -05:00
PowerMon.h Finish powermon/powerstress (#4230) 2024-08-06 12:35:54 -05:00
PowerStatus.h User experience improvement - app battery icon (#3979) 2024-05-28 06:30:15 -05:00
RedirectablePrint.cpp Re-implement PKI from #1509 (#4379) 2024-08-10 13:45:41 -05:00
RedirectablePrint.h Revert "Sync Wio lr1110 refresh with master (#4288)" 2024-07-22 15:30:36 +02:00
RF95Configuration.h Use LORA_DIO1 as RadioLib GPIO for SX127x chips (#2290) 2023-02-22 10:07:03 +01:00
SafeFile.cpp bug #4184: fix config file loss due to filesystem write errors (#4397) 2024-08-06 13:59:06 -05:00
SafeFile.h bug #4184: fix config file loss due to filesystem write errors (#4397) 2024-08-06 13:59:06 -05:00
SerialConsole.cpp Re-implement PKI from #1509 (#4379) 2024-08-10 13:45:41 -05:00
SerialConsole.h Revert "Sync Wio lr1110 refresh with master (#4288)" 2024-07-22 15:30:36 +02:00
shutdown.h Revert "Sync Wio lr1110 refresh with master (#4288)" 2024-07-22 15:30:36 +02:00
sleep.cpp Finish powermon/powerstress (#4230) 2024-08-06 12:35:54 -05:00
sleep.h Finish powermon/powerstress (#4230) 2024-08-06 12:35:54 -05:00
SPILock.cpp trunk roundhouse kick 2023-01-21 21:23:24 +01:00
SPILock.h
Status.h trunk roundhouse kick 2023-01-21 21:23:24 +01:00
target_specific.h NRF52 bluetooth cleanup and fix (#3328) 2024-03-03 13:56:55 -06:00
xmodem.cpp Make STM compile again and update toolchain. (#2960) 2024-07-25 20:16:21 -05:00
xmodem.h Make STM compile again and update toolchain. (#2960) 2024-07-25 20:16:21 -05:00