|
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 |
|
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
4 /* |
|
5 * This file defines functions associated with the results used |
|
6 * by the top-level functions. |
|
7 * |
|
8 */ |
|
9 |
|
10 #ifndef _PKIX_RESULTS_H |
|
11 #define _PKIX_RESULTS_H |
|
12 |
|
13 #include "pkixt.h" |
|
14 |
|
15 #ifdef __cplusplus |
|
16 extern "C" { |
|
17 #endif |
|
18 |
|
19 /* General |
|
20 * |
|
21 * Please refer to the libpkix Programmer's Guide for detailed information |
|
22 * about how to use the libpkix library. Certain key warnings and notices from |
|
23 * that document are repeated here for emphasis. |
|
24 * |
|
25 * All identifiers in this file (and all public identifiers defined in |
|
26 * libpkix) begin with "PKIX_". Private identifiers only intended for use |
|
27 * within the library begin with "pkix_". |
|
28 * |
|
29 * A function returns NULL upon success, and a PKIX_Error pointer upon failure. |
|
30 * |
|
31 * Unless otherwise noted, for all accessor (gettor) functions that return a |
|
32 * PKIX_PL_Object pointer, callers should assume that this pointer refers to a |
|
33 * shared object. Therefore, the caller should treat this shared object as |
|
34 * read-only and should not modify this shared object. When done using the |
|
35 * shared object, the caller should release the reference to the object by |
|
36 * using the PKIX_PL_Object_DecRef function. |
|
37 * |
|
38 * While a function is executing, if its arguments (or anything referred to by |
|
39 * its arguments) are modified, free'd, or destroyed, the function's behavior |
|
40 * is undefined. |
|
41 * |
|
42 */ |
|
43 /* PKIX_ValidateResult |
|
44 * |
|
45 * PKIX_ValidateResult represents the result of a PKIX_ValidateChain call. It |
|
46 * consists of the valid policy tree and public key resulting from validation, |
|
47 * as well as the trust anchor used for this chain. Once created, a |
|
48 * ValidateResult object is immutable. |
|
49 */ |
|
50 |
|
51 /* |
|
52 * FUNCTION: PKIX_ValidateResult_GetPolicyTree |
|
53 * DESCRIPTION: |
|
54 * |
|
55 * Retrieves the PolicyNode component (representing the valid_policy_tree) |
|
56 * from the ValidateResult object pointed to by "result" and stores it at |
|
57 * "pPolicyTree". |
|
58 * |
|
59 * PARAMETERS: |
|
60 * "result" |
|
61 * Address of ValidateResult whose policy tree is to be stored. Must be |
|
62 * non-NULL. |
|
63 * "pPolicyTree" |
|
64 * Address where object pointer will be stored. Must be non-NULL. |
|
65 * "plContext" |
|
66 * Platform-specific context pointer. |
|
67 * THREAD SAFETY: |
|
68 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
|
69 * RETURNS: |
|
70 * Returns NULL if the function succeeds. |
|
71 * Returns a Result Error if the function fails in a non-fatal way. |
|
72 * Returns a Fatal Error if the function fails in an unrecoverable way. |
|
73 */ |
|
74 PKIX_Error * |
|
75 PKIX_ValidateResult_GetPolicyTree( |
|
76 PKIX_ValidateResult *result, |
|
77 PKIX_PolicyNode **pPolicyTree, |
|
78 void *plContext); |
|
79 |
|
80 /* |
|
81 * FUNCTION: PKIX_ValidateResult_GetPublicKey |
|
82 * DESCRIPTION: |
|
83 * |
|
84 * Retrieves the PublicKey component (representing the valid public_key) of |
|
85 * the ValidateResult object pointed to by "result" and stores it at |
|
86 * "pPublicKey". |
|
87 * |
|
88 * PARAMETERS: |
|
89 * "result" |
|
90 * Address of ValidateResult whose public key is to be stored. |
|
91 * Must be non-NULL. |
|
92 * "pPublicKey" |
|
93 * Address where object pointer will be stored. Must be non-NULL. |
|
94 * "plContext" |
|
95 * Platform-specific context pointer. |
|
96 * THREAD SAFETY: |
|
97 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
|
98 * RETURNS: |
|
99 * Returns NULL if the function succeeds. |
|
100 * Returns a Result Error if the function fails in a non-fatal way. |
|
101 * Returns a Fatal Error if the function fails in an unrecoverable way. |
|
102 */ |
|
103 PKIX_Error * |
|
104 PKIX_ValidateResult_GetPublicKey( |
|
105 PKIX_ValidateResult *result, |
|
106 PKIX_PL_PublicKey **pPublicKey, |
|
107 void *plContext); |
|
108 |
|
109 /* |
|
110 * FUNCTION: PKIX_ValidateResult_GetTrustAnchor |
|
111 * DESCRIPTION: |
|
112 * |
|
113 * Retrieves the TrustAnchor component (representing the trust anchor used |
|
114 * during chain validation) of the ValidateResult object pointed to by |
|
115 * "result" and stores it at "pTrustAnchor". |
|
116 * |
|
117 * PARAMETERS: |
|
118 * "result" |
|
119 * Address of ValidateResult whose trust anchor is to be stored. |
|
120 * Must be non-NULL. |
|
121 * "pTrustAnchor" |
|
122 * Address where object pointer will be stored. Must be non-NULL. |
|
123 * "plContext" |
|
124 * Platform-specific context pointer. |
|
125 * THREAD SAFETY: |
|
126 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
|
127 * RETURNS: |
|
128 * Returns NULL if the function succeeds. |
|
129 * Returns a Result Error if the function fails in a non-fatal way. |
|
130 * Returns a Fatal Error if the function fails in an unrecoverable way. |
|
131 */ |
|
132 PKIX_Error * |
|
133 PKIX_ValidateResult_GetTrustAnchor( |
|
134 PKIX_ValidateResult *result, |
|
135 PKIX_TrustAnchor **pTrustAnchor, |
|
136 void *plContext); |
|
137 |
|
138 /* PKIX_BuildResult |
|
139 * |
|
140 * PKIX_BuildResult represents the result of a PKIX_BuildChain call. It |
|
141 * consists of a ValidateResult object, as well as the built and validated |
|
142 * CertChain. Once created, a BuildResult object is immutable. |
|
143 */ |
|
144 |
|
145 /* |
|
146 * FUNCTION: PKIX_BuildResult_GetValidateResult |
|
147 * DESCRIPTION: |
|
148 * |
|
149 * Retrieves the ValidateResult component (representing the build's validate |
|
150 * result) of the BuildResult object pointed to by "result" and stores it at |
|
151 * "pResult". |
|
152 * |
|
153 * PARAMETERS: |
|
154 * "result" |
|
155 * Address of BuildResult whose ValidateResult component is to be stored. |
|
156 * Must be non-NULL. |
|
157 * "pResult" |
|
158 * Address where object pointer will be stored. Must be non-NULL. |
|
159 * "plContext" |
|
160 * Platform-specific context pointer. |
|
161 * THREAD SAFETY: |
|
162 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
|
163 * RETURNS: |
|
164 * Returns NULL if the function succeeds. |
|
165 * Returns a Result Error if the function fails in a non-fatal way. |
|
166 * Returns a Fatal Error if the function fails in an unrecoverable way. |
|
167 */ |
|
168 PKIX_Error * |
|
169 PKIX_BuildResult_GetValidateResult( |
|
170 PKIX_BuildResult *result, |
|
171 PKIX_ValidateResult **pResult, |
|
172 void *plContext); |
|
173 |
|
174 /* |
|
175 * FUNCTION: PKIX_BuildResult_GetCertChain |
|
176 * DESCRIPTION: |
|
177 * |
|
178 * Retrieves the List of Certs (certChain) component (representing the built |
|
179 * and validated CertChain) of the BuildResult object pointed to by "result" |
|
180 * and stores it at "pChain". |
|
181 * |
|
182 * PARAMETERS: |
|
183 * "result" |
|
184 * Address of BuildResult whose CertChain component is to be stored. |
|
185 * Must be non-NULL. |
|
186 * "pChain" |
|
187 * Address where object pointer will be stored. Must be non-NULL. |
|
188 * "plContext" |
|
189 * Platform-specific context pointer. |
|
190 * THREAD SAFETY: |
|
191 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
|
192 * RETURNS: |
|
193 * Returns NULL if the function succeeds. |
|
194 * Returns a Result Error if the function fails in a non-fatal way. |
|
195 * Returns a Fatal Error if the function fails in an unrecoverable way. |
|
196 */ |
|
197 PKIX_Error * |
|
198 PKIX_BuildResult_GetCertChain( |
|
199 PKIX_BuildResult *result, |
|
200 PKIX_List **pChain, |
|
201 void *plContext); |
|
202 |
|
203 /* PKIX_PolicyNode |
|
204 * |
|
205 * PKIX_PolicyNode represents a node in the policy tree returned in |
|
206 * ValidateResult. The policy tree is the same length as the validated |
|
207 * certificate chain and the nodes are associated with a particular depth |
|
208 * (corresponding to a particular certificate in the chain). |
|
209 * PKIX_ValidateResult_GetPolicyTree returns the root node of the valid policy |
|
210 * tree. Other nodes can be accessed using the getChildren and getParents |
|
211 * functions, and individual elements of a node can be accessed with the |
|
212 * appropriate gettors. Once created, a PolicyNode is immutable. |
|
213 */ |
|
214 |
|
215 /* |
|
216 * FUNCTION: PKIX_PolicyNode_GetChildren |
|
217 * DESCRIPTION: |
|
218 * |
|
219 * Retrieves the List of PolicyNodes representing the child nodes of the |
|
220 * Policy Node pointed to by "node" and stores it at "pChildren". If "node" |
|
221 * has no child nodes, this function stores an empty List at "pChildren". |
|
222 * |
|
223 * Note that the List returned by this function is immutable. |
|
224 * |
|
225 * PARAMETERS: |
|
226 * "node" |
|
227 * Address of PolicyNode whose child nodes are to be stored. |
|
228 * Must be non-NULL. |
|
229 * "pChildren" |
|
230 * Address where object pointer will be stored. Must be non-NULL. |
|
231 * "plContext" |
|
232 * Platform-specific context pointer. |
|
233 * THREAD SAFETY: |
|
234 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
|
235 * RETURNS: |
|
236 * Returns NULL if the function succeeds. |
|
237 * Returns a Result Error if the function fails in a non-fatal way. |
|
238 * Returns a Fatal Error if the function fails in an unrecoverable way. |
|
239 */ |
|
240 PKIX_Error * |
|
241 PKIX_PolicyNode_GetChildren( |
|
242 PKIX_PolicyNode *node, |
|
243 PKIX_List **pChildren, /* list of PKIX_PolicyNode */ |
|
244 void *plContext); |
|
245 |
|
246 /* |
|
247 * FUNCTION: PKIX_PolicyNode_GetParent |
|
248 * DESCRIPTION: |
|
249 * |
|
250 * Retrieves the PolicyNode representing the parent node of the PolicyNode |
|
251 * pointed to by "node" and stores it at "pParent". If "node" has no parent |
|
252 * node, this function stores NULL at "pParent". |
|
253 * |
|
254 * PARAMETERS: |
|
255 * "node" |
|
256 * Address of PolicyNode whose parent node is to be stored. |
|
257 * Must be non-NULL. |
|
258 * "pParent" |
|
259 * Address where object pointer will be stored. Must be non-NULL. |
|
260 * "plContext" |
|
261 * Platform-specific context pointer. |
|
262 * THREAD SAFETY: |
|
263 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
|
264 * RETURNS: |
|
265 * Returns NULL if the function succeeds. |
|
266 * Returns a Result Error if the function fails in a non-fatal way. |
|
267 * Returns a Fatal Error if the function fails in an unrecoverable way. |
|
268 */ |
|
269 PKIX_Error * |
|
270 PKIX_PolicyNode_GetParent( |
|
271 PKIX_PolicyNode *node, |
|
272 PKIX_PolicyNode **pParent, |
|
273 void *plContext); |
|
274 |
|
275 /* |
|
276 * FUNCTION: PKIX_PolicyNode_GetValidPolicy |
|
277 * DESCRIPTION: |
|
278 * |
|
279 * Retrieves the OID representing the valid policy of the PolicyNode pointed |
|
280 * to by "node" and stores it at "pValidPolicy". |
|
281 * |
|
282 * PARAMETERS: |
|
283 * "node" |
|
284 * Address of PolicyNode whose valid policy is to be stored. |
|
285 * Must be non-NULL. |
|
286 * "pValidPolicy" |
|
287 * Address where object pointer will be stored. Must be non-NULL. |
|
288 * "plContext" |
|
289 * Platform-specific context pointer. |
|
290 * THREAD SAFETY: |
|
291 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
|
292 * RETURNS: |
|
293 * Returns NULL if the function succeeds. |
|
294 * Returns a Result Error if the function fails in a non-fatal way. |
|
295 * Returns a Fatal Error if the function fails in an unrecoverable way. |
|
296 */ |
|
297 PKIX_Error * |
|
298 PKIX_PolicyNode_GetValidPolicy( |
|
299 PKIX_PolicyNode *node, |
|
300 PKIX_PL_OID **pValidPolicy, |
|
301 void *plContext); |
|
302 |
|
303 /* |
|
304 * FUNCTION: PKIX_PolicyNode_GetPolicyQualifiers |
|
305 * DESCRIPTION: |
|
306 * |
|
307 * Retrieves the List of CertPolicyQualifiers representing the policy |
|
308 * qualifiers associated with the PolicyNode pointed to by "node" and stores |
|
309 * it at "pQualifiers". If "node" has no policy qualifiers, this function |
|
310 * stores an empty List at "pQualifiers". |
|
311 * |
|
312 * Note that the List returned by this function is immutable. |
|
313 * |
|
314 * PARAMETERS: |
|
315 * "node" |
|
316 * Address of PolicyNode whose policy qualifiers are to be stored. |
|
317 * Must be non-NULL. |
|
318 * "pQualifiers" |
|
319 * Address where object pointer will be stored. Must be non-NULL. |
|
320 * "plContext" |
|
321 * Platform-specific context pointer. |
|
322 * THREAD SAFETY: |
|
323 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
|
324 * RETURNS: |
|
325 * Returns NULL if the function succeeds. |
|
326 * Returns a Result Error if the function fails in a non-fatal way. |
|
327 * Returns a Fatal Error if the function fails in an unrecoverable way. |
|
328 */ |
|
329 PKIX_Error * |
|
330 PKIX_PolicyNode_GetPolicyQualifiers( |
|
331 PKIX_PolicyNode *node, |
|
332 PKIX_List **pQualifiers, /* list of PKIX_PL_CertPolicyQualifier */ |
|
333 void *plContext); |
|
334 |
|
335 /* |
|
336 * FUNCTION: PKIX_PolicyNode_GetExpectedPolicies |
|
337 * DESCRIPTION: |
|
338 * |
|
339 * Retrieves the List of OIDs representing the expected policies associated |
|
340 * with the PolicyNode pointed to by "node" and stores it at "pExpPolicies". |
|
341 * |
|
342 * Note that the List returned by this function is immutable. |
|
343 * |
|
344 * PARAMETERS: |
|
345 * "node" |
|
346 * Address of PolicyNode whose expected policies are to be stored. |
|
347 * Must be non-NULL. |
|
348 * "pExpPolicies" |
|
349 * Address where object pointer will be stored. Must be non-NULL. |
|
350 * "plContext" |
|
351 * Platform-specific context pointer. |
|
352 * THREAD SAFETY: |
|
353 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
|
354 * RETURNS: |
|
355 * Returns NULL if the function succeeds. |
|
356 * Returns a Result Error if the function fails in a non-fatal way. |
|
357 * Returns a Fatal Error if the function fails in an unrecoverable way. |
|
358 */ |
|
359 PKIX_Error * |
|
360 PKIX_PolicyNode_GetExpectedPolicies( |
|
361 PKIX_PolicyNode *node, |
|
362 PKIX_List **pExpPolicies, /* list of PKIX_PL_OID */ |
|
363 void *plContext); |
|
364 |
|
365 /* |
|
366 * FUNCTION: PKIX_PolicyNode_IsCritical |
|
367 * DESCRIPTION: |
|
368 * |
|
369 * Checks the criticality field of the PolicyNode pointed to by "node" and |
|
370 * stores the Boolean result at "pCritical". |
|
371 * |
|
372 * PARAMETERS: |
|
373 * "node" |
|
374 * Address of PolicyNode whose criticality field is examined. |
|
375 * Must be non-NULL. |
|
376 * "pCritical" |
|
377 * Address where Boolean will be stored. Must be non-NULL. |
|
378 * "plContext" |
|
379 * Platform-specific context pointer. |
|
380 * THREAD SAFETY: |
|
381 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
|
382 * RETURNS: |
|
383 * Returns NULL if the function succeeds. |
|
384 * Returns a Result Error if the function fails in a non-fatal way. |
|
385 * Returns a Fatal Error if the function fails in an unrecoverable way. |
|
386 */ |
|
387 PKIX_Error * |
|
388 PKIX_PolicyNode_IsCritical( |
|
389 PKIX_PolicyNode *node, |
|
390 PKIX_Boolean *pCritical, |
|
391 void *plContext); |
|
392 |
|
393 /* |
|
394 * FUNCTION: PKIX_PolicyNode_GetDepth |
|
395 * DESCRIPTION: |
|
396 * |
|
397 * Retrieves the depth component of the PolicyNode pointed to by "node" and |
|
398 * stores it at "pDepth". |
|
399 * |
|
400 * PARAMETERS: |
|
401 * "node" |
|
402 * Address of PolicyNode whose depth component is to be stored. |
|
403 * Must be non-NULL. |
|
404 * "pDepth" |
|
405 * Address where PKIX_UInt32 will be stored. Must be non-NULL. |
|
406 * "plContext" |
|
407 * Platform-specific context pointer. |
|
408 * THREAD SAFETY: |
|
409 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) |
|
410 * RETURNS: |
|
411 * Returns NULL if the function succeeds. |
|
412 * Returns a Result Error if the function fails in a non-fatal way. |
|
413 * Returns a Fatal Error if the function fails in an unrecoverable way. |
|
414 */ |
|
415 PKIX_Error * |
|
416 PKIX_PolicyNode_GetDepth( |
|
417 PKIX_PolicyNode *node, |
|
418 PKIX_UInt32 *pDepth, |
|
419 void *plContext); |
|
420 |
|
421 #ifdef __cplusplus |
|
422 } |
|
423 #endif |
|
424 |
|
425 #endif /* _PKIX_RESULTS_H */ |