From: Lennart Poettering Date: Wed, 30 Nov 2022 17:55:40 +0000 (+0100) Subject: gpt: add helpers for deriving data partition from verity or verity sig designator X-Git-Tag: v253-rc1~357 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=86adf4a5e82e631e0dee391954ca92e480920667;p=thirdparty%2Fsystemd.git 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() --- diff --git a/src/shared/gpt.c b/src/shared/gpt.c index 99795530bd9..3e1a385124d 100644 --- a/src/shared/gpt.c +++ b/src/shared/gpt.c @@ -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", diff --git a/src/shared/gpt.h b/src/shared/gpt.h index 03af12c9e3d..bebfbc61167 100644 --- a/src/shared/gpt.h +++ b/src/shared/gpt.h @@ -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_; diff --git a/src/test/test-gpt.c b/src/test/test-gpt.c index 377b79f1556..b8a54055c2b 100644 --- a/src/test/test-gpt.c +++ b/src/test/test-gpt.c @@ -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);