Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(478)

Side by Side Diff: src/tspi/tspi_seal.c

Issue 3581012: Upgrade from trousers 0.3.3 to 0.3.6 and from testsuite 0.2 to 0.3. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/trousers.git
Patch Set: git cl push Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/tspi/tspi_ps.c ('k') | testsuite/tcg/Makefile » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Licensed Materials - Property of IBM 3 * Licensed Materials - Property of IBM
4 * 4 *
5 * trousers - An open source TCG Software Stack 5 * trousers - An open source TCG Software Stack
6 * 6 *
7 * (C) Copyright International Business Machines Corp. 2004-2007 7 * (C) Copyright International Business Machines Corp. 2004-2007
8 * 8 *
9 */ 9 */
10 10
(...skipping 24 matching lines...) Expand all
35 TSS_HPOLICY hPolicy, hEncPolicy; 35 TSS_HPOLICY hPolicy, hEncPolicy;
36 BYTE *encData = NULL; 36 BYTE *encData = NULL;
37 BYTE *pcrData = NULL; 37 BYTE *pcrData = NULL;
38 UINT32 encDataSize; 38 UINT32 encDataSize;
39 UINT32 pcrDataSize; 39 UINT32 pcrDataSize;
40 UINT32 pcrInfoType = TSS_PCRS_STRUCT_DEFAULT; 40 UINT32 pcrInfoType = TSS_PCRS_STRUCT_DEFAULT;
41 UINT32 sealOrdinal = TPM_ORD_Seal; 41 UINT32 sealOrdinal = TPM_ORD_Seal;
42 TCS_KEY_HANDLE tcsKeyHandle; 42 TCS_KEY_HANDLE tcsKeyHandle;
43 TSS_HCONTEXT tspContext; 43 TSS_HCONTEXT tspContext;
44 Trspi_HashCtx hashCtx; 44 Trspi_HashCtx hashCtx;
45 » BYTE *sealData; 45 » BYTE *sealData = NULL;
46 struct authsess *xsap = NULL; 46 struct authsess *xsap = NULL;
47 #ifdef TSS_BUILD_SEALX 47 #ifdef TSS_BUILD_SEALX
48 UINT32 protectMode; 48 UINT32 protectMode;
49 #endif 49 #endif
50 50
51 if (rgbDataToSeal == NULL) 51 if (rgbDataToSeal == NULL)
52 return TSPERR(TSS_E_BAD_PARAMETER); 52 return TSPERR(TSS_E_BAD_PARAMETER);
53 53
54 if ((result = obj_encdata_get_tsp_context(hEncData, &tspContext))) 54 if ((result = obj_encdata_get_tsp_context(hEncData, &tspContext)))
55 return result; 55 return result;
(...skipping 28 matching lines...) Expand all
84 /* If PCR's are of interest */ 84 /* If PCR's are of interest */
85 pcrDataSize = 0; 85 pcrDataSize = 0;
86 if (hPcrComposite) { 86 if (hPcrComposite) {
87 if ((result = obj_pcrs_create_info_type(hPcrComposite, &pcrInfoT ype, &pcrDataSize, 87 if ((result = obj_pcrs_create_info_type(hPcrComposite, &pcrInfoT ype, &pcrDataSize,
88 &pcrData))) 88 &pcrData)))
89 return result; 89 return result;
90 } 90 }
91 91
92 if ((result = authsess_xsap_init(tspContext, hEncKey, hEncData, TSS_AUTH _POLICY_REQUIRED, 92 if ((result = authsess_xsap_init(tspContext, hEncKey, hEncData, TSS_AUTH _POLICY_REQUIRED,
93 sealOrdinal, TPM_ET_KEYHANDLE, &xsap))) 93 sealOrdinal, TPM_ET_KEYHANDLE, &xsap)))
94 » » return result; 94 » » goto error;
95 95
96 #ifdef TSS_BUILD_SEALX 96 #ifdef TSS_BUILD_SEALX
97 if (sealOrdinal == TPM_ORD_Seal) 97 if (sealOrdinal == TPM_ORD_Seal)
98 sealData = rgbDataToSeal; 98 sealData = rgbDataToSeal;
99 else { 99 else {
100 sealData = NULL;
101 if ((sealData = (BYTE *)calloc(1, ulDataLength)) == NULL) { 100 if ((sealData = (BYTE *)calloc(1, ulDataLength)) == NULL) {
102 LogError("malloc of %u bytes failed", ulDataLength); 101 LogError("malloc of %u bytes failed", ulDataLength);
103 result = TSPERR(TSS_E_OUTOFMEMORY); 102 result = TSPERR(TSS_E_OUTOFMEMORY);
104 goto error; 103 goto error;
105 } 104 }
106 105
107 if ((result = 106 if ((result =
108 ((TSS_RESULT (*)(PVOID, TSS_HKEY, TSS_HENCDATA, TSS_ALGORIT HM_ID, 107 ((TSS_RESULT (*)(PVOID, TSS_HKEY, TSS_HENCDATA, TSS_ALGORIT HM_ID,
109 UINT32, BYTE *, BYTE *, BYTE *, BYTE *, UINT32, BYTE *, 108 UINT32, BYTE *, BYTE *, BYTE *, BYTE *, UINT32, BYTE *,
110 BYTE *))xsap->cb_sealx.callback)(xsap->cb_sealx.appData, hE ncKey, hEncData, 109 BYTE *))xsap->cb_sealx.callback)(xsap->cb_sealx.appData, hE ncKey, hEncData,
(...skipping 10 matching lines...) Expand all
121 #endif 120 #endif
122 121
123 result = Trspi_HashInit(&hashCtx, TSS_HASH_SHA1); 122 result = Trspi_HashInit(&hashCtx, TSS_HASH_SHA1);
124 result |= Trspi_Hash_UINT32(&hashCtx, sealOrdinal); 123 result |= Trspi_Hash_UINT32(&hashCtx, sealOrdinal);
125 result |= Trspi_Hash_ENCAUTH(&hashCtx, xsap->encAuthUse.authdata); 124 result |= Trspi_Hash_ENCAUTH(&hashCtx, xsap->encAuthUse.authdata);
126 result |= Trspi_Hash_UINT32(&hashCtx, pcrDataSize); 125 result |= Trspi_Hash_UINT32(&hashCtx, pcrDataSize);
127 result |= Trspi_HashUpdate(&hashCtx, pcrDataSize, pcrData); 126 result |= Trspi_HashUpdate(&hashCtx, pcrDataSize, pcrData);
128 result |= Trspi_Hash_UINT32(&hashCtx, ulDataLength); 127 result |= Trspi_Hash_UINT32(&hashCtx, ulDataLength);
129 result |= Trspi_HashUpdate(&hashCtx, ulDataLength, sealData); 128 result |= Trspi_HashUpdate(&hashCtx, ulDataLength, sealData);
130 if ((result |= Trspi_HashFinal(&hashCtx, digest.digest))) { 129 if ((result |= Trspi_HashFinal(&hashCtx, digest.digest))) {
131 if (sealData != rgbDataToSeal)
132 free(sealData);
133 goto error; 130 goto error;
134 } 131 }
135 132
136 if ((result = authsess_xsap_hmac(xsap, &digest))) 133 if ((result = authsess_xsap_hmac(xsap, &digest)))
137 goto error; 134 goto error;
138 135
139 #ifdef TSS_BUILD_SEALX 136 #ifdef TSS_BUILD_SEALX
140 if (sealOrdinal == TPM_ORD_Seal) { 137 if (sealOrdinal == TPM_ORD_Seal) {
141 if ((result = TCS_API(tspContext)->Seal(tspContext, tcsKeyHandle , &xsap->encAuthUse, 138 if ((result = TCS_API(tspContext)->Seal(tspContext, tcsKeyHandle , &xsap->encAuthUse,
142 pcrDataSize, pcrData, ul DataLength, 139 pcrDataSize, pcrData, ul DataLength,
143 sealData, xsap->pAuth, & encDataSize, 140 sealData, xsap->pAuth, & encDataSize,
144 » » » » » » » &encData))) 141 » » » » » » » &encData))) {
145 » » » return result; 142 » » » goto error;
143 » » }
146 } else if (sealOrdinal == TPM_ORD_Sealx) { 144 } else if (sealOrdinal == TPM_ORD_Sealx) {
147 » » result = TCS_API(tspContext)->Sealx(tspContext, tcsKeyHandle, &x sap->encAuthUse, 145 » » if ((result = TCS_API(tspContext)->Sealx(tspContext, tcsKeyHandl e, &xsap->encAuthUse,
148 pcrDataSize, pcrData, ulData Length, sealData, 146 pcrDataSize, pcrData, ulData Length, sealData,
149 » » » » » » xsap->pAuth, &encDataSize, & encData); 147 » » » » » » xsap->pAuth, &encDataSize, & encData))) {
150 » » free(sealData);
151
152 » » if (result != TSS_SUCCESS)
153 goto error; 148 goto error;
149 }
154 } else { 150 } else {
155 result = TSPERR(TSS_E_INTERNAL_ERROR); 151 result = TSPERR(TSS_E_INTERNAL_ERROR);
156 goto error; 152 goto error;
157 } 153 }
158 #else 154 #else
159 if ((result = TCS_API(tspContext)->Seal(tspContext, tcsKeyHandle, &xsap- >encAuthUse, 155 if ((result = TCS_API(tspContext)->Seal(tspContext, tcsKeyHandle, &xsap- >encAuthUse,
160 pcrDataSize, pcrData, ulDataLeng th, sealData, 156 pcrDataSize, pcrData, ulDataLeng th, sealData,
161 xsap->pAuth, &encDataSize, &encD ata))) 157 xsap->pAuth, &encDataSize, &encD ata)))
162 goto error; 158 goto error;
163 #endif 159 #endif
(...skipping 12 matching lines...) Expand all
176 if ((result = obj_encdata_set_data(hEncData, encDataSize, encData))) 172 if ((result = obj_encdata_set_data(hEncData, encDataSize, encData)))
177 goto error; 173 goto error;
178 174
179 if (pcrDataSize) 175 if (pcrDataSize)
180 result = obj_encdata_set_pcr_info(hEncData, pcrInfoType, pcrData ); 176 result = obj_encdata_set_pcr_info(hEncData, pcrInfoType, pcrData );
181 177
182 error: 178 error:
183 authsess_free(xsap); 179 authsess_free(xsap);
184 free(encData); 180 free(encData);
185 free(pcrData); 181 free(pcrData);
186 182 » if (sealData != rgbDataToSeal)
183 » » free(sealData);
187 return result; 184 return result;
188 } 185 }
189 186
190 TSS_RESULT 187 TSS_RESULT
191 Tspi_Data_Unseal(TSS_HENCDATA hEncData, /* in */ 188 Tspi_Data_Unseal(TSS_HENCDATA hEncData, /* in */
192 TSS_HKEY hKey, /* in */ 189 TSS_HKEY hKey, /* in */
193 UINT32 * pulUnsealedDataLength,/* out */ 190 UINT32 * pulUnsealedDataLength,/* out */
194 BYTE ** prgbUnsealedData) /* out */ 191 BYTE ** prgbUnsealedData) /* out */
195 { 192 {
196 UINT64 offset; 193 UINT64 offset;
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 *pulUnsealedDataLength = unSealedDataLen; 318 *pulUnsealedDataLength = unSealedDataLen;
322 *prgbUnsealedData = unSealedData; 319 *prgbUnsealedData = unSealedData;
323 320
324 error: 321 error:
325 authsess_free(xsap); 322 authsess_free(xsap);
326 if (data) 323 if (data)
327 free_tspi(tspContext, data); 324 free_tspi(tspContext, data);
328 325
329 return result; 326 return result;
330 } 327 }
OLDNEW
« no previous file with comments | « src/tspi/tspi_ps.c ('k') | testsuite/tcg/Makefile » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698