Add DGB, Hcash, QTUM

This commit is contained in:
BTChip github 2017-11-30 17:18:29 +01:00
parent 132047dc9f
commit 15ba831eed
No known key found for this signature in database
GPG Key ID: 48BCF826EBFA4D17
19 changed files with 142 additions and 33 deletions

View File

@ -20,11 +20,12 @@ $(error Environment variable BOLOS_SDK is not set)
endif
include $(BOLOS_SDK)/Makefile.defines
APP_LOAD_PARAMS=--appFlags 0x50 --path "" --curve secp256k1 $(COMMON_LOAD_PARAMS)
APP_PATH = ""
APP_LOAD_PARAMS=--appFlags 0x50 --curve secp256k1 $(COMMON_LOAD_PARAMS)
APPVERSION_M=1
APPVERSION_N=1
APPVERSION_P=16
APPVERSION_P=17
APPVERSION=$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)
# ifndef COIN
@ -35,68 +36,95 @@ ifeq ($(COIN),bitcoin_testnet)
# Bitcoin testnet
DEFINES += BTCHIP_P2PKH_VERSION=111 BTCHIP_P2SH_VERSION=196 BTCHIP_COIN_FAMILY=1 BTCHIP_COINID=\"Bitcoin\" COINID_UPCASE=\"BITCOIN\" COLOR_HDR=0xFCB653 COLOR_DB=0xFEDBA9 COINID_NAME=\"Bitcoin\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"TEST\" NATIVE_SEGWIT_PREFIX=\"tb\" COIN_BITCOIN_TESTNET HAVE_SEGWIT_CHANGE_SUPPORT
APPNAME ="Bitcoin Test"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),bitcoin)
# Bitcoin mainnet
DEFINES += BTCHIP_P2PKH_VERSION=0 BTCHIP_P2SH_VERSION=5 BTCHIP_COIN_FAMILY=1 BTCHIP_COINID=\"Bitcoin\" COINID_UPCASE=\"BITCOIN\" COLOR_HDR=0xFCB653 COLOR_DB=0xFEDBA9 COINID_NAME=\"Bitcoin\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"BTC\" NATIVE_SEGWIT_PREFIX=\"bc\" COIN_BITCOIN HAVE_SEGWIT_CHANGE_SUPPORT
APPNAME ="Bitcoin"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),bitcoin_cash)
# Bitcoin cash
DEFINES += BTCHIP_P2PKH_VERSION=0 BTCHIP_P2SH_VERSION=5 BTCHIP_COIN_FAMILY=1 BTCHIP_COINID=\"Bitcoin\" COINID_UPCASE=\"BITCOINCASH\" COLOR_HDR=0x85bb65 COLOR_DB=0xc2ddb2 COINID_NAME=\"BitcoinCash\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"BCH\" COIN_BITCOIN_CASH COIN_FORKID=0
APPNAME ="Bitcoin Cash"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),bitcoin_gold)
# Bitcoin Gold
DEFINES += BTCHIP_P2PKH_VERSION=38 BTCHIP_P2SH_VERSION=23 BTCHIP_COIN_FAMILY=1 BTCHIP_COINID=\"Bitcoin\\x20Gold\" COINID_UPCASE=\"BITCOINGOLD\" COLOR_HDR=0x85bb65 COLOR_DB=0xc2ddb2 COINID_NAME=\"BitcoinGold\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"BTG\" COIN_BITCOIN_GOLD HAVE_SEGWIT_CHANGE_SUPPORT COIN_FORKID=79
APPNAME ="Bitcoin Gold"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),litecoin)
# Litecoin
DEFINES += BTCHIP_P2PKH_VERSION=48 BTCHIP_P2SH_VERSION=50 BTCHIP_COIN_FAMILY=1 BTCHIP_COINID=\"Litecoin\" COINID_UPCASE=\"LITECOIN\" COLOR_HDR=0xCCCCCC COLOR_DB=0xE6E6E6 COINID_NAME=\"Litecoin\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"LTC\" COIN_LITECOIN HAVE_SEGWIT_CHANGE_SUPPORT
APPNAME ="Litecoin"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),dogecoin)
# Doge
DEFINES += BTCHIP_P2PKH_VERSION=30 BTCHIP_P2SH_VERSION=22 BTCHIP_COIN_FAMILY=1 BTCHIP_COINID=\"Dogecoin\" COINID_UPCASE=\"DOGECOIN\" COLOR_HDR=0x65D196 COLOR_DB=0xB2E8CB COINID_NAME=\"Dogecoin\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"DOGE\" COIN_DOGE
APPNAME ="Dogecoin"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),dash)
# Dash
DEFINES += BTCHIP_P2PKH_VERSION=76 BTCHIP_P2SH_VERSION=16 BTCHIP_COIN_FAMILY=1 BTCHIP_COINID=\"DarkCoin\" COINID_UPCASE=\"DASH\" COLOR_HDR=0x0E76AA COLOR_DB=0x87BBD5 COINID_NAME=\"Dash\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"DASH\" COIN_DASH
APPNAME ="Dash"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),zcash)
# Zcash
DEFINES += BTCHIP_P2PKH_VERSION=7352 BTCHIP_P2SH_VERSION=7357 BTCHIP_COIN_FAMILY=1 BTCHIP_COINID=\"Zcash\" COINID_UPCASE=\"ZCASH\" COLOR_HDR=0x3790CA COLOR_DB=0x9BC8E5 COINID_NAME=\"Zcash\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"ZEC\" COIN_ZCASH
APPNAME ="Zcash"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),komodo)
# Komodo
DEFINES += BTCHIP_P2PKH_VERSION=60 BTCHIP_P2SH_VERSION=85 BTCHIP_COIN_FAMILY=1 BTCHIP_COINID=\"Komodo\" COINID_UPCASE=\"KMD\" COLOR_HDR=0x326464 COLOR_DB=0x99b2b2 COINID_NAME=\"Komodo\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"KMD\" COIN_KOMODO
APPNAME ="Komodo"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),stratis)
# Stratis
DEFINES += BTCHIP_P2PKH_VERSION=63 BTCHIP_P2SH_VERSION=125 BTCHIP_COIN_FAMILY=2 BTCHIP_COINID=\"Stratis\" COINID_UPCASE=\"STRAT\" COLOR_HDR=0x3790CA COLOR_DB=0x9BC8E5 COINID_NAME=\"Stratis\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"STRAT\" COIN_STRATIS HAVE_PEERCOIN_SUPPORT
APPNAME ="Stratis"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),peercoin)
# Peercoin
DEFINES += BTCHIP_P2PKH_VERSION=55 BTCHIP_P2SH_VERSION=117 BTCHIP_COIN_FAMILY=2 BTCHIP_COINID=\"Peercoin\" COINID_UPCASE=\"PPC\" COLOR_HDR=0x3790CA COLOR_DB=0x9BC8E5 COINID_NAME=\"Peercoin\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"PPC\" COIN_PEERCOIN HAVE_PEERCOIN_SUPPORT HAVE_PEERCOIN_UNITS
APPNAME ="Peercoin"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),posw)
DEFINES += BTCHIP_P2PKH_VERSION=55 BTCHIP_P2SH_VERSION=85 BTCHIP_COIN_FAMILY=2 BTCHIP_COINID=\"PoSWallet\" COINID_UPCASE=\"POSW\" COLOR_HDR=0x23273D COLOR_DB=0x91939E COINID_NAME=\"PoSW\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"POSW\" COIN_POSW HAVE_PEERCOIN_SUPPORT
APPNAME ="PoSW"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),pivx)
# PivX
DEFINES += BTCHIP_P2PKH_VERSION=30 BTCHIP_P2SH_VERSION=13 BTCHIP_COIN_FAMILY=1 BTCHIP_COINID=\"DarkNet\" COINID_UPCASE=\"PIVX\" COLOR_HDR=0x46385D COLOR_DB=0x9E96AA COINID_NAME=\"PivX\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"PIV\" COIN_PIVX
APPNAME ="PivX"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),stealthcoin)
# Stealthcoin
DEFINES += BTCHIP_P2PKH_VERSION=62 BTCHIP_P2SH_VERSION=85 BTCHIP_COIN_FAMILY=2 BTCHIP_COINID=\"StealthCoin\" COINID_UPCASE=\"STEALTHCOIN\" COLOR_HDR=0x000000 COLOR_DB=0x808080 COINID_NAME=\"Stealthcoin\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"XST\" COIN_STEALTHCOIN HAVE_PEERCOIN_SUPPORT HAVE_PEERCOIN_UNITS
APPNAME ="Stealthcoin"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),viacoin)
# Viacoin
DEFINES += BTCHIP_P2PKH_VERSION=71 BTCHIP_P2SH_VERSION=33 BTCHIP_COIN_FAMILY=1 BTCHIP_COINID=\"Viacoin\" COINID_UPCASE=\"VIACOIN\" COLOR_HDR=0x414141 COLOR_DB=0xA0A0A0 COINID_NAME=\"Viacoin\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"VIA\" COIN_VIACOIN HAVE_SEGWIT_CHANGE_SUPPORT
APPNAME ="Viacoin"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),vertcoin)
# Vertcoin
DEFINES += BTCHIP_P2PKH_VERSION=71 BTCHIP_P2SH_VERSION=5 BTCHIP_COIN_FAMILY=1 BTCHIP_COINID=\"Vertcoin\" COINID_UPCASE=\"VERTCOIN\" COLOR_HDR=0x1B5C2E COLOR_DB=0x8DAE97 COINID_NAME=\"Vertcoin\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"VTC\" COIN_VERTCOIN HAVE_SEGWIT_CHANGE_SUPPORT
APPNAME ="Vertcoin"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),digibyte)
DEFINES += BTCHIP_P2PKH_VERSION=30 BTCHIP_P2SH_VERSION=5 BTCHIP_COIN_FAMILY=1 BTCHIP_COINID=\"DigiByte\" COINID_UPCASE=\"DIGIBYTE\" COLOR_HDR=0x2864AE COLOR_DB=0x94B2D7 COINID_NAME=\"DigiByte\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"DBG\" COIN_DIGIBYTE HAVE_SEGWIT_CHANGE_SUPPORT
APPNAME ="Digibyte"
APP_LOAD_PARAMS += --path $(APP_PATH)
else ifeq ($(COIN),qtum)
# Qtum
DEFINES += BTCHIP_P2PKH_VERSION=58 BTCHIP_P2SH_VERSION=50 BTCHIP_COIN_FAMILY=3 BTCHIP_COINID=\"Qtum\" COINID_UPCASE=\"QTUM\" COLOR_HDR=0x2E9AD0 COLOR_DB=0x97CDE8 COINID_NAME=\"QTUM\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"QTUM\" COIN_QTUM HAVE_QTUM_SUPPORT
APPNAME ="Qtum"
APP_LOAD_PARAMS += --path "44'/88'" --path "0'/45342'" --path "20698'/3053'/12648430'"
else ifeq ($(COIN),hcash)
DEFINES += BTCHIP_P2PKH_VERSION=40 BTCHIP_P2SH_VERSION=100 BTCHIP_COIN_FAMILY=2 BTCHIP_COINID=\"HShare\" COINID_UPCASE=\"HCASH\" COLOR_HDR=0x57448D COLOR_DB=0xABA2C6 COINID_NAME=\"HCash\" COINID=$(COIN) BTCHIP_COINID_SHORT=\"HCASH\" COIN_HCASH HAVE_PEERCOIN_SUPPORT
else
ifeq ($(filter clean,$(MAKECMDGOALS)),)
$(error Unsupported COIN - use bitcoin_testnet, bitcoin, bitcoin_cash, bitcoin_gold, litecoin, dogecoin, dash, zcash, komodo, stratis, peercoin, posw, pivx, viacoin, vertcoin, stealthcoin)
$(error Unsupported COIN - use bitcoin_testnet, bitcoin, bitcoin_cash, bitcoin_gold, litecoin, dogecoin, dash, zcash, komodo, stratis, peercoin, posw, pivx, viacoin, vertcoin, stealthcoin, digibyte, qtum, hcash)
endif
endif

BIN
blue_app_digibyte.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

BIN
blue_app_hcash.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

BIN
blue_app_qtum.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 590 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

BIN
glyphs/blue_badge_hcash.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 B

BIN
glyphs/blue_badge_qtum.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
glyphs/nanos_badge_qtum.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -36,6 +36,9 @@ enum btchip_family_e {
#ifdef HAVE_PEERCOIN_SUPPORT
BTCHIP_FAMILY_PEERCOIN = 0x02
#endif
#ifdef HAVE_QTUM_SUPPORT
BTCHIP_FAMILY_QTUM = 0x03
#endif
};
struct btchip_config_s {

View File

@ -31,6 +31,11 @@ unsigned char btchip_output_script_is_p2sh(unsigned char *buffer);
unsigned char btchip_output_script_is_op_return(unsigned char *buffer);
unsigned char btchip_output_script_is_native_witness(unsigned char *buffer);
#ifdef HAVE_QTUM_SUPPORT
unsigned char btchip_output_script_is_op_create(unsigned char *buffer);
unsigned char btchip_output_script_is_op_call(unsigned char *buffer);
#endif
void btchip_sleep16(unsigned short delay);
void btchip_sleep32(unsigned long int delayEach, unsigned long int delayRepeat);

BIN
nanos_app_digibyte.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
nanos_app_hcash.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
nanos_app_qtum.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -55,6 +55,9 @@ static bool check_output_displayable() {
bool displayable = true;
unsigned char amount[8], isOpReturn, isP2sh, isNativeSegwit, j,
nullAmount = 1;
#ifdef HAVE_QTUM_SUPPORT
unsigned char isOpCreate, isOpCall;
#endif
for (j = 0; j < 8; j++) {
if (btchip_context_D.currentOutput[j] != 0) {
nullAmount = 0;
@ -71,8 +74,17 @@ static bool check_output_displayable() {
isP2sh = btchip_output_script_is_p2sh(btchip_context_D.currentOutput + 8);
isNativeSegwit = btchip_output_script_is_native_witness(
btchip_context_D.currentOutput + 8);
#ifdef HAVE_QTUM_SUPPORT
isOpCreate =
btchip_output_script_is_op_create(btchip_context_D.currentOutput + 8);
isOpCall =
btchip_output_script_is_op_call(btchip_context_D.currentOutput + 8);
if (!btchip_output_script_is_regular(btchip_context_D.currentOutput + 8) &&
!isP2sh && !(nullAmount && isOpReturn) && !isOpCreate && !isOpCall) {
#else
if (!btchip_output_script_is_regular(btchip_context_D.currentOutput + 8) &&
!isP2sh && !(nullAmount && isOpReturn)) {
#endif
PRINTF("Error : Unrecognized input script");
THROW(EXCEPTION);
}
@ -327,10 +339,14 @@ unsigned short btchip_apdu_hash_input_finalize_full_internal(
G_io_apdu_buffer + ISO_OFFSET_CDATA, apduLength);
btchip_context_D.currentOutputOffset += apduLength;
// Check if the legacy UI can be applied
// Check if the legacy UI can be applied
#ifndef HAVE_QTUM_SUPPORT
if ((G_io_apdu_buffer[ISO_OFFSET_P1] == FINALIZE_P1_LAST) &&
!btchip_context_D.tmpCtx.output.multipleOutput &&
prepare_full_output(1)) {
#else
if (0) {
#endif
btchip_context_D.io_flags |= IO_ASYNCH_REPLY;
btchip_context_D.outputParsingState =
BTCHIP_OUTPUT_HANDLE_LEGACY;

View File

@ -54,6 +54,9 @@ unsigned short btchip_apdu_set_alternate_coin_version() {
case BTCHIP_FAMILY_BITCOIN:
#ifdef HAVE_PEERCOIN_SUPPORT
case BTCHIP_FAMILY_PEERCOIN:
#endif
#ifdef HAVE_QTUM_SUPPORT
case BTCHIP_FAMILY_QTUM:
#endif
break;
default:

View File

@ -79,6 +79,22 @@ unsigned char btchip_output_script_is_op_return(unsigned char *buffer) {
return (buffer[1] == 0x6A);
}
#ifdef HAVE_QTUM_SUPPORT
unsigned char btchip_output_script_is_op_create(unsigned char *buffer) {
return (!btchip_output_script_is_regular(buffer) &&
!btchip_output_script_is_p2sh(buffer) &&
!btchip_output_script_is_op_return(buffer) && (buffer[0] <= 0xEA) &&
(buffer[buffer[0]] == 0xC1));
}
unsigned char btchip_output_script_is_op_call(unsigned char *buffer) {
return (!btchip_output_script_is_regular(buffer) &&
!btchip_output_script_is_p2sh(buffer) &&
!btchip_output_script_is_op_return(buffer) && (buffer[0] <= 0xEA) &&
(buffer[buffer[0]] == 0xC2));
}
#endif
unsigned char btchip_rng_u8_modulo(unsigned char modulo) {
unsigned int rng_max = 256 % modulo;
unsigned int rng_limit = 256 - rng_max;

View File

@ -2227,17 +2227,25 @@ uint8_t prepare_single_output() {
unsigned short textSize;
unsigned char nativeSegwit;
vars.tmp.fullAddress[0] = '\0';
btchip_swap_bytes(amount, btchip_context_D.currentOutput + offset, 8);
offset += 8;
nativeSegwit = btchip_output_script_is_native_witness(
btchip_context_D.currentOutput + offset);
if (btchip_output_script_is_op_return(btchip_context_D.currentOutput +
offset)) {
os_memmove(vars.tmp.fullAddress, "OP_RETURN", 9);
vars.tmp.fullAddress[10] = '\0';
vars.tmp.fullAmount[0] = '\0';
return 1;
} else if (nativeSegwit) {
strcpy(vars.tmp.fullAddress, "OP_RETURN");
}
#ifdef HAVE_QTUM_SUPPORT
else if (btchip_output_script_is_op_create(btchip_context_D.currentOutput +
offset)) {
strcpy(vars.tmp.fullAddress, "OP_CREATE");
} else if (btchip_output_script_is_op_call(btchip_context_D.currentOutput +
offset)) {
strcpy(vars.tmp.fullAddress, "OP_CALL");
}
#endif
else if (nativeSegwit) {
addressOffset = offset + OUTPUT_SCRIPT_NATIVE_WITNESS_PROGRAM_OFFSET;
} else if (btchip_output_script_is_regular(btchip_context_D.currentOutput +
offset)) {
@ -2247,34 +2255,36 @@ uint8_t prepare_single_output() {
addressOffset = offset + 3;
version = btchip_context_D.payToScriptHashVersion;
}
if (!nativeSegwit) {
if (version > 255) {
versionSize = 2;
address[0] = (version >> 8);
address[1] = version;
} else {
versionSize = 1;
address[0] = version;
}
os_memmove(address + versionSize,
btchip_context_D.currentOutput + addressOffset, 20);
if (vars.tmp.fullAddress[0] == 0) {
if (!nativeSegwit) {
if (version > 255) {
versionSize = 2;
address[0] = (version >> 8);
address[1] = version;
} else {
versionSize = 1;
address[0] = version;
}
os_memmove(address + versionSize,
btchip_context_D.currentOutput + addressOffset, 20);
// Prepare address
textSize = btchip_public_key_to_encoded_base58(
address, 20 + versionSize, (unsigned char *)tmp, sizeof(tmp),
version, 1);
tmp[textSize] = '\0';
}
// Prepare address
textSize = btchip_public_key_to_encoded_base58(
address, 20 + versionSize, (unsigned char *)tmp, sizeof(tmp),
version, 1);
tmp[textSize] = '\0';
}
#ifdef NATIVE_SEGWIT_PREFIX
else {
textSize = segwit_addr_encode(
tmp, NATIVE_SEGWIT_PREFIX, 0,
btchip_context_D.currentOutput + addressOffset,
btchip_context_D.currentOutput[addressOffset - 1]);
}
else {
textSize = segwit_addr_encode(
tmp, NATIVE_SEGWIT_PREFIX, 0,
btchip_context_D.currentOutput + addressOffset,
btchip_context_D.currentOutput[addressOffset - 1]);
}
#endif
strcpy(vars.tmp.fullAddress, tmp);
strcpy(vars.tmp.fullAddress, tmp);
}
// Prepare amount
@ -2328,6 +2338,9 @@ uint8_t prepare_full_output(uint8_t checkOnly) {
unsigned char nullAmount = 1;
unsigned int j;
unsigned char isOpReturn, isP2sh, isNativeSegwit;
#ifdef HAVE_QTUM_SUPPORT
unsigned char isOpCreate, isOpCall;
#endif
for (j = 0; j < 8; j++) {
if (btchip_context_D.currentOutput[offset + j] != 0) {
nullAmount = 0;
@ -2343,15 +2356,31 @@ uint8_t prepare_full_output(uint8_t checkOnly) {
offset);
isNativeSegwit = btchip_output_script_is_native_witness(
btchip_context_D.currentOutput + offset);
#ifdef HAVE_QTUM_SUPPORT
isOpCreate = btchip_output_script_is_op_create(
btchip_context_D.currentOutput + offset);
isOpCall = btchip_output_script_is_op_call(
btchip_context_D.currentOutput + offset);
if (!btchip_output_script_is_regular(btchip_context_D.currentOutput +
offset) &&
!isP2sh && !(nullAmount && isOpReturn) && !isOpCreate &&
!isOpCall) {
#else
if (!btchip_output_script_is_regular(btchip_context_D.currentOutput +
offset) &&
!isP2sh && !(nullAmount && isOpReturn)) {
#endif
if (!checkOnly) {
PRINTF("Error : Unrecognized input script");
}
goto error;
}
#ifdef HAVE_QTUM_SUPPORT
if (btchip_context_D.tmpCtx.output.changeInitialized && !isOpReturn &&
!isOpCreate && !isOpCall) {
#else
if (btchip_context_D.tmpCtx.output.changeInitialized && !isOpReturn) {
#endif
unsigned char addressOffset =
(isNativeSegwit ? OUTPUT_SCRIPT_NATIVE_WITNESS_PROGRAM_OFFSET
: isP2sh ? OUTPUT_SCRIPT_P2SH_PRE_LENGTH
@ -2394,8 +2423,17 @@ uint8_t prepare_full_output(uint8_t checkOnly) {
offset = 1;
btchip_context_D.tmp = (unsigned char *)tmp;
for (i = 0; i < numberOutputs; i++) {
#ifdef HAVE_QTUM_SUPPORT
if (!btchip_output_script_is_op_return(
btchip_context_D.currentOutput + offset + 8) &&
!btchip_output_script_is_op_create(
btchip_context_D.currentOutput + offset + 8) &&
!btchip_output_script_is_op_call(
btchip_context_D.currentOutput + offset + 8)) {
#else
if (!btchip_output_script_is_op_return(
btchip_context_D.currentOutput + offset + 8)) {
#endif
unsigned char versionSize;
int addressOffset;
unsigned char address[22];