135 lines
5.4 KiB
C
135 lines
5.4 KiB
C
#ifndef _APDU_CONSTANTS_H_
|
|
#define _APDU_CONSTANTS_H_
|
|
|
|
#include "shared_context.h"
|
|
|
|
#define APP_FLAG_DATA_ALLOWED 0x01
|
|
#define APP_FLAG_EXTERNAL_TOKEN_NEEDED 0x02
|
|
|
|
#define CLA 0xE0
|
|
#define INS_GET_PUBLIC_KEY 0x02
|
|
#define INS_SIGN 0x04
|
|
#define INS_GET_APP_CONFIGURATION 0x06
|
|
#define INS_SIGN_PERSONAL_MESSAGE 0x08
|
|
#define INS_PROVIDE_ERC20_TOKEN_INFORMATION 0x0A
|
|
#define INS_SIGN_EIP_712_MESSAGE 0x0C
|
|
#define INS_GET_ETH2_PUBLIC_KEY 0x0E
|
|
#define INS_SET_ETH2_WITHDRAWAL_INDEX 0x10
|
|
#define INS_SET_EXTERNAL_PLUGIN 0x12
|
|
#define INS_PROVIDE_NFT_INFORMATION 0x14
|
|
#define INS_SET_PLUGIN 0x16
|
|
#define INS_PERFORM_PRIVACY_OPERATION 0x18
|
|
#define INS_EIP712_STRUCT_DEF 0x1A
|
|
#define INS_EIP712_STRUCT_IMPL 0x1C
|
|
#define INS_EIP712_FILTERING 0x1E
|
|
#define INS_ENS_GET_CHALLENGE 0x20
|
|
#define INS_ENS_PROVIDE_INFO 0x22
|
|
#define P1_CONFIRM 0x01
|
|
#define P1_NON_CONFIRM 0x00
|
|
#define P2_NO_CHAINCODE 0x00
|
|
#define P2_CHAINCODE 0x01
|
|
#define P1_FIRST 0x00
|
|
#define P1_MORE 0x80
|
|
#define P2_EIP712_LEGACY_IMPLEM 0x00
|
|
#define P2_EIP712_FULL_IMPLEM 0x01
|
|
|
|
#define COMMON_CLA 0xB0
|
|
|
|
#define APDU_RESPONSE_OK 0x9000
|
|
#define APDU_RESPONSE_ERROR_NO_INFO 0x6a00
|
|
#define APDU_RESPONSE_INVALID_DATA 0x6a80
|
|
#define APDU_RESPONSE_INSUFFICIENT_MEMORY 0x6a84
|
|
#define APDU_RESPONSE_INVALID_INS 0x6d00
|
|
#define APDU_RESPONSE_INVALID_P1_P2 0x6b00
|
|
#define APDU_RESPONSE_CONDITION_NOT_SATISFIED 0x6985
|
|
#define APDU_RESPONSE_REF_DATA_NOT_FOUND 0x6a88
|
|
#define APDU_RESPONSE_UNKNOWN 0x6f00
|
|
|
|
enum { OFFSET_CLA = 0, OFFSET_INS, OFFSET_P1, OFFSET_P2, OFFSET_LC, OFFSET_CDATA };
|
|
|
|
#define ERR_APDU_EMPTY 0x6982
|
|
#define ERR_APDU_SIZE_MISMATCH 0x6983
|
|
|
|
void handleGetPublicKey(uint8_t p1,
|
|
uint8_t p2,
|
|
const uint8_t *dataBuffer,
|
|
uint8_t dataLength,
|
|
unsigned int *flags,
|
|
unsigned int *tx);
|
|
void handleProvideErc20TokenInformation(uint8_t p1,
|
|
uint8_t p2,
|
|
const uint8_t *workBuffer,
|
|
uint8_t dataLength,
|
|
unsigned int *flags,
|
|
unsigned int *tx);
|
|
void handleProvideNFTInformation(uint8_t p1,
|
|
uint8_t p2,
|
|
const uint8_t *dataBuffer,
|
|
uint8_t dataLength,
|
|
unsigned int *flags,
|
|
unsigned int *tx);
|
|
void handleSign(uint8_t p1,
|
|
uint8_t p2,
|
|
const uint8_t *dataBuffer,
|
|
uint8_t dataLength,
|
|
unsigned int *flags,
|
|
unsigned int *tx);
|
|
void handleGetAppConfiguration(uint8_t p1,
|
|
uint8_t p2,
|
|
const uint8_t *dataBuffer,
|
|
uint8_t dataLength,
|
|
unsigned int *flags,
|
|
unsigned int *tx);
|
|
bool handleSignPersonalMessage(uint8_t p1,
|
|
uint8_t p2,
|
|
const uint8_t *const payload,
|
|
uint8_t length);
|
|
void handleSignEIP712Message_v0(uint8_t p1,
|
|
uint8_t p2,
|
|
const uint8_t *dataBuffer,
|
|
uint8_t dataLength,
|
|
unsigned int *flags,
|
|
unsigned int *tx);
|
|
|
|
void handleSetExternalPlugin(uint8_t p1,
|
|
uint8_t p2,
|
|
const uint8_t *workBuffer,
|
|
uint8_t dataLength,
|
|
unsigned int *flags,
|
|
unsigned int *tx);
|
|
|
|
void handleSetPlugin(uint8_t p1,
|
|
uint8_t p2,
|
|
const uint8_t *workBuffer,
|
|
uint8_t dataLength,
|
|
unsigned int *flags,
|
|
unsigned int *tx);
|
|
|
|
void handlePerformPrivacyOperation(uint8_t p1,
|
|
uint8_t p2,
|
|
const uint8_t *workBuffer,
|
|
uint8_t dataLength,
|
|
unsigned int *flags,
|
|
unsigned int *tx);
|
|
|
|
#ifdef HAVE_ETH2
|
|
|
|
void handleGetEth2PublicKey(uint8_t p1,
|
|
uint8_t p2,
|
|
const uint8_t *dataBuffer,
|
|
uint8_t dataLength,
|
|
unsigned int *flags,
|
|
unsigned int *tx);
|
|
void handleSetEth2WinthdrawalIndex(uint8_t p1,
|
|
uint8_t p2,
|
|
uint8_t *dataBuffer,
|
|
uint8_t dataLength,
|
|
unsigned int *flags,
|
|
unsigned int *tx);
|
|
|
|
#endif
|
|
|
|
extern uint16_t apdu_response_code;
|
|
|
|
#endif // _APDU_CONSTANTS_H_
|