gpt: add helpers for deriving data partition from verity or verity sig designator

let's add the inverse of the existing partition_verity_of() and
partition_verity_sig_of()
This commit is contained in:
Lennart Poettering
2022-12-06 16:41:06 +01:00
parent 0e336ea265
commit 86adf4a5e8
3 changed files with 47 additions and 0 deletions
+27
View File
@@ -58,6 +58,33 @@ PartitionDesignator partition_verity_sig_of(PartitionDesignator p) {
}
}
PartitionDesignator partition_verity_to_data(PartitionDesignator d) {
switch (d) {
case PARTITION_ROOT_VERITY:
return PARTITION_ROOT;
case PARTITION_USR_VERITY:
return PARTITION_USR;
default:
return _PARTITION_DESIGNATOR_INVALID;
}
}
PartitionDesignator partition_verity_sig_to_data(PartitionDesignator d) {
switch (d) {
case PARTITION_ROOT_VERITY_SIG:
return PARTITION_ROOT;
case PARTITION_USR_VERITY_SIG:
return PARTITION_USR;
default:
return _PARTITION_DESIGNATOR_INVALID;
}
}
static const char *const partition_designator_table[_PARTITION_DESIGNATOR_MAX] = {
[PARTITION_ROOT] = "root",
+2
View File
@@ -32,6 +32,8 @@ bool partition_designator_is_versioned(PartitionDesignator d);
PartitionDesignator partition_verity_of(PartitionDesignator p);
PartitionDesignator partition_verity_sig_of(PartitionDesignator p);
PartitionDesignator partition_verity_to_data(PartitionDesignator d);
PartitionDesignator partition_verity_sig_to_data(PartitionDesignator d);
const char* partition_designator_to_string(PartitionDesignator d) _const_;
PartitionDesignator partition_designator_from_string(const char *name) _pure_;
+18
View File
@@ -46,4 +46,22 @@ TEST(gpt_types_against_architectures) {
}
}
TEST(verity_mappings) {
for (PartitionDesignator p = 0; p < _PARTITION_DESIGNATOR_MAX; p++) {
PartitionDesignator q;
q = partition_verity_of(p);
assert_se(q < 0 || partition_verity_to_data(q) == p);
q = partition_verity_sig_of(p);
assert_se(q < 0 || partition_verity_sig_to_data(q) == p);
q = partition_verity_to_data(p);
assert_se(q < 0 || partition_verity_of(q) == p);
q = partition_verity_sig_to_data(p);
assert_se(q < 0 || partition_verity_sig_of(q) == p);
}
}
DEFINE_TEST_MAIN(LOG_INFO);