security/nss/lib/ckfw/nssmkey/mtoken.c

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:99eb38c95d9c
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 #include "ckmk.h"
6
7 /*
8 * nssmkey/mtoken.c
9 *
10 * This file implements the NSSCKMDToken object for the
11 * "nssmkey" cryptoki module.
12 */
13
14 static NSSUTF8 *
15 ckmk_mdToken_GetLabel
16 (
17 NSSCKMDToken *mdToken,
18 NSSCKFWToken *fwToken,
19 NSSCKMDInstance *mdInstance,
20 NSSCKFWInstance *fwInstance,
21 CK_RV *pError
22 )
23 {
24 return (NSSUTF8 *)nss_ckmk_TokenLabel;
25 }
26
27 static NSSUTF8 *
28 ckmk_mdToken_GetManufacturerID
29 (
30 NSSCKMDToken *mdToken,
31 NSSCKFWToken *fwToken,
32 NSSCKMDInstance *mdInstance,
33 NSSCKFWInstance *fwInstance,
34 CK_RV *pError
35 )
36 {
37 return (NSSUTF8 *)nss_ckmk_ManufacturerID;
38 }
39
40 static NSSUTF8 *
41 ckmk_mdToken_GetModel
42 (
43 NSSCKMDToken *mdToken,
44 NSSCKFWToken *fwToken,
45 NSSCKMDInstance *mdInstance,
46 NSSCKFWInstance *fwInstance,
47 CK_RV *pError
48 )
49 {
50 return (NSSUTF8 *)nss_ckmk_TokenModel;
51 }
52
53 static NSSUTF8 *
54 ckmk_mdToken_GetSerialNumber
55 (
56 NSSCKMDToken *mdToken,
57 NSSCKFWToken *fwToken,
58 NSSCKMDInstance *mdInstance,
59 NSSCKFWInstance *fwInstance,
60 CK_RV *pError
61 )
62 {
63 return (NSSUTF8 *)nss_ckmk_TokenSerialNumber;
64 }
65
66 static CK_BBOOL
67 ckmk_mdToken_GetIsWriteProtected
68 (
69 NSSCKMDToken *mdToken,
70 NSSCKFWToken *fwToken,
71 NSSCKMDInstance *mdInstance,
72 NSSCKFWInstance *fwInstance
73 )
74 {
75 return CK_FALSE;
76 }
77
78 /* fake out Mozilla so we don't try to initialize the token */
79 static CK_BBOOL
80 ckmk_mdToken_GetUserPinInitialized
81 (
82 NSSCKMDToken *mdToken,
83 NSSCKFWToken *fwToken,
84 NSSCKMDInstance *mdInstance,
85 NSSCKFWInstance *fwInstance
86 )
87 {
88 return CK_TRUE;
89 }
90
91 static CK_VERSION
92 ckmk_mdToken_GetHardwareVersion
93 (
94 NSSCKMDToken *mdToken,
95 NSSCKFWToken *fwToken,
96 NSSCKMDInstance *mdInstance,
97 NSSCKFWInstance *fwInstance
98 )
99 {
100 return nss_ckmk_HardwareVersion;
101 }
102
103 static CK_VERSION
104 ckmk_mdToken_GetFirmwareVersion
105 (
106 NSSCKMDToken *mdToken,
107 NSSCKFWToken *fwToken,
108 NSSCKMDInstance *mdInstance,
109 NSSCKFWInstance *fwInstance
110 )
111 {
112 return nss_ckmk_FirmwareVersion;
113 }
114
115 static NSSCKMDSession *
116 ckmk_mdToken_OpenSession
117 (
118 NSSCKMDToken *mdToken,
119 NSSCKFWToken *fwToken,
120 NSSCKMDInstance *mdInstance,
121 NSSCKFWInstance *fwInstance,
122 NSSCKFWSession *fwSession,
123 CK_BBOOL rw,
124 CK_RV *pError
125 )
126 {
127 return nss_ckmk_CreateSession(fwSession, pError);
128 }
129
130 static CK_ULONG
131 ckmk_mdToken_GetMechanismCount
132 (
133 NSSCKMDToken *mdToken,
134 NSSCKFWToken *fwToken,
135 NSSCKMDInstance *mdInstance,
136 NSSCKFWInstance *fwInstance
137 )
138 {
139 return (CK_ULONG)1;
140 }
141
142 static CK_RV
143 ckmk_mdToken_GetMechanismTypes
144 (
145 NSSCKMDToken *mdToken,
146 NSSCKFWToken *fwToken,
147 NSSCKMDInstance *mdInstance,
148 NSSCKFWInstance *fwInstance,
149 CK_MECHANISM_TYPE types[]
150 )
151 {
152 types[0] = CKM_RSA_PKCS;
153 return CKR_OK;
154 }
155
156 static NSSCKMDMechanism *
157 ckmk_mdToken_GetMechanism
158 (
159 NSSCKMDToken *mdToken,
160 NSSCKFWToken *fwToken,
161 NSSCKMDInstance *mdInstance,
162 NSSCKFWInstance *fwInstance,
163 CK_MECHANISM_TYPE which,
164 CK_RV *pError
165 )
166 {
167 if (which != CKM_RSA_PKCS) {
168 *pError = CKR_MECHANISM_INVALID;
169 return (NSSCKMDMechanism *)NULL;
170 }
171 return (NSSCKMDMechanism *)&nss_ckmk_mdMechanismRSA;
172 }
173
174 NSS_IMPLEMENT_DATA const NSSCKMDToken
175 nss_ckmk_mdToken = {
176 (void *)NULL, /* etc */
177 NULL, /* Setup */
178 NULL, /* Invalidate */
179 NULL, /* InitToken -- default errs */
180 ckmk_mdToken_GetLabel,
181 ckmk_mdToken_GetManufacturerID,
182 ckmk_mdToken_GetModel,
183 ckmk_mdToken_GetSerialNumber,
184 NULL, /* GetHasRNG -- default is false */
185 ckmk_mdToken_GetIsWriteProtected,
186 NULL, /* GetLoginRequired -- default is false */
187 ckmk_mdToken_GetUserPinInitialized,
188 NULL, /* GetRestoreKeyNotNeeded -- irrelevant */
189 NULL, /* GetHasClockOnToken -- default is false */
190 NULL, /* GetHasProtectedAuthenticationPath -- default is false */
191 NULL, /* GetSupportsDualCryptoOperations -- default is false */
192 NULL, /* GetMaxSessionCount -- default is CK_UNAVAILABLE_INFORMATION */
193 NULL, /* GetMaxRwSessionCount -- default is CK_UNAVAILABLE_INFORMATION */
194 NULL, /* GetMaxPinLen -- irrelevant */
195 NULL, /* GetMinPinLen -- irrelevant */
196 NULL, /* GetTotalPublicMemory -- default is CK_UNAVAILABLE_INFORMATION */
197 NULL, /* GetFreePublicMemory -- default is CK_UNAVAILABLE_INFORMATION */
198 NULL, /* GetTotalPrivateMemory -- default is CK_UNAVAILABLE_INFORMATION */
199 NULL, /* GetFreePrivateMemory -- default is CK_UNAVAILABLE_INFORMATION */
200 ckmk_mdToken_GetHardwareVersion,
201 ckmk_mdToken_GetFirmwareVersion,
202 NULL, /* GetUTCTime -- no clock */
203 ckmk_mdToken_OpenSession,
204 ckmk_mdToken_GetMechanismCount,
205 ckmk_mdToken_GetMechanismTypes,
206 ckmk_mdToken_GetMechanism,
207 (void *)NULL /* null terminator */
208 };

mercurial