From 5e1ae86293cb8d70b2b8a60fa4e9dfc85e4dc8ff Mon Sep 17 00:00:00 2001 From: Gregor Haas Date: Tue, 7 Jan 2020 11:13:46 -0500 Subject: [PATCH] Some updates to payload_aes_busy structure, call AES_HW_CRYPTO_CMD with correct arg data types --- c8_payloads/CMakeLists.txt | 5 ++++- c8_payloads/include/brfunc_aes.h | 9 ++++++++- c8_payloads/src/aes_busy.c | 22 ++++++++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 c8_payloads/src/aes_busy.c diff --git a/c8_payloads/CMakeLists.txt b/c8_payloads/CMakeLists.txt index 5e3d96d..bb6d994 100644 --- a/c8_payloads/CMakeLists.txt +++ b/c8_payloads/CMakeLists.txt @@ -11,9 +11,12 @@ endif() set(CMAKE_C_FLAGS "-nostdlib -O") -set(PAYLOADS payload_sync payload_aes payload_sysreg) +set(PAYLOADS payload_sync payload_aes payload_sysreg payload_aes_busy) add_executable(payload_sync src/sync.c) + add_executable(payload_aes src/aes.c) +add_executable(payload_aes_busy src/aes_busy.c) + add_executable(payload_sysreg src/sysreg.c) file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/) diff --git a/c8_payloads/include/brfunc_aes.h b/c8_payloads/include/brfunc_aes.h index 6af987c..e26d8b5 100644 --- a/c8_payloads/include/brfunc_aes.h +++ b/c8_payloads/include/brfunc_aes.h @@ -3,7 +3,14 @@ #include "brfunc_common.h" -#define AES_HW_CRYPTO_CMD ((BOOTROM_FUNC) ADDR_AES_HW_CRYPTO_CMD) +PAYLOAD_SECTION +int aes_hw_crypto_cmd(unsigned long long cmd, + unsigned char *src, unsigned char *dst, + int len, unsigned long long opts, + unsigned char *key, unsigned char *iv) +{ + return ((BOOTROM_FUNC) ADDR_AES_HW_CRYPTO_CMD)(cmd, src, dst, len, opts, key, iv); +} #define CREATE_KEY_COMMAND ((BOOTROM_FUNC) ADDR_CREATE_KEY_COMMAND) #define PUSH_COMMAND_KEY ((BOOTROM_FUNC) ADDR_PUSH_COMMAND_KEY) diff --git a/c8_payloads/src/aes_busy.c b/c8_payloads/src/aes_busy.c new file mode 100644 index 0000000..49b880e --- /dev/null +++ b/c8_payloads/src/aes_busy.c @@ -0,0 +1,22 @@ +#include "util.h" +#include "brfunc_aes.h" + + +TEXT_SECTION +int _start(void *src, void *dst, void *key, int rep) +{ + int i, j; + unsigned char src_data[16]; + for(j = 0; j < 16; j++) + { + src_data[j] = ((unsigned char *) src)[j]; + } + + for(i = 0; i < rep; i++) + { + if(i % 2 == 0) aes_hw_crypto_cmd(16, src_data, dst, 16, 0, key, 0); + else aes_hw_crypto_cmd(16, dst, src_data, 16, 0, key, 0); + } + + return 0; +} \ No newline at end of file