OLD | NEW |
| (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 DEV_H | |
6 #define DEV_H | |
7 | |
8 /* | |
9 * dev.h | |
10 * | |
11 * Low-level methods for interaction with cryptoki devices | |
12 */ | |
13 | |
14 #ifndef NSSDEV_H | |
15 #include "nssdev.h" | |
16 #endif /* NSSDEV_H */ | |
17 | |
18 #ifndef DEVT_H | |
19 #include "devt.h" | |
20 #endif /* DEVT_H */ | |
21 | |
22 PR_BEGIN_EXTERN_C | |
23 | |
24 /* the global module list | |
25 * | |
26 * These functions are for managing the global set of modules. Trust Domains, | |
27 * etc., will draw from this set. These functions are completely internal | |
28 * and only invoked when there are changes to the global module state | |
29 * (load or unload). | |
30 * | |
31 * nss_InitializeGlobalModuleList | |
32 * nss_DestroyGlobalModuleList | |
33 * nss_GetLoadedModules | |
34 * | |
35 * nssGlobalModuleList_Add | |
36 * nssGlobalModuleList_Remove | |
37 * nssGlobalModuleList_FindModuleByName | |
38 * nssGlobalModuleList_FindSlotByName | |
39 * nssGlobalModuleList_FindTokenByName | |
40 */ | |
41 | |
42 NSS_EXTERN PRStatus | |
43 nss_InitializeGlobalModuleList( | |
44 void); | |
45 | |
46 NSS_EXTERN PRStatus | |
47 nss_DestroyGlobalModuleList( | |
48 void); | |
49 | |
50 NSS_EXTERN NSSModule ** | |
51 nss_GetLoadedModules( | |
52 void); | |
53 | |
54 NSS_EXTERN PRStatus | |
55 nssGlobalModuleList_Add( | |
56 NSSModule *module); | |
57 | |
58 NSS_EXTERN PRStatus | |
59 nssGlobalModuleList_Remove( | |
60 NSSModule *module); | |
61 | |
62 NSS_EXTERN NSSModule * | |
63 nssGlobalModuleList_FindModuleByName( | |
64 NSSUTF8 *moduleName); | |
65 | |
66 NSS_EXTERN NSSSlot * | |
67 nssGlobalModuleList_FindSlotByName( | |
68 NSSUTF8 *slotName); | |
69 | |
70 NSS_EXTERN NSSToken * | |
71 nssGlobalModuleList_FindTokenByName( | |
72 NSSUTF8 *tokenName); | |
73 | |
74 NSS_EXTERN NSSToken * | |
75 nss_GetDefaultCryptoToken( | |
76 void); | |
77 | |
78 NSS_EXTERN NSSToken * | |
79 nss_GetDefaultDatabaseToken( | |
80 void); | |
81 | |
82 /* | |
83 * |-----------|<---> NSSSlot <--> NSSToken | |
84 * | NSSModule |<---> NSSSlot <--> NSSToken | |
85 * |-----------|<---> NSSSlot <--> NSSToken | |
86 */ | |
87 | |
88 /* NSSModule | |
89 * | |
90 * nssModule_Create | |
91 * nssModule_CreateFromSpec | |
92 * nssModule_AddRef | |
93 * nssModule_GetName | |
94 * nssModule_GetSlots | |
95 * nssModule_FindSlotByName | |
96 * nssModule_FindTokenByName | |
97 * nssModule_GetCertOrder | |
98 */ | |
99 | |
100 NSS_EXTERN NSSModule * | |
101 nssModule_Create( | |
102 NSSUTF8 *moduleOpt, | |
103 NSSUTF8 *uriOpt, | |
104 NSSUTF8 *opaqueOpt, | |
105 void *reserved); | |
106 | |
107 /* This is to use the new loading mechanism. */ | |
108 NSS_EXTERN NSSModule * | |
109 nssModule_CreateFromSpec( | |
110 NSSUTF8 *moduleSpec, | |
111 NSSModule *parent, | |
112 PRBool loadSubModules); | |
113 | |
114 NSS_EXTERN PRStatus | |
115 nssModule_Destroy( | |
116 NSSModule *mod); | |
117 | |
118 NSS_EXTERN NSSModule * | |
119 nssModule_AddRef( | |
120 NSSModule *mod); | |
121 | |
122 NSS_EXTERN NSSUTF8 * | |
123 nssModule_GetName( | |
124 NSSModule *mod); | |
125 | |
126 NSS_EXTERN NSSSlot ** | |
127 nssModule_GetSlots( | |
128 NSSModule *mod); | |
129 | |
130 NSS_EXTERN NSSSlot * | |
131 nssModule_FindSlotByName( | |
132 NSSModule *mod, | |
133 NSSUTF8 *slotName); | |
134 | |
135 NSS_EXTERN NSSToken * | |
136 nssModule_FindTokenByName( | |
137 NSSModule *mod, | |
138 NSSUTF8 *tokenName); | |
139 | |
140 NSS_EXTERN PRInt32 | |
141 nssModule_GetCertOrder( | |
142 NSSModule *module); | |
143 | |
144 /* NSSSlot | |
145 * | |
146 * nssSlot_Destroy | |
147 * nssSlot_AddRef | |
148 * nssSlot_GetName | |
149 * nssSlot_GetTokenName | |
150 * nssSlot_IsTokenPresent | |
151 * nssSlot_IsPermanent | |
152 * nssSlot_IsFriendly | |
153 * nssSlot_IsHardware | |
154 * nssSlot_Refresh | |
155 * nssSlot_GetModule | |
156 * nssSlot_GetToken | |
157 * nssSlot_Login | |
158 * nssSlot_Logout | |
159 * nssSlot_SetPassword | |
160 * nssSlot_CreateSession | |
161 */ | |
162 | |
163 NSS_EXTERN PRStatus | |
164 nssSlot_Destroy( | |
165 NSSSlot *slot); | |
166 | |
167 NSS_EXTERN NSSSlot * | |
168 nssSlot_AddRef( | |
169 NSSSlot *slot); | |
170 | |
171 NSS_EXTERN void | |
172 nssSlot_ResetDelay( | |
173 NSSSlot *slot); | |
174 | |
175 NSS_EXTERN NSSUTF8 * | |
176 nssSlot_GetName( | |
177 NSSSlot *slot); | |
178 | |
179 NSS_EXTERN NSSUTF8 * | |
180 nssSlot_GetTokenName( | |
181 NSSSlot *slot); | |
182 | |
183 NSS_EXTERN NSSModule * | |
184 nssSlot_GetModule( | |
185 NSSSlot *slot); | |
186 | |
187 NSS_EXTERN NSSToken * | |
188 nssSlot_GetToken( | |
189 NSSSlot *slot); | |
190 | |
191 NSS_EXTERN PRBool | |
192 nssSlot_IsTokenPresent( | |
193 NSSSlot *slot); | |
194 | |
195 NSS_EXTERN PRBool | |
196 nssSlot_IsPermanent( | |
197 NSSSlot *slot); | |
198 | |
199 NSS_EXTERN PRBool | |
200 nssSlot_IsFriendly( | |
201 NSSSlot *slot); | |
202 | |
203 NSS_EXTERN PRBool | |
204 nssSlot_IsHardware( | |
205 NSSSlot *slot); | |
206 | |
207 NSS_EXTERN PRBool | |
208 nssSlot_IsLoggedIn( | |
209 NSSSlot *slot); | |
210 | |
211 NSS_EXTERN PRStatus | |
212 nssSlot_Refresh( | |
213 NSSSlot *slot); | |
214 | |
215 NSS_EXTERN PRStatus | |
216 nssSlot_Login( | |
217 NSSSlot *slot, | |
218 NSSCallback *pwcb); | |
219 extern const NSSError NSS_ERROR_INVALID_PASSWORD; | |
220 extern const NSSError NSS_ERROR_USER_CANCELED; | |
221 | |
222 NSS_EXTERN PRStatus | |
223 nssSlot_Logout( | |
224 NSSSlot *slot, | |
225 nssSession *sessionOpt); | |
226 | |
227 NSS_EXTERN void | |
228 nssSlot_EnterMonitor( | |
229 NSSSlot *slot); | |
230 | |
231 NSS_EXTERN void | |
232 nssSlot_ExitMonitor( | |
233 NSSSlot *slot); | |
234 | |
235 #define NSSSLOT_ASK_PASSWORD_FIRST_TIME -1 | |
236 #define NSSSLOT_ASK_PASSWORD_EVERY_TIME 0 | |
237 NSS_EXTERN void | |
238 nssSlot_SetPasswordDefaults( | |
239 NSSSlot *slot, | |
240 PRInt32 askPasswordTimeout); | |
241 | |
242 NSS_EXTERN PRStatus | |
243 nssSlot_SetPassword( | |
244 NSSSlot *slot, | |
245 NSSUTF8 *oldPasswordOpt, | |
246 NSSUTF8 *newPassword); | |
247 extern const NSSError NSS_ERROR_INVALID_PASSWORD; | |
248 extern const NSSError NSS_ERROR_USER_CANCELED; | |
249 | |
250 /* | |
251 * nssSlot_IsLoggedIn | |
252 */ | |
253 | |
254 NSS_EXTERN nssSession * | |
255 nssSlot_CreateSession( | |
256 NSSSlot *slot, | |
257 NSSArena *arenaOpt, | |
258 PRBool readWrite /* so far, this is the only flag used */ | |
259 ); | |
260 | |
261 /* NSSToken | |
262 * | |
263 * nssToken_Destroy | |
264 * nssToken_AddRef | |
265 * nssToken_GetName | |
266 * nssToken_GetModule | |
267 * nssToken_GetSlot | |
268 * nssToken_NeedsPINInitialization | |
269 * nssToken_ImportCertificate | |
270 * nssToken_ImportTrust | |
271 * nssToken_ImportCRL | |
272 * nssToken_GenerateKeyPair | |
273 * nssToken_GenerateSymmetricKey | |
274 * nssToken_DeleteStoredObject | |
275 * nssToken_FindObjects | |
276 * nssToken_FindCertificatesBySubject | |
277 * nssToken_FindCertificatesByNickname | |
278 * nssToken_FindCertificatesByEmail | |
279 * nssToken_FindCertificateByIssuerAndSerialNumber | |
280 * nssToken_FindCertificateByEncodedCertificate | |
281 * nssToken_FindTrustForCertificate | |
282 * nssToken_FindCRLsBySubject | |
283 * nssToken_FindPrivateKeys | |
284 * nssToken_FindPrivateKeyByID | |
285 * nssToken_Digest | |
286 * nssToken_BeginDigest | |
287 * nssToken_ContinueDigest | |
288 * nssToken_FinishDigest | |
289 */ | |
290 | |
291 NSS_EXTERN PRStatus | |
292 nssToken_Destroy( | |
293 NSSToken *tok); | |
294 | |
295 NSS_EXTERN NSSToken * | |
296 nssToken_AddRef( | |
297 NSSToken *tok); | |
298 | |
299 NSS_EXTERN NSSUTF8 * | |
300 nssToken_GetName( | |
301 NSSToken *tok); | |
302 | |
303 NSS_EXTERN NSSModule * | |
304 nssToken_GetModule( | |
305 NSSToken *token); | |
306 | |
307 NSS_EXTERN NSSSlot * | |
308 nssToken_GetSlot( | |
309 NSSToken *tok); | |
310 | |
311 NSS_EXTERN PRBool | |
312 nssToken_NeedsPINInitialization( | |
313 NSSToken *token); | |
314 | |
315 NSS_EXTERN nssCryptokiObject * | |
316 nssToken_ImportCertificate( | |
317 NSSToken *tok, | |
318 nssSession *sessionOpt, | |
319 NSSCertificateType certType, | |
320 NSSItem *id, | |
321 const NSSUTF8 *nickname, | |
322 NSSDER *encoding, | |
323 NSSDER *issuer, | |
324 NSSDER *subject, | |
325 NSSDER *serial, | |
326 NSSASCII7 *emailAddr, | |
327 PRBool asTokenObject); | |
328 | |
329 NSS_EXTERN nssCryptokiObject * | |
330 nssToken_ImportTrust( | |
331 NSSToken *tok, | |
332 nssSession *sessionOpt, | |
333 NSSDER *certEncoding, | |
334 NSSDER *certIssuer, | |
335 NSSDER *certSerial, | |
336 nssTrustLevel serverAuth, | |
337 nssTrustLevel clientAuth, | |
338 nssTrustLevel codeSigning, | |
339 nssTrustLevel emailProtection, | |
340 PRBool stepUpApproved, | |
341 PRBool asTokenObject); | |
342 | |
343 NSS_EXTERN nssCryptokiObject * | |
344 nssToken_ImportCRL( | |
345 NSSToken *token, | |
346 nssSession *sessionOpt, | |
347 NSSDER *subject, | |
348 NSSDER *encoding, | |
349 PRBool isKRL, | |
350 NSSUTF8 *url, | |
351 PRBool asTokenObject); | |
352 | |
353 /* Permanently remove an object from the token. */ | |
354 NSS_EXTERN PRStatus | |
355 nssToken_DeleteStoredObject( | |
356 nssCryptokiObject *instance); | |
357 | |
358 NSS_EXTERN nssCryptokiObject ** | |
359 nssToken_FindObjects( | |
360 NSSToken *token, | |
361 nssSession *sessionOpt, | |
362 CK_OBJECT_CLASS objclass, | |
363 nssTokenSearchType searchType, | |
364 PRUint32 maximumOpt, | |
365 PRStatus *statusOpt); | |
366 | |
367 NSS_EXTERN nssCryptokiObject ** | |
368 nssToken_FindCertificatesBySubject( | |
369 NSSToken *token, | |
370 nssSession *sessionOpt, | |
371 NSSDER *subject, | |
372 nssTokenSearchType searchType, | |
373 PRUint32 maximumOpt, | |
374 PRStatus *statusOpt); | |
375 | |
376 NSS_EXTERN nssCryptokiObject ** | |
377 nssToken_FindCertificatesByNickname( | |
378 NSSToken *token, | |
379 nssSession *sessionOpt, | |
380 const NSSUTF8 *name, | |
381 nssTokenSearchType searchType, | |
382 PRUint32 maximumOpt, | |
383 PRStatus *statusOpt); | |
384 | |
385 NSS_EXTERN nssCryptokiObject ** | |
386 nssToken_FindCertificatesByEmail( | |
387 NSSToken *token, | |
388 nssSession *sessionOpt, | |
389 NSSASCII7 *email, | |
390 nssTokenSearchType searchType, | |
391 PRUint32 maximumOpt, | |
392 PRStatus *statusOpt); | |
393 | |
394 NSS_EXTERN nssCryptokiObject ** | |
395 nssToken_FindCertificatesByID( | |
396 NSSToken *token, | |
397 nssSession *sessionOpt, | |
398 NSSItem *id, | |
399 nssTokenSearchType searchType, | |
400 PRUint32 maximumOpt, | |
401 PRStatus *statusOpt); | |
402 | |
403 NSS_EXTERN nssCryptokiObject * | |
404 nssToken_FindCertificateByIssuerAndSerialNumber( | |
405 NSSToken *token, | |
406 nssSession *sessionOpt, | |
407 NSSDER *issuer, | |
408 NSSDER *serial, | |
409 nssTokenSearchType searchType, | |
410 PRStatus *statusOpt); | |
411 | |
412 NSS_EXTERN nssCryptokiObject * | |
413 nssToken_FindCertificateByEncodedCertificate( | |
414 NSSToken *token, | |
415 nssSession *sessionOpt, | |
416 NSSBER *encodedCertificate, | |
417 nssTokenSearchType searchType, | |
418 PRStatus *statusOpt); | |
419 | |
420 NSS_EXTERN nssCryptokiObject * | |
421 nssToken_FindTrustForCertificate( | |
422 NSSToken *token, | |
423 nssSession *sessionOpt, | |
424 NSSDER *certEncoding, | |
425 NSSDER *certIssuer, | |
426 NSSDER *certSerial, | |
427 nssTokenSearchType searchType); | |
428 | |
429 NSS_EXTERN nssCryptokiObject ** | |
430 nssToken_FindCRLsBySubject( | |
431 NSSToken *token, | |
432 nssSession *sessionOpt, | |
433 NSSDER *subject, | |
434 nssTokenSearchType searchType, | |
435 PRUint32 maximumOpt, | |
436 PRStatus *statusOpt); | |
437 | |
438 NSS_EXTERN nssCryptokiObject ** | |
439 nssToken_FindPrivateKeys( | |
440 NSSToken *token, | |
441 nssSession *sessionOpt, | |
442 nssTokenSearchType searchType, | |
443 PRUint32 maximumOpt, | |
444 PRStatus *statusOpt); | |
445 | |
446 NSS_EXTERN nssCryptokiObject * | |
447 nssToken_FindPrivateKeyByID( | |
448 NSSToken *token, | |
449 nssSession *sessionOpt, | |
450 NSSItem *keyID); | |
451 | |
452 NSS_EXTERN nssCryptokiObject * | |
453 nssToken_FindPublicKeyByID( | |
454 NSSToken *token, | |
455 nssSession *sessionOpt, | |
456 NSSItem *keyID); | |
457 | |
458 NSS_EXTERN NSSItem * | |
459 nssToken_Digest( | |
460 NSSToken *tok, | |
461 nssSession *sessionOpt, | |
462 NSSAlgorithmAndParameters *ap, | |
463 NSSItem *data, | |
464 NSSItem *rvOpt, | |
465 NSSArena *arenaOpt); | |
466 | |
467 NSS_EXTERN PRStatus | |
468 nssToken_BeginDigest( | |
469 NSSToken *tok, | |
470 nssSession *sessionOpt, | |
471 NSSAlgorithmAndParameters *ap); | |
472 | |
473 NSS_EXTERN PRStatus | |
474 nssToken_ContinueDigest( | |
475 NSSToken *tok, | |
476 nssSession *sessionOpt, | |
477 NSSItem *item); | |
478 | |
479 NSS_EXTERN NSSItem * | |
480 nssToken_FinishDigest( | |
481 NSSToken *tok, | |
482 nssSession *sessionOpt, | |
483 NSSItem *rvOpt, | |
484 NSSArena *arenaOpt); | |
485 | |
486 /* nssSession | |
487 * | |
488 * nssSession_Destroy | |
489 * nssSession_EnterMonitor | |
490 * nssSession_ExitMonitor | |
491 * nssSession_IsReadWrite | |
492 */ | |
493 | |
494 NSS_EXTERN PRStatus | |
495 nssSession_Destroy( | |
496 nssSession *s); | |
497 | |
498 /* would like to inline */ | |
499 NSS_EXTERN PRStatus | |
500 nssSession_EnterMonitor( | |
501 nssSession *s); | |
502 | |
503 /* would like to inline */ | |
504 NSS_EXTERN PRStatus | |
505 nssSession_ExitMonitor( | |
506 nssSession *s); | |
507 | |
508 /* would like to inline */ | |
509 NSS_EXTERN PRBool | |
510 nssSession_IsReadWrite( | |
511 nssSession *s); | |
512 | |
513 /* nssCryptokiObject | |
514 * | |
515 * An object living on a cryptoki token. | |
516 * Not really proper to mix up the object types just because | |
517 * nssCryptokiObject itself is generic, but doing so anyway. | |
518 * | |
519 * nssCryptokiObject_Destroy | |
520 * nssCryptokiObject_Equal | |
521 * nssCryptokiObject_Clone | |
522 * nssCryptokiCertificate_GetAttributes | |
523 * nssCryptokiPrivateKey_GetAttributes | |
524 * nssCryptokiPublicKey_GetAttributes | |
525 * nssCryptokiTrust_GetAttributes | |
526 * nssCryptokiCRL_GetAttributes | |
527 */ | |
528 | |
529 NSS_EXTERN void | |
530 nssCryptokiObject_Destroy( | |
531 nssCryptokiObject *object); | |
532 | |
533 NSS_EXTERN PRBool | |
534 nssCryptokiObject_Equal( | |
535 nssCryptokiObject *object1, | |
536 nssCryptokiObject *object2); | |
537 | |
538 NSS_EXTERN nssCryptokiObject * | |
539 nssCryptokiObject_Clone( | |
540 nssCryptokiObject *object); | |
541 | |
542 NSS_EXTERN PRStatus | |
543 nssCryptokiCertificate_GetAttributes( | |
544 nssCryptokiObject *object, | |
545 nssSession *sessionOpt, | |
546 NSSArena *arenaOpt, | |
547 NSSCertificateType *certTypeOpt, | |
548 NSSItem *idOpt, | |
549 NSSDER *encodingOpt, | |
550 NSSDER *issuerOpt, | |
551 NSSDER *serialOpt, | |
552 NSSDER *subjectOpt); | |
553 | |
554 NSS_EXTERN PRStatus | |
555 nssCryptokiTrust_GetAttributes( | |
556 nssCryptokiObject *trustObject, | |
557 nssSession *sessionOpt, | |
558 NSSItem *sha1_hash, | |
559 nssTrustLevel *serverAuth, | |
560 nssTrustLevel *clientAuth, | |
561 nssTrustLevel *codeSigning, | |
562 nssTrustLevel *emailProtection, | |
563 PRBool *stepUpApproved); | |
564 | |
565 NSS_EXTERN PRStatus | |
566 nssCryptokiCRL_GetAttributes( | |
567 nssCryptokiObject *crlObject, | |
568 nssSession *sessionOpt, | |
569 NSSArena *arenaOpt, | |
570 NSSItem *encodingOpt, | |
571 NSSItem *subjectOpt, | |
572 CK_ULONG *crl_class, | |
573 NSSUTF8 **urlOpt, | |
574 PRBool *isKRLOpt); | |
575 | |
576 /* I'm including this to handle import of certificates in NSS 3.5. This | |
577 * function will set the cert-related attributes of a key, in order to | |
578 * associate it with a cert. Does it stay like this for 4.0? | |
579 */ | |
580 NSS_EXTERN PRStatus | |
581 nssCryptokiPrivateKey_SetCertificate( | |
582 nssCryptokiObject *keyObject, | |
583 nssSession *sessionOpt, | |
584 const NSSUTF8 *nickname, | |
585 NSSItem *id, | |
586 NSSDER *subject); | |
587 | |
588 NSS_EXTERN void | |
589 nssModuleArray_Destroy( | |
590 NSSModule **modules); | |
591 | |
592 /* nssSlotArray | |
593 * | |
594 * nssSlotArray_Destroy | |
595 */ | |
596 | |
597 NSS_EXTERN void | |
598 nssSlotArray_Destroy( | |
599 NSSSlot **slots); | |
600 | |
601 /* nssTokenArray | |
602 * | |
603 * nssTokenArray_Destroy | |
604 */ | |
605 | |
606 NSS_EXTERN void | |
607 nssTokenArray_Destroy( | |
608 NSSToken **tokens); | |
609 | |
610 /* nssCryptokiObjectArray | |
611 * | |
612 * nssCryptokiObjectArray_Destroy | |
613 */ | |
614 NSS_EXTERN void | |
615 nssCryptokiObjectArray_Destroy( | |
616 nssCryptokiObject **object); | |
617 | |
618 /* nssSlotList | |
619 * | |
620 * An ordered list of slots. The order can be anything, it is set in the | |
621 * Add methods. Perhaps it should be CreateInCertOrder, ...? | |
622 * | |
623 * nssSlotList_Create | |
624 * nssSlotList_Destroy | |
625 * nssSlotList_Add | |
626 * nssSlotList_AddModuleSlots | |
627 * nssSlotList_GetSlots | |
628 * nssSlotList_FindSlotByName | |
629 * nssSlotList_FindTokenByName | |
630 * nssSlotList_GetBestSlot | |
631 * nssSlotList_GetBestSlotForAlgorithmAndParameters | |
632 * nssSlotList_GetBestSlotForAlgorithmsAndParameters | |
633 */ | |
634 | |
635 /* nssSlotList_Create | |
636 */ | |
637 NSS_EXTERN nssSlotList * | |
638 nssSlotList_Create( | |
639 NSSArena *arenaOpt); | |
640 | |
641 /* nssSlotList_Destroy | |
642 */ | |
643 NSS_EXTERN void | |
644 nssSlotList_Destroy( | |
645 nssSlotList *slotList); | |
646 | |
647 /* nssSlotList_Add | |
648 * | |
649 * Add the given slot in the given order. | |
650 */ | |
651 NSS_EXTERN PRStatus | |
652 nssSlotList_Add( | |
653 nssSlotList *slotList, | |
654 NSSSlot *slot, | |
655 PRUint32 order); | |
656 | |
657 /* nssSlotList_AddModuleSlots | |
658 * | |
659 * Add all slots in the module, in the given order (the slots will have | |
660 * equal weight). | |
661 */ | |
662 NSS_EXTERN PRStatus | |
663 nssSlotList_AddModuleSlots( | |
664 nssSlotList *slotList, | |
665 NSSModule *module, | |
666 PRUint32 order); | |
667 | |
668 /* nssSlotList_GetSlots | |
669 */ | |
670 NSS_EXTERN NSSSlot ** | |
671 nssSlotList_GetSlots( | |
672 nssSlotList *slotList); | |
673 | |
674 /* nssSlotList_FindSlotByName | |
675 */ | |
676 NSS_EXTERN NSSSlot * | |
677 nssSlotList_FindSlotByName( | |
678 nssSlotList *slotList, | |
679 NSSUTF8 *slotName); | |
680 | |
681 /* nssSlotList_FindTokenByName | |
682 */ | |
683 NSS_EXTERN NSSToken * | |
684 nssSlotList_FindTokenByName( | |
685 nssSlotList *slotList, | |
686 NSSUTF8 *tokenName); | |
687 | |
688 /* nssSlotList_GetBestSlot | |
689 * | |
690 * The best slot is the highest ranking in order, i.e., the first in the | |
691 * list. | |
692 */ | |
693 NSS_EXTERN NSSSlot * | |
694 nssSlotList_GetBestSlot( | |
695 nssSlotList *slotList); | |
696 | |
697 /* nssSlotList_GetBestSlotForAlgorithmAndParameters | |
698 * | |
699 * Highest-ranking slot than can handle algorithm/parameters. | |
700 */ | |
701 NSS_EXTERN NSSSlot * | |
702 nssSlotList_GetBestSlotForAlgorithmAndParameters( | |
703 nssSlotList *slotList, | |
704 NSSAlgorithmAndParameters *ap); | |
705 | |
706 /* nssSlotList_GetBestSlotForAlgorithmsAndParameters | |
707 * | |
708 * Highest-ranking slot than can handle all algorithms/parameters. | |
709 */ | |
710 NSS_EXTERN NSSSlot * | |
711 nssSlotList_GetBestSlotForAlgorithmsAndParameters( | |
712 nssSlotList *slotList, | |
713 NSSAlgorithmAndParameters **ap); | |
714 | |
715 NSS_EXTERN PRBool | |
716 nssToken_IsPresent( | |
717 NSSToken *token); | |
718 | |
719 NSS_EXTERN nssSession * | |
720 nssToken_GetDefaultSession( | |
721 NSSToken *token); | |
722 | |
723 NSS_EXTERN PRStatus | |
724 nssToken_GetTrustOrder( | |
725 NSSToken *tok); | |
726 | |
727 NSS_EXTERN PRStatus | |
728 nssToken_NotifyCertsNotVisible( | |
729 NSSToken *tok); | |
730 | |
731 NSS_EXTERN PRStatus | |
732 nssToken_TraverseCertificates( | |
733 NSSToken *token, | |
734 nssSession *sessionOpt, | |
735 nssTokenSearchType searchType, | |
736 PRStatus (*callback)(nssCryptokiObject *instance, void *arg), | |
737 void *arg); | |
738 | |
739 NSS_EXTERN PRBool | |
740 nssToken_IsPrivateKeyAvailable( | |
741 NSSToken *token, | |
742 NSSCertificate *c, | |
743 nssCryptokiObject *instance); | |
744 | |
745 PR_END_EXTERN_C | |
746 | |
747 #endif /* DEV_H */ | |
OLD | NEW |