Imported Upstream version 3.13.6
[platform/upstream/nss.git] / mozilla / security / nss / lib / ckfw / capi / cinst.c
1 /* ***** BEGIN LICENSE BLOCK *****
2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3  *
4  * The contents of this file are subject to the Mozilla Public License Version
5  * 1.1 (the "License"); you may not use this file except in compliance with
6  * the License. You may obtain a copy of the License at
7  * http://www.mozilla.org/MPL/
8  *
9  * Software distributed under the License is distributed on an "AS IS" basis,
10  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11  * for the specific language governing rights and limitations under the
12  * License.
13  *
14  * The Original Code is the Netscape security libraries.
15  *
16  * The Initial Developer of the Original Code is
17  * Netscape Communications Corporation.
18  * Portions created by the Initial Developer are Copyright (C) 1994-2000
19  * the Initial Developer. All Rights Reserved.
20  * Portions created by Red Hat, Inc, are Copyright (C) 2005
21  *
22  * Contributor(s):
23  *   Bob Relyea (rrelyea@redhat.com)
24  *
25  * Alternatively, the contents of this file may be used under the terms of
26  * either the GNU General Public License Version 2 or later (the "GPL"), or
27  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28  * in which case the provisions of the GPL or the LGPL are applicable instead
29  * of those above. If you wish to allow use of your version of this file only
30  * under the terms of either the GPL or the LGPL, and not to allow others to
31  * use your version of this file under the terms of the MPL, indicate your
32  * decision by deleting the provisions above and replace them with the notice
33  * and other provisions required by the GPL or the LGPL. If you do not delete
34  * the provisions above, a recipient may use your version of this file under
35  * the terms of any one of the MPL, the GPL or the LGPL.
36  *
37  * ***** END LICENSE BLOCK ***** */
38 #ifdef DEBUG
39 static const char CVS_ID[] = "@(#) $RCSfile: cinst.c,v $ $Revision: 1.2 $ $Date: 2005/11/15 00:13:58 $";
40 #endif /* DEBUG */
41
42 #include "ckcapi.h"
43
44 /*
45  * ckcapi/cinstance.c
46  *
47  * This file implements the NSSCKMDInstance object for the 
48  * "capi" cryptoki module.
49  */
50
51 /*
52  * NSSCKMDInstance methods
53  */
54
55 static CK_ULONG
56 ckcapi_mdInstance_GetNSlots
57 (
58   NSSCKMDInstance *mdInstance,
59   NSSCKFWInstance *fwInstance,
60   CK_RV *pError
61 )
62 {
63   return (CK_ULONG)1;
64 }
65
66 static CK_VERSION
67 ckcapi_mdInstance_GetCryptokiVersion
68 (
69   NSSCKMDInstance *mdInstance,
70   NSSCKFWInstance *fwInstance
71 )
72 {
73   return nss_ckcapi_CryptokiVersion;
74 }
75
76 static NSSUTF8 *
77 ckcapi_mdInstance_GetManufacturerID
78 (
79   NSSCKMDInstance *mdInstance,
80   NSSCKFWInstance *fwInstance,
81   CK_RV *pError
82 )
83 {
84   return (NSSUTF8 *)nss_ckcapi_ManufacturerID;
85 }
86
87 static NSSUTF8 *
88 ckcapi_mdInstance_GetLibraryDescription
89 (
90   NSSCKMDInstance *mdInstance,
91   NSSCKFWInstance *fwInstance,
92   CK_RV *pError
93 )
94 {
95   return (NSSUTF8 *)nss_ckcapi_LibraryDescription;
96 }
97
98 static CK_VERSION
99 ckcapi_mdInstance_GetLibraryVersion
100 (
101   NSSCKMDInstance *mdInstance,
102   NSSCKFWInstance *fwInstance
103 )
104 {
105   return nss_ckcapi_LibraryVersion;
106 }
107
108 static CK_RV
109 ckcapi_mdInstance_GetSlots
110 (
111   NSSCKMDInstance *mdInstance,
112   NSSCKFWInstance *fwInstance,
113   NSSCKMDSlot *slots[]
114 )
115 {
116   slots[0] = (NSSCKMDSlot *)&nss_ckcapi_mdSlot;
117   return CKR_OK;
118 }
119
120 static CK_BBOOL
121 ckcapi_mdInstance_ModuleHandlesSessionObjects
122 (
123   NSSCKMDInstance *mdInstance,
124   NSSCKFWInstance *fwInstance
125 )
126 {
127   /* we don't want to allow any session object creation, at least
128    * until we can investigate whether or not we can use those objects
129    */
130   return CK_TRUE;
131 }
132
133 NSS_IMPLEMENT_DATA const NSSCKMDInstance
134 nss_ckcapi_mdInstance = {
135   (void *)NULL, /* etc */
136   NULL, /* Initialize */
137   NULL, /* Finalize */
138   ckcapi_mdInstance_GetNSlots,
139   ckcapi_mdInstance_GetCryptokiVersion,
140   ckcapi_mdInstance_GetManufacturerID,
141   ckcapi_mdInstance_GetLibraryDescription,
142   ckcapi_mdInstance_GetLibraryVersion,
143   ckcapi_mdInstance_ModuleHandlesSessionObjects, 
144   /*NULL, /* HandleSessionObjects */
145   ckcapi_mdInstance_GetSlots,
146   NULL, /* WaitForSlotEvent */
147   (void *)NULL /* null terminator */
148 };