2 * Copyright (C) 2010-2012 Stefan Walter
3 * Copyright (C) 2011 Collabora Ltd.
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU Lesser General Public License as
7 * published by the Free Software Foundation; either version 2.1 of
8 * the License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
25 #include <gck/pkcs11.h>
26 #include <gck/pkcs11x.h>
31 extern CK_FUNCTION_LIST mock_default_functions
;
33 CK_RV
mock_C_Initialize (CK_VOID_PTR pInitArgs
);
35 CK_RV
mock_C_Finalize (CK_VOID_PTR pReserved
);
37 CK_RV
mock_C_GetInfo (CK_INFO_PTR pInfo
);
39 CK_RV
mock_C_GetFunctionList (CK_FUNCTION_LIST_PTR_PTR list
);
41 CK_RV
mock_C_GetSlotList (CK_BBOOL tokenPresent
,
42 CK_SLOT_ID_PTR pSlotList
,
43 CK_ULONG_PTR pulCount
);
45 CK_RV
mock_C_GetSlotInfo (CK_SLOT_ID slotID
,
46 CK_SLOT_INFO_PTR pInfo
);
48 CK_RV
mock_C_GetTokenInfo (CK_SLOT_ID slotID
,
49 CK_TOKEN_INFO_PTR pInfo
);
51 CK_RV
mock_C_GetMechanismList (CK_SLOT_ID slotID
,
52 CK_MECHANISM_TYPE_PTR pMechanismList
,
53 CK_ULONG_PTR pulCount
);
55 CK_RV
mock_C_GetMechanismInfo (CK_SLOT_ID slotID
,
56 CK_MECHANISM_TYPE type
,
57 CK_MECHANISM_INFO_PTR pInfo
);
59 CK_RV
mock_unsupported_C_InitToken (CK_SLOT_ID slotID
,
62 CK_UTF8CHAR_PTR pLabel
);
64 CK_RV
mock_unsupported_C_WaitForSlotEvent (CK_FLAGS flags
,
66 CK_VOID_PTR pReserved
);
68 CK_RV
mock_C_OpenSession (CK_SLOT_ID slotID
,
70 CK_VOID_PTR pApplication
,
72 CK_SESSION_HANDLE_PTR phSession
);
74 CK_RV
mock_C_CloseSession (CK_SESSION_HANDLE hSession
);
76 CK_RV
mock_C_CloseAllSessions (CK_SLOT_ID slotID
);
78 CK_RV
mock_C_GetFunctionStatus (CK_SESSION_HANDLE hSession
);
80 CK_RV
mock_C_CancelFunction (CK_SESSION_HANDLE hSession
);
82 CK_RV
mock_C_GetSessionInfo (CK_SESSION_HANDLE hSession
,
83 CK_SESSION_INFO_PTR pInfo
);
85 CK_RV
mock_unsupported_C_InitPIN (CK_SESSION_HANDLE hSession
,
89 CK_RV
mock_unsupported_C_SetPIN (CK_SESSION_HANDLE hSession
,
90 CK_UTF8CHAR_PTR pOldPin
,
92 CK_UTF8CHAR_PTR pNewPin
,
95 CK_RV
mock_unsupported_C_GetOperationState (CK_SESSION_HANDLE hSession
,
96 CK_BYTE_PTR pOperationState
,
97 CK_ULONG_PTR pulOperationStateLen
);
99 CK_RV
mock_unsupported_C_SetOperationState (CK_SESSION_HANDLE hSession
,
100 CK_BYTE_PTR pOperationState
,
101 CK_ULONG ulOperationStateLen
,
102 CK_OBJECT_HANDLE hEncryptionKey
,
103 CK_OBJECT_HANDLE hAuthenticationKey
);
105 CK_RV
mock_unsupported_C_Login (CK_SESSION_HANDLE hSession
,
106 CK_USER_TYPE userType
,
107 CK_UTF8CHAR_PTR pPin
,
110 CK_RV
mock_unsupported_C_Logout (CK_SESSION_HANDLE hSession
);
112 CK_RV
mock_readonly_C_CreateObject (CK_SESSION_HANDLE hSession
,
113 CK_ATTRIBUTE_PTR pTemplate
,
115 CK_OBJECT_HANDLE_PTR phObject
);
117 CK_RV
mock_unsupported_C_CopyObject (CK_SESSION_HANDLE hSession
,
118 CK_OBJECT_HANDLE hObject
,
119 CK_ATTRIBUTE_PTR pTemplate
,
121 CK_OBJECT_HANDLE_PTR phNewObject
);
123 CK_RV
mock_readonly_C_DestroyObject (CK_SESSION_HANDLE hSession
,
124 CK_OBJECT_HANDLE hObject
);
126 CK_RV
mock_unsupported_C_GetObjectSize (CK_SESSION_HANDLE hSession
,
127 CK_OBJECT_HANDLE hObject
,
128 CK_ULONG_PTR pulSize
);
130 CK_RV
mock_C_GetAttributeValue (CK_SESSION_HANDLE hSession
,
131 CK_OBJECT_HANDLE hObject
,
132 CK_ATTRIBUTE_PTR pTemplate
,
135 CK_RV
mock_readonly_C_SetAttributeValue (CK_SESSION_HANDLE hSession
,
136 CK_OBJECT_HANDLE hObject
,
137 CK_ATTRIBUTE_PTR pTemplate
,
140 CK_RV
mock_C_FindObjectsInit (CK_SESSION_HANDLE hSession
,
141 CK_ATTRIBUTE_PTR pTemplate
,
144 CK_RV
mock_C_FindObjects (CK_SESSION_HANDLE hSession
,
145 CK_OBJECT_HANDLE_PTR phObject
,
146 CK_ULONG ulMaxObjectCount
,
147 CK_ULONG_PTR pulObjectCount
);
149 CK_RV
mock_fail_C_FindObjects (CK_SESSION_HANDLE hSession
,
150 CK_OBJECT_HANDLE_PTR phObject
,
151 CK_ULONG ulMaxObjectCount
,
152 CK_ULONG_PTR pulObjectCount
);
154 CK_RV
mock_C_FindObjectsFinal (CK_SESSION_HANDLE hSession
);
156 CK_RV
mock_no_mechanisms_C_EncryptInit (CK_SESSION_HANDLE hSession
,
157 CK_MECHANISM_PTR pMechanism
,
158 CK_OBJECT_HANDLE hKey
);
160 CK_RV
mock_not_initialized_C_Encrypt (CK_SESSION_HANDLE hSession
,
163 CK_BYTE_PTR pEncryptedData
,
164 CK_ULONG_PTR pulEncryptedDataLen
);
166 CK_RV
mock_unsupported_C_EncryptUpdate (CK_SESSION_HANDLE hSession
,
169 CK_BYTE_PTR pEncryptedPart
,
170 CK_ULONG_PTR pulEncryptedPartLen
);
172 CK_RV
mock_unsupported_C_EncryptFinal (CK_SESSION_HANDLE hSession
,
173 CK_BYTE_PTR pLastEncryptedPart
,
174 CK_ULONG_PTR pulLastEncryptedPartLen
);
176 CK_RV
mock_no_mechanisms_C_DecryptInit (CK_SESSION_HANDLE hSession
,
177 CK_MECHANISM_PTR pMechanism
,
178 CK_OBJECT_HANDLE hKey
);
180 CK_RV
mock_not_initialized_C_Decrypt (CK_SESSION_HANDLE hSession
,
181 CK_BYTE_PTR pEncryptedData
,
182 CK_ULONG ulEncryptedDataLen
,
184 CK_ULONG_PTR pulDataLen
);
186 CK_RV
mock_unsupported_C_DecryptUpdate (CK_SESSION_HANDLE hSession
,
187 CK_BYTE_PTR pEncryptedPart
,
188 CK_ULONG ulEncryptedPartLen
,
190 CK_ULONG_PTR pulPartLen
);
192 CK_RV
mock_unsupported_C_DecryptFinal (CK_SESSION_HANDLE hSession
,
193 CK_BYTE_PTR pLastPart
,
194 CK_ULONG_PTR pulLastPartLen
);
196 CK_RV
mock_unsupported_C_DigestInit (CK_SESSION_HANDLE hSession
,
197 CK_MECHANISM_PTR pMechanism
);
199 CK_RV
mock_unsupported_C_Digest (CK_SESSION_HANDLE hSession
,
203 CK_ULONG_PTR pulDigestLen
);
205 CK_RV
mock_unsupported_C_DigestUpdate (CK_SESSION_HANDLE hSession
,
209 CK_RV
mock_unsupported_C_DigestKey (CK_SESSION_HANDLE hSession
,
210 CK_OBJECT_HANDLE hKey
);
212 CK_RV
mock_unsupported_C_DigestFinal (CK_SESSION_HANDLE hSession
,
214 CK_ULONG_PTR pulDigestLen
);
216 CK_RV
mock_no_mechanisms_C_SignInit (CK_SESSION_HANDLE hSession
,
217 CK_MECHANISM_PTR pMechanism
,
218 CK_OBJECT_HANDLE hKey
);
220 CK_RV
mock_not_initialized_C_Sign (CK_SESSION_HANDLE hSession
,
223 CK_BYTE_PTR pSignature
,
224 CK_ULONG_PTR pulSignatureLen
);
226 CK_RV
mock_unsupported_C_SignUpdate (CK_SESSION_HANDLE hSession
,
230 CK_RV
mock_unsupported_C_SignFinal (CK_SESSION_HANDLE hSession
,
231 CK_BYTE_PTR pSignature
,
232 CK_ULONG_PTR pulSignatureLen
);
234 CK_RV
mock_unsupported_C_SignRecoverInit (CK_SESSION_HANDLE hSession
,
235 CK_MECHANISM_PTR pMechanism
,
236 CK_OBJECT_HANDLE hKey
);
238 CK_RV
mock_unsupported_C_SignRecover (CK_SESSION_HANDLE hSession
,
241 CK_BYTE_PTR pSignature
,
242 CK_ULONG_PTR pulSignatureLen
);
244 CK_RV
mock_no_mechanisms_C_VerifyInit (CK_SESSION_HANDLE hSession
,
245 CK_MECHANISM_PTR pMechanism
,
246 CK_OBJECT_HANDLE hKey
);
248 CK_RV
mock_not_initialized_C_Verify (CK_SESSION_HANDLE hSession
,
251 CK_BYTE_PTR pSignature
,
252 CK_ULONG ulSignatureLen
);
254 CK_RV
mock_unsupported_C_VerifyUpdate (CK_SESSION_HANDLE hSession
,
258 CK_RV
mock_unsupported_C_VerifyFinal (CK_SESSION_HANDLE hSession
,
259 CK_BYTE_PTR pSignature
,
260 CK_ULONG pulSignatureLen
);
262 CK_RV
mock_unsupported_C_VerifyRecoverInit (CK_SESSION_HANDLE hSession
,
263 CK_MECHANISM_PTR pMechanism
,
264 CK_OBJECT_HANDLE hKey
);
266 CK_RV
mock_unsupported_C_VerifyRecover (CK_SESSION_HANDLE hSession
,
267 CK_BYTE_PTR pSignature
,
268 CK_ULONG pulSignatureLen
,
270 CK_ULONG_PTR pulDataLen
);
272 CK_RV
mock_unsupported_C_DigestEncryptUpdate (CK_SESSION_HANDLE hSession
,
275 CK_BYTE_PTR pEncryptedPart
,
276 CK_ULONG_PTR ulEncryptedPartLen
);
278 CK_RV
mock_unsupported_C_DecryptDigestUpdate (CK_SESSION_HANDLE hSession
,
279 CK_BYTE_PTR pEncryptedPart
,
280 CK_ULONG ulEncryptedPartLen
,
282 CK_ULONG_PTR pulPartLen
);
284 CK_RV
mock_unsupported_C_SignEncryptUpdate (CK_SESSION_HANDLE hSession
,
287 CK_BYTE_PTR pEncryptedPart
,
288 CK_ULONG_PTR ulEncryptedPartLen
);
290 CK_RV
mock_unsupported_C_DecryptVerifyUpdate (CK_SESSION_HANDLE hSession
,
291 CK_BYTE_PTR pEncryptedPart
,
292 CK_ULONG ulEncryptedPartLen
,
294 CK_ULONG_PTR pulPartLen
);
296 CK_RV
mock_unsupported_C_GenerateKey (CK_SESSION_HANDLE hSession
,
297 CK_MECHANISM_PTR pMechanism
,
298 CK_ATTRIBUTE_PTR pTemplate
,
300 CK_OBJECT_HANDLE_PTR phKey
);
302 CK_RV
mock_no_mechanisms_C_GenerateKeyPair (CK_SESSION_HANDLE hSession
,
303 CK_MECHANISM_PTR pMechanism
,
304 CK_ATTRIBUTE_PTR pPublicKeyTemplate
,
305 CK_ULONG ulPublicKeyAttributeCount
,
306 CK_ATTRIBUTE_PTR pPrivateKeyTemplate
,
307 CK_ULONG ulPrivateKeyAttributeCount
,
308 CK_OBJECT_HANDLE_PTR phPublicKey
,
309 CK_OBJECT_HANDLE_PTR phPrivateKey
);
311 CK_RV
mock_no_mechanisms_C_WrapKey (CK_SESSION_HANDLE hSession
,
312 CK_MECHANISM_PTR pMechanism
,
313 CK_OBJECT_HANDLE hWrappingKey
,
314 CK_OBJECT_HANDLE hKey
,
315 CK_BYTE_PTR pWrappedKey
,
316 CK_ULONG_PTR pulWrappedKeyLen
);
318 CK_RV
mock_no_mechanisms_C_UnwrapKey (CK_SESSION_HANDLE hSession
,
319 CK_MECHANISM_PTR pMechanism
,
320 CK_OBJECT_HANDLE pUnwrappingKey
,
321 CK_BYTE_PTR pWrappedKey
,
322 CK_ULONG pulWrappedKeyLen
,
323 CK_ATTRIBUTE_PTR pTemplate
,
325 CK_OBJECT_HANDLE_PTR phKey
);
327 CK_RV
mock_no_mechanisms_C_DeriveKey (CK_SESSION_HANDLE hSession
,
328 CK_MECHANISM_PTR pMechanism
,
329 CK_OBJECT_HANDLE hBaseKey
,
330 CK_ATTRIBUTE_PTR pTemplate
,
332 CK_OBJECT_HANDLE_PTR phKey
);
334 CK_RV
mock_unsupported_C_SeedRandom (CK_SESSION_HANDLE hSession
,
338 CK_RV
mock_unsupported_C_GenerateRandom (CK_SESSION_HANDLE hSession
,
339 CK_BYTE_PTR pRandomData
,
340 CK_ULONG ulRandomLen
);
342 CK_OBJECT_HANDLE
mock_module_add_certificate (GcrCertificate
*cert
);
344 CK_OBJECT_HANDLE
mock_module_add_assertion (GcrCertificate
*cert
,
345 CK_X_ASSERTION_TYPE assertion_type
,
346 const gchar
*purpose
,
349 #define MOCK_SLOT_ONE_ID 1
350 #define MOCK_SLOT_ONE_URI "pkcs11:manufacturer=MOCK%20MANUFACTURER;serial=MOCK%20SERIAL"
352 #endif /* MOCK_MODULE_H */