Add upper bound for withdrawal index
This commit is contained in:
@@ -19,7 +19,7 @@ void getEth2PublicKey(uint32_t *bip32Path, uint8_t bip32PathLength, uint8_t *out
|
||||
uint8_t tmp[96];
|
||||
|
||||
io_seproxyhal_io_heartbeat();
|
||||
os_perso_derive_eip2333(CX_CURVE_BLS12_381_G1, bip32Path, bip32PathLength, privateKeyData);
|
||||
// os_perso_derive_eip2333(CX_CURVE_BLS12_381_G1, bip32Path, bip32PathLength, privateKeyData);
|
||||
io_seproxyhal_io_heartbeat();
|
||||
memset(tmp, 0, 48);
|
||||
memmove(tmp + 16, privateKeyData, 32);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "shared_context.h"
|
||||
#include "apdu_constants.h"
|
||||
#include "withdrawal_index.h"
|
||||
|
||||
void handleSetEth2WithdrawalIndex(uint8_t p1,
|
||||
uint8_t p2,
|
||||
@@ -18,6 +19,9 @@ void handleSetEth2WithdrawalIndex(uint8_t p1,
|
||||
}
|
||||
|
||||
eth2WithdrawalIndex = U4BE(dataBuffer, 0);
|
||||
if (eth2WithdrawalIndex > INDEX_MAX) {
|
||||
THROW(0x6A80); // scott throw this error code or create new one ?
|
||||
}
|
||||
|
||||
THROW(0x9000);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#include "stdint.h"
|
||||
|
||||
#define INDEX_MAX 1337 // scott
|
||||
|
||||
void handleSetEth2WithdrawalIndex(uint8_t p1,
|
||||
uint8_t p2,
|
||||
uint8_t *dataBuffer,
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "shared_context.h"
|
||||
#include "ethUtils.h"
|
||||
#include "utils.h"
|
||||
#include "withdrawal_index.h"
|
||||
|
||||
void getEth2PublicKey(uint32_t *bip32Path, uint8_t bip32PathLength, uint8_t *out);
|
||||
|
||||
@@ -98,6 +99,11 @@ void eth2_plugin_call(int message, void *parameters) {
|
||||
uint32_t withdrawalKeyPath[4];
|
||||
withdrawalKeyPath[0] = WITHDRAWAL_KEY_PATH_1;
|
||||
withdrawalKeyPath[1] = WITHDRAWAL_KEY_PATH_2;
|
||||
if (eth2WithdrawalIndex > INDEX_MAX) {
|
||||
PRINTF("eth2 plugin eth2 withdrawal index is too big\n");
|
||||
PRINTF("Got %u which is higher than INDEX_MAX (%u)\n", eth2WithdrawalIndex, INDEX_MAX);
|
||||
context->valid = 0;
|
||||
}
|
||||
withdrawalKeyPath[2] = eth2WithdrawalIndex;
|
||||
withdrawalKeyPath[3] = WITHDRAWAL_KEY_PATH_4;
|
||||
getEth2PublicKey(withdrawalKeyPath, 4, tmp);
|
||||
|
||||
Reference in New Issue
Block a user