Now prefixes the type hash with a marker

This commit is contained in:
Alexandre Paillier
2022-04-04 12:03:37 +02:00
parent 223aa10a58
commit 9521b36de3
2 changed files with 15 additions and 4 deletions

View File

@@ -57,6 +57,13 @@ typedef enum
#define TYPESIZE_MASK (1 << 6) #define TYPESIZE_MASK (1 << 6)
#define TYPENAME_ENUM (0xF) #define TYPENAME_ENUM (0xF)
typedef enum
{
EIP712_TYPE_HASH,
EIP712_FIELD_HASH,
EIP712_STRUCT_HASH
} e_eip712_hash_type;
#define KECCAK256_HASH_BYTESIZE 32 #define KECCAK256_HASH_BYTESIZE 32
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))

View File

@@ -37,23 +37,27 @@ const uint8_t *type_hash(const void *const structs_array,
// restore the memory location // restore the memory location
mem_dealloc(mem_alloc(0) - mem_loc_bak); mem_dealloc(mem_alloc(0) - mem_loc_bak);
// copy hash into memory if ((hash_ptr = mem_alloc(KECCAK256_HASH_BYTESIZE + 1)) == NULL)
if ((hash_ptr = mem_alloc(KECCAK256_HASH_BYTESIZE)) == NULL)
{ {
return NULL; return NULL;
} }
// set TypeHash marker
*hash_ptr = EIP712_TYPE_HASH;
// copy hash into memory
cx_hash((cx_hash_t*)&global_sha3, cx_hash((cx_hash_t*)&global_sha3,
CX_LAST, CX_LAST,
NULL, NULL,
0, 0,
hash_ptr, hash_ptr + 1,
KECCAK256_HASH_BYTESIZE); KECCAK256_HASH_BYTESIZE);
#ifdef DEBUG #ifdef DEBUG
// print computed hash // print computed hash
printf("-> 0x"); printf("-> 0x");
for (int idx = 0; idx < KECCAK256_HASH_BYTESIZE; ++idx) for (int idx = 0; idx < KECCAK256_HASH_BYTESIZE; ++idx)
{ {
printf("%.02x", hash_ptr[idx]); printf("%.02x", (hash_ptr + 1)[idx]);
} }
printf("\n"); printf("\n");
#endif #endif