1 #ifndef __VTPMMGR_DISK_VTPM_H
2 #define __VTPMMGR_DISK_VTPM_H
3 #include "vtpm_disk.h"
4 
5 /* Read PCR values to determine which unseal to try */
6 void TPM_read_pcrs(void);
7 void TPM_pcr_digest(struct hash160 *buf, le32_t selection);
8 
9 /* Sealing for key storage */
10 int TPM_disk_seal(struct disk_seal_entry *dst, const void* src, size_t size);
11 int TPM_disk_unseal(void *dst, size_t size, const struct disk_seal_entry *src);
12 
13 /*TPM 2.0 Bind and Unbind */
14 TPM_RC TPM2_disk_bind(struct disk_seal_entry *dst, void* src, unsigned int size);
15 TPM_RC TPM2_disk_unbind(void *dst, unsigned int *size, const struct disk_seal_entry *src);
16 
17 /* NVRAM to allow revocation of TM-KEY */
18 int TPM_disk_nvalloc(be32_t *nvram_slot, struct tpm_authdata auth);
19 int TPM_disk_nvread(void *buf, size_t bufsiz, be32_t nvram_slot, struct tpm_authdata auth);
20 int TPM_disk_nvwrite(void *buf, size_t bufsiz, be32_t nvram_slot, struct tpm_authdata auth);
21 int TPM_disk_nvchange(be32_t nvram_slot, struct tpm_authdata old, struct tpm_authdata noo);
22 
23 /* Monotonic counters to detect rollback */
24 int TPM_disk_alloc_counter(be32_t *slot, struct tpm_authdata auth, be32_t *value);
25 int TPM_disk_check_counter(be32_t slot, struct tpm_authdata auth, be32_t value);
26 int TPM_disk_incr_counter(be32_t slot, struct tpm_authdata auth);
27 int TPM_disk_change_counter(be32_t slot, struct tpm_authdata old, struct tpm_authdata noo);
28 
29 #endif
30