Add contract address and selector to setExternalPlugin
This commit is contained in:
@@ -63,6 +63,17 @@ eth_plugin_result_t eth_plugin_perform_init(uint8_t *contractAddress,
|
||||
|
||||
PRINTF("Selector %.*H\n", 4, init->selector);
|
||||
if (tmpCtx.transactionContext.externalPluginIsSet) {
|
||||
// check if the registered external plugin matches the TX contract address / method selector
|
||||
if (memcmp(contractAddress,
|
||||
dataContext.tokenContext.contract_address,
|
||||
sizeof(dataContext.tokenContext.contract_address)) != 0) {
|
||||
os_sched_exit(0);
|
||||
}
|
||||
if (memcmp(init->selector,
|
||||
dataContext.tokenContext.method_selector,
|
||||
sizeof(dataContext.tokenContext.method_selector)) != 0) {
|
||||
os_sched_exit(0);
|
||||
}
|
||||
PRINTF("External plugin will be used\n");
|
||||
dataContext.tokenContext.pluginStatus = ETH_PLUGIN_RESULT_OK;
|
||||
contractAddress = NULL;
|
||||
|
||||
@@ -58,7 +58,13 @@ typedef struct tokenContext_t {
|
||||
uint8_t pluginUiCurrentItem;
|
||||
uint8_t pluginUiState;
|
||||
|
||||
uint8_t pluginContext[3 * 32];
|
||||
union {
|
||||
struct {
|
||||
uint8_t contract_address[20];
|
||||
uint8_t method_selector[4];
|
||||
};
|
||||
uint8_t pluginContext[3 * 32];
|
||||
};
|
||||
|
||||
#ifdef HAVE_STARKWARE
|
||||
uint8_t quantum[32];
|
||||
|
||||
Reference in New Issue
Block a user