Merge pull request #545 from LedgerHQ/cev/add_sender_field
B2CA-1522: Add sender field in transaction
@@ -19,10 +19,10 @@ bool copy_transaction_parameters(create_transaction_parameters_t* sign_transacti
|
|||||||
// We need this "trick" as the input data position can overlap with app-ethereum globals
|
// We need this "trick" as the input data position can overlap with app-ethereum globals
|
||||||
txStringProperties_t stack_data;
|
txStringProperties_t stack_data;
|
||||||
memset(&stack_data, 0, sizeof(stack_data));
|
memset(&stack_data, 0, sizeof(stack_data));
|
||||||
strlcpy(stack_data.fullAddress,
|
strlcpy(stack_data.toAddress,
|
||||||
sign_transaction_params->destination_address,
|
sign_transaction_params->destination_address,
|
||||||
sizeof(stack_data.fullAddress));
|
sizeof(stack_data.toAddress));
|
||||||
if ((stack_data.fullAddress[sizeof(stack_data.fullAddress) - 1] != '\0') ||
|
if ((stack_data.toAddress[sizeof(stack_data.toAddress) - 1] != '\0') ||
|
||||||
(sign_transaction_params->amount_length > 32) ||
|
(sign_transaction_params->amount_length > 32) ||
|
||||||
(sign_transaction_params->fee_amount_length > 8)) {
|
(sign_transaction_params->fee_amount_length > 8)) {
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
void plugin_ui_get_id(void) {
|
void plugin_ui_get_id(void) {
|
||||||
ethQueryContractID_t pluginQueryContractID;
|
ethQueryContractID_t pluginQueryContractID;
|
||||||
eth_plugin_prepare_query_contract_ID(&pluginQueryContractID,
|
eth_plugin_prepare_query_contract_ID(&pluginQueryContractID,
|
||||||
strings.common.fullAddress,
|
strings.common.toAddress,
|
||||||
sizeof(strings.common.fullAddress),
|
sizeof(strings.common.toAddress),
|
||||||
strings.common.fullAmount,
|
strings.common.fullAmount,
|
||||||
sizeof(strings.common.fullAmount));
|
sizeof(strings.common.fullAmount));
|
||||||
// Query the original contract for ID if it's not an internal alias
|
// Query the original contract for ID if it's not an internal alias
|
||||||
@@ -33,8 +33,8 @@ void plugin_ui_get_item_internal(char *title_buffer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void plugin_ui_get_item(void) {
|
void plugin_ui_get_item(void) {
|
||||||
plugin_ui_get_item_internal(strings.common.fullAddress,
|
plugin_ui_get_item_internal(strings.common.toAddress,
|
||||||
sizeof(strings.common.fullAddress),
|
sizeof(strings.common.toAddress),
|
||||||
strings.common.fullAmount,
|
strings.common.fullAmount,
|
||||||
sizeof(strings.common.fullAmount));
|
sizeof(strings.common.fullAmount));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,7 +127,8 @@ typedef enum {
|
|||||||
#define NETWORK_STRING_MAX_SIZE 19
|
#define NETWORK_STRING_MAX_SIZE 19
|
||||||
|
|
||||||
typedef struct txStringProperties_s {
|
typedef struct txStringProperties_s {
|
||||||
char fullAddress[43];
|
char fromAddress[43];
|
||||||
|
char toAddress[43];
|
||||||
char fullAmount[79]; // 2^256 is 78 digits long
|
char fullAmount[79]; // 2^256 is 78 digits long
|
||||||
char maxFee[50];
|
char maxFee[50];
|
||||||
char nonce[8]; // 10M tx per account ought to be enough for everybody
|
char nonce[8]; // 10M tx per account ought to be enough for everybody
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ UX_STEP_NOCB(
|
|||||||
ux_domain_name_step,
|
ux_domain_name_step,
|
||||||
bnnn_paging,
|
bnnn_paging,
|
||||||
{
|
{
|
||||||
.title = "Domain",
|
.title = "To (domain)",
|
||||||
.text = g_domain_name
|
.text = g_domain_name
|
||||||
});
|
});
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ UX_STEP_NOCB(
|
|||||||
bnnn_paging,
|
bnnn_paging,
|
||||||
{
|
{
|
||||||
.title = "Contract Name",
|
.title = "Contract Name",
|
||||||
.text = strings.common.fullAddress,
|
.text = strings.common.toAddress,
|
||||||
});
|
});
|
||||||
|
|
||||||
UX_STEP_NOCB(
|
UX_STEP_NOCB(
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ UX_STEP_NOCB(
|
|||||||
bnnn_paging,
|
bnnn_paging,
|
||||||
{
|
{
|
||||||
.title = "Address",
|
.title = "Address",
|
||||||
.text = strings.common.fullAddress,
|
.text = strings.common.toAddress,
|
||||||
});
|
});
|
||||||
UX_STEP_CB(
|
UX_STEP_CB(
|
||||||
ux_display_public_flow_3_step,
|
ux_display_public_flow_3_step,
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ UX_STEP_NOCB(
|
|||||||
bnnn_paging,
|
bnnn_paging,
|
||||||
{
|
{
|
||||||
.title = "Address",
|
.title = "Address",
|
||||||
.text = strings.common.fullAddress,
|
.text = strings.common.toAddress,
|
||||||
});
|
});
|
||||||
UX_STEP_NOCB(
|
UX_STEP_NOCB(
|
||||||
ux_display_privacy_public_key_flow_3_step,
|
ux_display_privacy_public_key_flow_3_step,
|
||||||
|
|||||||
@@ -110,11 +110,18 @@ UX_STEP_NOCB(
|
|||||||
.text = strings.common.fullAmount
|
.text = strings.common.fullAmount
|
||||||
});
|
});
|
||||||
UX_STEP_NOCB(
|
UX_STEP_NOCB(
|
||||||
ux_approval_address_step,
|
ux_approval_from_step,
|
||||||
bnnn_paging,
|
bnnn_paging,
|
||||||
{
|
{
|
||||||
.title = "Address",
|
.title = "From",
|
||||||
.text = strings.common.fullAddress,
|
.text = strings.common.fromAddress,
|
||||||
|
});
|
||||||
|
UX_STEP_NOCB(
|
||||||
|
ux_approval_to_step,
|
||||||
|
bnnn_paging,
|
||||||
|
{
|
||||||
|
.title = "To",
|
||||||
|
.text = strings.common.toAddress,
|
||||||
});
|
});
|
||||||
|
|
||||||
UX_STEP_NOCB_INIT(
|
UX_STEP_NOCB_INIT(
|
||||||
@@ -122,7 +129,7 @@ UX_STEP_NOCB_INIT(
|
|||||||
bnnn_paging,
|
bnnn_paging,
|
||||||
plugin_ui_get_id(),
|
plugin_ui_get_id(),
|
||||||
{
|
{
|
||||||
.title = strings.common.fullAddress,
|
.title = strings.common.toAddress,
|
||||||
.text = strings.common.fullAmount
|
.text = strings.common.fullAmount
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -138,7 +145,7 @@ UX_FLOW_DEF_NOCB(
|
|||||||
ux_plugin_approval_display_step,
|
ux_plugin_approval_display_step,
|
||||||
bnnn_paging,
|
bnnn_paging,
|
||||||
{
|
{
|
||||||
.title = strings.common.fullAddress,
|
.title = strings.common.toAddress,
|
||||||
.text = strings.common.fullAmount
|
.text = strings.common.fullAmount
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -214,22 +221,30 @@ void ux_approve_tx(bool fromPlugin) {
|
|||||||
if (fromPlugin) {
|
if (fromPlugin) {
|
||||||
// Add the special dynamic display logic
|
// Add the special dynamic display logic
|
||||||
ux_approval_tx_flow[step++] = &ux_plugin_approval_id_step;
|
ux_approval_tx_flow[step++] = &ux_plugin_approval_id_step;
|
||||||
|
if (pluginType != EXTERNAL) {
|
||||||
|
if (strings.common.fromAddress[0] != 0) {
|
||||||
|
ux_approval_tx_flow[step++] = &ux_approval_from_step;
|
||||||
|
}
|
||||||
|
}
|
||||||
ux_approval_tx_flow[step++] = &ux_plugin_approval_before_step;
|
ux_approval_tx_flow[step++] = &ux_plugin_approval_before_step;
|
||||||
ux_approval_tx_flow[step++] = &ux_plugin_approval_display_step;
|
ux_approval_tx_flow[step++] = &ux_plugin_approval_display_step;
|
||||||
ux_approval_tx_flow[step++] = &ux_plugin_approval_after_step;
|
ux_approval_tx_flow[step++] = &ux_plugin_approval_after_step;
|
||||||
} else {
|
} else {
|
||||||
// We're in a regular transaction, just show the amount and the address
|
// We're in a regular transaction, just show the amount and the address
|
||||||
|
if (strings.common.fromAddress[0] != 0) {
|
||||||
|
ux_approval_tx_flow[step++] = &ux_approval_from_step;
|
||||||
|
}
|
||||||
ux_approval_tx_flow[step++] = &ux_approval_amount_step;
|
ux_approval_tx_flow[step++] = &ux_approval_amount_step;
|
||||||
#ifdef HAVE_DOMAIN_NAME
|
#ifdef HAVE_DOMAIN_NAME
|
||||||
uint64_t chain_id = get_tx_chain_id();
|
uint64_t chain_id = get_tx_chain_id();
|
||||||
if (has_domain_name(&chain_id, tmpContent.txContent.destination)) {
|
if (has_domain_name(&chain_id, tmpContent.txContent.destination)) {
|
||||||
ux_approval_tx_flow[step++] = &ux_domain_name_step;
|
ux_approval_tx_flow[step++] = &ux_domain_name_step;
|
||||||
if (N_storage.verbose_domain_name) {
|
if (N_storage.verbose_domain_name) {
|
||||||
ux_approval_tx_flow[step++] = &ux_approval_address_step;
|
ux_approval_tx_flow[step++] = &ux_approval_to_step;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
#endif // HAVE_DOMAIN_NAME
|
#endif // HAVE_DOMAIN_NAME
|
||||||
ux_approval_tx_flow[step++] = &ux_approval_address_step;
|
ux_approval_tx_flow[step++] = &ux_approval_to_step;
|
||||||
#ifdef HAVE_DOMAIN_NAME
|
#ifdef HAVE_DOMAIN_NAME
|
||||||
}
|
}
|
||||||
#endif // HAVE_DOMAIN_NAME
|
#endif // HAVE_DOMAIN_NAME
|
||||||
|
|||||||
@@ -64,8 +64,8 @@ void handleGetPublicKey(uint8_t p1,
|
|||||||
*tx = set_result_get_publicKey();
|
*tx = set_result_get_publicKey();
|
||||||
THROW(APDU_RESPONSE_OK);
|
THROW(APDU_RESPONSE_OK);
|
||||||
} else {
|
} else {
|
||||||
snprintf(strings.common.fullAddress,
|
snprintf(strings.common.toAddress,
|
||||||
sizeof(strings.common.fullAddress),
|
sizeof(strings.common.toAddress),
|
||||||
"0x%.*s",
|
"0x%.*s",
|
||||||
40,
|
40,
|
||||||
tmpCtx.publicKeyContext.address);
|
tmpCtx.publicKeyContext.address);
|
||||||
|
|||||||
@@ -94,8 +94,8 @@ void handlePerformPrivacyOperation(uint8_t p1,
|
|||||||
*tx = set_result_perform_privacy_operation();
|
*tx = set_result_perform_privacy_operation();
|
||||||
THROW(0x9000);
|
THROW(0x9000);
|
||||||
} else {
|
} else {
|
||||||
snprintf(strings.common.fullAddress,
|
snprintf(strings.common.toAddress,
|
||||||
sizeof(strings.common.fullAddress),
|
sizeof(strings.common.toAddress),
|
||||||
"0x%.*s",
|
"0x%.*s",
|
||||||
40,
|
40,
|
||||||
tmpCtx.publicKeyContext.address);
|
tmpCtx.publicKeyContext.address);
|
||||||
|
|||||||
@@ -346,12 +346,19 @@ __attribute__((noinline)) static bool finalize_parsing_helper(bool direct, bool
|
|||||||
tmpCtx.transactionContext.hash,
|
tmpCtx.transactionContext.hash,
|
||||||
32));
|
32));
|
||||||
|
|
||||||
|
uint8_t msg_sender[ADDRESS_LENGTH] = {0};
|
||||||
|
get_public_key(msg_sender, sizeof(msg_sender));
|
||||||
|
|
||||||
|
address_to_string(msg_sender,
|
||||||
|
ADDRESS_LENGTH,
|
||||||
|
strings.common.fromAddress,
|
||||||
|
sizeof(strings.common.fromAddress),
|
||||||
|
chainConfig->chainId);
|
||||||
|
PRINTF("FROM address displayed: %s\n", strings.common.fromAddress);
|
||||||
// Finalize the plugin handling
|
// Finalize the plugin handling
|
||||||
if (dataContext.tokenContext.pluginStatus >= ETH_PLUGIN_RESULT_SUCCESSFUL) {
|
if (dataContext.tokenContext.pluginStatus >= ETH_PLUGIN_RESULT_SUCCESSFUL) {
|
||||||
eth_plugin_prepare_finalize(&pluginFinalize);
|
eth_plugin_prepare_finalize(&pluginFinalize);
|
||||||
|
|
||||||
uint8_t msg_sender[ADDRESS_LENGTH] = {0};
|
|
||||||
get_public_key(msg_sender, sizeof(msg_sender));
|
|
||||||
pluginFinalize.address = msg_sender;
|
pluginFinalize.address = msg_sender;
|
||||||
|
|
||||||
if (!eth_plugin_call(ETH_PLUGIN_FINALIZE, (void *) &pluginFinalize)) {
|
if (!eth_plugin_call(ETH_PLUGIN_FINALIZE, (void *) &pluginFinalize)) {
|
||||||
@@ -465,14 +472,14 @@ __attribute__((noinline)) static bool finalize_parsing_helper(bool direct, bool
|
|||||||
chainConfig->chainId);
|
chainConfig->chainId);
|
||||||
if (G_called_from_swap) {
|
if (G_called_from_swap) {
|
||||||
// Ensure the values are the same that the ones that have been previously validated
|
// Ensure the values are the same that the ones that have been previously validated
|
||||||
if (strcasecmp_workaround(strings.common.fullAddress, displayBuffer) != 0) {
|
if (strcasecmp_workaround(strings.common.toAddress, displayBuffer) != 0) {
|
||||||
PRINTF("ERR_SILENT_MODE_CHECK_FAILED, address check failed\n");
|
PRINTF("ERR_SILENT_MODE_CHECK_FAILED, address check failed\n");
|
||||||
THROW(ERR_SILENT_MODE_CHECK_FAILED);
|
THROW(ERR_SILENT_MODE_CHECK_FAILED);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
strlcpy(strings.common.fullAddress, displayBuffer, sizeof(strings.common.fullAddress));
|
strlcpy(strings.common.toAddress, displayBuffer, sizeof(strings.common.toAddress));
|
||||||
}
|
}
|
||||||
PRINTF("Address displayed: %s\n", strings.common.fullAddress);
|
PRINTF("TO address displayed: %s\n", strings.common.toAddress);
|
||||||
|
|
||||||
// Format the amount in a temporary buffer, if in swap case compare it with validated
|
// Format the amount in a temporary buffer, if in swap case compare it with validated
|
||||||
// amount, else commit it
|
// amount, else commit it
|
||||||
|
|||||||
@@ -57,8 +57,8 @@ static const nbgl_icon_details_t *get_tx_icon(void) {
|
|||||||
|
|
||||||
if (tx_approval_context.fromPlugin && (pluginType == EXTERNAL)) {
|
if (tx_approval_context.fromPlugin && (pluginType == EXTERNAL)) {
|
||||||
if (caller_app && caller_app->name) {
|
if (caller_app && caller_app->name) {
|
||||||
if ((strlen(strings.common.fullAddress) == strlen(caller_app->name)) &&
|
if ((strlen(strings.common.toAddress) == strlen(caller_app->name)) &&
|
||||||
(strcmp(strings.common.fullAddress, caller_app->name) == 0)) {
|
(strcmp(strings.common.toAddress, caller_app->name) == 0)) {
|
||||||
icon = get_app_icon(true);
|
icon = get_app_icon(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -93,6 +93,13 @@ static uint8_t setTagValuePairs(void) {
|
|||||||
|
|
||||||
// Setup data to display
|
// Setup data to display
|
||||||
if (tx_approval_context.fromPlugin) {
|
if (tx_approval_context.fromPlugin) {
|
||||||
|
if (pluginType != EXTERNAL) {
|
||||||
|
if (strings.common.fromAddress[0] != 0) {
|
||||||
|
pairs[nbPairs].item = "From";
|
||||||
|
pairs[nbPairs].value = strings.common.fromAddress;
|
||||||
|
nbPairs++;
|
||||||
|
}
|
||||||
|
}
|
||||||
for (pairIndex = 0; pairIndex < dataContext.tokenContext.pluginUiMaxItems; pairIndex++) {
|
for (pairIndex = 0; pairIndex < dataContext.tokenContext.pluginUiMaxItems; pairIndex++) {
|
||||||
// for the next dataContext.tokenContext.pluginUiMaxItems items, get tag/value from
|
// for the next dataContext.tokenContext.pluginUiMaxItems items, get tag/value from
|
||||||
// plugin_ui_get_item_internal()
|
// plugin_ui_get_item_internal()
|
||||||
@@ -116,6 +123,12 @@ static uint8_t setTagValuePairs(void) {
|
|||||||
pairs[nbPairs].value = strings.common.maxFee;
|
pairs[nbPairs].value = strings.common.maxFee;
|
||||||
nbPairs++;
|
nbPairs++;
|
||||||
} else {
|
} else {
|
||||||
|
if (strings.common.fromAddress[0] != 0) {
|
||||||
|
pairs[nbPairs].item = "From";
|
||||||
|
pairs[nbPairs].value = strings.common.fromAddress;
|
||||||
|
nbPairs++;
|
||||||
|
}
|
||||||
|
|
||||||
pairs[nbPairs].item = "Amount";
|
pairs[nbPairs].item = "Amount";
|
||||||
pairs[nbPairs].value = strings.common.fullAmount;
|
pairs[nbPairs].value = strings.common.fullAmount;
|
||||||
nbPairs++;
|
nbPairs++;
|
||||||
@@ -125,14 +138,14 @@ static uint8_t setTagValuePairs(void) {
|
|||||||
tx_approval_context.domain_name_match =
|
tx_approval_context.domain_name_match =
|
||||||
has_domain_name(&chain_id, tmpContent.txContent.destination);
|
has_domain_name(&chain_id, tmpContent.txContent.destination);
|
||||||
if (tx_approval_context.domain_name_match) {
|
if (tx_approval_context.domain_name_match) {
|
||||||
pairs[nbPairs].item = "Domain";
|
pairs[nbPairs].item = "To (domain)";
|
||||||
pairs[nbPairs].value = g_domain_name;
|
pairs[nbPairs].value = g_domain_name;
|
||||||
nbPairs++;
|
nbPairs++;
|
||||||
}
|
}
|
||||||
if (!tx_approval_context.domain_name_match || N_storage.verbose_domain_name) {
|
if (!tx_approval_context.domain_name_match || N_storage.verbose_domain_name) {
|
||||||
#endif
|
#endif
|
||||||
pairs[nbPairs].item = "Address";
|
pairs[nbPairs].item = "To";
|
||||||
pairs[nbPairs].value = strings.common.fullAddress;
|
pairs[nbPairs].value = strings.common.toAddress;
|
||||||
nbPairs++;
|
nbPairs++;
|
||||||
#ifdef HAVE_DOMAIN_NAME
|
#ifdef HAVE_DOMAIN_NAME
|
||||||
}
|
}
|
||||||
@@ -142,6 +155,7 @@ static uint8_t setTagValuePairs(void) {
|
|||||||
pairs[nbPairs].value = strings.common.nonce;
|
pairs[nbPairs].value = strings.common.nonce;
|
||||||
nbPairs++;
|
nbPairs++;
|
||||||
}
|
}
|
||||||
|
|
||||||
pairs[nbPairs].item = "Max fees";
|
pairs[nbPairs].item = "Max fees";
|
||||||
pairs[nbPairs].value = strings.common.maxFee;
|
pairs[nbPairs].value = strings.common.maxFee;
|
||||||
nbPairs++;
|
nbPairs++;
|
||||||
@@ -172,14 +186,14 @@ static void reviewCommon(void) {
|
|||||||
"Review transaction\nto %s\n%s%s",
|
"Review transaction\nto %s\n%s%s",
|
||||||
op_name,
|
op_name,
|
||||||
(pluginType == EXTERNAL ? "on " : ""),
|
(pluginType == EXTERNAL ? "on " : ""),
|
||||||
strings.common.fullAddress);
|
strings.common.toAddress);
|
||||||
// Finish text: replace "Review" by "Sign" and add questionmark
|
// Finish text: replace "Review" by "Sign" and add questionmark
|
||||||
snprintf(g_stax_shared_buffer + buf_size,
|
snprintf(g_stax_shared_buffer + buf_size,
|
||||||
buf_size,
|
buf_size,
|
||||||
"Sign transaction\nto %s\n%s%s",
|
"Sign transaction\nto %s\n%s%s",
|
||||||
op_name,
|
op_name,
|
||||||
(pluginType == EXTERNAL ? "on " : ""),
|
(pluginType == EXTERNAL ? "on " : ""),
|
||||||
strings.common.fullAddress);
|
strings.common.toAddress);
|
||||||
|
|
||||||
nbgl_useCaseReview(TYPE_TRANSACTION,
|
nbgl_useCaseReview(TYPE_TRANSACTION,
|
||||||
&pairsList,
|
&pairsList,
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ static void buildFirstPage(const char *review_string) {
|
|||||||
uint8_t nbPairs = 0;
|
uint8_t nbPairs = 0;
|
||||||
|
|
||||||
pairs[nbPairs].item = "Address";
|
pairs[nbPairs].item = "Address";
|
||||||
pairs[nbPairs].value = strings.common.fullAddress;
|
pairs[nbPairs].value = strings.common.toAddress;
|
||||||
nbPairs++;
|
nbPairs++;
|
||||||
pairs[nbPairs].item = "Key";
|
pairs[nbPairs].item = "Key";
|
||||||
pairs[nbPairs].value = strings.common.fullAmount;
|
pairs[nbPairs].value = strings.common.fullAmount;
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ void ui_display_public_key(const uint64_t *chain_id) {
|
|||||||
icon = get_app_icon(false);
|
icon = get_app_icon(false);
|
||||||
}
|
}
|
||||||
strlcat(g_stax_shared_buffer, "address", sizeof(g_stax_shared_buffer));
|
strlcat(g_stax_shared_buffer, "address", sizeof(g_stax_shared_buffer));
|
||||||
nbgl_useCaseAddressReview(strings.common.fullAddress,
|
nbgl_useCaseAddressReview(strings.common.toAddress,
|
||||||
NULL,
|
NULL,
|
||||||
icon,
|
icon,
|
||||||
g_stax_shared_buffer,
|
g_stax_shared_buffer,
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 9.3 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 6.2 KiB |
BIN
tests/ragger/snapshots/flex/domain_name_non_mainnet/00005.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 6.2 KiB |
BIN
tests/ragger/snapshots/flex/domain_name_verbose_False/00005.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 6.2 KiB |
BIN
tests/ragger/snapshots/flex/domain_name_wrong_addr/00005.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 19 KiB |