Mercurial > trustbridge > nss-cmake-static
comparison nss/lib/pk11wrap/debug_module.c @ 0:1e5118fa0cb1
This is NSS with a Cmake Buildsyste
To compile a static NSS library for Windows we've used the
Chromium-NSS fork and added a Cmake buildsystem to compile
it statically for Windows. See README.chromium for chromium
changes and README.trustbridge for our modifications.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Mon, 28 Jul 2014 10:47:06 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1e5118fa0cb1 |
---|---|
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 #include "prlog.h" | |
5 #include <stdio.h> | |
6 #include "cert.h" /* for CERT_DerNameToAscii & CERT_Hexify */ | |
7 | |
8 static PRLogModuleInfo *modlog = NULL; | |
9 | |
10 static CK_FUNCTION_LIST_PTR module_functions; | |
11 | |
12 static CK_FUNCTION_LIST debug_functions; | |
13 | |
14 static void print_final_statistics(void); | |
15 | |
16 #define STRING static const char | |
17 | |
18 STRING fmt_flags[] = " flags = 0x%x"; | |
19 STRING fmt_hKey[] = " hKey = 0x%x"; | |
20 STRING fmt_hObject[] = " hObject = 0x%x"; | |
21 STRING fmt_hSession[] = " hSession = 0x%x"; | |
22 STRING fmt_manufacturerID[] = " manufacturerID = \"%.32s\""; | |
23 STRING fmt_pData[] = " pData = 0x%p"; | |
24 STRING fmt_pDigest[] = " pDigest = 0x%p"; | |
25 STRING fmt_pEncryptedData[] = " pEncryptedData = 0x%p"; | |
26 STRING fmt_pEncryptedPart[] = " pEncryptedPart = 0x%p"; | |
27 STRING fmt_pInfo[] = " pInfo = 0x%p"; | |
28 STRING fmt_pMechanism[] = " pMechanism = 0x%p"; | |
29 STRING fmt_pOperationState[] = " pOperationState = 0x%p"; | |
30 STRING fmt_pPart[] = " pPart = 0x%p"; | |
31 STRING fmt_pPin[] = " pPin = 0x%p"; | |
32 STRING fmt_pSignature[] = " pSignature = 0x%p"; | |
33 STRING fmt_pTemplate[] = " pTemplate = 0x%p"; | |
34 STRING fmt_pWrappedKey[] = " pWrappedKey = 0x%p"; | |
35 STRING fmt_phKey[] = " phKey = 0x%p"; | |
36 STRING fmt_phObject[] = " phObject = 0x%p"; | |
37 STRING fmt_pulCount[] = " pulCount = 0x%p"; | |
38 STRING fmt_pulDataLen[] = " pulDataLen = 0x%p"; | |
39 STRING fmt_pulDigestLen[] = " pulDigestLen = 0x%p"; | |
40 STRING fmt_pulEncryptedPartLen[] = " pulEncryptedPartLen = 0x%p"; | |
41 STRING fmt_pulPartLen[] = " pulPartLen = 0x%p"; | |
42 STRING fmt_pulSignatureLen[] = " pulSignatureLen = 0x%p"; | |
43 STRING fmt_slotID[] = " slotID = 0x%x"; | |
44 STRING fmt_sphKey[] = " *phKey = 0x%x"; | |
45 STRING fmt_spulCount[] = " *pulCount = 0x%x"; | |
46 STRING fmt_spulDataLen[] = " *pulDataLen = 0x%x"; | |
47 STRING fmt_spulDigestLen[] = " *pulDigestLen = 0x%x"; | |
48 STRING fmt_spulEncryptedPartLen[] = " *pulEncryptedPartLen = 0x%x"; | |
49 STRING fmt_spulPartLen[] = " *pulPartLen = 0x%x"; | |
50 STRING fmt_spulSignatureLen[] = " *pulSignatureLen = 0x%x"; | |
51 STRING fmt_ulAttributeCount[] = " ulAttributeCount = %d"; | |
52 STRING fmt_ulCount[] = " ulCount = %d"; | |
53 STRING fmt_ulDataLen[] = " ulDataLen = %d"; | |
54 STRING fmt_ulEncryptedPartLen[] = " ulEncryptedPartLen = %d"; | |
55 STRING fmt_ulPartLen[] = " ulPartLen = %d"; | |
56 STRING fmt_ulPinLen[] = " ulPinLen = %d"; | |
57 STRING fmt_ulSignatureLen[] = " ulSignatureLen = %d"; | |
58 | |
59 STRING fmt_fwVersion[] = " firmware version: %d.%d"; | |
60 STRING fmt_hwVersion[] = " hardware version: %d.%d"; | |
61 STRING fmt_s_qsq_d[] = " %s = \"%s\" [%d]"; | |
62 STRING fmt_s_s_d[] = " %s = %s [%d]"; | |
63 STRING fmt_s_lu[] = " %s = %lu"; | |
64 STRING fmt_invalid_handle[] = " (CK_INVALID_HANDLE)"; | |
65 | |
66 | |
67 static void get_attr_type_str(CK_ATTRIBUTE_TYPE atype, char *str, int len) | |
68 { | |
69 #define CASE(attr) case attr: a = #attr ; break | |
70 | |
71 const char * a = NULL; | |
72 | |
73 switch (atype) { | |
74 CASE(CKA_CLASS); | |
75 CASE(CKA_TOKEN); | |
76 CASE(CKA_PRIVATE); | |
77 CASE(CKA_LABEL); | |
78 CASE(CKA_APPLICATION); | |
79 CASE(CKA_VALUE); | |
80 CASE(CKA_OBJECT_ID); | |
81 CASE(CKA_CERTIFICATE_TYPE); | |
82 CASE(CKA_CERTIFICATE_CATEGORY); | |
83 CASE(CKA_ISSUER); | |
84 CASE(CKA_SERIAL_NUMBER); | |
85 CASE(CKA_AC_ISSUER); | |
86 CASE(CKA_OWNER); | |
87 CASE(CKA_ATTR_TYPES); | |
88 CASE(CKA_TRUSTED); | |
89 CASE(CKA_KEY_TYPE); | |
90 CASE(CKA_SUBJECT); | |
91 CASE(CKA_ID); | |
92 CASE(CKA_SENSITIVE); | |
93 CASE(CKA_ENCRYPT); | |
94 CASE(CKA_DECRYPT); | |
95 CASE(CKA_WRAP); | |
96 CASE(CKA_UNWRAP); | |
97 CASE(CKA_SIGN); | |
98 CASE(CKA_SIGN_RECOVER); | |
99 CASE(CKA_VERIFY); | |
100 CASE(CKA_VERIFY_RECOVER); | |
101 CASE(CKA_DERIVE); | |
102 CASE(CKA_START_DATE); | |
103 CASE(CKA_END_DATE); | |
104 CASE(CKA_MODULUS); | |
105 CASE(CKA_MODULUS_BITS); | |
106 CASE(CKA_PUBLIC_EXPONENT); | |
107 CASE(CKA_PRIVATE_EXPONENT); | |
108 CASE(CKA_PRIME_1); | |
109 CASE(CKA_PRIME_2); | |
110 CASE(CKA_EXPONENT_1); | |
111 CASE(CKA_EXPONENT_2); | |
112 CASE(CKA_COEFFICIENT); | |
113 CASE(CKA_PRIME); | |
114 CASE(CKA_SUBPRIME); | |
115 CASE(CKA_BASE); | |
116 CASE(CKA_PRIME_BITS); | |
117 CASE(CKA_SUBPRIME_BITS); | |
118 CASE(CKA_VALUE_BITS); | |
119 CASE(CKA_VALUE_LEN); | |
120 CASE(CKA_EXTRACTABLE); | |
121 CASE(CKA_LOCAL); | |
122 CASE(CKA_NEVER_EXTRACTABLE); | |
123 CASE(CKA_ALWAYS_SENSITIVE); | |
124 CASE(CKA_KEY_GEN_MECHANISM); | |
125 CASE(CKA_MODIFIABLE); | |
126 CASE(CKA_ECDSA_PARAMS); | |
127 CASE(CKA_EC_POINT); | |
128 CASE(CKA_SECONDARY_AUTH); | |
129 CASE(CKA_AUTH_PIN_FLAGS); | |
130 CASE(CKA_HW_FEATURE_TYPE); | |
131 CASE(CKA_RESET_ON_INIT); | |
132 CASE(CKA_HAS_RESET); | |
133 CASE(CKA_VENDOR_DEFINED); | |
134 CASE(CKA_NSS_URL); | |
135 CASE(CKA_NSS_EMAIL); | |
136 CASE(CKA_NSS_SMIME_INFO); | |
137 CASE(CKA_NSS_SMIME_TIMESTAMP); | |
138 CASE(CKA_NSS_PKCS8_SALT); | |
139 CASE(CKA_NSS_PASSWORD_CHECK); | |
140 CASE(CKA_NSS_EXPIRES); | |
141 CASE(CKA_NSS_KRL); | |
142 CASE(CKA_NSS_PQG_COUNTER); | |
143 CASE(CKA_NSS_PQG_SEED); | |
144 CASE(CKA_NSS_PQG_H); | |
145 CASE(CKA_NSS_PQG_SEED_BITS); | |
146 CASE(CKA_TRUST); | |
147 CASE(CKA_TRUST_DIGITAL_SIGNATURE); | |
148 CASE(CKA_TRUST_NON_REPUDIATION); | |
149 CASE(CKA_TRUST_KEY_ENCIPHERMENT); | |
150 CASE(CKA_TRUST_DATA_ENCIPHERMENT); | |
151 CASE(CKA_TRUST_KEY_AGREEMENT); | |
152 CASE(CKA_TRUST_KEY_CERT_SIGN); | |
153 CASE(CKA_TRUST_CRL_SIGN); | |
154 CASE(CKA_TRUST_SERVER_AUTH); | |
155 CASE(CKA_TRUST_CLIENT_AUTH); | |
156 CASE(CKA_TRUST_CODE_SIGNING); | |
157 CASE(CKA_TRUST_EMAIL_PROTECTION); | |
158 CASE(CKA_TRUST_IPSEC_END_SYSTEM); | |
159 CASE(CKA_TRUST_IPSEC_TUNNEL); | |
160 CASE(CKA_TRUST_IPSEC_USER); | |
161 CASE(CKA_TRUST_TIME_STAMPING); | |
162 CASE(CKA_CERT_SHA1_HASH); | |
163 CASE(CKA_CERT_MD5_HASH); | |
164 CASE(CKA_NETSCAPE_DB); | |
165 CASE(CKA_NETSCAPE_TRUST); | |
166 default: break; | |
167 } | |
168 if (a) | |
169 PR_snprintf(str, len, "%s", a); | |
170 else | |
171 PR_snprintf(str, len, "0x%p", atype); | |
172 } | |
173 | |
174 static void get_obj_class(CK_OBJECT_CLASS objClass, char *str, int len) | |
175 { | |
176 | |
177 const char * a = NULL; | |
178 | |
179 switch (objClass) { | |
180 CASE(CKO_DATA); | |
181 CASE(CKO_CERTIFICATE); | |
182 CASE(CKO_PUBLIC_KEY); | |
183 CASE(CKO_PRIVATE_KEY); | |
184 CASE(CKO_SECRET_KEY); | |
185 CASE(CKO_HW_FEATURE); | |
186 CASE(CKO_DOMAIN_PARAMETERS); | |
187 CASE(CKO_NSS_CRL); | |
188 CASE(CKO_NSS_SMIME); | |
189 CASE(CKO_NSS_TRUST); | |
190 CASE(CKO_NSS_BUILTIN_ROOT_LIST); | |
191 default: break; | |
192 } | |
193 if (a) | |
194 PR_snprintf(str, len, "%s", a); | |
195 else | |
196 PR_snprintf(str, len, "0x%p", objClass); | |
197 } | |
198 | |
199 static void get_trust_val(CK_TRUST trust, char *str, int len) | |
200 { | |
201 const char * a = NULL; | |
202 | |
203 switch (trust) { | |
204 CASE(CKT_NSS_TRUSTED); | |
205 CASE(CKT_NSS_TRUSTED_DELEGATOR); | |
206 CASE(CKT_NSS_NOT_TRUSTED); | |
207 CASE(CKT_NSS_MUST_VERIFY_TRUST); | |
208 CASE(CKT_NSS_TRUST_UNKNOWN); | |
209 CASE(CKT_NSS_VALID_DELEGATOR); | |
210 default: break; | |
211 } | |
212 if (a) | |
213 PR_snprintf(str, len, "%s", a); | |
214 else | |
215 PR_snprintf(str, len, "0x%p", trust); | |
216 } | |
217 | |
218 static void log_rv(CK_RV rv) | |
219 { | |
220 const char * a = NULL; | |
221 | |
222 switch (rv) { | |
223 CASE(CKR_OK); | |
224 CASE(CKR_CANCEL); | |
225 CASE(CKR_HOST_MEMORY); | |
226 CASE(CKR_SLOT_ID_INVALID); | |
227 CASE(CKR_GENERAL_ERROR); | |
228 CASE(CKR_FUNCTION_FAILED); | |
229 CASE(CKR_ARGUMENTS_BAD); | |
230 CASE(CKR_NO_EVENT); | |
231 CASE(CKR_NEED_TO_CREATE_THREADS); | |
232 CASE(CKR_CANT_LOCK); | |
233 CASE(CKR_ATTRIBUTE_READ_ONLY); | |
234 CASE(CKR_ATTRIBUTE_SENSITIVE); | |
235 CASE(CKR_ATTRIBUTE_TYPE_INVALID); | |
236 CASE(CKR_ATTRIBUTE_VALUE_INVALID); | |
237 CASE(CKR_DATA_INVALID); | |
238 CASE(CKR_DATA_LEN_RANGE); | |
239 CASE(CKR_DEVICE_ERROR); | |
240 CASE(CKR_DEVICE_MEMORY); | |
241 CASE(CKR_DEVICE_REMOVED); | |
242 CASE(CKR_ENCRYPTED_DATA_INVALID); | |
243 CASE(CKR_ENCRYPTED_DATA_LEN_RANGE); | |
244 CASE(CKR_FUNCTION_CANCELED); | |
245 CASE(CKR_FUNCTION_NOT_PARALLEL); | |
246 CASE(CKR_FUNCTION_NOT_SUPPORTED); | |
247 CASE(CKR_KEY_HANDLE_INVALID); | |
248 CASE(CKR_KEY_SIZE_RANGE); | |
249 CASE(CKR_KEY_TYPE_INCONSISTENT); | |
250 CASE(CKR_KEY_NOT_NEEDED); | |
251 CASE(CKR_KEY_CHANGED); | |
252 CASE(CKR_KEY_NEEDED); | |
253 CASE(CKR_KEY_INDIGESTIBLE); | |
254 CASE(CKR_KEY_FUNCTION_NOT_PERMITTED); | |
255 CASE(CKR_KEY_NOT_WRAPPABLE); | |
256 CASE(CKR_KEY_UNEXTRACTABLE); | |
257 CASE(CKR_MECHANISM_INVALID); | |
258 CASE(CKR_MECHANISM_PARAM_INVALID); | |
259 CASE(CKR_OBJECT_HANDLE_INVALID); | |
260 CASE(CKR_OPERATION_ACTIVE); | |
261 CASE(CKR_OPERATION_NOT_INITIALIZED); | |
262 CASE(CKR_PIN_INCORRECT); | |
263 CASE(CKR_PIN_INVALID); | |
264 CASE(CKR_PIN_LEN_RANGE); | |
265 CASE(CKR_PIN_EXPIRED); | |
266 CASE(CKR_PIN_LOCKED); | |
267 CASE(CKR_SESSION_CLOSED); | |
268 CASE(CKR_SESSION_COUNT); | |
269 CASE(CKR_SESSION_HANDLE_INVALID); | |
270 CASE(CKR_SESSION_PARALLEL_NOT_SUPPORTED); | |
271 CASE(CKR_SESSION_READ_ONLY); | |
272 CASE(CKR_SESSION_EXISTS); | |
273 CASE(CKR_SESSION_READ_ONLY_EXISTS); | |
274 CASE(CKR_SESSION_READ_WRITE_SO_EXISTS); | |
275 CASE(CKR_SIGNATURE_INVALID); | |
276 CASE(CKR_SIGNATURE_LEN_RANGE); | |
277 CASE(CKR_TEMPLATE_INCOMPLETE); | |
278 CASE(CKR_TEMPLATE_INCONSISTENT); | |
279 CASE(CKR_TOKEN_NOT_PRESENT); | |
280 CASE(CKR_TOKEN_NOT_RECOGNIZED); | |
281 CASE(CKR_TOKEN_WRITE_PROTECTED); | |
282 CASE(CKR_UNWRAPPING_KEY_HANDLE_INVALID); | |
283 CASE(CKR_UNWRAPPING_KEY_SIZE_RANGE); | |
284 CASE(CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT); | |
285 CASE(CKR_USER_ALREADY_LOGGED_IN); | |
286 CASE(CKR_USER_NOT_LOGGED_IN); | |
287 CASE(CKR_USER_PIN_NOT_INITIALIZED); | |
288 CASE(CKR_USER_TYPE_INVALID); | |
289 CASE(CKR_USER_ANOTHER_ALREADY_LOGGED_IN); | |
290 CASE(CKR_USER_TOO_MANY_TYPES); | |
291 CASE(CKR_WRAPPED_KEY_INVALID); | |
292 CASE(CKR_WRAPPED_KEY_LEN_RANGE); | |
293 CASE(CKR_WRAPPING_KEY_HANDLE_INVALID); | |
294 CASE(CKR_WRAPPING_KEY_SIZE_RANGE); | |
295 CASE(CKR_WRAPPING_KEY_TYPE_INCONSISTENT); | |
296 CASE(CKR_RANDOM_SEED_NOT_SUPPORTED); | |
297 CASE(CKR_RANDOM_NO_RNG); | |
298 CASE(CKR_DOMAIN_PARAMS_INVALID); | |
299 CASE(CKR_BUFFER_TOO_SMALL); | |
300 CASE(CKR_SAVED_STATE_INVALID); | |
301 CASE(CKR_INFORMATION_SENSITIVE); | |
302 CASE(CKR_STATE_UNSAVEABLE); | |
303 CASE(CKR_CRYPTOKI_NOT_INITIALIZED); | |
304 CASE(CKR_CRYPTOKI_ALREADY_INITIALIZED); | |
305 CASE(CKR_MUTEX_BAD); | |
306 CASE(CKR_MUTEX_NOT_LOCKED); | |
307 CASE(CKR_FUNCTION_REJECTED); | |
308 CASE(CKR_KEY_PARAMS_INVALID); | |
309 default: break; | |
310 } | |
311 if (a) | |
312 PR_LOG(modlog, 1, (" rv = %s\n", a)); | |
313 else | |
314 PR_LOG(modlog, 1, (" rv = 0x%x\n", rv)); | |
315 } | |
316 | |
317 static void log_state(CK_STATE state) | |
318 { | |
319 const char * a = NULL; | |
320 | |
321 switch (state) { | |
322 CASE(CKS_RO_PUBLIC_SESSION); | |
323 CASE(CKS_RO_USER_FUNCTIONS); | |
324 CASE(CKS_RW_PUBLIC_SESSION); | |
325 CASE(CKS_RW_USER_FUNCTIONS); | |
326 CASE(CKS_RW_SO_FUNCTIONS); | |
327 default: break; | |
328 } | |
329 if (a) | |
330 PR_LOG(modlog, 1, (" state = %s\n", a)); | |
331 else | |
332 PR_LOG(modlog, 1, (" state = 0x%x\n", state)); | |
333 } | |
334 | |
335 static void log_handle(int level, const char * format, CK_ULONG handle) | |
336 { | |
337 char fmtBuf[80]; | |
338 if (handle) | |
339 PR_LOG(modlog, level, (format, handle)); | |
340 else { | |
341 PL_strncpyz(fmtBuf, format, sizeof fmtBuf); | |
342 PL_strcatn(fmtBuf, sizeof fmtBuf, fmt_invalid_handle); | |
343 PR_LOG(modlog, level, (fmtBuf, handle)); | |
344 } | |
345 } | |
346 | |
347 static void print_mechanism(CK_MECHANISM_PTR m) | |
348 { | |
349 | |
350 const char * a = NULL; | |
351 | |
352 switch (m->mechanism) { | |
353 CASE(CKM_AES_CBC); | |
354 CASE(CKM_AES_CBC_ENCRYPT_DATA); | |
355 CASE(CKM_AES_CBC_PAD); | |
356 CASE(CKM_AES_CCM); | |
357 CASE(CKM_AES_CTR); | |
358 CASE(CKM_AES_CTS); | |
359 CASE(CKM_AES_GCM); | |
360 CASE(CKM_AES_ECB); | |
361 CASE(CKM_AES_ECB_ENCRYPT_DATA); | |
362 CASE(CKM_AES_KEY_GEN); | |
363 CASE(CKM_AES_MAC); | |
364 CASE(CKM_AES_MAC_GENERAL); | |
365 CASE(CKM_CAMELLIA_CBC); | |
366 CASE(CKM_CAMELLIA_CBC_ENCRYPT_DATA); | |
367 CASE(CKM_CAMELLIA_CBC_PAD); | |
368 CASE(CKM_CAMELLIA_ECB); | |
369 CASE(CKM_CAMELLIA_ECB_ENCRYPT_DATA); | |
370 CASE(CKM_CAMELLIA_KEY_GEN); | |
371 CASE(CKM_CAMELLIA_MAC); | |
372 CASE(CKM_CAMELLIA_MAC_GENERAL); | |
373 CASE(CKM_CDMF_CBC); | |
374 CASE(CKM_CDMF_CBC_PAD); | |
375 CASE(CKM_CDMF_ECB); | |
376 CASE(CKM_CDMF_KEY_GEN); | |
377 CASE(CKM_CDMF_MAC); | |
378 CASE(CKM_CDMF_MAC_GENERAL); | |
379 CASE(CKM_CMS_SIG); | |
380 CASE(CKM_CONCATENATE_BASE_AND_DATA); | |
381 CASE(CKM_CONCATENATE_BASE_AND_KEY); | |
382 CASE(CKM_CONCATENATE_DATA_AND_BASE); | |
383 CASE(CKM_DES2_KEY_GEN); | |
384 CASE(CKM_DES3_CBC); | |
385 CASE(CKM_DES3_CBC_ENCRYPT_DATA); | |
386 CASE(CKM_DES3_CBC_PAD); | |
387 CASE(CKM_DES3_ECB); | |
388 CASE(CKM_DES3_ECB_ENCRYPT_DATA); | |
389 CASE(CKM_DES3_KEY_GEN); | |
390 CASE(CKM_DES3_MAC); | |
391 CASE(CKM_DES3_MAC_GENERAL); | |
392 CASE(CKM_DES_CBC); | |
393 CASE(CKM_DES_CBC_ENCRYPT_DATA); | |
394 CASE(CKM_DES_CBC_PAD); | |
395 CASE(CKM_DES_CFB64); | |
396 CASE(CKM_DES_CFB8); | |
397 CASE(CKM_DES_ECB); | |
398 CASE(CKM_DES_ECB_ENCRYPT_DATA); | |
399 CASE(CKM_DES_KEY_GEN); | |
400 CASE(CKM_DES_MAC); | |
401 CASE(CKM_DES_MAC_GENERAL); | |
402 CASE(CKM_DES_OFB64); | |
403 CASE(CKM_DES_OFB8); | |
404 CASE(CKM_DH_PKCS_DERIVE); | |
405 CASE(CKM_DH_PKCS_KEY_PAIR_GEN); | |
406 CASE(CKM_DH_PKCS_PARAMETER_GEN); | |
407 CASE(CKM_DSA); | |
408 CASE(CKM_DSA_KEY_PAIR_GEN); | |
409 CASE(CKM_DSA_PARAMETER_GEN); | |
410 CASE(CKM_DSA_SHA1); | |
411 CASE(CKM_ECDH1_COFACTOR_DERIVE); | |
412 CASE(CKM_ECDH1_DERIVE); | |
413 CASE(CKM_ECDSA); | |
414 CASE(CKM_ECDSA_SHA1); | |
415 CASE(CKM_ECMQV_DERIVE); | |
416 CASE(CKM_EC_KEY_PAIR_GEN); /* also CASE(CKM_ECDSA_KEY_PAIR_GEN); */ | |
417 CASE(CKM_EXTRACT_KEY_FROM_KEY); | |
418 CASE(CKM_FASTHASH); | |
419 CASE(CKM_FORTEZZA_TIMESTAMP); | |
420 CASE(CKM_GENERIC_SECRET_KEY_GEN); | |
421 CASE(CKM_IDEA_CBC); | |
422 CASE(CKM_IDEA_CBC_PAD); | |
423 CASE(CKM_IDEA_ECB); | |
424 CASE(CKM_IDEA_KEY_GEN); | |
425 CASE(CKM_IDEA_MAC); | |
426 CASE(CKM_IDEA_MAC_GENERAL); | |
427 CASE(CKM_KEA_KEY_DERIVE); | |
428 CASE(CKM_KEA_KEY_PAIR_GEN); | |
429 CASE(CKM_KEY_WRAP_LYNKS); | |
430 CASE(CKM_KEY_WRAP_SET_OAEP); | |
431 CASE(CKM_MD2); | |
432 CASE(CKM_MD2_HMAC); | |
433 CASE(CKM_MD2_HMAC_GENERAL); | |
434 CASE(CKM_MD2_KEY_DERIVATION); | |
435 CASE(CKM_MD2_RSA_PKCS); | |
436 CASE(CKM_MD5); | |
437 CASE(CKM_MD5_HMAC); | |
438 CASE(CKM_MD5_HMAC_GENERAL); | |
439 CASE(CKM_MD5_KEY_DERIVATION); | |
440 CASE(CKM_MD5_RSA_PKCS); | |
441 CASE(CKM_PBA_SHA1_WITH_SHA1_HMAC); | |
442 CASE(CKM_PBE_MD2_DES_CBC); | |
443 CASE(CKM_PBE_MD5_DES_CBC); | |
444 CASE(CKM_PBE_SHA1_DES2_EDE_CBC); | |
445 CASE(CKM_PBE_SHA1_DES3_EDE_CBC); | |
446 CASE(CKM_PBE_SHA1_RC2_128_CBC); | |
447 CASE(CKM_PBE_SHA1_RC2_40_CBC); | |
448 CASE(CKM_PBE_SHA1_RC4_128); | |
449 CASE(CKM_PBE_SHA1_RC4_40); | |
450 CASE(CKM_PKCS5_PBKD2); | |
451 CASE(CKM_RC2_CBC); | |
452 CASE(CKM_RC2_CBC_PAD); | |
453 CASE(CKM_RC2_ECB); | |
454 CASE(CKM_RC2_KEY_GEN); | |
455 CASE(CKM_RC2_MAC); | |
456 CASE(CKM_RC2_MAC_GENERAL); | |
457 CASE(CKM_RC4); | |
458 CASE(CKM_RC4_KEY_GEN); | |
459 CASE(CKM_RC5_CBC); | |
460 CASE(CKM_RC5_CBC_PAD); | |
461 CASE(CKM_RC5_ECB); | |
462 CASE(CKM_RC5_KEY_GEN); | |
463 CASE(CKM_RC5_MAC); | |
464 CASE(CKM_RC5_MAC_GENERAL); | |
465 CASE(CKM_RIPEMD128); | |
466 CASE(CKM_RIPEMD128_HMAC); | |
467 CASE(CKM_RIPEMD128_HMAC_GENERAL); | |
468 CASE(CKM_RIPEMD128_RSA_PKCS); | |
469 CASE(CKM_RIPEMD160); | |
470 CASE(CKM_RIPEMD160_HMAC); | |
471 CASE(CKM_RIPEMD160_HMAC_GENERAL); | |
472 CASE(CKM_RIPEMD160_RSA_PKCS); | |
473 CASE(CKM_RSA_9796); | |
474 CASE(CKM_RSA_PKCS); | |
475 CASE(CKM_RSA_PKCS_KEY_PAIR_GEN); | |
476 CASE(CKM_RSA_PKCS_OAEP); | |
477 CASE(CKM_RSA_PKCS_PSS); | |
478 CASE(CKM_RSA_X9_31); | |
479 CASE(CKM_RSA_X9_31_KEY_PAIR_GEN); | |
480 CASE(CKM_RSA_X_509); | |
481 CASE(CKM_SHA1_KEY_DERIVATION); | |
482 CASE(CKM_SHA1_RSA_PKCS); | |
483 CASE(CKM_SHA1_RSA_PKCS_PSS); | |
484 CASE(CKM_SHA1_RSA_X9_31); | |
485 CASE(CKM_SHA224); | |
486 CASE(CKM_SHA224_HMAC); | |
487 CASE(CKM_SHA224_HMAC_GENERAL); | |
488 CASE(CKM_SHA224_KEY_DERIVATION); | |
489 CASE(CKM_SHA224_RSA_PKCS); | |
490 CASE(CKM_SHA224_RSA_PKCS_PSS); | |
491 CASE(CKM_SHA256); | |
492 CASE(CKM_SHA256_HMAC); | |
493 CASE(CKM_SHA256_HMAC_GENERAL); | |
494 CASE(CKM_SHA256_KEY_DERIVATION); | |
495 CASE(CKM_SHA256_RSA_PKCS); | |
496 CASE(CKM_SHA256_RSA_PKCS_PSS); | |
497 CASE(CKM_SHA384); | |
498 CASE(CKM_SHA384_HMAC); | |
499 CASE(CKM_SHA384_HMAC_GENERAL); | |
500 CASE(CKM_SHA384_KEY_DERIVATION); | |
501 CASE(CKM_SHA384_RSA_PKCS); | |
502 CASE(CKM_SHA384_RSA_PKCS_PSS); | |
503 CASE(CKM_SHA512); | |
504 CASE(CKM_SHA512_HMAC); | |
505 CASE(CKM_SHA512_HMAC_GENERAL); | |
506 CASE(CKM_SHA512_KEY_DERIVATION); | |
507 CASE(CKM_SHA512_RSA_PKCS); | |
508 CASE(CKM_SHA512_RSA_PKCS_PSS); | |
509 CASE(CKM_SHA_1); | |
510 CASE(CKM_SHA_1_HMAC); | |
511 CASE(CKM_SHA_1_HMAC_GENERAL); | |
512 CASE(CKM_SKIPJACK_CBC64); | |
513 CASE(CKM_SKIPJACK_CFB16); | |
514 CASE(CKM_SKIPJACK_CFB32); | |
515 CASE(CKM_SKIPJACK_CFB64); | |
516 CASE(CKM_SKIPJACK_CFB8); | |
517 CASE(CKM_SKIPJACK_ECB64); | |
518 CASE(CKM_SKIPJACK_KEY_GEN); | |
519 CASE(CKM_SKIPJACK_OFB64); | |
520 CASE(CKM_SKIPJACK_PRIVATE_WRAP); | |
521 CASE(CKM_SKIPJACK_RELAYX); | |
522 CASE(CKM_SKIPJACK_WRAP); | |
523 CASE(CKM_SSL3_KEY_AND_MAC_DERIVE); | |
524 CASE(CKM_SSL3_MASTER_KEY_DERIVE); | |
525 CASE(CKM_SSL3_MASTER_KEY_DERIVE_DH); | |
526 CASE(CKM_SSL3_MD5_MAC); | |
527 CASE(CKM_SSL3_PRE_MASTER_KEY_GEN); | |
528 CASE(CKM_SSL3_SHA1_MAC); | |
529 CASE(CKM_TLS_KEY_AND_MAC_DERIVE); | |
530 CASE(CKM_TLS_MASTER_KEY_DERIVE); | |
531 CASE(CKM_TLS_MASTER_KEY_DERIVE_DH); | |
532 CASE(CKM_TLS_PRE_MASTER_KEY_GEN); | |
533 CASE(CKM_TLS_PRF); | |
534 CASE(CKM_TWOFISH_CBC); | |
535 CASE(CKM_TWOFISH_KEY_GEN); | |
536 CASE(CKM_X9_42_DH_DERIVE); | |
537 CASE(CKM_X9_42_DH_HYBRID_DERIVE); | |
538 CASE(CKM_X9_42_DH_KEY_PAIR_GEN); | |
539 CASE(CKM_X9_42_DH_PARAMETER_GEN); | |
540 CASE(CKM_X9_42_MQV_DERIVE); | |
541 CASE(CKM_XOR_BASE_AND_DATA); | |
542 default: break; | |
543 } | |
544 if (a) | |
545 PR_LOG(modlog, 4, (" mechanism = %s", a)); | |
546 else | |
547 PR_LOG(modlog, 4, (" mechanism = 0x%p", m->mechanism)); | |
548 } | |
549 | |
550 static void get_key_type(CK_KEY_TYPE keyType, char *str, int len) | |
551 { | |
552 | |
553 const char * a = NULL; | |
554 | |
555 switch (keyType) { | |
556 CASE(CKK_AES); | |
557 CASE(CKK_CAMELLIA); | |
558 CASE(CKK_CDMF); | |
559 CASE(CKK_DES); | |
560 CASE(CKK_DES2); | |
561 CASE(CKK_DES3); | |
562 CASE(CKK_DH); | |
563 CASE(CKK_DSA); | |
564 CASE(CKK_EC); /* also CASE(CKK_ECDSA); */ | |
565 CASE(CKK_GENERIC_SECRET); | |
566 CASE(CKK_IDEA); | |
567 CASE(CKK_INVALID_KEY_TYPE); | |
568 CASE(CKK_KEA); | |
569 CASE(CKK_RC2); | |
570 CASE(CKK_RC4); | |
571 CASE(CKK_RC5); | |
572 CASE(CKK_RSA); | |
573 CASE(CKK_SKIPJACK); | |
574 CASE(CKK_TWOFISH); | |
575 CASE(CKK_X9_42_DH); | |
576 default: break; | |
577 } | |
578 if (a) | |
579 PR_snprintf(str, len, "%s", a); | |
580 else | |
581 PR_snprintf(str, len, "0x%p", keyType); | |
582 } | |
583 | |
584 static void print_attr_value(CK_ATTRIBUTE_PTR attr) | |
585 { | |
586 char atype[48]; | |
587 char valstr[49]; | |
588 int len; | |
589 | |
590 get_attr_type_str(attr->type, atype, sizeof atype); | |
591 switch (attr->type) { | |
592 case CKA_ALWAYS_SENSITIVE: | |
593 case CKA_DECRYPT: | |
594 case CKA_DERIVE: | |
595 case CKA_ENCRYPT: | |
596 case CKA_EXTRACTABLE: | |
597 case CKA_LOCAL: | |
598 case CKA_MODIFIABLE: | |
599 case CKA_NEVER_EXTRACTABLE: | |
600 case CKA_PRIVATE: | |
601 case CKA_SENSITIVE: | |
602 case CKA_SIGN: | |
603 case CKA_SIGN_RECOVER: | |
604 case CKA_TOKEN: | |
605 case CKA_UNWRAP: | |
606 case CKA_VERIFY: | |
607 case CKA_VERIFY_RECOVER: | |
608 case CKA_WRAP: | |
609 if (attr->ulValueLen > 0 && attr->pValue) { | |
610 CK_BBOOL tf = *((CK_BBOOL *)attr->pValue); | |
611 PR_LOG(modlog, 4, (fmt_s_s_d, | |
612 atype, tf ? "CK_TRUE" : "CK_FALSE", attr->ulValueLen)); | |
613 break; | |
614 } | |
615 case CKA_CLASS: | |
616 if (attr->ulValueLen > 0 && attr->pValue) { | |
617 CK_OBJECT_CLASS objClass = *((CK_OBJECT_CLASS *)attr->pValue); | |
618 get_obj_class(objClass, valstr, sizeof valstr); | |
619 PR_LOG(modlog, 4, (fmt_s_s_d, | |
620 atype, valstr, attr->ulValueLen)); | |
621 break; | |
622 } | |
623 case CKA_TRUST_CLIENT_AUTH: | |
624 case CKA_TRUST_CODE_SIGNING: | |
625 case CKA_TRUST_EMAIL_PROTECTION: | |
626 case CKA_TRUST_SERVER_AUTH: | |
627 if (attr->ulValueLen > 0 && attr->pValue) { | |
628 CK_TRUST trust = *((CK_TRUST *)attr->pValue); | |
629 get_trust_val(trust, valstr, sizeof valstr); | |
630 PR_LOG(modlog, 4, (fmt_s_s_d, | |
631 atype, valstr, attr->ulValueLen)); | |
632 break; | |
633 } | |
634 case CKA_KEY_TYPE: | |
635 if (attr->ulValueLen > 0 && attr->pValue) { | |
636 CK_KEY_TYPE keyType = *((CK_KEY_TYPE *)attr->pValue); | |
637 get_key_type(keyType, valstr, sizeof valstr); | |
638 PR_LOG(modlog, 4, (fmt_s_s_d, | |
639 atype, valstr, attr->ulValueLen)); | |
640 break; | |
641 } | |
642 case CKA_PIXEL_X: | |
643 case CKA_PIXEL_Y: | |
644 case CKA_RESOLUTION: | |
645 case CKA_CHAR_ROWS: | |
646 case CKA_CHAR_COLUMNS: | |
647 case CKA_BITS_PER_PIXEL: | |
648 case CKA_CERTIFICATE_CATEGORY: /* should print as enum/string */ | |
649 case CKA_JAVA_MIDP_SECURITY_DOMAIN: /* should print as enum/string */ | |
650 case CKA_MODULUS_BITS: | |
651 case CKA_PRIME_BITS: | |
652 case CKA_SUBPRIME_BITS: | |
653 case CKA_VALUE_BITS: | |
654 case CKA_VALUE_LEN: | |
655 if (attr->ulValueLen > 0 && attr->pValue) { | |
656 CK_ULONG valueLen = *((CK_ULONG *)attr->pValue); | |
657 /* XXX check for the special value CK_UNAVAILABLE_INFORMATION */ | |
658 PR_LOG(modlog, 4, (fmt_s_lu, atype, (PRUint32)valueLen)); | |
659 break; | |
660 } | |
661 case CKA_LABEL: | |
662 case CKA_NSS_EMAIL: | |
663 case CKA_NSS_URL: | |
664 if (attr->ulValueLen > 0 && attr->pValue) { | |
665 len = PR_MIN(attr->ulValueLen + 1, sizeof valstr); | |
666 PR_snprintf(valstr, len, "%s", attr->pValue); | |
667 PR_LOG(modlog, 4, (fmt_s_qsq_d, | |
668 atype, valstr, attr->ulValueLen)); | |
669 break; | |
670 } | |
671 case CKA_ISSUER: | |
672 case CKA_SUBJECT: | |
673 if (attr->ulValueLen > 0 && attr->pValue) { | |
674 char * asciiName; | |
675 SECItem derName; | |
676 derName.type = siDERNameBuffer; | |
677 derName.data = attr->pValue; | |
678 derName.len = attr->ulValueLen; | |
679 asciiName = CERT_DerNameToAscii(&derName); | |
680 if (asciiName) { | |
681 PR_LOG(modlog, 4, (fmt_s_s_d, | |
682 atype, asciiName, attr->ulValueLen)); | |
683 PORT_Free(asciiName); | |
684 break; | |
685 } | |
686 /* else treat like a binary buffer */ | |
687 goto binary_buffer; | |
688 } | |
689 case CKA_ID: | |
690 if (attr->ulValueLen > 0 && attr->pValue) { | |
691 unsigned char * pV = attr->pValue; | |
692 for (len = (int)attr->ulValueLen; len > 0; --len) { | |
693 unsigned int ch = *pV++; | |
694 if (ch >= 0x20 && ch < 0x7f) | |
695 continue; | |
696 if (!ch && len == 1) /* will ignore NUL if last character */ | |
697 continue; | |
698 break; | |
699 } | |
700 if (!len) { /* entire string is printable */ | |
701 len = PR_MIN(attr->ulValueLen + 1, sizeof valstr); | |
702 PR_snprintf(valstr, len, "%s", attr->pValue); | |
703 PR_LOG(modlog, 4, (fmt_s_qsq_d, | |
704 atype, valstr, attr->ulValueLen)); | |
705 break; | |
706 } | |
707 /* else fall through and treat like a binary buffer */ | |
708 } | |
709 binary_buffer: | |
710 case CKA_SERIAL_NUMBER: | |
711 default: | |
712 if (attr->ulValueLen > 0 && attr->pValue) { | |
713 char * hexBuf; | |
714 SECItem attrBuf; | |
715 attrBuf.type = siDERNameBuffer; | |
716 attrBuf.data = attr->pValue; | |
717 attrBuf.len = PR_MIN(attr->ulValueLen, (sizeof valstr)/2); | |
718 | |
719 hexBuf = CERT_Hexify(&attrBuf, PR_FALSE); | |
720 if (hexBuf) { | |
721 PR_LOG(modlog, 4, (fmt_s_s_d, | |
722 atype, hexBuf, attr->ulValueLen)); | |
723 PORT_Free(hexBuf); | |
724 break; | |
725 } | |
726 /* else fall through and show only the address. :( */ | |
727 } | |
728 PR_LOG(modlog, 4, (" %s = [0x%p] [%d]", | |
729 atype, attr->pValue, attr->ulValueLen)); | |
730 break; | |
731 } | |
732 } | |
733 | |
734 static void print_template(CK_ATTRIBUTE_PTR templ, CK_ULONG tlen) | |
735 { | |
736 CK_ULONG i; | |
737 for (i=0; i<tlen; i++) { | |
738 print_attr_value(&templ[i]); | |
739 } | |
740 } | |
741 | |
742 struct nssdbg_prof_str { | |
743 PRUint32 time; | |
744 PRUint32 calls; | |
745 char *function; | |
746 }; | |
747 | |
748 #define NSSDBG_DEFINE(func) { 0, 0, #func } | |
749 | |
750 struct nssdbg_prof_str nssdbg_prof_data[] = { | |
751 #define FUNC_C_INITIALIZE 0 | |
752 NSSDBG_DEFINE(C_Initialize), | |
753 #define FUNC_C_FINALIZE 1 | |
754 NSSDBG_DEFINE(C_Finalize), | |
755 #define FUNC_C_GETINFO 2 | |
756 NSSDBG_DEFINE(C_GetInfo), | |
757 #define FUNC_C_GETFUNCITONLIST 3 | |
758 NSSDBG_DEFINE(C_GetFunctionList), | |
759 #define FUNC_C_GETSLOTLIST 4 | |
760 NSSDBG_DEFINE(C_GetSlotList), | |
761 #define FUNC_C_GETSLOTINFO 5 | |
762 NSSDBG_DEFINE(C_GetSlotInfo), | |
763 #define FUNC_C_GETTOKENINFO 6 | |
764 NSSDBG_DEFINE(C_GetTokenInfo), | |
765 #define FUNC_C_GETMECHANISMLIST 7 | |
766 NSSDBG_DEFINE(C_GetMechanismList), | |
767 #define FUNC_C_GETMECHANISMINFO 8 | |
768 NSSDBG_DEFINE(C_GetMechanismInfo), | |
769 #define FUNC_C_INITTOKEN 9 | |
770 NSSDBG_DEFINE(C_InitToken), | |
771 #define FUNC_C_INITPIN 10 | |
772 NSSDBG_DEFINE(C_InitPIN), | |
773 #define FUNC_C_SETPIN 11 | |
774 NSSDBG_DEFINE(C_SetPIN), | |
775 #define FUNC_C_OPENSESSION 12 | |
776 NSSDBG_DEFINE(C_OpenSession), | |
777 #define FUNC_C_CLOSESESSION 13 | |
778 NSSDBG_DEFINE(C_CloseSession), | |
779 #define FUNC_C_CLOSEALLSESSIONS 14 | |
780 NSSDBG_DEFINE(C_CloseAllSessions), | |
781 #define FUNC_C_GETSESSIONINFO 15 | |
782 NSSDBG_DEFINE(C_GetSessionInfo), | |
783 #define FUNC_C_GETOPERATIONSTATE 16 | |
784 NSSDBG_DEFINE(C_GetOperationState), | |
785 #define FUNC_C_SETOPERATIONSTATE 17 | |
786 NSSDBG_DEFINE(C_SetOperationState), | |
787 #define FUNC_C_LOGIN 18 | |
788 NSSDBG_DEFINE(C_Login), | |
789 #define FUNC_C_LOGOUT 19 | |
790 NSSDBG_DEFINE(C_Logout), | |
791 #define FUNC_C_CREATEOBJECT 20 | |
792 NSSDBG_DEFINE(C_CreateObject), | |
793 #define FUNC_C_COPYOBJECT 21 | |
794 NSSDBG_DEFINE(C_CopyObject), | |
795 #define FUNC_C_DESTROYOBJECT 22 | |
796 NSSDBG_DEFINE(C_DestroyObject), | |
797 #define FUNC_C_GETOBJECTSIZE 23 | |
798 NSSDBG_DEFINE(C_GetObjectSize), | |
799 #define FUNC_C_GETATTRIBUTEVALUE 24 | |
800 NSSDBG_DEFINE(C_GetAttributeValue), | |
801 #define FUNC_C_SETATTRIBUTEVALUE 25 | |
802 NSSDBG_DEFINE(C_SetAttributeValue), | |
803 #define FUNC_C_FINDOBJECTSINIT 26 | |
804 NSSDBG_DEFINE(C_FindObjectsInit), | |
805 #define FUNC_C_FINDOBJECTS 27 | |
806 NSSDBG_DEFINE(C_FindObjects), | |
807 #define FUNC_C_FINDOBJECTSFINAL 28 | |
808 NSSDBG_DEFINE(C_FindObjectsFinal), | |
809 #define FUNC_C_ENCRYPTINIT 29 | |
810 NSSDBG_DEFINE(C_EncryptInit), | |
811 #define FUNC_C_ENCRYPT 30 | |
812 NSSDBG_DEFINE(C_Encrypt), | |
813 #define FUNC_C_ENCRYPTUPDATE 31 | |
814 NSSDBG_DEFINE(C_EncryptUpdate), | |
815 #define FUNC_C_ENCRYPTFINAL 32 | |
816 NSSDBG_DEFINE(C_EncryptFinal), | |
817 #define FUNC_C_DECRYPTINIT 33 | |
818 NSSDBG_DEFINE(C_DecryptInit), | |
819 #define FUNC_C_DECRYPT 34 | |
820 NSSDBG_DEFINE(C_Decrypt), | |
821 #define FUNC_C_DECRYPTUPDATE 35 | |
822 NSSDBG_DEFINE(C_DecryptUpdate), | |
823 #define FUNC_C_DECRYPTFINAL 36 | |
824 NSSDBG_DEFINE(C_DecryptFinal), | |
825 #define FUNC_C_DIGESTINIT 37 | |
826 NSSDBG_DEFINE(C_DigestInit), | |
827 #define FUNC_C_DIGEST 38 | |
828 NSSDBG_DEFINE(C_Digest), | |
829 #define FUNC_C_DIGESTUPDATE 39 | |
830 NSSDBG_DEFINE(C_DigestUpdate), | |
831 #define FUNC_C_DIGESTKEY 40 | |
832 NSSDBG_DEFINE(C_DigestKey), | |
833 #define FUNC_C_DIGESTFINAL 41 | |
834 NSSDBG_DEFINE(C_DigestFinal), | |
835 #define FUNC_C_SIGNINIT 42 | |
836 NSSDBG_DEFINE(C_SignInit), | |
837 #define FUNC_C_SIGN 43 | |
838 NSSDBG_DEFINE(C_Sign), | |
839 #define FUNC_C_SIGNUPDATE 44 | |
840 NSSDBG_DEFINE(C_SignUpdate), | |
841 #define FUNC_C_SIGNFINAL 45 | |
842 NSSDBG_DEFINE(C_SignFinal), | |
843 #define FUNC_C_SIGNRECOVERINIT 46 | |
844 NSSDBG_DEFINE(C_SignRecoverInit), | |
845 #define FUNC_C_SIGNRECOVER 47 | |
846 NSSDBG_DEFINE(C_SignRecover), | |
847 #define FUNC_C_VERIFYINIT 48 | |
848 NSSDBG_DEFINE(C_VerifyInit), | |
849 #define FUNC_C_VERIFY 49 | |
850 NSSDBG_DEFINE(C_Verify), | |
851 #define FUNC_C_VERIFYUPDATE 50 | |
852 NSSDBG_DEFINE(C_VerifyUpdate), | |
853 #define FUNC_C_VERIFYFINAL 51 | |
854 NSSDBG_DEFINE(C_VerifyFinal), | |
855 #define FUNC_C_VERIFYRECOVERINIT 52 | |
856 NSSDBG_DEFINE(C_VerifyRecoverInit), | |
857 #define FUNC_C_VERIFYRECOVER 53 | |
858 NSSDBG_DEFINE(C_VerifyRecover), | |
859 #define FUNC_C_DIGESTENCRYPTUPDATE 54 | |
860 NSSDBG_DEFINE(C_DigestEncryptUpdate), | |
861 #define FUNC_C_DECRYPTDIGESTUPDATE 55 | |
862 NSSDBG_DEFINE(C_DecryptDigestUpdate), | |
863 #define FUNC_C_SIGNENCRYPTUPDATE 56 | |
864 NSSDBG_DEFINE(C_SignEncryptUpdate), | |
865 #define FUNC_C_DECRYPTVERIFYUPDATE 57 | |
866 NSSDBG_DEFINE(C_DecryptVerifyUpdate), | |
867 #define FUNC_C_GENERATEKEY 58 | |
868 NSSDBG_DEFINE(C_GenerateKey), | |
869 #define FUNC_C_GENERATEKEYPAIR 59 | |
870 NSSDBG_DEFINE(C_GenerateKeyPair), | |
871 #define FUNC_C_WRAPKEY 60 | |
872 NSSDBG_DEFINE(C_WrapKey), | |
873 #define FUNC_C_UNWRAPKEY 61 | |
874 NSSDBG_DEFINE(C_UnWrapKey), | |
875 #define FUNC_C_DERIVEKEY 62 | |
876 NSSDBG_DEFINE(C_DeriveKey), | |
877 #define FUNC_C_SEEDRANDOM 63 | |
878 NSSDBG_DEFINE(C_SeedRandom), | |
879 #define FUNC_C_GENERATERANDOM 64 | |
880 NSSDBG_DEFINE(C_GenerateRandom), | |
881 #define FUNC_C_GETFUNCTIONSTATUS 65 | |
882 NSSDBG_DEFINE(C_GetFunctionStatus), | |
883 #define FUNC_C_CANCELFUNCTION 66 | |
884 NSSDBG_DEFINE(C_CancelFunction), | |
885 #define FUNC_C_WAITFORSLOTEVENT 67 | |
886 NSSDBG_DEFINE(C_WaitForSlotEvent) | |
887 }; | |
888 | |
889 int nssdbg_prof_size = sizeof(nssdbg_prof_data)/sizeof(nssdbg_prof_data[0]); | |
890 | |
891 | |
892 static void nssdbg_finish_time(PRInt32 fun_number, PRIntervalTime start) | |
893 { | |
894 PRIntervalTime ival; | |
895 PRIntervalTime end = PR_IntervalNow(); | |
896 | |
897 ival = end-start; | |
898 /* sigh, lie to PRAtomic add and say we are using signed values */ | |
899 PR_ATOMIC_ADD((PRInt32 *)&nssdbg_prof_data[fun_number].time, (PRInt32)ival); | |
900 } | |
901 | |
902 static void nssdbg_start_time(PRInt32 fun_number, PRIntervalTime *start) | |
903 { | |
904 PR_ATOMIC_INCREMENT((PRInt32 *)&nssdbg_prof_data[fun_number].calls); | |
905 *start = PR_IntervalNow(); | |
906 } | |
907 | |
908 #define COMMON_DEFINITIONS \ | |
909 CK_RV rv; \ | |
910 PRIntervalTime start | |
911 | |
912 CK_RV NSSDBGC_Initialize( | |
913 CK_VOID_PTR pInitArgs | |
914 ) | |
915 { | |
916 COMMON_DEFINITIONS; | |
917 | |
918 PR_LOG(modlog, 1, ("C_Initialize")); | |
919 PR_LOG(modlog, 3, (" pInitArgs = 0x%p", pInitArgs)); | |
920 nssdbg_start_time(FUNC_C_INITIALIZE,&start); | |
921 rv = module_functions->C_Initialize(pInitArgs); | |
922 nssdbg_finish_time(FUNC_C_INITIALIZE,start); | |
923 log_rv(rv); | |
924 return rv; | |
925 } | |
926 | |
927 CK_RV NSSDBGC_Finalize( | |
928 CK_VOID_PTR pReserved | |
929 ) | |
930 { | |
931 COMMON_DEFINITIONS; | |
932 | |
933 PR_LOG(modlog, 1, ("C_Finalize")); | |
934 PR_LOG(modlog, 3, (" pReserved = 0x%p", pReserved)); | |
935 nssdbg_start_time(FUNC_C_FINALIZE,&start); | |
936 rv = module_functions->C_Finalize(pReserved); | |
937 nssdbg_finish_time(FUNC_C_FINALIZE,start); | |
938 log_rv(rv); | |
939 return rv; | |
940 } | |
941 | |
942 CK_RV NSSDBGC_GetInfo( | |
943 CK_INFO_PTR pInfo | |
944 ) | |
945 { | |
946 COMMON_DEFINITIONS; | |
947 | |
948 PR_LOG(modlog, 1, ("C_GetInfo")); | |
949 PR_LOG(modlog, 3, (fmt_pInfo, pInfo)); | |
950 nssdbg_start_time(FUNC_C_GETINFO,&start); | |
951 rv = module_functions->C_GetInfo(pInfo); | |
952 nssdbg_finish_time(FUNC_C_GETINFO,start); | |
953 if (rv == CKR_OK) { | |
954 PR_LOG(modlog, 4, (" cryptoki version: %d.%d", | |
955 pInfo->cryptokiVersion.major, | |
956 pInfo->cryptokiVersion.minor)); | |
957 PR_LOG(modlog, 4, (fmt_manufacturerID, pInfo->manufacturerID)); | |
958 PR_LOG(modlog, 4, (" library description = \"%.32s\"", | |
959 pInfo->libraryDescription)); | |
960 PR_LOG(modlog, 4, (" library version: %d.%d", | |
961 pInfo->libraryVersion.major, | |
962 pInfo->libraryVersion.minor)); | |
963 } | |
964 log_rv(rv); | |
965 return rv; | |
966 } | |
967 | |
968 CK_RV NSSDBGC_GetFunctionList( | |
969 CK_FUNCTION_LIST_PTR_PTR ppFunctionList | |
970 ) | |
971 { | |
972 COMMON_DEFINITIONS; | |
973 | |
974 PR_LOG(modlog, 1, ("C_GetFunctionList")); | |
975 PR_LOG(modlog, 3, (" ppFunctionList = 0x%p", ppFunctionList)); | |
976 nssdbg_start_time(FUNC_C_GETFUNCITONLIST,&start); | |
977 rv = module_functions->C_GetFunctionList(ppFunctionList); | |
978 nssdbg_finish_time(FUNC_C_GETFUNCITONLIST,start); | |
979 log_rv(rv); | |
980 return rv; | |
981 } | |
982 | |
983 CK_RV NSSDBGC_GetSlotList( | |
984 CK_BBOOL tokenPresent, | |
985 CK_SLOT_ID_PTR pSlotList, | |
986 CK_ULONG_PTR pulCount | |
987 ) | |
988 { | |
989 COMMON_DEFINITIONS; | |
990 | |
991 CK_ULONG i; | |
992 PR_LOG(modlog, 1, ("C_GetSlotList")); | |
993 PR_LOG(modlog, 3, (" tokenPresent = 0x%x", tokenPresent)); | |
994 PR_LOG(modlog, 3, (" pSlotList = 0x%p", pSlotList)); | |
995 PR_LOG(modlog, 3, (fmt_pulCount, pulCount)); | |
996 nssdbg_start_time(FUNC_C_GETSLOTLIST,&start); | |
997 rv = module_functions->C_GetSlotList(tokenPresent, pSlotList, pulCount); | |
998 nssdbg_finish_time(FUNC_C_GETSLOTLIST,start); | |
999 PR_LOG(modlog, 4, (fmt_spulCount, *pulCount)); | |
1000 if (pSlotList) { | |
1001 for (i=0; i<*pulCount; i++) { | |
1002 PR_LOG(modlog, 4, (" slotID[%d] = %x", i, pSlotList[i])); | |
1003 } | |
1004 } | |
1005 log_rv(rv); | |
1006 return rv; | |
1007 } | |
1008 | |
1009 CK_RV NSSDBGC_GetSlotInfo( | |
1010 CK_SLOT_ID slotID, | |
1011 CK_SLOT_INFO_PTR pInfo | |
1012 ) | |
1013 { | |
1014 COMMON_DEFINITIONS; | |
1015 | |
1016 PR_LOG(modlog, 1, ("C_GetSlotInfo")); | |
1017 PR_LOG(modlog, 3, (fmt_slotID, slotID)); | |
1018 PR_LOG(modlog, 3, (fmt_pInfo, pInfo)); | |
1019 nssdbg_start_time(FUNC_C_GETSLOTINFO,&start); | |
1020 rv = module_functions->C_GetSlotInfo(slotID, pInfo); | |
1021 nssdbg_finish_time(FUNC_C_GETSLOTINFO,start); | |
1022 if (rv == CKR_OK) { | |
1023 PR_LOG(modlog, 4, (" slotDescription = \"%.64s\"", | |
1024 pInfo->slotDescription)); | |
1025 PR_LOG(modlog, 4, (fmt_manufacturerID, pInfo->manufacturerID)); | |
1026 PR_LOG(modlog, 4, (" flags = %s %s %s", | |
1027 pInfo->flags & CKF_HW_SLOT ? "CKF_HW_SLOT" : "", | |
1028 pInfo->flags & CKF_REMOVABLE_DEVICE ? "CKF_REMOVABLE_DEVICE" : "", | |
1029 pInfo->flags & CKF_TOKEN_PRESENT ? "CKF_TOKEN_PRESENT" : "")); | |
1030 PR_LOG(modlog, 4, (fmt_hwVersion, | |
1031 pInfo->hardwareVersion.major, | |
1032 pInfo->hardwareVersion.minor)); | |
1033 PR_LOG(modlog, 4, (fmt_fwVersion, | |
1034 pInfo->firmwareVersion.major, | |
1035 pInfo->firmwareVersion.minor)); | |
1036 } | |
1037 log_rv(rv); | |
1038 return rv; | |
1039 } | |
1040 | |
1041 CK_RV NSSDBGC_GetTokenInfo( | |
1042 CK_SLOT_ID slotID, | |
1043 CK_TOKEN_INFO_PTR pInfo | |
1044 ) | |
1045 { | |
1046 COMMON_DEFINITIONS; | |
1047 | |
1048 PR_LOG(modlog, 1, ("C_GetTokenInfo")); | |
1049 PR_LOG(modlog, 3, (fmt_slotID, slotID)); | |
1050 PR_LOG(modlog, 3, (fmt_pInfo, pInfo)); | |
1051 nssdbg_start_time(FUNC_C_GETTOKENINFO,&start); | |
1052 rv = module_functions->C_GetTokenInfo(slotID, pInfo); | |
1053 nssdbg_finish_time(FUNC_C_GETTOKENINFO,start); | |
1054 if (rv == CKR_OK) { | |
1055 PR_LOG(modlog, 4, (" label = \"%.32s\"", pInfo->label)); | |
1056 PR_LOG(modlog, 4, (fmt_manufacturerID, pInfo->manufacturerID)); | |
1057 PR_LOG(modlog, 4, (" model = \"%.16s\"", pInfo->model)); | |
1058 PR_LOG(modlog, 4, (" serial = \"%.16s\"", pInfo->serialNumber)); | |
1059 PR_LOG(modlog, 4, (" flags = %s %s %s %s", | |
1060 pInfo->flags & CKF_RNG ? "CKF_RNG" : "", | |
1061 pInfo->flags & CKF_WRITE_PROTECTED ? "CKF_WRITE_PROTECTED" : "", | |
1062 pInfo->flags & CKF_LOGIN_REQUIRED ? "CKF_LOGIN_REQUIRED" : "", | |
1063 pInfo->flags & CKF_USER_PIN_INITIALIZED ? "CKF_USER_PIN_INIT" : "")); | |
1064 PR_LOG(modlog, 4, (" maxSessions = %u, Sessions = %u", | |
1065 pInfo->ulMaxSessionCount, pInfo->ulSessionCount)); | |
1066 PR_LOG(modlog, 4, (" maxRwSessions = %u, RwSessions = %u", | |
1067 pInfo->ulMaxRwSessionCount, | |
1068 pInfo->ulRwSessionCount)); | |
1069 /* ignore Max & Min Pin Len, Public and Private Memory */ | |
1070 PR_LOG(modlog, 4, (fmt_hwVersion, | |
1071 pInfo->hardwareVersion.major, | |
1072 pInfo->hardwareVersion.minor)); | |
1073 PR_LOG(modlog, 4, (fmt_fwVersion, | |
1074 pInfo->firmwareVersion.major, | |
1075 pInfo->firmwareVersion.minor)); | |
1076 } | |
1077 log_rv(rv); | |
1078 return rv; | |
1079 } | |
1080 | |
1081 CK_RV NSSDBGC_GetMechanismList( | |
1082 CK_SLOT_ID slotID, | |
1083 CK_MECHANISM_TYPE_PTR pMechanismList, | |
1084 CK_ULONG_PTR pulCount | |
1085 ) | |
1086 { | |
1087 COMMON_DEFINITIONS; | |
1088 | |
1089 PR_LOG(modlog, 1, ("C_GetMechanismList")); | |
1090 PR_LOG(modlog, 3, (fmt_slotID, slotID)); | |
1091 PR_LOG(modlog, 3, (" pMechanismList = 0x%p", pMechanismList)); | |
1092 PR_LOG(modlog, 3, (fmt_pulCount, pulCount)); | |
1093 nssdbg_start_time(FUNC_C_GETMECHANISMLIST,&start); | |
1094 rv = module_functions->C_GetMechanismList(slotID, | |
1095 pMechanismList, | |
1096 pulCount); | |
1097 nssdbg_finish_time(FUNC_C_GETMECHANISMLIST,start); | |
1098 PR_LOG(modlog, 4, (fmt_spulCount, *pulCount)); | |
1099 log_rv(rv); | |
1100 return rv; | |
1101 } | |
1102 | |
1103 CK_RV NSSDBGC_GetMechanismInfo( | |
1104 CK_SLOT_ID slotID, | |
1105 CK_MECHANISM_TYPE type, | |
1106 CK_MECHANISM_INFO_PTR pInfo | |
1107 ) | |
1108 { | |
1109 COMMON_DEFINITIONS; | |
1110 | |
1111 PR_LOG(modlog, 1, ("C_GetMechanismInfo")); | |
1112 PR_LOG(modlog, 3, (fmt_slotID, slotID)); | |
1113 PR_LOG(modlog, 3, (" type = 0x%x", type)); | |
1114 PR_LOG(modlog, 3, (fmt_pInfo, pInfo)); | |
1115 nssdbg_start_time(FUNC_C_GETMECHANISMINFO,&start); | |
1116 rv = module_functions->C_GetMechanismInfo(slotID, | |
1117 type, | |
1118 pInfo); | |
1119 nssdbg_finish_time(FUNC_C_GETMECHANISMINFO,start); | |
1120 log_rv(rv); | |
1121 return rv; | |
1122 } | |
1123 | |
1124 CK_RV NSSDBGC_InitToken( | |
1125 CK_SLOT_ID slotID, | |
1126 CK_CHAR_PTR pPin, | |
1127 CK_ULONG ulPinLen, | |
1128 CK_CHAR_PTR pLabel | |
1129 ) | |
1130 { | |
1131 COMMON_DEFINITIONS; | |
1132 | |
1133 PR_LOG(modlog, 1, ("C_InitToken")); | |
1134 PR_LOG(modlog, 3, (fmt_slotID, slotID)); | |
1135 PR_LOG(modlog, 3, (fmt_pPin, pPin)); | |
1136 PR_LOG(modlog, 3, (fmt_ulPinLen, ulPinLen)); | |
1137 PR_LOG(modlog, 3, (" pLabel = 0x%p", pLabel)); | |
1138 nssdbg_start_time(FUNC_C_INITTOKEN,&start); | |
1139 rv = module_functions->C_InitToken(slotID, | |
1140 pPin, | |
1141 ulPinLen, | |
1142 pLabel); | |
1143 nssdbg_finish_time(FUNC_C_INITTOKEN,start); | |
1144 log_rv(rv); | |
1145 return rv; | |
1146 } | |
1147 | |
1148 CK_RV NSSDBGC_InitPIN( | |
1149 CK_SESSION_HANDLE hSession, | |
1150 CK_CHAR_PTR pPin, | |
1151 CK_ULONG ulPinLen | |
1152 ) | |
1153 { | |
1154 COMMON_DEFINITIONS; | |
1155 | |
1156 PR_LOG(modlog, 1, ("C_InitPIN")); | |
1157 log_handle(3, fmt_hSession, hSession); | |
1158 PR_LOG(modlog, 3, (fmt_pPin, pPin)); | |
1159 PR_LOG(modlog, 3, (fmt_ulPinLen, ulPinLen)); | |
1160 nssdbg_start_time(FUNC_C_INITPIN,&start); | |
1161 rv = module_functions->C_InitPIN(hSession, | |
1162 pPin, | |
1163 ulPinLen); | |
1164 nssdbg_finish_time(FUNC_C_INITPIN,start); | |
1165 log_rv(rv); | |
1166 return rv; | |
1167 } | |
1168 | |
1169 CK_RV NSSDBGC_SetPIN( | |
1170 CK_SESSION_HANDLE hSession, | |
1171 CK_CHAR_PTR pOldPin, | |
1172 CK_ULONG ulOldLen, | |
1173 CK_CHAR_PTR pNewPin, | |
1174 CK_ULONG ulNewLen | |
1175 ) | |
1176 { | |
1177 COMMON_DEFINITIONS; | |
1178 | |
1179 PR_LOG(modlog, 1, ("C_SetPIN")); | |
1180 log_handle(3, fmt_hSession, hSession); | |
1181 PR_LOG(modlog, 3, (" pOldPin = 0x%p", pOldPin)); | |
1182 PR_LOG(modlog, 3, (" ulOldLen = %d", ulOldLen)); | |
1183 PR_LOG(modlog, 3, (" pNewPin = 0x%p", pNewPin)); | |
1184 PR_LOG(modlog, 3, (" ulNewLen = %d", ulNewLen)); | |
1185 nssdbg_start_time(FUNC_C_SETPIN,&start); | |
1186 rv = module_functions->C_SetPIN(hSession, | |
1187 pOldPin, | |
1188 ulOldLen, | |
1189 pNewPin, | |
1190 ulNewLen); | |
1191 nssdbg_finish_time(FUNC_C_SETPIN,start); | |
1192 log_rv(rv); | |
1193 return rv; | |
1194 } | |
1195 | |
1196 static PRUint32 numOpenSessions = 0; | |
1197 static PRUint32 maxOpenSessions = 0; | |
1198 | |
1199 CK_RV NSSDBGC_OpenSession( | |
1200 CK_SLOT_ID slotID, | |
1201 CK_FLAGS flags, | |
1202 CK_VOID_PTR pApplication, | |
1203 CK_NOTIFY Notify, | |
1204 CK_SESSION_HANDLE_PTR phSession | |
1205 ) | |
1206 { | |
1207 COMMON_DEFINITIONS; | |
1208 | |
1209 PR_ATOMIC_INCREMENT((PRInt32 *)&numOpenSessions); | |
1210 maxOpenSessions = PR_MAX(numOpenSessions, maxOpenSessions); | |
1211 PR_LOG(modlog, 1, ("C_OpenSession")); | |
1212 PR_LOG(modlog, 3, (fmt_slotID, slotID)); | |
1213 PR_LOG(modlog, 3, (fmt_flags, flags)); | |
1214 PR_LOG(modlog, 3, (" pApplication = 0x%p", pApplication)); | |
1215 PR_LOG(modlog, 3, (" Notify = 0x%x", Notify)); | |
1216 PR_LOG(modlog, 3, (" phSession = 0x%p", phSession)); | |
1217 nssdbg_start_time(FUNC_C_OPENSESSION,&start); | |
1218 rv = module_functions->C_OpenSession(slotID, | |
1219 flags, | |
1220 pApplication, | |
1221 Notify, | |
1222 phSession); | |
1223 nssdbg_finish_time(FUNC_C_OPENSESSION,start); | |
1224 log_handle(4, " *phSession = 0x%x", *phSession); | |
1225 log_rv(rv); | |
1226 return rv; | |
1227 } | |
1228 | |
1229 CK_RV NSSDBGC_CloseSession( | |
1230 CK_SESSION_HANDLE hSession | |
1231 ) | |
1232 { | |
1233 COMMON_DEFINITIONS; | |
1234 | |
1235 PR_ATOMIC_DECREMENT((PRInt32 *)&numOpenSessions); | |
1236 PR_LOG(modlog, 1, ("C_CloseSession")); | |
1237 log_handle(3, fmt_hSession, hSession); | |
1238 nssdbg_start_time(FUNC_C_CLOSESESSION,&start); | |
1239 rv = module_functions->C_CloseSession(hSession); | |
1240 nssdbg_finish_time(FUNC_C_CLOSESESSION,start); | |
1241 log_rv(rv); | |
1242 return rv; | |
1243 } | |
1244 | |
1245 CK_RV NSSDBGC_CloseAllSessions( | |
1246 CK_SLOT_ID slotID | |
1247 ) | |
1248 { | |
1249 COMMON_DEFINITIONS; | |
1250 | |
1251 PR_LOG(modlog, 1, ("C_CloseAllSessions")); | |
1252 PR_LOG(modlog, 3, (fmt_slotID, slotID)); | |
1253 nssdbg_start_time(FUNC_C_CLOSEALLSESSIONS,&start); | |
1254 rv = module_functions->C_CloseAllSessions(slotID); | |
1255 nssdbg_finish_time(FUNC_C_CLOSEALLSESSIONS,start); | |
1256 log_rv(rv); | |
1257 return rv; | |
1258 } | |
1259 | |
1260 CK_RV NSSDBGC_GetSessionInfo( | |
1261 CK_SESSION_HANDLE hSession, | |
1262 CK_SESSION_INFO_PTR pInfo | |
1263 ) | |
1264 { | |
1265 COMMON_DEFINITIONS; | |
1266 | |
1267 PR_LOG(modlog, 1, ("C_GetSessionInfo")); | |
1268 log_handle(3, fmt_hSession, hSession); | |
1269 PR_LOG(modlog, 3, (fmt_pInfo, pInfo)); | |
1270 nssdbg_start_time(FUNC_C_GETSESSIONINFO,&start); | |
1271 rv = module_functions->C_GetSessionInfo(hSession, | |
1272 pInfo); | |
1273 nssdbg_finish_time(FUNC_C_GETSESSIONINFO,start); | |
1274 if (rv == CKR_OK) { | |
1275 PR_LOG(modlog, 4, (fmt_slotID, pInfo->slotID)); | |
1276 log_state(pInfo->state); | |
1277 PR_LOG(modlog, 4, (" flags = %s %s", | |
1278 pInfo->flags & CKF_RW_SESSION ? "CKF_RW_SESSION" : "", | |
1279 pInfo->flags & CKF_SERIAL_SESSION ? "CKF_SERIAL_SESSION" : "")); | |
1280 PR_LOG(modlog, 4, (" deviceError = 0x%x", pInfo->ulDeviceError)); | |
1281 } | |
1282 log_rv(rv); | |
1283 return rv; | |
1284 } | |
1285 | |
1286 CK_RV NSSDBGC_GetOperationState( | |
1287 CK_SESSION_HANDLE hSession, | |
1288 CK_BYTE_PTR pOperationState, | |
1289 CK_ULONG_PTR pulOperationStateLen | |
1290 ) | |
1291 { | |
1292 COMMON_DEFINITIONS; | |
1293 | |
1294 PR_LOG(modlog, 1, ("C_GetOperationState")); | |
1295 log_handle(3, fmt_hSession, hSession); | |
1296 PR_LOG(modlog, 3, (fmt_pOperationState, pOperationState)); | |
1297 PR_LOG(modlog, 3, (" pulOperationStateLen = 0x%p", pulOperationStateLen)); | |
1298 nssdbg_start_time(FUNC_C_GETOPERATIONSTATE,&start); | |
1299 rv = module_functions->C_GetOperationState(hSession, | |
1300 pOperationState, | |
1301 pulOperationStateLen); | |
1302 nssdbg_finish_time(FUNC_C_GETOPERATIONSTATE,start); | |
1303 PR_LOG(modlog, 4, (" *pulOperationStateLen = 0x%x", *pulOperationStateLen)); | |
1304 log_rv(rv); | |
1305 return rv; | |
1306 } | |
1307 | |
1308 CK_RV NSSDBGC_SetOperationState( | |
1309 CK_SESSION_HANDLE hSession, | |
1310 CK_BYTE_PTR pOperationState, | |
1311 CK_ULONG ulOperationStateLen, | |
1312 CK_OBJECT_HANDLE hEncryptionKey, | |
1313 CK_OBJECT_HANDLE hAuthenticationKey | |
1314 ) | |
1315 { | |
1316 COMMON_DEFINITIONS; | |
1317 | |
1318 PR_LOG(modlog, 1, ("C_SetOperationState")); | |
1319 log_handle(3, fmt_hSession, hSession); | |
1320 PR_LOG(modlog, 3, (fmt_pOperationState, pOperationState)); | |
1321 PR_LOG(modlog, 3, (" ulOperationStateLen = %d", ulOperationStateLen)); | |
1322 log_handle(3, " hEncryptionKey = 0x%x", hEncryptionKey); | |
1323 log_handle(3, " hAuthenticationKey = 0x%x", hAuthenticationKey); | |
1324 nssdbg_start_time(FUNC_C_SETOPERATIONSTATE,&start); | |
1325 rv = module_functions->C_SetOperationState(hSession, | |
1326 pOperationState, | |
1327 ulOperationStateLen, | |
1328 hEncryptionKey, | |
1329 hAuthenticationKey); | |
1330 nssdbg_finish_time(FUNC_C_SETOPERATIONSTATE,start); | |
1331 log_rv(rv); | |
1332 return rv; | |
1333 } | |
1334 | |
1335 CK_RV NSSDBGC_Login( | |
1336 CK_SESSION_HANDLE hSession, | |
1337 CK_USER_TYPE userType, | |
1338 CK_CHAR_PTR pPin, | |
1339 CK_ULONG ulPinLen | |
1340 ) | |
1341 { | |
1342 COMMON_DEFINITIONS; | |
1343 | |
1344 PR_LOG(modlog, 1, ("C_Login")); | |
1345 log_handle(3, fmt_hSession, hSession); | |
1346 PR_LOG(modlog, 3, (" userType = 0x%x", userType)); | |
1347 PR_LOG(modlog, 3, (fmt_pPin, pPin)); | |
1348 PR_LOG(modlog, 3, (fmt_ulPinLen, ulPinLen)); | |
1349 nssdbg_start_time(FUNC_C_LOGIN,&start); | |
1350 rv = module_functions->C_Login(hSession, | |
1351 userType, | |
1352 pPin, | |
1353 ulPinLen); | |
1354 nssdbg_finish_time(FUNC_C_LOGIN,start); | |
1355 log_rv(rv); | |
1356 return rv; | |
1357 } | |
1358 | |
1359 CK_RV NSSDBGC_Logout( | |
1360 CK_SESSION_HANDLE hSession | |
1361 ) | |
1362 { | |
1363 COMMON_DEFINITIONS; | |
1364 | |
1365 PR_LOG(modlog, 1, ("C_Logout")); | |
1366 log_handle(3, fmt_hSession, hSession); | |
1367 nssdbg_start_time(FUNC_C_LOGOUT,&start); | |
1368 rv = module_functions->C_Logout(hSession); | |
1369 nssdbg_finish_time(FUNC_C_LOGOUT,start); | |
1370 log_rv(rv); | |
1371 return rv; | |
1372 } | |
1373 | |
1374 CK_RV NSSDBGC_CreateObject( | |
1375 CK_SESSION_HANDLE hSession, | |
1376 CK_ATTRIBUTE_PTR pTemplate, | |
1377 CK_ULONG ulCount, | |
1378 CK_OBJECT_HANDLE_PTR phObject | |
1379 ) | |
1380 { | |
1381 COMMON_DEFINITIONS; | |
1382 | |
1383 PR_LOG(modlog, 1, ("C_CreateObject")); | |
1384 log_handle(3, fmt_hSession, hSession); | |
1385 PR_LOG(modlog, 3, (fmt_pTemplate, pTemplate)); | |
1386 PR_LOG(modlog, 3, (fmt_ulCount, ulCount)); | |
1387 PR_LOG(modlog, 3, (fmt_phObject, phObject)); | |
1388 print_template(pTemplate, ulCount); | |
1389 nssdbg_start_time(FUNC_C_CREATEOBJECT,&start); | |
1390 rv = module_functions->C_CreateObject(hSession, | |
1391 pTemplate, | |
1392 ulCount, | |
1393 phObject); | |
1394 nssdbg_finish_time(FUNC_C_CREATEOBJECT,start); | |
1395 log_handle(4, " *phObject = 0x%x", *phObject); | |
1396 log_rv(rv); | |
1397 return rv; | |
1398 } | |
1399 | |
1400 CK_RV NSSDBGC_CopyObject( | |
1401 CK_SESSION_HANDLE hSession, | |
1402 CK_OBJECT_HANDLE hObject, | |
1403 CK_ATTRIBUTE_PTR pTemplate, | |
1404 CK_ULONG ulCount, | |
1405 CK_OBJECT_HANDLE_PTR phNewObject | |
1406 ) | |
1407 { | |
1408 COMMON_DEFINITIONS; | |
1409 | |
1410 PR_LOG(modlog, 1, ("C_CopyObject")); | |
1411 log_handle(3, fmt_hSession, hSession); | |
1412 log_handle(3, fmt_hObject, hObject); | |
1413 PR_LOG(modlog, 3, (fmt_pTemplate, pTemplate)); | |
1414 PR_LOG(modlog, 3, (fmt_ulCount, ulCount)); | |
1415 PR_LOG(modlog, 3, (" phNewObject = 0x%p", phNewObject)); | |
1416 print_template(pTemplate, ulCount); | |
1417 nssdbg_start_time(FUNC_C_COPYOBJECT,&start); | |
1418 rv = module_functions->C_CopyObject(hSession, | |
1419 hObject, | |
1420 pTemplate, | |
1421 ulCount, | |
1422 phNewObject); | |
1423 nssdbg_finish_time(FUNC_C_COPYOBJECT,start); | |
1424 log_handle(4, " *phNewObject = 0x%x", *phNewObject); | |
1425 log_rv(rv); | |
1426 return rv; | |
1427 } | |
1428 | |
1429 CK_RV NSSDBGC_DestroyObject( | |
1430 CK_SESSION_HANDLE hSession, | |
1431 CK_OBJECT_HANDLE hObject | |
1432 ) | |
1433 { | |
1434 COMMON_DEFINITIONS; | |
1435 | |
1436 PR_LOG(modlog, 1, ("C_DestroyObject")); | |
1437 log_handle(3, fmt_hSession, hSession); | |
1438 log_handle(3, fmt_hObject, hObject); | |
1439 nssdbg_start_time(FUNC_C_DESTROYOBJECT,&start); | |
1440 rv = module_functions->C_DestroyObject(hSession, | |
1441 hObject); | |
1442 nssdbg_finish_time(FUNC_C_DESTROYOBJECT,start); | |
1443 log_rv(rv); | |
1444 return rv; | |
1445 } | |
1446 | |
1447 CK_RV NSSDBGC_GetObjectSize( | |
1448 CK_SESSION_HANDLE hSession, | |
1449 CK_OBJECT_HANDLE hObject, | |
1450 CK_ULONG_PTR pulSize | |
1451 ) | |
1452 { | |
1453 COMMON_DEFINITIONS; | |
1454 | |
1455 PR_LOG(modlog, 1, ("C_GetObjectSize")); | |
1456 log_handle(3, fmt_hSession, hSession); | |
1457 log_handle(3, fmt_hObject, hObject); | |
1458 PR_LOG(modlog, 3, (" pulSize = 0x%p", pulSize)); | |
1459 nssdbg_start_time(FUNC_C_GETOBJECTSIZE,&start); | |
1460 rv = module_functions->C_GetObjectSize(hSession, | |
1461 hObject, | |
1462 pulSize); | |
1463 nssdbg_finish_time(FUNC_C_GETOBJECTSIZE,start); | |
1464 PR_LOG(modlog, 4, (" *pulSize = 0x%x", *pulSize)); | |
1465 log_rv(rv); | |
1466 return rv; | |
1467 } | |
1468 | |
1469 CK_RV NSSDBGC_GetAttributeValue( | |
1470 CK_SESSION_HANDLE hSession, | |
1471 CK_OBJECT_HANDLE hObject, | |
1472 CK_ATTRIBUTE_PTR pTemplate, | |
1473 CK_ULONG ulCount | |
1474 ) | |
1475 { | |
1476 COMMON_DEFINITIONS; | |
1477 | |
1478 PR_LOG(modlog, 1, ("C_GetAttributeValue")); | |
1479 log_handle(3, fmt_hSession, hSession); | |
1480 log_handle(3, fmt_hObject, hObject); | |
1481 PR_LOG(modlog, 3, (fmt_pTemplate, pTemplate)); | |
1482 PR_LOG(modlog, 3, (fmt_ulCount, ulCount)); | |
1483 nssdbg_start_time(FUNC_C_GETATTRIBUTEVALUE,&start); | |
1484 rv = module_functions->C_GetAttributeValue(hSession, | |
1485 hObject, | |
1486 pTemplate, | |
1487 ulCount); | |
1488 nssdbg_finish_time(FUNC_C_GETATTRIBUTEVALUE,start); | |
1489 print_template(pTemplate, ulCount); | |
1490 log_rv(rv); | |
1491 return rv; | |
1492 } | |
1493 | |
1494 CK_RV NSSDBGC_SetAttributeValue( | |
1495 CK_SESSION_HANDLE hSession, | |
1496 CK_OBJECT_HANDLE hObject, | |
1497 CK_ATTRIBUTE_PTR pTemplate, | |
1498 CK_ULONG ulCount | |
1499 ) | |
1500 { | |
1501 COMMON_DEFINITIONS; | |
1502 | |
1503 PR_LOG(modlog, 1, ("C_SetAttributeValue")); | |
1504 log_handle(3, fmt_hSession, hSession); | |
1505 log_handle(3, fmt_hObject, hObject); | |
1506 PR_LOG(modlog, 3, (fmt_pTemplate, pTemplate)); | |
1507 PR_LOG(modlog, 3, (fmt_ulCount, ulCount)); | |
1508 print_template(pTemplate, ulCount); | |
1509 nssdbg_start_time(FUNC_C_SETATTRIBUTEVALUE,&start); | |
1510 rv = module_functions->C_SetAttributeValue(hSession, | |
1511 hObject, | |
1512 pTemplate, | |
1513 ulCount); | |
1514 nssdbg_finish_time(FUNC_C_SETATTRIBUTEVALUE,start); | |
1515 log_rv(rv); | |
1516 return rv; | |
1517 } | |
1518 | |
1519 CK_RV NSSDBGC_FindObjectsInit( | |
1520 CK_SESSION_HANDLE hSession, | |
1521 CK_ATTRIBUTE_PTR pTemplate, | |
1522 CK_ULONG ulCount | |
1523 ) | |
1524 { | |
1525 COMMON_DEFINITIONS; | |
1526 | |
1527 PR_LOG(modlog, 1, ("C_FindObjectsInit")); | |
1528 log_handle(3, fmt_hSession, hSession); | |
1529 PR_LOG(modlog, 3, (fmt_pTemplate, pTemplate)); | |
1530 PR_LOG(modlog, 3, (fmt_ulCount, ulCount)); | |
1531 print_template(pTemplate, ulCount); | |
1532 nssdbg_start_time(FUNC_C_FINDOBJECTSINIT,&start); | |
1533 rv = module_functions->C_FindObjectsInit(hSession, | |
1534 pTemplate, | |
1535 ulCount); | |
1536 nssdbg_finish_time(FUNC_C_FINDOBJECTSINIT,start); | |
1537 log_rv(rv); | |
1538 return rv; | |
1539 } | |
1540 | |
1541 CK_RV NSSDBGC_FindObjects( | |
1542 CK_SESSION_HANDLE hSession, | |
1543 CK_OBJECT_HANDLE_PTR phObject, | |
1544 CK_ULONG ulMaxObjectCount, | |
1545 CK_ULONG_PTR pulObjectCount | |
1546 ) | |
1547 { | |
1548 COMMON_DEFINITIONS; | |
1549 CK_ULONG i; | |
1550 | |
1551 PR_LOG(modlog, 1, ("C_FindObjects")); | |
1552 log_handle(3, fmt_hSession, hSession); | |
1553 PR_LOG(modlog, 3, (fmt_phObject, phObject)); | |
1554 PR_LOG(modlog, 3, (" ulMaxObjectCount = %d", ulMaxObjectCount)); | |
1555 PR_LOG(modlog, 3, (" pulObjectCount = 0x%p", pulObjectCount)); | |
1556 nssdbg_start_time(FUNC_C_FINDOBJECTS,&start); | |
1557 rv = module_functions->C_FindObjects(hSession, | |
1558 phObject, | |
1559 ulMaxObjectCount, | |
1560 pulObjectCount); | |
1561 nssdbg_finish_time(FUNC_C_FINDOBJECTS,start); | |
1562 PR_LOG(modlog, 4, (" *pulObjectCount = 0x%x", *pulObjectCount)); | |
1563 for (i=0; i<*pulObjectCount; i++) { | |
1564 PR_LOG(modlog, 4, (" phObject[%d] = 0x%x%s", i, phObject[i], | |
1565 phObject[i] ? "" : fmt_invalid_handle)); | |
1566 } | |
1567 log_rv(rv); | |
1568 return rv; | |
1569 } | |
1570 | |
1571 CK_RV NSSDBGC_FindObjectsFinal( | |
1572 CK_SESSION_HANDLE hSession | |
1573 ) | |
1574 { | |
1575 COMMON_DEFINITIONS; | |
1576 | |
1577 PR_LOG(modlog, 1, ("C_FindObjectsFinal")); | |
1578 log_handle(3, fmt_hSession, hSession); | |
1579 nssdbg_start_time(FUNC_C_FINDOBJECTSFINAL,&start); | |
1580 rv = module_functions->C_FindObjectsFinal(hSession); | |
1581 nssdbg_finish_time(FUNC_C_FINDOBJECTSFINAL,start); | |
1582 log_rv(rv); | |
1583 return rv; | |
1584 } | |
1585 | |
1586 CK_RV NSSDBGC_EncryptInit( | |
1587 CK_SESSION_HANDLE hSession, | |
1588 CK_MECHANISM_PTR pMechanism, | |
1589 CK_OBJECT_HANDLE hKey | |
1590 ) | |
1591 { | |
1592 COMMON_DEFINITIONS; | |
1593 | |
1594 PR_LOG(modlog, 1, ("C_EncryptInit")); | |
1595 log_handle(3, fmt_hSession, hSession); | |
1596 PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism)); | |
1597 log_handle(3, fmt_hKey, hKey); | |
1598 print_mechanism(pMechanism); | |
1599 nssdbg_start_time(FUNC_C_ENCRYPTINIT,&start); | |
1600 rv = module_functions->C_EncryptInit(hSession, | |
1601 pMechanism, | |
1602 hKey); | |
1603 nssdbg_finish_time(FUNC_C_ENCRYPTINIT,start); | |
1604 log_rv(rv); | |
1605 return rv; | |
1606 } | |
1607 | |
1608 CK_RV NSSDBGC_Encrypt( | |
1609 CK_SESSION_HANDLE hSession, | |
1610 CK_BYTE_PTR pData, | |
1611 CK_ULONG ulDataLen, | |
1612 CK_BYTE_PTR pEncryptedData, | |
1613 CK_ULONG_PTR pulEncryptedDataLen | |
1614 ) | |
1615 { | |
1616 COMMON_DEFINITIONS; | |
1617 | |
1618 PR_LOG(modlog, 1, ("C_Encrypt")); | |
1619 log_handle(3, fmt_hSession, hSession); | |
1620 PR_LOG(modlog, 3, (fmt_pData, pData)); | |
1621 PR_LOG(modlog, 3, (fmt_ulDataLen, ulDataLen)); | |
1622 PR_LOG(modlog, 3, (fmt_pEncryptedData, pEncryptedData)); | |
1623 PR_LOG(modlog, 3, (" pulEncryptedDataLen = 0x%p", pulEncryptedDataLen)); | |
1624 nssdbg_start_time(FUNC_C_ENCRYPT,&start); | |
1625 rv = module_functions->C_Encrypt(hSession, | |
1626 pData, | |
1627 ulDataLen, | |
1628 pEncryptedData, | |
1629 pulEncryptedDataLen); | |
1630 nssdbg_finish_time(FUNC_C_ENCRYPT,start); | |
1631 PR_LOG(modlog, 4, (" *pulEncryptedDataLen = 0x%x", *pulEncryptedDataLen)); | |
1632 log_rv(rv); | |
1633 return rv; | |
1634 } | |
1635 | |
1636 CK_RV NSSDBGC_EncryptUpdate( | |
1637 CK_SESSION_HANDLE hSession, | |
1638 CK_BYTE_PTR pPart, | |
1639 CK_ULONG ulPartLen, | |
1640 CK_BYTE_PTR pEncryptedPart, | |
1641 CK_ULONG_PTR pulEncryptedPartLen | |
1642 ) | |
1643 { | |
1644 COMMON_DEFINITIONS; | |
1645 | |
1646 PR_LOG(modlog, 1, ("C_EncryptUpdate")); | |
1647 log_handle(3, fmt_hSession, hSession); | |
1648 PR_LOG(modlog, 3, (fmt_pPart, pPart)); | |
1649 PR_LOG(modlog, 3, (fmt_ulPartLen, ulPartLen)); | |
1650 PR_LOG(modlog, 3, (fmt_pEncryptedPart, pEncryptedPart)); | |
1651 PR_LOG(modlog, 3, (fmt_pulEncryptedPartLen, pulEncryptedPartLen)); | |
1652 nssdbg_start_time(FUNC_C_ENCRYPTUPDATE,&start); | |
1653 rv = module_functions->C_EncryptUpdate(hSession, | |
1654 pPart, | |
1655 ulPartLen, | |
1656 pEncryptedPart, | |
1657 pulEncryptedPartLen); | |
1658 nssdbg_finish_time(FUNC_C_ENCRYPTUPDATE,start); | |
1659 PR_LOG(modlog, 4, (fmt_spulEncryptedPartLen, *pulEncryptedPartLen)); | |
1660 log_rv(rv); | |
1661 return rv; | |
1662 } | |
1663 | |
1664 CK_RV NSSDBGC_EncryptFinal( | |
1665 CK_SESSION_HANDLE hSession, | |
1666 CK_BYTE_PTR pLastEncryptedPart, | |
1667 CK_ULONG_PTR pulLastEncryptedPartLen | |
1668 ) | |
1669 { | |
1670 COMMON_DEFINITIONS; | |
1671 | |
1672 PR_LOG(modlog, 1, ("C_EncryptFinal")); | |
1673 log_handle(3, fmt_hSession, hSession); | |
1674 PR_LOG(modlog, 3, (" pLastEncryptedPart = 0x%p", pLastEncryptedPart)); | |
1675 PR_LOG(modlog, 3, (" pulLastEncryptedPartLen = 0x%p", pulLastEncryptedPartLen)); | |
1676 nssdbg_start_time(FUNC_C_ENCRYPTFINAL,&start); | |
1677 rv = module_functions->C_EncryptFinal(hSession, | |
1678 pLastEncryptedPart, | |
1679 pulLastEncryptedPartLen); | |
1680 nssdbg_finish_time(FUNC_C_ENCRYPTFINAL,start); | |
1681 PR_LOG(modlog, 4, (" *pulLastEncryptedPartLen = 0x%x", *pulLastEncryptedPartLen)); | |
1682 log_rv(rv); | |
1683 return rv; | |
1684 } | |
1685 | |
1686 CK_RV NSSDBGC_DecryptInit( | |
1687 CK_SESSION_HANDLE hSession, | |
1688 CK_MECHANISM_PTR pMechanism, | |
1689 CK_OBJECT_HANDLE hKey | |
1690 ) | |
1691 { | |
1692 COMMON_DEFINITIONS; | |
1693 | |
1694 PR_LOG(modlog, 1, ("C_DecryptInit")); | |
1695 log_handle(3, fmt_hSession, hSession); | |
1696 PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism)); | |
1697 log_handle(3, fmt_hKey, hKey); | |
1698 print_mechanism(pMechanism); | |
1699 nssdbg_start_time(FUNC_C_DECRYPTINIT,&start); | |
1700 rv = module_functions->C_DecryptInit(hSession, | |
1701 pMechanism, | |
1702 hKey); | |
1703 nssdbg_finish_time(FUNC_C_DECRYPTINIT,start); | |
1704 log_rv(rv); | |
1705 return rv; | |
1706 } | |
1707 | |
1708 CK_RV NSSDBGC_Decrypt( | |
1709 CK_SESSION_HANDLE hSession, | |
1710 CK_BYTE_PTR pEncryptedData, | |
1711 CK_ULONG ulEncryptedDataLen, | |
1712 CK_BYTE_PTR pData, | |
1713 CK_ULONG_PTR pulDataLen | |
1714 ) | |
1715 { | |
1716 COMMON_DEFINITIONS; | |
1717 | |
1718 PR_LOG(modlog, 1, ("C_Decrypt")); | |
1719 log_handle(3, fmt_hSession, hSession); | |
1720 PR_LOG(modlog, 3, (fmt_pEncryptedData, pEncryptedData)); | |
1721 PR_LOG(modlog, 3, (" ulEncryptedDataLen = %d", ulEncryptedDataLen)); | |
1722 PR_LOG(modlog, 3, (fmt_pData, pData)); | |
1723 PR_LOG(modlog, 3, (fmt_pulDataLen, pulDataLen)); | |
1724 nssdbg_start_time(FUNC_C_DECRYPT,&start); | |
1725 rv = module_functions->C_Decrypt(hSession, | |
1726 pEncryptedData, | |
1727 ulEncryptedDataLen, | |
1728 pData, | |
1729 pulDataLen); | |
1730 nssdbg_finish_time(FUNC_C_DECRYPT,start); | |
1731 PR_LOG(modlog, 4, (fmt_spulDataLen, *pulDataLen)); | |
1732 log_rv(rv); | |
1733 return rv; | |
1734 } | |
1735 | |
1736 CK_RV NSSDBGC_DecryptUpdate( | |
1737 CK_SESSION_HANDLE hSession, | |
1738 CK_BYTE_PTR pEncryptedPart, | |
1739 CK_ULONG ulEncryptedPartLen, | |
1740 CK_BYTE_PTR pPart, | |
1741 CK_ULONG_PTR pulPartLen | |
1742 ) | |
1743 { | |
1744 COMMON_DEFINITIONS; | |
1745 | |
1746 PR_LOG(modlog, 1, ("C_DecryptUpdate")); | |
1747 log_handle(3, fmt_hSession, hSession); | |
1748 PR_LOG(modlog, 3, (fmt_pEncryptedPart, pEncryptedPart)); | |
1749 PR_LOG(modlog, 3, (fmt_ulEncryptedPartLen, ulEncryptedPartLen)); | |
1750 PR_LOG(modlog, 3, (fmt_pPart, pPart)); | |
1751 PR_LOG(modlog, 3, (fmt_pulPartLen, pulPartLen)); | |
1752 nssdbg_start_time(FUNC_C_DECRYPTUPDATE,&start); | |
1753 rv = module_functions->C_DecryptUpdate(hSession, | |
1754 pEncryptedPart, | |
1755 ulEncryptedPartLen, | |
1756 pPart, | |
1757 pulPartLen); | |
1758 nssdbg_finish_time(FUNC_C_DECRYPTUPDATE,start); | |
1759 PR_LOG(modlog, 4, (fmt_spulPartLen, *pulPartLen)); | |
1760 log_rv(rv); | |
1761 return rv; | |
1762 } | |
1763 | |
1764 CK_RV NSSDBGC_DecryptFinal( | |
1765 CK_SESSION_HANDLE hSession, | |
1766 CK_BYTE_PTR pLastPart, | |
1767 CK_ULONG_PTR pulLastPartLen | |
1768 ) | |
1769 { | |
1770 COMMON_DEFINITIONS; | |
1771 | |
1772 PR_LOG(modlog, 1, ("C_DecryptFinal")); | |
1773 log_handle(3, fmt_hSession, hSession); | |
1774 PR_LOG(modlog, 3, (" pLastPart = 0x%p", pLastPart)); | |
1775 PR_LOG(modlog, 3, (" pulLastPartLen = 0x%p", pulLastPartLen)); | |
1776 nssdbg_start_time(FUNC_C_DECRYPTFINAL,&start); | |
1777 rv = module_functions->C_DecryptFinal(hSession, | |
1778 pLastPart, | |
1779 pulLastPartLen); | |
1780 nssdbg_finish_time(FUNC_C_DECRYPTFINAL,start); | |
1781 PR_LOG(modlog, 4, (" *pulLastPartLen = 0x%x", *pulLastPartLen)); | |
1782 log_rv(rv); | |
1783 return rv; | |
1784 } | |
1785 | |
1786 CK_RV NSSDBGC_DigestInit( | |
1787 CK_SESSION_HANDLE hSession, | |
1788 CK_MECHANISM_PTR pMechanism | |
1789 ) | |
1790 { | |
1791 COMMON_DEFINITIONS; | |
1792 | |
1793 PR_LOG(modlog, 1, ("C_DigestInit")); | |
1794 log_handle(3, fmt_hSession, hSession); | |
1795 PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism)); | |
1796 print_mechanism(pMechanism); | |
1797 nssdbg_start_time(FUNC_C_DIGESTINIT,&start); | |
1798 rv = module_functions->C_DigestInit(hSession, | |
1799 pMechanism); | |
1800 nssdbg_finish_time(FUNC_C_DIGESTINIT,start); | |
1801 log_rv(rv); | |
1802 return rv; | |
1803 } | |
1804 | |
1805 CK_RV NSSDBGC_Digest( | |
1806 CK_SESSION_HANDLE hSession, | |
1807 CK_BYTE_PTR pData, | |
1808 CK_ULONG ulDataLen, | |
1809 CK_BYTE_PTR pDigest, | |
1810 CK_ULONG_PTR pulDigestLen | |
1811 ) | |
1812 { | |
1813 COMMON_DEFINITIONS; | |
1814 | |
1815 PR_LOG(modlog, 1, ("C_Digest")); | |
1816 log_handle(3, fmt_hSession, hSession); | |
1817 PR_LOG(modlog, 3, (fmt_pData, pData)); | |
1818 PR_LOG(modlog, 3, (fmt_ulDataLen, ulDataLen)); | |
1819 PR_LOG(modlog, 3, (fmt_pDigest, pDigest)); | |
1820 PR_LOG(modlog, 3, (fmt_pulDigestLen, pulDigestLen)); | |
1821 nssdbg_start_time(FUNC_C_DIGEST,&start); | |
1822 rv = module_functions->C_Digest(hSession, | |
1823 pData, | |
1824 ulDataLen, | |
1825 pDigest, | |
1826 pulDigestLen); | |
1827 nssdbg_finish_time(FUNC_C_DIGEST,start); | |
1828 PR_LOG(modlog, 4, (fmt_spulDigestLen, *pulDigestLen)); | |
1829 log_rv(rv); | |
1830 return rv; | |
1831 } | |
1832 | |
1833 CK_RV NSSDBGC_DigestUpdate( | |
1834 CK_SESSION_HANDLE hSession, | |
1835 CK_BYTE_PTR pPart, | |
1836 CK_ULONG ulPartLen | |
1837 ) | |
1838 { | |
1839 COMMON_DEFINITIONS; | |
1840 | |
1841 PR_LOG(modlog, 1, ("C_DigestUpdate")); | |
1842 log_handle(3, fmt_hSession, hSession); | |
1843 PR_LOG(modlog, 3, (fmt_pPart, pPart)); | |
1844 PR_LOG(modlog, 3, (fmt_ulPartLen, ulPartLen)); | |
1845 nssdbg_start_time(FUNC_C_DIGESTUPDATE,&start); | |
1846 rv = module_functions->C_DigestUpdate(hSession, | |
1847 pPart, | |
1848 ulPartLen); | |
1849 nssdbg_finish_time(FUNC_C_DIGESTUPDATE,start); | |
1850 log_rv(rv); | |
1851 return rv; | |
1852 } | |
1853 | |
1854 CK_RV NSSDBGC_DigestKey( | |
1855 CK_SESSION_HANDLE hSession, | |
1856 CK_OBJECT_HANDLE hKey | |
1857 ) | |
1858 { | |
1859 COMMON_DEFINITIONS; | |
1860 | |
1861 PR_LOG(modlog, 1, ("C_DigestKey")); | |
1862 log_handle(3, fmt_hSession, hSession); | |
1863 nssdbg_start_time(FUNC_C_DIGESTKEY,&start); | |
1864 rv = module_functions->C_DigestKey(hSession, | |
1865 hKey); | |
1866 nssdbg_finish_time(FUNC_C_DIGESTKEY,start); | |
1867 log_rv(rv); | |
1868 return rv; | |
1869 } | |
1870 | |
1871 CK_RV NSSDBGC_DigestFinal( | |
1872 CK_SESSION_HANDLE hSession, | |
1873 CK_BYTE_PTR pDigest, | |
1874 CK_ULONG_PTR pulDigestLen | |
1875 ) | |
1876 { | |
1877 COMMON_DEFINITIONS; | |
1878 | |
1879 PR_LOG(modlog, 1, ("C_DigestFinal")); | |
1880 log_handle(3, fmt_hSession, hSession); | |
1881 PR_LOG(modlog, 3, (fmt_pDigest, pDigest)); | |
1882 PR_LOG(modlog, 3, (fmt_pulDigestLen, pulDigestLen)); | |
1883 nssdbg_start_time(FUNC_C_DIGESTFINAL,&start); | |
1884 rv = module_functions->C_DigestFinal(hSession, | |
1885 pDigest, | |
1886 pulDigestLen); | |
1887 nssdbg_finish_time(FUNC_C_DIGESTFINAL,start); | |
1888 PR_LOG(modlog, 4, (fmt_spulDigestLen, *pulDigestLen)); | |
1889 log_rv(rv); | |
1890 return rv; | |
1891 } | |
1892 | |
1893 CK_RV NSSDBGC_SignInit( | |
1894 CK_SESSION_HANDLE hSession, | |
1895 CK_MECHANISM_PTR pMechanism, | |
1896 CK_OBJECT_HANDLE hKey | |
1897 ) | |
1898 { | |
1899 COMMON_DEFINITIONS; | |
1900 | |
1901 PR_LOG(modlog, 1, ("C_SignInit")); | |
1902 log_handle(3, fmt_hSession, hSession); | |
1903 PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism)); | |
1904 log_handle(3, fmt_hKey, hKey); | |
1905 print_mechanism(pMechanism); | |
1906 nssdbg_start_time(FUNC_C_SIGNINIT,&start); | |
1907 rv = module_functions->C_SignInit(hSession, | |
1908 pMechanism, | |
1909 hKey); | |
1910 nssdbg_finish_time(FUNC_C_SIGNINIT,start); | |
1911 log_rv(rv); | |
1912 return rv; | |
1913 } | |
1914 | |
1915 CK_RV NSSDBGC_Sign( | |
1916 CK_SESSION_HANDLE hSession, | |
1917 CK_BYTE_PTR pData, | |
1918 CK_ULONG ulDataLen, | |
1919 CK_BYTE_PTR pSignature, | |
1920 CK_ULONG_PTR pulSignatureLen | |
1921 ) | |
1922 { | |
1923 COMMON_DEFINITIONS; | |
1924 | |
1925 PR_LOG(modlog, 1, ("C_Sign")); | |
1926 log_handle(3, fmt_hSession, hSession); | |
1927 PR_LOG(modlog, 3, (fmt_pData, pData)); | |
1928 PR_LOG(modlog, 3, (fmt_ulDataLen, ulDataLen)); | |
1929 PR_LOG(modlog, 3, (fmt_pSignature, pSignature)); | |
1930 PR_LOG(modlog, 3, (fmt_pulSignatureLen, pulSignatureLen)); | |
1931 nssdbg_start_time(FUNC_C_SIGN,&start); | |
1932 rv = module_functions->C_Sign(hSession, | |
1933 pData, | |
1934 ulDataLen, | |
1935 pSignature, | |
1936 pulSignatureLen); | |
1937 nssdbg_finish_time(FUNC_C_SIGN,start); | |
1938 PR_LOG(modlog, 4, (fmt_spulSignatureLen, *pulSignatureLen)); | |
1939 log_rv(rv); | |
1940 return rv; | |
1941 } | |
1942 | |
1943 CK_RV NSSDBGC_SignUpdate( | |
1944 CK_SESSION_HANDLE hSession, | |
1945 CK_BYTE_PTR pPart, | |
1946 CK_ULONG ulPartLen | |
1947 ) | |
1948 { | |
1949 COMMON_DEFINITIONS; | |
1950 | |
1951 PR_LOG(modlog, 1, ("C_SignUpdate")); | |
1952 log_handle(3, fmt_hSession, hSession); | |
1953 PR_LOG(modlog, 3, (fmt_pPart, pPart)); | |
1954 PR_LOG(modlog, 3, (fmt_ulPartLen, ulPartLen)); | |
1955 nssdbg_start_time(FUNC_C_SIGNUPDATE,&start); | |
1956 rv = module_functions->C_SignUpdate(hSession, | |
1957 pPart, | |
1958 ulPartLen); | |
1959 nssdbg_finish_time(FUNC_C_SIGNUPDATE,start); | |
1960 log_rv(rv); | |
1961 return rv; | |
1962 } | |
1963 | |
1964 CK_RV NSSDBGC_SignFinal( | |
1965 CK_SESSION_HANDLE hSession, | |
1966 CK_BYTE_PTR pSignature, | |
1967 CK_ULONG_PTR pulSignatureLen | |
1968 ) | |
1969 { | |
1970 COMMON_DEFINITIONS; | |
1971 | |
1972 PR_LOG(modlog, 1, ("C_SignFinal")); | |
1973 log_handle(3, fmt_hSession, hSession); | |
1974 PR_LOG(modlog, 3, (fmt_pSignature, pSignature)); | |
1975 PR_LOG(modlog, 3, (fmt_pulSignatureLen, pulSignatureLen)); | |
1976 nssdbg_start_time(FUNC_C_SIGNFINAL,&start); | |
1977 rv = module_functions->C_SignFinal(hSession, | |
1978 pSignature, | |
1979 pulSignatureLen); | |
1980 nssdbg_finish_time(FUNC_C_SIGNFINAL,start); | |
1981 PR_LOG(modlog, 4, (fmt_spulSignatureLen, *pulSignatureLen)); | |
1982 log_rv(rv); | |
1983 return rv; | |
1984 } | |
1985 | |
1986 CK_RV NSSDBGC_SignRecoverInit( | |
1987 CK_SESSION_HANDLE hSession, | |
1988 CK_MECHANISM_PTR pMechanism, | |
1989 CK_OBJECT_HANDLE hKey | |
1990 ) | |
1991 { | |
1992 COMMON_DEFINITIONS; | |
1993 | |
1994 PR_LOG(modlog, 1, ("C_SignRecoverInit")); | |
1995 log_handle(3, fmt_hSession, hSession); | |
1996 PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism)); | |
1997 log_handle(3, fmt_hKey, hKey); | |
1998 print_mechanism(pMechanism); | |
1999 nssdbg_start_time(FUNC_C_SIGNRECOVERINIT,&start); | |
2000 rv = module_functions->C_SignRecoverInit(hSession, | |
2001 pMechanism, | |
2002 hKey); | |
2003 nssdbg_finish_time(FUNC_C_SIGNRECOVERINIT,start); | |
2004 log_rv(rv); | |
2005 return rv; | |
2006 } | |
2007 | |
2008 CK_RV NSSDBGC_SignRecover( | |
2009 CK_SESSION_HANDLE hSession, | |
2010 CK_BYTE_PTR pData, | |
2011 CK_ULONG ulDataLen, | |
2012 CK_BYTE_PTR pSignature, | |
2013 CK_ULONG_PTR pulSignatureLen | |
2014 ) | |
2015 { | |
2016 COMMON_DEFINITIONS; | |
2017 | |
2018 PR_LOG(modlog, 1, ("C_SignRecover")); | |
2019 log_handle(3, fmt_hSession, hSession); | |
2020 PR_LOG(modlog, 3, (fmt_pData, pData)); | |
2021 PR_LOG(modlog, 3, (fmt_ulDataLen, ulDataLen)); | |
2022 PR_LOG(modlog, 3, (fmt_pSignature, pSignature)); | |
2023 PR_LOG(modlog, 3, (fmt_pulSignatureLen, pulSignatureLen)); | |
2024 nssdbg_start_time(FUNC_C_SIGNRECOVER,&start); | |
2025 rv = module_functions->C_SignRecover(hSession, | |
2026 pData, | |
2027 ulDataLen, | |
2028 pSignature, | |
2029 pulSignatureLen); | |
2030 nssdbg_finish_time(FUNC_C_SIGNRECOVER,start); | |
2031 PR_LOG(modlog, 4, (fmt_spulSignatureLen, *pulSignatureLen)); | |
2032 log_rv(rv); | |
2033 return rv; | |
2034 } | |
2035 | |
2036 CK_RV NSSDBGC_VerifyInit( | |
2037 CK_SESSION_HANDLE hSession, | |
2038 CK_MECHANISM_PTR pMechanism, | |
2039 CK_OBJECT_HANDLE hKey | |
2040 ) | |
2041 { | |
2042 COMMON_DEFINITIONS; | |
2043 | |
2044 PR_LOG(modlog, 1, ("C_VerifyInit")); | |
2045 log_handle(3, fmt_hSession, hSession); | |
2046 PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism)); | |
2047 log_handle(3, fmt_hKey, hKey); | |
2048 print_mechanism(pMechanism); | |
2049 nssdbg_start_time(FUNC_C_VERIFYINIT,&start); | |
2050 rv = module_functions->C_VerifyInit(hSession, | |
2051 pMechanism, | |
2052 hKey); | |
2053 nssdbg_finish_time(FUNC_C_VERIFYINIT,start); | |
2054 log_rv(rv); | |
2055 return rv; | |
2056 } | |
2057 | |
2058 CK_RV NSSDBGC_Verify( | |
2059 CK_SESSION_HANDLE hSession, | |
2060 CK_BYTE_PTR pData, | |
2061 CK_ULONG ulDataLen, | |
2062 CK_BYTE_PTR pSignature, | |
2063 CK_ULONG ulSignatureLen | |
2064 ) | |
2065 { | |
2066 COMMON_DEFINITIONS; | |
2067 | |
2068 PR_LOG(modlog, 1, ("C_Verify")); | |
2069 log_handle(3, fmt_hSession, hSession); | |
2070 PR_LOG(modlog, 3, (fmt_pData, pData)); | |
2071 PR_LOG(modlog, 3, (fmt_ulDataLen, ulDataLen)); | |
2072 PR_LOG(modlog, 3, (fmt_pSignature, pSignature)); | |
2073 PR_LOG(modlog, 3, (fmt_ulSignatureLen, ulSignatureLen)); | |
2074 nssdbg_start_time(FUNC_C_VERIFY,&start); | |
2075 rv = module_functions->C_Verify(hSession, | |
2076 pData, | |
2077 ulDataLen, | |
2078 pSignature, | |
2079 ulSignatureLen); | |
2080 nssdbg_finish_time(FUNC_C_VERIFY,start); | |
2081 log_rv(rv); | |
2082 return rv; | |
2083 } | |
2084 | |
2085 CK_RV NSSDBGC_VerifyUpdate( | |
2086 CK_SESSION_HANDLE hSession, | |
2087 CK_BYTE_PTR pPart, | |
2088 CK_ULONG ulPartLen | |
2089 ) | |
2090 { | |
2091 COMMON_DEFINITIONS; | |
2092 | |
2093 PR_LOG(modlog, 1, ("C_VerifyUpdate")); | |
2094 log_handle(3, fmt_hSession, hSession); | |
2095 PR_LOG(modlog, 3, (fmt_pPart, pPart)); | |
2096 PR_LOG(modlog, 3, (fmt_ulPartLen, ulPartLen)); | |
2097 nssdbg_start_time(FUNC_C_VERIFYUPDATE,&start); | |
2098 rv = module_functions->C_VerifyUpdate(hSession, | |
2099 pPart, | |
2100 ulPartLen); | |
2101 nssdbg_finish_time(FUNC_C_VERIFYUPDATE,start); | |
2102 log_rv(rv); | |
2103 return rv; | |
2104 } | |
2105 | |
2106 CK_RV NSSDBGC_VerifyFinal( | |
2107 CK_SESSION_HANDLE hSession, | |
2108 CK_BYTE_PTR pSignature, | |
2109 CK_ULONG ulSignatureLen | |
2110 ) | |
2111 { | |
2112 COMMON_DEFINITIONS; | |
2113 | |
2114 PR_LOG(modlog, 1, ("C_VerifyFinal")); | |
2115 log_handle(3, fmt_hSession, hSession); | |
2116 PR_LOG(modlog, 3, (fmt_pSignature, pSignature)); | |
2117 PR_LOG(modlog, 3, (fmt_ulSignatureLen, ulSignatureLen)); | |
2118 nssdbg_start_time(FUNC_C_VERIFYFINAL,&start); | |
2119 rv = module_functions->C_VerifyFinal(hSession, | |
2120 pSignature, | |
2121 ulSignatureLen); | |
2122 nssdbg_finish_time(FUNC_C_VERIFYFINAL,start); | |
2123 log_rv(rv); | |
2124 return rv; | |
2125 } | |
2126 | |
2127 CK_RV NSSDBGC_VerifyRecoverInit( | |
2128 CK_SESSION_HANDLE hSession, | |
2129 CK_MECHANISM_PTR pMechanism, | |
2130 CK_OBJECT_HANDLE hKey | |
2131 ) | |
2132 { | |
2133 COMMON_DEFINITIONS; | |
2134 | |
2135 PR_LOG(modlog, 1, ("C_VerifyRecoverInit")); | |
2136 log_handle(3, fmt_hSession, hSession); | |
2137 PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism)); | |
2138 log_handle(3, fmt_hKey, hKey); | |
2139 print_mechanism(pMechanism); | |
2140 nssdbg_start_time(FUNC_C_VERIFYRECOVERINIT,&start); | |
2141 rv = module_functions->C_VerifyRecoverInit(hSession, | |
2142 pMechanism, | |
2143 hKey); | |
2144 nssdbg_finish_time(FUNC_C_VERIFYRECOVERINIT,start); | |
2145 log_rv(rv); | |
2146 return rv; | |
2147 } | |
2148 | |
2149 CK_RV NSSDBGC_VerifyRecover( | |
2150 CK_SESSION_HANDLE hSession, | |
2151 CK_BYTE_PTR pSignature, | |
2152 CK_ULONG ulSignatureLen, | |
2153 CK_BYTE_PTR pData, | |
2154 CK_ULONG_PTR pulDataLen | |
2155 ) | |
2156 { | |
2157 COMMON_DEFINITIONS; | |
2158 | |
2159 PR_LOG(modlog, 1, ("C_VerifyRecover")); | |
2160 log_handle(3, fmt_hSession, hSession); | |
2161 PR_LOG(modlog, 3, (fmt_pSignature, pSignature)); | |
2162 PR_LOG(modlog, 3, (fmt_ulSignatureLen, ulSignatureLen)); | |
2163 PR_LOG(modlog, 3, (fmt_pData, pData)); | |
2164 PR_LOG(modlog, 3, (fmt_pulDataLen, pulDataLen)); | |
2165 nssdbg_start_time(FUNC_C_VERIFYRECOVER,&start); | |
2166 rv = module_functions->C_VerifyRecover(hSession, | |
2167 pSignature, | |
2168 ulSignatureLen, | |
2169 pData, | |
2170 pulDataLen); | |
2171 nssdbg_finish_time(FUNC_C_VERIFYRECOVER,start); | |
2172 PR_LOG(modlog, 4, (fmt_spulDataLen, *pulDataLen)); | |
2173 log_rv(rv); | |
2174 return rv; | |
2175 } | |
2176 | |
2177 CK_RV NSSDBGC_DigestEncryptUpdate( | |
2178 CK_SESSION_HANDLE hSession, | |
2179 CK_BYTE_PTR pPart, | |
2180 CK_ULONG ulPartLen, | |
2181 CK_BYTE_PTR pEncryptedPart, | |
2182 CK_ULONG_PTR pulEncryptedPartLen | |
2183 ) | |
2184 { | |
2185 COMMON_DEFINITIONS; | |
2186 | |
2187 PR_LOG(modlog, 1, ("C_DigestEncryptUpdate")); | |
2188 log_handle(3, fmt_hSession, hSession); | |
2189 PR_LOG(modlog, 3, (fmt_pPart, pPart)); | |
2190 PR_LOG(modlog, 3, (fmt_ulPartLen, ulPartLen)); | |
2191 PR_LOG(modlog, 3, (fmt_pEncryptedPart, pEncryptedPart)); | |
2192 PR_LOG(modlog, 3, (fmt_pulEncryptedPartLen, pulEncryptedPartLen)); | |
2193 nssdbg_start_time(FUNC_C_DIGESTENCRYPTUPDATE,&start); | |
2194 rv = module_functions->C_DigestEncryptUpdate(hSession, | |
2195 pPart, | |
2196 ulPartLen, | |
2197 pEncryptedPart, | |
2198 pulEncryptedPartLen); | |
2199 nssdbg_finish_time(FUNC_C_DIGESTENCRYPTUPDATE,start); | |
2200 PR_LOG(modlog, 4, (fmt_spulEncryptedPartLen, *pulEncryptedPartLen)); | |
2201 log_rv(rv); | |
2202 return rv; | |
2203 } | |
2204 | |
2205 CK_RV NSSDBGC_DecryptDigestUpdate( | |
2206 CK_SESSION_HANDLE hSession, | |
2207 CK_BYTE_PTR pEncryptedPart, | |
2208 CK_ULONG ulEncryptedPartLen, | |
2209 CK_BYTE_PTR pPart, | |
2210 CK_ULONG_PTR pulPartLen | |
2211 ) | |
2212 { | |
2213 COMMON_DEFINITIONS; | |
2214 | |
2215 PR_LOG(modlog, 1, ("C_DecryptDigestUpdate")); | |
2216 log_handle(3, fmt_hSession, hSession); | |
2217 PR_LOG(modlog, 3, (fmt_pEncryptedPart, pEncryptedPart)); | |
2218 PR_LOG(modlog, 3, (fmt_ulEncryptedPartLen, ulEncryptedPartLen)); | |
2219 PR_LOG(modlog, 3, (fmt_pPart, pPart)); | |
2220 PR_LOG(modlog, 3, (fmt_pulPartLen, pulPartLen)); | |
2221 nssdbg_start_time(FUNC_C_DECRYPTDIGESTUPDATE,&start); | |
2222 rv = module_functions->C_DecryptDigestUpdate(hSession, | |
2223 pEncryptedPart, | |
2224 ulEncryptedPartLen, | |
2225 pPart, | |
2226 pulPartLen); | |
2227 nssdbg_finish_time(FUNC_C_DECRYPTDIGESTUPDATE,start); | |
2228 PR_LOG(modlog, 4, (fmt_spulPartLen, *pulPartLen)); | |
2229 log_rv(rv); | |
2230 return rv; | |
2231 } | |
2232 | |
2233 CK_RV NSSDBGC_SignEncryptUpdate( | |
2234 CK_SESSION_HANDLE hSession, | |
2235 CK_BYTE_PTR pPart, | |
2236 CK_ULONG ulPartLen, | |
2237 CK_BYTE_PTR pEncryptedPart, | |
2238 CK_ULONG_PTR pulEncryptedPartLen | |
2239 ) | |
2240 { | |
2241 COMMON_DEFINITIONS; | |
2242 | |
2243 PR_LOG(modlog, 1, ("C_SignEncryptUpdate")); | |
2244 log_handle(3, fmt_hSession, hSession); | |
2245 PR_LOG(modlog, 3, (fmt_pPart, pPart)); | |
2246 PR_LOG(modlog, 3, (fmt_ulPartLen, ulPartLen)); | |
2247 PR_LOG(modlog, 3, (fmt_pEncryptedPart, pEncryptedPart)); | |
2248 PR_LOG(modlog, 3, (fmt_pulEncryptedPartLen, pulEncryptedPartLen)); | |
2249 nssdbg_start_time(FUNC_C_SIGNENCRYPTUPDATE,&start); | |
2250 rv = module_functions->C_SignEncryptUpdate(hSession, | |
2251 pPart, | |
2252 ulPartLen, | |
2253 pEncryptedPart, | |
2254 pulEncryptedPartLen); | |
2255 nssdbg_finish_time(FUNC_C_SIGNENCRYPTUPDATE,start); | |
2256 PR_LOG(modlog, 4, (fmt_spulEncryptedPartLen, *pulEncryptedPartLen)); | |
2257 log_rv(rv); | |
2258 return rv; | |
2259 } | |
2260 | |
2261 CK_RV NSSDBGC_DecryptVerifyUpdate( | |
2262 CK_SESSION_HANDLE hSession, | |
2263 CK_BYTE_PTR pEncryptedPart, | |
2264 CK_ULONG ulEncryptedPartLen, | |
2265 CK_BYTE_PTR pPart, | |
2266 CK_ULONG_PTR pulPartLen | |
2267 ) | |
2268 { | |
2269 COMMON_DEFINITIONS; | |
2270 | |
2271 PR_LOG(modlog, 1, ("C_DecryptVerifyUpdate")); | |
2272 log_handle(3, fmt_hSession, hSession); | |
2273 PR_LOG(modlog, 3, (fmt_pEncryptedPart, pEncryptedPart)); | |
2274 PR_LOG(modlog, 3, (fmt_ulEncryptedPartLen, ulEncryptedPartLen)); | |
2275 PR_LOG(modlog, 3, (fmt_pPart, pPart)); | |
2276 PR_LOG(modlog, 3, (fmt_pulPartLen, pulPartLen)); | |
2277 nssdbg_start_time(FUNC_C_DECRYPTVERIFYUPDATE,&start); | |
2278 rv = module_functions->C_DecryptVerifyUpdate(hSession, | |
2279 pEncryptedPart, | |
2280 ulEncryptedPartLen, | |
2281 pPart, | |
2282 pulPartLen); | |
2283 nssdbg_finish_time(FUNC_C_DECRYPTVERIFYUPDATE,start); | |
2284 PR_LOG(modlog, 4, (fmt_spulPartLen, *pulPartLen)); | |
2285 log_rv(rv); | |
2286 return rv; | |
2287 } | |
2288 | |
2289 CK_RV NSSDBGC_GenerateKey( | |
2290 CK_SESSION_HANDLE hSession, | |
2291 CK_MECHANISM_PTR pMechanism, | |
2292 CK_ATTRIBUTE_PTR pTemplate, | |
2293 CK_ULONG ulCount, | |
2294 CK_OBJECT_HANDLE_PTR phKey | |
2295 ) | |
2296 { | |
2297 COMMON_DEFINITIONS; | |
2298 | |
2299 PR_LOG(modlog, 1, ("C_GenerateKey")); | |
2300 log_handle(3, fmt_hSession, hSession); | |
2301 PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism)); | |
2302 PR_LOG(modlog, 3, (fmt_pTemplate, pTemplate)); | |
2303 PR_LOG(modlog, 3, (fmt_ulCount, ulCount)); | |
2304 PR_LOG(modlog, 3, (fmt_phKey, phKey)); | |
2305 print_template(pTemplate, ulCount); | |
2306 print_mechanism(pMechanism); | |
2307 nssdbg_start_time(FUNC_C_GENERATEKEY,&start); | |
2308 rv = module_functions->C_GenerateKey(hSession, | |
2309 pMechanism, | |
2310 pTemplate, | |
2311 ulCount, | |
2312 phKey); | |
2313 nssdbg_finish_time(FUNC_C_GENERATEKEY,start); | |
2314 log_handle(4, fmt_sphKey, *phKey); | |
2315 log_rv(rv); | |
2316 return rv; | |
2317 } | |
2318 | |
2319 CK_RV NSSDBGC_GenerateKeyPair( | |
2320 CK_SESSION_HANDLE hSession, | |
2321 CK_MECHANISM_PTR pMechanism, | |
2322 CK_ATTRIBUTE_PTR pPublicKeyTemplate, | |
2323 CK_ULONG ulPublicKeyAttributeCount, | |
2324 CK_ATTRIBUTE_PTR pPrivateKeyTemplate, | |
2325 CK_ULONG ulPrivateKeyAttributeCount, | |
2326 CK_OBJECT_HANDLE_PTR phPublicKey, | |
2327 CK_OBJECT_HANDLE_PTR phPrivateKey | |
2328 ) | |
2329 { | |
2330 COMMON_DEFINITIONS; | |
2331 | |
2332 PR_LOG(modlog, 1, ("C_GenerateKeyPair")); | |
2333 log_handle(3, fmt_hSession, hSession); | |
2334 PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism)); | |
2335 PR_LOG(modlog, 3, (" pPublicKeyTemplate = 0x%p", pPublicKeyTemplate)); | |
2336 PR_LOG(modlog, 3, (" ulPublicKeyAttributeCount = %d", ulPublicKeyAttributeCount)); | |
2337 PR_LOG(modlog, 3, (" pPrivateKeyTemplate = 0x%p", pPrivateKeyTemplate)); | |
2338 PR_LOG(modlog, 3, (" ulPrivateKeyAttributeCount = %d", ulPrivateKeyAttributeCount)); | |
2339 PR_LOG(modlog, 3, (" phPublicKey = 0x%p", phPublicKey)); | |
2340 print_template(pPublicKeyTemplate, ulPublicKeyAttributeCount); | |
2341 PR_LOG(modlog, 3, (" phPrivateKey = 0x%p", phPrivateKey)); | |
2342 print_template(pPrivateKeyTemplate, ulPrivateKeyAttributeCount); | |
2343 print_mechanism(pMechanism); | |
2344 nssdbg_start_time(FUNC_C_GENERATEKEYPAIR,&start); | |
2345 rv = module_functions->C_GenerateKeyPair(hSession, | |
2346 pMechanism, | |
2347 pPublicKeyTemplate, | |
2348 ulPublicKeyAttributeCount, | |
2349 pPrivateKeyTemplate, | |
2350 ulPrivateKeyAttributeCount, | |
2351 phPublicKey, | |
2352 phPrivateKey); | |
2353 nssdbg_finish_time(FUNC_C_GENERATEKEYPAIR,start); | |
2354 log_handle(4, " *phPublicKey = 0x%x", *phPublicKey); | |
2355 log_handle(4, " *phPrivateKey = 0x%x", *phPrivateKey); | |
2356 log_rv(rv); | |
2357 return rv; | |
2358 } | |
2359 | |
2360 CK_RV NSSDBGC_WrapKey( | |
2361 CK_SESSION_HANDLE hSession, | |
2362 CK_MECHANISM_PTR pMechanism, | |
2363 CK_OBJECT_HANDLE hWrappingKey, | |
2364 CK_OBJECT_HANDLE hKey, | |
2365 CK_BYTE_PTR pWrappedKey, | |
2366 CK_ULONG_PTR pulWrappedKeyLen | |
2367 ) | |
2368 { | |
2369 COMMON_DEFINITIONS; | |
2370 | |
2371 PR_LOG(modlog, 1, ("C_WrapKey")); | |
2372 log_handle(3, fmt_hSession, hSession); | |
2373 PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism)); | |
2374 log_handle(3, " hWrappingKey = 0x%x", hWrappingKey); | |
2375 log_handle(3, fmt_hKey, hKey); | |
2376 PR_LOG(modlog, 3, (fmt_pWrappedKey, pWrappedKey)); | |
2377 PR_LOG(modlog, 3, (" pulWrappedKeyLen = 0x%p", pulWrappedKeyLen)); | |
2378 print_mechanism(pMechanism); | |
2379 nssdbg_start_time(FUNC_C_WRAPKEY,&start); | |
2380 rv = module_functions->C_WrapKey(hSession, | |
2381 pMechanism, | |
2382 hWrappingKey, | |
2383 hKey, | |
2384 pWrappedKey, | |
2385 pulWrappedKeyLen); | |
2386 nssdbg_finish_time(FUNC_C_WRAPKEY,start); | |
2387 PR_LOG(modlog, 4, (" *pulWrappedKeyLen = 0x%x", *pulWrappedKeyLen)); | |
2388 log_rv(rv); | |
2389 return rv; | |
2390 } | |
2391 | |
2392 CK_RV NSSDBGC_UnwrapKey( | |
2393 CK_SESSION_HANDLE hSession, | |
2394 CK_MECHANISM_PTR pMechanism, | |
2395 CK_OBJECT_HANDLE hUnwrappingKey, | |
2396 CK_BYTE_PTR pWrappedKey, | |
2397 CK_ULONG ulWrappedKeyLen, | |
2398 CK_ATTRIBUTE_PTR pTemplate, | |
2399 CK_ULONG ulAttributeCount, | |
2400 CK_OBJECT_HANDLE_PTR phKey | |
2401 ) | |
2402 { | |
2403 COMMON_DEFINITIONS; | |
2404 | |
2405 PR_LOG(modlog, 1, ("C_UnwrapKey")); | |
2406 log_handle(3, fmt_hSession, hSession); | |
2407 PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism)); | |
2408 log_handle(3, " hUnwrappingKey = 0x%x", hUnwrappingKey); | |
2409 PR_LOG(modlog, 3, (fmt_pWrappedKey, pWrappedKey)); | |
2410 PR_LOG(modlog, 3, (" ulWrappedKeyLen = %d", ulWrappedKeyLen)); | |
2411 PR_LOG(modlog, 3, (fmt_pTemplate, pTemplate)); | |
2412 PR_LOG(modlog, 3, (fmt_ulAttributeCount, ulAttributeCount)); | |
2413 PR_LOG(modlog, 3, (fmt_phKey, phKey)); | |
2414 print_template(pTemplate, ulAttributeCount); | |
2415 print_mechanism(pMechanism); | |
2416 nssdbg_start_time(FUNC_C_UNWRAPKEY,&start); | |
2417 rv = module_functions->C_UnwrapKey(hSession, | |
2418 pMechanism, | |
2419 hUnwrappingKey, | |
2420 pWrappedKey, | |
2421 ulWrappedKeyLen, | |
2422 pTemplate, | |
2423 ulAttributeCount, | |
2424 phKey); | |
2425 nssdbg_finish_time(FUNC_C_UNWRAPKEY,start); | |
2426 log_handle(4, fmt_sphKey, *phKey); | |
2427 log_rv(rv); | |
2428 return rv; | |
2429 } | |
2430 | |
2431 CK_RV NSSDBGC_DeriveKey( | |
2432 CK_SESSION_HANDLE hSession, | |
2433 CK_MECHANISM_PTR pMechanism, | |
2434 CK_OBJECT_HANDLE hBaseKey, | |
2435 CK_ATTRIBUTE_PTR pTemplate, | |
2436 CK_ULONG ulAttributeCount, | |
2437 CK_OBJECT_HANDLE_PTR phKey | |
2438 ) | |
2439 { | |
2440 COMMON_DEFINITIONS; | |
2441 | |
2442 PR_LOG(modlog, 1, ("C_DeriveKey")); | |
2443 log_handle(3, fmt_hSession, hSession); | |
2444 PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism)); | |
2445 log_handle(3, " hBaseKey = 0x%x", hBaseKey); | |
2446 PR_LOG(modlog, 3, (fmt_pTemplate, pTemplate)); | |
2447 PR_LOG(modlog, 3, (fmt_ulAttributeCount, ulAttributeCount)); | |
2448 PR_LOG(modlog, 3, (fmt_phKey, phKey)); | |
2449 print_template(pTemplate, ulAttributeCount); | |
2450 print_mechanism(pMechanism); | |
2451 nssdbg_start_time(FUNC_C_DERIVEKEY,&start); | |
2452 rv = module_functions->C_DeriveKey(hSession, | |
2453 pMechanism, | |
2454 hBaseKey, | |
2455 pTemplate, | |
2456 ulAttributeCount, | |
2457 phKey); | |
2458 nssdbg_finish_time(FUNC_C_DERIVEKEY,start); | |
2459 log_handle(4, fmt_sphKey, *phKey); | |
2460 log_rv(rv); | |
2461 return rv; | |
2462 } | |
2463 | |
2464 CK_RV NSSDBGC_SeedRandom( | |
2465 CK_SESSION_HANDLE hSession, | |
2466 CK_BYTE_PTR pSeed, | |
2467 CK_ULONG ulSeedLen | |
2468 ) | |
2469 { | |
2470 COMMON_DEFINITIONS; | |
2471 | |
2472 PR_LOG(modlog, 1, ("C_SeedRandom")); | |
2473 log_handle(3, fmt_hSession, hSession); | |
2474 PR_LOG(modlog, 3, (" pSeed = 0x%p", pSeed)); | |
2475 PR_LOG(modlog, 3, (" ulSeedLen = %d", ulSeedLen)); | |
2476 nssdbg_start_time(FUNC_C_SEEDRANDOM,&start); | |
2477 rv = module_functions->C_SeedRandom(hSession, | |
2478 pSeed, | |
2479 ulSeedLen); | |
2480 nssdbg_finish_time(FUNC_C_SEEDRANDOM,start); | |
2481 log_rv(rv); | |
2482 return rv; | |
2483 } | |
2484 | |
2485 CK_RV NSSDBGC_GenerateRandom( | |
2486 CK_SESSION_HANDLE hSession, | |
2487 CK_BYTE_PTR RandomData, | |
2488 CK_ULONG ulRandomLen | |
2489 ) | |
2490 { | |
2491 COMMON_DEFINITIONS; | |
2492 | |
2493 PR_LOG(modlog, 1, ("C_GenerateRandom")); | |
2494 log_handle(3, fmt_hSession, hSession); | |
2495 PR_LOG(modlog, 3, (" RandomData = 0x%p", RandomData)); | |
2496 PR_LOG(modlog, 3, (" ulRandomLen = %d", ulRandomLen)); | |
2497 nssdbg_start_time(FUNC_C_GENERATERANDOM,&start); | |
2498 rv = module_functions->C_GenerateRandom(hSession, | |
2499 RandomData, | |
2500 ulRandomLen); | |
2501 nssdbg_finish_time(FUNC_C_GENERATERANDOM,start); | |
2502 log_rv(rv); | |
2503 return rv; | |
2504 } | |
2505 | |
2506 CK_RV NSSDBGC_GetFunctionStatus( | |
2507 CK_SESSION_HANDLE hSession | |
2508 ) | |
2509 { | |
2510 COMMON_DEFINITIONS; | |
2511 | |
2512 PR_LOG(modlog, 1, ("C_GetFunctionStatus")); | |
2513 log_handle(3, fmt_hSession, hSession); | |
2514 nssdbg_start_time(FUNC_C_GETFUNCTIONSTATUS,&start); | |
2515 rv = module_functions->C_GetFunctionStatus(hSession); | |
2516 nssdbg_finish_time(FUNC_C_GETFUNCTIONSTATUS,start); | |
2517 log_rv(rv); | |
2518 return rv; | |
2519 } | |
2520 | |
2521 CK_RV NSSDBGC_CancelFunction( | |
2522 CK_SESSION_HANDLE hSession | |
2523 ) | |
2524 { | |
2525 COMMON_DEFINITIONS; | |
2526 | |
2527 PR_LOG(modlog, 1, ("C_CancelFunction")); | |
2528 log_handle(3, fmt_hSession, hSession); | |
2529 nssdbg_start_time(FUNC_C_CANCELFUNCTION,&start); | |
2530 rv = module_functions->C_CancelFunction(hSession); | |
2531 nssdbg_finish_time(FUNC_C_CANCELFUNCTION,start); | |
2532 log_rv(rv); | |
2533 return rv; | |
2534 } | |
2535 | |
2536 CK_RV NSSDBGC_WaitForSlotEvent( | |
2537 CK_FLAGS flags, | |
2538 CK_SLOT_ID_PTR pSlot, | |
2539 CK_VOID_PTR pRserved | |
2540 ) | |
2541 { | |
2542 COMMON_DEFINITIONS; | |
2543 | |
2544 PR_LOG(modlog, 1, ("C_WaitForSlotEvent")); | |
2545 PR_LOG(modlog, 3, (fmt_flags, flags)); | |
2546 PR_LOG(modlog, 3, (" pSlot = 0x%p", pSlot)); | |
2547 PR_LOG(modlog, 3, (" pRserved = 0x%p", pRserved)); | |
2548 nssdbg_start_time(FUNC_C_WAITFORSLOTEVENT,&start); | |
2549 rv = module_functions->C_WaitForSlotEvent(flags, | |
2550 pSlot, | |
2551 pRserved); | |
2552 nssdbg_finish_time(FUNC_C_WAITFORSLOTEVENT,start); | |
2553 log_rv(rv); | |
2554 return rv; | |
2555 } | |
2556 | |
2557 CK_FUNCTION_LIST_PTR nss_InsertDeviceLog( | |
2558 CK_FUNCTION_LIST_PTR devEPV | |
2559 ) | |
2560 { | |
2561 module_functions = devEPV; | |
2562 modlog = PR_NewLogModule("nss_mod_log"); | |
2563 debug_functions.C_Initialize = NSSDBGC_Initialize; | |
2564 debug_functions.C_Finalize = NSSDBGC_Finalize; | |
2565 debug_functions.C_GetInfo = NSSDBGC_GetInfo; | |
2566 debug_functions.C_GetFunctionList = NSSDBGC_GetFunctionList; | |
2567 debug_functions.C_GetSlotList = NSSDBGC_GetSlotList; | |
2568 debug_functions.C_GetSlotInfo = NSSDBGC_GetSlotInfo; | |
2569 debug_functions.C_GetTokenInfo = NSSDBGC_GetTokenInfo; | |
2570 debug_functions.C_GetMechanismList = NSSDBGC_GetMechanismList; | |
2571 debug_functions.C_GetMechanismInfo = NSSDBGC_GetMechanismInfo; | |
2572 debug_functions.C_InitToken = NSSDBGC_InitToken; | |
2573 debug_functions.C_InitPIN = NSSDBGC_InitPIN; | |
2574 debug_functions.C_SetPIN = NSSDBGC_SetPIN; | |
2575 debug_functions.C_OpenSession = NSSDBGC_OpenSession; | |
2576 debug_functions.C_CloseSession = NSSDBGC_CloseSession; | |
2577 debug_functions.C_CloseAllSessions = NSSDBGC_CloseAllSessions; | |
2578 debug_functions.C_GetSessionInfo = NSSDBGC_GetSessionInfo; | |
2579 debug_functions.C_GetOperationState = NSSDBGC_GetOperationState; | |
2580 debug_functions.C_SetOperationState = NSSDBGC_SetOperationState; | |
2581 debug_functions.C_Login = NSSDBGC_Login; | |
2582 debug_functions.C_Logout = NSSDBGC_Logout; | |
2583 debug_functions.C_CreateObject = NSSDBGC_CreateObject; | |
2584 debug_functions.C_CopyObject = NSSDBGC_CopyObject; | |
2585 debug_functions.C_DestroyObject = NSSDBGC_DestroyObject; | |
2586 debug_functions.C_GetObjectSize = NSSDBGC_GetObjectSize; | |
2587 debug_functions.C_GetAttributeValue = NSSDBGC_GetAttributeValue; | |
2588 debug_functions.C_SetAttributeValue = NSSDBGC_SetAttributeValue; | |
2589 debug_functions.C_FindObjectsInit = NSSDBGC_FindObjectsInit; | |
2590 debug_functions.C_FindObjects = NSSDBGC_FindObjects; | |
2591 debug_functions.C_FindObjectsFinal = NSSDBGC_FindObjectsFinal; | |
2592 debug_functions.C_EncryptInit = NSSDBGC_EncryptInit; | |
2593 debug_functions.C_Encrypt = NSSDBGC_Encrypt; | |
2594 debug_functions.C_EncryptUpdate = NSSDBGC_EncryptUpdate; | |
2595 debug_functions.C_EncryptFinal = NSSDBGC_EncryptFinal; | |
2596 debug_functions.C_DecryptInit = NSSDBGC_DecryptInit; | |
2597 debug_functions.C_Decrypt = NSSDBGC_Decrypt; | |
2598 debug_functions.C_DecryptUpdate = NSSDBGC_DecryptUpdate; | |
2599 debug_functions.C_DecryptFinal = NSSDBGC_DecryptFinal; | |
2600 debug_functions.C_DigestInit = NSSDBGC_DigestInit; | |
2601 debug_functions.C_Digest = NSSDBGC_Digest; | |
2602 debug_functions.C_DigestUpdate = NSSDBGC_DigestUpdate; | |
2603 debug_functions.C_DigestKey = NSSDBGC_DigestKey; | |
2604 debug_functions.C_DigestFinal = NSSDBGC_DigestFinal; | |
2605 debug_functions.C_SignInit = NSSDBGC_SignInit; | |
2606 debug_functions.C_Sign = NSSDBGC_Sign; | |
2607 debug_functions.C_SignUpdate = NSSDBGC_SignUpdate; | |
2608 debug_functions.C_SignFinal = NSSDBGC_SignFinal; | |
2609 debug_functions.C_SignRecoverInit = NSSDBGC_SignRecoverInit; | |
2610 debug_functions.C_SignRecover = NSSDBGC_SignRecover; | |
2611 debug_functions.C_VerifyInit = NSSDBGC_VerifyInit; | |
2612 debug_functions.C_Verify = NSSDBGC_Verify; | |
2613 debug_functions.C_VerifyUpdate = NSSDBGC_VerifyUpdate; | |
2614 debug_functions.C_VerifyFinal = NSSDBGC_VerifyFinal; | |
2615 debug_functions.C_VerifyRecoverInit = NSSDBGC_VerifyRecoverInit; | |
2616 debug_functions.C_VerifyRecover = NSSDBGC_VerifyRecover; | |
2617 debug_functions.C_DigestEncryptUpdate = NSSDBGC_DigestEncryptUpdate; | |
2618 debug_functions.C_DecryptDigestUpdate = NSSDBGC_DecryptDigestUpdate; | |
2619 debug_functions.C_SignEncryptUpdate = NSSDBGC_SignEncryptUpdate; | |
2620 debug_functions.C_DecryptVerifyUpdate = NSSDBGC_DecryptVerifyUpdate; | |
2621 debug_functions.C_GenerateKey = NSSDBGC_GenerateKey; | |
2622 debug_functions.C_GenerateKeyPair = NSSDBGC_GenerateKeyPair; | |
2623 debug_functions.C_WrapKey = NSSDBGC_WrapKey; | |
2624 debug_functions.C_UnwrapKey = NSSDBGC_UnwrapKey; | |
2625 debug_functions.C_DeriveKey = NSSDBGC_DeriveKey; | |
2626 debug_functions.C_SeedRandom = NSSDBGC_SeedRandom; | |
2627 debug_functions.C_GenerateRandom = NSSDBGC_GenerateRandom; | |
2628 debug_functions.C_GetFunctionStatus = NSSDBGC_GetFunctionStatus; | |
2629 debug_functions.C_CancelFunction = NSSDBGC_CancelFunction; | |
2630 debug_functions.C_WaitForSlotEvent = NSSDBGC_WaitForSlotEvent; | |
2631 return &debug_functions; | |
2632 } | |
2633 | |
2634 /* | |
2635 * scale the time factor up accordingly. | |
2636 * This routine tries to keep at least 2 significant figures on output. | |
2637 * If the time is 0, then indicate that with a 'z' for units. | |
2638 * If the time is greater than 10 minutes, output the time in minutes. | |
2639 * If the time is less than 10 minutes but greater than 10 seconds output | |
2640 * the time in second. | |
2641 * If the time is less than 10 seconds but greater than 10 milliseconds | |
2642 * output * the time in millisecond. | |
2643 * If the time is less than 10 milliseconds but greater than 0 ticks output | |
2644 * the time in microsecond. | |
2645 * | |
2646 */ | |
2647 static PRUint32 getPrintTime(PRIntervalTime time ,char **type) | |
2648 { | |
2649 PRUint32 prTime; | |
2650 | |
2651 /* detect a programming error by outputting 'bu' to the output stream | |
2652 * rather than crashing */ | |
2653 *type = "bug"; | |
2654 if (time == 0) { | |
2655 *type = "z"; | |
2656 return 0; | |
2657 } | |
2658 | |
2659 prTime = PR_IntervalToSeconds(time); | |
2660 | |
2661 if (prTime >= 600) { | |
2662 *type="m"; | |
2663 return prTime/60; | |
2664 } | |
2665 if (prTime >= 10) { | |
2666 *type="s"; | |
2667 return prTime; | |
2668 } | |
2669 prTime = PR_IntervalToMilliseconds(time); | |
2670 if (prTime >= 10) { | |
2671 *type="ms"; | |
2672 return prTime; | |
2673 } | |
2674 *type = "us"; | |
2675 return PR_IntervalToMicroseconds(time); | |
2676 } | |
2677 | |
2678 static void print_final_statistics(void) | |
2679 { | |
2680 int total_calls = 0; | |
2681 PRIntervalTime total_time = 0; | |
2682 PRUint32 pr_total_time; | |
2683 char *type; | |
2684 char *fname; | |
2685 FILE *outfile = NULL; | |
2686 int i; | |
2687 | |
2688 fname = PR_GetEnv("NSS_OUTPUT_FILE"); | |
2689 if (fname) { | |
2690 /* need to add an optional process id to the filename */ | |
2691 outfile = fopen(fname,"w+"); | |
2692 } | |
2693 if (!outfile) { | |
2694 outfile = stdout; | |
2695 } | |
2696 | |
2697 | |
2698 fprintf(outfile,"%-25s %10s %12s %12s %10s\n", "Function", "# Calls", | |
2699 "Time", "Avg.", "% Time"); | |
2700 fprintf(outfile,"\n"); | |
2701 for (i=0; i < nssdbg_prof_size; i++) { | |
2702 total_calls += nssdbg_prof_data[i].calls; | |
2703 total_time += nssdbg_prof_data[i].time; | |
2704 } | |
2705 for (i=0; i < nssdbg_prof_size; i++) { | |
2706 PRIntervalTime time = nssdbg_prof_data[i].time; | |
2707 PRUint32 usTime = PR_IntervalToMicroseconds(time); | |
2708 PRUint32 prTime = 0; | |
2709 PRUint32 calls = nssdbg_prof_data[i].calls; | |
2710 /* don't print out functions that weren't even called */ | |
2711 if (calls == 0) { | |
2712 continue; | |
2713 } | |
2714 | |
2715 prTime = getPrintTime(time,&type); | |
2716 | |
2717 fprintf(outfile,"%-25s %10d %10d%2s ", nssdbg_prof_data[i].function, | |
2718 calls, prTime, type); | |
2719 /* for now always output the average in microseconds */ | |
2720 fprintf(outfile,"%10.2f%2s", (float)usTime / (float)calls, "us" ); | |
2721 fprintf(outfile,"%10.2f%%", ((float)time / (float)total_time) * 100); | |
2722 fprintf(outfile,"\n"); | |
2723 } | |
2724 fprintf(outfile,"\n"); | |
2725 | |
2726 pr_total_time = getPrintTime(total_time,&type); | |
2727 | |
2728 fprintf(outfile,"%25s %10d %10d%2s\n", "Totals", total_calls, | |
2729 pr_total_time, type); | |
2730 fprintf(outfile,"\n\nMaximum number of concurrent open sessions: %d\n\n", | |
2731 maxOpenSessions); | |
2732 fflush (outfile); | |
2733 if (outfile != stdout) { | |
2734 fclose(outfile); | |
2735 } | |
2736 } | |
2737 |