Mercurial > trustbridge > nss-cmake-static
comparison nss/lib/libpkix/include/pkix_pl_pki.h @ 0:1e5118fa0cb1
This is NSS with a Cmake Buildsyste
To compile a static NSS library for Windows we've used the
Chromium-NSS fork and added a Cmake buildsystem to compile
it statically for Windows. See README.chromium for chromium
changes and README.trustbridge for our modifications.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Mon, 28 Jul 2014 10:47:06 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1e5118fa0cb1 |
---|---|
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 several platform independent functions to | |
6 * manipulate certificates and CRLs in a portable manner. | |
7 * | |
8 */ | |
9 | |
10 #ifndef _PKIX_PL_PKI_H | |
11 #define _PKIX_PL_PKI_H | |
12 | |
13 #include "pkixt.h" | |
14 #include "seccomon.h" | |
15 #include "certt.h" | |
16 | |
17 #ifdef __cplusplus | |
18 extern "C" { | |
19 #endif | |
20 | |
21 /* General | |
22 * | |
23 * Please refer to the libpkix Programmer's Guide for detailed information | |
24 * about how to use the libpkix library. Certain key warnings and notices from | |
25 * that document are repeated here for emphasis. | |
26 * | |
27 * All identifiers in this file (and all public identifiers defined in | |
28 * libpkix) begin with "PKIX_". Private identifiers only intended for use | |
29 * within the library begin with "pkix_". | |
30 * | |
31 * A function returns NULL upon success, and a PKIX_Error pointer upon failure. | |
32 * | |
33 * Unless otherwise noted, for all accessor (gettor) functions that return a | |
34 * PKIX_PL_Object pointer, callers should assume that this pointer refers to a | |
35 * shared object. Therefore, the caller should treat this shared object as | |
36 * read-only and should not modify this shared object. When done using the | |
37 * shared object, the caller should release the reference to the object by | |
38 * using the PKIX_PL_Object_DecRef function. | |
39 * | |
40 * While a function is executing, if its arguments (or anything referred to by | |
41 * its arguments) are modified, free'd, or destroyed, the function's behavior | |
42 * is undefined. | |
43 * | |
44 */ | |
45 | |
46 /* | |
47 * Cert | |
48 * | |
49 * A Cert represents an X.509 certificate. It can be created using the bytes | |
50 * of a valid ASN.1 DER encoding. Once created, a Cert is immutable. The | |
51 * following functions include accessors (gettors) for the various components | |
52 * of an X.509 certificate. Also included are functions to perform various | |
53 * checks on a certificate, including name constraints, key usage, validity | |
54 * (expiration), and signature verification. | |
55 */ | |
56 | |
57 /* | |
58 * FUNCTION: PKIX_PL_Cert_Create | |
59 * DESCRIPTION: | |
60 * | |
61 * Creates a new certificate using the bytes in the ByteArray pointed to by | |
62 * "byteArray" and stores it at "pCert". If the bytes are not a valid ASN.1 | |
63 * DER encoding of a certificate, a PKIX_Error pointer is returned. Once | |
64 * created, a Cert is immutable. | |
65 * | |
66 * Certificate ::= SEQUENCE { | |
67 * tbsCertificate TBSCertificate, | |
68 * signatureAlgorithm AlgorithmIdentifier, | |
69 * signatureValue BIT STRING } | |
70 * | |
71 * AlgorithmIdentifier ::= SEQUENCE { | |
72 * algorithm OBJECT IDENTIFIER, | |
73 * parameters ANY DEFINED BY algorithm OPTIONAL } | |
74 * | |
75 * TBSCertificate ::= SEQUENCE { | |
76 * version [0] EXPLICIT Version DEFAULT v1, | |
77 * serialNumber CertificateSerialNumber, | |
78 * signature AlgorithmIdentifier, | |
79 * issuer Name, | |
80 * validity Validity, | |
81 * subject Name, | |
82 * subjectPublicKeyInfo SubjectPublicKeyInfo, | |
83 * issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, | |
84 * -- If present, version MUST be v2 or v3 | |
85 * subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, | |
86 * -- If present, version MUST be v2 or v3 | |
87 * extensions [3] EXPLICIT Extensions OPTIONAL | |
88 * -- If present, version MUST be v3 | |
89 * } | |
90 * | |
91 * Version ::= INTEGER { v1(0), v2(1), v3(2) } | |
92 * | |
93 * CertificateSerialNumber ::= INTEGER | |
94 * | |
95 * Validity ::= SEQUENCE { | |
96 * notBefore Time, | |
97 * notAfter Time } | |
98 * | |
99 * Time ::= CHOICE { | |
100 * utcTime UTCTime, | |
101 * generalTime GeneralizedTime } | |
102 * | |
103 * UniqueIdentifier ::= BIT STRING | |
104 * | |
105 * SubjectPublicKeyInfo ::= SEQUENCE { | |
106 * algorithm AlgorithmIdentifier, | |
107 * subjectPublicKey BIT STRING } | |
108 * | |
109 * Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension | |
110 * | |
111 * Extension ::= SEQUENCE { | |
112 * extnID OBJECT IDENTIFIER, | |
113 * critical BOOLEAN DEFAULT FALSE, | |
114 * extnValue OCTET STRING } | |
115 * | |
116 * PARAMETERS: | |
117 * "byteArray" | |
118 * Address of ByteArray representing the CERT's DER encoding. | |
119 * Must be non-NULL. | |
120 * "pCert" | |
121 * Address where object pointer will be stored. Must be non-NULL. | |
122 * "plContext" | |
123 * Platform-specific context pointer. | |
124 * THREAD SAFETY: | |
125 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
126 * RETURNS: | |
127 * Returns NULL if the function succeeds. | |
128 * Returns a Cert Error if the function fails in a non-fatal way. | |
129 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
130 */ | |
131 PKIX_Error * | |
132 PKIX_PL_Cert_Create( | |
133 PKIX_PL_ByteArray *byteArray, | |
134 PKIX_PL_Cert **pCert, | |
135 void *plContext); | |
136 | |
137 /* | |
138 * FUNCTION: PKIX_PL_Cert_CreateFromCERTCertificate | |
139 * DESCRIPTION: | |
140 * | |
141 * Creates a new certificate using passed in CERTCertificate object. | |
142 * | |
143 * PARAMETERS: | |
144 * "nssCert" | |
145 * The object that will be used to create new PKIX_PL_Cert. | |
146 * "pCert" | |
147 * Address where object pointer will be stored. Must be non-NULL. | |
148 * "plContext" | |
149 * Platform-specific context pointer. | |
150 * THREAD SAFETY: | |
151 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
152 * RETURNS: | |
153 * Returns NULL if the function succeeds. | |
154 * Returns a Cert Error if the function fails in a non-fatal way. | |
155 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
156 */ | |
157 PKIX_Error * | |
158 PKIX_PL_Cert_CreateFromCERTCertificate( | |
159 const CERTCertificate *nssCert, | |
160 PKIX_PL_Cert **pCert, | |
161 void *plContext); | |
162 | |
163 /* | |
164 * FUNCTION: PKIX_PL_Cert_GetCERTCertificate | |
165 * DESCRIPTION: | |
166 * | |
167 * Returns underlying CERTCertificate structure. Return CERTCertificate | |
168 * object is duplicated and should be destroyed by caller. | |
169 * | |
170 * PARAMETERS: | |
171 * "cert" | |
172 * Address of PKIX_PL_Cert. Must be non-NULL. | |
173 * "pCert" | |
174 * Address where object pointer will be stored. Must be non-NULL. | |
175 * "plContext" | |
176 * Platform-specific context pointer. | |
177 * THREAD SAFETY: | |
178 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
179 * RETURNS: | |
180 * Returns NULL if the function succeeds. | |
181 * Returns a Cert Error if the function fails in a non-fatal way. | |
182 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
183 */ | |
184 PKIX_Error * | |
185 PKIX_PL_Cert_GetCERTCertificate( | |
186 PKIX_PL_Cert *cert, | |
187 CERTCertificate **pnssCert, | |
188 void *plContext); | |
189 | |
190 /* | |
191 * FUNCTION: PKIX_PL_Cert_GetVersion | |
192 * DESCRIPTION: | |
193 * | |
194 * Retrieves the version of the Cert pointed to by "cert" and stores it at | |
195 * "pVersion". The version number will either be 0, 1, or 2 (corresponding to | |
196 * v1, v2, or v3, respectively). | |
197 * | |
198 * Version ::= INTEGER { v1(0), v2(1), v3(2) } | |
199 * | |
200 * PARAMETERS: | |
201 * "cert" | |
202 * Address of Cert whose version is to be stored. Must be non-NULL. | |
203 * "pVersion" | |
204 * Address where PKIX_UInt32 will be stored. Must be non-NULL. | |
205 * "plContext" | |
206 * Platform-specific context pointer. | |
207 * THREAD SAFETY: | |
208 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
209 * RETURNS: | |
210 * Returns NULL if the function succeeds. | |
211 * Returns a Cert Error if the function fails in a non-fatal way. | |
212 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
213 */ | |
214 PKIX_Error * | |
215 PKIX_PL_Cert_GetVersion( | |
216 PKIX_PL_Cert *cert, | |
217 PKIX_UInt32 *pVersion, | |
218 void *plContext); | |
219 | |
220 /* | |
221 * FUNCTION: PKIX_PL_Cert_GetSerialNumber | |
222 * DESCRIPTION: | |
223 * | |
224 * Retrieves a pointer to the BigInt that represents the serial number of the | |
225 * Cert pointed to by "cert" and stores it at "pSerialNumber". | |
226 * | |
227 * CertificateSerialNumber ::= INTEGER | |
228 * | |
229 * PARAMETERS: | |
230 * "cert" | |
231 * Address of Cert whose serial number is to be stored. Must be non-NULL. | |
232 * "pSerial" | |
233 * Address where object pointer will be stored. Must be non-NULL. | |
234 * "plContext" | |
235 * Platform-specific context pointer. | |
236 * THREAD SAFETY: | |
237 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
238 * RETURNS: | |
239 * Returns NULL if the function succeeds. | |
240 * Returns a Cert Error if the function fails in a non-fatal way. | |
241 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
242 */ | |
243 PKIX_Error * | |
244 PKIX_PL_Cert_GetSerialNumber( | |
245 PKIX_PL_Cert *cert, | |
246 PKIX_PL_BigInt **pSerial, | |
247 void *plContext); | |
248 | |
249 /* | |
250 * FUNCTION: PKIX_PL_Cert_GetIssuer | |
251 * DESCRIPTION: | |
252 * | |
253 * Retrieves a pointer to the X500Name that represents the issuer DN of the | |
254 * Cert pointed to by "cert" and stores it at "pIssuer". | |
255 * | |
256 * PARAMETERS: | |
257 * "cert" | |
258 * Address of Cert whose issuer is to be stored. Must be non-NULL. | |
259 * "pIssuer" | |
260 * Address where object pointer will be stored. Must be non-NULL. | |
261 * "plContext" | |
262 * Platform-specific context pointer. | |
263 * THREAD SAFETY: | |
264 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
265 * RETURNS: | |
266 * Returns NULL if the function succeeds. | |
267 * Returns a Cert Error if the function fails in a non-fatal way. | |
268 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
269 */ | |
270 PKIX_Error * | |
271 PKIX_PL_Cert_GetIssuer( | |
272 PKIX_PL_Cert *cert, | |
273 PKIX_PL_X500Name **pIssuer, | |
274 void *plContext); | |
275 | |
276 /* | |
277 * FUNCTION: PKIX_PL_Cert_GetSubject | |
278 * DESCRIPTION: | |
279 * | |
280 * Retrieves a pointer to the X500Name that represents the subject DN of the | |
281 * Cert pointed to by "cert" and stores it at "pSubject". If the Cert does not | |
282 * have a subject DN, this function stores NULL at "pSubject". | |
283 * | |
284 * PARAMETERS: | |
285 * "cert" | |
286 * Address of Cert whose subject is to be stored. Must be non-NULL. | |
287 * "pSubject" | |
288 * Address where object pointer will be stored. Must be non-NULL. | |
289 * "plContext" | |
290 * Platform-specific context pointer. | |
291 * THREAD SAFETY: | |
292 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
293 * RETURNS: | |
294 * Returns NULL if the function succeeds. | |
295 * Returns a Cert Error if the function fails in a non-fatal way. | |
296 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
297 */ | |
298 PKIX_Error * | |
299 PKIX_PL_Cert_GetSubject( | |
300 PKIX_PL_Cert *cert, | |
301 PKIX_PL_X500Name **pSubject, | |
302 void *plContext); | |
303 | |
304 /* | |
305 * FUNCTION: PKIX_PL_Cert_GetSubjectPublicKeyAlgId | |
306 * DESCRIPTION: | |
307 * | |
308 * Retrieves a pointer to the OID that represents the subject public key | |
309 * algorithm of the Cert pointed to by "cert" and stores it at | |
310 * "pSubjKeyAlgId". | |
311 * | |
312 * SubjectPublicKeyInfo ::= SEQUENCE { | |
313 * algorithm AlgorithmIdentifier, | |
314 * subjectPublicKey BIT STRING } | |
315 * | |
316 * AlgorithmIdentifier ::= SEQUENCE { | |
317 * algorithm OBJECT IDENTIFIER, | |
318 * parameters ANY DEFINED BY algorithm OPTIONAL } | |
319 * | |
320 * PARAMETERS: | |
321 * "cert" | |
322 * Address of Cert whose subject public key algorithm OID is to be stored. | |
323 * Must be non-NULL. | |
324 * "pSubjKeyAlgId" | |
325 * Address where object pointer will be stored. Must be non-NULL. | |
326 * "plContext" | |
327 * Platform-specific context pointer. | |
328 * THREAD SAFETY: | |
329 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
330 * RETURNS: | |
331 * Returns NULL if the function succeeds. | |
332 * Returns a Cert Error if the function fails in a non-fatal way. | |
333 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
334 */ | |
335 PKIX_Error * | |
336 PKIX_PL_Cert_GetSubjectPublicKeyAlgId( | |
337 PKIX_PL_Cert *cert, | |
338 PKIX_PL_OID **pSubjKeyAlgId, | |
339 void *plContext); | |
340 | |
341 /* | |
342 * FUNCTION: PKIX_PL_Cert_GetSubjectPublicKey | |
343 * DESCRIPTION: | |
344 * | |
345 * Retrieves a pointer to the PublicKey that represents the subject public key | |
346 * of the Cert pointed to by "cert" and stores it at "pPublicKey". | |
347 * | |
348 * SubjectPublicKeyInfo ::= SEQUENCE { | |
349 * algorithm AlgorithmIdentifier, | |
350 * subjectPublicKey BIT STRING } | |
351 * | |
352 * PARAMETERS: | |
353 * "cert" | |
354 * Address of Cert whose subject public key is to be stored. | |
355 * Must be non-NULL. | |
356 * "pPublicKey" | |
357 * Address where object pointer will be stored. Must be non-NULL. | |
358 * "plContext" | |
359 * Platform-specific context pointer. | |
360 * THREAD SAFETY: | |
361 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
362 * RETURNS: | |
363 * Returns NULL if the function succeeds. | |
364 * Returns a Cert Error if the function fails in a non-fatal way. | |
365 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
366 */ | |
367 PKIX_Error * | |
368 PKIX_PL_Cert_GetSubjectPublicKey( | |
369 PKIX_PL_Cert *cert, | |
370 PKIX_PL_PublicKey **pPublicKey, | |
371 void *plContext); | |
372 | |
373 /* | |
374 * FUNCTION: PKIX_PL_PublicKey_NeedsDSAParameters | |
375 * DESCRIPTION: | |
376 * | |
377 * Determines if the PublicKey pointed to by "pubKey" is a DSA Key with null | |
378 * parameters and stores the result at "pNeedsParams". | |
379 * | |
380 * PARAMETERS: | |
381 * "pubKey" | |
382 * Address of the Public Key of interest. Must be non-NULL. | |
383 * "pNeedsParams" | |
384 * Address where object pointer will be stored. Must be non-NULL. | |
385 * "plContext" | |
386 * Platform-specific context pointer. | |
387 * THREAD SAFETY: | |
388 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
389 * RETURNS: | |
390 * Returns NULL if the function succeeds. | |
391 * Returns a PublicKey Error if the function fails in a non-fatal way. | |
392 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
393 */ | |
394 PKIX_Error * | |
395 PKIX_PL_PublicKey_NeedsDSAParameters( | |
396 PKIX_PL_PublicKey *pubKey, | |
397 PKIX_Boolean *pNeedsParams, | |
398 void *plContext); | |
399 | |
400 /* | |
401 * FUNCTION: PKIX_PL_PublicKey_MakeInheritedDSAPublicKey | |
402 * DESCRIPTION: | |
403 * | |
404 * This function is used for DSA key parameter inheritance, which allows a | |
405 * first DSA key with omitted parameters (pointed to by "firstKey") to inherit | |
406 * the PQG parameters of a second DSA key that does have parameters. (pointed | |
407 * to by "secondKey"). Once created, a PublicKey is immutable. | |
408 * | |
409 * Specifically, the algorithm used by the function is: | |
410 * | |
411 * If the first PublicKey is not a DSA public key with omitted parameters, | |
412 * the function stores NULL at "pResultKey". (No Error is returned) | |
413 * Else if the second PublicKey is not a DSA public key with non-NULL, | |
414 * parameters, the function returns an Error. | |
415 * Else | |
416 * the function creates a third PublicKey with a "Y" value from the | |
417 * first PublicKey and the DSA parameters from the second PublicKey, | |
418 * and stores it at "pResultKey". | |
419 * | |
420 * PARAMETERS: | |
421 * "firstKey" | |
422 * Address of a Public Key that needs to inherit DSA parameters. | |
423 * Must be non-NULL. | |
424 * "secondKey" | |
425 * Address of a Public Key that has DSA parameters that will be inherited | |
426 * by "firstKey". Must be non-NULL. | |
427 * "pResultKey" | |
428 * Address where object pointer will be stored. Must be non-NULL. | |
429 * "plContext" | |
430 * Platform-specific context pointer. | |
431 * THREAD SAFETY: | |
432 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
433 * RETURNS: | |
434 * Returns NULL if the function succeeds. | |
435 * Returns a PublicKey Error if the function fails in a non-fatal way. | |
436 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
437 */ | |
438 PKIX_Error * | |
439 PKIX_PL_PublicKey_MakeInheritedDSAPublicKey( | |
440 PKIX_PL_PublicKey *firstKey, | |
441 PKIX_PL_PublicKey *secondKey, | |
442 PKIX_PL_PublicKey **pResultKey, | |
443 void *plContext); | |
444 | |
445 /* | |
446 * FUNCTION: PKIX_PL_Cert_GetCriticalExtensionOIDs | |
447 * DESCRIPTION: | |
448 * | |
449 * Retrieves a pointer to the List of OIDs (each OID corresponding to a | |
450 * critical extension of the Cert pointed to by "cert") and stores it at | |
451 * "pExtensions". If "cert" does not have any critical extensions, this | |
452 * function stores an empty List at "pExtensions". | |
453 * | |
454 * Note that the List returned by this function is immutable. | |
455 * | |
456 * PARAMETERS: | |
457 * "cert" | |
458 * Address of Cert whose critical extension OIDs are to be stored. | |
459 * Must be non-NULL. | |
460 * "pExtensions" | |
461 * Address where object pointer will be stored. Must be non-NULL. | |
462 * "plContext" | |
463 * Platform-specific context pointer. | |
464 * THREAD SAFETY: | |
465 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
466 * RETURNS: | |
467 * Returns NULL if the function succeeds. | |
468 * Returns a Cert Error if the function fails in a non-fatal way. | |
469 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
470 */ | |
471 PKIX_Error * | |
472 PKIX_PL_Cert_GetCriticalExtensionOIDs( | |
473 PKIX_PL_Cert *cert, | |
474 PKIX_List **pExtensions, /* list of PKIX_PL_OID */ | |
475 void *plContext); | |
476 | |
477 /* | |
478 * FUNCTION: PKIX_PL_Cert_GetAuthorityKeyIdentifier | |
479 * DESCRIPTION: | |
480 * | |
481 * Retrieves a pointer to a ByteArray representing the authority key | |
482 * identifier extension of the Cert pointed to by "cert" and stores it at | |
483 * "pAuthKeyId". | |
484 * | |
485 * Note that this function only retrieves the keyIdentifier component | |
486 * (OCTET STRING) of the AuthorityKeyIdentifier extension, when present. | |
487 * | |
488 * If "cert" does not have an AuthorityKeyIdentifier extension or if the | |
489 * keyIdentifier component of the AuthorityKeyIdentifier extension is not | |
490 * present, this function stores NULL at "pAuthKeyId". | |
491 * | |
492 * AuthorityKeyIdentifier ::= SEQUENCE { | |
493 * keyIdentifier [0] KeyIdentifier OPTIONAL, | |
494 * authorityCertIssuer [1] GeneralNames OPTIONAL, | |
495 * authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL } | |
496 * | |
497 * PARAMETERS: | |
498 * "cert" | |
499 * Address of Cert whose authority key identifier is to be stored. | |
500 * Must be non-NULL. | |
501 * "pAuthKeyId" | |
502 * Address where object pointer will be stored. Must be non-NULL. | |
503 * "plContext" | |
504 * Platform-specific context pointer. | |
505 * THREAD SAFETY: | |
506 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
507 * RETURNS: | |
508 * Returns NULL if the function succeeds. | |
509 * Returns a Cert Error if the function fails in a non-fatal way. | |
510 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
511 */ | |
512 PKIX_Error * | |
513 PKIX_PL_Cert_GetAuthorityKeyIdentifier( | |
514 PKIX_PL_Cert *cert, | |
515 PKIX_PL_ByteArray **pAuthKeyId, | |
516 void *plContext); | |
517 | |
518 /* | |
519 * FUNCTION: PKIX_PL_Cert_GetSubjectKeyIdentifier | |
520 * DESCRIPTION: | |
521 * | |
522 * Retrieves a pointer to a ByteArray representing the subject key identifier | |
523 * extension of the Cert pointed to by "cert" and stores it at "pSubjKeyId". | |
524 * If "cert" does not have a SubjectKeyIdentifier extension, this function | |
525 * stores NULL at "pSubjKeyId". | |
526 * | |
527 * SubjectKeyIdentifier ::= KeyIdentifier | |
528 * | |
529 * PARAMETERS: | |
530 * "cert" | |
531 * Address of Cert whose subject key identifier is to be stored. | |
532 * Must be non-NULL. | |
533 * "pSubjKeyId" | |
534 * Address where object pointer will be stored. Must be non-NULL. | |
535 * "plContext" | |
536 * Platform-specific context pointer. | |
537 * THREAD SAFETY: | |
538 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
539 * RETURNS: | |
540 * Returns NULL if the function succeeds. | |
541 * Returns a Cert Error if the function fails in a non-fatal way. | |
542 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
543 */ | |
544 PKIX_Error * | |
545 PKIX_PL_Cert_GetSubjectKeyIdentifier( | |
546 PKIX_PL_Cert *cert, | |
547 PKIX_PL_ByteArray **pSubjKeyId, | |
548 void *plContext); | |
549 | |
550 /* | |
551 * FUNCTION: PKIX_PL_Cert_GetSubjectAltNames | |
552 * DESCRIPTION: | |
553 * | |
554 * Retrieves a pointer to the List of GeneralNames (each GeneralName | |
555 * representing a subject alternative name found in the subject alternative | |
556 * names extension of the Cert pointed to by "cert") and stores it at | |
557 * "pSubjectAltNames". If "cert" does not have a SubjectAlternativeNames | |
558 * extension, this function stores NULL at "pSubjectAltNames". | |
559 * | |
560 * Note that the List returned by this function is immutable. | |
561 * | |
562 * SubjectAltName ::= GeneralNames | |
563 * | |
564 * GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName | |
565 * | |
566 * GeneralName ::= CHOICE { | |
567 * otherName [0] OtherName, | |
568 * rfc822Name [1] IA5String, | |
569 * dNSName [2] IA5String, | |
570 * x400Address [3] ORAddress, | |
571 * directoryName [4] Name, | |
572 * ediPartyName [5] EDIPartyName, | |
573 * uniformResourceIdentifier [6] IA5String, | |
574 * iPAddress [7] OCTET STRING, | |
575 * registeredID [8] OBJECT IDENTIFIER } | |
576 * | |
577 * OtherName ::= SEQUENCE { | |
578 * type-id OBJECT IDENTIFIER, | |
579 * value [0] EXPLICIT ANY DEFINED BY type-id } | |
580 * | |
581 * EDIPartyName ::= SEQUENCE { | |
582 * nameAssigner [0] DirectoryString OPTIONAL, | |
583 * partyName [1] DirectoryString } | |
584 * | |
585 * PARAMETERS: | |
586 * "cert" | |
587 * Address of Cert whose subjectAltNames are to be stored. | |
588 * Must be non-NULL. | |
589 * "pSubjectAltNames" | |
590 * Address where object pointer will be stored. Must be non-NULL. | |
591 * "plContext" | |
592 * Platform-specific context pointer. | |
593 * THREAD SAFETY: | |
594 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
595 * RETURNS: | |
596 * Returns NULL if the function succeeds. | |
597 * Returns a Cert Error if the function fails in a non-fatal way. | |
598 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
599 */ | |
600 PKIX_Error * | |
601 PKIX_PL_Cert_GetSubjectAltNames( | |
602 PKIX_PL_Cert *cert, | |
603 PKIX_List **pSubjectAltNames, /* list of PKIX_PL_GeneralName */ | |
604 void *plContext); | |
605 | |
606 /* | |
607 * FUNCTION: PKIX_PL_Cert_GetAllSubjectNames | |
608 * DESCRIPTION: | |
609 * | |
610 * Retrieves a pointer to the List of GeneralNames (each GeneralName | |
611 * representing a subject DN or a subject alternative name found in the | |
612 * subject alternative names extension of the Cert pointed to by "cert") and | |
613 * stores it at "pAllSubjectNames".If the Subject DN of "cert" is empty and | |
614 * it does not have a SubjectAlternativeNames extension, this function stores | |
615 * NULL at "pAllSubjectNames". | |
616 * | |
617 * Note that the List returned by this function is immutable. | |
618 * | |
619 * PARAMETERS: | |
620 * "cert" | |
621 * Address of Cert whose subject DN and subjectAltNames are to be stored. | |
622 * Must be non-NULL. | |
623 * "pAllSubjectNames" | |
624 * Address where object pointer will be stored. Must be non-NULL. | |
625 * "plContext" | |
626 * Platform-specific context pointer. | |
627 * THREAD SAFETY: | |
628 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
629 * RETURNS: | |
630 * Returns NULL if the function succeeds. | |
631 * Returns a Cert Error if the function fails in a non-fatal way. | |
632 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
633 */ | |
634 PKIX_Error * | |
635 PKIX_PL_Cert_GetAllSubjectNames( | |
636 PKIX_PL_Cert *cert, | |
637 PKIX_List **pAllSubjectNames, /* list of PKIX_PL_GeneralName */ | |
638 void *plContext); | |
639 | |
640 /* | |
641 * FUNCTION: PKIX_PL_Cert_GetExtendedKeyUsage | |
642 * DESCRIPTION: | |
643 * | |
644 * Retrieves a pointer to a List of OIDs (each OID corresponding to an | |
645 * extended key usage of the Cert pointed to by "cert") and stores it at | |
646 * "pKeyUsage". If "cert" does not have an extended key usage extension, this | |
647 * function stores a NULL at "pKeyUsage". | |
648 * | |
649 * Note that the List returned by this function is immutable. | |
650 * | |
651 * ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId | |
652 * | |
653 * KeyPurposeId ::= OBJECT IDENTIFIER | |
654 * | |
655 * PARAMETERS: | |
656 * "cert" | |
657 * Address of Cert whose extended key usage OIDs are to be stored. | |
658 * Must be non-NULL. | |
659 * "pKeyUsage" | |
660 * Address where object pointer will be stored. Must be non-NULL. | |
661 * "plContext" | |
662 * Platform-specific context pointer. | |
663 * THREAD SAFETY: | |
664 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
665 * RETURNS: | |
666 * Returns NULL if the function succeeds. | |
667 * Returns a Cert Error if the function fails in a non-fatal way. | |
668 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
669 */ | |
670 PKIX_Error * | |
671 PKIX_PL_Cert_GetExtendedKeyUsage( | |
672 PKIX_PL_Cert *cert, | |
673 PKIX_List **pKeyUsage, /* list of PKIX_PL_OID */ | |
674 void *plContext); | |
675 | |
676 /* | |
677 * FUNCTION: PKIX_PL_Cert_GetNameConstraints | |
678 * DESCRIPTION: | |
679 * | |
680 * Retrieves a pointer to a CertNameConstraints object representing the name | |
681 * constraints extension of the Cert pointed to by "cert" and stores it at | |
682 * "pNameConstraints". | |
683 * | |
684 * If "cert" does not have a name constraints extension, this function stores | |
685 * NULL at "pNameConstraints". | |
686 * | |
687 * NameConstraints ::= SEQUENCE { | |
688 * permittedSubtrees [0] GeneralSubtrees OPTIONAL, | |
689 * excludedSubtrees [1] GeneralSubtrees OPTIONAL } | |
690 * | |
691 * GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree | |
692 * | |
693 * GeneralSubtree ::= SEQUENCE { | |
694 * base GeneralName, | |
695 * minimum [0] BaseDistance DEFAULT 0, | |
696 * maximum [1] BaseDistance OPTIONAL } | |
697 * | |
698 * BaseDistance ::= INTEGER (0..MAX) | |
699 * | |
700 * PARAMETERS: | |
701 * "cert" | |
702 * Address of Cert whose name constraints extension is to be stored. | |
703 * Must be non-NULL. | |
704 * "pNameConstraints" | |
705 * Address where object pointer will be stored. Must be non-NULL. | |
706 * "plContext" | |
707 * Platform-specific context pointer. | |
708 * THREAD SAFETY: | |
709 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
710 * RETURNS: | |
711 * Returns NULL if the function succeeds. | |
712 * Returns a Cert Error if the function fails in a non-fatal way. | |
713 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
714 */ | |
715 PKIX_Error * | |
716 PKIX_PL_Cert_GetNameConstraints( | |
717 PKIX_PL_Cert *cert, | |
718 PKIX_PL_CertNameConstraints **pNameConstraints, | |
719 void *plContext); | |
720 | |
721 /* | |
722 * FUNCTION: PKIX_PL_Cert_GetBasicConstraints | |
723 * DESCRIPTION: | |
724 * | |
725 * Retrieves a pointer to a CertBasicConstraints object representing the basic | |
726 * constraints extension of the Cert pointed to by "cert" and stores it at | |
727 * "pBasicConstraints". | |
728 * | |
729 * If "cert" does not have a basic constraints extension, this function stores | |
730 * NULL at "pBasicConstraints". Once created, a CertBasicConstraints object | |
731 * is immutable. | |
732 * | |
733 * BasicConstraints ::= SEQUENCE { | |
734 * cA BOOLEAN DEFAULT FALSE, | |
735 * pathLenConstraint INTEGER (0..MAX) OPTIONAL } | |
736 * | |
737 * PARAMETERS: | |
738 * "cert" | |
739 * Address of Cert whose basic constraints extension is to be stored. | |
740 * Must be non-NULL. | |
741 * "pBasicConstraints" | |
742 * Address where object pointer will be stored. Must be non-NULL. | |
743 * "plContext" | |
744 * Platform-specific context pointer. | |
745 * THREAD SAFETY: | |
746 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
747 * RETURNS: | |
748 * Returns NULL if the function succeeds. | |
749 * Returns a Cert Error if the function fails in a non-fatal way. | |
750 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
751 */ | |
752 PKIX_Error * | |
753 PKIX_PL_Cert_GetBasicConstraints( | |
754 PKIX_PL_Cert *cert, | |
755 PKIX_PL_CertBasicConstraints **pBasicConstraints, | |
756 void *plContext); | |
757 | |
758 /* | |
759 * FUNCTION: PKIX_PL_BasicConstraints_GetCAFlag | |
760 * DESCRIPTION: | |
761 * | |
762 * Retrieves a pointer to a Boolean value representing the cA Flag component | |
763 * of the CertBasicConstraints object pointed to by "basicConstraints" and | |
764 * stores it at "pResult". | |
765 * | |
766 * BasicConstraints ::= SEQUENCE { | |
767 * cA BOOLEAN DEFAULT FALSE, | |
768 * pathLenConstraint INTEGER (0..MAX) OPTIONAL } | |
769 * | |
770 * PARAMETERS: | |
771 * "basicConstraints" | |
772 * Address of CertBasicConstraints whose cA Flag is to be stored. | |
773 * Must be non-NULL. | |
774 * "pResult" | |
775 * Address where object pointer will be stored. Must be non-NULL. | |
776 * "plContext" | |
777 * Platform-specific context pointer. | |
778 * THREAD SAFETY: | |
779 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
780 * RETURNS: | |
781 * Returns NULL if the function succeeds. | |
782 * Returns a Cert Error if the function fails in a non-fatal way. | |
783 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
784 */ | |
785 PKIX_Error * | |
786 PKIX_PL_BasicConstraints_GetCAFlag( | |
787 PKIX_PL_CertBasicConstraints *basicConstraints, | |
788 PKIX_Boolean *pResult, | |
789 void *plContext); | |
790 | |
791 /* | |
792 * FUNCTION: PKIX_PL_BasicConstraints_GetPathLenConstraint | |
793 * DESCRIPTION: | |
794 * | |
795 * Retrieves a pointer to an integer value representing the pathLenConstraint | |
796 * component of the CertBasicConstraints object pointed to by | |
797 * "basicConstraints" and stores it at "pPathLenConstraint". If the | |
798 * pathLenConstraint component is not present, this function stores -1 at | |
799 * "pPathLenConstraint". | |
800 * | |
801 * PARAMETERS: | |
802 * "basicConstraints" | |
803 * Address of CertBasicConstraints whose pathLen is to be stored. | |
804 * Must be non-NULL. | |
805 * "pPathLenConstraint" | |
806 * Address where PKIX_Int32 will be stored. Must be non-NULL. | |
807 * "plContext" | |
808 * Platform-specific context pointer. | |
809 * THREAD SAFETY: | |
810 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
811 * RETURNS: | |
812 * Returns NULL if the function succeeds. | |
813 * Returns a Cert Error if the function fails in a non-fatal way. | |
814 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
815 */ | |
816 PKIX_Error * | |
817 PKIX_PL_BasicConstraints_GetPathLenConstraint( | |
818 PKIX_PL_CertBasicConstraints *basicConstraints, | |
819 PKIX_Int32 *pPathLenConstraint, | |
820 void *plContext); | |
821 | |
822 /* | |
823 * FUNCTION: PKIX_PL_Cert_GetPolicyInformation | |
824 * DESCRIPTION: | |
825 * | |
826 * Retrieves a pointer to a List of CertPolicyInfos found in the certificate | |
827 * policies extension of the Cert pointed to by "cert" and stores it at | |
828 * "pPolicyInfo". If "cert" does not have a certificate policies extension, | |
829 * this function stores NULL at "pPolicyInfo". Once created, a CertPolicyInfo | |
830 * object is immutable. | |
831 * | |
832 * Note that the List returned by this function is immutable. | |
833 * | |
834 * certificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation | |
835 * | |
836 * PolicyInformation ::= SEQUENCE { | |
837 * policyIdentifier CertPolicyId, | |
838 * policyQualifiers SEQUENCE SIZE (1..MAX) OF | |
839 * PolicyQualifierInfo OPTIONAL } | |
840 * | |
841 * PARAMETERS: | |
842 * "cert" | |
843 * Address of Cert whose CertPolicyInfos are to be stored. | |
844 * Must be non-NULL. | |
845 * "pPolicyInfo" | |
846 * Address where object pointer will be stored. Must be non-NULL. | |
847 * "plContext" | |
848 * Platform-specific context pointer. | |
849 * THREAD SAFETY: | |
850 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
851 * RETURNS: | |
852 * Returns NULL if the function succeeds. | |
853 * Returns a Cert Error if the function fails in a non-fatal way. | |
854 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
855 */ | |
856 PKIX_Error * | |
857 PKIX_PL_Cert_GetPolicyInformation( | |
858 PKIX_PL_Cert *cert, | |
859 PKIX_List **pPolicyInfo, /* list of PKIX_PL_CertPolicyInfo */ | |
860 void *plContext); | |
861 | |
862 /* | |
863 * FUNCTION: PKIX_PL_CertPolicyInfo_GetPolicyId | |
864 * DESCRIPTION: | |
865 * | |
866 * Retrieves a pointer to an OID representing the policyIdentifier of the | |
867 * CertPolicyInfo pointed to by "policyInfo" and stores it at "pCertPolicyId". | |
868 * | |
869 * certificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation | |
870 * | |
871 * PolicyInformation ::= SEQUENCE { | |
872 * policyIdentifier CertPolicyId, | |
873 * policyQualifiers SEQUENCE SIZE (1..MAX) OF | |
874 * PolicyQualifierInfo OPTIONAL } | |
875 * | |
876 * CertPolicyId ::= OBJECT IDENTIFIER | |
877 * | |
878 * PARAMETERS: | |
879 * "policyInfo" | |
880 * Address of CertPolicyInfo whose policy identifier is to be stored. | |
881 * Must be non-NULL. | |
882 * "pCertPolicyId" | |
883 * Address where object pointer will be stored. Must be non-NULL. | |
884 * "plContext" | |
885 * Platform-specific context pointer. | |
886 * THREAD SAFETY: | |
887 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
888 * RETURNS: | |
889 * Returns NULL if the function succeeds. | |
890 * Returns a Cert Error if the function fails in a non-fatal way. | |
891 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
892 */ | |
893 PKIX_Error * | |
894 PKIX_PL_CertPolicyInfo_GetPolicyId( | |
895 PKIX_PL_CertPolicyInfo *policyInfo, | |
896 PKIX_PL_OID **pCertPolicyId, | |
897 void *plContext); | |
898 | |
899 /* | |
900 * FUNCTION: PKIX_PL_CertPolicyInfo_GetPolQualifiers | |
901 * DESCRIPTION: | |
902 * | |
903 * Retrieves a pointer to a List of the CertPolicyQualifiers representing | |
904 * the policyQualifiers of the CertPolicyInfo pointed to by "policyInfo" and | |
905 * stores it at "pPolicyQualifiers". If "policyInfo" does not have any | |
906 * policyQualifiers, this function stores NULL at "pPolicyQualifiers". Once | |
907 * created, a CertPolicyQualifier is immutable. | |
908 * | |
909 * Note that the List returned by this function is immutable. | |
910 * | |
911 * certificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation | |
912 * | |
913 * PolicyInformation ::= SEQUENCE { | |
914 * policyIdentifier CertPolicyId, | |
915 * policyQualifiers SEQUENCE SIZE (1..MAX) OF | |
916 * PolicyQualifierInfo OPTIONAL } | |
917 * | |
918 * PolicyQualifierInfo ::= SEQUENCE { | |
919 * policyQualifierId PolicyQualifierId, | |
920 * qualifier ANY DEFINED BY policyQualifierId } | |
921 * | |
922 * PARAMETERS: | |
923 * "policyInfo" | |
924 * Address of CertPolicyInfo whose policy qualifiers List is to be stored. | |
925 * Must be non-NULL. | |
926 * "pPolicyQualifiers" | |
927 * Address where object pointer will be stored. Must be non-NULL. | |
928 * "plContext" | |
929 * Platform-specific context pointer. | |
930 * THREAD SAFETY: | |
931 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
932 * RETURNS: | |
933 * Returns NULL if the function succeeds. | |
934 * Returns a Cert Error if the function fails in a non-fatal way. | |
935 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
936 */ | |
937 PKIX_Error * | |
938 PKIX_PL_CertPolicyInfo_GetPolQualifiers( | |
939 PKIX_PL_CertPolicyInfo *policyInfo, | |
940 PKIX_List **pPolicyQualifiers, /* list of PKIX_PL_CertPolicyQualifier */ | |
941 void *plContext); | |
942 | |
943 /* | |
944 * FUNCTION: PKIX_PL_PolicyQualifier_GetPolicyQualifierId | |
945 * DESCRIPTION: | |
946 * | |
947 * Retrieves a pointer to an OID representing the policyQualifierId of the | |
948 * CertPolicyQualifier pointed to by "policyQualifier" and stores it at | |
949 * "pPolicyQualifierId". | |
950 * | |
951 * PolicyQualifierInfo ::= SEQUENCE { | |
952 * policyQualifierId PolicyQualifierId, | |
953 * qualifier ANY DEFINED BY policyQualifierId } | |
954 * | |
955 * PolicyQualifierId ::= | |
956 * OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice ) | |
957 * | |
958 * PARAMETERS: | |
959 * "policyQualifier" | |
960 * Address of CertPolQualifier whose policyQualifierId is to be stored. | |
961 * Must be non-NULL. | |
962 * "pPolicyQualifierId" | |
963 * Address where object pointer will be stored. Must be non-NULL. | |
964 * "plContext" | |
965 * Platform-specific context pointer. | |
966 * THREAD SAFETY: | |
967 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
968 * RETURNS: | |
969 * Returns NULL if the function succeeds. | |
970 * Returns a Cert Error if the function fails in a non-fatal way. | |
971 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
972 */ | |
973 PKIX_Error * | |
974 PKIX_PL_PolicyQualifier_GetPolicyQualifierId( | |
975 PKIX_PL_CertPolicyQualifier *policyQualifier, | |
976 PKIX_PL_OID **pPolicyQualifierId, | |
977 void *plContext); | |
978 | |
979 /* | |
980 * FUNCTION: PKIX_PL_PolicyQualifier_GetQualifier | |
981 * DESCRIPTION: | |
982 * | |
983 * Retrieves a pointer to a ByteArray representing the qualifier of the | |
984 * CertPolicyQualifier pointed to by "policyQualifier" and stores it at | |
985 * "pQualifier". | |
986 * | |
987 * PolicyQualifierInfo ::= SEQUENCE { | |
988 * policyQualifierId PolicyQualifierId, | |
989 * qualifier ANY DEFINED BY policyQualifierId } | |
990 * | |
991 * PARAMETERS: | |
992 * "policyQualifier" | |
993 * Address of CertPolicyQualifier whose qualifier is to be stored. | |
994 * Must be non-NULL. | |
995 * "pQualifier" | |
996 * Address where object pointer will be stored. Must be non-NULL. | |
997 * "plContext" | |
998 * Platform-specific context pointer. | |
999 * THREAD SAFETY: | |
1000 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1001 * RETURNS: | |
1002 * Returns NULL if the function succeeds. | |
1003 * Returns a Cert Error if the function fails in a non-fatal way. | |
1004 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1005 */ | |
1006 PKIX_Error * | |
1007 PKIX_PL_PolicyQualifier_GetQualifier( | |
1008 PKIX_PL_CertPolicyQualifier *policyQualifier, | |
1009 PKIX_PL_ByteArray **pQualifier, | |
1010 void *plContext); | |
1011 | |
1012 /* | |
1013 * FUNCTION: PKIX_PL_Cert_GetPolicyMappings | |
1014 * DESCRIPTION: | |
1015 * | |
1016 * Retrieves a pointer to a List of CertPolicyMaps found in the policy | |
1017 * mappings extension of the Cert pointed to by "cert" and stores it at | |
1018 * "pPolicyMappings". If "cert" does not have a policy mappings extension, | |
1019 * this function stores NULL at "pPolicyMappings". Once created, a | |
1020 * CertPolicyMap is immutable. | |
1021 * | |
1022 * Note that the List returned by this function is immutable. | |
1023 * | |
1024 * PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE { | |
1025 * issuerDomainPolicy CertPolicyId, | |
1026 * subjectDomainPolicy CertPolicyId } | |
1027 * | |
1028 * PARAMETERS: | |
1029 * "cert" | |
1030 * Address of Cert whose CertPolicyMaps are to be stored. | |
1031 * Must be non-NULL. | |
1032 * "pPolicyMappings" | |
1033 * Address where object pointer will be stored. Must be non-NULL. | |
1034 * "plContext" | |
1035 * Platform-specific context pointer. | |
1036 * THREAD SAFETY: | |
1037 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1038 * RETURNS: | |
1039 * Returns NULL if the function succeeds. | |
1040 * Returns a Cert Error if the function fails in a non-fatal way. | |
1041 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1042 */ | |
1043 PKIX_Error * | |
1044 PKIX_PL_Cert_GetPolicyMappings( | |
1045 PKIX_PL_Cert *cert, | |
1046 PKIX_List **pPolicyMappings, /* list of PKIX_PL_CertPolicyMap */ | |
1047 void *plContext); | |
1048 | |
1049 /* | |
1050 * FUNCTION: PKIX_PL_CertPolicyMap_GetIssuerDomainPolicy | |
1051 * DESCRIPTION: | |
1052 * | |
1053 * Retrieves a pointer to an OID representing the issuerDomainPolicy of the | |
1054 * CertPolicyMap pointed to by "policyMapping" and stores it at | |
1055 * "pIssuerDomainPolicy". | |
1056 * | |
1057 * PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE { | |
1058 * issuerDomainPolicy CertPolicyId, | |
1059 * subjectDomainPolicy CertPolicyId } | |
1060 * | |
1061 * PARAMETERS: | |
1062 * "policyMapping" | |
1063 * Address of CertPolicyMap whose issuerDomainPolicy is to be stored. | |
1064 * Must be non-NULL. | |
1065 * "pIssuerDomainPolicy" | |
1066 * Address where object pointer will be stored. Must be non-NULL. | |
1067 * "plContext" | |
1068 * Platform-specific context pointer. | |
1069 * THREAD SAFETY: | |
1070 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1071 * RETURNS: | |
1072 * Returns NULL if the function succeeds. | |
1073 * Returns a Cert Error if the function fails in a non-fatal way. | |
1074 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1075 */ | |
1076 PKIX_Error * | |
1077 PKIX_PL_CertPolicyMap_GetIssuerDomainPolicy( | |
1078 PKIX_PL_CertPolicyMap *policyMapping, | |
1079 PKIX_PL_OID **pIssuerDomainPolicy, | |
1080 void *plContext); | |
1081 | |
1082 /* | |
1083 * FUNCTION: PKIX_PL_CertPolicyMap_GetSubjectDomainPolicy | |
1084 * DESCRIPTION: | |
1085 * | |
1086 * Retrieves a pointer to an OID representing the subjectDomainPolicy of the | |
1087 * CertPolicyMap pointed to by "policyMapping" and stores it at | |
1088 * "pSubjectDomainPolicy". | |
1089 * | |
1090 * PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE { | |
1091 * issuerDomainPolicy CertPolicyId, | |
1092 * subjectDomainPolicy CertPolicyId } | |
1093 * | |
1094 * PARAMETERS: | |
1095 * "policyMapping" | |
1096 * Address of CertPolicyMap whose subjectDomainPolicy is to be stored. | |
1097 * Must be non-NULL. | |
1098 * "pSubjectDomainPolicy" | |
1099 * Address where object pointer will be stored. Must be non-NULL. | |
1100 * "plContext" | |
1101 * Platform-specific context pointer. | |
1102 * THREAD SAFETY: | |
1103 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1104 * RETURNS: | |
1105 * Returns NULL if the function succeeds. | |
1106 * Returns a Cert Error if the function fails in a non-fatal way. | |
1107 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1108 */ | |
1109 PKIX_Error * | |
1110 PKIX_PL_CertPolicyMap_GetSubjectDomainPolicy( | |
1111 PKIX_PL_CertPolicyMap *policyMapping, | |
1112 PKIX_PL_OID **pSubjectDomainPolicy, | |
1113 void *plContext); | |
1114 | |
1115 /* | |
1116 * FUNCTION: PKIX_PL_Cert_GetRequireExplicitPolicy | |
1117 * DESCRIPTION: | |
1118 * | |
1119 * Retrieves the requireExplicitPolicy value of the policy constraints | |
1120 * extension of the Cert pointed to by "cert" and stores it at "pSkipCerts". | |
1121 * If "cert" does not have a policy constraints extension or the | |
1122 * requireExplicitPolicy component is not populated, this function stores -1 | |
1123 * at "pSkipCerts". | |
1124 * | |
1125 * PolicyConstraints ::= SEQUENCE { | |
1126 * requireExplicitPolicy [0] SkipCerts OPTIONAL, | |
1127 * inhibitPolicyMapping [1] SkipCerts OPTIONAL } | |
1128 * | |
1129 * SkipCerts ::= INTEGER (0..MAX) | |
1130 * | |
1131 * PARAMETERS: | |
1132 * "cert" | |
1133 * Address of Cert whose requireExplicitPolicy value is to be stored. | |
1134 * Must be non-NULL. | |
1135 * "pSkipCerts" | |
1136 * Address where PKIX_Int32 will be stored. Must be non-NULL. | |
1137 * "plContext" | |
1138 * Platform-specific context pointer. | |
1139 * THREAD SAFETY: | |
1140 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1141 * RETURNS: | |
1142 * Returns NULL if the function succeeds. | |
1143 * Returns a Cert Error if the function fails in a non-fatal way. | |
1144 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1145 */ | |
1146 PKIX_Error * | |
1147 PKIX_PL_Cert_GetRequireExplicitPolicy( | |
1148 PKIX_PL_Cert *cert, | |
1149 PKIX_Int32 *pSkipCerts, | |
1150 void *plContext); | |
1151 | |
1152 /* | |
1153 * FUNCTION: PKIX_PL_Cert_GetPolicyMappingInhibited | |
1154 * DESCRIPTION: | |
1155 * | |
1156 * Retrieves the inhibitPolicyMapping value of the policy constraints | |
1157 * extension of the Cert pointed to by "cert" and stores it at "pSkipCerts". | |
1158 * If "cert" does not have a policy constraints extension or the | |
1159 * inhibitPolicyMapping component is not populated, this function stores -1 | |
1160 * at "pSkipCerts". | |
1161 * | |
1162 * PolicyConstraints ::= SEQUENCE { | |
1163 * requireExplicitPolicy [0] SkipCerts OPTIONAL, | |
1164 * inhibitPolicyMapping [1] SkipCerts OPTIONAL } | |
1165 * | |
1166 * SkipCerts ::= INTEGER (0..MAX) | |
1167 * | |
1168 * PARAMETERS: | |
1169 * "cert" | |
1170 * Address of Cert whose requireExplicitPolicy value is to be stored. | |
1171 * Must be non-NULL. | |
1172 * "pSkipCerts" | |
1173 * Address where PKIX_Int32 will be stored. Must be non-NULL. | |
1174 * "plContext" | |
1175 * Platform-specific context pointer. | |
1176 * THREAD SAFETY: | |
1177 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1178 * RETURNS: | |
1179 * Returns NULL if the function succeeds. | |
1180 * Returns a Cert Error if the function fails in a non-fatal way. | |
1181 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1182 */ | |
1183 PKIX_Error * | |
1184 PKIX_PL_Cert_GetPolicyMappingInhibited( | |
1185 PKIX_PL_Cert *cert, | |
1186 PKIX_Int32 *pSkipCerts, | |
1187 void *plContext); | |
1188 | |
1189 /* | |
1190 * FUNCTION: PKIX_PL_Cert_GetInhibitAnyPolicy | |
1191 * DESCRIPTION: | |
1192 * | |
1193 * Retrieves the value of the inhibit any-policy extension of the Cert | |
1194 * pointed to by "cert" and stores it at "pSkipCerts". If "cert" does not have | |
1195 * an inhibit any-policy extension, this function stores -1 at "pSkipCerts". | |
1196 * | |
1197 * InhibitAnyPolicy ::= SkipCerts | |
1198 * | |
1199 * SkipCerts ::= INTEGER (0..MAX) | |
1200 * | |
1201 * PARAMETERS: | |
1202 * "cert" | |
1203 * Address of Cert whose inhibit any-policy extensions value is to be | |
1204 * stored. Must be non-NULL. | |
1205 * "pSkipCerts" | |
1206 * Address where PKIX_Int32 will be stored. Must be non-NULL. | |
1207 * "plContext" | |
1208 * Platform-specific context pointer. | |
1209 * THREAD SAFETY: | |
1210 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1211 * RETURNS: | |
1212 * Returns NULL if the function succeeds. | |
1213 * Returns a Cert Error if the function fails in a non-fatal way. | |
1214 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1215 */ | |
1216 PKIX_Error * | |
1217 PKIX_PL_Cert_GetInhibitAnyPolicy( | |
1218 PKIX_PL_Cert *cert, | |
1219 PKIX_Int32 *pSkipCerts, | |
1220 void *plContext); | |
1221 | |
1222 /* policy processing functions */ | |
1223 | |
1224 /* | |
1225 * FUNCTION: PKIX_PL_Cert_AreCertPoliciesCritical | |
1226 * DESCRIPTION: | |
1227 * | |
1228 * Checks whether the certificate policies extension of the Cert pointed to | |
1229 * by "cert" is critical and stores the Boolean result at "pCritical". If | |
1230 * "cert" does not have a certificate policies extension, this function | |
1231 * stores NULL at "pCritical". | |
1232 * | |
1233 * XXX what distinguishes NULL from PKIX_FALSE? | |
1234 * | |
1235 * PARAMETERS: | |
1236 * "cert" | |
1237 * Address of Cert whose certificate policies extension's criticality is | |
1238 * to be determined. Must be non-NULL. | |
1239 * "pCritical" | |
1240 * Address where PKIX_Boolean will be stored. Must be non-NULL. | |
1241 * "plContext" | |
1242 * Platform-specific context pointer. | |
1243 * THREAD SAFETY: | |
1244 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1245 * RETURNS: | |
1246 * Returns NULL if the function succeeds. | |
1247 * Returns a Cert Error if the function fails in a non-fatal way. | |
1248 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1249 */ | |
1250 PKIX_Error * | |
1251 PKIX_PL_Cert_AreCertPoliciesCritical( | |
1252 PKIX_PL_Cert *cert, | |
1253 PKIX_Boolean *pCritical, | |
1254 void *plContext); | |
1255 | |
1256 /* | |
1257 * FUNCTION: PKIX_PL_Cert_CheckNameConstraints | |
1258 * DESCRIPTION: | |
1259 * | |
1260 * Checks whether the subject distinguished name and subject alternative names | |
1261 * of the Cert pointed to by "cert" satisfy the CertNameConstraints pointed | |
1262 * to by "nameConstraints". If the CertNameConstraints are not satisfied, a | |
1263 * PKIX_Error pointer is returned. If "nameConstraints" is NULL, the function | |
1264 * does nothing. | |
1265 * | |
1266 * PARAMETERS: | |
1267 * "cert" | |
1268 * Address of Cert whose subject names are to be checked. | |
1269 * Must be non-NULL. | |
1270 * "nameConstraints" | |
1271 * Address of CertNameConstraints that need to be satisfied. | |
1272 * "treatCommonNameAsDNSName" | |
1273 * PKIX_TRUE if the subject common name should be considered a dNSName | |
1274 * when evaluating name constraints. | |
1275 * "plContext" | |
1276 * Platform-specific context pointer. | |
1277 * THREAD SAFETY: | |
1278 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1279 * RETURNS: | |
1280 * Returns NULL if the function succeeds. | |
1281 * Returns a Cert Error if the function fails in a non-fatal way. | |
1282 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1283 */ | |
1284 PKIX_Error * | |
1285 PKIX_PL_Cert_CheckNameConstraints( | |
1286 PKIX_PL_Cert *cert, | |
1287 PKIX_PL_CertNameConstraints *nameConstraints, | |
1288 PKIX_Boolean treatCommonNameAsDNSName, | |
1289 void *plContext); | |
1290 | |
1291 /* | |
1292 * FUNCTION: PKIX_PL_Cert_MergeNameConstraints | |
1293 * DESCRIPTION: | |
1294 * | |
1295 * Merges the CertNameConstraints pointed to by "firstNC" and the | |
1296 * CertNameConstraints pointed to by "secondNC" and stores the merged | |
1297 * CertNameConstraints at "pResultNC". If "secondNC" is NULL, the | |
1298 * CertNameConstraints pointed to by "firstNC" is stored at "pResultNC". | |
1299 * | |
1300 * Once created, a CertNameConstraints object is immutable. | |
1301 * | |
1302 * PARAMETERS: | |
1303 * "firstNC" | |
1304 * Address of first CertNameConstraints to be merged. Must be non-NULL. | |
1305 * "secondNC" | |
1306 * Address of second CertNameConstraints to be merged | |
1307 * "pResultNC" | |
1308 * Address where object pointer will be stored. Must be non-NULL. | |
1309 * "plContext" | |
1310 * Platform-specific context pointer. | |
1311 * THREAD SAFETY: | |
1312 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1313 * RETURNS: | |
1314 * Returns NULL if the function succeeds. | |
1315 * Returns a Cert Error if the function fails in a non-fatal way. | |
1316 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1317 */ | |
1318 PKIX_Error * | |
1319 PKIX_PL_Cert_MergeNameConstraints( | |
1320 PKIX_PL_CertNameConstraints *firstNC, | |
1321 PKIX_PL_CertNameConstraints *secondNC, | |
1322 PKIX_PL_CertNameConstraints **pResultNC, | |
1323 void *plContext); | |
1324 | |
1325 /* | |
1326 * FUNCTION: PKIX_PL_Cert_VerifyKeyUsage | |
1327 * DESCRIPTION: | |
1328 * | |
1329 * Verifies that the keyUsage bit(s) specified by "keyUsage" appear in the | |
1330 * keyUsage extension of the Cert pointed to by "cert". The keyUsage bit | |
1331 * values specified in pkixt.h are supported, and can be bitwise or'ed if | |
1332 * multiple bit values are to be verified. If the keyUsages do not all appear | |
1333 * in the keyUsage extension of "cert", a PKIX_Error pointer is returned. | |
1334 * | |
1335 * KeyUsage ::= BIT STRING { | |
1336 * digitalSignature (0), | |
1337 * nonRepudiation (1), | |
1338 * keyEncipherment (2), | |
1339 * dataEncipherment (3), | |
1340 * keyAgreement (4), | |
1341 * keyCertSign (5), | |
1342 * cRLSign (6), | |
1343 * encipherOnly (7), | |
1344 * decipherOnly (8) } | |
1345 * | |
1346 * PARAMETERS: | |
1347 * "cert" | |
1348 * Address of Cert whose keyUsage bits are to be verified. | |
1349 * Must be non-NULL. | |
1350 * "keyUsage" | |
1351 * Constant representing keyUsage bit(s) that all must appear in keyUsage | |
1352 * extension of "cert". | |
1353 * "plContext" - Platform-specific context pointer. | |
1354 * THREAD SAFETY: | |
1355 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1356 * RETURNS: | |
1357 * Returns NULL if the function succeeds. | |
1358 * Returns a Cert Error if the function fails in a non-fatal way. | |
1359 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1360 */ | |
1361 PKIX_Error * | |
1362 PKIX_PL_Cert_VerifyKeyUsage( | |
1363 PKIX_PL_Cert *cert, | |
1364 PKIX_UInt32 keyUsage, | |
1365 void *plContext); | |
1366 | |
1367 /* | |
1368 * FUNCTION: PKIX_PL_Cert_VerifyCertAndKeyType | |
1369 * DESCRIPTION: | |
1370 * | |
1371 * Verifies cert and key types against certificate usage that is | |
1372 * a part of plContext(pkix_pl_nsscontext) structure. Throws an error | |
1373 * if cert or key types does not match. | |
1374 * | |
1375 * PARAMETERS: | |
1376 * "cert" | |
1377 * Address of Cert whose keyUsage bits are to be verified. | |
1378 * Must be non-NULL. | |
1379 * "isLeafCert" | |
1380 * What type of a cert has been verified. | |
1381 * "plContext" - Platform-specific context pointer. | |
1382 * THREAD SAFETY: | |
1383 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1384 * RETURNS: | |
1385 * Returns NULL if the function succeeds. | |
1386 * Returns a Cert Error if the function fails in a non-fatal way. | |
1387 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1388 */ | |
1389 PKIX_Error * | |
1390 PKIX_PL_Cert_VerifyCertAndKeyType( | |
1391 PKIX_PL_Cert *cert, | |
1392 PKIX_Boolean isChainCert, | |
1393 void *plContext); | |
1394 | |
1395 /* | |
1396 * FUNCTION: PKIX_PL_Cert_CheckValidity | |
1397 * DESCRIPTION: | |
1398 * | |
1399 * Checks whether the Cert pointed to by "cert" would be valid at the time | |
1400 * represented by the Date pointed to by "date". If "date" is NULL, then this | |
1401 * function checks whether the Cert would be valid at the current time. If the | |
1402 * Cert would not be valid at the specified Date, a PKIX_Error pointer is | |
1403 * returned. | |
1404 * | |
1405 * Validity ::= SEQUENCE { | |
1406 * notBefore Time, | |
1407 * notAfter Time } | |
1408 * | |
1409 * Time ::= CHOICE { | |
1410 * utcTime UTCTime, | |
1411 * generalTime GeneralizedTime } | |
1412 * | |
1413 * PARAMETERS: | |
1414 * "cert" | |
1415 * Address of Cert whose validity is to be checked. Must be non-NULL. | |
1416 * "date" | |
1417 * Address of Date at which the Cert is being checked for validity. | |
1418 * If NULL, the current time is used for the Date. | |
1419 * "plContext" | |
1420 * Platform-specific context pointer. | |
1421 * THREAD SAFETY: | |
1422 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1423 * RETURNS: | |
1424 * Returns NULL if the function succeeds. | |
1425 * Returns a Cert Error if the function fails in a non-fatal way. | |
1426 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1427 */ | |
1428 PKIX_Error * | |
1429 PKIX_PL_Cert_CheckValidity( | |
1430 PKIX_PL_Cert *cert, | |
1431 PKIX_PL_Date *date, | |
1432 void *plContext); | |
1433 | |
1434 /* | |
1435 * FUNCTION: PKIX_PL_Cert_GetValidityNotAfter | |
1436 * DESCRIPTION: | |
1437 * | |
1438 * Retrieves a pointer to the Date that represents the notAfter time of the | |
1439 * Certificate pointed to by "cert" and stores it at "pDate". | |
1440 * | |
1441 * Validity ::= SEQUENCE { | |
1442 * notBefore Time, | |
1443 * notAfter Time } | |
1444 * | |
1445 * PARAMETERS: | |
1446 * "cert" | |
1447 * Address of Cert whose validity time is to be retrieved. Must be | |
1448 * non-NULL. | |
1449 * "date" | |
1450 * Address of Date at which the Cert's notAfter time is being retrieved. | |
1451 * Must be non-NULL. | |
1452 * "plContext" | |
1453 * Platform-specific context pointer. | |
1454 * THREAD SAFETY: | |
1455 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1456 * RETURNS: | |
1457 * Returns NULL if the function succeeds. | |
1458 * Returns a Cert Error if the function fails in a non-fatal way. | |
1459 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1460 */ | |
1461 PKIX_Error * | |
1462 PKIX_PL_Cert_GetValidityNotAfter( | |
1463 PKIX_PL_Cert *cert, | |
1464 PKIX_PL_Date **pDate, | |
1465 void *plContext); | |
1466 | |
1467 /* | |
1468 * FUNCTION: PKIX_PL_Cert_VerifySignature | |
1469 * DESCRIPTION: | |
1470 * | |
1471 * Verifies the signature on the Cert pointed to by "cert" using the | |
1472 * PublicKey pointed to by "pubKey". If the signature doesn't verify, an | |
1473 * Error pointer is returned. | |
1474 * | |
1475 * PARAMETERS: | |
1476 * "cert" | |
1477 * Address of Cert whose signature is to be verified. Must be non-NULL. | |
1478 * "pubKey" | |
1479 * Address of a Public Key used to verify the signature. Must be non-NULL. | |
1480 * "plContext" | |
1481 * Platform-specific context pointer. | |
1482 * THREAD SAFETY: | |
1483 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1484 * RETURNS: | |
1485 * Returns NULL if the function succeeds. | |
1486 * Returns a Cert Error if the function fails in a non-fatal way. | |
1487 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1488 */ | |
1489 PKIX_Error * | |
1490 PKIX_PL_Cert_VerifySignature( | |
1491 PKIX_PL_Cert *cert, | |
1492 PKIX_PL_PublicKey *pubKey, | |
1493 void *plContext); | |
1494 | |
1495 /* A set of flags to indicate how explicitly configured trust anchors should be | |
1496 * handled by PKIX_PL_Cert_IsCertTrusted | |
1497 */ | |
1498 typedef enum PKIX_PL_TrustAnchorModeEnum { | |
1499 /* Indicates trust anchors should be ignored; only the underlying | |
1500 * platform's trust settings should be used. | |
1501 */ | |
1502 PKIX_PL_TrustAnchorMode_Ignore, | |
1503 | |
1504 /* Indicates that explicitly configured trust anchors may be considered | |
1505 * trustworthy, if present. | |
1506 * Note: If the underlying platform supports marking a certificate as | |
1507 * explicitly untrustworthy, explicitly configured trust anchors | |
1508 * MAY be ignored/rejected. | |
1509 */ | |
1510 PKIX_PL_TrustAnchorMode_Additive, | |
1511 | |
1512 /* Indicates that ONLY trust anchors should be considered as | |
1513 * trustworthy. | |
1514 * Note: If the underlying platform supports marking a certificate as | |
1515 * explicitly untrustworthy, explicitly configured trust anchors | |
1516 * MAY be ignored/rejected. | |
1517 */ | |
1518 PKIX_PL_TrustAnchorMode_Exclusive | |
1519 } PKIX_PL_TrustAnchorMode; | |
1520 | |
1521 /* | |
1522 * FUNCTION: PKIX_PL_Cert_IsCertTrusted | |
1523 * DESCRIPTION: | |
1524 * | |
1525 * Checks the Cert specified by "cert" to determine, in a manner that depends | |
1526 * on the underlying platform, whether it is trusted, and stores the result in | |
1527 * "pTrusted". If a certificate is trusted it means that a chain built to that | |
1528 * certificate, and satisfying all the usage, policy, validity, and other | |
1529 * tests, is a valid chain and the End Entity certificate from which it was | |
1530 * built can be trusted. | |
1531 * | |
1532 * If the Certificate is not intrinsically trustworthy, it still might end up a | |
1533 * component in a successful chain. | |
1534 * | |
1535 * If the Certificate is intrinsically untrustworthy, this function will return | |
1536 * an error. | |
1537 * | |
1538 * PARAMETERS | |
1539 * "cert" | |
1540 * Address of Cert whose trustworthiness is to be determined. Must be | |
1541 * non-NULL. | |
1542 * "trustAnchorMode" | |
1543 * A PKIX_PL_TrustAnchorMode that indicates how explicitly defined user | |
1544 * trust anchors should be handled. | |
1545 * "pTrusted" | |
1546 * Address where the Boolean value will be stored. Must be non-NULL. | |
1547 * "plContext" | |
1548 * Platform-specific context pointer. | |
1549 * THREAD SAFETY: | |
1550 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1551 * RETURNS: | |
1552 * Returns NULL if the function succeeds. | |
1553 * Returns a CERT Error if the function fails in a non-fatal way. | |
1554 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1555 */ | |
1556 PKIX_Error * | |
1557 PKIX_PL_Cert_IsCertTrusted( | |
1558 PKIX_PL_Cert *cert, | |
1559 PKIX_PL_TrustAnchorMode trustAnchorMode, | |
1560 PKIX_Boolean *pTrusted, | |
1561 void *plContext); | |
1562 | |
1563 /* | |
1564 * FUNCTION: PKIX_PL_Cert_IsLeafCertTrusted | |
1565 * DESCRIPTION: | |
1566 * | |
1567 * Checks the Leaf Cert specified by "cert" to determine, in a manner that | |
1568 * depends on the underlying platform, whether it is trusted, and stores the | |
1569 * result in "pTrusted". If a certificate is trusted it means that this | |
1570 * End Entify certificate has been marked as trusted for the requested usage, | |
1571 * policy, validity, and other tests. | |
1572 * | |
1573 * If the Certificate is not intrinsically trustworthy, we can still try to | |
1574 * build a successful chain. | |
1575 * | |
1576 * If the Certificate is intrinsically untrustworthy, this function will return | |
1577 * an error. | |
1578 * | |
1579 * PARAMETERS | |
1580 * "cert" | |
1581 * Address of Cert whose trustworthiness is to be determined. Must be | |
1582 * non-NULL. | |
1583 * "pTrusted" | |
1584 * Address where the Boolean value will be stored. Must be non-NULL. | |
1585 * "plContext" | |
1586 * Platform-specific context pointer. | |
1587 * THREAD SAFETY: | |
1588 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1589 * RETURNS: | |
1590 * Returns NULL if the function succeeds. | |
1591 * Returns a CERT Error if the function fails in a non-fatal way. | |
1592 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1593 */ | |
1594 PKIX_Error * | |
1595 PKIX_PL_Cert_IsLeafCertTrusted( | |
1596 PKIX_PL_Cert *cert, | |
1597 PKIX_Boolean *pTrusted, | |
1598 void *plContext); | |
1599 | |
1600 /* FUNCTION: PKIX_PL_Cert_SetAsTrustAnchor */ | |
1601 PKIX_Error* | |
1602 PKIX_PL_Cert_SetAsTrustAnchor(PKIX_PL_Cert *cert, | |
1603 void *plContext); | |
1604 | |
1605 /* | |
1606 * FUNCTION: PKIX_PL_Cert_GetCacheFlag | |
1607 * DESCRIPTION: | |
1608 * | |
1609 * Retrieves the value of the cache flag in "cert" and return it at address | |
1610 * pointed by "pCacheFlag". The initila cache flag is determined by the | |
1611 * CertStore this "cert" is fetched from. When CertStore is created, user | |
1612 * need to specify if the data should be cached. | |
1613 * | |
1614 * PARAMETERS: | |
1615 * "cert" | |
1616 * Address of Cert whose cache flag is fetched. Must be non-NULL. | |
1617 * "pCacheFlag" | |
1618 * Address where PKIX_Boolean will be stored. Must be non-NULL. | |
1619 * "plContext" | |
1620 * Platform-specific context pointer. | |
1621 * THREAD SAFETY: | |
1622 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1623 * RETURNS: | |
1624 * Returns NULL if the function succeeds. | |
1625 * Returns a Cert Error if the function fails in a non-fatal way. | |
1626 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1627 */ | |
1628 PKIX_Error * | |
1629 PKIX_PL_Cert_GetCacheFlag( | |
1630 PKIX_PL_Cert *cert, | |
1631 PKIX_Boolean *pCacheFlag, | |
1632 void *plContext); | |
1633 | |
1634 /* | |
1635 * FUNCTION: PKIX_PL_Cert_SetCacheFlag | |
1636 * DESCRIPTION: | |
1637 * | |
1638 * Set the value of the cache flag in "cert" base on the boolean value stored | |
1639 * at "cacheFlag". This function is meant to be used by CertStore after a | |
1640 * Cert is created. | |
1641 * | |
1642 * PARAMETERS: | |
1643 * "cert" | |
1644 * Address of Cert where "cacheFlag" is stored. Must be non-NULL. | |
1645 * "cacheFlag" | |
1646 * PKIX_Boolean flag for cache flag. | |
1647 * "plContext" | |
1648 * Platform-specific context pointer. | |
1649 * THREAD SAFETY: | |
1650 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1651 * RETURNS: | |
1652 * Returns NULL if the function succeeds. | |
1653 * Returns a Cert Error if the function fails in a non-fatal way. | |
1654 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1655 */ | |
1656 PKIX_Error * | |
1657 PKIX_PL_Cert_SetCacheFlag( | |
1658 PKIX_PL_Cert *cert, | |
1659 PKIX_Boolean cacheFlag, | |
1660 void *plContext); | |
1661 | |
1662 /* | |
1663 * FUNCTION: PKIX_PL_Cert_GetTrustCertStore | |
1664 * DESCRIPTION: | |
1665 * | |
1666 * Retrieves the value of the CertStore in "cert" and return it at address | |
1667 * pointed by "pCertStore". | |
1668 * | |
1669 * PARAMETERS: | |
1670 * "cert" | |
1671 * Address of Cert whose CertStore is fetched. Must be non-NULL. | |
1672 * "pTrustCertStore" | |
1673 * Address where CertStore will be stored and returned. Must be non-NULL. | |
1674 * "plContext" | |
1675 * Platform-specific context pointer. | |
1676 * THREAD SAFETY: | |
1677 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1678 * RETURNS: | |
1679 * Returns NULL if the function succeeds. | |
1680 * Returns a Cert Error if the function fails in a non-fatal way. | |
1681 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1682 */ | |
1683 PKIX_Error * | |
1684 PKIX_PL_Cert_GetTrustCertStore( | |
1685 PKIX_PL_Cert *cert, | |
1686 PKIX_CertStore **pTrustCertStore, | |
1687 void *plContext); | |
1688 | |
1689 /* | |
1690 * FUNCTION: PKIX_PL_Cert_SetTrustCertStore | |
1691 * DESCRIPTION: | |
1692 * | |
1693 * Set the value of the CertStore "certStore" in "cert". | |
1694 * | |
1695 * PARAMETERS: | |
1696 * "cert" | |
1697 * Address of Cert where "certStore" will be stored. Must be non-NULL. | |
1698 * "trustCertStore" | |
1699 * Address where the CertStore is. Must be non-NULL. | |
1700 * "plContext" | |
1701 * Platform-specific context pointer. | |
1702 * THREAD SAFETY: | |
1703 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1704 * RETURNS: | |
1705 * Returns NULL if the function succeeds. | |
1706 * Returns a Cert Error if the function fails in a non-fatal way. | |
1707 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1708 */ | |
1709 PKIX_Error * | |
1710 PKIX_PL_Cert_SetTrustCertStore( | |
1711 PKIX_PL_Cert *cert, | |
1712 PKIX_CertStore *trustCertStore, | |
1713 void *plContext); | |
1714 | |
1715 | |
1716 /* | |
1717 * FUNCTION: PKIX_PL_Cert_GetAuthorityInfoAccess | |
1718 * DESCRIPTION: | |
1719 * | |
1720 * Retrieves the value(s) of the Authority Information Access in "cert" and | |
1721 * returns it in a list at address pointed by "pAuthorityInfoAccess". | |
1722 * | |
1723 * SubjectInfoAccess ::= | |
1724 * SEQUENCE SIZE (1..MAX) of AccessDescription | |
1725 * AccessDescription ::= SEQUENCE { | |
1726 * accessMethod OBJECT IDENTIFIER, | |
1727 * accessLocation GeneralName | |
1728 * } | |
1729 * | |
1730 * PARAMETERS: | |
1731 * "cert" | |
1732 * Address of Cert whose Authority Information Access is fetched. | |
1733 * Must be non-NULL. | |
1734 * "pAuthorityInfoAccess" | |
1735 * Address where Authority InfoAccess will be stored and returned. | |
1736 * Must be non-NULL. | |
1737 * "plContext" | |
1738 * Platform-specific context pointer. | |
1739 * THREAD SAFETY: | |
1740 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1741 * RETURNS: | |
1742 * Returns NULL if the function succeeds. | |
1743 * Returns a Cert Error if the function fails in a non-fatal way. | |
1744 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1745 */ | |
1746 PKIX_Error * | |
1747 PKIX_PL_Cert_GetAuthorityInfoAccess( | |
1748 PKIX_PL_Cert *cert, | |
1749 PKIX_List **pAiaList, /* of PKIX_PL_InfoAccess */ | |
1750 void *plContext); | |
1751 | |
1752 | |
1753 /* | |
1754 * FUNCTION: PKIX_PL_Cert_GetSubjectInfoAccess | |
1755 * DESCRIPTION: | |
1756 * | |
1757 * Retrieves the value(s) of the Subject Information Access in "cert" and | |
1758 * returns it in a list at address pointed by "pSubjectInfoAccess". | |
1759 * | |
1760 * SubjectInfoAccess ::= | |
1761 * SEQUENCE SIZE (1..MAX) of AccessDescription | |
1762 * AccessDescription ::= SEQUENCE { | |
1763 * accessMethod OBJECT IDENTIFIER, | |
1764 * accessLocation GeneralName | |
1765 * } | |
1766 * | |
1767 * PARAMETERS: | |
1768 * "cert" | |
1769 * Address of Cert whose Subject Information Access is fetched. | |
1770 * Must be non-NULL. | |
1771 * "pSubjectInfoAccess" | |
1772 * Address where Subject InfoAccess will be stored and returned. | |
1773 * Must be non-NULL. | |
1774 * "plContext" | |
1775 * Platform-specific context pointer. | |
1776 * THREAD SAFETY: | |
1777 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1778 * RETURNS: | |
1779 * Returns NULL if the function succeeds. | |
1780 * Returns a Cert Error if the function fails in a non-fatal way. | |
1781 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1782 */ | |
1783 PKIX_Error * | |
1784 PKIX_PL_Cert_GetSubjectInfoAccess( | |
1785 PKIX_PL_Cert *cert, | |
1786 PKIX_List **pSiaList, /* of PKIX_PL_InfoAccess */ | |
1787 void *plContext); | |
1788 | |
1789 | |
1790 | |
1791 /* | |
1792 * FUNCTION: PKIX_PL_Cert_GetCrlDp | |
1793 * DESCRIPTION: | |
1794 * | |
1795 * Retrieves the value(s) of the CRL Distribution Point Extension and | |
1796 * returns it in a list at address pointed by "pDpList". | |
1797 * | |
1798 * PARAMETERS: | |
1799 * "cert" | |
1800 * Address of Cert whose Subject Information Access is fetched. | |
1801 * Must be non-NULL. | |
1802 * "pDpList" | |
1803 * Address where CRL DP will be stored and returned. | |
1804 * Must be non-NULL. | |
1805 * "plContext" | |
1806 * Platform-specific context pointer. | |
1807 * THREAD SAFETY: | |
1808 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1809 * RETURNS: | |
1810 * Returns NULL if the function succeeds. | |
1811 * Returns a Cert Error if the function fails in a non-fatal way. | |
1812 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1813 */ | |
1814 PKIX_Error * | |
1815 PKIX_PL_Cert_GetCrlDp(PKIX_PL_Cert *cert, | |
1816 PKIX_List **pDpList, | |
1817 void *plContext); | |
1818 | |
1819 | |
1820 /* | |
1821 * InfoAccess | |
1822 * | |
1823 * To hold Authority Information Access or Subject Information Access | |
1824 * retrieved from a Certificate. | |
1825 */ | |
1826 | |
1827 #define PKIX_INFOACCESS_OCSP 1 | |
1828 #define PKIX_INFOACCESS_CA_ISSUERS 2 | |
1829 #define PKIX_INFOACCESS_TIMESTAMPING 3 | |
1830 #define PKIX_INFOACCESS_CA_REPOSITORY 5 | |
1831 | |
1832 #define PKIX_INFOACCESS_LOCATION_UNKNOWN 0 | |
1833 #define PKIX_INFOACCESS_LOCATION_HTTP 1 | |
1834 #ifndef NSS_PKIX_NO_LDAP | |
1835 #define PKIX_INFOACCESS_LOCATION_LDAP 2 | |
1836 #endif | |
1837 | |
1838 /* | |
1839 * FUNCTION: PKIX_PL_InfoAccess_GetMethod | |
1840 * DESCRIPTION: | |
1841 * | |
1842 * Stores the method of the Information Access from "infoAccess" and | |
1843 * returns in "pMethod". | |
1844 * | |
1845 * SubjectInfoAccess ::= | |
1846 * AccessDescription ::= SEQUENCE { | |
1847 * accessMethod OBJECT IDENTIFIER, | |
1848 * accessLocation GeneralName | |
1849 * } | |
1850 * | |
1851 * PARAMETERS: | |
1852 * "infoAccess" | |
1853 * Address of PKIX_PL_InfoAccess that has the access data. | |
1854 * Must be non-NULL. | |
1855 * "pMethod" | |
1856 * Address where access method will be stored and returned. | |
1857 * Must be non-NULL. | |
1858 * "plContext" | |
1859 * Platform-specific context pointer. | |
1860 * THREAD SAFETY: | |
1861 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1862 * RETURNS: | |
1863 * Returns NULL if the function succeeds. | |
1864 * Returns a Cert Error if the function fails in a non-fatal way. | |
1865 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1866 */ | |
1867 PKIX_Error * | |
1868 PKIX_PL_InfoAccess_GetMethod( | |
1869 PKIX_PL_InfoAccess *infoAccess, | |
1870 PKIX_UInt32 *pMethod, | |
1871 void *plContext); | |
1872 | |
1873 /* | |
1874 * FUNCTION: PKIX_PL_InfoAccess_GetLocation | |
1875 * DESCRIPTION: | |
1876 * | |
1877 * Stores the location of the Information Access from "infoAccess" and | |
1878 * returns in "pLocation". | |
1879 * | |
1880 * SubjectInfoAccess ::= | |
1881 * AccessDescription ::= SEQUENCE { | |
1882 * accessMethod OBJECT IDENTIFIER, | |
1883 * accessLocation GeneralName | |
1884 * } | |
1885 * | |
1886 * PARAMETERS: | |
1887 * "infoAccess" | |
1888 * Address of PKIX_PL_InfoAccess that has the access data. | |
1889 * Must be non-NULL. | |
1890 * "pLocation" | |
1891 * Address where access location will be stored and returned. | |
1892 * Must be non-NULL. | |
1893 * "plContext" | |
1894 * Platform-specific context pointer. | |
1895 * THREAD SAFETY: | |
1896 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1897 * RETURNS: | |
1898 * Returns NULL if the function succeeds. | |
1899 * Returns a Cert Error if the function fails in a non-fatal way. | |
1900 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1901 */ | |
1902 PKIX_Error * | |
1903 PKIX_PL_InfoAccess_GetLocation( | |
1904 PKIX_PL_InfoAccess *infoAccess, | |
1905 PKIX_PL_GeneralName **pLocation, | |
1906 void *plContext); | |
1907 | |
1908 /* | |
1909 * FUNCTION: PKIX_PL_InfoAccess_GetLocationType | |
1910 * DESCRIPTION: | |
1911 * | |
1912 * Stores the type of location of the Information Access from "infoAccess" and | |
1913 * returns in "pType". | |
1914 * | |
1915 * SubjectInfoAccess ::= | |
1916 * AccessDescription ::= SEQUENCE { | |
1917 * accessMethod OBJECT IDENTIFIER, | |
1918 * accessLocation GeneralName | |
1919 * } | |
1920 * | |
1921 * PARAMETERS: | |
1922 * "infoAccess" | |
1923 * Address of PKIX_PL_InfoAccess that has the access data. | |
1924 * Must be non-NULL. | |
1925 * "pType" | |
1926 * Address where access location type will be stored and returned. | |
1927 * Must be non-NULL. | |
1928 * "plContext" | |
1929 * Platform-specific context pointer. | |
1930 * THREAD SAFETY: | |
1931 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
1932 * RETURNS: | |
1933 * Returns NULL if the function succeeds. | |
1934 * Returns a Cert Error if the function fails in a non-fatal way. | |
1935 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
1936 */ | |
1937 PKIX_Error * | |
1938 PKIX_PL_InfoAccess_GetLocationType( | |
1939 PKIX_PL_InfoAccess *infoAccess, | |
1940 PKIX_UInt32 *pType, | |
1941 void *plContext); | |
1942 | |
1943 PKIX_Error * | |
1944 pkix_pl_InfoAccess_GetAIACerts( | |
1945 PKIX_PL_InfoAccess *ia, | |
1946 void **pNBIOContext, | |
1947 void **pHandle, | |
1948 PKIX_List **pCerts, | |
1949 void *plContext); | |
1950 | |
1951 /* | |
1952 * CRL | |
1953 * | |
1954 * A CRL represents an X.509 certificate revocation list. It can be created | |
1955 * using the bytes of a valid ASN.1 DER encoding. Once created, a CRL is | |
1956 * immutable. The following functions include accessors (gettors) for the | |
1957 * various components of an X.509 CRL, as well as a function for signature | |
1958 * verification. | |
1959 */ | |
1960 | |
1961 /* | |
1962 * FUNCTION: PKIX_PL_CRL_Create | |
1963 * DESCRIPTION: | |
1964 * | |
1965 * Creates a new CRL using the bytes in the ByteArray pointed to by | |
1966 * "byteArray" and stores it at "pCRL". If the bytes are not a valid ASN.1 | |
1967 * DER encoding of a CRL, a PKIX_Error pointer is returned. Once created, a | |
1968 * CRL is immutable. | |
1969 * | |
1970 * CertificateList ::= SEQUENCE { | |
1971 * tbsCertList TBSCertList, | |
1972 * signatureAlgorithm AlgorithmIdentifier, | |
1973 * signatureValue BIT STRING } | |
1974 * | |
1975 * TBSCertList ::= SEQUENCE { | |
1976 * version Version OPTIONAL, | |
1977 * -- if present, MUST be v2 | |
1978 * signature AlgorithmIdentifier, | |
1979 * issuer Name, | |
1980 * thisUpdate Time, | |
1981 * nextUpdate Time OPTIONAL, | |
1982 * revokedCertificates SEQUENCE OF SEQUENCE { | |
1983 * userCertificate CertificateSerialNumber, | |
1984 * revocationDate Time, | |
1985 * crlEntryExtensions Extensions OPTIONAL | |
1986 * -- if present, MUST be v2 | |
1987 * } OPTIONAL, | |
1988 * crlExtensions [0] EXPLICIT Extensions OPTIONAL | |
1989 * -- if present, MUST be v2 | |
1990 * } | |
1991 * | |
1992 * PARAMETERS: | |
1993 * "byteArray" | |
1994 * Address of ByteArray representing the CRL's DER encoding. | |
1995 * Must be non-NULL. | |
1996 * "pCRL" | |
1997 * Address where object pointer will be stored. Must be non-NULL. | |
1998 * "plContext" | |
1999 * Platform-specific context pointer. | |
2000 * THREAD SAFETY: | |
2001 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2002 * RETURNS: | |
2003 * Returns NULL if the function succeeds. | |
2004 * Returns a CRL Error if the function fails in a non-fatal way. | |
2005 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2006 */ | |
2007 PKIX_Error * | |
2008 PKIX_PL_CRL_Create( | |
2009 PKIX_PL_ByteArray *byteArray, | |
2010 PKIX_PL_CRL **pCRL, | |
2011 void *plContext); | |
2012 | |
2013 /* | |
2014 * FUNCTION: PKIX_PL_CRL_GetIssuer | |
2015 * DESCRIPTION: | |
2016 * | |
2017 * Retrieves a pointer to the X500Name that represents the issuer of the CRL | |
2018 * pointed to by "crl" and stores it at "pCRLIssuer". | |
2019 * | |
2020 * PARAMETERS: | |
2021 * "crl" | |
2022 * Address of CRL whose issuer is to be stored. Must be non-NULL. | |
2023 * "pCRLIssuer" | |
2024 * Address where object pointer will be stored. Must be non-NULL. | |
2025 * "plContext" | |
2026 * Platform-specific context pointer. | |
2027 * THREAD SAFETY: | |
2028 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2029 * RETURNS: | |
2030 * Returns NULL if the function succeeds. | |
2031 * Returns a CRL Error if the function fails in a non-fatal way. | |
2032 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2033 */ | |
2034 PKIX_Error * | |
2035 PKIX_PL_CRL_GetIssuer( | |
2036 PKIX_PL_CRL *crl, | |
2037 PKIX_PL_X500Name **pCRLIssuer, | |
2038 void *plContext); | |
2039 | |
2040 /* | |
2041 * FUNCTION: PKIX_PL_CRL_GetCriticalExtensionOIDs | |
2042 * DESCRIPTION: | |
2043 * | |
2044 * Retrieves a pointer to the List of OIDs (each OID corresponding to a | |
2045 * critical extension of the CRL pointed to by "crl") and stores it at | |
2046 * "pExtensions". If "crl" does not have any critical extensions, this | |
2047 * function stores an empty List at "pExtensions". | |
2048 * | |
2049 * Note that the List returned by this function is immutable. | |
2050 * | |
2051 * PARAMETERS: | |
2052 * "crl" | |
2053 * Address of CRL whose critical extension OIDs are to be stored. | |
2054 * Must be non-NULL. | |
2055 * "pExtensions" | |
2056 * Address where object pointer will be stored. Must be non-NULL. | |
2057 * "plContext" | |
2058 * Platform-specific context pointer. | |
2059 * THREAD SAFETY: | |
2060 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2061 * RETURNS: | |
2062 * Returns NULL if the function succeeds. | |
2063 * Returns a CRL Error if the function fails in a non-fatal way. | |
2064 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2065 */ | |
2066 PKIX_Error * | |
2067 PKIX_PL_CRL_GetCriticalExtensionOIDs( | |
2068 PKIX_PL_CRL *crl, | |
2069 PKIX_List **pExtensions, /* list of PKIX_PL_OID */ | |
2070 void *plContext); | |
2071 | |
2072 /* | |
2073 * FUNCTION: PKIX_PL_CRL_GetCRLEntryForSerialNumber | |
2074 * DESCRIPTION: | |
2075 * | |
2076 * Retrieves a pointer to the CRLEntry (found in the CRL pointed to by "crl") | |
2077 * corresponding to the BigInt pointed to by "serialNumber" and stores it at | |
2078 * "pCRLEntry". If there is no such CRLEntry, this functions stores NULL at | |
2079 * "pCRLEntry". Once created, a CRLEntry is immutable. | |
2080 * | |
2081 * PARAMETERS: | |
2082 * "crl" | |
2083 * Address of CRL whose CRL Entries are to be searched. Must be non-NULL. | |
2084 * "serialNumber" | |
2085 * Address of BigInt representing serial number of certificate whose | |
2086 * CRLEntry is to be found. Must be non-NULL. | |
2087 * "pCRLEntry" | |
2088 * Address where object pointer will be stored. Must be non-NULL. | |
2089 * "plContext" | |
2090 * Platform-specific context pointer. | |
2091 * THREAD SAFETY: | |
2092 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2093 * RETURNS: | |
2094 * Returns NULL if the function succeeds. | |
2095 * Returns a CRL Error if the function fails in a non-fatal way. | |
2096 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2097 */ | |
2098 PKIX_Error * | |
2099 PKIX_PL_CRL_GetCRLEntryForSerialNumber( | |
2100 PKIX_PL_CRL *crl, | |
2101 PKIX_PL_BigInt *serialNumber, | |
2102 PKIX_PL_CRLEntry **pCRLEntry, | |
2103 void *plContext); | |
2104 | |
2105 /* | |
2106 * FUNCTION: PKIX_PL_CRL_GetCRLNumber | |
2107 * DESCRIPTION: | |
2108 * Retrieves the CRL Number from extension. This is non-critical extension. | |
2109 * | |
2110 * PARAMETERS: | |
2111 * "crl" | |
2112 * Address of CRL whose version is to be stored. Must be non-NULL. | |
2113 * "pCrlNumber" | |
2114 * Address where a CRL Number will be stored. Must be non-NULL. | |
2115 * "plContext" | |
2116 * Platform-specific context pointer. | |
2117 * THREAD SAFETY: | |
2118 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2119 * RETURNS: | |
2120 * Returns NULL if the function succeeds. | |
2121 * Returns a CRL Error if the function fails in a non-fatal way. | |
2122 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2123 */ | |
2124 PKIX_Error * | |
2125 PKIX_PL_CRL_GetCRLNumber( | |
2126 PKIX_PL_CRL *crl, | |
2127 PKIX_PL_BigInt **pCrlNumber, | |
2128 void *plContext); | |
2129 | |
2130 /* | |
2131 * FUNCTION: PKIX_PL_CRL_VerifyUpdateTime | |
2132 * DESCRIPTION: | |
2133 * | |
2134 * Checks whether the CRL pointed to by "crl" would be valid at the time | |
2135 * represented by the Date pointed to by "date" and stores the Boolean result | |
2136 * at "pResult". This check is done only when NIST policy is enforced. | |
2137 * | |
2138 * Time ::= CHOICE { | |
2139 * utcTime UTCTime, | |
2140 * generalTime GeneralizedTime } | |
2141 * | |
2142 * PARAMETERS: | |
2143 * "crl" | |
2144 * Address of CRL whose validity is to be checked. Must be non-NULL. | |
2145 * "date" | |
2146 * Address of Date at which the CRL is being checked for validity. | |
2147 * Must be non-NULL. | |
2148 * "pResult" | |
2149 * Address of Boolean result. Must be non-NULL. | |
2150 * "plContext" | |
2151 * Platform-specific context pointer. | |
2152 * THREAD SAFETY: | |
2153 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2154 * RETURNS: | |
2155 * Returns NULL if the function succeeds. | |
2156 * Returns a CRL Error if the function fails in a non-fatal way. | |
2157 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2158 */ | |
2159 PKIX_Error * | |
2160 PKIX_PL_CRL_VerifyUpdateTime( | |
2161 PKIX_PL_CRL *crl, | |
2162 PKIX_PL_Date *date, | |
2163 PKIX_Boolean *pResult, | |
2164 void *plContext); | |
2165 | |
2166 /* | |
2167 * FUNCTION: PKIX_PL_CRL_VerifySignature | |
2168 * DESCRIPTION: | |
2169 * | |
2170 * Verifies the signature on the CRL pointed to by "crl" using the PublicKey | |
2171 * pointed to by "pubKey". If the signature doesn't verify, a PKIX_Error | |
2172 * pointer is returned. | |
2173 * | |
2174 * PARAMETERS: | |
2175 * "crl" | |
2176 * Address of CRL whose signature is to be verified. Must be non-NULL. | |
2177 * "pubKey" | |
2178 * Address of a Public Key used to verify the signature. Must be non-NULL. | |
2179 * "plContext" | |
2180 * Platform-specific context pointer. | |
2181 * THREAD SAFETY: | |
2182 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2183 * RETURNS: | |
2184 * Returns NULL if the function succeeds. | |
2185 * Returns a CRL Error if the function fails in a non-fatal way. | |
2186 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2187 */ | |
2188 PKIX_Error * | |
2189 PKIX_PL_CRL_VerifySignature( | |
2190 PKIX_PL_CRL *crl, | |
2191 PKIX_PL_PublicKey *pubKey, | |
2192 void *plContext); | |
2193 | |
2194 /* | |
2195 * FUNCTION: PKIX_PL_CRL_ReleaseDerCrl | |
2196 * DESCRIPTION: | |
2197 * | |
2198 * Relinguish the ownership for the crl der. The operation will succeed if | |
2199 * a crl owns the der. If the crl was created from existing crl and does not | |
2200 * own the der, then the function will return null. | |
2201 * | |
2202 * PARAMETERS: | |
2203 * "crl" | |
2204 * Address of CRL whose signature is to be verified. Must be non-NULL. | |
2205 * "derCrl" | |
2206 * Pointer to a SECItem that has der crl. | |
2207 * "plContext" | |
2208 * Platform-specific context pointer. | |
2209 * THREAD SAFETY: | |
2210 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2211 * RETURNS: | |
2212 * Returns NULL if the function succeeds. | |
2213 * Returns a CRL Error if the function fails in a non-fatal way. | |
2214 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2215 */ | |
2216 PKIX_Error * | |
2217 PKIX_PL_CRL_ReleaseDerCrl(PKIX_PL_CRL *crl, | |
2218 SECItem **derCrl, | |
2219 void *plContext); | |
2220 /* | |
2221 * FUNCTION: PKIX_PL_CRL_AdoptDerCrl | |
2222 * DESCRIPTION: | |
2223 * | |
2224 * Adopt memory of the der. The secItem that contains der will be | |
2225 * freed with destruction of parent pkix crl structure. | |
2226 * | |
2227 * * PARAMETERS: | |
2228 * "crl" | |
2229 * Address of CRL whose signature is to be verified. Must be non-NULL. | |
2230 * "derCrl" | |
2231 * Pointer to a SECItem that has der crl. | |
2232 * "plContext" | |
2233 * Platform-specific context pointer. | |
2234 * THREAD SAFETY: | |
2235 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2236 * RETURNS: | |
2237 * Returns NULL if the function succeeds. | |
2238 * Returns a CRL Error if the function fails in a non-fatal way. | |
2239 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2240 */ | |
2241 PKIX_Error * | |
2242 PKIX_PL_CRL_AdoptDerCrl(PKIX_PL_CRL *crl, | |
2243 SECItem *derCrl, | |
2244 void *plContext); | |
2245 | |
2246 /* | |
2247 * FUNCTION: PKIX_PL_CRLEntry_GetCRLEntryReasonCode | |
2248 * DESCRIPTION: | |
2249 * | |
2250 * Retrieves the value of the reason code extension of the CRLEntry pointed | |
2251 * to by "crlEntry" and stores it at "pReason". If the "crlEntry" has no | |
2252 * reason code extension, this function stores -1 at "pReason". | |
2253 * | |
2254 * CRLReason ::= ENUMERATED { | |
2255 * unspecified (0), | |
2256 * keyCompromise (1), | |
2257 * cACompromise (2), | |
2258 * affiliationChanged (3), | |
2259 * superseded (4), | |
2260 * cessationOfOperation (5), | |
2261 * certificateHold (6), | |
2262 * removeFromCRL (8), | |
2263 * privilegeWithdrawn (9), | |
2264 * aACompromise (10) } | |
2265 * | |
2266 * PARAMETERS: | |
2267 * "crlEntry" | |
2268 * Address of CRLEntry whose reason code bit values are to be returned | |
2269 * at "pReason". Must be non-NULL. | |
2270 * "pReason" | |
2271 * Address of PKIX_Int32 where reason code is stored. Must be non-NULL. | |
2272 * "plContext" | |
2273 * Platform-specific context pointer. | |
2274 * THREAD SAFETY: | |
2275 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2276 * RETURNS: | |
2277 * Returns NULL if the function succeeds. | |
2278 * Returns a CRL Error if the function fails in a non-fatal way. | |
2279 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2280 */ | |
2281 PKIX_Error * | |
2282 PKIX_PL_CRLEntry_GetCRLEntryReasonCode( | |
2283 PKIX_PL_CRLEntry *crlEntry, | |
2284 PKIX_Int32 *pReason, | |
2285 void *plContext); | |
2286 | |
2287 /* | |
2288 * FUNCTION: PKIX_PL_CRLEntry_GetCriticalExtensionOIDs | |
2289 * DESCRIPTION: | |
2290 * | |
2291 * Retrieves a pointer to the List of OIDs (each OID corresponding to a | |
2292 * critical extension of the CRLEntry pointed to by "crlEntry") and stores it | |
2293 * at "pExtensions". If "crlEntry" does not have any critical extensions, this | |
2294 * function stores an empty List at "pExtensions". | |
2295 * | |
2296 * Note that the List returned by this function is immutable. | |
2297 * | |
2298 * PARAMETERS: | |
2299 * "crlEntry" | |
2300 * Address of CRLEntry whose critical extension OIDs are to be stored. | |
2301 * Must be non-NULL. | |
2302 * "pExtensions" | |
2303 * Address where object pointer will be stored. Must be non-NULL. | |
2304 * "plContext" | |
2305 * Platform-specific context pointer. | |
2306 * THREAD SAFETY: | |
2307 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2308 * RETURNS: | |
2309 * Returns NULL if the function succeeds. | |
2310 * Returns a CRL Error if the function fails in a non-fatal way. | |
2311 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2312 */ | |
2313 PKIX_Error * | |
2314 PKIX_PL_CRLEntry_GetCriticalExtensionOIDs( | |
2315 PKIX_PL_CRLEntry *crlEntry, | |
2316 PKIX_List **pExtensions, /* list of PKIX_PL_OID */ | |
2317 void *plContext); | |
2318 | |
2319 #ifdef BUILD_LIBPKIX_TESTS | |
2320 /* | |
2321 * FUNCTION: PKIX_PL_X500Name_Create | |
2322 * DESCRIPTION: | |
2323 * | |
2324 * Creates a new X500Name using the UTF8 string representation pointed to by | |
2325 * "stringRep" and stores it at "pName". Once created, an X500Name is | |
2326 * immutable. | |
2327 * | |
2328 * Name ::= CHOICE { | |
2329 * RDNSequence } | |
2330 * | |
2331 * RDNSequence ::= SEQUENCE OF RelativeDistinguishedName | |
2332 * | |
2333 * RelativeDistinguishedName ::= | |
2334 * SET OF AttributeTypeAndValue | |
2335 * | |
2336 * AttributeTypeAndValue ::= SEQUENCE { | |
2337 * type AttributeType, | |
2338 * value AttributeValue } | |
2339 * | |
2340 * AttributeType ::= OBJECT IDENTIFIER | |
2341 * | |
2342 * AttributeValue ::= ANY DEFINED BY AttributeType | |
2343 * | |
2344 * DirectoryString ::= CHOICE { | |
2345 * teletexString TeletexString (SIZE (1..MAX)), | |
2346 * printableString PrintableString (SIZE (1..MAX)), | |
2347 * universalString UniversalString (SIZE (1..MAX)), | |
2348 * utf8String UTF8String (SIZE (1..MAX)), | |
2349 * bmpString BMPString (SIZE (1..MAX)) } | |
2350 * | |
2351 * PARAMETERS: | |
2352 * "stringRep" | |
2353 * Address of UTF8 String representation of X500Name. Must be non-NULL. | |
2354 * "pName" | |
2355 * Address where object pointer will be stored. Must be non-NULL. | |
2356 * "plContext" | |
2357 * Platform-specific context pointer. | |
2358 * THREAD SAFETY: | |
2359 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2360 * RETURNS: | |
2361 * Returns NULL if the function succeeds. | |
2362 * Returns an X500Name Error if the function fails in a non-fatal way. | |
2363 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2364 */ | |
2365 PKIX_Error * | |
2366 PKIX_PL_X500Name_Create ( | |
2367 PKIX_PL_String *stringRep, | |
2368 PKIX_PL_X500Name **pName, | |
2369 void *plContext); | |
2370 | |
2371 #endif /* BUILD_LIBPKIX_TESTS */ | |
2372 | |
2373 /* | |
2374 * FUNCTION: PKIX_PL_X500Name_CreateFromCERTName | |
2375 * DESCRIPTION: | |
2376 * | |
2377 * The function creates x500Name using der encoded DN and/or pointer to | |
2378 * CERTName. If arument "name" is NULL, but derName is supplied when | |
2379 * the function generates nssDN(CERTName type) from der data. If derName | |
2380 * is not supplied, CERTName *name will not be used to generate DN DER | |
2381 * encoding. | |
2382 * | |
2383 * PARAMETERS: | |
2384 * "derName" | |
2385 * Address of DER representation of X500Name. Can be NULL | |
2386 * "name" | |
2387 * Address of CERTName representation of X500Name. Can be NULL | |
2388 * "pName" | |
2389 * Address where object pointer will be stored. Must be non-NULL. | |
2390 * "plContext" | |
2391 * Platform-specific context pointer. | |
2392 * THREAD SAFETY: | |
2393 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2394 * RETURNS: | |
2395 * Returns NULL if the function succeeds. | |
2396 * Returns an X500Name Error if the function fails in a non-fatal way. | |
2397 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2398 */ | |
2399 PKIX_Error * | |
2400 PKIX_PL_X500Name_CreateFromCERTName( | |
2401 SECItem *derName, | |
2402 CERTName *name, | |
2403 PKIX_PL_X500Name **pName, | |
2404 void *plContext); | |
2405 | |
2406 | |
2407 /* | |
2408 * TYPE: PKIX_PL_X500Name_Match | |
2409 * DESCRIPTION: | |
2410 * Checks whether the X500Name pointed to by "firstX500Name" MATCHES the | |
2411 * X500Name pointed to by "secondX500Name" and stores the boolean result at | |
2412 * "pResult". Two X500Names MATCH if they meet the conditions specified by | |
2413 * RFC 3280 (section 4.1.2.4). Namely: | |
2414 * | |
2415 * "This specification requires only a subset of the name comparison | |
2416 * functionality specified in the X.500 series of specifications. | |
2417 * Conforming implementations are REQUIRED to implement the following | |
2418 * name comparison rules: | |
2419 * | |
2420 * (a) attribute values encoded in different types (e.g., PrintableString | |
2421 * and BMPString) MAY be assumed to represent different strings; | |
2422 * | |
2423 * (b) attribute values in types other than PrintableString are case | |
2424 * sensitive (this permits matching of attribute values as binary objects) | |
2425 * | |
2426 * (c) attribute values in PrintableString are not case sensitive | |
2427 * (e.g., "Marianne Swanson" is the same as "MARIANNE SWANSON"); and | |
2428 * | |
2429 * (d) attribute values in PrintableString are compared after removing | |
2430 * leading and trailing white space and converting internal substrings of | |
2431 * one or more consecutive white space characters to a single space." | |
2432 * | |
2433 * PARAMETERS: | |
2434 * "firstX500Name" | |
2435 * Address of first X500Name to compare. Must be non-NULL. | |
2436 * "secondX500Name" | |
2437 * Address of second X500Name to compare. Must be non-NULL. | |
2438 * "pResult" | |
2439 * Address of Boolean result. Must be non-NULL. | |
2440 * "plContext" | |
2441 * Platform-specific context pointer. | |
2442 * THREAD SAFETY: | |
2443 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2444 * RETURNS: | |
2445 * Returns NULL if the function succeeds. | |
2446 * Returns an X500Name Error if the function fails in a non-fatal way. | |
2447 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2448 */ | |
2449 PKIX_Error * | |
2450 PKIX_PL_X500Name_Match( | |
2451 PKIX_PL_X500Name *firstX500Name, | |
2452 PKIX_PL_X500Name *secondX500Name, | |
2453 PKIX_Boolean *pResult, | |
2454 void *plContext); | |
2455 | |
2456 /* | |
2457 * FUNCTION: PKIX_PL_Date_Create_UTCTime | |
2458 * DESCRIPTION: | |
2459 * Creates a new Date of type UTCTime using the string representation pointed | |
2460 * to by "stringRep" and stores it at "pDate". The UTCTime restriction means | |
2461 * that the year can only be specified by the least significant two digits | |
2462 * (YY). As such, Only the years 1950-2049 can be represented. If "stringRep" | |
2463 * is NULL, this function creates a new Date representing the current time | |
2464 * and stores it at "pDate". Once created, a Date is immutable. | |
2465 * | |
2466 * If YY is greater than or equal to 50, the year is interpreted as 19YY. | |
2467 * If YY is less than 50, the year is interpreted as 20YY. | |
2468 * | |
2469 * The string representation of the date must be in the following form: | |
2470 * "YYMMDDhhmmssZ" where: | |
2471 * | |
2472 * YY is the least significant two digits of the year | |
2473 * MM is the month (01 to 12) | |
2474 * DD is the day (01 to 31) | |
2475 * hh is the hour (00 to 23) | |
2476 * mm are the minutes (00 to 59) | |
2477 * ss are the seconds (00 to 59) | |
2478 * Z indicates that local time is GMT | |
2479 * | |
2480 * PARAMETERS: | |
2481 * "stringRep" | |
2482 * Address of String representation of Date. | |
2483 * If NULL, current time is used. | |
2484 * "pDate" | |
2485 * Address where object pointer will be stored. Must be non-NULL. | |
2486 * "plContext" | |
2487 * Platform-specific context pointer. | |
2488 * THREAD SAFETY: | |
2489 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2490 * RETURNS: | |
2491 * Returns NULL if the function succeeds. | |
2492 * Returns a Date Error if the function fails in a non-fatal way. | |
2493 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2494 */ | |
2495 PKIX_Error * | |
2496 PKIX_PL_Date_Create_UTCTime ( | |
2497 PKIX_PL_String *stringRep, | |
2498 PKIX_PL_Date **pDate, | |
2499 void *plContext); | |
2500 | |
2501 /* | |
2502 * FUNCTION: PKIX_PL_Date_Create_UTCTime | |
2503 * DESCRIPTION: | |
2504 * Creates a new Date from PRTime data. | |
2505 * | |
2506 * PARAMETERS: | |
2507 * "time" | |
2508 * Represented time in PRTime type. | |
2509 * "pDate" | |
2510 * Address where object pointer will be stored. Must be non-NULL. | |
2511 * "plContext" | |
2512 * Platform-specific context pointer. | |
2513 * THREAD SAFETY: | |
2514 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2515 * RETURNS: | |
2516 * Returns NULL if the function succeeds. | |
2517 * Returns a Date Error if the function fails in a non-fatal way. | |
2518 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2519 */ | |
2520 PKIX_Error * | |
2521 PKIX_PL_Date_CreateFromPRTime( | |
2522 PRTime time, | |
2523 PKIX_PL_Date **pDate, | |
2524 void *plContext); | |
2525 | |
2526 /* | |
2527 * FUNCTION: PKIX_PL_Date_Create_CurrentOffBySeconds | |
2528 * DESCRIPTION: | |
2529 * Creates a new Date of type UTCTime for current time with seconds off by | |
2530 * "secondsOffset" and returns it at "pDate". | |
2531 * | |
2532 * PARAMETERS: | |
2533 * "secondsOffset" | |
2534 * A PKIX_Int32 indicates the time offset from current. If "secondsOffset" | |
2535 * is negative, the time is in past. | |
2536 * "pDate" | |
2537 * Address where object pointer will be stored. Must be non-NULL. | |
2538 * "plContext" | |
2539 * Platform-specific context pointer. | |
2540 * THREAD SAFETY: | |
2541 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2542 * RETURNS: | |
2543 * Returns NULL if the function succeeds. | |
2544 * Returns a Date Error if the function fails in a non-fatal way. | |
2545 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2546 */ | |
2547 PKIX_Error * | |
2548 PKIX_PL_Date_Create_CurrentOffBySeconds( | |
2549 PKIX_Int32 secondsOffset, | |
2550 PKIX_PL_Date **pDate, | |
2551 void *plContext); | |
2552 | |
2553 #ifdef BUILD_LIBPKIX_TESTS | |
2554 /* | |
2555 * FUNCTION: PKIX_PL_GeneralName_Create | |
2556 * DESCRIPTION: | |
2557 * | |
2558 * Creates a new GeneralName of type "nameType" using the string | |
2559 * representation pointed to by "stringRep" and stores it at "pGName". | |
2560 * All of the GeneralName type format values specified in pkixt.h are | |
2561 * supported, with the exception of PKIX_OTHER_NAME, PKIX_EDIPARTY_NAME, | |
2562 * PKIX_IP_NAME, and PKIX_X400_ADDRESS. A PKIX_ESCASCII string representation | |
2563 * should be used for all supported nameTypes, with the exception of | |
2564 * registeredID and directoryName. For registeredID, the string representation | |
2565 * should be the same as that used by PKIX_PL_OID_Create. For directoryName, | |
2566 * the string representation should be the same as that used by | |
2567 * PKIX_PL_X500Name_Create. If an unsupported name type is used, an Error is | |
2568 * returned. Once created, a GeneralName is immutable. | |
2569 * | |
2570 * GeneralName ::= CHOICE { | |
2571 * otherName [0] OtherName, | |
2572 * rfc822Name [1] IA5String, | |
2573 * dNSName [2] IA5String, | |
2574 * x400Address [3] ORAddress, | |
2575 * directoryName [4] Name, | |
2576 * ediPartyName [5] EDIPartyName, | |
2577 * uniformResourceIdentifier [6] IA5String, | |
2578 * iPAddress [7] OCTET STRING, | |
2579 * registeredID [8] OBJECT IDENTIFIER } | |
2580 * | |
2581 * | |
2582 * NOTE: This function is allowed to be called only by pkix tests programs. | |
2583 * | |
2584 * PARAMETERS: | |
2585 * "nameType" | |
2586 * Type of GeneralName to be created. This must be one of the GeneralName | |
2587 * type format values specified in pkixt.h | |
2588 * "stringRep" | |
2589 * Address of String representation of GeneralName. Must be non-NULL. | |
2590 * "pGName" | |
2591 * Address where object pointer will be stored. Must be non-NULL. | |
2592 * "plContext" | |
2593 * Platform-specific context pointer. | |
2594 * THREAD SAFETY: | |
2595 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2596 * RETURNS: | |
2597 * Returns NULL if the function succeeds. | |
2598 * Returns a GeneralName Error if the function fails in a non-fatal way. | |
2599 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2600 */ | |
2601 PKIX_Error * | |
2602 PKIX_PL_GeneralName_Create ( | |
2603 PKIX_UInt32 nameType, | |
2604 PKIX_PL_String *stringRep, | |
2605 PKIX_PL_GeneralName **pGName, | |
2606 void *plContext); | |
2607 #endif /* BUILD_LIBPKIX_TESTS */ | |
2608 | |
2609 /* | |
2610 * FUNCTION: PKIX_PL_CertNameConstraints_CheckNamesInNameSpace | |
2611 * DESCRIPTION: | |
2612 * | |
2613 * This function checks whether names in "nameList" comply with | |
2614 * "nameConstraints". It stores PKIX_TRUE at "pCheckPass" if the names meet the | |
2615 * requirement of the NameConstraints, PKIX_FALSE otherwise. | |
2616 * | |
2617 * PARAMETERS | |
2618 * "nameList" | |
2619 * List of GeneralNames that are checked for compliance. May be empty | |
2620 * or NULL. | |
2621 * "nameConstraints" | |
2622 * Address of CertNameConstraints that provides lists of permitted | |
2623 * and excluded names. Must be non-NULL. | |
2624 * "pCheckPass" | |
2625 * Address where PKIX_TRUE is returned if the all names in "nameList" are | |
2626 * valid. Must be non-NULL. | |
2627 * "plContext" - Platform-specific context pointer. | |
2628 * THREAD SAFETY: | |
2629 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2630 * RETURNS: | |
2631 * Returns NULL if the function succeeds. | |
2632 * Returns a NameConstraints Error if the function fails in a | |
2633 * non-fatal way. | |
2634 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2635 */ | |
2636 PKIX_Error * | |
2637 PKIX_PL_CertNameConstraints_CheckNamesInNameSpace( | |
2638 PKIX_List *nameList, /* List of PKIX_PL_GeneralName */ | |
2639 PKIX_PL_CertNameConstraints *nameConstraints, | |
2640 PKIX_Boolean *pCheckPass, | |
2641 void *plContext); | |
2642 | |
2643 /* | |
2644 * FUNCTION: PKIX_PL_AIAMgr_Create | |
2645 * DESCRIPTION: | |
2646 * | |
2647 * This function creates an AIAMgr to handle retrieval of Certs and CRLs | |
2648 * from servers given by AIA Certificate extensions. It manages connections | |
2649 * and caches. The manager created is stored at "pAIAMgr". | |
2650 * | |
2651 * PARAMETERS: | |
2652 * "pAIAMgr" | |
2653 * The address at which the result is stored. Must be non-NULL. | |
2654 * THREAD SAFETY: | |
2655 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2656 * RETURNS: | |
2657 * Returns NULL if the function succeeds. | |
2658 * Returns an AIAMgr Error if the function fails in a non-fatal way | |
2659 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2660 */ | |
2661 PKIX_Error * | |
2662 PKIX_PL_AIAMgr_Create( | |
2663 PKIX_PL_AIAMgr **pAIAMgr, | |
2664 void *plContext); | |
2665 | |
2666 /* | |
2667 * FUNCTION: PKIX_PL_AIAMgr_GetAIACerts | |
2668 * DESCRIPTION: | |
2669 * | |
2670 * This function uses the AIAMgr pointed to by "aiaMgr" to retrieve the Certs | |
2671 * specified by an AIA certificate extension, if any, in the Cert pointed to by | |
2672 * "prevCert", storing the results at "pCerts". If the certificate has no such | |
2673 * extension, this function stores NULL at "pCerts". | |
2674 * | |
2675 * If the request is suspended for non-blocking I/O, a platform-dependent | |
2676 * context is stored at "pNBIOContext" and NULL is stored at "pCerts". This | |
2677 * return is referred to as the WOULDBLOCK state. Note that the caller must | |
2678 * check for a non-NULL value at "pNBIOContext", to distinguish this state from | |
2679 * the "no such extension" return described in the first paragraph. (The | |
2680 * alternative would be to return an empty List, but it seemed wrong to incur | |
2681 * the overhead of creating and destroying an empty List for the most common | |
2682 * situation.) | |
2683 * | |
2684 * After a WOULDBLOCK return, the user may continue the operation by calling | |
2685 * pkix_AIAMgr_GetAIACerts (possibly more than once, if the function again | |
2686 * returns in the WOULDBLOCK state) with the previously-returned non-NULL | |
2687 * value of "pNBIOContext". When results are complete, NULL is stored at | |
2688 * "pNBIOContext", and the results (which may be NULL) are stored at "pCerts". | |
2689 * | |
2690 * PARAMETERS: | |
2691 * "aiaMgr" | |
2692 * The AIAMgr which controls the retrieval of certificates. Must be | |
2693 * non-NULL. | |
2694 * "prevCert" | |
2695 * Address of PKIX_PL_Cert which may provide an AIA or SIA extension. Must | |
2696 * be non-NULL. | |
2697 * "pNBIOContext" | |
2698 * Address at which platform-dependent information is returned if request | |
2699 * is suspended for non-blocking I/O. Must be non-NULL. | |
2700 * "pCerts" | |
2701 * Address at which the returned List is stored. Must be non-NULL. | |
2702 * "plContext" | |
2703 * Platform-specific context pointer. | |
2704 * THREAD SAFETY: | |
2705 * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |
2706 * RETURNS: | |
2707 * Returns NULL if the function succeeds. | |
2708 * Returns an AIAMgr Error if the function fails in a non-fatal way | |
2709 * Returns a Fatal Error if the function fails in an unrecoverable way. | |
2710 */ | |
2711 PKIX_Error * | |
2712 PKIX_PL_AIAMgr_GetAIACerts( | |
2713 PKIX_PL_AIAMgr *aiaMgr, | |
2714 PKIX_PL_Cert *prevCert, | |
2715 void **pNBIOContext, | |
2716 PKIX_List **pCerts, | |
2717 void *plContext); | |
2718 | |
2719 typedef PKIX_Error * | |
2720 (*PKIX_PL_VerifyCallback)( | |
2721 PKIX_PL_Object *signedObject, | |
2722 PKIX_PL_Cert *signerCert, /* can be unknown */ | |
2723 PKIX_PL_Date *producedAt, | |
2724 PKIX_ProcessingParams *procParams, | |
2725 void **pNBIOContext, | |
2726 void **pState, | |
2727 PKIX_BuildResult **pBuildResult, | |
2728 PKIX_VerifyNode **pVerifyTree, | |
2729 void *plContext); | |
2730 | |
2731 #ifdef __cplusplus | |
2732 } | |
2733 #endif | |
2734 | |
2735 #endif /* _PKIX_PL_PKI_H */ |