OLD | NEW |
1 /* This Source Code Form is subject to the terms of the Mozilla Public | 1 /* This Source Code Form is subject to the terms of the Mozilla Public |
2 * License, v. 2.0. If a copy of the MPL was not distributed with this | 2 * License, v. 2.0. If a copy of the MPL was not distributed with this |
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
4 /* | 4 /* |
5 * pkix_buildresult.c | 5 * pkix_buildresult.c |
6 * | 6 * |
7 * BuildResult Object Functions | 7 * BuildResult Object Functions |
8 * | 8 * |
9 */ | 9 */ |
10 | 10 |
11 #include "pkix_buildresult.h" | 11 #include "pkix_buildresult.h" |
12 | 12 |
13 /* --Private-Functions-------------------------------------------- */ | 13 /* --Private-Functions-------------------------------------------- */ |
14 | 14 |
15 /* | 15 /* |
16 * FUNCTION: pkix_BuildResult_Destroy | 16 * FUNCTION: pkix_BuildResult_Destroy |
17 * (see comments for PKIX_PL_DestructorCallback in pkix_pl_system.h) | 17 * (see comments for PKIX_PL_DestructorCallback in pkix_pl_system.h) |
18 */ | 18 */ |
19 static PKIX_Error * | 19 static PKIX_Error *pkix_BuildResult_Destroy(PKIX_PL_Object *object, |
20 pkix_BuildResult_Destroy( | 20 void *plContext) { |
21 PKIX_PL_Object *object, | 21 PKIX_BuildResult *result = NULL; |
22 void *plContext) | 22 |
23 { | 23 PKIX_ENTER(BUILDRESULT, "pkix_BuildResult_Destroy"); |
24 PKIX_BuildResult *result = NULL; | 24 PKIX_NULLCHECK_ONE(object); |
25 | 25 |
26 PKIX_ENTER(BUILDRESULT, "pkix_BuildResult_Destroy"); | 26 /* Check that this object is a build result object */ |
27 PKIX_NULLCHECK_ONE(object); | 27 PKIX_CHECK(pkix_CheckType(object, PKIX_BUILDRESULT_TYPE, plContext), |
28 | 28 PKIX_OBJECTNOTBUILDRESULT); |
29 /* Check that this object is a build result object */ | 29 |
30 PKIX_CHECK(pkix_CheckType(object, PKIX_BUILDRESULT_TYPE, plContext), | 30 result = (PKIX_BuildResult *)object; |
31 PKIX_OBJECTNOTBUILDRESULT); | 31 |
32 | 32 PKIX_DECREF(result->valResult); |
33 result = (PKIX_BuildResult *)object; | 33 PKIX_DECREF(result->certChain); |
34 | 34 |
35 PKIX_DECREF(result->valResult); | 35 cleanup: |
36 PKIX_DECREF(result->certChain); | 36 |
37 | 37 PKIX_RETURN(BUILDRESULT); |
38 cleanup: | |
39 | |
40 PKIX_RETURN(BUILDRESULT); | |
41 } | 38 } |
42 | 39 |
43 /* | 40 /* |
44 * FUNCTION: pkix_BuildResult_Equals | 41 * FUNCTION: pkix_BuildResult_Equals |
45 * (see comments for PKIX_PL_EqualsCallback in pkix_pl_system.h) | 42 * (see comments for PKIX_PL_EqualsCallback in pkix_pl_system.h) |
46 */ | 43 */ |
47 static PKIX_Error * | 44 static PKIX_Error *pkix_BuildResult_Equals(PKIX_PL_Object *first, |
48 pkix_BuildResult_Equals( | 45 PKIX_PL_Object *second, |
49 PKIX_PL_Object *first, | 46 PKIX_Boolean *pResult, |
50 PKIX_PL_Object *second, | 47 void *plContext) { |
51 PKIX_Boolean *pResult, | 48 PKIX_UInt32 secondType; |
52 void *plContext) | 49 PKIX_Boolean cmpResult; |
53 { | 50 PKIX_BuildResult *firstBuildResult = NULL; |
54 PKIX_UInt32 secondType; | 51 PKIX_BuildResult *secondBuildResult = NULL; |
55 PKIX_Boolean cmpResult; | 52 |
56 PKIX_BuildResult *firstBuildResult = NULL; | 53 PKIX_ENTER(BUILDRESULT, "pkix_BuildResult_Equals"); |
57 PKIX_BuildResult *secondBuildResult = NULL; | 54 PKIX_NULLCHECK_THREE(first, second, pResult); |
58 | 55 |
59 PKIX_ENTER(BUILDRESULT, "pkix_BuildResult_Equals"); | 56 PKIX_CHECK(pkix_CheckType(first, PKIX_BUILDRESULT_TYPE, plContext), |
60 PKIX_NULLCHECK_THREE(first, second, pResult); | 57 PKIX_FIRSTOBJECTNOTBUILDRESULT); |
61 | 58 |
62 PKIX_CHECK(pkix_CheckType(first, PKIX_BUILDRESULT_TYPE, plContext), | 59 PKIX_CHECK(PKIX_PL_Object_GetType(second, &secondType, plContext), |
63 PKIX_FIRSTOBJECTNOTBUILDRESULT); | 60 PKIX_COULDNOTGETTYPEOFSECONDARGUMENT); |
64 | 61 |
65 PKIX_CHECK(PKIX_PL_Object_GetType(second, &secondType, plContext), | 62 *pResult = PKIX_FALSE; |
66 PKIX_COULDNOTGETTYPEOFSECONDARGUMENT); | 63 |
67 | 64 if (secondType != PKIX_BUILDRESULT_TYPE) goto cleanup; |
68 *pResult = PKIX_FALSE; | 65 |
69 | 66 firstBuildResult = (PKIX_BuildResult *)first; |
70 if (secondType != PKIX_BUILDRESULT_TYPE) goto cleanup; | 67 secondBuildResult = (PKIX_BuildResult *)second; |
71 | 68 |
72 firstBuildResult = (PKIX_BuildResult *)first; | 69 PKIX_CHECK( |
73 secondBuildResult = (PKIX_BuildResult *)second; | 70 PKIX_PL_Object_Equals((PKIX_PL_Object *)firstBuildResult->valResult, |
74 | 71 (PKIX_PL_Object *)secondBuildResult->valResult, |
75 PKIX_CHECK(PKIX_PL_Object_Equals | 72 &cmpResult, plContext), |
76 ((PKIX_PL_Object *)firstBuildResult->valResult, | 73 PKIX_OBJECTEQUALSFAILED); |
77 (PKIX_PL_Object *)secondBuildResult->valResult, | 74 |
78 &cmpResult, | 75 if (!cmpResult) goto cleanup; |
79 plContext), | 76 |
80 PKIX_OBJECTEQUALSFAILED); | 77 PKIX_CHECK( |
81 | 78 PKIX_PL_Object_Equals((PKIX_PL_Object *)firstBuildResult->certChain, |
82 if (!cmpResult) goto cleanup; | 79 (PKIX_PL_Object *)secondBuildResult->certChain, |
83 | 80 &cmpResult, plContext), |
84 PKIX_CHECK(PKIX_PL_Object_Equals | 81 PKIX_OBJECTEQUALSFAILED); |
85 ((PKIX_PL_Object *)firstBuildResult->certChain, | 82 |
86 (PKIX_PL_Object *)secondBuildResult->certChain, | 83 if (!cmpResult) goto cleanup; |
87 &cmpResult, | 84 |
88 plContext), | 85 /* |
89 PKIX_OBJECTEQUALSFAILED); | 86 * The remaining case is that both are null, |
90 | 87 * which we consider equality. |
91 if (!cmpResult) goto cleanup; | 88 * cmpResult = PKIX_TRUE; |
92 | 89 */ |
93 /* | 90 |
94 * The remaining case is that both are null, | 91 *pResult = cmpResult; |
95 * which we consider equality. | 92 |
96 * cmpResult = PKIX_TRUE; | 93 cleanup: |
97 */ | 94 |
98 | 95 PKIX_RETURN(BUILDRESULT); |
99 *pResult = cmpResult; | |
100 | |
101 cleanup: | |
102 | |
103 PKIX_RETURN(BUILDRESULT); | |
104 } | 96 } |
105 | 97 |
106 /* | 98 /* |
107 * FUNCTION: pkix_BuildResult_Hashcode | 99 * FUNCTION: pkix_BuildResult_Hashcode |
108 * (see comments for PKIX_PL_HashcodeCallback in pkix_pl_system.h) | 100 * (see comments for PKIX_PL_HashcodeCallback in pkix_pl_system.h) |
109 */ | 101 */ |
110 static PKIX_Error * | 102 static PKIX_Error *pkix_BuildResult_Hashcode(PKIX_PL_Object *object, |
111 pkix_BuildResult_Hashcode( | 103 PKIX_UInt32 *pHashcode, |
112 PKIX_PL_Object *object, | 104 void *plContext) { |
113 PKIX_UInt32 *pHashcode, | 105 PKIX_BuildResult *buildResult = NULL; |
114 void *plContext) | 106 PKIX_UInt32 hash = 0; |
115 { | 107 PKIX_UInt32 valResultHash = 0; |
116 PKIX_BuildResult *buildResult = NULL; | 108 PKIX_UInt32 certChainHash = 0; |
117 PKIX_UInt32 hash = 0; | 109 |
118 PKIX_UInt32 valResultHash = 0; | 110 PKIX_ENTER(BUILDRESULT, "pkix_BuildResult_Hashcode"); |
119 PKIX_UInt32 certChainHash = 0; | 111 PKIX_NULLCHECK_TWO(object, pHashcode); |
120 | 112 |
121 PKIX_ENTER(BUILDRESULT, "pkix_BuildResult_Hashcode"); | 113 PKIX_CHECK(pkix_CheckType(object, PKIX_BUILDRESULT_TYPE, plContext), |
122 PKIX_NULLCHECK_TWO(object, pHashcode); | 114 PKIX_OBJECTNOTBUILDRESULT); |
123 | 115 |
124 PKIX_CHECK(pkix_CheckType(object, PKIX_BUILDRESULT_TYPE, plContext), | 116 buildResult = (PKIX_BuildResult *)object; |
125 PKIX_OBJECTNOTBUILDRESULT); | 117 |
126 | 118 PKIX_CHECK(PKIX_PL_Object_Hashcode((PKIX_PL_Object *)buildResult->valResult, |
127 buildResult = (PKIX_BuildResult*)object; | 119 &valResultHash, plContext), |
128 | 120 PKIX_OBJECTHASHCODEFAILED); |
129 PKIX_CHECK(PKIX_PL_Object_Hashcode | 121 |
130 ((PKIX_PL_Object *)buildResult->valResult, | 122 PKIX_CHECK(PKIX_PL_Object_Hashcode((PKIX_PL_Object *)buildResult->certChain, |
131 &valResultHash, | 123 &certChainHash, plContext), |
132 plContext), | 124 PKIX_OBJECTHASHCODEFAILED); |
133 PKIX_OBJECTHASHCODEFAILED); | 125 |
134 | 126 hash = 31 * (31 * valResultHash + certChainHash); |
135 PKIX_CHECK(PKIX_PL_Object_Hashcode | 127 |
136 ((PKIX_PL_Object *)buildResult->certChain, | 128 *pHashcode = hash; |
137 &certChainHash, | 129 |
138 plContext), | 130 cleanup: |
139 PKIX_OBJECTHASHCODEFAILED); | 131 |
140 | 132 PKIX_RETURN(BUILDRESULT); |
141 hash = 31*(31 * valResultHash + certChainHash); | |
142 | |
143 *pHashcode = hash; | |
144 | |
145 cleanup: | |
146 | |
147 PKIX_RETURN(BUILDRESULT); | |
148 } | 133 } |
149 | 134 |
150 /* | 135 /* |
151 * FUNCTION: pkix_BuildResult_ToString | 136 * FUNCTION: pkix_BuildResult_ToString |
152 * (see comments for PKIX_PL_ToStringCallback in pkix_pl_system.h) | 137 * (see comments for PKIX_PL_ToStringCallback in pkix_pl_system.h) |
153 */ | 138 */ |
154 static PKIX_Error * | 139 static PKIX_Error *pkix_BuildResult_ToString(PKIX_PL_Object *object, |
155 pkix_BuildResult_ToString( | 140 PKIX_PL_String **pString, |
156 PKIX_PL_Object *object, | 141 void *plContext) { |
157 PKIX_PL_String **pString, | 142 PKIX_BuildResult *buildResult = NULL; |
158 void *plContext) | 143 PKIX_PL_String *formatString = NULL; |
159 { | 144 PKIX_PL_String *buildResultString = NULL; |
160 PKIX_BuildResult *buildResult = NULL; | 145 |
161 PKIX_PL_String *formatString = NULL; | 146 PKIX_ValidateResult *valResult = NULL; |
162 PKIX_PL_String *buildResultString = NULL; | 147 PKIX_List *certChain = NULL; |
163 | 148 |
164 PKIX_ValidateResult *valResult = NULL; | 149 PKIX_PL_String *valResultString = NULL; |
165 PKIX_List *certChain = NULL; | 150 PKIX_PL_String *certChainString = NULL; |
166 | 151 |
167 PKIX_PL_String *valResultString = NULL; | 152 char *asciiFormat = |
168 PKIX_PL_String *certChainString = NULL; | 153 "[\n" |
169 | 154 "\tValidateResult: \t\t%s" |
170 char *asciiFormat = | 155 "\tCertChain: \t\t%s\n" |
171 "[\n" | 156 "]\n"; |
172 "\tValidateResult: \t\t%s" | 157 |
173 "\tCertChain: \t\t%s\n" | 158 PKIX_ENTER(BUILDRESULT, "pkix_BuildResult_ToString"); |
174 "]\n"; | 159 PKIX_NULLCHECK_TWO(object, pString); |
175 | 160 |
176 PKIX_ENTER(BUILDRESULT, "pkix_BuildResult_ToString"); | 161 PKIX_CHECK(pkix_CheckType(object, PKIX_BUILDRESULT_TYPE, plContext), |
177 PKIX_NULLCHECK_TWO(object, pString); | 162 PKIX_OBJECTNOTBUILDRESULT); |
178 | 163 |
179 PKIX_CHECK(pkix_CheckType(object, PKIX_BUILDRESULT_TYPE, plContext), | 164 buildResult = (PKIX_BuildResult *)object; |
180 PKIX_OBJECTNOTBUILDRESULT); | 165 |
181 | 166 valResult = buildResult->valResult; |
182 buildResult = (PKIX_BuildResult*)object; | 167 |
183 | 168 PKIX_CHECK(PKIX_PL_String_Create(PKIX_ESCASCII, asciiFormat, 0, &formatString, |
184 valResult = buildResult->valResult; | 169 plContext), |
185 | 170 PKIX_STRINGCREATEFAILED); |
186 PKIX_CHECK(PKIX_PL_String_Create | 171 |
187 (PKIX_ESCASCII, asciiFormat, 0, &formatString, plContext), | 172 PKIX_CHECK(PKIX_PL_Object_ToString((PKIX_PL_Object *)valResult, |
188 PKIX_STRINGCREATEFAILED); | 173 &valResultString, plContext), |
189 | 174 PKIX_OBJECTTOSTRINGFAILED); |
190 PKIX_CHECK(PKIX_PL_Object_ToString | 175 |
191 ((PKIX_PL_Object *)valResult, &valResultString, plContext), | 176 certChain = buildResult->certChain; |
192 PKIX_OBJECTTOSTRINGFAILED); | 177 |
193 | 178 PKIX_CHECK(PKIX_PL_Object_ToString((PKIX_PL_Object *)certChain, |
194 certChain = buildResult->certChain; | 179 &certChainString, plContext), |
195 | 180 PKIX_OBJECTTOSTRINGFAILED); |
196 PKIX_CHECK(PKIX_PL_Object_ToString | 181 |
197 ((PKIX_PL_Object *)certChain, &certChainString, plContext), | 182 PKIX_CHECK(PKIX_PL_Sprintf(&buildResultString, plContext, formatString, |
198 PKIX_OBJECTTOSTRINGFAILED); | 183 valResultString, certChainString), |
199 | 184 PKIX_SPRINTFFAILED); |
200 PKIX_CHECK(PKIX_PL_Sprintf | 185 |
201 (&buildResultString, | 186 *pString = buildResultString; |
202 plContext, | 187 |
203 formatString, | 188 cleanup: |
204 valResultString, | 189 |
205 certChainString), | 190 PKIX_DECREF(formatString); |
206 PKIX_SPRINTFFAILED); | 191 PKIX_DECREF(valResultString); |
207 | 192 PKIX_DECREF(certChainString); |
208 *pString = buildResultString; | 193 |
209 | 194 PKIX_RETURN(BUILDRESULT); |
210 cleanup: | |
211 | |
212 PKIX_DECREF(formatString); | |
213 PKIX_DECREF(valResultString); | |
214 PKIX_DECREF(certChainString); | |
215 | |
216 PKIX_RETURN(BUILDRESULT); | |
217 } | 195 } |
218 | 196 |
219 /* | 197 /* |
220 * FUNCTION: pkix_BuildResult_RegisterSelf | 198 * FUNCTION: pkix_BuildResult_RegisterSelf |
221 * DESCRIPTION: | 199 * DESCRIPTION: |
222 * Registers PKIX_BUILDRESULT_TYPE and its related functions with | 200 * Registers PKIX_BUILDRESULT_TYPE and its related functions with |
223 * systemClasses[] | 201 * systemClasses[] |
224 * THREAD SAFETY: | 202 * THREAD SAFETY: |
225 * Not Thread Safe - for performance and complexity reasons | 203 * Not Thread Safe - for performance and complexity reasons |
226 * | 204 * |
227 * Since this function is only called by PKIX_PL_Initialize, which should | 205 * Since this function is only called by PKIX_PL_Initialize, which should |
228 * only be called once, it is acceptable that this function is not | 206 * only be called once, it is acceptable that this function is not |
229 * thread-safe. | 207 * thread-safe. |
230 */ | 208 */ |
231 PKIX_Error * | 209 PKIX_Error *pkix_BuildResult_RegisterSelf(void *plContext) { |
232 pkix_BuildResult_RegisterSelf(void *plContext) | 210 |
233 { | 211 extern pkix_ClassTable_Entry systemClasses[PKIX_NUMTYPES]; |
234 | 212 pkix_ClassTable_Entry entry; |
235 extern pkix_ClassTable_Entry systemClasses[PKIX_NUMTYPES]; | 213 |
236 pkix_ClassTable_Entry entry; | 214 PKIX_ENTER(BUILDRESULT, "pkix_BuildResult_RegisterSelf"); |
237 | 215 |
238 PKIX_ENTER(BUILDRESULT, "pkix_BuildResult_RegisterSelf"); | 216 entry.description = "BuildResult"; |
239 | 217 entry.objCounter = 0; |
240 entry.description = "BuildResult"; | 218 entry.typeObjectSize = sizeof(PKIX_BuildResult); |
241 entry.objCounter = 0; | 219 entry.destructor = pkix_BuildResult_Destroy; |
242 entry.typeObjectSize = sizeof(PKIX_BuildResult); | 220 entry.equalsFunction = pkix_BuildResult_Equals; |
243 entry.destructor = pkix_BuildResult_Destroy; | 221 entry.hashcodeFunction = pkix_BuildResult_Hashcode; |
244 entry.equalsFunction = pkix_BuildResult_Equals; | 222 entry.toStringFunction = pkix_BuildResult_ToString; |
245 entry.hashcodeFunction = pkix_BuildResult_Hashcode; | 223 entry.comparator = NULL; |
246 entry.toStringFunction = pkix_BuildResult_ToString; | 224 entry.duplicateFunction = pkix_duplicateImmutable; |
247 entry.comparator = NULL; | 225 |
248 entry.duplicateFunction = pkix_duplicateImmutable; | 226 systemClasses[PKIX_BUILDRESULT_TYPE] = entry; |
249 | 227 |
250 systemClasses[PKIX_BUILDRESULT_TYPE] = entry; | 228 PKIX_RETURN(BUILDRESULT); |
251 | |
252 PKIX_RETURN(BUILDRESULT); | |
253 } | 229 } |
254 | 230 |
255 /* | 231 /* |
256 * FUNCTION: pkix_BuildResult_Create | 232 * FUNCTION: pkix_BuildResult_Create |
257 * DESCRIPTION: | 233 * DESCRIPTION: |
258 * | 234 * |
259 * Creates a new BuildResult Object using the ValidateResult pointed to by | 235 * Creates a new BuildResult Object using the ValidateResult pointed to by |
260 * "valResult" and the List pointed to by "certChain", and stores it at | 236 * "valResult" and the List pointed to by "certChain", and stores it at |
261 * "pResult". | 237 * "pResult". |
262 * | 238 * |
263 * PARAMETERS | 239 * PARAMETERS |
264 * "valResult" | 240 * "valResult" |
265 * Address of ValidateResult component. Must be non-NULL. | 241 * Address of ValidateResult component. Must be non-NULL. |
266 * "certChain | 242 * "certChain |
267 * Address of List component. Must be non-NULL. | 243 * Address of List component. Must be non-NULL. |
268 * "pResult" | 244 * "pResult" |
269 * Address where object pointer will be stored. Must be non-NULL. | 245 * Address where object pointer will be stored. Must be non-NULL. |
270 * "plContext" | 246 * "plContext" |
271 * Platform-specific context pointer. | 247 * Platform-specific context pointer. |
272 * THREAD SAFETY: | 248 * THREAD SAFETY: |
273 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | 249 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
274 * RETURNS: | 250 * RETURNS: |
275 * Returns NULL if the function succeeds. | 251 * Returns NULL if the function succeeds. |
276 * Returns a Fatal Error if the function fails in an unrecoverable way. | 252 * Returns a Fatal Error if the function fails in an unrecoverable way. |
277 */ | 253 */ |
278 PKIX_Error * | 254 PKIX_Error *pkix_BuildResult_Create(PKIX_ValidateResult *valResult, |
279 pkix_BuildResult_Create( | 255 PKIX_List *certChain, |
280 PKIX_ValidateResult *valResult, | 256 PKIX_BuildResult **pResult, |
281 PKIX_List *certChain, | 257 void *plContext) { |
282 PKIX_BuildResult **pResult, | 258 PKIX_BuildResult *result = NULL; |
283 void *plContext) | |
284 { | |
285 PKIX_BuildResult *result = NULL; | |
286 | 259 |
287 PKIX_ENTER(BUILDRESULT, "pkix_BuildResult_Create"); | 260 PKIX_ENTER(BUILDRESULT, "pkix_BuildResult_Create"); |
288 PKIX_NULLCHECK_THREE(valResult, certChain, pResult); | 261 PKIX_NULLCHECK_THREE(valResult, certChain, pResult); |
289 | 262 |
290 PKIX_CHECK(PKIX_PL_Object_Alloc | 263 PKIX_CHECK( |
291 (PKIX_BUILDRESULT_TYPE, | 264 PKIX_PL_Object_Alloc(PKIX_BUILDRESULT_TYPE, sizeof(PKIX_BuildResult), |
292 sizeof (PKIX_BuildResult), | 265 (PKIX_PL_Object **)&result, plContext), |
293 (PKIX_PL_Object **)&result, | 266 PKIX_COULDNOTCREATEBUILDRESULTOBJECT); |
294 plContext), | |
295 PKIX_COULDNOTCREATEBUILDRESULTOBJECT); | |
296 | 267 |
297 /* initialize fields */ | 268 /* initialize fields */ |
298 | 269 |
299 PKIX_INCREF(valResult); | 270 PKIX_INCREF(valResult); |
300 result->valResult = valResult; | 271 result->valResult = valResult; |
301 | 272 |
302 PKIX_INCREF(certChain); | 273 PKIX_INCREF(certChain); |
303 result->certChain = certChain; | 274 result->certChain = certChain; |
304 | 275 |
305 PKIX_CHECK(PKIX_List_SetImmutable(result->certChain, plContext), | 276 PKIX_CHECK(PKIX_List_SetImmutable(result->certChain, plContext), |
306 PKIX_LISTSETIMMUTABLEFAILED); | 277 PKIX_LISTSETIMMUTABLEFAILED); |
307 | 278 |
308 *pResult = result; | 279 *pResult = result; |
309 result = NULL; | 280 result = NULL; |
310 | 281 |
311 cleanup: | 282 cleanup: |
312 | 283 |
313 PKIX_DECREF(result); | 284 PKIX_DECREF(result); |
314 | 285 |
315 PKIX_RETURN(BUILDRESULT); | 286 PKIX_RETURN(BUILDRESULT); |
316 | |
317 } | 287 } |
318 | 288 |
319 /* --Public-Functions--------------------------------------------- */ | 289 /* --Public-Functions--------------------------------------------- */ |
320 | 290 |
321 | |
322 /* | 291 /* |
323 * FUNCTION: PKIX_BuildResult_GetValidateResult | 292 * FUNCTION: PKIX_BuildResult_GetValidateResult |
324 * (see comments in pkix_result.h) | 293 * (see comments in pkix_result.h) |
325 */ | 294 */ |
326 PKIX_Error * | 295 PKIX_Error *PKIX_BuildResult_GetValidateResult(PKIX_BuildResult *result, |
327 PKIX_BuildResult_GetValidateResult( | 296 PKIX_ValidateResult **pResult, |
328 PKIX_BuildResult *result, | 297 void *plContext) { |
329 PKIX_ValidateResult **pResult, | 298 PKIX_ENTER(BUILDRESULT, "PKIX_BuildResult_GetValidateResult"); |
330 void *plContext) | 299 PKIX_NULLCHECK_TWO(result, pResult); |
331 { | |
332 PKIX_ENTER(BUILDRESULT, "PKIX_BuildResult_GetValidateResult"); | |
333 PKIX_NULLCHECK_TWO(result, pResult); | |
334 | 300 |
335 PKIX_INCREF(result->valResult); | 301 PKIX_INCREF(result->valResult); |
336 *pResult = result->valResult; | 302 *pResult = result->valResult; |
337 | 303 |
338 cleanup: | 304 cleanup: |
339 PKIX_RETURN(BUILDRESULT); | 305 PKIX_RETURN(BUILDRESULT); |
340 } | 306 } |
341 | 307 |
342 | |
343 | |
344 /* | 308 /* |
345 * FUNCTION: PKIX_BuildResult_GetCertChain | 309 * FUNCTION: PKIX_BuildResult_GetCertChain |
346 * (see comments in pkix_result.h) | 310 * (see comments in pkix_result.h) |
347 */ | 311 */ |
348 PKIX_Error * | 312 PKIX_Error *PKIX_BuildResult_GetCertChain(PKIX_BuildResult *result, |
349 PKIX_BuildResult_GetCertChain( | 313 PKIX_List **pChain, void *plContext) { |
350 PKIX_BuildResult *result, | 314 PKIX_ENTER(BUILDRESULT, "PKIX_BuildResult_GetCertChain"); |
351 PKIX_List **pChain, | 315 PKIX_NULLCHECK_TWO(result, pChain); |
352 void *plContext) | |
353 { | |
354 PKIX_ENTER(BUILDRESULT, "PKIX_BuildResult_GetCertChain"); | |
355 PKIX_NULLCHECK_TWO(result, pChain); | |
356 | 316 |
357 PKIX_INCREF(result->certChain); | 317 PKIX_INCREF(result->certChain); |
358 *pChain = result->certChain; | 318 *pChain = result->certChain; |
359 | 319 |
360 cleanup: | 320 cleanup: |
361 PKIX_RETURN(BUILDRESULT); | 321 PKIX_RETURN(BUILDRESULT); |
362 } | 322 } |
OLD | NEW |