Emulates old behaviour with new APDUs but computed all on-device
This commit is contained in:
@@ -6,6 +6,7 @@
|
|||||||
#include "eip712.h"
|
#include "eip712.h"
|
||||||
#include "type_hash.h"
|
#include "type_hash.h"
|
||||||
#include "shared_context.h"
|
#include "shared_context.h"
|
||||||
|
#include "ethUtils.h"
|
||||||
|
|
||||||
static s_path *path_struct = NULL;
|
static s_path *path_struct = NULL;
|
||||||
|
|
||||||
@@ -131,9 +132,22 @@ static bool path_depth_list_pop(void)
|
|||||||
NULL,
|
NULL,
|
||||||
0);
|
0);
|
||||||
}
|
}
|
||||||
#ifdef DEBUG
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (allzeroes(tmpCtx.messageSigningContext712.domainHash, KECCAK256_HASH_BYTESIZE))
|
||||||
|
{
|
||||||
|
memcpy(tmpCtx.messageSigningContext712.domainHash,
|
||||||
|
shash,
|
||||||
|
KECCAK256_HASH_BYTESIZE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
memcpy(tmpCtx.messageSigningContext712.messageHash,
|
||||||
|
shash,
|
||||||
|
KECCAK256_HASH_BYTESIZE);
|
||||||
|
mem_reset();
|
||||||
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
PRINTF("Hash = 0x");
|
PRINTF("Hash = 0x");
|
||||||
for (int idx = 0; idx < KECCAK256_HASH_BYTESIZE; ++idx)
|
for (int idx = 0; idx < KECCAK256_HASH_BYTESIZE; ++idx)
|
||||||
{
|
{
|
||||||
@@ -142,8 +156,8 @@ static bool path_depth_list_pop(void)
|
|||||||
PRINTF("%x", shash[idx]);
|
PRINTF("%x", shash[idx]);
|
||||||
}
|
}
|
||||||
PRINTF("\n\n");
|
PRINTF("\n\n");
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ void handleSignEIP712Message_v0(uint8_t p1,
|
|||||||
|
|
||||||
UNUSED(tx);
|
UNUSED(tx);
|
||||||
if ((p1 != 00) || (p2 != 00)) {
|
if ((p1 != 00) || (p2 != 00)) {
|
||||||
THROW(0x6B00);
|
//THROW(0x6B00); // TODO: TMP
|
||||||
}
|
}
|
||||||
if (appState != APP_STATE_IDLE) {
|
if (appState != APP_STATE_IDLE) {
|
||||||
reset_app_context();
|
reset_app_context();
|
||||||
@@ -21,12 +21,17 @@ void handleSignEIP712Message_v0(uint8_t p1,
|
|||||||
|
|
||||||
workBuffer = parseBip32(workBuffer, &dataLength, &tmpCtx.messageSigningContext.bip32);
|
workBuffer = parseBip32(workBuffer, &dataLength, &tmpCtx.messageSigningContext.bip32);
|
||||||
|
|
||||||
if (workBuffer == NULL || dataLength < 32 + 32) {
|
if (workBuffer == NULL) {
|
||||||
THROW(0x6a80);
|
THROW(0x6a80);
|
||||||
}
|
}
|
||||||
|
if (p2 == 0) // TODO: TMP
|
||||||
memmove(tmpCtx.messageSigningContext712.domainHash, workBuffer, 32);
|
{
|
||||||
memmove(tmpCtx.messageSigningContext712.messageHash, workBuffer + 32, 32);
|
if (dataLength < (32 + 32)) {
|
||||||
|
THROW(0x6a80);
|
||||||
|
}
|
||||||
|
memmove(tmpCtx.messageSigningContext712.domainHash, workBuffer, 32);
|
||||||
|
memmove(tmpCtx.messageSigningContext712.messageHash, workBuffer + 32, 32);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef NO_CONSENT
|
#ifdef NO_CONSENT
|
||||||
io_seproxyhal_touch_signMessage_ok(NULL);
|
io_seproxyhal_touch_signMessage_ok(NULL);
|
||||||
|
|||||||
Reference in New Issue
Block a user