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

Side by Side Diff: nss/lib/pki/pkim.h

Issue 2078763002: Delete bundled copy of NSS and replace with README. (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/nss@master
Patch Set: Delete bundled copy of NSS and replace with README. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « nss/lib/pki/pkibase.c ('k') | nss/lib/pki/pkistore.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /* 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 #ifndef PKIM_H
6 #define PKIM_H
7
8 #ifndef BASE_H
9 #include "base.h"
10 #endif /* BASE_H */
11
12 #ifndef PKI_H
13 #include "pki.h"
14 #endif /* PKI_H */
15
16 #ifndef PKITM_H
17 #include "pkitm.h"
18 #endif /* PKITM_H */
19
20 PR_BEGIN_EXTERN_C
21
22 /* nssPKIObject
23 *
24 * This is the base object class, common to all PKI objects defined in
25 * in this module. Each object can be safely 'casted' to an nssPKIObject,
26 * then passed to these methods.
27 *
28 * nssPKIObject_Create
29 * nssPKIObject_Destroy
30 * nssPKIObject_AddRef
31 * nssPKIObject_AddInstance
32 * nssPKIObject_HasInstance
33 * nssPKIObject_GetTokens
34 * nssPKIObject_GetNicknameForToken
35 * nssPKIObject_RemoveInstanceForToken
36 * nssPKIObject_DeleteStoredObject
37 */
38
39 NSS_EXTERN void nssPKIObject_Lock (nssPKIObject * object);
40 NSS_EXTERN void nssPKIObject_Unlock (nssPKIObject * object);
41 NSS_EXTERN PRStatus nssPKIObject_NewLock (nssPKIObject * object,
42 nssPKILockType lockType);
43 NSS_EXTERN void nssPKIObject_DestroyLock(nssPKIObject * object);
44
45 /* nssPKIObject_Create
46 *
47 * A generic PKI object. It must live in a trust domain. It may be
48 * initialized with a token instance, or alternatively in a crypto context.
49 */
50 NSS_EXTERN nssPKIObject *
51 nssPKIObject_Create
52 (
53 NSSArena *arenaOpt,
54 nssCryptokiObject *instanceOpt,
55 NSSTrustDomain *td,
56 NSSCryptoContext *ccOpt,
57 nssPKILockType lockType
58 );
59
60 /* nssPKIObject_AddRef
61 */
62 NSS_EXTERN nssPKIObject *
63 nssPKIObject_AddRef
64 (
65 nssPKIObject *object
66 );
67
68 /* nssPKIObject_Destroy
69 *
70 * Returns true if object was destroyed. This notifies the subclass that
71 * all references are gone and it should delete any members it owns.
72 */
73 NSS_EXTERN PRBool
74 nssPKIObject_Destroy
75 (
76 nssPKIObject *object
77 );
78
79 /* nssPKIObject_AddInstance
80 *
81 * Add a token instance to the object, if it does not have it already.
82 */
83 NSS_EXTERN PRStatus
84 nssPKIObject_AddInstance
85 (
86 nssPKIObject *object,
87 nssCryptokiObject *instance
88 );
89
90 /* nssPKIObject_HasInstance
91 *
92 * Query the object for a token instance.
93 */
94 NSS_EXTERN PRBool
95 nssPKIObject_HasInstance
96 (
97 nssPKIObject *object,
98 nssCryptokiObject *instance
99 );
100
101 /* nssPKIObject_GetTokens
102 *
103 * Get all tokens which have an instance of the object.
104 */
105 NSS_EXTERN NSSToken **
106 nssPKIObject_GetTokens
107 (
108 nssPKIObject *object,
109 PRStatus *statusOpt
110 );
111
112 /* nssPKIObject_GetNicknameForToken
113 *
114 * tokenOpt == NULL means take the first available, otherwise return the
115 * nickname for the specified token.
116 */
117 NSS_EXTERN NSSUTF8 *
118 nssPKIObject_GetNicknameForToken
119 (
120 nssPKIObject *object,
121 NSSToken *tokenOpt
122 );
123
124 /* nssPKIObject_RemoveInstanceForToken
125 *
126 * Remove the instance of the object on the specified token.
127 */
128 NSS_EXTERN PRStatus
129 nssPKIObject_RemoveInstanceForToken
130 (
131 nssPKIObject *object,
132 NSSToken *token
133 );
134
135 /* nssPKIObject_DeleteStoredObject
136 *
137 * Delete all token instances of the object, as well as any crypto context
138 * instances (TODO). If any of the instances are read-only, or if the
139 * removal fails, the object will keep those instances. 'isFriendly' refers
140 * to the object -- can this object be removed from a friendly token without
141 * login? For example, certificates are friendly, private keys are not.
142 * Note that if the token is not friendly, authentication will be required
143 * regardless of the value of 'isFriendly'.
144 */
145 NSS_EXTERN PRStatus
146 nssPKIObject_DeleteStoredObject
147 (
148 nssPKIObject *object,
149 NSSCallback *uhh,
150 PRBool isFriendly
151 );
152
153 NSS_EXTERN nssCryptokiObject **
154 nssPKIObject_GetInstances
155 (
156 nssPKIObject *object
157 );
158
159 NSS_EXTERN NSSCertificate **
160 nssTrustDomain_FindCertificatesByID
161 (
162 NSSTrustDomain *td,
163 NSSItem *id,
164 NSSCertificate **rvOpt,
165 PRUint32 maximumOpt,
166 NSSArena *arenaOpt
167 );
168
169 NSS_EXTERN NSSCRL **
170 nssTrustDomain_FindCRLsBySubject
171 (
172 NSSTrustDomain *td,
173 NSSDER *subject
174 );
175
176 /* module-private nsspki methods */
177
178 NSS_EXTERN NSSCryptoContext *
179 nssCryptoContext_Create
180 (
181 NSSTrustDomain *td,
182 NSSCallback *uhhOpt
183 );
184
185 /* XXX for the collection */
186 NSS_EXTERN NSSCertificate *
187 nssCertificate_Create
188 (
189 nssPKIObject *object
190 );
191
192 NSS_EXTERN PRStatus
193 nssCertificate_SetCertTrust
194 (
195 NSSCertificate *c,
196 NSSTrust *trust
197 );
198
199 NSS_EXTERN nssDecodedCert *
200 nssCertificate_GetDecoding
201 (
202 NSSCertificate *c
203 );
204
205 extern PRIntn
206 nssCertificate_SubjectListSort
207 (
208 void *v1,
209 void *v2
210 );
211
212 NSS_EXTERN nssDecodedCert *
213 nssDecodedCert_Create
214 (
215 NSSArena *arenaOpt,
216 NSSDER *encoding,
217 NSSCertificateType type
218 );
219
220 NSS_EXTERN PRStatus
221 nssDecodedCert_Destroy
222 (
223 nssDecodedCert *dc
224 );
225
226 NSS_EXTERN NSSTrust *
227 nssTrust_Create
228 (
229 nssPKIObject *object,
230 NSSItem *certData
231 );
232
233 NSS_EXTERN NSSCRL *
234 nssCRL_Create
235 (
236 nssPKIObject *object
237 );
238
239 NSS_EXTERN NSSCRL *
240 nssCRL_AddRef
241 (
242 NSSCRL *crl
243 );
244
245 NSS_EXTERN PRStatus
246 nssCRL_Destroy
247 (
248 NSSCRL *crl
249 );
250
251 NSS_EXTERN PRStatus
252 nssCRL_DeleteStoredObject
253 (
254 NSSCRL *crl,
255 NSSCallback *uhh
256 );
257
258 NSS_EXTERN NSSPrivateKey *
259 nssPrivateKey_Create
260 (
261 nssPKIObject *o
262 );
263
264 NSS_EXTERN NSSDER *
265 nssCRL_GetEncoding
266 (
267 NSSCRL *crl
268 );
269
270 NSS_EXTERN NSSPublicKey *
271 nssPublicKey_Create
272 (
273 nssPKIObject *object
274 );
275
276 /* nssCertificateArray
277 *
278 * These are being thrown around a lot, might as well group together some
279 * functionality.
280 *
281 * nssCertificateArray_Destroy
282 * nssCertificateArray_Join
283 * nssCertificateArray_FindBestCertificate
284 * nssCertificateArray_Traverse
285 */
286
287 /* nssCertificateArray_Destroy
288 *
289 * Will destroy the array and the certs within it. If the array was created
290 * in an arena, will *not* (of course) destroy the arena. However, is safe
291 * to call this method on an arena-allocated array.
292 */
293 NSS_EXTERN void
294 nssCertificateArray_Destroy
295 (
296 NSSCertificate **certs
297 );
298
299 /* nssCertificateArray_Join
300 *
301 * Join two arrays into one. The two arrays, certs1 and certs2, should
302 * be considered invalid after a call to this function (they may be destroyed
303 * as part of the join). certs1 and/or certs2 may be NULL. Safe to
304 * call with arrays allocated in an arena, the result will also be in the
305 * arena.
306 */
307 NSS_EXTERN NSSCertificate **
308 nssCertificateArray_Join
309 (
310 NSSCertificate **certs1,
311 NSSCertificate **certs2
312 );
313
314 /* nssCertificateArray_FindBestCertificate
315 *
316 * Use the usual { time, usage, policies } to find the best cert in the
317 * array.
318 */
319 NSS_EXTERN NSSCertificate *
320 nssCertificateArray_FindBestCertificate
321 (
322 NSSCertificate **certs,
323 NSSTime *timeOpt,
324 const NSSUsage *usage,
325 NSSPolicies *policiesOpt
326 );
327
328 /* nssCertificateArray_Traverse
329 *
330 * Do the callback for each cert, terminate the traversal if the callback
331 * fails.
332 */
333 NSS_EXTERN PRStatus
334 nssCertificateArray_Traverse
335 (
336 NSSCertificate **certs,
337 PRStatus (* callback)(NSSCertificate *c, void *arg),
338 void *arg
339 );
340
341 NSS_EXTERN void
342 nssCRLArray_Destroy
343 (
344 NSSCRL **crls
345 );
346
347 /* nssPKIObjectCollection
348 *
349 * This is a handy way to group objects together and perform operations
350 * on them. It can also handle "proto-objects"-- references to
351 * objects instances on tokens, where the actual object hasn't
352 * been formed yet.
353 *
354 * nssCertificateCollection_Create
355 * nssPrivateKeyCollection_Create
356 * nssPublicKeyCollection_Create
357 *
358 * If this was a language that provided for inheritance, each type would
359 * inherit all of the following methods. Instead, there is only one
360 * type (nssPKIObjectCollection), shared among all. This may cause
361 * confusion; an alternative would be to define all of the methods
362 * for each subtype (nssCertificateCollection_Destroy, ...), but that doesn't
363 * seem worth the code bloat.. It is left up to the caller to remember
364 * what type of collection he/she is dealing with.
365 *
366 * nssPKIObjectCollection_Destroy
367 * nssPKIObjectCollection_Count
368 * nssPKIObjectCollection_AddObject
369 * nssPKIObjectCollection_AddInstances
370 * nssPKIObjectCollection_Traverse
371 *
372 * Back to type-specific methods.
373 *
374 * nssPKIObjectCollection_GetCertificates
375 * nssPKIObjectCollection_GetCRLs
376 * nssPKIObjectCollection_GetPrivateKeys
377 * nssPKIObjectCollection_GetPublicKeys
378 */
379
380 /* nssCertificateCollection_Create
381 *
382 * Create a collection of certificates in the specified trust domain.
383 * Optionally provide a starting set of certs.
384 */
385 NSS_EXTERN nssPKIObjectCollection *
386 nssCertificateCollection_Create
387 (
388 NSSTrustDomain *td,
389 NSSCertificate **certsOpt
390 );
391
392 /* nssCRLCollection_Create
393 *
394 * Create a collection of CRLs/KRLs in the specified trust domain.
395 * Optionally provide a starting set of CRLs.
396 */
397 NSS_EXTERN nssPKIObjectCollection *
398 nssCRLCollection_Create
399 (
400 NSSTrustDomain *td,
401 NSSCRL **crlsOpt
402 );
403
404 /* nssPrivateKeyCollection_Create
405 *
406 * Create a collection of private keys in the specified trust domain.
407 * Optionally provide a starting set of keys.
408 */
409 NSS_EXTERN nssPKIObjectCollection *
410 nssPrivateKeyCollection_Create
411 (
412 NSSTrustDomain *td,
413 NSSPrivateKey **pvkOpt
414 );
415
416 /* nssPublicKeyCollection_Create
417 *
418 * Create a collection of public keys in the specified trust domain.
419 * Optionally provide a starting set of keys.
420 */
421 NSS_EXTERN nssPKIObjectCollection *
422 nssPublicKeyCollection_Create
423 (
424 NSSTrustDomain *td,
425 NSSPublicKey **pvkOpt
426 );
427
428 /* nssPKIObjectCollection_Destroy
429 */
430 NSS_EXTERN void
431 nssPKIObjectCollection_Destroy
432 (
433 nssPKIObjectCollection *collection
434 );
435
436 /* nssPKIObjectCollection_Count
437 */
438 NSS_EXTERN PRUint32
439 nssPKIObjectCollection_Count
440 (
441 nssPKIObjectCollection *collection
442 );
443
444 NSS_EXTERN PRStatus
445 nssPKIObjectCollection_AddObject
446 (
447 nssPKIObjectCollection *collection,
448 nssPKIObject *object
449 );
450
451 /* nssPKIObjectCollection_AddInstances
452 *
453 * Add a set of object instances to the collection. The instances
454 * will be sorted into any existing certs/proto-certs that may be in
455 * the collection. The instances will be absorbed by the collection,
456 * the array should not be used after this call (except to free it).
457 *
458 * Failure means the collection is in an invalid state.
459 *
460 * numInstances = 0 means the array is NULL-terminated
461 */
462 NSS_EXTERN PRStatus
463 nssPKIObjectCollection_AddInstances
464 (
465 nssPKIObjectCollection *collection,
466 nssCryptokiObject **instances,
467 PRUint32 numInstances
468 );
469
470 /* nssPKIObjectCollection_Traverse
471 */
472 NSS_EXTERN PRStatus
473 nssPKIObjectCollection_Traverse
474 (
475 nssPKIObjectCollection *collection,
476 nssPKIObjectCallback *callback
477 );
478
479 /* This function is being added for NSS 3.5. It corresponds to the function
480 * nssToken_TraverseCertificates. The idea is to use the collection during
481 * a traversal, creating certs each time a new instance is added for which
482 * a cert does not already exist.
483 */
484 NSS_EXTERN PRStatus
485 nssPKIObjectCollection_AddInstanceAsObject
486 (
487 nssPKIObjectCollection *collection,
488 nssCryptokiObject *instance
489 );
490
491 /* nssPKIObjectCollection_GetCertificates
492 *
493 * Get all of the certificates in the collection.
494 */
495 NSS_EXTERN NSSCertificate **
496 nssPKIObjectCollection_GetCertificates
497 (
498 nssPKIObjectCollection *collection,
499 NSSCertificate **rvOpt,
500 PRUint32 maximumOpt,
501 NSSArena *arenaOpt
502 );
503
504 NSS_EXTERN NSSCRL **
505 nssPKIObjectCollection_GetCRLs
506 (
507 nssPKIObjectCollection *collection,
508 NSSCRL **rvOpt,
509 PRUint32 maximumOpt,
510 NSSArena *arenaOpt
511 );
512
513 NSS_EXTERN NSSPrivateKey **
514 nssPKIObjectCollection_GetPrivateKeys
515 (
516 nssPKIObjectCollection *collection,
517 NSSPrivateKey **rvOpt,
518 PRUint32 maximumOpt,
519 NSSArena *arenaOpt
520 );
521
522 NSS_EXTERN NSSPublicKey **
523 nssPKIObjectCollection_GetPublicKeys
524 (
525 nssPKIObjectCollection *collection,
526 NSSPublicKey **rvOpt,
527 PRUint32 maximumOpt,
528 NSSArena *arenaOpt
529 );
530
531 NSS_EXTERN NSSTime *
532 NSSTime_Now
533 (
534 NSSTime *timeOpt
535 );
536
537 NSS_EXTERN NSSTime *
538 NSSTime_SetPRTime
539 (
540 NSSTime *timeOpt,
541 PRTime prTime
542 );
543
544 NSS_EXTERN PRTime
545 NSSTime_GetPRTime
546 (
547 NSSTime *time
548 );
549
550 NSS_EXTERN nssHash *
551 nssHash_CreateCertificate
552 (
553 NSSArena *arenaOpt,
554 PRUint32 numBuckets
555 );
556
557 /* 3.4 Certificate cache routines */
558
559 NSS_EXTERN PRStatus
560 nssTrustDomain_InitializeCache
561 (
562 NSSTrustDomain *td,
563 PRUint32 cacheSize
564 );
565
566 NSS_EXTERN PRStatus
567 nssTrustDomain_AddCertsToCache
568 (
569 NSSTrustDomain *td,
570 NSSCertificate **certs,
571 PRUint32 numCerts
572 );
573
574 NSS_EXTERN void
575 nssTrustDomain_RemoveCertFromCacheLOCKED (
576 NSSTrustDomain *td,
577 NSSCertificate *cert
578 );
579
580 NSS_EXTERN void
581 nssTrustDomain_LockCertCache (
582 NSSTrustDomain *td
583 );
584
585 NSS_EXTERN void
586 nssTrustDomain_UnlockCertCache (
587 NSSTrustDomain *td
588 );
589
590 NSS_IMPLEMENT PRStatus
591 nssTrustDomain_DestroyCache
592 (
593 NSSTrustDomain *td
594 );
595
596 /*
597 * Remove all certs for the given token from the cache. This is
598 * needed if the token is removed.
599 */
600 NSS_EXTERN PRStatus
601 nssTrustDomain_RemoveTokenCertsFromCache
602 (
603 NSSTrustDomain *td,
604 NSSToken *token
605 );
606
607 NSS_EXTERN PRStatus
608 nssTrustDomain_UpdateCachedTokenCerts
609 (
610 NSSTrustDomain *td,
611 NSSToken *token
612 );
613
614 /*
615 * Find all cached certs with this nickname (label).
616 */
617 NSS_EXTERN NSSCertificate **
618 nssTrustDomain_GetCertsForNicknameFromCache
619 (
620 NSSTrustDomain *td,
621 const NSSUTF8 *nickname,
622 nssList *certListOpt
623 );
624
625 /*
626 * Find all cached certs with this email address.
627 */
628 NSS_EXTERN NSSCertificate **
629 nssTrustDomain_GetCertsForEmailAddressFromCache
630 (
631 NSSTrustDomain *td,
632 NSSASCII7 *email,
633 nssList *certListOpt
634 );
635
636 /*
637 * Find all cached certs with this subject.
638 */
639 NSS_EXTERN NSSCertificate **
640 nssTrustDomain_GetCertsForSubjectFromCache
641 (
642 NSSTrustDomain *td,
643 NSSDER *subject,
644 nssList *certListOpt
645 );
646
647 /*
648 * Look for a specific cert in the cache.
649 */
650 NSS_EXTERN NSSCertificate *
651 nssTrustDomain_GetCertForIssuerAndSNFromCache
652 (
653 NSSTrustDomain *td,
654 NSSDER *issuer,
655 NSSDER *serialNum
656 );
657
658 /*
659 * Look for a specific cert in the cache.
660 */
661 NSS_EXTERN NSSCertificate *
662 nssTrustDomain_GetCertByDERFromCache
663 (
664 NSSTrustDomain *td,
665 NSSDER *der
666 );
667
668 /* Get all certs from the cache */
669 /* XXX this is being included to make some old-style calls word, not to
670 * say we should keep it
671 */
672 NSS_EXTERN NSSCertificate **
673 nssTrustDomain_GetCertsFromCache
674 (
675 NSSTrustDomain *td,
676 nssList *certListOpt
677 );
678
679 NSS_EXTERN void
680 nssTrustDomain_DumpCacheInfo
681 (
682 NSSTrustDomain *td,
683 void (* cert_dump_iter)(const void *, void *, void *),
684 void *arg
685 );
686
687 NSS_EXTERN void
688 nssCertificateList_AddReferences
689 (
690 nssList *certList
691 );
692
693 PR_END_EXTERN_C
694
695 #endif /* PKIM_H */
OLDNEW
« no previous file with comments | « nss/lib/pki/pkibase.c ('k') | nss/lib/pki/pkistore.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698