You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
4.5 KiB
88 lines
4.5 KiB
From a5f127f8196793c7a4acdfe3fb39e3dfabc1635e Mon Sep 17 00:00:00 2001
|
|
From: Dan Streetman <ddstreet@ieee.org>
|
|
Date: Thu, 6 Jul 2023 11:21:29 -0400
|
|
Subject: [PATCH] test: add DEFINE_HEX_PTR() helper function
|
|
|
|
Use function in test-tpm2 to convert hex strings to void* and len vars.
|
|
|
|
(cherry picked from commit 0fdcfa7812d88fb40b0cd5496e2f96d77b42efb4)
|
|
|
|
Related: RHEL-16182
|
|
---
|
|
src/shared/tests.h | 6 ++++++
|
|
src/test/test-tpm2.c | 25 ++++++++-----------------
|
|
2 files changed, 14 insertions(+), 17 deletions(-)
|
|
|
|
diff --git a/src/shared/tests.h b/src/shared/tests.h
|
|
index a2f7f38c41..6c2a2f1df2 100644
|
|
--- a/src/shared/tests.h
|
|
+++ b/src/shared/tests.h
|
|
@@ -38,6 +38,12 @@ bool have_namespaces(void);
|
|
#define CAN_MEMLOCK_SIZE (512 * 1024U)
|
|
bool can_memlock(void);
|
|
|
|
+/* Define void* buffer and size_t length variables from a hex string. */
|
|
+#define DEFINE_HEX_PTR(name, hex) \
|
|
+ _cleanup_free_ void *name = NULL; \
|
|
+ size_t name##_len = 0; \
|
|
+ assert_se(unhexmem(hex, strlen(hex), &name, &name##_len) >= 0);
|
|
+
|
|
#define TEST_REQ_RUNNING_SYSTEMD(x) \
|
|
if (sd_booted() > 0) { \
|
|
x; \
|
|
diff --git a/src/test/test-tpm2.c b/src/test/test-tpm2.c
|
|
index 4c22d7c691..31988ff6f1 100644
|
|
--- a/src/test/test-tpm2.c
|
|
+++ b/src/test/test-tpm2.c
|
|
@@ -433,17 +433,14 @@ static bool digest_check(const TPM2B_DIGEST *digest, const char *expect) {
|
|
}
|
|
|
|
static void digest_init(TPM2B_DIGEST *digest, const char *hash) {
|
|
- _cleanup_free_ void *h = NULL;
|
|
- size_t s = 0;
|
|
-
|
|
assert_se(strlen(hash) <= sizeof(digest->buffer) * 2);
|
|
|
|
- assert_se(unhexmem(hash, strlen(hash), &h, &s) == 0);
|
|
+ DEFINE_HEX_PTR(h, hash);
|
|
|
|
/* Make sure the length matches a known hash algorithm */
|
|
- assert_se(IN_SET(s, TPM2_SHA1_DIGEST_SIZE, TPM2_SHA256_DIGEST_SIZE, TPM2_SHA384_DIGEST_SIZE, TPM2_SHA512_DIGEST_SIZE));
|
|
+ assert_se(IN_SET(h_len, TPM2_SHA1_DIGEST_SIZE, TPM2_SHA256_DIGEST_SIZE, TPM2_SHA384_DIGEST_SIZE, TPM2_SHA512_DIGEST_SIZE));
|
|
|
|
- *digest = TPM2B_DIGEST_MAKE(h, s);
|
|
+ *digest = TPM2B_DIGEST_MAKE(h, h_len);
|
|
|
|
assert_se(digest_check(digest, hash));
|
|
}
|
|
@@ -720,11 +717,8 @@ static void tpm2b_public_init(TPM2B_PUBLIC *public) {
|
|
},
|
|
};
|
|
|
|
- const char *key = "9ec7341c52093ac40a1965a5df10432513c539adcf905e30577ab6ebc88ffe53cd08cef12ed9bec6125432f4fada3629b8b96d31b8f507aa35029188fe396da823fcb236027f7fbb01b0da3d87be7f999390449ced604bdf7e26c48657cc0671000f1147da195c3861c96642e54427cb7a11572e07567ec3fd6316978abc4bd92b27bb0a0e4958e599804eeb41d682b3b7fc1f960209f80a4fb8a1b64abfd96bf5d554e73cdd6ad1c8becb4fcf5e8f0c3e621d210e5e2f308f6520ad9a966779231b99f06c5989e5a23a9415c8808ab89ce81117632e2f8461cd4428bded40979236aeadafe8de3f51660a45e1dbc87694e6a36360201cca3ff9e7263e712727";
|
|
- _cleanup_free_ void *mem = NULL;
|
|
- size_t len = 0;
|
|
- assert_se(unhexmem(key, strlen(key), &mem, &len) == 0);
|
|
- tpmt.unique.rsa = TPM2B_PUBLIC_KEY_RSA_MAKE(mem, len);
|
|
+ DEFINE_HEX_PTR(key, "9ec7341c52093ac40a1965a5df10432513c539adcf905e30577ab6ebc88ffe53cd08cef12ed9bec6125432f4fada3629b8b96d31b8f507aa35029188fe396da823fcb236027f7fbb01b0da3d87be7f999390449ced604bdf7e26c48657cc0671000f1147da195c3861c96642e54427cb7a11572e07567ec3fd6316978abc4bd92b27bb0a0e4958e599804eeb41d682b3b7fc1f960209f80a4fb8a1b64abfd96bf5d554e73cdd6ad1c8becb4fcf5e8f0c3e621d210e5e2f308f6520ad9a966779231b99f06c5989e5a23a9415c8808ab89ce81117632e2f8461cd4428bded40979236aeadafe8de3f51660a45e1dbc87694e6a36360201cca3ff9e7263e712727");
|
|
+ tpmt.unique.rsa = TPM2B_PUBLIC_KEY_RSA_MAKE(key, key_len);
|
|
|
|
public->publicArea = tpmt;
|
|
}
|
|
@@ -737,12 +731,9 @@ TEST(calculate_name) {
|
|
assert_se(tpm2_calculate_name(&public.publicArea, &name) == 0);
|
|
assert_se(name.size == SHA256_DIGEST_SIZE + 2);
|
|
|
|
- const char *expect = "000be78f74a470dd92e979ca067cdb2293a35f075e8560b436bd2ccea5da21486a07";
|
|
- _cleanup_free_ char *h = hexmem(name.name, name.size);
|
|
- assert_se(h);
|
|
-
|
|
- assert_se(strlen(expect) == strlen(h));
|
|
- assert_se(streq(expect, h));
|
|
+ DEFINE_HEX_PTR(e, "000be78f74a470dd92e979ca067cdb2293a35f075e8560b436bd2ccea5da21486a07");
|
|
+ assert_se(name.size == e_len);
|
|
+ assert_se(memcmp(name.name, e, e_len) == 0);
|
|
}
|
|
|
|
TEST(calculate_policy_auth_value) {
|