-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathtpm1.h
111 lines (98 loc) · 2.58 KB
/
tpm1.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*
* Copyright (c) 2019 Apertus Solutions, LLC
*
* Author(s):
* Daniel P. Smith <[email protected]>
*
* The definitions in this header are extracted from the Trusted Computing
* Group's "TPM Main Specification", Parts 1-3.
*
*/
#ifndef _TPM1_H
#define _TPM1_H
#include "tpm.h"
/* Section 2.2.3 */
#define TPM_AUTH_DATA_USAGE u8
#define TPM_PAYLOAD_TYPE u8
#define TPM_VERSION_BYTE u8
#define TPM_TAG u16
#define TPM_PROTOCOL_ID u16
#define TPM_STARTUP_TYPE u16
#define TPM_ENC_SCHEME u16
#define TPM_SIG_SCHEME u16
#define TPM_MIGRATE_SCHEME u16
#define TPM_PHYSICAL_PRESENCE u16
#define TPM_ENTITY_TYPE u16
#define TPM_KEY_USAGE u16
#define TPM_EK_TYPE u16
#define TPM_STRUCTURE_TAG u16
#define TPM_PLATFORM_SPECIFIC u16
#define TPM_COMMAND_CODE u32
#define TPM_CAPABILITY_AREA u32
#define TPM_KEY_FLAGS u32
#define TPM_ALGORITHM_ID u32
#define TPM_MODIFIER_INDICATOR u32
#define TPM_ACTUAL_COUNT u32
#define TPM_TRANSPORT_ATTRIBUTES u32
#define TPM_AUTHHANDLE u32
#define TPM_DIRINDEX u32
#define TPM_KEY_HANDLE u32
#define TPM_PCRINDEX u32
#define TPM_RESULT u32
#define TPM_RESOURCE_TYPE u32
#define TPM_KEY_CONTROL u32
#define TPM_NV_INDEX u32 The
#define TPM_FAMILY_ID u32
#define TPM_FAMILY_VERIFICATION u32
#define TPM_STARTUP_EFFECTS u32
#define TPM_SYM_MODE u32
#define TPM_FAMILY_FLAGS u32
#define TPM_DELEGATE_INDEX u32
#define TPM_CMK_DELEGATE u32
#define TPM_COUNT_ID u32
#define TPM_REDIT_COMMAND u32
#define TPM_TRANSHANDLE u32
#define TPM_HANDLE u32
#define TPM_FAMILY_OPERATION u32
/* Section 6 */
#define TPM_TAG_RQU_COMMAND 0x00C1
#define TPM_TAG_RQU_AUTH1_COMMAND 0x00C2
#define TPM_TAG_RQU_AUTH2_COMMAND 0x00C3
#define TPM_TAG_RSP_COMMAND 0x00C4
#define TPM_TAG_RSP_AUTH1_COMMAND 0x00C5
#define TPM_TAG_RSP_AUTH2_COMMAND 0x00C6
/* Section 16 */
#define TPM_SUCCESS 0x0
/* Section 17 */
#define TPM_ORD_EXTEND 0x00000014
#define SHA1_DIGEST_SIZE 20
/* Section 5.4 */
struct tpm_sha1_digest {
u8 digest[SHA1_DIGEST_SIZE];
};
struct tpm_digest {
TPM_PCRINDEX pcr;
union {
struct tpm_sha1_digest sha1;
} digest;
};
#define TPM_DIGEST struct tpm_sha1_digest
#define TPM_CHOSENID_HASH TPM_DIGEST
#define TPM_COMPOSITE_HASH TPM_DIGEST
#define TPM_DIRVALUE TPM_DIGEST
#define TPM_HMAC TPM_DIGEST
#define TPM_PCRVALUE TPM_DIGEST
#define TPM_AUDITDIGEST TPM_DIGEST
#define TPM_DAA_TPM_SEED TPM_DIGEST
#define TPM_DAA_CONTEXT_SEED TPM_DIGEST
struct tpm_extend_cmd {
TPM_PCRINDEX pcr_num;
TPM_DIGEST digest;
};
struct tpm_extend_resp {
TPM_COMMAND_CODE ordinal;
TPM_PCRVALUE digest;
};
/* TPM Commands */
int tpm1_pcr_extend(struct tpm *t, struct tpm_digest *d);
#endif