Skip to content

Commit

Permalink
rename metadata to auxiliary data step 1
Browse files Browse the repository at this point in the history
  • Loading branch information
refi93 committed Apr 6, 2021
1 parent 8f9bfa9 commit cd292bf
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 43 deletions.
2 changes: 2 additions & 0 deletions src/auxDataHashBuilder.c
Expand Up @@ -51,6 +51,8 @@ static void blake2b_256_append_and_trace(
size_t bufferSize
)
{
// keeping tracing within a function to be able to extract the serialized data
// by matching the function name where the tracing is invoked
TRACE_BUFFER(buffer, bufferSize);
blake2b_256_append(hashCtx, buffer, bufferSize);
}
Expand Down
74 changes: 37 additions & 37 deletions src/signTx.c
Expand Up @@ -201,7 +201,7 @@ static inline void checkForFinishedSubmachines()
}
break;

case SIGN_STAGE_METADATA_CATALYST_VOTING_SUBMACHINE:
case SIGN_STAGE_AUX_DATA_CATALYST_VOTING_SUBMACHINE:
if (signTxMetadataCatalystVoting_isFinished()) {
TRACE();
ctx->stage = SIGN_STAGE_METADATA;
Expand Down Expand Up @@ -1220,66 +1220,66 @@ static void signTx_handleWithdrawalAPDU(uint8_t p2, uint8_t* wireDataBuffer, siz
// ============================== METADATA ==============================

enum {
HANDLE_METADATA_ARBITRARY_HASH_STEP_DISPLAY = 800,
HANDLE_METADATA_ARBITRARY_HASH_STEP_RESPOND,
HANDLE_METADATA_ARBITRARY_HASH_STEP_INVALID,
HANDLE_AUX_DATA_ARBITRARY_HASH_STEP_DISPLAY = 800,
HANDLE_AUX_DATA_ARBITRARY_HASH_STEP_RESPOND,
HANDLE_AUX_DATA_ARBITRARY_HASH_STEP_INVALID,
};

static void signTx_handleMetadataArbitraryHash_ui_runStep()
static void signTx_handleAuxDataArbitraryHash_ui_runStep()
{
TRACE("UI step %d", ctx->ui_step);
TRACE_STACK_USAGE();
ui_callback_fn_t* this_fn = signTx_handleMetadataArbitraryHash_ui_runStep;
ui_callback_fn_t* this_fn = signTx_handleAuxDataArbitraryHash_ui_runStep;

UI_STEP_BEGIN(ctx->ui_step, this_fn);

UI_STEP(HANDLE_METADATA_ARBITRARY_HASH_STEP_DISPLAY) {
UI_STEP(HANDLE_AUX_DATA_ARBITRARY_HASH_STEP_DISPLAY) {
ui_displayHexBufferScreen(
"Auxiliary data hash",
ctx->stageData.metadata.metadataHash,
SIZEOF(ctx->stageData.metadata.metadataHash),
ctx->stageData.auxData.auxDataHash,
SIZEOF(ctx->stageData.auxData.auxDataHash),
this_fn
);
}
UI_STEP(HANDLE_METADATA_ARBITRARY_HASH_STEP_RESPOND) {
UI_STEP(HANDLE_AUX_DATA_ARBITRARY_HASH_STEP_RESPOND) {
respondSuccessEmptyMsg();
advanceStage();
}
UI_STEP_END(HANDLE_METADATA_ARBITRARY_HASH_STEP_INVALID);
UI_STEP_END(HANDLE_AUX_DATA_ARBITRARY_HASH_STEP_INVALID);
}


enum {
HANDLE_METADATA_CATALYST_VOTING_STEP_DISPLAY = 850,
HANDLE_METADATA_CATALYST_VOTING_STEP_RESPOND,
HANDLE_METADATA_CATALYST_VOTING_STEP_INVALID,
HANDLE_AUX_DATA_CATALYST_VOTING_STEP_DISPLAY = 850,
HANDLE_AUX_DATA_CATALYST_VOTING_STEP_RESPOND,
HANDLE_AUX_DATA_CATALYST_VOTING_STEP_INVALID,
};
static void signTx_handleMetadataCatalystVoting_ui_runStep()
static void signTx_handleAuxDataCatalystVoting_ui_runStep()
{
TRACE("UI step %d", ctx->ui_step);
TRACE_STACK_USAGE();
ui_callback_fn_t* this_fn = signTx_handleMetadataCatalystVoting_ui_runStep;
ui_callback_fn_t* this_fn = signTx_handleAuxDataCatalystVoting_ui_runStep;

UI_STEP_BEGIN(ctx->ui_step, this_fn);

UI_STEP(HANDLE_METADATA_CATALYST_VOTING_STEP_DISPLAY) {
UI_STEP(HANDLE_AUX_DATA_CATALYST_VOTING_STEP_DISPLAY) {
ui_displayPrompt(
"Register Catalyst",
"voting key?",
this_fn,
respond_with_user_reject
);
}
UI_STEP(HANDLE_METADATA_CATALYST_VOTING_STEP_RESPOND) {
UI_STEP(HANDLE_AUX_DATA_CATALYST_VOTING_STEP_RESPOND) {
respondSuccessEmptyMsg();
signTxMetadataCatalystVoting_init();
ctx->stage = SIGN_STAGE_METADATA_CATALYST_VOTING_SUBMACHINE;
ctx->stage = SIGN_STAGE_AUX_DATA_CATALYST_VOTING_SUBMACHINE;
}
UI_STEP_END(HANDLE_METADATA_CATALYST_VOTING_STEP_INVALID);
UI_STEP_END(HANDLE_AUX_DATA_CATALYST_VOTING_STEP_INVALID);
}

__noinline_due_to_stack__
static void signTx_handleMetadataAPDU(uint8_t p2, uint8_t* wireDataBuffer, size_t wireDataSize)
static void signTx_handleAuxDataAPDU(uint8_t p2, uint8_t* wireDataBuffer, size_t wireDataSize)
{
{
TRACE_STACK_USAGE();
Expand All @@ -1288,7 +1288,7 @@ static void signTx_handleMetadataAPDU(uint8_t p2, uint8_t* wireDataBuffer, size_
// delegate to state sub-machine for stake pool registration certificate data
if (signTxMetadataCatalystVoting_isValidInstruction(p2)) {
TRACE();
CHECK_STAGE(SIGN_STAGE_METADATA_CATALYST_VOTING_SUBMACHINE);
CHECK_STAGE(SIGN_STAGE_AUX_DATA_CATALYST_VOTING_SUBMACHINE);

TRACE_STACK_USAGE();

Expand All @@ -1300,19 +1300,19 @@ static void signTx_handleMetadataAPDU(uint8_t p2, uint8_t* wireDataBuffer, size_
}

{
explicit_bzero(&ctx->stageData.metadata, SIZEOF(ctx->stageData.metadata));
explicit_bzero(&ctx->stageData.auxData, SIZEOF(ctx->stageData.auxData));
TRACE_BUFFER(wireDataBuffer, wireDataSize);

read_view_t view = make_read_view(wireDataBuffer, wireDataBuffer + wireDataSize);
VALIDATE(view_remainingSize(&view) >= 1, ERR_INVALID_DATA);
ctx->stageData.metadata.type = parse_u1be(&view);
ctx->stageData.auxData.type = parse_u1be(&view);

switch (ctx->stageData.metadata.type) {
switch (ctx->stageData.auxData.type) {
case METADATA_TYPE_ARBITRARY_HASH:
// parse data
VALIDATE(view_remainingSize(&view) == METADATA_HASH_LENGTH, ERR_INVALID_DATA);
STATIC_ASSERT(SIZEOF(ctx->stageData.metadata.metadataHash) == METADATA_HASH_LENGTH, "wrong metadata hash length");
view_memmove(ctx->stageData.metadata.metadataHash, &view, METADATA_HASH_LENGTH);
STATIC_ASSERT(SIZEOF(ctx->stageData.auxData.auxDataHash) == METADATA_HASH_LENGTH, "wrong metadata hash length");
view_memmove(ctx->stageData.auxData.auxDataHash, &view, METADATA_HASH_LENGTH);
ctx->metadataReceived = true;
break;
case METADATA_TYPE_CATALYST_VOTING_KEY_REGISTRATION:
Expand All @@ -1329,39 +1329,39 @@ static void signTx_handleMetadataAPDU(uint8_t p2, uint8_t* wireDataBuffer, size_
TRACE("Policy: %d", (int) policy);
ENSURE_NOT_DENIED(policy);

switch (ctx->stageData.metadata.type) {
switch (ctx->stageData.auxData.type) {
case METADATA_TYPE_ARBITRARY_HASH: {
// select UI step
switch (policy) {
#define CASE(POLICY, UI_STEP) case POLICY: {ctx->ui_step=UI_STEP; break;}
CASE(POLICY_SHOW_BEFORE_RESPONSE, HANDLE_METADATA_ARBITRARY_HASH_STEP_DISPLAY);
CASE(POLICY_ALLOW_WITHOUT_PROMPT, HANDLE_METADATA_ARBITRARY_HASH_STEP_RESPOND);
CASE(POLICY_SHOW_BEFORE_RESPONSE, HANDLE_AUX_DATA_ARBITRARY_HASH_STEP_DISPLAY);
CASE(POLICY_ALLOW_WITHOUT_PROMPT, HANDLE_AUX_DATA_ARBITRARY_HASH_STEP_RESPOND);
#undef CASE
default:
THROW(ERR_NOT_IMPLEMENTED);
}
// add metadata to tx
TRACE("Adding metadata hash to tx hash");
TRACE("Adding auxiliary data hash to tx hash");
txHashBuilder_addMetadata(
&ctx->txHashBuilder,
ctx->stageData.metadata.metadataHash, SIZEOF(ctx->stageData.metadata.metadataHash)
ctx->stageData.auxData.auxDataHash, SIZEOF(ctx->stageData.auxData.auxDataHash)
);
TRACE();
signTx_handleMetadataArbitraryHash_ui_runStep();
signTx_handleAuxDataArbitraryHash_ui_runStep();
break;
}
case METADATA_TYPE_CATALYST_VOTING_KEY_REGISTRATION:
// select UI step
switch (policy) {
#define CASE(POLICY, UI_STEP) case POLICY: {ctx->ui_step=UI_STEP; break;}
CASE(POLICY_SHOW_BEFORE_RESPONSE, HANDLE_METADATA_CATALYST_VOTING_STEP_DISPLAY);
CASE(POLICY_ALLOW_WITHOUT_PROMPT, HANDLE_METADATA_CATALYST_VOTING_STEP_RESPOND);
CASE(POLICY_SHOW_BEFORE_RESPONSE, HANDLE_AUX_DATA_CATALYST_VOTING_STEP_DISPLAY);
CASE(POLICY_ALLOW_WITHOUT_PROMPT, HANDLE_AUX_DATA_CATALYST_VOTING_STEP_RESPOND);
#undef CASE
default:
THROW(ERR_NOT_IMPLEMENTED);
}

signTx_handleMetadataCatalystVoting_ui_runStep();
signTx_handleAuxDataCatalystVoting_ui_runStep();
break;
default:
ASSERT(false);
Expand Down Expand Up @@ -1656,7 +1656,7 @@ static subhandler_fn_t* lookup_subhandler(uint8_t p1)
CASE(0x05, signTx_handleTtlAPDU);
CASE(0x06, signTx_handleCertificateAPDU);
CASE(0x07, signTx_handleWithdrawalAPDU);
CASE(0x08, signTx_handleMetadataAPDU);
CASE(0x08, signTx_handleAuxDataAPDU);
CASE(0x09, signTx_handleValidityIntervalStartAPDU);
CASE(0x0a, signTx_handleConfirmAPDU);
CASE(0x0f, signTx_handleWitnessAPDU);
Expand Down
8 changes: 4 additions & 4 deletions src/signTx.h
Expand Up @@ -30,7 +30,7 @@ typedef enum {
SIGN_STAGE_CERTIFICATES_POOL = 30, // pool registration certificate sub-machine
SIGN_STAGE_WITHDRAWALS = 31,
SIGN_STAGE_METADATA = 32,
SIGN_STAGE_METADATA_CATALYST_VOTING_SUBMACHINE = 33,
SIGN_STAGE_AUX_DATA_CATALYST_VOTING_SUBMACHINE = 33,
SIGN_STAGE_VALIDITY_INTERVAL = 34,
SIGN_STAGE_CONFIRM = 35,
SIGN_STAGE_WITNESSES = 36,
Expand Down Expand Up @@ -69,8 +69,8 @@ typedef struct {
metadata_type_t type;

// only for arbitrary metadata hash
uint8_t metadataHash[METADATA_HASH_LENGTH];
} sign_tx_metadata_data_t;
uint8_t auxDataHash[METADATA_HASH_LENGTH];
} sign_tx_aux_data_data_t;

typedef struct {
bip44_path_t path;
Expand Down Expand Up @@ -112,7 +112,7 @@ typedef struct {
uint64_t ttl;
sign_tx_certificate_data_t certificate;
sign_tx_withdrawal_data_t withdrawal;
sign_tx_metadata_data_t metadata;
sign_tx_aux_data_data_t auxData;
uint64_t validityIntervalStart;
sign_tx_witness_data_t witness;
} stageData;
Expand Down
4 changes: 2 additions & 2 deletions src/txHashBuilder_test.c
Expand Up @@ -359,9 +359,9 @@ void run_txHashBuilder_test()
}

{
const char metadataHashHex[] = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef";
const char auxDataHashHex[] = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef";
uint8_t tmp[METADATA_HASH_LENGTH];
size_t tmpSize = decode_hex(metadataHashHex, tmp, SIZEOF(tmp));
size_t tmpSize = decode_hex(auxDataHashHex, tmp, SIZEOF(tmp));
ASSERT(tmpSize == METADATA_HASH_LENGTH);
txHashBuilder_addMetadata(&builder, tmp, tmpSize);
}
Expand Down

0 comments on commit cd292bf

Please sign in to comment.