Skip to content

Commit 0fcea56

Browse files
authored
Merge pull request #13 from fbsobreira/UPDATE_TOKEN_NAME
Update token name
2 parents d95b33b + d0e4ef8 commit 0fcea56

File tree

10 files changed

+2173
-110
lines changed

10 files changed

+2173
-110
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.0.4
1+
0.1.0

signedList_Exchanges.txt

Lines changed: 152 additions & 0 deletions
Large diffs are not rendered by default.

signedList_TRC10.txt

Lines changed: 1581 additions & 0 deletions
Large diffs are not rendered by default.

signedList_TRC20.txt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{{0x41,0x38,0x43,0xC8,0xEC,0xF7,0x31,0x2F,0x5D,0xBC,0x17,0xB9,0x22,0x65,0xD7,0x7C,0xB6,0x73,0x21,0x2E,0x7A}, "$DEX ", 8},
2+
{{0x41,0x62,0xFC,0xF1,0x2E,0x16,0x6C,0xE4,0x27,0x75,0x7A,0xDC,0xA3,0x1A,0xF0,0xE5,0x9E,0x92,0xA2,0xE1,0x66}, "$PCB ", 18},
3+
{{0x41,0x65,0x0A,0xFD,0xF5,0x4A,0x3F,0x3D,0xEF,0x2C,0xB8,0x47,0xD5,0x24,0x00,0xB7,0xD6,0x32,0x07,0x27,0xFD}, "$DRS ", 6},
4+
{{0x41,0x70,0x3F,0x3B,0x26,0xD3,0x0E,0x10,0x82,0x67,0x33,0xB7,0x30,0xC1,0x18,0x6C,0x37,0xF5,0x4D,0x0A,0x93}, "$RET ", 6},
5+
{{0x41,0x57,0x41,0x38,0x56,0x2C,0xA8,0xBD,0x1D,0x35,0x06,0x8C,0x5B,0x21,0x27,0x96,0x10,0xC1,0xF5,0x83,0xC4}, "$DICE ", 6},
6+
{{0x41,0xDE,0xAA,0x5F,0x32,0x96,0x3C,0x91,0x9C,0x2A,0x5A,0x8F,0x84,0x82,0xCC,0x8C,0x92,0xF5,0x04,0xB8,0xB2}, "$BET ", 6},
7+
{{0x41,0x9F,0xC6,0xE2,0xD0,0x70,0xD0,0x1E,0x73,0x47,0x4D,0x47,0x3B,0x32,0xE4,0x18,0xC7,0xCD,0x9D,0x5D,0x5B}, "$FUN ", 6},
8+
{{0x41,0xF8,0xAD,0xE6,0x3F,0x62,0x94,0xB1,0xE3,0x25,0x6C,0x46,0x9C,0x05,0xA7,0xE0,0x8A,0xE6,0xF1,0x53,0x2C}, "$GOC ", 6},
9+
{{0x41,0x8A,0x81,0x02,0xD7,0xE2,0x48,0x30,0x67,0x6F,0x52,0x85,0xF4,0xB2,0x8F,0xAE,0xEE,0xB4,0xD8,0x70,0x8D}, "$AB ", 6},
10+
{{0x41,0xF6,0xE1,0xFE,0xF4,0x4C,0x47,0xDF,0xF0,0xAB,0x57,0xA3,0xA5,0x7F,0x7F,0xC3,0x86,0x2E,0x0D,0x85,0x2E}, "$BFC ", 6},
11+
{{0x41,0x0D,0x29,0x2C,0x98,0xA5,0xEC,0xA0,0x6C,0x20,0x85,0xFF,0xF9,0x93,0x99,0x64,0x23,0xCF,0x66,0xC9,0x3B}, "$WIN ", 6},
12+
{{0x41,0xF5,0xE0,0xAE,0xC5,0x39,0x95,0xFB,0x93,0x58,0x8C,0xA6,0x56,0xA9,0x59,0xAC,0x46,0x75,0x23,0xDB,0x83}, "$GAME ", 18},
13+
{{0x41,0x8D,0x0F,0xF4,0x2A,0x82,0xCA,0x54,0x54,0x1C,0x98,0x75,0x9A,0x99,0x95,0x1D,0x97,0x36,0xA5,0xDE,0x9F}, "$TWJ ", 8},
14+
{{0x41,0x1A,0x44,0xE6,0x76,0xD4,0x86,0x46,0x60,0xD9,0x84,0xF6,0xD1,0xF4,0xEB,0x06,0xD0,0xF5,0xCC,0x52,0x08}, "$ANTE ", 6},
15+
{{0x41,0x1A,0x32,0xD5,0x7D,0x10,0xD3,0x05,0x2E,0x43,0xB4,0xEB,0x67,0x20,0x8F,0x44,0x69,0x76,0xE4,0x02,0x09}, "$6KPEN ", 18},
16+
{{0x41,0xB8,0x07,0x5B,0x0F,0xB5,0x2B,0x7A,0x8D,0xF8,0x12,0x2D,0xDA,0x49,0x78,0x78,0x29,0x52,0x9A,0x4A,0xB7}, "$CFT ", 6},
17+
{{0x41,0x8B,0xE3,0x85,0xC9,0xC3,0x71,0x6E,0x28,0x63,0x70,0xAA,0x5D,0xB4,0xB6,0xF3,0x97,0x24,0x1D,0xFD,0xE6}, "$VCOIN ", 6},
18+
{{0x41,0x7E,0xA0,0x7B,0x5B,0xE5,0xA0,0xFE,0x26,0xA6,0x4A,0xCA,0xF4,0x51,0xC8,0xD8,0x65,0x3F,0xDB,0x56,0xB6}, "$REY ", 6},
19+
{{0x41,0xF8,0x2D,0x6D,0x39,0x8A,0x9B,0xA0,0xDA,0x8C,0x73,0x84,0xAE,0xA3,0x72,0x30,0xD2,0x68,0xCA,0x28,0x45}, "$PLAY ", 6},
20+
{{0x41,0x6E,0x0D,0x26,0xAD,0xF5,0x32,0x3F,0x5B,0x82,0xD5,0x71,0x43,0x54,0xDC,0x3C,0x68,0x70,0xAD,0xEE,0x7C}, "$RING ", 18},
21+
{{0x41,0x32,0x96,0x8E,0x93,0xDC,0x3A,0x56,0xEE,0xCF,0xF1,0x3E,0xDC,0xC4,0x00,0x9A,0xF4,0xEF,0x21,0xB0,0x7E}, "$BFB ", 8},
22+
{{0x41,0x82,0xCD,0x8B,0x6D,0x85,0x7A,0xE9,0xB6,0xBE,0xCD,0x7D,0xDF,0xC6,0x49,0x5F,0xCB,0x45,0x0D,0x39,0xC5}, "$MLT ", 6},
23+
{{0x41,0x14,0x29,0xF3,0xBE,0xF4,0x99,0x24,0x2C,0x2A,0x34,0x6E,0x32,0x20,0xFA,0x3F,0x94,0xF6,0xDD,0x46,0xC9}, "$BOG ", 4},
24+
{{0x41,0x14,0x18,0x3f,0x3b,0xbc,0xa4,0xae,0x9f,0xc1,0xde,0x55,0xb9,0xbb,0xe2,0xd0,0x71,0x94,0x2d,0xc1,0xa6}, "CCT ", 6},

src/helpers.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,27 +35,26 @@ void getAddressFromKey(cx_ecfp_public_key_t *publicKey, uint8_t *address,
3535
void getBase58FromAddres(uint8_t *address, uint8_t *out,
3636
cx_sha256_t* sha2) {
3737
uint8_t sha256[32];
38-
uint8_t checkSum[4];
3938
uint8_t addchecksum[ADDRESS_SIZE+4];
4039

4140
cx_sha256_init(sha2);
42-
cx_hash(sha2, CX_LAST, address, 21, sha256);
41+
cx_hash((cx_hash_t*)sha2, CX_LAST, address, 21, sha256);
4342
cx_sha256_init(sha2);
44-
cx_hash(sha2, CX_LAST, sha256, 32, sha256);
43+
cx_hash((cx_hash_t*)sha2, CX_LAST, sha256, 32, sha256);
4544

4645
os_memmove(addchecksum, address , ADDRESS_SIZE);
4746
os_memmove(addchecksum+ADDRESS_SIZE, sha256, 4);
4847

4948

50-
encode_base_58(&addchecksum[0],25,out,BASE58CHECK_ADDRESS_SIZE);
49+
encode_base_58(&addchecksum[0],25,(char *)out,BASE58CHECK_ADDRESS_SIZE);
5150

5251
}
5352

5453
void transactionHash(uint8_t *raw, uint16_t dataLength,
5554
uint8_t *out, cx_sha256_t* sha2) {
5655

5756
cx_sha256_init(sha2);
58-
cx_hash(sha2, CX_LAST, raw, dataLength, out);
57+
cx_hash((cx_hash_t*)sha2, CX_LAST, raw, dataLength, out);
5958
}
6059

6160
void signTransaction(transactionContext_t *transactionContext) {

src/main.c

Lines changed: 90 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#include "parse.h"
3131
#include "uint256.h"
3232

33+
#include "tokens.h"
3334

3435
extern bool fidoActivated;
3536

@@ -51,6 +52,7 @@ uint32_t set_result_get_publicKey(void);
5152
#define P1_FIRST 0x00
5253
#define P1_MORE 0x80
5354
#define P1_LAST 0x90
55+
#define P1_TRC10_NAME 0xA0
5456
#define P1_SIGN 0x10
5557

5658
#define OFFSET_CLA 0
@@ -71,7 +73,7 @@ cx_sha256_t sha2;
7173
volatile char fullAddress[BASE58CHECK_ADDRESS_SIZE+1];
7274
volatile char addressSummary[35];
7375
volatile char fullAmount[50];
74-
volatile char fullContract[50];
76+
volatile char fullContract[MAX_TOKEN_LENGTH];
7577
volatile char fullHash[HASH_SIZE*2+1];
7678
volatile char fullAmount2[50];
7779
volatile char exchangeContractDetail[50];
@@ -1587,7 +1589,7 @@ const bagl_element_t ui_approval_nanos[] = {
15871589
NULL,
15881590
NULL,
15891591
NULL},
1590-
{{BAGL_LABELINE, 0x02, 23, 26, 82, 12, 0x80 | 10, 0, 0, 0xFFFFFF, 0x000000,
1592+
{{BAGL_LABELINE, 0x02, 12, 28, 104, 12, 0x00 | 10, 0, 0, 0xFFFFFF, 0x000000,
15911593
BAGL_FONT_OPEN_SANS_EXTRABOLD_11px | BAGL_FONT_ALIGNMENT_CENTER, 26},
15921594
(char *)fullContract,
15931595
0,
@@ -1952,7 +1954,7 @@ const bagl_element_t ui_approval_exchange_withdraw_nanos[] = {
19521954

19531955
{{BAGL_LABELINE, 0x03, 0, 12, 128, 32, 0, 0, 0, 0xFFFFFF, 0x000000,
19541956
BAGL_FONT_OPEN_SANS_REGULAR_11px | BAGL_FONT_ALIGNMENT_CENTER, 0},
1955-
"Token ID",
1957+
"Token Name",
19561958
0,
19571959
0,
19581960
0,
@@ -2116,7 +2118,7 @@ const bagl_element_t ui_approval_exchange_transaction_nanos[] = {
21162118

21172119
{{BAGL_LABELINE, 0x03, 0, 12, 128, 32, 0, 0, 0, 0xFFFFFF, 0x000000,
21182120
BAGL_FONT_OPEN_SANS_REGULAR_11px | BAGL_FONT_ALIGNMENT_CENTER, 0},
2119-
"Token ID",
2121+
"Token Name",
21202122
0,
21212123
0,
21222124
0,
@@ -2475,7 +2477,7 @@ void handleGetPublicKey(uint8_t p1, uint8_t p2, uint8_t *dataBuffer,
24752477
#elif defined(TARGET_NANOS)
24762478
ux_step = 0;
24772479
ux_step_count = 2;
2478-
UX_DISPLAY(ui_address_nanos, ui_address_prepro);
2480+
UX_DISPLAY(ui_address_nanos, (bagl_element_callback_t) ui_address_prepro);
24792481
#endif // #if TARGET
24802482

24812483
*flags |= IO_ASYNCH_REPLY;
@@ -2517,6 +2519,11 @@ void handleSign(uint8_t p1, uint8_t p2, uint8_t *workBuffer,
25172519
}
25182520

25192521
//Parse contract type
2522+
// Prevent buffer overflow
2523+
if (dataLength>MAX_RAW_TX){
2524+
PRINTF("RawTX buffer overflow\n");
2525+
THROW(0x6A80);
2526+
}
25202527
// Load raw Data
25212528
os_memmove(tmpCtx.transactionContext.rawTx, workBuffer, dataLength);
25222529
tmpCtx.transactionContext.rawTxLength = dataLength;
@@ -2527,7 +2534,43 @@ void handleSign(uint8_t p1, uint8_t p2, uint8_t *workBuffer,
25272534
}
25282535
cx_sha256_init(&sha2); //init sha
25292536

2530-
} else if ((p1 != P1_MORE) && (p1 != P1_LAST)) {
2537+
} else if ((p1&0xF0) == P1_TRC10_NAME) {
2538+
switch (txContent.contractType){
2539+
case 2: // transafer asset
2540+
case 41: // create exchange
2541+
// Max 2 Tokens Name
2542+
if ((p1&0x07)>1)
2543+
THROW(0x6A80);
2544+
// Decode Token name and validate signature
2545+
if (parseTokenName((p1&0x07),workBuffer, dataLength, &txContent) != USTREAM_FINISHED) {
2546+
PRINTF("Unexpected parser status\n");
2547+
THROW(0x6A80);
2548+
}
2549+
// if not last token name, return
2550+
if (!(p1&0x08)) THROW(0x9000);
2551+
dataLength = 0;
2552+
2553+
break;
2554+
case 42: // exchange Inject
2555+
case 43: // exchange withdraw
2556+
case 44: // exchange transaction
2557+
// Max 1 pair set
2558+
if ((p1&0x07)>0)
2559+
THROW(0x6A80);
2560+
// error if not last
2561+
if (!(p1&0x08)) THROW(0x6A80);
2562+
// Decode Token name and validate signature
2563+
if (parseExchange((p1&0x07),workBuffer, dataLength, &txContent) != USTREAM_FINISHED) {
2564+
PRINTF("Unexpected parser status\n");
2565+
THROW(0x6A80);
2566+
}
2567+
dataLength = 0;
2568+
break;
2569+
default:
2570+
// Error if any other contract
2571+
THROW(0x6A80);
2572+
}
2573+
}else if ((p1 != P1_MORE) && (p1 != P1_LAST)) {
25312574
THROW(0x6B00);
25322575
}else {
25332576

@@ -2541,126 +2584,132 @@ void handleSign(uint8_t p1, uint8_t p2, uint8_t *workBuffer,
25412584
case 2: // TRC10 Transfer
25422585
case 31: // TRC20 Transfer
25432586
// get Hash
2544-
cx_hash((cx_hash_t *)&sha2, CX_LAST, tmpCtx.transactionContext.rawTx,
2545-
tmpCtx.transactionContext.rawTxLength, tmpCtx.transactionContext.hash);
2546-
2587+
cx_hash((cx_hash_t *)&sha2, 0, workBuffer, dataLength, NULL);
2588+
if ((p1 == P1_MORE) || (p1 == P1_FIRST)) {
2589+
THROW(0x9000);
2590+
}
2591+
cx_hash((cx_hash_t *)&sha2, CX_LAST, workBuffer,
2592+
0, tmpCtx.transactionContext.hash);
2593+
25472594
if (txContent.contractType==31){
25482595
convertUint256BE(txContent.TRC20Amount, 32, &uint256);
25492596
tostring256(&uint256, 10, (char *)fullAmount2, sizeof(fullAmount2));
2550-
if (!adjustDecimals((char *)fullAmount2, strlen(fullAmount2), (char *)fullAmount, sizeof(fullAmount), txContent.decimals))
2597+
if (!adjustDecimals((char *)fullAmount2, strlen((const char *)fullAmount2), (char *)fullAmount, sizeof(fullAmount), txContent.decimals[0]))
25512598
THROW(0x6B00);
25522599
}else
2553-
print_amount(txContent.amount,(void *)fullAmount,sizeof(fullAmount), (txContent.contractType==1)?SUN_DIG:0);
2600+
print_amount(txContent.amount,(void *)fullAmount,sizeof(fullAmount), (txContent.contractType==1)?SUN_DIG:txContent.decimals[0]);
25542601

25552602
getBase58FromAddres(txContent.destination,
25562603
(void *)fullAddress, &sha2);
25572604
fullAddress[BASE58CHECK_ADDRESS_SIZE]='\0';
2558-
2605+
25592606
// get token name
2560-
os_memmove((void *)fullContract, txContent.tokenName, txContent.tokenNameLength+1);
2607+
os_memmove((void *)fullContract, txContent.tokenNames[0], txContent.tokenNamesLength[0]+1);
25612608

25622609
#if defined(TARGET_BLUE)
25632610
G_ui_approval_blue_state = APPROVAL_TRANSFER;
25642611
ui_approval_transaction_blue_init();
25652612
#elif defined(TARGET_NANOS)
25662613
ux_step = 0;
25672614
ux_step_count = 4;
2568-
UX_DISPLAY(ui_approval_nanos, ui_approval_prepro);
2615+
UX_DISPLAY(ui_approval_nanos,(bagl_element_callback_t) ui_approval_prepro);
25692616
#endif // #if TARGET_ID
25702617

25712618
break;
25722619
case 41: // exchange create
2573-
cx_hash(&sha2, 0, workBuffer, dataLength, NULL);
2620+
cx_hash((cx_hash_t *)&sha2, 0, workBuffer, dataLength, NULL);
25742621
if ((p1 == P1_MORE) || (p1 == P1_FIRST)) {
25752622
THROW(0x9000);
25762623
}
2577-
cx_hash(&sha2, CX_LAST, workBuffer,
2624+
cx_hash((cx_hash_t *)&sha2, CX_LAST, workBuffer,
25782625
0, tmpCtx.transactionContext.hash);
25792626

2580-
os_memmove((void *)fullContract, txContent.tokenName, txContent.tokenNameLength+1);
2581-
os_memmove((void *)fullAddress, txContent.tokenName2, txContent.tokenName2Length+1);
2582-
print_amount(txContent.amount,(void *)fullAmount,sizeof(fullAmount), (strncmp(txContent.tokenName, "TRX", 3)==0)?SUN_DIG:0);
2583-
print_amount(txContent.amount2,(void *)fullAmount2,sizeof(fullAmount2), (strncmp(txContent.tokenName2, "TRX", 3)==0)?SUN_DIG:0);
2627+
os_memmove((void *)fullContract, txContent.tokenNames[0], txContent.tokenNamesLength[0]+1);
2628+
os_memmove((void *)fullAddress, txContent.tokenNames[1], txContent.tokenNamesLength[1]+1);
2629+
print_amount(txContent.amount,(void *)fullAmount,sizeof(fullAmount), (strncmp((const char *)txContent.tokenNames[0], "TRX", 3)==0)?SUN_DIG:txContent.decimals[0]);
2630+
print_amount(txContent.amount2,(void *)fullAmount2,sizeof(fullAmount2), (strncmp((const char *)txContent.tokenNames[1], "TRX", 3)==0)?SUN_DIG:txContent.decimals[1]);
25842631
// write exchange contract type
2585-
if (!setExchangeContractDetail(txContent.contractType, exchangeContractDetail)) THROW(0x6A80);
2632+
if (!setExchangeContractDetail(txContent.contractType, (void*)exchangeContractDetail)) THROW(0x6A80);
25862633

25872634
#if defined(TARGET_BLUE)
25882635
G_ui_approval_blue_state = APPROVAL_TRANSACTION;
25892636
ui_approval_exchange_create_blue_init();
25902637
#elif defined(TARGET_NANOS)
25912638
ux_step = 0;
25922639
ux_step_count = 5;
2593-
UX_DISPLAY(ui_approval_exchange_nanos, ui_approval_exchange_prepro);
2640+
UX_DISPLAY(ui_approval_exchange_nanos,(bagl_element_callback_t) ui_approval_exchange_prepro);
25942641
#endif // #if TARGET_ID
25952642
break;
25962643
case 42: // exchange Inject
25972644
case 43: // exchange withdraw
2598-
cx_hash(&sha2, 0, workBuffer, dataLength, NULL);
2645+
cx_hash((cx_hash_t *)&sha2, 0, workBuffer, dataLength, NULL);
25992646
if ((p1 == P1_MORE) || (p1 == P1_FIRST)) {
26002647
THROW(0x9000);
26012648
}
2602-
cx_hash(&sha2, CX_LAST, workBuffer,
2649+
cx_hash((cx_hash_t *)&sha2, CX_LAST, workBuffer,
26032650
0, tmpCtx.transactionContext.hash);
26042651

2605-
os_memmove((void *)fullContract, txContent.tokenName, txContent.tokenNameLength+1);
2652+
os_memmove((void *)fullContract, txContent.tokenNames[0], txContent.tokenNamesLength[0]+1);
26062653
print_amount(txContent.exchangeID,(void *)fullAddress,sizeof(fullAddress), 0);
2607-
print_amount(txContent.amount,(void *)fullAmount,sizeof(fullAmount), (strncmp(txContent.tokenName, "TRX", 3)==0)?SUN_DIG:0);
2654+
print_amount(txContent.amount,(void *)fullAmount,sizeof(fullAmount), (strncmp((const char *)txContent.tokenNames[0], "TRX", 3)==0)?SUN_DIG:txContent.decimals[0]);
26082655
// write exchange contract type
2609-
if (!setExchangeContractDetail(txContent.contractType, exchangeContractDetail)) THROW(0x6A80);
2656+
if (!setExchangeContractDetail(txContent.contractType, (void*)exchangeContractDetail)) THROW(0x6A80);
26102657

26112658
#if defined(TARGET_BLUE)
26122659
G_ui_approval_blue_state = APPROVAL_TRANSACTION;
26132660
ui_approval_exchange_withdraw_blue_init();
26142661
#elif defined(TARGET_NANOS)
26152662
ux_step = 0;
26162663
ux_step_count = 4;
2617-
UX_DISPLAY(ui_approval_exchange_withdraw_nanos, ui_approval_exchange_withdraw_prepro);
2664+
UX_DISPLAY(ui_approval_exchange_withdraw_nanos,(bagl_element_callback_t) ui_approval_exchange_withdraw_prepro);
26182665
#endif // #if TARGET_ID
26192666
break;
26202667
case 44: // exchange transaction
2621-
cx_hash(&sha2, 0, workBuffer, dataLength, NULL);
2668+
cx_hash((cx_hash_t *)&sha2, 0, workBuffer, dataLength, NULL);
26222669
if ((p1 == P1_MORE) || (p1 == P1_FIRST)) {
26232670
THROW(0x9000);
26242671
}
2625-
cx_hash(&sha2, CX_LAST, workBuffer,
2672+
cx_hash((cx_hash_t *)&sha2, CX_LAST, workBuffer,
26262673
0, tmpCtx.transactionContext.hash);
26272674

2628-
os_memmove((void *)fullContract, txContent.tokenName, txContent.tokenNameLength+1);
2675+
//os_memmove((void *)fullContract, txContent.tokenNames[0], txContent.tokenNamesLength[0]+1);
2676+
snprintf((char *)fullContract, sizeof(fullContract), "%s -> %s", txContent.tokenNames[0], txContent.tokenNames[1]);
2677+
26292678
print_amount(txContent.exchangeID,(void *)fullAddress,sizeof(fullAddress), 0);
2630-
print_amount(txContent.amount,(void *)fullAmount,sizeof(fullAmount), (strncmp(txContent.tokenName, "TRX", 3)==0)?SUN_DIG:0);
2631-
print_amount(txContent.amount2,(void *)fullAmount2,sizeof(fullAmount2), (strncmp(txContent.tokenName, "TRX", 3)==0)?0:SUN_DIG);
2679+
print_amount(txContent.amount,(void *)fullAmount,sizeof(fullAmount), txContent.decimals[0]);
2680+
print_amount(txContent.amount2,(void *)fullAmount2,sizeof(fullAmount2), txContent.decimals[1]);
26322681
// write exchange contract type
2633-
if (!setExchangeContractDetail(txContent.contractType, exchangeContractDetail)) THROW(0x6A80);
2682+
if (!setExchangeContractDetail(txContent.contractType, (void*)exchangeContractDetail)) THROW(0x6A80);
26342683

26352684
#if defined(TARGET_BLUE)
26362685
G_ui_approval_blue_state = APPROVAL_TRANSACTION;
26372686
ui_approval_exchange_transaction_blue_init();
26382687
#elif defined(TARGET_NANOS)
26392688
ux_step = 0;
26402689
ux_step_count = 5;
2641-
UX_DISPLAY(ui_approval_exchange_transaction_nanos, ui_approval_exchange_transaction_prepro);
2690+
UX_DISPLAY(ui_approval_exchange_transaction_nanos, (bagl_element_callback_t)ui_approval_exchange_transaction_prepro);
26422691
#endif // #if TARGET_ID
26432692
break;
26442693
default:
2645-
cx_hash(&sha2, 0, workBuffer, dataLength, NULL);
2694+
cx_hash((cx_hash_t *)&sha2, 0, workBuffer, dataLength, NULL);
26462695
if ((p1 == P1_MORE) || (p1 == P1_FIRST)) {
26472696
THROW(0x9000);
26482697
}
2649-
cx_hash(&sha2, CX_LAST, workBuffer,
2698+
cx_hash((cx_hash_t *)&sha2, CX_LAST, workBuffer,
26502699
0, tmpCtx.transactionContext.hash);
26512700

26522701
// Write fullHash
2653-
array_hexstr(fullHash, tmpCtx.transactionContext.hash, 32);
2702+
array_hexstr((char *)fullHash, tmpCtx.transactionContext.hash, 32);
26542703
// write contract type
2655-
if (!setContractType(txContent.contractType, fullContract)) THROW(0x6A80);
2704+
if (!setContractType(txContent.contractType, (void*)fullContract)) THROW(0x6A80);
26562705

26572706
#if defined(TARGET_BLUE)
26582707
G_ui_approval_blue_state = APPROVAL_TRANSACTION;
26592708
ui_approval_simple_transaction_blue_init();
26602709
#elif defined(TARGET_NANOS)
26612710
ux_step = 0;
26622711
ux_step_count = 3;
2663-
UX_DISPLAY(ui_approval_simple_nanos, ui_approval_simple_prepro);
2712+
UX_DISPLAY(ui_approval_simple_nanos,(bagl_element_callback_t) ui_approval_simple_prepro);
26642713
#endif // #if TARGET_ID
26652714
break;
26662715
}
@@ -2714,7 +2763,7 @@ void handleApdu(volatile unsigned int *flags, volatile unsigned int *tx) {
27142763
G_io_apdu_buffer + OFFSET_CDATA,
27152764
G_io_apdu_buffer[OFFSET_LC], flags, tx);
27162765
break;
2717-
2766+
27182767
case INS_GET_APP_CONFIGURATION:
27192768
// Request App configuration
27202769
handleGetAppConfiguration(

0 commit comments

Comments
 (0)