From 12189bc0d5ebdc8c2b799143ee5d685d9f4258c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= Date: Mon, 15 Nov 2021 19:00:41 +0100 Subject: [PATCH] =?UTF-8?q?Change=20TPM2=20creation=20metadata=20to=20'UNI?= =?UTF-8?q?X.ns=20dataset=20version'=20from=20'dataset=20RFC3339=20version?= =?UTF-8?q?'=20=E2=80=92=20there's=20only=2064=20bytes=20to=20play=20with?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/tpm2.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/tpm2.cpp b/src/tpm2.cpp index 4872fef..5256e2e 100644 --- a/src/tpm2.cpp +++ b/src/tpm2.cpp @@ -34,20 +34,16 @@ static int try_or_passphrase(const char * what, const char * what_for, ESYS_CONT // TRY_TPM2() unrolled because no constexpr/string-literal-template arguments until C++20, which is not supported by GCC 8, which we need for Buster if(err != TPM2_RC_SUCCESS) return fprintf(stderr, "Couldn't %s: %s\n", what, Tss2_RC_Decode(err)), __LINE__; - return 0; } TPM2B_DATA tpm2_creation_metadata(const char * dataset_name) { - TPM2B_DATA metadata{}; + TPM2B_DATA metadata{}; // 64 bytesish - const auto now = time(nullptr); - const auto now_tm = localtime(&now); - metadata.size = snprintf((char *)metadata.buffer, sizeof(metadata.buffer), "%s %d-%02d-%02dT%02d:%02d:%02d %s", dataset_name, // - now_tm->tm_year + 1900, now_tm->tm_mon + 1, now_tm->tm_mday, now_tm->tm_hour, now_tm->tm_min, now_tm->tm_sec, // - TZPFMS_VERSION) + - 1; + struct timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + metadata.size = snprintf((char *)metadata.buffer, sizeof(metadata.buffer), "%" PRIu64 ".%09ld %s %s", ts.tv_sec, ts.tv_nsec, dataset_name, TZPFMS_VERSION) + 1; metadata.size = metadata.size > sizeof(metadata.buffer) ? sizeof(metadata.buffer) : metadata.size; // fprintf(stderr, "%" PRIu16 "/%zu: \"%s\"\n", metadata.size, sizeof(metadata.buffer), metadata.buffer);