summaryrefslogtreecommitdiff
path: root/src/shared/tpm2-util.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2022-08-12 15:36:14 +0200
committerLennart Poettering <lennart@poettering.net>2022-09-08 16:27:07 +0200
commitbad4c73c37bf4c5ed85e5c41cfdb9a014eb08a17 (patch)
tree9306bc436a12d7a5a03a6484d3c954bd0a949727 /src/shared/tpm2-util.h
parent0d75641388d41e6c493682bc7e6380b981c6ad99 (diff)
downloadsystemd-bad4c73c37bf4c5ed85e5c41cfdb9a014eb08a17.tar.gz
tpm2-util: allow external code to create tpm2 contexts
Diffstat (limited to 'src/shared/tpm2-util.h')
-rw-r--r--src/shared/tpm2-util.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/shared/tpm2-util.h b/src/shared/tpm2-util.h
index fa3ac89da7..cc40027c1b 100644
--- a/src/shared/tpm2-util.h
+++ b/src/shared/tpm2-util.h
@@ -51,8 +51,28 @@ int dlopen_tpm2(void);
int tpm2_seal(const char *device, uint32_t pcr_mask, const char *pin, void **ret_secret, size_t *ret_secret_size, void **ret_blob, size_t *ret_blob_size, void **ret_pcr_hash, size_t *ret_pcr_hash_size, uint16_t *ret_pcr_bank, uint16_t *ret_primary_alg);
int tpm2_unseal(const char *device, uint32_t pcr_mask, uint16_t pcr_bank, uint16_t primary_alg, const void *blob, size_t blob_size, const void *pcr_hash, size_t pcr_hash_size, const char *pin, void **ret_secret, size_t *ret_secret_size);
+struct tpm2_context {
+ void *tcti_dl;
+ TSS2_TCTI_CONTEXT *tcti_context;
+ ESYS_CONTEXT *esys_context;
+};
+
+ESYS_TR tpm2_flush_context_verbose(ESYS_CONTEXT *c, ESYS_TR handle);
+
+void tpm2_pcr_mask_to_selection(uint32_t mask, uint16_t bank, TPML_PCR_SELECTION *ret);
+
+static inline void Esys_Freep(void *p) {
+ if (*(void**) p)
+ sym_Esys_Free(*(void**) p);
+}
+
+#else
+struct tpm2_context;
#endif
+int tpm2_context_init(const char *device, struct tpm2_context *ret);
+void tpm2_context_destroy(struct tpm2_context *c);
+
int tpm2_list_devices(void);
int tpm2_find_device_auto(int log_level, char **ret);