1
0
Fork 0

Fixes for SD and modern NRF SDK

This commit is contained in:
Shawn Nock 2021-02-06 16:00:57 -05:00
parent f3e0affe8f
commit 0cd7a12cd0
2 changed files with 122 additions and 13 deletions

117
CMakeLists.txt Normal file
View File

@ -0,0 +1,117 @@
set(SRC aes.c
block.c
ckdf.c
cmac.c
ctr.c
eax.c)
include_directories(
${PROJECT_SOURCE_DIR}
${NRF_SDK}/components/ble/ble_services/ble_ancs_c
${NRF_SDK}/components/ble/ble_services/ble_ias_c
${NRF_SDK}/components/libraries/pwm
${NRF_SDK}/components/softdevice/${SOFTDEVICE_LOWER}/headers/nrf52
${NRF_SDK}/components/softdevice/${SOFTDEVICE_LOWER}/headers
${NRF_SDK}/components/libraries/usbd/class/cdc/acm
${NRF_SDK}/components/libraries/usbd/class/hid/generic
${NRF_SDK}/components/libraries/usbd/class/msc
${NRF_SDK}/components/libraries/usbd/class/hid
${NRF_SDK}/modules/nrfx/hal
${NRF_SDK}/components/libraries/log
${NRF_SDK}/components/ble/ble_services/ble_gls
${NRF_SDK}/components/libraries/fstorage
${NRF_SDK}/components/libraries/mutex
${NRF_SDK}/components/libraries/gpiote
${NRF_SDK}/components/libraries/bootloader/ble_dfu
${NRF_SDK}/components/libraries/serial/
${NRF_SDK}/components/boards
${NRF_SDK}/components/ble/ble_advertising
${NRF_SDK}/external/utf_converter
${NRF_SDK}/components/ble/ble_services/ble_bas_c
${NRF_SDK}/modules/nrfx/drivers/include
${NRF_SDK}/components/libraries/experimental_task_manager
${NRF_SDK}/components/ble/ble_services/ble_hrs_c
${NRF_SDK}/components/libraries/queue
${NRF_SDK}/components/libraries/pwr_mgmt
${NRF_SDK}/components/ble/ble_dtm
${NRF_SDK}/components/toolchain/cmsis/include
${NRF_SDK}/components/ble/ble_services/ble_rscs_c
${NRF_SDK}/components/ble/common
${NRF_SDK}/components/ble/ble_services/ble_lls
${NRF_SDK}/components/libraries/bsp
${NRF_SDK}/components/ble/ble_services/ble_bas
${NRF_SDK}/components/libraries/mpu
${NRF_SDK}/components/libraries/experimental_section_vars
${NRF_SDK}/components/ble/ble_services/ble_ans_c
${NRF_SDK}/components/libraries/slip
${NRF_SDK}/components/libraries/delay
${NRF_SDK}/components/libraries/mem_manager
${NRF_SDK}/components/libraries/csense_drv
${NRF_SDK}/components/libraries/memobj
${NRF_SDK}/components/ble/ble_services/ble_nus_c
${NRF_SDK}/components/softdevice/common
${NRF_SDK}/components/ble/ble_services/ble_ias
${NRF_SDK}/components/libraries/usbd/class/hid/mouse
${NRF_SDK}/components/libraries/low_power_pwm
${NRF_SDK}/components/ble/ble_services/ble_dfu
${NRF_SDK}/components/ble/ble_db_discovery
${NRF_SDK}/components/ble/nrf_ble_gatt
${NRF_SDK}/external/fprintf
${NRF_SDK}/components/libraries/svc
${NRF_SDK}/components/libraries/atomic
${NRF_SDK}/components/libraries/atomic_flags
${NRF_SDK}/components
${NRF_SDK}/components/libraries/scheduler
${NRF_SDK}/components/libraries/cli
${NRF_SDK}/components/ble/ble_services/ble_lbs
${NRF_SDK}/components/ble/ble_services/ble_hts
${NRF_SDK}/components/libraries/crc16
${NRF_SDK}/components/libraries/util
${NRF_SDK}/components/libraries/usbd/class/cdc
${NRF_SDK}/components/libraries/csense
${NRF_SDK}/components/libraries/balloc
${NRF_SDK}/components/libraries/ecc
${NRF_SDK}/components/libraries/hardfault
${NRF_SDK}/components/ble/ble_services/ble_cscs
${NRF_SDK}/components/libraries/hci
${NRF_SDK}/components/libraries/timer
${NRF_SDK}/integration/nrfx
${NRF_SDK}/components/libraries/sortlist
${NRF_SDK}/components/libraries/spi_mngr
${NRF_SDK}/components/softdevice/${SOFTDEVICE_LOWER}/headers
${NRF_SDK}/components/libraries/led_softblink
${NRF_SDK}/components/libraries/sdcard
${NRF_SDK}/modules/nrfx/mdk
${NRF_SDK}/components/ble/ble_services/ble_cts_c
${NRF_SDK}/components/ble/ble_services/ble_nus
${NRF_SDK}/components/libraries/twi_mngr
${NRF_SDK}/components/ble/ble_services/ble_hids
${NRF_SDK}/components/libraries/strerror
${NRF_SDK}/components/libraries/crc32
${NRF_SDK}/components/libraries/usbd/class/audio
${NRF_SDK}/components/ble/peer_manager
${NRF_SDK}/components/drivers_nrf/usbd
${NRF_SDK}/components/libraries/ringbuf
${NRF_SDK}/components/ble/ble_services/ble_tps
${NRF_SDK}/components/ble/ble_services/ble_dis
${NRF_SDK}/components/ble/nrf_ble_qwr
${NRF_SDK}/components/libraries/gfx
${NRF_SDK}/components/libraries/button
${NRF_SDK}/modules/nrfx
${NRF_SDK}/components/libraries/twi_sensor
${NRF_SDK}/integration/nrfx/legacy
${NRF_SDK}/components/libraries/usbd/class/hid/kbd
${NRF_SDK}/external/segger_rtt
${NRF_SDK}/components/libraries/atomic_fifo
${NRF_SDK}/components/ble/ble_services/ble_lbs_c
${NRF_SDK}/components/libraries/crypto
${NRF_SDK}/components/ble/ble_racp
${NRF_SDK}/components/libraries/fds
${NRF_SDK}/components/ble/ble_services/ble_hrs
${NRF_SDK}/components/ble/ble_services/ble_rscs
${NRF_SDK}/components/libraries/usbd
${NRF_SDK}/components/libraries/stack_guard
${NRF_SDK}/components/libraries/log/src
${NRF_SDK}/components/ble/nrf_ble_scan)
add_library(nrf-crypto STATIC ${SRC})

18
aes.c
View File

@ -2,23 +2,19 @@
#include "block.h" #include "block.h"
#ifndef HOST_BUILD #ifndef HOST_BUILD
#include "nrf.h" #include <nrf_soc.h>
#else #else
#include <openssl/aes.h> #include <openssl/aes.h>
#endif /* HOST_BUILD */ #endif /* HOST_BUILD */
#include <string.h> #include <string.h>
static ecbdata_t g_ecbdata; static nrf_ecb_hal_data_t g_ecbdata;
void aes128_init(const uint8_t *key) { void aes128_init(const uint8_t *key) {
if (key != NULL) { if (key != NULL) {
memmove(g_ecbdata.key, key, 16); memmove(g_ecbdata.key, key, 16);
#ifndef HOST_BUILD
NRF_ECB->ECBDATAPTR = (uint32_t)&g_ecbdata;
#endif /* HOST_BUILD */
} }
return;
} }
uint8_t *aes128_ecb(uint8_t const *const in) { uint8_t *aes128_ecb(uint8_t const *const in) {
@ -27,14 +23,10 @@ uint8_t *aes128_ecb(uint8_t const *const in) {
AES_set_encrypt_key(g_ecbdata.key, 128, &key); AES_set_encrypt_key(g_ecbdata.key, 128, &key);
AES_encrypt(in, g_ecbdata.out, &key); AES_encrypt(in, g_ecbdata.out, &key);
#else #else
memcpy(g_ecbdata.in, in, 16); memcpy(g_ecbdata.cleartext, in, 16);
NRF_ECB->TASKS_STARTECB = 1; sd_ecb_block_encrypt(&g_ecbdata);
while (!NRF_ECB->EVENTS_ENDECB) {
;
}
NRF_ECB->EVENTS_ENDECB = 0;
#endif /* HOST_BUILD */ #endif /* HOST_BUILD */
return g_ecbdata.out; return g_ecbdata.ciphertext;
} }
#ifdef HOST_BUILD #ifdef HOST_BUILD