Skip to content
This repository has been archived by the owner on Oct 18, 2024. It is now read-only.

Kusama v26.1002005 #209

Merged
merged 6 commits into from
Jun 10, 2024
Merged

Kusama v26.1002005 #209

merged 6 commits into from
Jun 10, 2024

Conversation

ftheirs
Copy link
Contributor

@ftheirs ftheirs commented Jun 7, 2024

Prepare Kusama app to work on the next runtime upgrade.

Changes:

  • Keys size were changed for both runtimes: closes Error signing session.setKeys in polkadot JS. #207
  • Support new CheckMetadataHash signed extension if present. The app will only accept Mode = Disable & None
  • Either if Mode is enabled or the MetadataDigest is present on the transaction, it will be rejected right away

🔗 zboto Link

@ftheirs ftheirs requested review from emmanuelm41 and jleni June 7, 2024 18:30
Copy link
Member

@emmanuelm41 emmanuelm41 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything looks fine. What I just don't see here is tests to check we still support both tx versions, current one (25) and the new one (26). Shouldn't we have them?

@ftheirs
Copy link
Contributor Author

ftheirs commented Jun 9, 2024

Testcases for tx version 25:https://github.com/Zondax/ledger-kusama/blob/kusama_runtime_upgrade/tests/testcases_previous.json
Testcases for tx version 26: https://github.com/Zondax/ledger-kusama/blob/kusama_runtime_upgrade/tests/testcases_current.json
Extra checks:

TEST(SCALE, Mode_CheckMetadataHash) {
struct ModeCheckMetadataTxn
{
std::string blob;
parser_error_t expectedError;
};
const std::vector<ModeCheckMetadataTxn> testcases {
// Tx 25.1001000
{"00008048e489312da07751a0729e5803be345671beb619608e5f881bc93fec8bb30993d503ae11030003d202964928460f0019000000b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafeb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe", parser_ok},
// Tx 26.1002005
{"000080ab4caab542534676eba5a223de3fe21f358c967435131fba6a98bd0b690578a1d50391010b63ce64c10c0500154a0f001a000000b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafeb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe00", parser_ok},
// Tx_Ver = 26 spec != 1002006 (!= 1002005)
{"000080ab4caab542534676eba5a223de3fe21f358c967435131fba6a98bd0b690578a1d50391010b63ce64c10c0500164a0f001a000000b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafeb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe00", parser_tx_version_not_supported},
// Mode = Enabled | None
{"000080ab4caab542534676eba5a223de3fe21f358c967435131fba6a98bd0b690578a1d50391010b63ce64c10c0501154a0f001a000000b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafeb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe00", parser_value_out_of_range},
// Mode = Disabled | Opt = 1 Hash = null
{"000080ab4caab542534676eba5a223de3fe21f358c967435131fba6a98bd0b690578a1d50391010b63ce64c10c0500154a0f001a000000b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafeb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe01", parser_value_out_of_range},
// Mode = Disabled | Some(Hash)
{"000080ab4caab542534676eba5a223de3fe21f358c967435131fba6a98bd0b690578a1d50391010b63ce64c10c0500154a0f001a000000b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafeb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe017c728620c0fa3ccc891fa2460d8e6de89ac7e8eaedcfae5343ee2b3994f9b333", parser_tx_version_not_supported},
// Mode = Disabled | Opt = 0 + Hash
{"000080ab4caab542534676eba5a223de3fe21f358c967435131fba6a98bd0b690578a1d50391010b63ce64c10c0500154a0f001a000000b0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafeb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe007c728620c0fa3ccc891fa2460d8e6de89ac7e8eaedcfae5343ee2b3994f9b333", parser_tx_version_not_supported}
};
for (const auto &testcase : testcases) {
uint8_t buffer[500] = {0};
auto bufferLen = parseHexString(buffer, sizeof(buffer), testcase.blob.c_str());
parser_context_t ctx = {0};
parser_tx_t tx = {0};
parser_error_t err = parser_unexpected_error;
parser_init(&ctx, buffer, bufferLen);
ctx.tx_obj = &tx;
err = _readTx(&ctx, &tx);
EXPECT_EQ(err, testcase.expectedError) << parser_getErrorDescription(err);
}
}

@ftheirs ftheirs requested a review from emmanuelm41 June 9, 2024 13:13
Copy link

@github-advanced-security github-advanced-security bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

@ftheirs ftheirs force-pushed the kusama_runtime_upgrade branch from 8232e24 to 60aa3b3 Compare June 9, 2024 14:00
@ftheirs ftheirs merged commit 2e2f300 into main Jun 10, 2024
47 checks passed
@ftheirs ftheirs deleted the kusama_runtime_upgrade branch June 10, 2024 12:46
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Error signing session.setKeys in polkadot JS.
2 participants