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
22 #include <gck/pkcs11x.h>
24 #include <p11-kit/pkcs11.h>
29 extern CK_FUNCTION_LIST mock_default_functions;
31 CK_RV mock_C_Initialize (CK_VOID_PTR pInitArgs);
33 CK_RV mock_C_Finalize (CK_VOID_PTR pReserved);
35 CK_RV mock_C_GetInfo (CK_INFO_PTR pInfo);
37 CK_RV mock_C_GetFunctionList (CK_FUNCTION_LIST_PTR_PTR list);
39 CK_RV mock_C_GetSlotList (CK_BBOOL tokenPresent,
40 CK_SLOT_ID_PTR pSlotList,
41 CK_ULONG_PTR pulCount);
43 CK_RV mock_C_GetSlotInfo (CK_SLOT_ID slotID,
44 CK_SLOT_INFO_PTR pInfo);
46 CK_RV mock_C_GetTokenInfo (CK_SLOT_ID slotID,
47 CK_TOKEN_INFO_PTR pInfo);
49 CK_RV mock_C_GetMechanismList (CK_SLOT_ID slotID,
50 CK_MECHANISM_TYPE_PTR pMechanismList,
51 CK_ULONG_PTR pulCount);
53 CK_RV mock_C_GetMechanismInfo (CK_SLOT_ID slotID,
54 CK_MECHANISM_TYPE type,
55 CK_MECHANISM_INFO_PTR pInfo);
57 CK_RV mock_unsupported_C_InitToken (CK_SLOT_ID slotID,
60 CK_UTF8CHAR_PTR pLabel);
62 CK_RV mock_unsupported_C_WaitForSlotEvent (CK_FLAGS flags,
64 CK_VOID_PTR pReserved);
66 CK_RV mock_C_OpenSession (CK_SLOT_ID slotID,
68 CK_VOID_PTR pApplication,
70 CK_SESSION_HANDLE_PTR phSession);
72 CK_RV mock_C_CloseSession (CK_SESSION_HANDLE hSession);
74 CK_RV mock_C_CloseAllSessions (CK_SLOT_ID slotID);
76 CK_RV mock_C_GetFunctionStatus (CK_SESSION_HANDLE hSession);
78 CK_RV mock_C_CancelFunction (CK_SESSION_HANDLE hSession);
80 CK_RV mock_C_GetSessionInfo (CK_SESSION_HANDLE hSession,
81 CK_SESSION_INFO_PTR pInfo);
83 CK_RV mock_unsupported_C_InitPIN (CK_SESSION_HANDLE hSession,
87 CK_RV mock_unsupported_C_SetPIN (CK_SESSION_HANDLE hSession,
88 CK_UTF8CHAR_PTR pOldPin,
90 CK_UTF8CHAR_PTR pNewPin,
93 CK_RV mock_unsupported_C_GetOperationState (CK_SESSION_HANDLE hSession,
94 CK_BYTE_PTR pOperationState,
95 CK_ULONG_PTR pulOperationStateLen);
97 CK_RV mock_unsupported_C_SetOperationState (CK_SESSION_HANDLE hSession,
98 CK_BYTE_PTR pOperationState,
99 CK_ULONG ulOperationStateLen,
100 CK_OBJECT_HANDLE hEncryptionKey,
101 CK_OBJECT_HANDLE hAuthenticationKey);
103 CK_RV mock_unsupported_C_Login (CK_SESSION_HANDLE hSession,
104 CK_USER_TYPE userType,
105 CK_UTF8CHAR_PTR pPin,
108 CK_RV mock_unsupported_C_Logout (CK_SESSION_HANDLE hSession);
110 CK_RV mock_readonly_C_CreateObject (CK_SESSION_HANDLE hSession,
111 CK_ATTRIBUTE_PTR pTemplate,
113 CK_OBJECT_HANDLE_PTR phObject);
115 CK_RV mock_unsupported_C_CopyObject (CK_SESSION_HANDLE hSession,
116 CK_OBJECT_HANDLE hObject,
117 CK_ATTRIBUTE_PTR pTemplate,
119 CK_OBJECT_HANDLE_PTR phNewObject);
121 CK_RV mock_readonly_C_DestroyObject (CK_SESSION_HANDLE hSession,
122 CK_OBJECT_HANDLE hObject);
124 CK_RV mock_unsupported_C_GetObjectSize (CK_SESSION_HANDLE hSession,
125 CK_OBJECT_HANDLE hObject,
126 CK_ULONG_PTR pulSize);
128 CK_RV mock_C_GetAttributeValue (CK_SESSION_HANDLE hSession,
129 CK_OBJECT_HANDLE hObject,
130 CK_ATTRIBUTE_PTR pTemplate,
133 CK_RV mock_readonly_C_SetAttributeValue (CK_SESSION_HANDLE hSession,
134 CK_OBJECT_HANDLE hObject,
135 CK_ATTRIBUTE_PTR pTemplate,
138 CK_RV mock_C_FindObjectsInit (CK_SESSION_HANDLE hSession,
139 CK_ATTRIBUTE_PTR pTemplate,
142 CK_RV mock_C_FindObjects (CK_SESSION_HANDLE hSession,
143 CK_OBJECT_HANDLE_PTR phObject,
144 CK_ULONG ulMaxObjectCount,
145 CK_ULONG_PTR pulObjectCount);
147 CK_RV mock_fail_C_FindObjects (CK_SESSION_HANDLE hSession,
148 CK_OBJECT_HANDLE_PTR phObject,
149 CK_ULONG ulMaxObjectCount,
150 CK_ULONG_PTR pulObjectCount);
152 CK_RV mock_C_FindObjectsFinal (CK_SESSION_HANDLE hSession);
154 CK_RV mock_no_mechanisms_C_EncryptInit (CK_SESSION_HANDLE hSession,
155 CK_MECHANISM_PTR pMechanism,
156 CK_OBJECT_HANDLE hKey);
158 CK_RV mock_not_initialized_C_Encrypt (CK_SESSION_HANDLE hSession,
161 CK_BYTE_PTR pEncryptedData,
162 CK_ULONG_PTR pulEncryptedDataLen);
164 CK_RV mock_unsupported_C_EncryptUpdate (CK_SESSION_HANDLE hSession,
167 CK_BYTE_PTR pEncryptedPart,
168 CK_ULONG_PTR pulEncryptedPartLen);
170 CK_RV mock_unsupported_C_EncryptFinal (CK_SESSION_HANDLE hSession,
171 CK_BYTE_PTR pLastEncryptedPart,
172 CK_ULONG_PTR pulLastEncryptedPartLen);
174 CK_RV mock_no_mechanisms_C_DecryptInit (CK_SESSION_HANDLE hSession,
175 CK_MECHANISM_PTR pMechanism,
176 CK_OBJECT_HANDLE hKey);
178 CK_RV mock_not_initialized_C_Decrypt (CK_SESSION_HANDLE hSession,
179 CK_BYTE_PTR pEncryptedData,
180 CK_ULONG ulEncryptedDataLen,
182 CK_ULONG_PTR pulDataLen);
184 CK_RV mock_unsupported_C_DecryptUpdate (CK_SESSION_HANDLE hSession,
185 CK_BYTE_PTR pEncryptedPart,
186 CK_ULONG ulEncryptedPartLen,
188 CK_ULONG_PTR pulPartLen);
190 CK_RV mock_unsupported_C_DecryptFinal (CK_SESSION_HANDLE hSession,
191 CK_BYTE_PTR pLastPart,
192 CK_ULONG_PTR pulLastPartLen);
194 CK_RV mock_unsupported_C_DigestInit (CK_SESSION_HANDLE hSession,
195 CK_MECHANISM_PTR pMechanism);
197 CK_RV mock_unsupported_C_Digest (CK_SESSION_HANDLE hSession,
201 CK_ULONG_PTR pulDigestLen);
203 CK_RV mock_unsupported_C_DigestUpdate (CK_SESSION_HANDLE hSession,
207 CK_RV mock_unsupported_C_DigestKey (CK_SESSION_HANDLE hSession,
208 CK_OBJECT_HANDLE hKey);
210 CK_RV mock_unsupported_C_DigestFinal (CK_SESSION_HANDLE hSession,
212 CK_ULONG_PTR pulDigestLen);
214 CK_RV mock_no_mechanisms_C_SignInit (CK_SESSION_HANDLE hSession,
215 CK_MECHANISM_PTR pMechanism,
216 CK_OBJECT_HANDLE hKey);
218 CK_RV mock_not_initialized_C_Sign (CK_SESSION_HANDLE hSession,
221 CK_BYTE_PTR pSignature,
222 CK_ULONG_PTR pulSignatureLen);
224 CK_RV mock_unsupported_C_SignUpdate (CK_SESSION_HANDLE hSession,
228 CK_RV mock_unsupported_C_SignFinal (CK_SESSION_HANDLE hSession,
229 CK_BYTE_PTR pSignature,
230 CK_ULONG_PTR pulSignatureLen);
232 CK_RV mock_unsupported_C_SignRecoverInit (CK_SESSION_HANDLE hSession,
233 CK_MECHANISM_PTR pMechanism,
234 CK_OBJECT_HANDLE hKey);
236 CK_RV mock_unsupported_C_SignRecover (CK_SESSION_HANDLE hSession,
239 CK_BYTE_PTR pSignature,
240 CK_ULONG_PTR pulSignatureLen);
242 CK_RV mock_no_mechanisms_C_VerifyInit (CK_SESSION_HANDLE hSession,
243 CK_MECHANISM_PTR pMechanism,
244 CK_OBJECT_HANDLE hKey);
246 CK_RV mock_not_initialized_C_Verify (CK_SESSION_HANDLE hSession,
249 CK_BYTE_PTR pSignature,
250 CK_ULONG ulSignatureLen);
252 CK_RV mock_unsupported_C_VerifyUpdate (CK_SESSION_HANDLE hSession,
256 CK_RV mock_unsupported_C_VerifyFinal (CK_SESSION_HANDLE hSession,
257 CK_BYTE_PTR pSignature,
258 CK_ULONG pulSignatureLen);
260 CK_RV mock_unsupported_C_VerifyRecoverInit (CK_SESSION_HANDLE hSession,
261 CK_MECHANISM_PTR pMechanism,
262 CK_OBJECT_HANDLE hKey);
264 CK_RV mock_unsupported_C_VerifyRecover (CK_SESSION_HANDLE hSession,
265 CK_BYTE_PTR pSignature,
266 CK_ULONG pulSignatureLen,
268 CK_ULONG_PTR pulDataLen);
270 CK_RV mock_unsupported_C_DigestEncryptUpdate (CK_SESSION_HANDLE hSession,
273 CK_BYTE_PTR pEncryptedPart,
274 CK_ULONG_PTR ulEncryptedPartLen);
276 CK_RV mock_unsupported_C_DecryptDigestUpdate (CK_SESSION_HANDLE hSession,
277 CK_BYTE_PTR pEncryptedPart,
278 CK_ULONG ulEncryptedPartLen,
280 CK_ULONG_PTR pulPartLen);
282 CK_RV mock_unsupported_C_SignEncryptUpdate (CK_SESSION_HANDLE hSession,
285 CK_BYTE_PTR pEncryptedPart,
286 CK_ULONG_PTR ulEncryptedPartLen);
288 CK_RV mock_unsupported_C_DecryptVerifyUpdate (CK_SESSION_HANDLE hSession,
289 CK_BYTE_PTR pEncryptedPart,
290 CK_ULONG ulEncryptedPartLen,
292 CK_ULONG_PTR pulPartLen);
294 CK_RV mock_unsupported_C_GenerateKey (CK_SESSION_HANDLE hSession,
295 CK_MECHANISM_PTR pMechanism,
296 CK_ATTRIBUTE_PTR pTemplate,
298 CK_OBJECT_HANDLE_PTR phKey);
300 CK_RV mock_no_mechanisms_C_GenerateKeyPair (CK_SESSION_HANDLE hSession,
301 CK_MECHANISM_PTR pMechanism,
302 CK_ATTRIBUTE_PTR pPublicKeyTemplate,
303 CK_ULONG ulPublicKeyAttributeCount,
304 CK_ATTRIBUTE_PTR pPrivateKeyTemplate,
305 CK_ULONG ulPrivateKeyAttributeCount,
306 CK_OBJECT_HANDLE_PTR phPublicKey,
307 CK_OBJECT_HANDLE_PTR phPrivateKey);
309 CK_RV mock_no_mechanisms_C_WrapKey (CK_SESSION_HANDLE hSession,
310 CK_MECHANISM_PTR pMechanism,
311 CK_OBJECT_HANDLE hWrappingKey,
312 CK_OBJECT_HANDLE hKey,
313 CK_BYTE_PTR pWrappedKey,
314 CK_ULONG_PTR pulWrappedKeyLen);
316 CK_RV mock_no_mechanisms_C_UnwrapKey (CK_SESSION_HANDLE hSession,
317 CK_MECHANISM_PTR pMechanism,
318 CK_OBJECT_HANDLE pUnwrappingKey,
319 CK_BYTE_PTR pWrappedKey,
320 CK_ULONG pulWrappedKeyLen,
321 CK_ATTRIBUTE_PTR pTemplate,
323 CK_OBJECT_HANDLE_PTR phKey);
325 CK_RV mock_no_mechanisms_C_DeriveKey (CK_SESSION_HANDLE hSession,
326 CK_MECHANISM_PTR pMechanism,
327 CK_OBJECT_HANDLE hBaseKey,
328 CK_ATTRIBUTE_PTR pTemplate,
330 CK_OBJECT_HANDLE_PTR phKey);
332 CK_RV mock_unsupported_C_SeedRandom (CK_SESSION_HANDLE hSession,
336 CK_RV mock_unsupported_C_GenerateRandom (CK_SESSION_HANDLE hSession,
337 CK_BYTE_PTR pRandomData,
338 CK_ULONG ulRandomLen);
340 CK_OBJECT_HANDLE mock_module_add_certificate (GcrCertificate *cert);
342 CK_OBJECT_HANDLE mock_module_add_assertion (GcrCertificate *cert,
343 CK_X_ASSERTION_TYPE assertion_type,
344 const gchar *purpose,
347 #define MOCK_SLOT_ONE_ID 1
348 #define MOCK_SLOT_ONE_URI "pkcs11:manufacturer=MOCK%20MANUFACTURER;serial=MOCK%20SERIAL"
350 #endif /* MOCK_MODULE_H */