aboutsummaryrefslogtreecommitdiffstats
path: root/stubdom/vtpmmgr/tpm.h
blob: 304e1450f8bb16f7782d429def17c97395333d50 (plain)
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
/*
 * Copyright (c) 2010-2012 United States Government, as represented by
 * the Secretary of Defense.  All rights reserved.
 *
 * based off of the original tools/vtpm_manager code base which is:
 * Copyright (c) 2005/2006, Intel Corp.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *   * Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *   * Redistributions in binary form must reproduce the above
 *     copyright notice, this list of conditions and the following
 *     disclaimer in the documentation and/or other materials provided
 *     with the distribution.
 *   * Neither the name of Intel Corporation nor the names of its
 *     contributors may be used to endorse or promote products derived
 *     from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
*/

#ifndef __TPM_H__
#define __TPM_H__

#include "tcg.h"

// ------------------------------------------------------------------
// Exposed API
// ------------------------------------------------------------------

// TPM v1.1B Command Set

// Authorzation
TPM_RESULT TPM_OIAP(
      TPM_AUTH_SESSION*   auth //out
      );

TPM_RESULT TPM_OSAP (
      TPM_ENTITY_TYPE entityType,  // in
      UINT32    entityValue, // in
      const TPM_AUTHDATA* usageAuth, //in
      TPM_SECRET *sharedSecret, //out
      TPM_AUTH_SESSION *auth);

TPM_RESULT TPM_TakeOwnership(
      const TPM_PUBKEY *pubEK, //in
      const TPM_AUTHDATA* ownerAuth, //in
      const TPM_AUTHDATA* srkAuth, //in
      const TPM_KEY* inSrk, //in
      TPM_KEY* outSrk, //out, optional
      TPM_AUTH_SESSION*   auth   // in, out
      );

TPM_RESULT TPM_DisablePubekRead (
      const TPM_AUTHDATA* ownerAuth,
      TPM_AUTH_SESSION*   auth
      );

TPM_RESULT TPM_TerminateHandle ( TPM_AUTHHANDLE  handle  // in
      );

TPM_RESULT TPM_FlushSpecific ( TPM_HANDLE  handle,  // in
      TPM_RESOURCE_TYPE resourceType //in
      );

// TPM Mandatory
TPM_RESULT TPM_Extend ( TPM_PCRINDEX  pcrNum,  // in
      TPM_DIGEST   inDigest, // in
      TPM_PCRVALUE*   outDigest // out
      );

TPM_RESULT TPM_PcrRead ( TPM_PCRINDEX  pcrNum,  // in
      TPM_PCRVALUE*  outDigest // out
      );

TPM_RESULT TPM_Quote ( TCS_KEY_HANDLE  keyHandle,  // in
      TPM_NONCE   antiReplay,  // in
      UINT32*    PcrDataSize, // in, out
      BYTE**    PcrData,  // in, out
      TPM_AUTH_SESSION*   privAuth,  // in, out
      UINT32*    sigSize,  // out
      BYTE**    sig    // out
      );

TPM_RESULT TPM_Seal(
      TCS_KEY_HANDLE  keyHandle,  // in
      UINT32    pcrInfoSize, // in
      TPM_PCR_INFO*    pcrInfo,  // in
      UINT32    inDataSize,  // in
      const BYTE*    inData,   // in
      TPM_STORED_DATA* sealedData, //out
      const TPM_SECRET* osapSharedSecret, //in
      const TPM_AUTHDATA* sealDataAuth, //in
      TPM_AUTH_SESSION*   pubAuth  // in, out
      );

TPM_RESULT TPM_Unseal (
      TPM_KEY_HANDLE parentHandle, // in
      const TPM_STORED_DATA* sealedData,
      UINT32*   outSize,  // out
      BYTE**    out, //out
      const TPM_AUTHDATA* key_usage_auth, //in
      const TPM_AUTHDATA* data_usage_auth, //in
      TPM_AUTH_SESSION*   keyAuth,  // in, out
      TPM_AUTH_SESSION*   dataAuth  // in, out
      );

TPM_RESULT TPM_DirWriteAuth ( TPM_DIRINDEX  dirIndex,  // in
      TPM_DIRVALUE  newContents, // in
      TPM_AUTH_SESSION*   ownerAuth  // in, out
      );

TPM_RESULT TPM_DirRead ( TPM_DIRINDEX  dirIndex, // in
      TPM_DIRVALUE*  dirValue // out
      );

TPM_RESULT TPM_Bind(
      const TPM_KEY* key, //in
      const BYTE* in, //in
      UINT32 ilen, //in
      BYTE* out //out, must be at least cipher block size
      );

TPM_RESULT TPM_UnBind (
      TCS_KEY_HANDLE  keyHandle,  // in
      UINT32 ilen, //in
      const BYTE* in, //
      UINT32*   outDataSize, // out
      BYTE*    outData, //out
      const TPM_AUTHDATA* usage_auth,
      TPM_AUTH_SESSION* auth //in, out
      );

TPM_RESULT TPM_CreateWrapKey (
      TCS_KEY_HANDLE  hWrappingKey,  // in
      const TPM_AUTHDATA* osapSharedSecret,
      const TPM_AUTHDATA* dataUsageAuth, //in
      const TPM_AUTHDATA* dataMigrationAuth, //in
      TPM_KEY*     key, //in
      TPM_AUTH_SESSION*   pAuth    // in, out
      );

TPM_RESULT TPM_LoadKey (
      TPM_KEY_HANDLE  parentHandle, //
      const TPM_KEY* key, //in
      TPM_HANDLE*  keyHandle,    // out
      const TPM_AUTHDATA* usage_auth,
      TPM_AUTH_SESSION* auth
      );

TPM_RESULT TPM_GetPubKey (  TCS_KEY_HANDLE  hKey,   // in
      TPM_AUTH_SESSION*   pAuth,   // in, out
      UINT32*    pcPubKeySize, // out
      BYTE**    prgbPubKey  // out
      );

TPM_RESULT TPM_EvictKey ( TCS_KEY_HANDLE  hKey  // in
      );

TPM_RESULT TPM_FlushSpecific(TPM_HANDLE handle, //in
      TPM_RESOURCE_TYPE rt //in
      );

TPM_RESULT TPM_Sign ( TCS_KEY_HANDLE  keyHandle,  // in
      UINT32    areaToSignSize, // in
      BYTE*    areaToSign,  // in
      TPM_AUTH_SESSION*   privAuth,  // in, out
      UINT32*    sigSize,  // out
      BYTE**    sig    // out
      );

TPM_RESULT TPM_GetRandom (  UINT32*    bytesRequested, // in, out
      BYTE*    randomBytes  // out
      );

TPM_RESULT TPM_StirRandom (  UINT32    inDataSize, // in
      BYTE*    inData  // in
      );

TPM_RESULT TPM_ReadPubek (
      TPM_PUBKEY* pubEK //out
      );

TPM_RESULT TPM_GetCapability(
      TPM_CAPABILITY_AREA capArea,
      UINT32 subCapSize,
      const BYTE* subCap,
      UINT32* respSize,
      BYTE** resp);

TPM_RESULT TPM_SaveState(void);

TPM_RESULT TPM_CreateEndorsementKeyPair(
      const TPM_KEY_PARMS* keyInfo,
      TPM_PUBKEY* pubEK);

TPM_RESULT TPM_TransmitData(
      BYTE* in,
      UINT32 insize,
      BYTE* out,
      UINT32* outsize);

#endif //TPM_H