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

Side by Side Diff: mtm/mtm_marshalling.c

Issue 660204: Upgrade to tpm-emulator version 0.7. (Closed)
Patch Set: Created 10 years, 9 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
« no previous file with comments | « mtm/mtm_marshalling.h ('k') | mtm/mtm_structures.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /* Software-based Mobile Trusted Module (MTM) Emulator
2 * Copyright (C) 2004-2010 Mario Strasser <mast@gmx.net>
3 *
4 * This module is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published
6 * by the Free Software Foundation; either version 2 of the License,
7 * or (at your option) any later version.
8 *
9 * This module is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * $Id$
15 */
16
17 #include "mtm_marshalling.h"
18
19 int tpm_marshal_MTM_PERMANENT_DATA(BYTE **ptr, UINT32 *length, MTM_PERMANENT_DAT A *v)
20 {
21 int i;
22 if (tpm_marshal_TPM_STRUCTURE_TAG(ptr, length, v->tag)
23 || tpm_marshal_BYTE(ptr, length, v->specMajor)
24 || tpm_marshal_BYTE(ptr, length, v->specMinor)
25 || tpm_marshal_TPM_PCR_SELECTION(ptr, length, &v->verifiedPCRs)
26 || tpm_marshal_TPM_COUNT_ID(ptr, length, v->counterRimProtectId)
27 || tpm_marshal_TPM_COUNT_ID(ptr, length, v->counterStorageProtectId)
28 || tpm_marshal_BYTE(ptr, length, v->loadVerificationKeyMethods)
29 || tpm_marshal_BOOL(ptr, length, v->integrityCheckRootValid)
30 || tpm_marshal_BYTE_ARRAY(ptr, length, v->integrityCheckRootData,
31 sizeof(v->integrityCheckRootData))
32 || tpm_marshal_TPM_SECRET(ptr, length, &v->internalVerificationKey)) retur n -1;
33 for (i = 0; i < MTM_MAX_KEYS; i++) {
34 if (tpm_marshal_MTM_KEY_DATA(ptr, length, &v->keys[i])) return -1;
35 }
36 return 0;
37 }
38
39 int tpm_unmarshal_MTM_PERMANENT_DATA(BYTE **ptr, UINT32 *length, MTM_PERMANENT_D ATA *v)
40 {
41 int i;
42 if (tpm_unmarshal_TPM_STRUCTURE_TAG(ptr, length, &v->tag)
43 || tpm_unmarshal_BYTE(ptr, length, &v->specMajor)
44 || tpm_unmarshal_BYTE(ptr, length, &v->specMinor)
45 || tpm_unmarshal_TPM_PCR_SELECTION(ptr, length, &v->verifiedPCRs)
46 || tpm_unmarshal_TPM_COUNT_ID(ptr, length, &v->counterRimProtectId)
47 || tpm_unmarshal_TPM_COUNT_ID(ptr, length, &v->counterStorageProtectId)
48 || tpm_unmarshal_BYTE(ptr, length, &v->loadVerificationKeyMethods)
49 || tpm_unmarshal_BOOL(ptr, length, &v->integrityCheckRootValid)
50 || tpm_unmarshal_BYTE_ARRAY(ptr, length, v->integrityCheckRootData,
51 sizeof(v->integrityCheckRootData))
52 || tpm_unmarshal_TPM_SECRET(ptr, length, &v->internalVerificationKey)) ret urn -1;
53 for (i = 0; i < MTM_MAX_KEYS; i++) {
54 if (tpm_unmarshal_MTM_KEY_DATA(ptr, length, &v->keys[i])) return -1;
55 }
56 return 0;
57 }
58
59 int tpm_marshal_MTM_STANY_FLAGS(BYTE **ptr, UINT32 *length, MTM_STANY_FLAGS *v)
60 {
61 if (tpm_marshal_TPM_TAG(ptr, length, v->tag)
62 || tpm_marshal_BOOL(ptr, length, v->loadVerificationRootKeyEnabled)) retur n -1;
63 return 0;
64 }
65
66 int tpm_unmarshal_MTM_STANY_FLAGS(BYTE **ptr, UINT32 *length, MTM_STANY_FLAGS *v )
67 {
68 if (tpm_unmarshal_TPM_TAG(ptr, length, &v->tag)
69 || tpm_unmarshal_BOOL(ptr, length, &v->loadVerificationRootKeyEnabled)) re turn -1;
70 return 0;
71 }
72
73 int tpm_marshal_MTM_COUNTER_REFERENCE(BYTE **ptr, UINT32 *length, MTM_COUNTER_RE FERENCE *v)
74 {
75 if (tpm_marshal_BYTE(ptr, length, v->counterSelection)
76 || tpm_marshal_TPM_ACTUAL_COUNT(ptr, length, v->counterValue)) return -1;
77 return 0;
78 }
79
80 int tpm_unmarshal_MTM_COUNTER_REFERENCE(BYTE **ptr, UINT32 *length, MTM_COUNTER_ REFERENCE *v)
81 {
82 if (tpm_unmarshal_BYTE(ptr, length, &v->counterSelection)
83 || tpm_unmarshal_TPM_ACTUAL_COUNT(ptr, length, &v->counterValue)) return - 1;
84 return 0;
85 }
86
87 int tpm_marshal_TPM_RIM_CERTIFICATE(BYTE **ptr, UINT32 *length, TPM_RIM_CERTIFIC ATE *v)
88 {
89 if (tpm_marshal_TPM_STRUCTURE_TAG(ptr, length, v->tag)
90 || tpm_marshal_BYTE_ARRAY(ptr, length, v->label, 8)
91 || tpm_marshal_UINT32(ptr, length, v->rimVersion)
92 || tpm_marshal_MTM_COUNTER_REFERENCE(ptr, length, &v->referenceCounter)
93 || tpm_marshal_TPM_PCR_INFO_SHORT(ptr, length, &v->state)
94 || tpm_marshal_UINT32(ptr, length, v->measurementPcrIndex)
95 || tpm_marshal_TPM_PCRVALUE(ptr, length, &v->measurementValue)
96 || tpm_marshal_TPM_VERIFICATION_KEY_ID(ptr, length, v->parentId)
97 || tpm_marshal_BYTE(ptr, length, v->extensionDigestSize)
98 || (v->extensionDigestSize > 0
99 && tpm_marshal_BLOB(ptr, length, v->extensionDigestData, v->extensionD igestSize))
100 || tpm_marshal_UINT32(ptr, length, v->integrityCheckSize)
101 || (v->integrityCheckSize > 0
102 && tpm_marshal_BLOB(ptr, length, v->integrityCheckData, v->integrityCh eckSize))) return -1;
103 return 0;
104 }
105
106 int tpm_unmarshal_TPM_RIM_CERTIFICATE(BYTE **ptr, UINT32 *length, TPM_RIM_CERTIF ICATE *v)
107 {
108 if (tpm_unmarshal_TPM_STRUCTURE_TAG(ptr, length, &v->tag)
109 || tpm_unmarshal_BYTE_ARRAY(ptr, length, v->label, 8)
110 || tpm_unmarshal_UINT32(ptr, length, &v->rimVersion)
111 || tpm_unmarshal_MTM_COUNTER_REFERENCE(ptr, length, &v->referenceCounter)
112 || tpm_unmarshal_TPM_PCR_INFO_SHORT(ptr, length, &v->state)
113 || tpm_unmarshal_UINT32(ptr, length, &v->measurementPcrIndex)
114 || tpm_unmarshal_TPM_PCRVALUE(ptr, length, &v->measurementValue)
115 || tpm_unmarshal_TPM_VERIFICATION_KEY_ID(ptr, length, &v->parentId)
116 || tpm_unmarshal_BYTE(ptr, length, &v->extensionDigestSize)
117 || (v->extensionDigestSize > 0
118 && tpm_unmarshal_BLOB(ptr, length, &v->extensionDigestData, v->extensi onDigestSize))
119 || tpm_unmarshal_UINT32(ptr, length, &v->integrityCheckSize)
120 || (v->integrityCheckSize > 0
121 && tpm_unmarshal_BLOB(ptr, length, &v->integrityCheckData, v->integrit yCheckSize))) return -1;
122 return 0;
123 }
124
125 int tpm_marshal_TPM_VERIFICATION_KEY(BYTE **ptr, UINT32 *length, TPM_VERIFICATIO N_KEY *v)
126 {
127 if (tpm_marshal_TPM_STRUCTURE_TAG(ptr, length, v->tag)
128 || tpm_marshal_UINT16(ptr, length, v->usageFlags)
129 || tpm_marshal_TPM_VERIFICATION_KEY_ID(ptr, length, v->parentId)
130 || tpm_marshal_TPM_VERIFICATION_KEY_ID(ptr, length, v->myId)
131 || tpm_marshal_MTM_COUNTER_REFERENCE(ptr, length, &v->referenceCounter)
132 || tpm_marshal_TPM_ALGORITHM_ID(ptr, length, v->keyAlgorithm)
133 || tpm_marshal_TPM_SIG_SCHEME(ptr, length, v->keyScheme)
134 || tpm_marshal_BYTE(ptr, length, v->extensionDigestSize)
135 || (v->extensionDigestSize > 0
136 && tpm_marshal_BLOB(ptr, length, v->extensionDigestData, v->extensionD igestSize))
137 || tpm_marshal_UINT32(ptr, length, v->keySize)
138 || (v->keySize > 0 && tpm_marshal_BLOB(ptr, length, v->keyData, v->keySize ))
139 || tpm_marshal_UINT32(ptr, length, v->integrityCheckSize)
140 || (v->integrityCheckSize > 0
141 && tpm_marshal_BLOB(ptr, length, v->integrityCheckData, v->integrityCh eckSize))) return -1;
142 return 0;
143 }
144
145 int tpm_unmarshal_TPM_VERIFICATION_KEY(BYTE **ptr, UINT32 *length, TPM_VERIFICAT ION_KEY *v)
146 {
147 if (tpm_unmarshal_TPM_STRUCTURE_TAG(ptr, length, &v->tag)
148 || tpm_unmarshal_UINT16(ptr, length, &v->usageFlags)
149 || tpm_unmarshal_TPM_VERIFICATION_KEY_ID(ptr, length, &v->parentId)
150 || tpm_unmarshal_TPM_VERIFICATION_KEY_ID(ptr, length, &v->myId)
151 || tpm_unmarshal_MTM_COUNTER_REFERENCE(ptr, length, &v->referenceCounter)
152 || tpm_unmarshal_TPM_ALGORITHM_ID(ptr, length, &v->keyAlgorithm)
153 || tpm_unmarshal_TPM_SIG_SCHEME(ptr, length, &v->keyScheme)
154 || tpm_unmarshal_BYTE(ptr, length, &v->extensionDigestSize)
155 || (v->extensionDigestSize > 0
156 && tpm_unmarshal_BLOB(ptr, length, &v->extensionDigestData, v->extensi onDigestSize))
157 || tpm_unmarshal_UINT32(ptr, length, &v->keySize)
158 || (v->keySize > 0 && tpm_unmarshal_BLOB(ptr, length, &v->keyData, v->keyS ize))
159 || tpm_unmarshal_UINT32(ptr, length, &v->integrityCheckSize)
160 || (v->integrityCheckSize > 0
161 && tpm_unmarshal_BLOB(ptr, length, &v->integrityCheckData, v->integrit yCheckSize))) return -1;
162 return 0;
163 }
164
165 int tpm_marshal_MTM_KEY_DATA(BYTE **ptr, UINT32 *length, MTM_KEY_DATA *v)
166 {
167 if (tpm_marshal_BOOL(ptr, length, v->valid)) return -1;
168 if (v->valid) {
169 if (tpm_marshal_UINT16(ptr, length, v->usageFlags)
170 || tpm_marshal_TPM_VERIFICATION_KEY_ID(ptr, length, v->parentId)
171 || tpm_marshal_TPM_VERIFICATION_KEY_ID(ptr, length, v->myId)
172 || tpm_marshal_TPM_ALGORITHM_ID(ptr, length, v->keyAlgorithm)
173 || tpm_marshal_TPM_SIG_SCHEME(ptr, length, v->keyScheme)
174 || tpm_marshal_RSAPub(ptr, length, &v->key)) return -1;
175 }
176 return 0;
177 }
178
179 int tpm_unmarshal_MTM_KEY_DATA(BYTE **ptr, UINT32 *length, MTM_KEY_DATA *v)
180 {
181 if (tpm_unmarshal_BOOL(ptr, length, &v->valid)) return -1;
182 if (v->valid) {
183 if (tpm_unmarshal_UINT16(ptr, length, &v->usageFlags)
184 || tpm_unmarshal_TPM_VERIFICATION_KEY_ID(ptr, length, &v->parentId)
185 || tpm_unmarshal_TPM_VERIFICATION_KEY_ID(ptr, length, &v->myId)
186 || tpm_unmarshal_TPM_ALGORITHM_ID(ptr, length, &v->keyAlgorithm)
187 || tpm_unmarshal_TPM_SIG_SCHEME(ptr, length, &v->keyScheme)
188 || tpm_unmarshal_RSAPub(ptr, length, &v->key)) return -1;
189 }
190 return 0;
191 }
192
193 int tpm_marshal_MTM_DATA(BYTE **ptr, UINT32 *length, MTM_DATA *v)
194 {
195 if (tpm_marshal_MTM_PERMANENT_DATA(ptr, length, &v->permanent.data)
196 || tpm_marshal_MTM_STANY_FLAGS(ptr, length, &v->stany.flags)) return -1;
197 return 0;
198 }
199
200 int tpm_unmarshal_MTM_DATA(BYTE **ptr, UINT32 *length, MTM_DATA *v)
201 {
202 if (tpm_unmarshal_MTM_PERMANENT_DATA(ptr, length, &v->permanent.data)
203 || tpm_unmarshal_MTM_STANY_FLAGS(ptr, length, &v->stany.flags)) return -1;
204 return 0;
205 }
206
OLDNEW
« no previous file with comments | « mtm/mtm_marshalling.h ('k') | mtm/mtm_structures.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698