Attempted to get AES to work
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
enable_language(ASM)
|
||||
project(checkm8_payloads ASM)
|
||||
include_directories(include)
|
||||
|
||||
set(CMAKE_SYSTEM_PROCESSOR arm)
|
||||
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
<EFBFBD>?<03>u՟?<03><>?<03><>_<>
|
||||
Binary file not shown.
@@ -3,6 +3,8 @@
|
||||
|
||||
#include "brfunc_common.h"
|
||||
|
||||
#define AES_HW_CRYPTO_CMD ((BOOTROM_FUNC) ADDR_AES_HW_CRYPTO_CMD)
|
||||
|
||||
#define CREATE_KEY_COMMAND ((BOOTROM_FUNC) ADDR_CREATE_KEY_COMMAND)
|
||||
#define PUSH_COMMAND_KEY ((BOOTROM_FUNC) ADDR_PUSH_COMMAND_KEY)
|
||||
#define PUSH_COMMAND_IV ((BOOTROM_FUNC) ADDR_PUSH_COMMAND_IV)
|
||||
|
||||
@@ -8,6 +8,7 @@ typedef int (*BOOTROM_FUNC)();
|
||||
#if CHECKM8_PLATFORM == 8010
|
||||
|
||||
/* AES */
|
||||
#define ADDR_AES_HW_CRYPTO_CMD 0x100000f0c
|
||||
#define ADDR_CREATE_KEY_COMMAND 0x100000e90
|
||||
#define ADDR_PUSH_COMMAND_KEY 0x100000c64
|
||||
#define ADDR_PUSH_COMMAND_IV 0x100000d18
|
||||
|
||||
@@ -14,23 +14,26 @@ int aes_hw_crypto_command(unsigned int cmd,
|
||||
void *iv)
|
||||
{
|
||||
int seeded;
|
||||
long cgvar;
|
||||
long start = 0, timeout = 0;
|
||||
CLOCK_GATE(0x3C, 1);
|
||||
|
||||
seeded = DPA_SEEDED();
|
||||
if(!seeded)
|
||||
{
|
||||
SEP_CREATE_SEND_DPA_MESSAGE();
|
||||
start = SYSTEM_TIME();
|
||||
__asm__("orr %0, xzr, #0x3c" : "=r" (cgvar));
|
||||
CLOCK_GATE(cgvar, 1);
|
||||
|
||||
while(!seeded && !timeout)
|
||||
{
|
||||
seeded = DPA_SEEDED();
|
||||
timeout = TIME_HAS_ELAPSED(start, 1000);
|
||||
}
|
||||
}
|
||||
|
||||
if(timeout) return -1;
|
||||
// seeded = DPA_SEEDED();
|
||||
// if(!(seeded & 1))
|
||||
// {
|
||||
// SEP_CREATE_SEND_DPA_MESSAGE();
|
||||
// start = SYSTEM_TIME();
|
||||
//
|
||||
// while(!(seeded & 1) && !(timeout & 1))
|
||||
// {
|
||||
// seeded = DPA_SEEDED();
|
||||
// timeout = TIME_HAS_ELAPSED(start, 1000);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if(timeout) return -1;
|
||||
|
||||
unsigned int key_command = CREATE_KEY_COMMAND(0, 0, 0, 0, 1, 0, 0, 0);
|
||||
*rAES_INT_STATUS = 0x20;
|
||||
@@ -43,18 +46,14 @@ int aes_hw_crypto_command(unsigned int cmd,
|
||||
WAIT_FOR_COMMAND_FLAG();
|
||||
|
||||
*rAES_CONTROL = 2;
|
||||
CLOCK_GATE(0x3C, 0);
|
||||
CLOCK_GATE(cgvar, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
TEXT_SECTION
|
||||
int _start(unsigned int cmd,
|
||||
void *src,
|
||||
int _start(void *src,
|
||||
void *dst,
|
||||
int len,
|
||||
unsigned int opts,
|
||||
void *key,
|
||||
void *iv)
|
||||
void *key)
|
||||
{
|
||||
return aes_hw_crypto_command(cmd, src, dst, len, opts, key, iv);
|
||||
return aes_hw_crypto_command(0, src, dst, 128, 0, key, 0);
|
||||
}
|
||||
Reference in New Issue
Block a user