From 4d5cc0d45322e71cf02cbef3022ff745e4bb3433 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 19 Aug 2022 22:18:31 +0200 Subject: [PATCH] tpm2-util: add helper for formatting PCR masks as string --- src/shared/tpm2-util.c | 19 +++++++++++++++++++ src/shared/tpm2-util.h | 2 ++ 2 files changed, 21 insertions(+) diff --git a/src/shared/tpm2-util.c b/src/shared/tpm2-util.c index f5b97fae73a..7c9eb77f95d 100644 --- a/src/shared/tpm2-util.c +++ b/src/shared/tpm2-util.c @@ -2160,3 +2160,22 @@ int tpm2_load_pcr_public_key(const char *path, void **ret_pubkey, size_t *ret_pu return 0; } + +int pcr_mask_to_string(uint32_t mask, char **ret) { + _cleanup_free_ char *buf = NULL; + int r; + + assert(ret); + + for (unsigned i = 0; i < TPM2_PCRS_MAX; i++) { + if (!(mask & (UINT32_C(1) << i))) + continue; + + r = strextendf_with_separator(&buf, "+", "%u", i); + if (r < 0) + return r; + } + + *ret = TAKE_PTR(buf); + return 0; +} diff --git a/src/shared/tpm2-util.h b/src/shared/tpm2-util.h index 2ff7c0eb63b..554ca58df6a 100644 --- a/src/shared/tpm2-util.h +++ b/src/shared/tpm2-util.h @@ -146,3 +146,5 @@ int tpm2_parse_pcr_argument(const char *arg, uint32_t *mask); int tpm2_load_pcr_signature(const char *path, JsonVariant **ret); int tpm2_load_pcr_public_key(const char *path, void **ret_pubkey, size_t *ret_pubkey_size); + +int pcr_mask_to_string(uint32_t mask, char **ret); -- 2.47.3