* First draft for erc721 token allowance * Split ui and provide parameters into their own files * Print txtype when not supported * fix compilation for erc721 * Use pluginType * Add debug statement in compound plugin * add debug error msg in plugin error * Add parameter parsing for all methods * Remove debug logs * Add SET_APPROVAL_FOR_ALL; Add correct parsing method on contract init * Add dst_size parameter to copy functions * Add query contract id code * format * Add UIs * update ethapp.asc * Change setExternalPlugin to setPlugin; Add support for ERC721 * clang-format * Fix typo Unconsistent -> Inconsistent * Add support for 721; use extraInfo * Add extraInfo to ethpluginQueryConractUI * Rename extraInfo to item * Add txFromEtherscan to tests * Add nft key and temp padding * Remove comments around HAVE_BYPASS_SIGNATURES * Rename TESTING_KEY to NFT_TESTING_KEY * Add comments regarding value of queryContractUI->item * Fix comment regarding method selector * Rename provideToken to provideInfo; Update plugin doc * fix caps of eth_plugin_prepare_provide_info * fix caps of handle_provide_info * Use verificationFn insead of hardcoded cx_ecdsa_verify * Add comments about nftInfo_t and tokenDefinition_t * Add erc721 test * Remove comment from plugin interface version * Fix network_ticker duplicate * Add setPlugin and provideNFTInfo to doc.asc * Add back setExternalPlugin; implement new setPlugin * Update plugin sdk * Call setPlugin instead of setExternalPlugin * setPlugin work without checking sig * Remove printf of displayed fees * Add working 721 test * Finalize ERC721 and add simple test * Display NFT address on set approval and operator * Support set approval for all for erc721 * Finish UI for set approval for all erc721 * Move copy_parameter and copy_address to eth_plugin_internal; Add tests for erc721 * update plugin sdk * Add erc1155 plugin and 1155 tests placeholder * Add restriction for AWS key and setPlugin * Add NOT_OLD_INTERNAL variant; Add erc_1155_plugin_call * Fixed compilation warnings (function pointer casting) Co-authored-by: pscott <scott.piriou@ledger.fr>
42 lines
805 B
C
42 lines
805 B
C
#pragma once
|
|
|
|
#include <string.h>
|
|
#include "eth_plugin_handler.h"
|
|
#include "shared_context.h"
|
|
#include "ethUtils.h"
|
|
#include "utils.h"
|
|
|
|
// Internal plugin for EIP 721: https://eips.ethereum.org/EIPS/eip-721
|
|
|
|
#define NUM_ERC721_SELECTORS 5
|
|
|
|
typedef enum {
|
|
APPROVE,
|
|
SET_APPROVAL_FOR_ALL,
|
|
TRANSFER,
|
|
SAFE_TRANSFER,
|
|
SAFE_TRANSFER_DATA,
|
|
} erc721_selector_t;
|
|
|
|
typedef enum {
|
|
FROM,
|
|
TO,
|
|
DATA,
|
|
TOKEN_ID,
|
|
OPERATOR,
|
|
APPROVED,
|
|
NONE,
|
|
} erc721_selector_field;
|
|
|
|
typedef struct erc721_context_t {
|
|
uint8_t address[ADDRESS_LENGTH];
|
|
uint8_t tokenId[INT256_LENGTH];
|
|
|
|
bool approved;
|
|
|
|
erc721_selector_field next_param;
|
|
uint8_t selectorIndex;
|
|
} erc721_context_t;
|
|
|
|
void handle_provide_parameter(void *parameters);
|
|
void handle_query_contract_ui(void *parameters); |