]> git.ipfire.org Git - people/ms/strongswan.git/blobdiff - src/libtpmtss/tpm_tss_trousers.c
pts: Parse TPM 2.0 BIOS/EFI event log
[people/ms/strongswan.git] / src / libtpmtss / tpm_tss_trousers.c
index 9373733542ba8e0eb75b670a3ebf2a380cc42c77..c84b04167b0f70f3f06c05ecf1ca6ae918742789 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 Andreas Steffen
+ * Copyright (C) 2016-2020 Andreas Steffen
  * HSR Hochschule fuer Technik Rapperswil
  *
  * Copyright (c) 2008 Hal Finney
@@ -35,6 +35,8 @@
 #include <trousers/tss.h>
 #include <trousers/trousers.h>
 
+#include <unistd.h>
+
 #define LABEL  "TPM 1.2 -"
 
 /* size in bytes of a TSS AIK public key blob */
@@ -609,6 +611,14 @@ METHOD(tpm_tss_t, get_data, bool,
        return FALSE;
 }
 
+METHOD(tpm_tss_t, get_event_digest, bool,
+       private_tpm_tss_trousers_t *this, int fd, chunk_t *digest)
+{
+       *digest = chunk_alloc(HASH_SIZE_SHA1);
+
+       return read(fd, digest->ptr, digest->len) == digest->len;
+}
+
 METHOD(tpm_tss_t, destroy, void,
        private_tpm_tss_trousers_t *this)
 {
@@ -655,6 +665,7 @@ tpm_tss_t *tpm_tss_trousers_create()
                                .sign = _sign,
                                .get_random = _get_random,
                                .get_data = _get_data,
+                               .get_event_digest = _get_event_digest,
                                .destroy = _destroy,
                        },
                        .load_aik = _load_aik,