Coverage Report

Created: 2025-07-11 07:04

/src/nss/lib/pk11wrap/debug_module.c
Line
Count
Source (jump to first uncovered line)
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_3_0_PTR module_functions;
11
12
static CK_FUNCTION_LIST_3_0 debug_functions;
13
14
static void print_final_statistics(void);
15
16
#define STRING static const char
17
STRING fmt_flags[] = "  flags = 0x%x";
18
STRING fmt_hKey[] = "  hKey = 0x%x";
19
STRING fmt_hObject[] = "  hObject = 0x%x";
20
STRING fmt_hSession[] = "  hSession = 0x%x";
21
STRING fmt_manufacturerID[] = "  manufacturerID = \"%.32s\"";
22
STRING fmt_pAssociatedData[] = "  pAssociatedData = 0x%p";
23
STRING fmt_pCiphertext[] = "  pCiphertext = 0x%p";
24
STRING fmt_pCiphertextPart[] = "  pCiphertextPart = 0x%p";
25
STRING fmt_pData[] = "  pData = 0x%p";
26
STRING fmt_pDigest[] = "  pDigest = 0x%p";
27
STRING fmt_pEncryptedData[] = "  pEncryptedData = 0x%p";
28
STRING fmt_pEncryptedPart[] = "  pEncryptedPart = 0x%p";
29
STRING fmt_pInfo[] = "  pInfo = 0x%p";
30
STRING fmt_pMechanism[] = "  pMechanism = 0x%p";
31
STRING fmt_pOperationState[] = "  pOperationState = 0x%p";
32
STRING fmt_pParameter[] = "  pParameter = 0x%p";
33
STRING fmt_pPart[] = "  pPart = 0x%p";
34
STRING fmt_pPlaintext[] = "  pPlaintext = 0x%p";
35
STRING fmt_pPlaintextPart[] = "  pPlaintextPart = 0x%p";
36
STRING fmt_pPin[] = "  pPin = 0x%p";
37
STRING fmt_pSignature[] = "  pSignature = 0x%p";
38
STRING fmt_pTemplate[] = "  pTemplate = 0x%p";
39
STRING fmt_pWrappedKey[] = "  pWrappedKey = 0x%p";
40
STRING fmt_phKey[] = "  phKey = 0x%p";
41
STRING fmt_phObject[] = "  phObject = 0x%p";
42
STRING fmt_pulCount[] = "  pulCount = 0x%p";
43
STRING fmt_pulCiphertextLen[] = "  pulCiphertextLen = 0x%p";
44
STRING fmt_pulCiphertextPartLen[] = "  pulCiphertextPartLen = 0x%p";
45
STRING fmt_pulDataLen[] = "  pulDataLen = 0x%p";
46
STRING fmt_pulDigestLen[] = "  pulDigestLen = 0x%p";
47
STRING fmt_pulEncryptedPartLen[] = "  pulEncryptedPartLen = 0x%p";
48
STRING fmt_pulPartLen[] = "  pulPartLen = 0x%p";
49
STRING fmt_pulPlaintextLen[] = "  pulPlaintextLen = 0x%p";
50
STRING fmt_pulPlaintextPartLen[] = "  pulPlaintextPartLen = 0x%p";
51
STRING fmt_pulSignatureLen[] = "  pulSignatureLen = 0x%p";
52
STRING fmt_slotID[] = "  slotID = 0x%x";
53
STRING fmt_sphKey[] = "  *phKey = 0x%x";
54
STRING fmt_spulCount[] = "  *pulCount = 0x%x";
55
STRING fmt_spulDataLen[] = "  *pulDataLen = 0x%x";
56
STRING fmt_spulDigestLen[] = "  *pulDigestLen = 0x%x";
57
STRING fmt_spulEncryptedPartLen[] = "  *pulEncryptedPartLen = 0x%x";
58
STRING fmt_spulPartLen[] = "  *pulPartLen = 0x%x";
59
STRING fmt_spulSignatureLen[] = "  *pulSignatureLen = 0x%x";
60
STRING fmt_ulAttributeCount[] = "  ulAttributeCount = %d";
61
STRING fmt_ulCiphertextLen[] = "  ulCiphertextLen = %d";
62
STRING fmt_ulCiphertextPartLen[] = "  ulCiphertextPartLen = %d";
63
STRING fmt_ulCount[] = "  ulCount = %d";
64
STRING fmt_ulDataLen[] = "  ulDataLen = %d";
65
STRING fmt_ulEncryptedPartLen[] = "  ulEncryptedPartLen = %d";
66
STRING fmt_ulAssociatedDataLen[] = "  ulAssociatedDataLen = 0x%p";
67
STRING fmt_ulParameterLen[] = "  ulParameterLen = 0x%p";
68
STRING fmt_ulPartLen[] = "  ulPartLen = %d";
69
STRING fmt_ulPlaintextLen[] = "  ulPlaintextLen = 0x%p";
70
STRING fmt_ulPlaintextPartLen[] = "  ulPlaintextPartLen = 0x%p";
71
STRING fmt_ulPinLen[] = "  ulPinLen = %d";
72
STRING fmt_ulSignatureLen[] = "  ulSignatureLen = %d";
73
74
STRING fmt_fwVersion[] = "  firmware version: %d.%d";
75
STRING fmt_hwVersion[] = "  hardware version: %d.%d";
76
STRING fmt_s_qsq_d[] = "    %s = \"%s\" [%d]";
77
STRING fmt_s_s_d[] = "    %s = %s [%d]";
78
STRING fmt_s_lu[] = "    %s = %lu";
79
STRING fmt_invalid_handle[] = " (CK_INVALID_HANDLE)";
80
81
static void
82
get_attr_type_str(CK_ATTRIBUTE_TYPE atype, char *str, int len)
83
0
{
84
0
#define CASE(attr) \
85
0
    case attr:     \
86
0
        a = #attr; \
87
0
        break
88
89
0
    const char *a = NULL;
90
91
0
    switch (atype) {
92
0
        CASE(CKA_CLASS);
93
0
        CASE(CKA_TOKEN);
94
0
        CASE(CKA_PRIVATE);
95
0
        CASE(CKA_LABEL);
96
0
        CASE(CKA_APPLICATION);
97
0
        CASE(CKA_VALUE);
98
0
        CASE(CKA_OBJECT_ID);
99
0
        CASE(CKA_CERTIFICATE_TYPE);
100
0
        CASE(CKA_CERTIFICATE_CATEGORY);
101
0
        CASE(CKA_ISSUER);
102
0
        CASE(CKA_SERIAL_NUMBER);
103
0
        CASE(CKA_AC_ISSUER);
104
0
        CASE(CKA_OWNER);
105
0
        CASE(CKA_ATTR_TYPES);
106
0
        CASE(CKA_TRUSTED);
107
0
        CASE(CKA_KEY_TYPE);
108
0
        CASE(CKA_SUBJECT);
109
0
        CASE(CKA_ID);
110
0
        CASE(CKA_SENSITIVE);
111
0
        CASE(CKA_ENCRYPT);
112
0
        CASE(CKA_DECRYPT);
113
0
        CASE(CKA_WRAP);
114
0
        CASE(CKA_UNWRAP);
115
0
        CASE(CKA_SIGN);
116
0
        CASE(CKA_SIGN_RECOVER);
117
0
        CASE(CKA_VERIFY);
118
0
        CASE(CKA_VERIFY_RECOVER);
119
0
        CASE(CKA_DERIVE);
120
0
        CASE(CKA_START_DATE);
121
0
        CASE(CKA_END_DATE);
122
0
        CASE(CKA_MODULUS);
123
0
        CASE(CKA_MODULUS_BITS);
124
0
        CASE(CKA_PUBLIC_EXPONENT);
125
0
        CASE(CKA_PRIVATE_EXPONENT);
126
0
        CASE(CKA_PRIME_1);
127
0
        CASE(CKA_PRIME_2);
128
0
        CASE(CKA_EXPONENT_1);
129
0
        CASE(CKA_EXPONENT_2);
130
0
        CASE(CKA_COEFFICIENT);
131
0
        CASE(CKA_PRIME);
132
0
        CASE(CKA_SUBPRIME);
133
0
        CASE(CKA_BASE);
134
0
        CASE(CKA_PRIME_BITS);
135
0
        CASE(CKA_SUBPRIME_BITS);
136
0
        CASE(CKA_VALUE_BITS);
137
0
        CASE(CKA_VALUE_LEN);
138
0
        CASE(CKA_EXTRACTABLE);
139
0
        CASE(CKA_LOCAL);
140
0
        CASE(CKA_NEVER_EXTRACTABLE);
141
0
        CASE(CKA_ALWAYS_SENSITIVE);
142
0
        CASE(CKA_KEY_GEN_MECHANISM);
143
0
        CASE(CKA_MODIFIABLE);
144
0
        CASE(CKA_ECDSA_PARAMS);
145
0
        CASE(CKA_EC_POINT);
146
0
        CASE(CKA_SECONDARY_AUTH);
147
0
        CASE(CKA_AUTH_PIN_FLAGS);
148
0
        CASE(CKA_HW_FEATURE_TYPE);
149
0
        CASE(CKA_RESET_ON_INIT);
150
0
        CASE(CKA_HAS_RESET);
151
0
        CASE(CKA_VENDOR_DEFINED);
152
0
        CASE(CKA_PROFILE_ID);
153
0
        CASE(CKA_NSS_URL);
154
0
        CASE(CKA_NSS_EMAIL);
155
0
        CASE(CKA_NSS_SMIME_INFO);
156
0
        CASE(CKA_NSS_SMIME_TIMESTAMP);
157
0
        CASE(CKA_NSS_PKCS8_SALT);
158
0
        CASE(CKA_NSS_PASSWORD_CHECK);
159
0
        CASE(CKA_NSS_EXPIRES);
160
0
        CASE(CKA_NSS_KRL);
161
0
        CASE(CKA_NSS_PQG_COUNTER);
162
0
        CASE(CKA_NSS_PQG_SEED);
163
0
        CASE(CKA_NSS_PQG_H);
164
0
        CASE(CKA_NSS_PQG_SEED_BITS);
165
0
        CASE(CKA_NSS_TRUST_DIGITAL_SIGNATURE);
166
0
        CASE(CKA_NSS_TRUST_NON_REPUDIATION);
167
0
        CASE(CKA_NSS_TRUST_KEY_ENCIPHERMENT);
168
0
        CASE(CKA_NSS_TRUST_DATA_ENCIPHERMENT);
169
0
        CASE(CKA_NSS_TRUST_KEY_AGREEMENT);
170
0
        CASE(CKA_NSS_TRUST_KEY_CERT_SIGN);
171
0
        CASE(CKA_NSS_TRUST_CRL_SIGN);
172
0
        CASE(CKA_NSS_TRUST_SERVER_AUTH);
173
0
        CASE(CKA_NSS_TRUST_CLIENT_AUTH);
174
0
        CASE(CKA_NSS_TRUST_CODE_SIGNING);
175
0
        CASE(CKA_NSS_TRUST_EMAIL_PROTECTION);
176
0
        CASE(CKA_NSS_TRUST_IPSEC_END_SYSTEM);
177
0
        CASE(CKA_NSS_TRUST_IPSEC_TUNNEL);
178
0
        CASE(CKA_NSS_TRUST_IPSEC_USER);
179
0
        CASE(CKA_NSS_TRUST_TIME_STAMPING);
180
0
        CASE(CKA_PKCS_TRUST_SERVER_AUTH);
181
0
        CASE(CKA_PKCS_TRUST_CLIENT_AUTH);
182
0
        CASE(CKA_PKCS_TRUST_CODE_SIGNING);
183
0
        CASE(CKA_PKCS_TRUST_EMAIL_PROTECTION);
184
0
        CASE(CKA_PKCS_TRUST_TIME_STAMPING);
185
0
        CASE(CKA_TRUST_IPSEC_IKE);
186
0
        CASE(CKA_NSS_CERT_SHA1_HASH);
187
0
        CASE(CKA_NSS_CERT_MD5_HASH);
188
0
        CASE(CKA_HASH_OF_CERTIFICATE);
189
0
        CASE(CKA_NAME_HASH_ALGORITHM);
190
0
        CASE(CKA_NSS_DB);
191
0
        CASE(CKA_NSS_TRUST);
192
0
        default:
193
0
            break;
194
0
    }
195
0
    if (a)
196
0
        PR_snprintf(str, len, "%s", a);
197
0
    else
198
0
        PR_snprintf(str, len, "0x%p", atype);
199
0
}
200
201
static void
202
get_obj_class(CK_OBJECT_CLASS objClass, char *str, int len)
203
0
{
204
205
0
    const char *a = NULL;
206
207
0
    switch (objClass) {
208
0
        CASE(CKO_DATA);
209
0
        CASE(CKO_CERTIFICATE);
210
0
        CASE(CKO_PUBLIC_KEY);
211
0
        CASE(CKO_PRIVATE_KEY);
212
0
        CASE(CKO_SECRET_KEY);
213
0
        CASE(CKO_HW_FEATURE);
214
0
        CASE(CKO_DOMAIN_PARAMETERS);
215
0
        CASE(CKO_PROFILE);
216
0
        CASE(CKO_TRUST);
217
0
        CASE(CKO_NSS_CRL);
218
0
        CASE(CKO_NSS_SMIME);
219
0
        CASE(CKO_NSS_TRUST);
220
0
        CASE(CKO_NSS_BUILTIN_ROOT_LIST);
221
0
        default:
222
0
            break;
223
0
    }
224
0
    if (a)
225
0
        PR_snprintf(str, len, "%s", a);
226
0
    else
227
0
        PR_snprintf(str, len, "0x%p", objClass);
228
0
}
229
230
static void
231
get_profile_val(CK_PROFILE_ID profile, char *str, int len)
232
0
{
233
234
0
    const char *a = NULL;
235
236
0
    switch (profile) {
237
0
        CASE(CKP_INVALID_ID);
238
0
        CASE(CKP_BASELINE_PROVIDER);
239
0
        CASE(CKP_EXTENDED_PROVIDER);
240
0
        CASE(CKP_AUTHENTICATION_TOKEN);
241
0
        CASE(CKP_PUBLIC_CERTIFICATES_TOKEN);
242
0
        default:
243
0
            break;
244
0
    }
245
0
    if (a)
246
0
        PR_snprintf(str, len, "%s", a);
247
0
    else
248
0
        PR_snprintf(str, len, "0x%p", profile);
249
0
}
250
251
static void
252
get_trust_val(CK_TRUST trust, char *str, int len)
253
0
{
254
0
    const char *a = NULL;
255
256
0
    switch (trust) {
257
0
        CASE(CKT_NSS_TRUSTED);
258
0
        CASE(CKT_NSS_TRUSTED_DELEGATOR);
259
0
        CASE(CKT_NSS_NOT_TRUSTED);
260
0
        CASE(CKT_NSS_MUST_VERIFY_TRUST);
261
0
        CASE(CKT_NSS_TRUST_UNKNOWN);
262
0
        CASE(CKT_NSS_VALID_DELEGATOR);
263
0
        CASE(CKT_TRUSTED);
264
0
        CASE(CKT_TRUST_ANCHOR);
265
0
        CASE(CKT_NOT_TRUSTED);
266
0
        CASE(CKT_TRUST_MUST_VERIFY_TRUST);
267
0
        CASE(CKT_TRUST_UNKNOWN);
268
0
        default:
269
0
            break;
270
0
    }
271
0
    if (a)
272
0
        PR_snprintf(str, len, "%s", a);
273
0
    else
274
0
        PR_snprintf(str, len, "0x%p", trust);
275
0
}
276
277
static void
278
log_rv(CK_RV rv)
279
0
{
280
0
    const char *a = NULL;
281
282
0
    switch (rv) {
283
0
        CASE(CKR_OK);
284
0
        CASE(CKR_CANCEL);
285
0
        CASE(CKR_HOST_MEMORY);
286
0
        CASE(CKR_SLOT_ID_INVALID);
287
0
        CASE(CKR_GENERAL_ERROR);
288
0
        CASE(CKR_FUNCTION_FAILED);
289
0
        CASE(CKR_ARGUMENTS_BAD);
290
0
        CASE(CKR_NO_EVENT);
291
0
        CASE(CKR_NEED_TO_CREATE_THREADS);
292
0
        CASE(CKR_CANT_LOCK);
293
0
        CASE(CKR_ATTRIBUTE_READ_ONLY);
294
0
        CASE(CKR_ATTRIBUTE_SENSITIVE);
295
0
        CASE(CKR_ATTRIBUTE_TYPE_INVALID);
296
0
        CASE(CKR_ATTRIBUTE_VALUE_INVALID);
297
0
        CASE(CKR_DATA_INVALID);
298
0
        CASE(CKR_DATA_LEN_RANGE);
299
0
        CASE(CKR_DEVICE_ERROR);
300
0
        CASE(CKR_DEVICE_MEMORY);
301
0
        CASE(CKR_DEVICE_REMOVED);
302
0
        CASE(CKR_ENCRYPTED_DATA_INVALID);
303
0
        CASE(CKR_ENCRYPTED_DATA_LEN_RANGE);
304
0
        CASE(CKR_FUNCTION_CANCELED);
305
0
        CASE(CKR_FUNCTION_NOT_PARALLEL);
306
0
        CASE(CKR_FUNCTION_NOT_SUPPORTED);
307
0
        CASE(CKR_KEY_HANDLE_INVALID);
308
0
        CASE(CKR_KEY_SIZE_RANGE);
309
0
        CASE(CKR_KEY_TYPE_INCONSISTENT);
310
0
        CASE(CKR_KEY_NOT_NEEDED);
311
0
        CASE(CKR_KEY_CHANGED);
312
0
        CASE(CKR_KEY_NEEDED);
313
0
        CASE(CKR_KEY_INDIGESTIBLE);
314
0
        CASE(CKR_KEY_FUNCTION_NOT_PERMITTED);
315
0
        CASE(CKR_KEY_NOT_WRAPPABLE);
316
0
        CASE(CKR_KEY_UNEXTRACTABLE);
317
0
        CASE(CKR_MECHANISM_INVALID);
318
0
        CASE(CKR_MECHANISM_PARAM_INVALID);
319
0
        CASE(CKR_OBJECT_HANDLE_INVALID);
320
0
        CASE(CKR_OPERATION_ACTIVE);
321
0
        CASE(CKR_OPERATION_NOT_INITIALIZED);
322
0
        CASE(CKR_PIN_INCORRECT);
323
0
        CASE(CKR_PIN_INVALID);
324
0
        CASE(CKR_PIN_LEN_RANGE);
325
0
        CASE(CKR_PIN_EXPIRED);
326
0
        CASE(CKR_PIN_LOCKED);
327
0
        CASE(CKR_SESSION_CLOSED);
328
0
        CASE(CKR_SESSION_COUNT);
329
0
        CASE(CKR_SESSION_HANDLE_INVALID);
330
0
        CASE(CKR_SESSION_PARALLEL_NOT_SUPPORTED);
331
0
        CASE(CKR_SESSION_READ_ONLY);
332
0
        CASE(CKR_SESSION_EXISTS);
333
0
        CASE(CKR_SESSION_READ_ONLY_EXISTS);
334
0
        CASE(CKR_SESSION_READ_WRITE_SO_EXISTS);
335
0
        CASE(CKR_SIGNATURE_INVALID);
336
0
        CASE(CKR_SIGNATURE_LEN_RANGE);
337
0
        CASE(CKR_TEMPLATE_INCOMPLETE);
338
0
        CASE(CKR_TEMPLATE_INCONSISTENT);
339
0
        CASE(CKR_TOKEN_NOT_PRESENT);
340
0
        CASE(CKR_TOKEN_NOT_RECOGNIZED);
341
0
        CASE(CKR_TOKEN_WRITE_PROTECTED);
342
0
        CASE(CKR_UNWRAPPING_KEY_HANDLE_INVALID);
343
0
        CASE(CKR_UNWRAPPING_KEY_SIZE_RANGE);
344
0
        CASE(CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT);
345
0
        CASE(CKR_USER_ALREADY_LOGGED_IN);
346
0
        CASE(CKR_USER_NOT_LOGGED_IN);
347
0
        CASE(CKR_USER_PIN_NOT_INITIALIZED);
348
0
        CASE(CKR_USER_TYPE_INVALID);
349
0
        CASE(CKR_USER_ANOTHER_ALREADY_LOGGED_IN);
350
0
        CASE(CKR_USER_TOO_MANY_TYPES);
351
0
        CASE(CKR_WRAPPED_KEY_INVALID);
352
0
        CASE(CKR_WRAPPED_KEY_LEN_RANGE);
353
0
        CASE(CKR_WRAPPING_KEY_HANDLE_INVALID);
354
0
        CASE(CKR_WRAPPING_KEY_SIZE_RANGE);
355
0
        CASE(CKR_WRAPPING_KEY_TYPE_INCONSISTENT);
356
0
        CASE(CKR_RANDOM_SEED_NOT_SUPPORTED);
357
0
        CASE(CKR_RANDOM_NO_RNG);
358
0
        CASE(CKR_DOMAIN_PARAMS_INVALID);
359
0
        CASE(CKR_BUFFER_TOO_SMALL);
360
0
        CASE(CKR_SAVED_STATE_INVALID);
361
0
        CASE(CKR_INFORMATION_SENSITIVE);
362
0
        CASE(CKR_STATE_UNSAVEABLE);
363
0
        CASE(CKR_CRYPTOKI_NOT_INITIALIZED);
364
0
        CASE(CKR_CRYPTOKI_ALREADY_INITIALIZED);
365
0
        CASE(CKR_MUTEX_BAD);
366
0
        CASE(CKR_MUTEX_NOT_LOCKED);
367
0
        CASE(CKR_FUNCTION_REJECTED);
368
0
        CASE(CKR_ACTION_PROHIBITED);
369
0
        CASE(CKR_CURVE_NOT_SUPPORTED);
370
0
        CASE(CKR_NEW_PIN_MODE);
371
0
        CASE(CKR_NEXT_OTP);
372
0
        CASE(CKR_EXCEEDED_MAX_ITERATIONS);
373
0
        CASE(CKR_FIPS_SELF_TEST_FAILED);
374
0
        CASE(CKR_LIBRARY_LOAD_FAILED);
375
0
        CASE(CKR_PIN_TOO_WEAK);
376
0
        CASE(CKR_TOKEN_RESOURCE_EXCEEDED);
377
0
        CASE(CKR_OPERATION_CANCEL_FAILED);
378
0
        default:
379
0
            break;
380
0
    }
381
0
    if (a)
382
0
        PR_LOG(modlog, 1, ("  rv = %s\n", a));
383
0
    else
384
0
        PR_LOG(modlog, 1, ("  rv = 0x%x\n", rv));
385
0
}
386
387
static void
388
log_state(CK_STATE state)
389
0
{
390
0
    const char *a = NULL;
391
392
0
    switch (state) {
393
0
        CASE(CKS_RO_PUBLIC_SESSION);
394
0
        CASE(CKS_RO_USER_FUNCTIONS);
395
0
        CASE(CKS_RW_PUBLIC_SESSION);
396
0
        CASE(CKS_RW_USER_FUNCTIONS);
397
0
        CASE(CKS_RW_SO_FUNCTIONS);
398
0
        default:
399
0
            break;
400
0
    }
401
0
    if (a)
402
0
        PR_LOG(modlog, 1, ("  state = %s\n", a));
403
0
    else
404
0
        PR_LOG(modlog, 1, ("  state = 0x%x\n", state));
405
0
}
406
407
static void
408
log_handle(PRLogModuleLevel level, const char *format, CK_ULONG handle)
409
0
{
410
0
    char fmtBuf[80];
411
0
    if (handle)
412
0
        PR_LOG(modlog, level, (format, handle));
413
0
    else {
414
0
        PL_strncpyz(fmtBuf, format, sizeof fmtBuf);
415
0
        PL_strcatn(fmtBuf, sizeof fmtBuf, fmt_invalid_handle);
416
0
        PR_LOG(modlog, level, (fmtBuf, handle));
417
0
    }
418
0
}
419
420
static void
421
print_mechanism(CK_MECHANISM_PTR m)
422
0
{
423
424
0
    const char *a = NULL;
425
426
0
    switch (m->mechanism) {
427
0
        CASE(CKM_AES_CBC);
428
0
        CASE(CKM_AES_CBC_ENCRYPT_DATA);
429
0
        CASE(CKM_AES_CBC_PAD);
430
0
        CASE(CKM_AES_CCM);
431
0
        CASE(CKM_AES_CTR);
432
0
        CASE(CKM_AES_CTS);
433
0
        CASE(CKM_AES_GCM);
434
0
        CASE(CKM_AES_ECB);
435
0
        CASE(CKM_AES_ECB_ENCRYPT_DATA);
436
0
        CASE(CKM_AES_KEY_GEN);
437
0
        CASE(CKM_AES_MAC);
438
0
        CASE(CKM_AES_MAC_GENERAL);
439
0
        CASE(CKM_AES_CMAC);
440
0
        CASE(CKM_AES_CMAC_GENERAL);
441
0
        CASE(CKM_CAMELLIA_CBC);
442
0
        CASE(CKM_CAMELLIA_CBC_ENCRYPT_DATA);
443
0
        CASE(CKM_CAMELLIA_CBC_PAD);
444
0
        CASE(CKM_CAMELLIA_ECB);
445
0
        CASE(CKM_CAMELLIA_ECB_ENCRYPT_DATA);
446
0
        CASE(CKM_CAMELLIA_KEY_GEN);
447
0
        CASE(CKM_CAMELLIA_MAC);
448
0
        CASE(CKM_CAMELLIA_MAC_GENERAL);
449
0
        CASE(CKM_CHACHA20_KEY_GEN);
450
0
        CASE(CKM_CHACHA20);
451
0
        CASE(CKM_CDMF_CBC);
452
0
        CASE(CKM_CDMF_CBC_PAD);
453
0
        CASE(CKM_CDMF_ECB);
454
0
        CASE(CKM_CDMF_KEY_GEN);
455
0
        CASE(CKM_CDMF_MAC);
456
0
        CASE(CKM_CDMF_MAC_GENERAL);
457
0
        CASE(CKM_CMS_SIG);
458
0
        CASE(CKM_CONCATENATE_BASE_AND_DATA);
459
0
        CASE(CKM_CONCATENATE_BASE_AND_KEY);
460
0
        CASE(CKM_CONCATENATE_DATA_AND_BASE);
461
0
        CASE(CKM_DES2_KEY_GEN);
462
0
        CASE(CKM_DES3_CBC);
463
0
        CASE(CKM_DES3_CBC_ENCRYPT_DATA);
464
0
        CASE(CKM_DES3_CBC_PAD);
465
0
        CASE(CKM_DES3_ECB);
466
0
        CASE(CKM_DES3_ECB_ENCRYPT_DATA);
467
0
        CASE(CKM_DES3_KEY_GEN);
468
0
        CASE(CKM_DES3_MAC);
469
0
        CASE(CKM_DES3_MAC_GENERAL);
470
0
        CASE(CKM_DES_CBC);
471
0
        CASE(CKM_DES_CBC_ENCRYPT_DATA);
472
0
        CASE(CKM_DES_CBC_PAD);
473
0
        CASE(CKM_DES_CFB64);
474
0
        CASE(CKM_DES_CFB8);
475
0
        CASE(CKM_DES_ECB);
476
0
        CASE(CKM_DES_ECB_ENCRYPT_DATA);
477
0
        CASE(CKM_DES_KEY_GEN);
478
0
        CASE(CKM_DES_MAC);
479
0
        CASE(CKM_DES_MAC_GENERAL);
480
0
        CASE(CKM_DES_OFB64);
481
0
        CASE(CKM_DES_OFB8);
482
0
        CASE(CKM_DH_PKCS_DERIVE);
483
0
        CASE(CKM_DH_PKCS_KEY_PAIR_GEN);
484
0
        CASE(CKM_DH_PKCS_PARAMETER_GEN);
485
0
        CASE(CKM_DSA);
486
0
        CASE(CKM_DSA_KEY_PAIR_GEN);
487
0
        CASE(CKM_DSA_PARAMETER_GEN);
488
0
        CASE(CKM_DSA_SHA1);
489
0
        CASE(CKM_ECDH1_COFACTOR_DERIVE);
490
0
        CASE(CKM_ECDH1_DERIVE);
491
0
        CASE(CKM_ECDSA);
492
0
        CASE(CKM_ECDSA_SHA1);
493
0
        CASE(CKM_ECMQV_DERIVE);
494
0
        CASE(CKM_EC_KEY_PAIR_GEN); /* also CASE(CKM_ECDSA_KEY_PAIR_GEN); */
495
0
        CASE(CKM_EXTRACT_KEY_FROM_KEY);
496
0
        CASE(CKM_ECDSA_SHA224);
497
0
        CASE(CKM_ECDSA_SHA256);
498
0
        CASE(CKM_ECDSA_SHA384);
499
0
        CASE(CKM_ECDSA_SHA512);
500
0
        CASE(CKM_EC_KEY_PAIR_GEN_W_EXTRA_BITS);
501
0
        CASE(CKM_FASTHASH);
502
0
        CASE(CKM_FORTEZZA_TIMESTAMP);
503
0
        CASE(CKM_GENERIC_SECRET_KEY_GEN);
504
0
        CASE(CKM_IDEA_CBC);
505
0
        CASE(CKM_IDEA_CBC_PAD);
506
0
        CASE(CKM_IDEA_ECB);
507
0
        CASE(CKM_IDEA_KEY_GEN);
508
0
        CASE(CKM_IDEA_MAC);
509
0
        CASE(CKM_IDEA_MAC_GENERAL);
510
0
        CASE(CKM_KEA_KEY_DERIVE);
511
0
        CASE(CKM_KEA_KEY_PAIR_GEN);
512
0
        CASE(CKM_KEY_WRAP_LYNKS);
513
0
        CASE(CKM_KEY_WRAP_SET_OAEP);
514
0
        CASE(CKM_MD2);
515
0
        CASE(CKM_MD2_HMAC);
516
0
        CASE(CKM_MD2_HMAC_GENERAL);
517
0
        CASE(CKM_MD2_KEY_DERIVATION);
518
0
        CASE(CKM_MD2_RSA_PKCS);
519
0
        CASE(CKM_MD5);
520
0
        CASE(CKM_MD5_HMAC);
521
0
        CASE(CKM_MD5_HMAC_GENERAL);
522
0
        CASE(CKM_MD5_KEY_DERIVATION);
523
0
        CASE(CKM_MD5_RSA_PKCS);
524
0
        CASE(CKM_PBA_SHA1_WITH_SHA1_HMAC);
525
0
        CASE(CKM_PBE_MD2_DES_CBC);
526
0
        CASE(CKM_PBE_MD5_DES_CBC);
527
0
        CASE(CKM_PBE_SHA1_DES2_EDE_CBC);
528
0
        CASE(CKM_PBE_SHA1_DES3_EDE_CBC);
529
0
        CASE(CKM_PBE_SHA1_RC2_128_CBC);
530
0
        CASE(CKM_PBE_SHA1_RC2_40_CBC);
531
0
        CASE(CKM_PBE_SHA1_RC4_128);
532
0
        CASE(CKM_PBE_SHA1_RC4_40);
533
0
        CASE(CKM_PKCS5_PBKD2);
534
0
        CASE(CKM_POLY1305_KEY_GEN);
535
0
        CASE(CKM_POLY1305);
536
0
        CASE(CKM_RC2_CBC);
537
0
        CASE(CKM_RC2_CBC_PAD);
538
0
        CASE(CKM_RC2_ECB);
539
0
        CASE(CKM_RC2_KEY_GEN);
540
0
        CASE(CKM_RC2_MAC);
541
0
        CASE(CKM_RC2_MAC_GENERAL);
542
0
        CASE(CKM_RC4);
543
0
        CASE(CKM_RC4_KEY_GEN);
544
0
        CASE(CKM_RC5_CBC);
545
0
        CASE(CKM_RC5_CBC_PAD);
546
0
        CASE(CKM_RC5_ECB);
547
0
        CASE(CKM_RC5_KEY_GEN);
548
0
        CASE(CKM_RC5_MAC);
549
0
        CASE(CKM_RC5_MAC_GENERAL);
550
0
        CASE(CKM_RIPEMD128);
551
0
        CASE(CKM_RIPEMD128_HMAC);
552
0
        CASE(CKM_RIPEMD128_HMAC_GENERAL);
553
0
        CASE(CKM_RIPEMD128_RSA_PKCS);
554
0
        CASE(CKM_RIPEMD160);
555
0
        CASE(CKM_RIPEMD160_HMAC);
556
0
        CASE(CKM_RIPEMD160_HMAC_GENERAL);
557
0
        CASE(CKM_RIPEMD160_RSA_PKCS);
558
0
        CASE(CKM_RSA_9796);
559
0
        CASE(CKM_RSA_PKCS);
560
0
        CASE(CKM_RSA_PKCS_KEY_PAIR_GEN);
561
0
        CASE(CKM_RSA_PKCS_OAEP);
562
0
        CASE(CKM_RSA_PKCS_PSS);
563
0
        CASE(CKM_RSA_X9_31);
564
0
        CASE(CKM_RSA_X9_31_KEY_PAIR_GEN);
565
0
        CASE(CKM_RSA_X_509);
566
0
        CASE(CKM_SHA1_KEY_DERIVATION);
567
0
        CASE(CKM_SHA1_RSA_PKCS);
568
0
        CASE(CKM_SHA1_RSA_PKCS_PSS);
569
0
        CASE(CKM_SHA1_RSA_X9_31);
570
0
        CASE(CKM_SHA224);
571
0
        CASE(CKM_SHA224_HMAC);
572
0
        CASE(CKM_SHA224_HMAC_GENERAL);
573
0
        CASE(CKM_SHA224_KEY_DERIVATION);
574
0
        CASE(CKM_SHA224_RSA_PKCS);
575
0
        CASE(CKM_SHA224_RSA_PKCS_PSS);
576
0
        CASE(CKM_SHA256);
577
0
        CASE(CKM_SHA256_HMAC);
578
0
        CASE(CKM_SHA256_HMAC_GENERAL);
579
0
        CASE(CKM_SHA256_KEY_DERIVATION);
580
0
        CASE(CKM_SHA256_RSA_PKCS);
581
0
        CASE(CKM_SHA256_RSA_PKCS_PSS);
582
0
        CASE(CKM_SHA384);
583
0
        CASE(CKM_SHA384_HMAC);
584
0
        CASE(CKM_SHA384_HMAC_GENERAL);
585
0
        CASE(CKM_SHA384_KEY_DERIVATION);
586
0
        CASE(CKM_SHA384_RSA_PKCS);
587
0
        CASE(CKM_SHA384_RSA_PKCS_PSS);
588
0
        CASE(CKM_SHA512);
589
0
        CASE(CKM_SHA512_HMAC);
590
0
        CASE(CKM_SHA512_HMAC_GENERAL);
591
0
        CASE(CKM_SHA512_KEY_DERIVATION);
592
0
        CASE(CKM_SHA512_RSA_PKCS);
593
0
        CASE(CKM_SHA512_RSA_PKCS_PSS);
594
0
        CASE(CKM_SHA_1);
595
0
        CASE(CKM_SHA_1_HMAC);
596
0
        CASE(CKM_SHA_1_HMAC_GENERAL);
597
0
        CASE(CKM_SKIPJACK_CBC64);
598
0
        CASE(CKM_SKIPJACK_CFB16);
599
0
        CASE(CKM_SKIPJACK_CFB32);
600
0
        CASE(CKM_SKIPJACK_CFB64);
601
0
        CASE(CKM_SKIPJACK_CFB8);
602
0
        CASE(CKM_SKIPJACK_ECB64);
603
0
        CASE(CKM_SKIPJACK_KEY_GEN);
604
0
        CASE(CKM_SKIPJACK_OFB64);
605
0
        CASE(CKM_SKIPJACK_PRIVATE_WRAP);
606
0
        CASE(CKM_SKIPJACK_RELAYX);
607
0
        CASE(CKM_SKIPJACK_WRAP);
608
0
        CASE(CKM_SSL3_KEY_AND_MAC_DERIVE);
609
0
        CASE(CKM_SSL3_MASTER_KEY_DERIVE);
610
0
        CASE(CKM_SSL3_MASTER_KEY_DERIVE_DH);
611
0
        CASE(CKM_SSL3_MD5_MAC);
612
0
        CASE(CKM_SSL3_PRE_MASTER_KEY_GEN);
613
0
        CASE(CKM_SSL3_SHA1_MAC);
614
0
        CASE(CKM_TLS_KEY_AND_MAC_DERIVE);
615
0
        CASE(CKM_TLS_MASTER_KEY_DERIVE);
616
0
        CASE(CKM_TLS_MASTER_KEY_DERIVE_DH);
617
0
        CASE(CKM_TLS_PRE_MASTER_KEY_GEN);
618
0
        CASE(CKM_TLS_PRF);
619
0
        CASE(CKM_TWOFISH_CBC);
620
0
        CASE(CKM_TWOFISH_KEY_GEN);
621
0
        CASE(CKM_X9_42_DH_DERIVE);
622
0
        CASE(CKM_X9_42_DH_HYBRID_DERIVE);
623
0
        CASE(CKM_X9_42_DH_KEY_PAIR_GEN);
624
0
        CASE(CKM_X9_42_DH_PARAMETER_GEN);
625
0
        CASE(CKM_X9_42_MQV_DERIVE);
626
0
        CASE(CKM_XOR_BASE_AND_DATA);
627
0
        default:
628
0
            break;
629
0
    }
630
0
    if (a)
631
0
        PR_LOG(modlog, 4, ("      mechanism = %s", a));
632
0
    else
633
0
        PR_LOG(modlog, 4, ("      mechanism = 0x%p", m->mechanism));
634
0
}
635
636
static void
637
get_key_type(CK_KEY_TYPE keyType, char *str, int len)
638
0
{
639
640
0
    const char *a = NULL;
641
642
0
    switch (keyType) {
643
0
        CASE(CKK_AES);
644
0
        CASE(CKK_CAMELLIA);
645
0
        CASE(CKK_CDMF);
646
0
        CASE(CKK_DES);
647
0
        CASE(CKK_DES2);
648
0
        CASE(CKK_DES3);
649
0
        CASE(CKK_DH);
650
0
        CASE(CKK_DSA);
651
0
        CASE(CKK_EC); /* also CASE(CKK_ECDSA); */
652
0
        CASE(CKK_GENERIC_SECRET);
653
0
        CASE(CKK_IDEA);
654
0
        CASE(CKK_INVALID_KEY_TYPE);
655
0
        CASE(CKK_KEA);
656
0
        CASE(CKK_RC2);
657
0
        CASE(CKK_RC4);
658
0
        CASE(CKK_RC5);
659
0
        CASE(CKK_RSA);
660
0
        CASE(CKK_SKIPJACK);
661
0
        CASE(CKK_TWOFISH);
662
0
        CASE(CKK_X9_42_DH);
663
0
        CASE(CKK_MD5_HMAC);
664
0
        CASE(CKK_SHA_1_HMAC);
665
0
        CASE(CKK_RIPEMD128_HMAC);
666
0
        CASE(CKK_RIPEMD160_HMAC);
667
0
        CASE(CKK_SHA256_HMAC);
668
0
        CASE(CKK_SHA384_HMAC);
669
0
        CASE(CKK_SHA512_HMAC);
670
0
        CASE(CKK_SHA224_HMAC);
671
0
        CASE(CKK_GOSTR3410);
672
0
        CASE(CKK_GOSTR3411);
673
0
        CASE(CKK_GOST28147);
674
0
        CASE(CKK_CHACHA20);
675
0
        CASE(CKK_POLY1305);
676
0
        CASE(CKK_AES_XTS);
677
0
        CASE(CKK_SHA3_224_HMAC);
678
0
        CASE(CKK_SHA3_256_HMAC);
679
0
        CASE(CKK_SHA3_384_HMAC);
680
0
        CASE(CKK_SHA3_512_HMAC);
681
0
        CASE(CKK_BLAKE2B_160_HMAC);
682
0
        CASE(CKK_BLAKE2B_256_HMAC);
683
0
        CASE(CKK_BLAKE2B_384_HMAC);
684
0
        CASE(CKK_BLAKE2B_512_HMAC);
685
0
        CASE(CKK_SALSA20);
686
0
        CASE(CKK_X2RATCHET);
687
0
        CASE(CKK_EC_EDWARDS);
688
0
        CASE(CKK_EC_MONTGOMERY);
689
0
        CASE(CKK_HKDF);
690
0
        CASE(CKK_SHA512_224_HMAC);
691
0
        CASE(CKK_SHA512_256_HMAC);
692
0
        CASE(CKK_SHA512_T_HMAC);
693
0
        default:
694
0
            break;
695
0
    }
696
0
    if (a)
697
0
        PR_snprintf(str, len, "%s", a);
698
0
    else
699
0
        PR_snprintf(str, len, "0x%p", keyType);
700
0
}
701
702
static void
703
print_attr_value(CK_ATTRIBUTE_PTR attr)
704
0
{
705
0
    char atype[48];
706
0
    char valstr[49];
707
0
    int len;
708
709
0
    get_attr_type_str(attr->type, atype, sizeof atype);
710
0
    switch (attr->type) {
711
0
        case CKA_ALWAYS_SENSITIVE:
712
0
        case CKA_DECRYPT:
713
0
        case CKA_DERIVE:
714
0
        case CKA_ENCRYPT:
715
0
        case CKA_EXTRACTABLE:
716
0
        case CKA_LOCAL:
717
0
        case CKA_MODIFIABLE:
718
0
        case CKA_NEVER_EXTRACTABLE:
719
0
        case CKA_PRIVATE:
720
0
        case CKA_SENSITIVE:
721
0
        case CKA_SIGN:
722
0
        case CKA_SIGN_RECOVER:
723
0
        case CKA_TOKEN:
724
0
        case CKA_UNWRAP:
725
0
        case CKA_VERIFY:
726
0
        case CKA_VERIFY_RECOVER:
727
0
        case CKA_WRAP:
728
0
            if (attr->ulValueLen > 0 && attr->pValue) {
729
0
                CK_BBOOL tf = *((CK_BBOOL *)attr->pValue);
730
0
                PR_LOG(modlog, 4, (fmt_s_s_d, atype, tf ? "CK_TRUE" : "CK_FALSE", attr->ulValueLen));
731
0
                break;
732
0
            }
733
0
        case CKA_CLASS:
734
0
            if (attr->ulValueLen > 0 && attr->pValue) {
735
0
                CK_OBJECT_CLASS objClass = *((CK_OBJECT_CLASS *)attr->pValue);
736
0
                get_obj_class(objClass, valstr, sizeof valstr);
737
0
                PR_LOG(modlog, 4, (fmt_s_s_d, atype, valstr, attr->ulValueLen));
738
0
                break;
739
0
            }
740
0
        case CKA_NSS_TRUST_CLIENT_AUTH:
741
0
        case CKA_NSS_TRUST_CODE_SIGNING:
742
0
        case CKA_NSS_TRUST_EMAIL_PROTECTION:
743
0
        case CKA_NSS_TRUST_SERVER_AUTH:
744
0
        case CKA_PKCS_TRUST_CLIENT_AUTH:
745
0
        case CKA_PKCS_TRUST_CODE_SIGNING:
746
0
        case CKA_PKCS_TRUST_EMAIL_PROTECTION:
747
0
        case CKA_PKCS_TRUST_SERVER_AUTH:
748
0
            if (attr->ulValueLen > 0 && attr->pValue) {
749
0
                CK_TRUST trust = *((CK_TRUST *)attr->pValue);
750
0
                get_trust_val(trust, valstr, sizeof valstr);
751
0
                PR_LOG(modlog, 4, (fmt_s_s_d, atype, valstr, attr->ulValueLen));
752
0
                break;
753
0
            }
754
0
        case CKA_KEY_TYPE:
755
0
            if (attr->ulValueLen > 0 && attr->pValue) {
756
0
                CK_KEY_TYPE keyType = *((CK_KEY_TYPE *)attr->pValue);
757
0
                get_key_type(keyType, valstr, sizeof valstr);
758
0
                PR_LOG(modlog, 4, (fmt_s_s_d, atype, valstr, attr->ulValueLen));
759
0
                break;
760
0
            }
761
0
        case CKA_PIXEL_X:
762
0
        case CKA_PIXEL_Y:
763
0
        case CKA_RESOLUTION:
764
0
        case CKA_CHAR_ROWS:
765
0
        case CKA_CHAR_COLUMNS:
766
0
        case CKA_BITS_PER_PIXEL:
767
0
        case CKA_CERTIFICATE_CATEGORY:      /* should print as enum/string */
768
0
        case CKA_JAVA_MIDP_SECURITY_DOMAIN: /* should print as enum/string */
769
0
        case CKA_MODULUS_BITS:
770
0
        case CKA_PRIME_BITS:
771
0
        case CKA_SUBPRIME_BITS:
772
0
        case CKA_VALUE_BITS:
773
0
        case CKA_VALUE_LEN:
774
0
            if (attr->ulValueLen > 0 && attr->pValue) {
775
0
                CK_ULONG valueLen = *((CK_ULONG *)attr->pValue);
776
                /* XXX check for the special value CK_UNAVAILABLE_INFORMATION */
777
0
                PR_LOG(modlog, 4, (fmt_s_lu, atype, (PRUint32)valueLen));
778
0
                break;
779
0
            }
780
0
        case CKA_LABEL:
781
0
        case CKA_NSS_EMAIL:
782
0
        case CKA_NSS_URL:
783
0
            if (attr->ulValueLen > 0 && attr->pValue) {
784
0
                len = PR_MIN(attr->ulValueLen + 1, sizeof valstr);
785
0
                PR_snprintf(valstr, len, "%s", attr->pValue);
786
0
                PR_LOG(modlog, 4, (fmt_s_qsq_d, atype, valstr, attr->ulValueLen));
787
0
                break;
788
0
            }
789
0
        case CKA_PROFILE_ID:
790
0
            if (attr->ulValueLen > 0 && attr->pValue) {
791
0
                CK_PROFILE_ID profile = *((CK_PROFILE_ID *)attr->pValue);
792
0
                get_profile_val(profile, valstr, sizeof valstr);
793
0
                PR_LOG(modlog, 4, (fmt_s_s_d, atype, valstr, attr->ulValueLen));
794
0
                break;
795
0
            }
796
0
        case CKA_ISSUER:
797
0
        case CKA_SUBJECT:
798
0
            if (attr->ulValueLen > 0 && attr->pValue) {
799
0
                char *asciiName;
800
0
                SECItem derName;
801
0
                derName.type = siDERNameBuffer;
802
0
                derName.data = attr->pValue;
803
0
                derName.len = attr->ulValueLen;
804
0
                asciiName = CERT_DerNameToAscii(&derName);
805
0
                if (asciiName) {
806
0
                    PR_LOG(modlog, 4, (fmt_s_s_d, atype, asciiName, attr->ulValueLen));
807
0
                    PORT_Free(asciiName);
808
0
                    break;
809
0
                }
810
                /* else treat like a binary buffer */
811
0
                goto binary_buffer;
812
0
            }
813
0
        case CKA_ID:
814
0
            if (attr->ulValueLen > 0 && attr->pValue) {
815
0
                unsigned char *pV = attr->pValue;
816
0
                for (len = (int)attr->ulValueLen; len > 0; --len) {
817
0
                    unsigned int ch = *pV++;
818
0
                    if (ch >= 0x20 && ch < 0x7f)
819
0
                        continue;
820
0
                    if (!ch && len == 1) /* will ignore NUL if last character */
821
0
                        continue;
822
0
                    break;
823
0
                }
824
0
                if (!len) { /* entire string is printable */
825
0
                    len = PR_MIN(attr->ulValueLen + 1, sizeof valstr);
826
0
                    PR_snprintf(valstr, len, "%s", attr->pValue);
827
0
                    PR_LOG(modlog, 4, (fmt_s_qsq_d, atype, valstr, attr->ulValueLen));
828
0
                    break;
829
0
                }
830
                /* else fall through and treat like a binary buffer */
831
0
            }
832
0
        binary_buffer:
833
0
        case CKA_SERIAL_NUMBER:
834
0
        default:
835
0
            if (attr->ulValueLen > 0 && attr->pValue) {
836
0
                char *hexBuf;
837
0
                SECItem attrBuf;
838
0
                attrBuf.type = siDERNameBuffer;
839
0
                attrBuf.data = attr->pValue;
840
0
                attrBuf.len = PR_MIN(attr->ulValueLen, (sizeof valstr) / 2);
841
842
0
                hexBuf = CERT_Hexify(&attrBuf, PR_FALSE);
843
0
                if (hexBuf) {
844
0
                    PR_LOG(modlog, 4, (fmt_s_s_d, atype, hexBuf, attr->ulValueLen));
845
0
                    PORT_Free(hexBuf);
846
0
                    break;
847
0
                }
848
                /* else fall through and show only the address. :( */
849
0
            }
850
0
            PR_LOG(modlog, 4, ("    %s = [0x%p] [%d]", atype, attr->pValue, attr->ulValueLen));
851
0
            break;
852
0
    }
853
0
}
854
855
static void
856
print_template(CK_ATTRIBUTE_PTR templ, CK_ULONG tlen)
857
0
{
858
0
    CK_ULONG i;
859
0
    for (i = 0; i < tlen; i++) {
860
0
        print_attr_value(&templ[i]);
861
0
    }
862
0
}
863
864
struct nssdbg_prof_str {
865
    PRUint32 time;
866
    PRUint32 calls;
867
    char *function;
868
};
869
870
#define NSSDBG_DEFINE(func) \
871
    {                       \
872
        0, 0, #func         \
873
    }
874
875
struct nssdbg_prof_str nssdbg_prof_data[] = {
876
0
#define FUNC_C_INITIALIZE 0
877
    NSSDBG_DEFINE(C_Initialize),
878
0
#define FUNC_C_FINALIZE 1
879
    NSSDBG_DEFINE(C_Finalize),
880
0
#define FUNC_C_GETINFO 2
881
    NSSDBG_DEFINE(C_GetInfo),
882
0
#define FUNC_C_GETFUNCITONLIST 3
883
    NSSDBG_DEFINE(C_GetFunctionList),
884
0
#define FUNC_C_GETSLOTLIST 4
885
    NSSDBG_DEFINE(C_GetSlotList),
886
0
#define FUNC_C_GETSLOTINFO 5
887
    NSSDBG_DEFINE(C_GetSlotInfo),
888
0
#define FUNC_C_GETTOKENINFO 6
889
    NSSDBG_DEFINE(C_GetTokenInfo),
890
0
#define FUNC_C_GETMECHANISMLIST 7
891
    NSSDBG_DEFINE(C_GetMechanismList),
892
0
#define FUNC_C_GETMECHANISMINFO 8
893
    NSSDBG_DEFINE(C_GetMechanismInfo),
894
0
#define FUNC_C_INITTOKEN 9
895
    NSSDBG_DEFINE(C_InitToken),
896
0
#define FUNC_C_INITPIN 10
897
    NSSDBG_DEFINE(C_InitPIN),
898
0
#define FUNC_C_SETPIN 11
899
    NSSDBG_DEFINE(C_SetPIN),
900
0
#define FUNC_C_OPENSESSION 12
901
    NSSDBG_DEFINE(C_OpenSession),
902
0
#define FUNC_C_CLOSESESSION 13
903
    NSSDBG_DEFINE(C_CloseSession),
904
0
#define FUNC_C_CLOSEALLSESSIONS 14
905
    NSSDBG_DEFINE(C_CloseAllSessions),
906
0
#define FUNC_C_GETSESSIONINFO 15
907
    NSSDBG_DEFINE(C_GetSessionInfo),
908
0
#define FUNC_C_GETOPERATIONSTATE 16
909
    NSSDBG_DEFINE(C_GetOperationState),
910
0
#define FUNC_C_SETOPERATIONSTATE 17
911
    NSSDBG_DEFINE(C_SetOperationState),
912
0
#define FUNC_C_LOGIN 18
913
    NSSDBG_DEFINE(C_Login),
914
0
#define FUNC_C_LOGOUT 19
915
    NSSDBG_DEFINE(C_Logout),
916
0
#define FUNC_C_CREATEOBJECT 20
917
    NSSDBG_DEFINE(C_CreateObject),
918
0
#define FUNC_C_COPYOBJECT 21
919
    NSSDBG_DEFINE(C_CopyObject),
920
0
#define FUNC_C_DESTROYOBJECT 22
921
    NSSDBG_DEFINE(C_DestroyObject),
922
0
#define FUNC_C_GETOBJECTSIZE 23
923
    NSSDBG_DEFINE(C_GetObjectSize),
924
0
#define FUNC_C_GETATTRIBUTEVALUE 24
925
    NSSDBG_DEFINE(C_GetAttributeValue),
926
0
#define FUNC_C_SETATTRIBUTEVALUE 25
927
    NSSDBG_DEFINE(C_SetAttributeValue),
928
0
#define FUNC_C_FINDOBJECTSINIT 26
929
    NSSDBG_DEFINE(C_FindObjectsInit),
930
0
#define FUNC_C_FINDOBJECTS 27
931
    NSSDBG_DEFINE(C_FindObjects),
932
0
#define FUNC_C_FINDOBJECTSFINAL 28
933
    NSSDBG_DEFINE(C_FindObjectsFinal),
934
0
#define FUNC_C_ENCRYPTINIT 29
935
    NSSDBG_DEFINE(C_EncryptInit),
936
0
#define FUNC_C_ENCRYPT 30
937
    NSSDBG_DEFINE(C_Encrypt),
938
0
#define FUNC_C_ENCRYPTUPDATE 31
939
    NSSDBG_DEFINE(C_EncryptUpdate),
940
0
#define FUNC_C_ENCRYPTFINAL 32
941
    NSSDBG_DEFINE(C_EncryptFinal),
942
0
#define FUNC_C_DECRYPTINIT 33
943
    NSSDBG_DEFINE(C_DecryptInit),
944
0
#define FUNC_C_DECRYPT 34
945
    NSSDBG_DEFINE(C_Decrypt),
946
0
#define FUNC_C_DECRYPTUPDATE 35
947
    NSSDBG_DEFINE(C_DecryptUpdate),
948
0
#define FUNC_C_DECRYPTFINAL 36
949
    NSSDBG_DEFINE(C_DecryptFinal),
950
0
#define FUNC_C_DIGESTINIT 37
951
    NSSDBG_DEFINE(C_DigestInit),
952
0
#define FUNC_C_DIGEST 38
953
    NSSDBG_DEFINE(C_Digest),
954
0
#define FUNC_C_DIGESTUPDATE 39
955
    NSSDBG_DEFINE(C_DigestUpdate),
956
0
#define FUNC_C_DIGESTKEY 40
957
    NSSDBG_DEFINE(C_DigestKey),
958
0
#define FUNC_C_DIGESTFINAL 41
959
    NSSDBG_DEFINE(C_DigestFinal),
960
0
#define FUNC_C_SIGNINIT 42
961
    NSSDBG_DEFINE(C_SignInit),
962
0
#define FUNC_C_SIGN 43
963
    NSSDBG_DEFINE(C_Sign),
964
0
#define FUNC_C_SIGNUPDATE 44
965
    NSSDBG_DEFINE(C_SignUpdate),
966
0
#define FUNC_C_SIGNFINAL 45
967
    NSSDBG_DEFINE(C_SignFinal),
968
0
#define FUNC_C_SIGNRECOVERINIT 46
969
    NSSDBG_DEFINE(C_SignRecoverInit),
970
0
#define FUNC_C_SIGNRECOVER 47
971
    NSSDBG_DEFINE(C_SignRecover),
972
0
#define FUNC_C_VERIFYINIT 48
973
    NSSDBG_DEFINE(C_VerifyInit),
974
0
#define FUNC_C_VERIFY 49
975
    NSSDBG_DEFINE(C_Verify),
976
0
#define FUNC_C_VERIFYUPDATE 50
977
    NSSDBG_DEFINE(C_VerifyUpdate),
978
0
#define FUNC_C_VERIFYFINAL 51
979
    NSSDBG_DEFINE(C_VerifyFinal),
980
0
#define FUNC_C_VERIFYRECOVERINIT 52
981
    NSSDBG_DEFINE(C_VerifyRecoverInit),
982
0
#define FUNC_C_VERIFYRECOVER 53
983
    NSSDBG_DEFINE(C_VerifyRecover),
984
0
#define FUNC_C_DIGESTENCRYPTUPDATE 54
985
    NSSDBG_DEFINE(C_DigestEncryptUpdate),
986
0
#define FUNC_C_DECRYPTDIGESTUPDATE 55
987
    NSSDBG_DEFINE(C_DecryptDigestUpdate),
988
0
#define FUNC_C_SIGNENCRYPTUPDATE 56
989
    NSSDBG_DEFINE(C_SignEncryptUpdate),
990
0
#define FUNC_C_DECRYPTVERIFYUPDATE 57
991
    NSSDBG_DEFINE(C_DecryptVerifyUpdate),
992
0
#define FUNC_C_GENERATEKEY 58
993
    NSSDBG_DEFINE(C_GenerateKey),
994
0
#define FUNC_C_GENERATEKEYPAIR 59
995
    NSSDBG_DEFINE(C_GenerateKeyPair),
996
0
#define FUNC_C_WRAPKEY 60
997
    NSSDBG_DEFINE(C_WrapKey),
998
0
#define FUNC_C_UNWRAPKEY 61
999
    NSSDBG_DEFINE(C_UnWrapKey),
1000
0
#define FUNC_C_DERIVEKEY 62
1001
    NSSDBG_DEFINE(C_DeriveKey),
1002
0
#define FUNC_C_SEEDRANDOM 63
1003
    NSSDBG_DEFINE(C_SeedRandom),
1004
0
#define FUNC_C_GENERATERANDOM 64
1005
    NSSDBG_DEFINE(C_GenerateRandom),
1006
0
#define FUNC_C_GETFUNCTIONSTATUS 65
1007
    NSSDBG_DEFINE(C_GetFunctionStatus),
1008
0
#define FUNC_C_CANCELFUNCTION 66
1009
    NSSDBG_DEFINE(C_CancelFunction),
1010
0
#define FUNC_C_WAITFORSLOTEVENT 67
1011
    NSSDBG_DEFINE(C_WaitForSlotEvent),
1012
0
#define FUNC_C_GETINTERFACELIST 68
1013
    NSSDBG_DEFINE(C_GetInterfaceList),
1014
0
#define FUNC_C_GETINTERFACE 69
1015
    NSSDBG_DEFINE(C_GetInterface),
1016
0
#define FUNC_C_LOGINUSER 70
1017
    NSSDBG_DEFINE(C_LoginUser),
1018
0
#define FUNC_C_SESSIONCANCEL 71
1019
    NSSDBG_DEFINE(C_SessionCancel),
1020
0
#define FUNC_C_MESSAGEENCRYPTINIT 72
1021
    NSSDBG_DEFINE(C_MessageEncryptInit),
1022
0
#define FUNC_C_ENCRYPTMESSAGE 73
1023
    NSSDBG_DEFINE(C_EncryptMessage),
1024
0
#define FUNC_C_ENCRYPTMESSAGEBEGIN 74
1025
    NSSDBG_DEFINE(C_EncryptMessageBegin),
1026
0
#define FUNC_C_ENCRYPTMESSAGENEXT 75
1027
    NSSDBG_DEFINE(C_EncryptMessageNext),
1028
0
#define FUNC_C_MESSAGEENCRYPTFINAL 76
1029
    NSSDBG_DEFINE(C_MessageEncryptFinal),
1030
0
#define FUNC_C_MESSAGEDECRYPTINIT 77
1031
    NSSDBG_DEFINE(C_MessageDecryptInit),
1032
0
#define FUNC_C_DECRYPTMESSAGE 78
1033
    NSSDBG_DEFINE(C_DecryptMessage),
1034
0
#define FUNC_C_DECRYPTMESSAGEBEGIN 79
1035
    NSSDBG_DEFINE(C_DecryptMessageBegin),
1036
0
#define FUNC_C_DECRYPTMESSAGENEXT 80
1037
    NSSDBG_DEFINE(C_DecryptMessageNext),
1038
0
#define FUNC_C_MESSAGEDECRYPTFINAL 81
1039
    NSSDBG_DEFINE(C_MessageDecryptFinal),
1040
0
#define FUNC_C_MESSAGESIGNINIT 82
1041
    NSSDBG_DEFINE(C_MessageSignInit),
1042
0
#define FUNC_C_SIGNMESSAGE 83
1043
    NSSDBG_DEFINE(C_SignMessage),
1044
0
#define FUNC_C_SIGNMESSAGEBEGIN 84
1045
    NSSDBG_DEFINE(C_SignMessageBegin),
1046
0
#define FUNC_C_SIGNMESSAGENEXT 85
1047
    NSSDBG_DEFINE(C_SignMessageNext),
1048
0
#define FUNC_C_MESSAGESIGNFINAL 86
1049
    NSSDBG_DEFINE(C_MessageSignFinal),
1050
0
#define FUNC_C_MESSAGEVERIFYINIT 87
1051
    NSSDBG_DEFINE(C_MessageVerifyInit),
1052
0
#define FUNC_C_VERIFYMESSAGE 88
1053
    NSSDBG_DEFINE(C_VerifyMessage),
1054
0
#define FUNC_C_VERIFYMESSAGEBEGIN 89
1055
    NSSDBG_DEFINE(C_VerifyMessageBegin),
1056
0
#define FUNC_C_VERIFYMESSAGENEXT 90
1057
    NSSDBG_DEFINE(C_VerifyMessageNext),
1058
0
#define FUNC_C_MESSAGEVERIFYFINAL 91
1059
    NSSDBG_DEFINE(C_MessageVerifyFinal)
1060
};
1061
1062
int nssdbg_prof_size = sizeof(nssdbg_prof_data) / sizeof(nssdbg_prof_data[0]);
1063
1064
static void
1065
nssdbg_finish_time(PRInt32 fun_number, PRIntervalTime start)
1066
0
{
1067
0
    PRIntervalTime ival;
1068
0
    PRIntervalTime end = PR_IntervalNow();
1069
1070
0
    ival = end - start;
1071
    /* sigh, lie to PRAtomic add and say we are using signed values */
1072
0
    PR_ATOMIC_ADD((PRInt32 *)&nssdbg_prof_data[fun_number].time, (PRInt32)ival);
1073
0
}
1074
1075
static void
1076
nssdbg_start_time(PRInt32 fun_number, PRIntervalTime *start)
1077
0
{
1078
0
    PR_ATOMIC_INCREMENT((PRInt32 *)&nssdbg_prof_data[fun_number].calls);
1079
0
    *start = PR_IntervalNow();
1080
0
}
1081
1082
#define COMMON_DEFINITIONS \
1083
0
    CK_RV rv;              \
1084
0
    PRIntervalTime start
1085
1086
CK_RV
1087
NSSDBGC_Initialize(
1088
    CK_VOID_PTR pInitArgs)
1089
0
{
1090
0
    COMMON_DEFINITIONS;
1091
1092
0
    PR_LOG(modlog, 1, ("C_Initialize"));
1093
0
    PR_LOG(modlog, 3, ("  pInitArgs = 0x%p", pInitArgs));
1094
0
    nssdbg_start_time(FUNC_C_INITIALIZE, &start);
1095
0
    rv = module_functions->C_Initialize(pInitArgs);
1096
0
    nssdbg_finish_time(FUNC_C_INITIALIZE, start);
1097
0
    log_rv(rv);
1098
0
    return rv;
1099
0
}
1100
1101
CK_RV
1102
NSSDBGC_Finalize(
1103
    CK_VOID_PTR pReserved)
1104
0
{
1105
0
    COMMON_DEFINITIONS;
1106
1107
0
    PR_LOG(modlog, 1, ("C_Finalize"));
1108
0
    PR_LOG(modlog, 3, ("  pReserved = 0x%p", pReserved));
1109
0
    nssdbg_start_time(FUNC_C_FINALIZE, &start);
1110
0
    rv = module_functions->C_Finalize(pReserved);
1111
0
    nssdbg_finish_time(FUNC_C_FINALIZE, start);
1112
0
    log_rv(rv);
1113
0
    return rv;
1114
0
}
1115
1116
CK_RV
1117
NSSDBGC_GetInfo(
1118
    CK_INFO_PTR pInfo)
1119
0
{
1120
0
    COMMON_DEFINITIONS;
1121
1122
0
    PR_LOG(modlog, 1, ("C_GetInfo"));
1123
0
    PR_LOG(modlog, 3, (fmt_pInfo, pInfo));
1124
0
    nssdbg_start_time(FUNC_C_GETINFO, &start);
1125
0
    rv = module_functions->C_GetInfo(pInfo);
1126
0
    nssdbg_finish_time(FUNC_C_GETINFO, start);
1127
0
    if (rv == CKR_OK) {
1128
0
        PR_LOG(modlog, 4, ("  cryptoki version: %d.%d", pInfo->cryptokiVersion.major, pInfo->cryptokiVersion.minor));
1129
0
        PR_LOG(modlog, 4, (fmt_manufacturerID, pInfo->manufacturerID));
1130
0
        PR_LOG(modlog, 4, ("  library description = \"%.32s\"", pInfo->libraryDescription));
1131
0
        PR_LOG(modlog, 4, ("  library version: %d.%d", pInfo->libraryVersion.major, pInfo->libraryVersion.minor));
1132
0
    }
1133
0
    log_rv(rv);
1134
0
    return rv;
1135
0
}
1136
1137
CK_RV
1138
NSSDBGC_GetFunctionList(
1139
    CK_FUNCTION_LIST_PTR_PTR ppFunctionList)
1140
0
{
1141
0
    COMMON_DEFINITIONS;
1142
1143
0
    PR_LOG(modlog, 1, ("C_GetFunctionList"));
1144
0
    PR_LOG(modlog, 3, ("  ppFunctionList = 0x%p", ppFunctionList));
1145
0
    nssdbg_start_time(FUNC_C_GETFUNCITONLIST, &start);
1146
0
    rv = module_functions->C_GetFunctionList(ppFunctionList);
1147
0
    nssdbg_finish_time(FUNC_C_GETFUNCITONLIST, start);
1148
0
    log_rv(rv);
1149
0
    return rv;
1150
0
}
1151
1152
CK_RV
1153
NSSDBGC_GetSlotList(
1154
    CK_BBOOL tokenPresent,
1155
    CK_SLOT_ID_PTR pSlotList,
1156
    CK_ULONG_PTR pulCount)
1157
0
{
1158
0
    COMMON_DEFINITIONS;
1159
1160
0
    CK_ULONG i;
1161
0
    PR_LOG(modlog, 1, ("C_GetSlotList"));
1162
0
    PR_LOG(modlog, 3, ("  tokenPresent = 0x%x", tokenPresent));
1163
0
    PR_LOG(modlog, 3, ("  pSlotList = 0x%p", pSlotList));
1164
0
    PR_LOG(modlog, 3, (fmt_pulCount, pulCount));
1165
0
    nssdbg_start_time(FUNC_C_GETSLOTLIST, &start);
1166
0
    rv = module_functions->C_GetSlotList(tokenPresent, pSlotList, pulCount);
1167
0
    nssdbg_finish_time(FUNC_C_GETSLOTLIST, start);
1168
0
    PR_LOG(modlog, 4, (fmt_spulCount, *pulCount));
1169
0
    if (pSlotList) {
1170
0
        for (i = 0; i < *pulCount; i++) {
1171
0
            PR_LOG(modlog, 4, ("  slotID[%d] = %x", i, pSlotList[i]));
1172
0
        }
1173
0
    }
1174
0
    log_rv(rv);
1175
0
    return rv;
1176
0
}
1177
1178
CK_RV
1179
NSSDBGC_GetSlotInfo(
1180
    CK_SLOT_ID slotID,
1181
    CK_SLOT_INFO_PTR pInfo)
1182
0
{
1183
0
    COMMON_DEFINITIONS;
1184
1185
0
    PR_LOG(modlog, 1, ("C_GetSlotInfo"));
1186
0
    PR_LOG(modlog, 3, (fmt_slotID, slotID));
1187
0
    PR_LOG(modlog, 3, (fmt_pInfo, pInfo));
1188
0
    nssdbg_start_time(FUNC_C_GETSLOTINFO, &start);
1189
0
    rv = module_functions->C_GetSlotInfo(slotID, pInfo);
1190
0
    nssdbg_finish_time(FUNC_C_GETSLOTINFO, start);
1191
0
    if (rv == CKR_OK) {
1192
0
        PR_LOG(modlog, 4, ("  slotDescription = \"%.64s\"", pInfo->slotDescription));
1193
0
        PR_LOG(modlog, 4, (fmt_manufacturerID, pInfo->manufacturerID));
1194
0
        PR_LOG(modlog, 4, ("  flags = %s %s %s", pInfo->flags & CKF_HW_SLOT ? "CKF_HW_SLOT" : "", pInfo->flags & CKF_REMOVABLE_DEVICE ? "CKF_REMOVABLE_DEVICE" : "", pInfo->flags & CKF_TOKEN_PRESENT ? "CKF_TOKEN_PRESENT" : ""));
1195
0
        PR_LOG(modlog, 4, (fmt_hwVersion, pInfo->hardwareVersion.major, pInfo->hardwareVersion.minor));
1196
0
        PR_LOG(modlog, 4, (fmt_fwVersion, pInfo->firmwareVersion.major, pInfo->firmwareVersion.minor));
1197
0
    }
1198
0
    log_rv(rv);
1199
0
    return rv;
1200
0
}
1201
1202
CK_RV
1203
NSSDBGC_GetTokenInfo(
1204
    CK_SLOT_ID slotID,
1205
    CK_TOKEN_INFO_PTR pInfo)
1206
0
{
1207
0
    COMMON_DEFINITIONS;
1208
1209
0
    PR_LOG(modlog, 1, ("C_GetTokenInfo"));
1210
0
    PR_LOG(modlog, 3, (fmt_slotID, slotID));
1211
0
    PR_LOG(modlog, 3, (fmt_pInfo, pInfo));
1212
0
    nssdbg_start_time(FUNC_C_GETTOKENINFO, &start);
1213
0
    rv = module_functions->C_GetTokenInfo(slotID, pInfo);
1214
0
    nssdbg_finish_time(FUNC_C_GETTOKENINFO, start);
1215
0
    if (rv == CKR_OK) {
1216
0
        PR_LOG(modlog, 4, ("  label = \"%.32s\"", pInfo->label));
1217
0
        PR_LOG(modlog, 4, (fmt_manufacturerID, pInfo->manufacturerID));
1218
0
        PR_LOG(modlog, 4, ("  model = \"%.16s\"", pInfo->model));
1219
0
        PR_LOG(modlog, 4, ("  serial = \"%.16s\"", pInfo->serialNumber));
1220
0
        PR_LOG(modlog, 4, ("  flags = %s %s %s %s", pInfo->flags & CKF_RNG ? "CKF_RNG" : "", pInfo->flags & CKF_WRITE_PROTECTED ? "CKF_WRITE_PROTECTED" : "", pInfo->flags & CKF_LOGIN_REQUIRED ? "CKF_LOGIN_REQUIRED" : "", pInfo->flags & CKF_USER_PIN_INITIALIZED ? "CKF_USER_PIN_INIT" : ""));
1221
0
        PR_LOG(modlog, 4, ("  maxSessions = %u, Sessions = %u", pInfo->ulMaxSessionCount, pInfo->ulSessionCount));
1222
0
        PR_LOG(modlog, 4, ("  maxRwSessions = %u, RwSessions = %u", pInfo->ulMaxRwSessionCount, pInfo->ulRwSessionCount));
1223
        /* ignore Max & Min Pin Len, Public and Private Memory */
1224
0
        PR_LOG(modlog, 4, (fmt_hwVersion, pInfo->hardwareVersion.major, pInfo->hardwareVersion.minor));
1225
0
        PR_LOG(modlog, 4, (fmt_fwVersion, pInfo->firmwareVersion.major, pInfo->firmwareVersion.minor));
1226
0
    }
1227
0
    log_rv(rv);
1228
0
    return rv;
1229
0
}
1230
1231
CK_RV
1232
NSSDBGC_GetMechanismList(
1233
    CK_SLOT_ID slotID,
1234
    CK_MECHANISM_TYPE_PTR pMechanismList,
1235
    CK_ULONG_PTR pulCount)
1236
0
{
1237
0
    COMMON_DEFINITIONS;
1238
1239
0
    PR_LOG(modlog, 1, ("C_GetMechanismList"));
1240
0
    PR_LOG(modlog, 3, (fmt_slotID, slotID));
1241
0
    PR_LOG(modlog, 3, ("  pMechanismList = 0x%p", pMechanismList));
1242
0
    PR_LOG(modlog, 3, (fmt_pulCount, pulCount));
1243
0
    nssdbg_start_time(FUNC_C_GETMECHANISMLIST, &start);
1244
0
    rv = module_functions->C_GetMechanismList(slotID,
1245
0
                                              pMechanismList,
1246
0
                                              pulCount);
1247
0
    nssdbg_finish_time(FUNC_C_GETMECHANISMLIST, start);
1248
0
    PR_LOG(modlog, 4, (fmt_spulCount, *pulCount));
1249
0
    log_rv(rv);
1250
0
    return rv;
1251
0
}
1252
1253
CK_RV
1254
NSSDBGC_GetMechanismInfo(
1255
    CK_SLOT_ID slotID,
1256
    CK_MECHANISM_TYPE type,
1257
    CK_MECHANISM_INFO_PTR pInfo)
1258
0
{
1259
0
    COMMON_DEFINITIONS;
1260
1261
0
    PR_LOG(modlog, 1, ("C_GetMechanismInfo"));
1262
0
    PR_LOG(modlog, 3, (fmt_slotID, slotID));
1263
0
    PR_LOG(modlog, 3, ("  type = 0x%x", type));
1264
0
    PR_LOG(modlog, 3, (fmt_pInfo, pInfo));
1265
0
    nssdbg_start_time(FUNC_C_GETMECHANISMINFO, &start);
1266
0
    rv = module_functions->C_GetMechanismInfo(slotID,
1267
0
                                              type,
1268
0
                                              pInfo);
1269
0
    nssdbg_finish_time(FUNC_C_GETMECHANISMINFO, start);
1270
0
    log_rv(rv);
1271
0
    return rv;
1272
0
}
1273
1274
CK_RV
1275
NSSDBGC_InitToken(
1276
    CK_SLOT_ID slotID,
1277
    CK_CHAR_PTR pPin,
1278
    CK_ULONG ulPinLen,
1279
    CK_CHAR_PTR pLabel)
1280
0
{
1281
0
    COMMON_DEFINITIONS;
1282
1283
0
    PR_LOG(modlog, 1, ("C_InitToken"));
1284
0
    PR_LOG(modlog, 3, (fmt_slotID, slotID));
1285
0
    PR_LOG(modlog, 3, (fmt_pPin, pPin));
1286
0
    PR_LOG(modlog, 3, (fmt_ulPinLen, ulPinLen));
1287
0
    PR_LOG(modlog, 3, ("  pLabel = 0x%p", pLabel));
1288
0
    nssdbg_start_time(FUNC_C_INITTOKEN, &start);
1289
0
    rv = module_functions->C_InitToken(slotID,
1290
0
                                       pPin,
1291
0
                                       ulPinLen,
1292
0
                                       pLabel);
1293
0
    nssdbg_finish_time(FUNC_C_INITTOKEN, start);
1294
0
    log_rv(rv);
1295
0
    return rv;
1296
0
}
1297
1298
CK_RV
1299
NSSDBGC_InitPIN(
1300
    CK_SESSION_HANDLE hSession,
1301
    CK_CHAR_PTR pPin,
1302
    CK_ULONG ulPinLen)
1303
0
{
1304
0
    COMMON_DEFINITIONS;
1305
1306
0
    PR_LOG(modlog, 1, ("C_InitPIN"));
1307
0
    log_handle(3, fmt_hSession, hSession);
1308
0
    PR_LOG(modlog, 3, (fmt_pPin, pPin));
1309
0
    PR_LOG(modlog, 3, (fmt_ulPinLen, ulPinLen));
1310
0
    nssdbg_start_time(FUNC_C_INITPIN, &start);
1311
0
    rv = module_functions->C_InitPIN(hSession,
1312
0
                                     pPin,
1313
0
                                     ulPinLen);
1314
0
    nssdbg_finish_time(FUNC_C_INITPIN, start);
1315
0
    log_rv(rv);
1316
0
    return rv;
1317
0
}
1318
1319
CK_RV
1320
NSSDBGC_SetPIN(
1321
    CK_SESSION_HANDLE hSession,
1322
    CK_CHAR_PTR pOldPin,
1323
    CK_ULONG ulOldLen,
1324
    CK_CHAR_PTR pNewPin,
1325
    CK_ULONG ulNewLen)
1326
0
{
1327
0
    COMMON_DEFINITIONS;
1328
1329
0
    PR_LOG(modlog, 1, ("C_SetPIN"));
1330
0
    log_handle(3, fmt_hSession, hSession);
1331
0
    PR_LOG(modlog, 3, ("  pOldPin = 0x%p", pOldPin));
1332
0
    PR_LOG(modlog, 3, ("  ulOldLen = %d", ulOldLen));
1333
0
    PR_LOG(modlog, 3, ("  pNewPin = 0x%p", pNewPin));
1334
0
    PR_LOG(modlog, 3, ("  ulNewLen = %d", ulNewLen));
1335
0
    nssdbg_start_time(FUNC_C_SETPIN, &start);
1336
0
    rv = module_functions->C_SetPIN(hSession,
1337
0
                                    pOldPin,
1338
0
                                    ulOldLen,
1339
0
                                    pNewPin,
1340
0
                                    ulNewLen);
1341
0
    nssdbg_finish_time(FUNC_C_SETPIN, start);
1342
0
    log_rv(rv);
1343
0
    return rv;
1344
0
}
1345
1346
static PRUint32 numOpenSessions = 0;
1347
static PRUint32 maxOpenSessions = 0;
1348
1349
CK_RV
1350
NSSDBGC_OpenSession(
1351
    CK_SLOT_ID slotID,
1352
    CK_FLAGS flags,
1353
    CK_VOID_PTR pApplication,
1354
    CK_NOTIFY Notify,
1355
    CK_SESSION_HANDLE_PTR phSession)
1356
0
{
1357
0
    COMMON_DEFINITIONS;
1358
1359
0
    PR_ATOMIC_INCREMENT((PRInt32 *)&numOpenSessions);
1360
0
    maxOpenSessions = PR_MAX(numOpenSessions, maxOpenSessions);
1361
0
    PR_LOG(modlog, 1, ("C_OpenSession"));
1362
0
    PR_LOG(modlog, 3, (fmt_slotID, slotID));
1363
0
    PR_LOG(modlog, 3, (fmt_flags, flags));
1364
0
    PR_LOG(modlog, 3, ("  pApplication = 0x%p", pApplication));
1365
0
    PR_LOG(modlog, 3, ("  Notify = 0x%x", Notify));
1366
0
    PR_LOG(modlog, 3, ("  phSession = 0x%p", phSession));
1367
0
    nssdbg_start_time(FUNC_C_OPENSESSION, &start);
1368
0
    rv = module_functions->C_OpenSession(slotID,
1369
0
                                         flags,
1370
0
                                         pApplication,
1371
0
                                         Notify,
1372
0
                                         phSession);
1373
0
    nssdbg_finish_time(FUNC_C_OPENSESSION, start);
1374
0
    log_handle(4, "  *phSession = 0x%x", *phSession);
1375
0
    log_rv(rv);
1376
0
    return rv;
1377
0
}
1378
1379
CK_RV
1380
NSSDBGC_CloseSession(
1381
    CK_SESSION_HANDLE hSession)
1382
0
{
1383
0
    COMMON_DEFINITIONS;
1384
1385
0
    PR_ATOMIC_DECREMENT((PRInt32 *)&numOpenSessions);
1386
0
    PR_LOG(modlog, 1, ("C_CloseSession"));
1387
0
    log_handle(3, fmt_hSession, hSession);
1388
0
    nssdbg_start_time(FUNC_C_CLOSESESSION, &start);
1389
0
    rv = module_functions->C_CloseSession(hSession);
1390
0
    nssdbg_finish_time(FUNC_C_CLOSESESSION, start);
1391
0
    log_rv(rv);
1392
0
    return rv;
1393
0
}
1394
1395
CK_RV
1396
NSSDBGC_CloseAllSessions(
1397
    CK_SLOT_ID slotID)
1398
0
{
1399
0
    COMMON_DEFINITIONS;
1400
1401
0
    PR_LOG(modlog, 1, ("C_CloseAllSessions"));
1402
0
    PR_LOG(modlog, 3, (fmt_slotID, slotID));
1403
0
    nssdbg_start_time(FUNC_C_CLOSEALLSESSIONS, &start);
1404
0
    rv = module_functions->C_CloseAllSessions(slotID);
1405
0
    nssdbg_finish_time(FUNC_C_CLOSEALLSESSIONS, start);
1406
0
    log_rv(rv);
1407
0
    return rv;
1408
0
}
1409
1410
CK_RV
1411
NSSDBGC_GetSessionInfo(
1412
    CK_SESSION_HANDLE hSession,
1413
    CK_SESSION_INFO_PTR pInfo)
1414
0
{
1415
0
    COMMON_DEFINITIONS;
1416
1417
0
    PR_LOG(modlog, 1, ("C_GetSessionInfo"));
1418
0
    log_handle(3, fmt_hSession, hSession);
1419
0
    PR_LOG(modlog, 3, (fmt_pInfo, pInfo));
1420
0
    nssdbg_start_time(FUNC_C_GETSESSIONINFO, &start);
1421
0
    rv = module_functions->C_GetSessionInfo(hSession,
1422
0
                                            pInfo);
1423
0
    nssdbg_finish_time(FUNC_C_GETSESSIONINFO, start);
1424
0
    if (rv == CKR_OK) {
1425
0
        PR_LOG(modlog, 4, (fmt_slotID, pInfo->slotID));
1426
0
        log_state(pInfo->state);
1427
0
        PR_LOG(modlog, 4, ("  flags = %s %s", pInfo->flags & CKF_RW_SESSION ? "CKF_RW_SESSION" : "", pInfo->flags & CKF_SERIAL_SESSION ? "CKF_SERIAL_SESSION" : ""));
1428
0
        PR_LOG(modlog, 4, ("  deviceError = 0x%x", pInfo->ulDeviceError));
1429
0
    }
1430
0
    log_rv(rv);
1431
0
    return rv;
1432
0
}
1433
1434
CK_RV
1435
NSSDBGC_GetOperationState(
1436
    CK_SESSION_HANDLE hSession,
1437
    CK_BYTE_PTR pOperationState,
1438
    CK_ULONG_PTR pulOperationStateLen)
1439
0
{
1440
0
    COMMON_DEFINITIONS;
1441
1442
0
    PR_LOG(modlog, 1, ("C_GetOperationState"));
1443
0
    log_handle(3, fmt_hSession, hSession);
1444
0
    PR_LOG(modlog, 3, (fmt_pOperationState, pOperationState));
1445
0
    PR_LOG(modlog, 3, ("  pulOperationStateLen = 0x%p", pulOperationStateLen));
1446
0
    nssdbg_start_time(FUNC_C_GETOPERATIONSTATE, &start);
1447
0
    rv = module_functions->C_GetOperationState(hSession,
1448
0
                                               pOperationState,
1449
0
                                               pulOperationStateLen);
1450
0
    nssdbg_finish_time(FUNC_C_GETOPERATIONSTATE, start);
1451
0
    PR_LOG(modlog, 4, ("  *pulOperationStateLen = 0x%x", *pulOperationStateLen));
1452
0
    log_rv(rv);
1453
0
    return rv;
1454
0
}
1455
1456
CK_RV
1457
NSSDBGC_SetOperationState(
1458
    CK_SESSION_HANDLE hSession,
1459
    CK_BYTE_PTR pOperationState,
1460
    CK_ULONG ulOperationStateLen,
1461
    CK_OBJECT_HANDLE hEncryptionKey,
1462
    CK_OBJECT_HANDLE hAuthenticationKey)
1463
0
{
1464
0
    COMMON_DEFINITIONS;
1465
1466
0
    PR_LOG(modlog, 1, ("C_SetOperationState"));
1467
0
    log_handle(3, fmt_hSession, hSession);
1468
0
    PR_LOG(modlog, 3, (fmt_pOperationState, pOperationState));
1469
0
    PR_LOG(modlog, 3, ("  ulOperationStateLen = %d", ulOperationStateLen));
1470
0
    log_handle(3, "  hEncryptionKey = 0x%x", hEncryptionKey);
1471
0
    log_handle(3, "  hAuthenticationKey = 0x%x", hAuthenticationKey);
1472
0
    nssdbg_start_time(FUNC_C_SETOPERATIONSTATE, &start);
1473
0
    rv = module_functions->C_SetOperationState(hSession,
1474
0
                                               pOperationState,
1475
0
                                               ulOperationStateLen,
1476
0
                                               hEncryptionKey,
1477
0
                                               hAuthenticationKey);
1478
0
    nssdbg_finish_time(FUNC_C_SETOPERATIONSTATE, start);
1479
0
    log_rv(rv);
1480
0
    return rv;
1481
0
}
1482
1483
CK_RV
1484
NSSDBGC_Login(
1485
    CK_SESSION_HANDLE hSession,
1486
    CK_USER_TYPE userType,
1487
    CK_CHAR_PTR pPin,
1488
    CK_ULONG ulPinLen)
1489
0
{
1490
0
    COMMON_DEFINITIONS;
1491
1492
0
    PR_LOG(modlog, 1, ("C_Login"));
1493
0
    log_handle(3, fmt_hSession, hSession);
1494
0
    PR_LOG(modlog, 3, ("  userType = 0x%x", userType));
1495
0
    PR_LOG(modlog, 3, (fmt_pPin, pPin));
1496
0
    PR_LOG(modlog, 3, (fmt_ulPinLen, ulPinLen));
1497
0
    nssdbg_start_time(FUNC_C_LOGIN, &start);
1498
0
    rv = module_functions->C_Login(hSession,
1499
0
                                   userType,
1500
0
                                   pPin,
1501
0
                                   ulPinLen);
1502
0
    nssdbg_finish_time(FUNC_C_LOGIN, start);
1503
0
    log_rv(rv);
1504
0
    return rv;
1505
0
}
1506
1507
CK_RV
1508
NSSDBGC_Logout(
1509
    CK_SESSION_HANDLE hSession)
1510
0
{
1511
0
    COMMON_DEFINITIONS;
1512
1513
0
    PR_LOG(modlog, 1, ("C_Logout"));
1514
0
    log_handle(3, fmt_hSession, hSession);
1515
0
    nssdbg_start_time(FUNC_C_LOGOUT, &start);
1516
0
    rv = module_functions->C_Logout(hSession);
1517
0
    nssdbg_finish_time(FUNC_C_LOGOUT, start);
1518
0
    log_rv(rv);
1519
0
    return rv;
1520
0
}
1521
1522
CK_RV
1523
NSSDBGC_CreateObject(
1524
    CK_SESSION_HANDLE hSession,
1525
    CK_ATTRIBUTE_PTR pTemplate,
1526
    CK_ULONG ulCount,
1527
    CK_OBJECT_HANDLE_PTR phObject)
1528
0
{
1529
0
    COMMON_DEFINITIONS;
1530
1531
0
    PR_LOG(modlog, 1, ("C_CreateObject"));
1532
0
    log_handle(3, fmt_hSession, hSession);
1533
0
    PR_LOG(modlog, 3, (fmt_pTemplate, pTemplate));
1534
0
    PR_LOG(modlog, 3, (fmt_ulCount, ulCount));
1535
0
    PR_LOG(modlog, 3, (fmt_phObject, phObject));
1536
0
    print_template(pTemplate, ulCount);
1537
0
    nssdbg_start_time(FUNC_C_CREATEOBJECT, &start);
1538
0
    rv = module_functions->C_CreateObject(hSession,
1539
0
                                          pTemplate,
1540
0
                                          ulCount,
1541
0
                                          phObject);
1542
0
    nssdbg_finish_time(FUNC_C_CREATEOBJECT, start);
1543
0
    log_handle(4, "  *phObject = 0x%x", *phObject);
1544
0
    log_rv(rv);
1545
0
    return rv;
1546
0
}
1547
1548
CK_RV
1549
NSSDBGC_CopyObject(
1550
    CK_SESSION_HANDLE hSession,
1551
    CK_OBJECT_HANDLE hObject,
1552
    CK_ATTRIBUTE_PTR pTemplate,
1553
    CK_ULONG ulCount,
1554
    CK_OBJECT_HANDLE_PTR phNewObject)
1555
0
{
1556
0
    COMMON_DEFINITIONS;
1557
1558
0
    PR_LOG(modlog, 1, ("C_CopyObject"));
1559
0
    log_handle(3, fmt_hSession, hSession);
1560
0
    log_handle(3, fmt_hObject, hObject);
1561
0
    PR_LOG(modlog, 3, (fmt_pTemplate, pTemplate));
1562
0
    PR_LOG(modlog, 3, (fmt_ulCount, ulCount));
1563
0
    PR_LOG(modlog, 3, ("  phNewObject = 0x%p", phNewObject));
1564
0
    print_template(pTemplate, ulCount);
1565
0
    nssdbg_start_time(FUNC_C_COPYOBJECT, &start);
1566
0
    rv = module_functions->C_CopyObject(hSession,
1567
0
                                        hObject,
1568
0
                                        pTemplate,
1569
0
                                        ulCount,
1570
0
                                        phNewObject);
1571
0
    nssdbg_finish_time(FUNC_C_COPYOBJECT, start);
1572
0
    log_handle(4, "  *phNewObject = 0x%x", *phNewObject);
1573
0
    log_rv(rv);
1574
0
    return rv;
1575
0
}
1576
1577
CK_RV
1578
NSSDBGC_DestroyObject(
1579
    CK_SESSION_HANDLE hSession,
1580
    CK_OBJECT_HANDLE hObject)
1581
0
{
1582
0
    COMMON_DEFINITIONS;
1583
1584
0
    PR_LOG(modlog, 1, ("C_DestroyObject"));
1585
0
    log_handle(3, fmt_hSession, hSession);
1586
0
    log_handle(3, fmt_hObject, hObject);
1587
0
    nssdbg_start_time(FUNC_C_DESTROYOBJECT, &start);
1588
0
    rv = module_functions->C_DestroyObject(hSession,
1589
0
                                           hObject);
1590
0
    nssdbg_finish_time(FUNC_C_DESTROYOBJECT, start);
1591
0
    log_rv(rv);
1592
0
    return rv;
1593
0
}
1594
1595
CK_RV
1596
NSSDBGC_GetObjectSize(
1597
    CK_SESSION_HANDLE hSession,
1598
    CK_OBJECT_HANDLE hObject,
1599
    CK_ULONG_PTR pulSize)
1600
0
{
1601
0
    COMMON_DEFINITIONS;
1602
1603
0
    PR_LOG(modlog, 1, ("C_GetObjectSize"));
1604
0
    log_handle(3, fmt_hSession, hSession);
1605
0
    log_handle(3, fmt_hObject, hObject);
1606
0
    PR_LOG(modlog, 3, ("  pulSize = 0x%p", pulSize));
1607
0
    nssdbg_start_time(FUNC_C_GETOBJECTSIZE, &start);
1608
0
    rv = module_functions->C_GetObjectSize(hSession,
1609
0
                                           hObject,
1610
0
                                           pulSize);
1611
0
    nssdbg_finish_time(FUNC_C_GETOBJECTSIZE, start);
1612
0
    PR_LOG(modlog, 4, ("  *pulSize = 0x%x", *pulSize));
1613
0
    log_rv(rv);
1614
0
    return rv;
1615
0
}
1616
1617
CK_RV
1618
NSSDBGC_GetAttributeValue(
1619
    CK_SESSION_HANDLE hSession,
1620
    CK_OBJECT_HANDLE hObject,
1621
    CK_ATTRIBUTE_PTR pTemplate,
1622
    CK_ULONG ulCount)
1623
0
{
1624
0
    COMMON_DEFINITIONS;
1625
1626
0
    PR_LOG(modlog, 1, ("C_GetAttributeValue"));
1627
0
    log_handle(3, fmt_hSession, hSession);
1628
0
    log_handle(3, fmt_hObject, hObject);
1629
0
    PR_LOG(modlog, 3, (fmt_pTemplate, pTemplate));
1630
0
    PR_LOG(modlog, 3, (fmt_ulCount, ulCount));
1631
0
    nssdbg_start_time(FUNC_C_GETATTRIBUTEVALUE, &start);
1632
0
    rv = module_functions->C_GetAttributeValue(hSession,
1633
0
                                               hObject,
1634
0
                                               pTemplate,
1635
0
                                               ulCount);
1636
0
    nssdbg_finish_time(FUNC_C_GETATTRIBUTEVALUE, start);
1637
0
    print_template(pTemplate, ulCount);
1638
0
    log_rv(rv);
1639
0
    return rv;
1640
0
}
1641
1642
CK_RV
1643
NSSDBGC_SetAttributeValue(
1644
    CK_SESSION_HANDLE hSession,
1645
    CK_OBJECT_HANDLE hObject,
1646
    CK_ATTRIBUTE_PTR pTemplate,
1647
    CK_ULONG ulCount)
1648
0
{
1649
0
    COMMON_DEFINITIONS;
1650
1651
0
    PR_LOG(modlog, 1, ("C_SetAttributeValue"));
1652
0
    log_handle(3, fmt_hSession, hSession);
1653
0
    log_handle(3, fmt_hObject, hObject);
1654
0
    PR_LOG(modlog, 3, (fmt_pTemplate, pTemplate));
1655
0
    PR_LOG(modlog, 3, (fmt_ulCount, ulCount));
1656
0
    print_template(pTemplate, ulCount);
1657
0
    nssdbg_start_time(FUNC_C_SETATTRIBUTEVALUE, &start);
1658
0
    rv = module_functions->C_SetAttributeValue(hSession,
1659
0
                                               hObject,
1660
0
                                               pTemplate,
1661
0
                                               ulCount);
1662
0
    nssdbg_finish_time(FUNC_C_SETATTRIBUTEVALUE, start);
1663
0
    log_rv(rv);
1664
0
    return rv;
1665
0
}
1666
1667
CK_RV
1668
NSSDBGC_FindObjectsInit(
1669
    CK_SESSION_HANDLE hSession,
1670
    CK_ATTRIBUTE_PTR pTemplate,
1671
    CK_ULONG ulCount)
1672
0
{
1673
0
    COMMON_DEFINITIONS;
1674
1675
0
    PR_LOG(modlog, 1, ("C_FindObjectsInit"));
1676
0
    log_handle(3, fmt_hSession, hSession);
1677
0
    PR_LOG(modlog, 3, (fmt_pTemplate, pTemplate));
1678
0
    PR_LOG(modlog, 3, (fmt_ulCount, ulCount));
1679
0
    print_template(pTemplate, ulCount);
1680
0
    nssdbg_start_time(FUNC_C_FINDOBJECTSINIT, &start);
1681
0
    rv = module_functions->C_FindObjectsInit(hSession,
1682
0
                                             pTemplate,
1683
0
                                             ulCount);
1684
0
    nssdbg_finish_time(FUNC_C_FINDOBJECTSINIT, start);
1685
0
    log_rv(rv);
1686
0
    return rv;
1687
0
}
1688
1689
CK_RV
1690
NSSDBGC_FindObjects(
1691
    CK_SESSION_HANDLE hSession,
1692
    CK_OBJECT_HANDLE_PTR phObject,
1693
    CK_ULONG ulMaxObjectCount,
1694
    CK_ULONG_PTR pulObjectCount)
1695
0
{
1696
0
    COMMON_DEFINITIONS;
1697
0
    CK_ULONG i;
1698
1699
0
    PR_LOG(modlog, 1, ("C_FindObjects"));
1700
0
    log_handle(3, fmt_hSession, hSession);
1701
0
    PR_LOG(modlog, 3, (fmt_phObject, phObject));
1702
0
    PR_LOG(modlog, 3, ("  ulMaxObjectCount = %d", ulMaxObjectCount));
1703
0
    PR_LOG(modlog, 3, ("  pulObjectCount = 0x%p", pulObjectCount));
1704
0
    nssdbg_start_time(FUNC_C_FINDOBJECTS, &start);
1705
0
    rv = module_functions->C_FindObjects(hSession,
1706
0
                                         phObject,
1707
0
                                         ulMaxObjectCount,
1708
0
                                         pulObjectCount);
1709
0
    nssdbg_finish_time(FUNC_C_FINDOBJECTS, start);
1710
0
    PR_LOG(modlog, 4, ("  *pulObjectCount = 0x%x", *pulObjectCount));
1711
0
    for (i = 0; i < *pulObjectCount; i++) {
1712
0
        PR_LOG(modlog, 4, ("  phObject[%d] = 0x%x%s", i, phObject[i], phObject[i] ? "" : fmt_invalid_handle));
1713
0
    }
1714
0
    log_rv(rv);
1715
0
    return rv;
1716
0
}
1717
1718
CK_RV
1719
NSSDBGC_FindObjectsFinal(
1720
    CK_SESSION_HANDLE hSession)
1721
0
{
1722
0
    COMMON_DEFINITIONS;
1723
1724
0
    PR_LOG(modlog, 1, ("C_FindObjectsFinal"));
1725
0
    log_handle(3, fmt_hSession, hSession);
1726
0
    nssdbg_start_time(FUNC_C_FINDOBJECTSFINAL, &start);
1727
0
    rv = module_functions->C_FindObjectsFinal(hSession);
1728
0
    nssdbg_finish_time(FUNC_C_FINDOBJECTSFINAL, start);
1729
0
    log_rv(rv);
1730
0
    return rv;
1731
0
}
1732
1733
CK_RV
1734
NSSDBGC_EncryptInit(
1735
    CK_SESSION_HANDLE hSession,
1736
    CK_MECHANISM_PTR pMechanism,
1737
    CK_OBJECT_HANDLE hKey)
1738
0
{
1739
0
    COMMON_DEFINITIONS;
1740
1741
0
    PR_LOG(modlog, 1, ("C_EncryptInit"));
1742
0
    log_handle(3, fmt_hSession, hSession);
1743
0
    PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism));
1744
0
    log_handle(3, fmt_hKey, hKey);
1745
0
    print_mechanism(pMechanism);
1746
0
    nssdbg_start_time(FUNC_C_ENCRYPTINIT, &start);
1747
0
    rv = module_functions->C_EncryptInit(hSession,
1748
0
                                         pMechanism,
1749
0
                                         hKey);
1750
0
    nssdbg_finish_time(FUNC_C_ENCRYPTINIT, start);
1751
0
    log_rv(rv);
1752
0
    return rv;
1753
0
}
1754
1755
CK_RV
1756
NSSDBGC_Encrypt(
1757
    CK_SESSION_HANDLE hSession,
1758
    CK_BYTE_PTR pData,
1759
    CK_ULONG ulDataLen,
1760
    CK_BYTE_PTR pEncryptedData,
1761
    CK_ULONG_PTR pulEncryptedDataLen)
1762
0
{
1763
0
    COMMON_DEFINITIONS;
1764
1765
0
    PR_LOG(modlog, 1, ("C_Encrypt"));
1766
0
    log_handle(3, fmt_hSession, hSession);
1767
0
    PR_LOG(modlog, 3, (fmt_pData, pData));
1768
0
    PR_LOG(modlog, 3, (fmt_ulDataLen, ulDataLen));
1769
0
    PR_LOG(modlog, 3, (fmt_pEncryptedData, pEncryptedData));
1770
0
    PR_LOG(modlog, 3, ("  pulEncryptedDataLen = 0x%p", pulEncryptedDataLen));
1771
0
    nssdbg_start_time(FUNC_C_ENCRYPT, &start);
1772
0
    rv = module_functions->C_Encrypt(hSession,
1773
0
                                     pData,
1774
0
                                     ulDataLen,
1775
0
                                     pEncryptedData,
1776
0
                                     pulEncryptedDataLen);
1777
0
    nssdbg_finish_time(FUNC_C_ENCRYPT, start);
1778
0
    PR_LOG(modlog, 4, ("  *pulEncryptedDataLen = 0x%x", *pulEncryptedDataLen));
1779
0
    log_rv(rv);
1780
0
    return rv;
1781
0
}
1782
1783
CK_RV
1784
NSSDBGC_EncryptUpdate(
1785
    CK_SESSION_HANDLE hSession,
1786
    CK_BYTE_PTR pPart,
1787
    CK_ULONG ulPartLen,
1788
    CK_BYTE_PTR pEncryptedPart,
1789
    CK_ULONG_PTR pulEncryptedPartLen)
1790
0
{
1791
0
    COMMON_DEFINITIONS;
1792
1793
0
    PR_LOG(modlog, 1, ("C_EncryptUpdate"));
1794
0
    log_handle(3, fmt_hSession, hSession);
1795
0
    PR_LOG(modlog, 3, (fmt_pPart, pPart));
1796
0
    PR_LOG(modlog, 3, (fmt_ulPartLen, ulPartLen));
1797
0
    PR_LOG(modlog, 3, (fmt_pEncryptedPart, pEncryptedPart));
1798
0
    PR_LOG(modlog, 3, (fmt_pulEncryptedPartLen, pulEncryptedPartLen));
1799
0
    nssdbg_start_time(FUNC_C_ENCRYPTUPDATE, &start);
1800
0
    rv = module_functions->C_EncryptUpdate(hSession,
1801
0
                                           pPart,
1802
0
                                           ulPartLen,
1803
0
                                           pEncryptedPart,
1804
0
                                           pulEncryptedPartLen);
1805
0
    nssdbg_finish_time(FUNC_C_ENCRYPTUPDATE, start);
1806
0
    PR_LOG(modlog, 4, (fmt_spulEncryptedPartLen, *pulEncryptedPartLen));
1807
0
    log_rv(rv);
1808
0
    return rv;
1809
0
}
1810
1811
CK_RV
1812
NSSDBGC_EncryptFinal(
1813
    CK_SESSION_HANDLE hSession,
1814
    CK_BYTE_PTR pLastEncryptedPart,
1815
    CK_ULONG_PTR pulLastEncryptedPartLen)
1816
0
{
1817
0
    COMMON_DEFINITIONS;
1818
1819
0
    PR_LOG(modlog, 1, ("C_EncryptFinal"));
1820
0
    log_handle(3, fmt_hSession, hSession);
1821
0
    PR_LOG(modlog, 3, ("  pLastEncryptedPart = 0x%p", pLastEncryptedPart));
1822
0
    PR_LOG(modlog, 3, ("  pulLastEncryptedPartLen = 0x%p", pulLastEncryptedPartLen));
1823
0
    nssdbg_start_time(FUNC_C_ENCRYPTFINAL, &start);
1824
0
    rv = module_functions->C_EncryptFinal(hSession,
1825
0
                                          pLastEncryptedPart,
1826
0
                                          pulLastEncryptedPartLen);
1827
0
    nssdbg_finish_time(FUNC_C_ENCRYPTFINAL, start);
1828
0
    PR_LOG(modlog, 4, ("  *pulLastEncryptedPartLen = 0x%x", *pulLastEncryptedPartLen));
1829
0
    log_rv(rv);
1830
0
    return rv;
1831
0
}
1832
1833
CK_RV
1834
NSSDBGC_DecryptInit(
1835
    CK_SESSION_HANDLE hSession,
1836
    CK_MECHANISM_PTR pMechanism,
1837
    CK_OBJECT_HANDLE hKey)
1838
0
{
1839
0
    COMMON_DEFINITIONS;
1840
1841
0
    PR_LOG(modlog, 1, ("C_DecryptInit"));
1842
0
    log_handle(3, fmt_hSession, hSession);
1843
0
    PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism));
1844
0
    log_handle(3, fmt_hKey, hKey);
1845
0
    print_mechanism(pMechanism);
1846
0
    nssdbg_start_time(FUNC_C_DECRYPTINIT, &start);
1847
0
    rv = module_functions->C_DecryptInit(hSession,
1848
0
                                         pMechanism,
1849
0
                                         hKey);
1850
0
    nssdbg_finish_time(FUNC_C_DECRYPTINIT, start);
1851
0
    log_rv(rv);
1852
0
    return rv;
1853
0
}
1854
1855
CK_RV
1856
NSSDBGC_Decrypt(
1857
    CK_SESSION_HANDLE hSession,
1858
    CK_BYTE_PTR pEncryptedData,
1859
    CK_ULONG ulEncryptedDataLen,
1860
    CK_BYTE_PTR pData,
1861
    CK_ULONG_PTR pulDataLen)
1862
0
{
1863
0
    COMMON_DEFINITIONS;
1864
1865
0
    PR_LOG(modlog, 1, ("C_Decrypt"));
1866
0
    log_handle(3, fmt_hSession, hSession);
1867
0
    PR_LOG(modlog, 3, (fmt_pEncryptedData, pEncryptedData));
1868
0
    PR_LOG(modlog, 3, ("  ulEncryptedDataLen = %d", ulEncryptedDataLen));
1869
0
    PR_LOG(modlog, 3, (fmt_pData, pData));
1870
0
    PR_LOG(modlog, 3, (fmt_pulDataLen, pulDataLen));
1871
0
    nssdbg_start_time(FUNC_C_DECRYPT, &start);
1872
0
    rv = module_functions->C_Decrypt(hSession,
1873
0
                                     pEncryptedData,
1874
0
                                     ulEncryptedDataLen,
1875
0
                                     pData,
1876
0
                                     pulDataLen);
1877
0
    nssdbg_finish_time(FUNC_C_DECRYPT, start);
1878
0
    PR_LOG(modlog, 4, (fmt_spulDataLen, *pulDataLen));
1879
0
    log_rv(rv);
1880
0
    return rv;
1881
0
}
1882
1883
CK_RV
1884
NSSDBGC_DecryptUpdate(
1885
    CK_SESSION_HANDLE hSession,
1886
    CK_BYTE_PTR pEncryptedPart,
1887
    CK_ULONG ulEncryptedPartLen,
1888
    CK_BYTE_PTR pPart,
1889
    CK_ULONG_PTR pulPartLen)
1890
0
{
1891
0
    COMMON_DEFINITIONS;
1892
1893
0
    PR_LOG(modlog, 1, ("C_DecryptUpdate"));
1894
0
    log_handle(3, fmt_hSession, hSession);
1895
0
    PR_LOG(modlog, 3, (fmt_pEncryptedPart, pEncryptedPart));
1896
0
    PR_LOG(modlog, 3, (fmt_ulEncryptedPartLen, ulEncryptedPartLen));
1897
0
    PR_LOG(modlog, 3, (fmt_pPart, pPart));
1898
0
    PR_LOG(modlog, 3, (fmt_pulPartLen, pulPartLen));
1899
0
    nssdbg_start_time(FUNC_C_DECRYPTUPDATE, &start);
1900
0
    rv = module_functions->C_DecryptUpdate(hSession,
1901
0
                                           pEncryptedPart,
1902
0
                                           ulEncryptedPartLen,
1903
0
                                           pPart,
1904
0
                                           pulPartLen);
1905
0
    nssdbg_finish_time(FUNC_C_DECRYPTUPDATE, start);
1906
0
    PR_LOG(modlog, 4, (fmt_spulPartLen, *pulPartLen));
1907
0
    log_rv(rv);
1908
0
    return rv;
1909
0
}
1910
1911
CK_RV
1912
NSSDBGC_DecryptFinal(
1913
    CK_SESSION_HANDLE hSession,
1914
    CK_BYTE_PTR pLastPart,
1915
    CK_ULONG_PTR pulLastPartLen)
1916
0
{
1917
0
    COMMON_DEFINITIONS;
1918
1919
0
    PR_LOG(modlog, 1, ("C_DecryptFinal"));
1920
0
    log_handle(3, fmt_hSession, hSession);
1921
0
    PR_LOG(modlog, 3, ("  pLastPart = 0x%p", pLastPart));
1922
0
    PR_LOG(modlog, 3, ("  pulLastPartLen = 0x%p", pulLastPartLen));
1923
0
    nssdbg_start_time(FUNC_C_DECRYPTFINAL, &start);
1924
0
    rv = module_functions->C_DecryptFinal(hSession,
1925
0
                                          pLastPart,
1926
0
                                          pulLastPartLen);
1927
0
    nssdbg_finish_time(FUNC_C_DECRYPTFINAL, start);
1928
0
    PR_LOG(modlog, 4, ("  *pulLastPartLen = 0x%x", *pulLastPartLen));
1929
0
    log_rv(rv);
1930
0
    return rv;
1931
0
}
1932
1933
CK_RV
1934
NSSDBGC_DigestInit(
1935
    CK_SESSION_HANDLE hSession,
1936
    CK_MECHANISM_PTR pMechanism)
1937
0
{
1938
0
    COMMON_DEFINITIONS;
1939
1940
0
    PR_LOG(modlog, 1, ("C_DigestInit"));
1941
0
    log_handle(3, fmt_hSession, hSession);
1942
0
    PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism));
1943
0
    print_mechanism(pMechanism);
1944
0
    nssdbg_start_time(FUNC_C_DIGESTINIT, &start);
1945
0
    rv = module_functions->C_DigestInit(hSession,
1946
0
                                        pMechanism);
1947
0
    nssdbg_finish_time(FUNC_C_DIGESTINIT, start);
1948
0
    log_rv(rv);
1949
0
    return rv;
1950
0
}
1951
1952
CK_RV
1953
NSSDBGC_Digest(
1954
    CK_SESSION_HANDLE hSession,
1955
    CK_BYTE_PTR pData,
1956
    CK_ULONG ulDataLen,
1957
    CK_BYTE_PTR pDigest,
1958
    CK_ULONG_PTR pulDigestLen)
1959
0
{
1960
0
    COMMON_DEFINITIONS;
1961
1962
0
    PR_LOG(modlog, 1, ("C_Digest"));
1963
0
    log_handle(3, fmt_hSession, hSession);
1964
0
    PR_LOG(modlog, 3, (fmt_pData, pData));
1965
0
    PR_LOG(modlog, 3, (fmt_ulDataLen, ulDataLen));
1966
0
    PR_LOG(modlog, 3, (fmt_pDigest, pDigest));
1967
0
    PR_LOG(modlog, 3, (fmt_pulDigestLen, pulDigestLen));
1968
0
    nssdbg_start_time(FUNC_C_DIGEST, &start);
1969
0
    rv = module_functions->C_Digest(hSession,
1970
0
                                    pData,
1971
0
                                    ulDataLen,
1972
0
                                    pDigest,
1973
0
                                    pulDigestLen);
1974
0
    nssdbg_finish_time(FUNC_C_DIGEST, start);
1975
0
    PR_LOG(modlog, 4, (fmt_spulDigestLen, *pulDigestLen));
1976
0
    log_rv(rv);
1977
0
    return rv;
1978
0
}
1979
1980
CK_RV
1981
NSSDBGC_DigestUpdate(
1982
    CK_SESSION_HANDLE hSession,
1983
    CK_BYTE_PTR pPart,
1984
    CK_ULONG ulPartLen)
1985
0
{
1986
0
    COMMON_DEFINITIONS;
1987
1988
0
    PR_LOG(modlog, 1, ("C_DigestUpdate"));
1989
0
    log_handle(3, fmt_hSession, hSession);
1990
0
    PR_LOG(modlog, 3, (fmt_pPart, pPart));
1991
0
    PR_LOG(modlog, 3, (fmt_ulPartLen, ulPartLen));
1992
0
    nssdbg_start_time(FUNC_C_DIGESTUPDATE, &start);
1993
0
    rv = module_functions->C_DigestUpdate(hSession,
1994
0
                                          pPart,
1995
0
                                          ulPartLen);
1996
0
    nssdbg_finish_time(FUNC_C_DIGESTUPDATE, start);
1997
0
    log_rv(rv);
1998
0
    return rv;
1999
0
}
2000
2001
CK_RV
2002
NSSDBGC_DigestKey(
2003
    CK_SESSION_HANDLE hSession,
2004
    CK_OBJECT_HANDLE hKey)
2005
0
{
2006
0
    COMMON_DEFINITIONS;
2007
2008
0
    PR_LOG(modlog, 1, ("C_DigestKey"));
2009
0
    log_handle(3, fmt_hSession, hSession);
2010
0
    nssdbg_start_time(FUNC_C_DIGESTKEY, &start);
2011
0
    rv = module_functions->C_DigestKey(hSession,
2012
0
                                       hKey);
2013
0
    nssdbg_finish_time(FUNC_C_DIGESTKEY, start);
2014
0
    log_rv(rv);
2015
0
    return rv;
2016
0
}
2017
2018
CK_RV
2019
NSSDBGC_DigestFinal(
2020
    CK_SESSION_HANDLE hSession,
2021
    CK_BYTE_PTR pDigest,
2022
    CK_ULONG_PTR pulDigestLen)
2023
0
{
2024
0
    COMMON_DEFINITIONS;
2025
2026
0
    PR_LOG(modlog, 1, ("C_DigestFinal"));
2027
0
    log_handle(3, fmt_hSession, hSession);
2028
0
    PR_LOG(modlog, 3, (fmt_pDigest, pDigest));
2029
0
    PR_LOG(modlog, 3, (fmt_pulDigestLen, pulDigestLen));
2030
0
    nssdbg_start_time(FUNC_C_DIGESTFINAL, &start);
2031
0
    rv = module_functions->C_DigestFinal(hSession,
2032
0
                                         pDigest,
2033
0
                                         pulDigestLen);
2034
0
    nssdbg_finish_time(FUNC_C_DIGESTFINAL, start);
2035
0
    PR_LOG(modlog, 4, (fmt_spulDigestLen, *pulDigestLen));
2036
0
    log_rv(rv);
2037
0
    return rv;
2038
0
}
2039
2040
CK_RV
2041
NSSDBGC_SignInit(
2042
    CK_SESSION_HANDLE hSession,
2043
    CK_MECHANISM_PTR pMechanism,
2044
    CK_OBJECT_HANDLE hKey)
2045
0
{
2046
0
    COMMON_DEFINITIONS;
2047
2048
0
    PR_LOG(modlog, 1, ("C_SignInit"));
2049
0
    log_handle(3, fmt_hSession, hSession);
2050
0
    PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism));
2051
0
    log_handle(3, fmt_hKey, hKey);
2052
0
    print_mechanism(pMechanism);
2053
0
    nssdbg_start_time(FUNC_C_SIGNINIT, &start);
2054
0
    rv = module_functions->C_SignInit(hSession,
2055
0
                                      pMechanism,
2056
0
                                      hKey);
2057
0
    nssdbg_finish_time(FUNC_C_SIGNINIT, start);
2058
0
    log_rv(rv);
2059
0
    return rv;
2060
0
}
2061
2062
CK_RV
2063
NSSDBGC_Sign(
2064
    CK_SESSION_HANDLE hSession,
2065
    CK_BYTE_PTR pData,
2066
    CK_ULONG ulDataLen,
2067
    CK_BYTE_PTR pSignature,
2068
    CK_ULONG_PTR pulSignatureLen)
2069
0
{
2070
0
    COMMON_DEFINITIONS;
2071
2072
0
    PR_LOG(modlog, 1, ("C_Sign"));
2073
0
    log_handle(3, fmt_hSession, hSession);
2074
0
    PR_LOG(modlog, 3, (fmt_pData, pData));
2075
0
    PR_LOG(modlog, 3, (fmt_ulDataLen, ulDataLen));
2076
0
    PR_LOG(modlog, 3, (fmt_pSignature, pSignature));
2077
0
    PR_LOG(modlog, 3, (fmt_pulSignatureLen, pulSignatureLen));
2078
0
    nssdbg_start_time(FUNC_C_SIGN, &start);
2079
0
    rv = module_functions->C_Sign(hSession,
2080
0
                                  pData,
2081
0
                                  ulDataLen,
2082
0
                                  pSignature,
2083
0
                                  pulSignatureLen);
2084
0
    nssdbg_finish_time(FUNC_C_SIGN, start);
2085
0
    PR_LOG(modlog, 4, (fmt_spulSignatureLen, *pulSignatureLen));
2086
0
    log_rv(rv);
2087
0
    return rv;
2088
0
}
2089
2090
CK_RV
2091
NSSDBGC_SignUpdate(
2092
    CK_SESSION_HANDLE hSession,
2093
    CK_BYTE_PTR pPart,
2094
    CK_ULONG ulPartLen)
2095
0
{
2096
0
    COMMON_DEFINITIONS;
2097
2098
0
    PR_LOG(modlog, 1, ("C_SignUpdate"));
2099
0
    log_handle(3, fmt_hSession, hSession);
2100
0
    PR_LOG(modlog, 3, (fmt_pPart, pPart));
2101
0
    PR_LOG(modlog, 3, (fmt_ulPartLen, ulPartLen));
2102
0
    nssdbg_start_time(FUNC_C_SIGNUPDATE, &start);
2103
0
    rv = module_functions->C_SignUpdate(hSession,
2104
0
                                        pPart,
2105
0
                                        ulPartLen);
2106
0
    nssdbg_finish_time(FUNC_C_SIGNUPDATE, start);
2107
0
    log_rv(rv);
2108
0
    return rv;
2109
0
}
2110
2111
CK_RV
2112
NSSDBGC_SignFinal(
2113
    CK_SESSION_HANDLE hSession,
2114
    CK_BYTE_PTR pSignature,
2115
    CK_ULONG_PTR pulSignatureLen)
2116
0
{
2117
0
    COMMON_DEFINITIONS;
2118
2119
0
    PR_LOG(modlog, 1, ("C_SignFinal"));
2120
0
    log_handle(3, fmt_hSession, hSession);
2121
0
    PR_LOG(modlog, 3, (fmt_pSignature, pSignature));
2122
0
    PR_LOG(modlog, 3, (fmt_pulSignatureLen, pulSignatureLen));
2123
0
    nssdbg_start_time(FUNC_C_SIGNFINAL, &start);
2124
0
    rv = module_functions->C_SignFinal(hSession,
2125
0
                                       pSignature,
2126
0
                                       pulSignatureLen);
2127
0
    nssdbg_finish_time(FUNC_C_SIGNFINAL, start);
2128
0
    PR_LOG(modlog, 4, (fmt_spulSignatureLen, *pulSignatureLen));
2129
0
    log_rv(rv);
2130
0
    return rv;
2131
0
}
2132
2133
CK_RV
2134
NSSDBGC_SignRecoverInit(
2135
    CK_SESSION_HANDLE hSession,
2136
    CK_MECHANISM_PTR pMechanism,
2137
    CK_OBJECT_HANDLE hKey)
2138
0
{
2139
0
    COMMON_DEFINITIONS;
2140
2141
0
    PR_LOG(modlog, 1, ("C_SignRecoverInit"));
2142
0
    log_handle(3, fmt_hSession, hSession);
2143
0
    PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism));
2144
0
    log_handle(3, fmt_hKey, hKey);
2145
0
    print_mechanism(pMechanism);
2146
0
    nssdbg_start_time(FUNC_C_SIGNRECOVERINIT, &start);
2147
0
    rv = module_functions->C_SignRecoverInit(hSession,
2148
0
                                             pMechanism,
2149
0
                                             hKey);
2150
0
    nssdbg_finish_time(FUNC_C_SIGNRECOVERINIT, start);
2151
0
    log_rv(rv);
2152
0
    return rv;
2153
0
}
2154
2155
CK_RV
2156
NSSDBGC_SignRecover(
2157
    CK_SESSION_HANDLE hSession,
2158
    CK_BYTE_PTR pData,
2159
    CK_ULONG ulDataLen,
2160
    CK_BYTE_PTR pSignature,
2161
    CK_ULONG_PTR pulSignatureLen)
2162
0
{
2163
0
    COMMON_DEFINITIONS;
2164
2165
0
    PR_LOG(modlog, 1, ("C_SignRecover"));
2166
0
    log_handle(3, fmt_hSession, hSession);
2167
0
    PR_LOG(modlog, 3, (fmt_pData, pData));
2168
0
    PR_LOG(modlog, 3, (fmt_ulDataLen, ulDataLen));
2169
0
    PR_LOG(modlog, 3, (fmt_pSignature, pSignature));
2170
0
    PR_LOG(modlog, 3, (fmt_pulSignatureLen, pulSignatureLen));
2171
0
    nssdbg_start_time(FUNC_C_SIGNRECOVER, &start);
2172
0
    rv = module_functions->C_SignRecover(hSession,
2173
0
                                         pData,
2174
0
                                         ulDataLen,
2175
0
                                         pSignature,
2176
0
                                         pulSignatureLen);
2177
0
    nssdbg_finish_time(FUNC_C_SIGNRECOVER, start);
2178
0
    PR_LOG(modlog, 4, (fmt_spulSignatureLen, *pulSignatureLen));
2179
0
    log_rv(rv);
2180
0
    return rv;
2181
0
}
2182
2183
CK_RV
2184
NSSDBGC_VerifyInit(
2185
    CK_SESSION_HANDLE hSession,
2186
    CK_MECHANISM_PTR pMechanism,
2187
    CK_OBJECT_HANDLE hKey)
2188
0
{
2189
0
    COMMON_DEFINITIONS;
2190
2191
0
    PR_LOG(modlog, 1, ("C_VerifyInit"));
2192
0
    log_handle(3, fmt_hSession, hSession);
2193
0
    PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism));
2194
0
    log_handle(3, fmt_hKey, hKey);
2195
0
    print_mechanism(pMechanism);
2196
0
    nssdbg_start_time(FUNC_C_VERIFYINIT, &start);
2197
0
    rv = module_functions->C_VerifyInit(hSession,
2198
0
                                        pMechanism,
2199
0
                                        hKey);
2200
0
    nssdbg_finish_time(FUNC_C_VERIFYINIT, start);
2201
0
    log_rv(rv);
2202
0
    return rv;
2203
0
}
2204
2205
CK_RV
2206
NSSDBGC_Verify(
2207
    CK_SESSION_HANDLE hSession,
2208
    CK_BYTE_PTR pData,
2209
    CK_ULONG ulDataLen,
2210
    CK_BYTE_PTR pSignature,
2211
    CK_ULONG ulSignatureLen)
2212
0
{
2213
0
    COMMON_DEFINITIONS;
2214
2215
0
    PR_LOG(modlog, 1, ("C_Verify"));
2216
0
    log_handle(3, fmt_hSession, hSession);
2217
0
    PR_LOG(modlog, 3, (fmt_pData, pData));
2218
0
    PR_LOG(modlog, 3, (fmt_ulDataLen, ulDataLen));
2219
0
    PR_LOG(modlog, 3, (fmt_pSignature, pSignature));
2220
0
    PR_LOG(modlog, 3, (fmt_ulSignatureLen, ulSignatureLen));
2221
0
    nssdbg_start_time(FUNC_C_VERIFY, &start);
2222
0
    rv = module_functions->C_Verify(hSession,
2223
0
                                    pData,
2224
0
                                    ulDataLen,
2225
0
                                    pSignature,
2226
0
                                    ulSignatureLen);
2227
0
    nssdbg_finish_time(FUNC_C_VERIFY, start);
2228
0
    log_rv(rv);
2229
0
    return rv;
2230
0
}
2231
2232
CK_RV
2233
NSSDBGC_VerifyUpdate(
2234
    CK_SESSION_HANDLE hSession,
2235
    CK_BYTE_PTR pPart,
2236
    CK_ULONG ulPartLen)
2237
0
{
2238
0
    COMMON_DEFINITIONS;
2239
2240
0
    PR_LOG(modlog, 1, ("C_VerifyUpdate"));
2241
0
    log_handle(3, fmt_hSession, hSession);
2242
0
    PR_LOG(modlog, 3, (fmt_pPart, pPart));
2243
0
    PR_LOG(modlog, 3, (fmt_ulPartLen, ulPartLen));
2244
0
    nssdbg_start_time(FUNC_C_VERIFYUPDATE, &start);
2245
0
    rv = module_functions->C_VerifyUpdate(hSession,
2246
0
                                          pPart,
2247
0
                                          ulPartLen);
2248
0
    nssdbg_finish_time(FUNC_C_VERIFYUPDATE, start);
2249
0
    log_rv(rv);
2250
0
    return rv;
2251
0
}
2252
2253
CK_RV
2254
NSSDBGC_VerifyFinal(
2255
    CK_SESSION_HANDLE hSession,
2256
    CK_BYTE_PTR pSignature,
2257
    CK_ULONG ulSignatureLen)
2258
0
{
2259
0
    COMMON_DEFINITIONS;
2260
2261
0
    PR_LOG(modlog, 1, ("C_VerifyFinal"));
2262
0
    log_handle(3, fmt_hSession, hSession);
2263
0
    PR_LOG(modlog, 3, (fmt_pSignature, pSignature));
2264
0
    PR_LOG(modlog, 3, (fmt_ulSignatureLen, ulSignatureLen));
2265
0
    nssdbg_start_time(FUNC_C_VERIFYFINAL, &start);
2266
0
    rv = module_functions->C_VerifyFinal(hSession,
2267
0
                                         pSignature,
2268
0
                                         ulSignatureLen);
2269
0
    nssdbg_finish_time(FUNC_C_VERIFYFINAL, start);
2270
0
    log_rv(rv);
2271
0
    return rv;
2272
0
}
2273
2274
CK_RV
2275
NSSDBGC_VerifyRecoverInit(
2276
    CK_SESSION_HANDLE hSession,
2277
    CK_MECHANISM_PTR pMechanism,
2278
    CK_OBJECT_HANDLE hKey)
2279
0
{
2280
0
    COMMON_DEFINITIONS;
2281
2282
0
    PR_LOG(modlog, 1, ("C_VerifyRecoverInit"));
2283
0
    log_handle(3, fmt_hSession, hSession);
2284
0
    PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism));
2285
0
    log_handle(3, fmt_hKey, hKey);
2286
0
    print_mechanism(pMechanism);
2287
0
    nssdbg_start_time(FUNC_C_VERIFYRECOVERINIT, &start);
2288
0
    rv = module_functions->C_VerifyRecoverInit(hSession,
2289
0
                                               pMechanism,
2290
0
                                               hKey);
2291
0
    nssdbg_finish_time(FUNC_C_VERIFYRECOVERINIT, start);
2292
0
    log_rv(rv);
2293
0
    return rv;
2294
0
}
2295
2296
CK_RV
2297
NSSDBGC_VerifyRecover(
2298
    CK_SESSION_HANDLE hSession,
2299
    CK_BYTE_PTR pSignature,
2300
    CK_ULONG ulSignatureLen,
2301
    CK_BYTE_PTR pData,
2302
    CK_ULONG_PTR pulDataLen)
2303
0
{
2304
0
    COMMON_DEFINITIONS;
2305
2306
0
    PR_LOG(modlog, 1, ("C_VerifyRecover"));
2307
0
    log_handle(3, fmt_hSession, hSession);
2308
0
    PR_LOG(modlog, 3, (fmt_pSignature, pSignature));
2309
0
    PR_LOG(modlog, 3, (fmt_ulSignatureLen, ulSignatureLen));
2310
0
    PR_LOG(modlog, 3, (fmt_pData, pData));
2311
0
    PR_LOG(modlog, 3, (fmt_pulDataLen, pulDataLen));
2312
0
    nssdbg_start_time(FUNC_C_VERIFYRECOVER, &start);
2313
0
    rv = module_functions->C_VerifyRecover(hSession,
2314
0
                                           pSignature,
2315
0
                                           ulSignatureLen,
2316
0
                                           pData,
2317
0
                                           pulDataLen);
2318
0
    nssdbg_finish_time(FUNC_C_VERIFYRECOVER, start);
2319
0
    PR_LOG(modlog, 4, (fmt_spulDataLen, *pulDataLen));
2320
0
    log_rv(rv);
2321
0
    return rv;
2322
0
}
2323
2324
CK_RV
2325
NSSDBGC_DigestEncryptUpdate(
2326
    CK_SESSION_HANDLE hSession,
2327
    CK_BYTE_PTR pPart,
2328
    CK_ULONG ulPartLen,
2329
    CK_BYTE_PTR pEncryptedPart,
2330
    CK_ULONG_PTR pulEncryptedPartLen)
2331
0
{
2332
0
    COMMON_DEFINITIONS;
2333
2334
0
    PR_LOG(modlog, 1, ("C_DigestEncryptUpdate"));
2335
0
    log_handle(3, fmt_hSession, hSession);
2336
0
    PR_LOG(modlog, 3, (fmt_pPart, pPart));
2337
0
    PR_LOG(modlog, 3, (fmt_ulPartLen, ulPartLen));
2338
0
    PR_LOG(modlog, 3, (fmt_pEncryptedPart, pEncryptedPart));
2339
0
    PR_LOG(modlog, 3, (fmt_pulEncryptedPartLen, pulEncryptedPartLen));
2340
0
    nssdbg_start_time(FUNC_C_DIGESTENCRYPTUPDATE, &start);
2341
0
    rv = module_functions->C_DigestEncryptUpdate(hSession,
2342
0
                                                 pPart,
2343
0
                                                 ulPartLen,
2344
0
                                                 pEncryptedPart,
2345
0
                                                 pulEncryptedPartLen);
2346
0
    nssdbg_finish_time(FUNC_C_DIGESTENCRYPTUPDATE, start);
2347
0
    PR_LOG(modlog, 4, (fmt_spulEncryptedPartLen, *pulEncryptedPartLen));
2348
0
    log_rv(rv);
2349
0
    return rv;
2350
0
}
2351
2352
CK_RV
2353
NSSDBGC_DecryptDigestUpdate(
2354
    CK_SESSION_HANDLE hSession,
2355
    CK_BYTE_PTR pEncryptedPart,
2356
    CK_ULONG ulEncryptedPartLen,
2357
    CK_BYTE_PTR pPart,
2358
    CK_ULONG_PTR pulPartLen)
2359
0
{
2360
0
    COMMON_DEFINITIONS;
2361
2362
0
    PR_LOG(modlog, 1, ("C_DecryptDigestUpdate"));
2363
0
    log_handle(3, fmt_hSession, hSession);
2364
0
    PR_LOG(modlog, 3, (fmt_pEncryptedPart, pEncryptedPart));
2365
0
    PR_LOG(modlog, 3, (fmt_ulEncryptedPartLen, ulEncryptedPartLen));
2366
0
    PR_LOG(modlog, 3, (fmt_pPart, pPart));
2367
0
    PR_LOG(modlog, 3, (fmt_pulPartLen, pulPartLen));
2368
0
    nssdbg_start_time(FUNC_C_DECRYPTDIGESTUPDATE, &start);
2369
0
    rv = module_functions->C_DecryptDigestUpdate(hSession,
2370
0
                                                 pEncryptedPart,
2371
0
                                                 ulEncryptedPartLen,
2372
0
                                                 pPart,
2373
0
                                                 pulPartLen);
2374
0
    nssdbg_finish_time(FUNC_C_DECRYPTDIGESTUPDATE, start);
2375
0
    PR_LOG(modlog, 4, (fmt_spulPartLen, *pulPartLen));
2376
0
    log_rv(rv);
2377
0
    return rv;
2378
0
}
2379
2380
CK_RV
2381
NSSDBGC_SignEncryptUpdate(
2382
    CK_SESSION_HANDLE hSession,
2383
    CK_BYTE_PTR pPart,
2384
    CK_ULONG ulPartLen,
2385
    CK_BYTE_PTR pEncryptedPart,
2386
    CK_ULONG_PTR pulEncryptedPartLen)
2387
0
{
2388
0
    COMMON_DEFINITIONS;
2389
2390
0
    PR_LOG(modlog, 1, ("C_SignEncryptUpdate"));
2391
0
    log_handle(3, fmt_hSession, hSession);
2392
0
    PR_LOG(modlog, 3, (fmt_pPart, pPart));
2393
0
    PR_LOG(modlog, 3, (fmt_ulPartLen, ulPartLen));
2394
0
    PR_LOG(modlog, 3, (fmt_pEncryptedPart, pEncryptedPart));
2395
0
    PR_LOG(modlog, 3, (fmt_pulEncryptedPartLen, pulEncryptedPartLen));
2396
0
    nssdbg_start_time(FUNC_C_SIGNENCRYPTUPDATE, &start);
2397
0
    rv = module_functions->C_SignEncryptUpdate(hSession,
2398
0
                                               pPart,
2399
0
                                               ulPartLen,
2400
0
                                               pEncryptedPart,
2401
0
                                               pulEncryptedPartLen);
2402
0
    nssdbg_finish_time(FUNC_C_SIGNENCRYPTUPDATE, start);
2403
0
    PR_LOG(modlog, 4, (fmt_spulEncryptedPartLen, *pulEncryptedPartLen));
2404
0
    log_rv(rv);
2405
0
    return rv;
2406
0
}
2407
2408
CK_RV
2409
NSSDBGC_DecryptVerifyUpdate(
2410
    CK_SESSION_HANDLE hSession,
2411
    CK_BYTE_PTR pEncryptedPart,
2412
    CK_ULONG ulEncryptedPartLen,
2413
    CK_BYTE_PTR pPart,
2414
    CK_ULONG_PTR pulPartLen)
2415
0
{
2416
0
    COMMON_DEFINITIONS;
2417
2418
0
    PR_LOG(modlog, 1, ("C_DecryptVerifyUpdate"));
2419
0
    log_handle(3, fmt_hSession, hSession);
2420
0
    PR_LOG(modlog, 3, (fmt_pEncryptedPart, pEncryptedPart));
2421
0
    PR_LOG(modlog, 3, (fmt_ulEncryptedPartLen, ulEncryptedPartLen));
2422
0
    PR_LOG(modlog, 3, (fmt_pPart, pPart));
2423
0
    PR_LOG(modlog, 3, (fmt_pulPartLen, pulPartLen));
2424
0
    nssdbg_start_time(FUNC_C_DECRYPTVERIFYUPDATE, &start);
2425
0
    rv = module_functions->C_DecryptVerifyUpdate(hSession,
2426
0
                                                 pEncryptedPart,
2427
0
                                                 ulEncryptedPartLen,
2428
0
                                                 pPart,
2429
0
                                                 pulPartLen);
2430
0
    nssdbg_finish_time(FUNC_C_DECRYPTVERIFYUPDATE, start);
2431
0
    PR_LOG(modlog, 4, (fmt_spulPartLen, *pulPartLen));
2432
0
    log_rv(rv);
2433
0
    return rv;
2434
0
}
2435
2436
CK_RV
2437
NSSDBGC_GenerateKey(
2438
    CK_SESSION_HANDLE hSession,
2439
    CK_MECHANISM_PTR pMechanism,
2440
    CK_ATTRIBUTE_PTR pTemplate,
2441
    CK_ULONG ulCount,
2442
    CK_OBJECT_HANDLE_PTR phKey)
2443
0
{
2444
0
    COMMON_DEFINITIONS;
2445
2446
0
    PR_LOG(modlog, 1, ("C_GenerateKey"));
2447
0
    log_handle(3, fmt_hSession, hSession);
2448
0
    PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism));
2449
0
    PR_LOG(modlog, 3, (fmt_pTemplate, pTemplate));
2450
0
    PR_LOG(modlog, 3, (fmt_ulCount, ulCount));
2451
0
    PR_LOG(modlog, 3, (fmt_phKey, phKey));
2452
0
    print_template(pTemplate, ulCount);
2453
0
    print_mechanism(pMechanism);
2454
0
    nssdbg_start_time(FUNC_C_GENERATEKEY, &start);
2455
0
    rv = module_functions->C_GenerateKey(hSession,
2456
0
                                         pMechanism,
2457
0
                                         pTemplate,
2458
0
                                         ulCount,
2459
0
                                         phKey);
2460
0
    nssdbg_finish_time(FUNC_C_GENERATEKEY, start);
2461
0
    log_handle(4, fmt_sphKey, *phKey);
2462
0
    log_rv(rv);
2463
0
    return rv;
2464
0
}
2465
2466
CK_RV
2467
NSSDBGC_GenerateKeyPair(
2468
    CK_SESSION_HANDLE hSession,
2469
    CK_MECHANISM_PTR pMechanism,
2470
    CK_ATTRIBUTE_PTR pPublicKeyTemplate,
2471
    CK_ULONG ulPublicKeyAttributeCount,
2472
    CK_ATTRIBUTE_PTR pPrivateKeyTemplate,
2473
    CK_ULONG ulPrivateKeyAttributeCount,
2474
    CK_OBJECT_HANDLE_PTR phPublicKey,
2475
    CK_OBJECT_HANDLE_PTR phPrivateKey)
2476
0
{
2477
0
    COMMON_DEFINITIONS;
2478
2479
0
    PR_LOG(modlog, 1, ("C_GenerateKeyPair"));
2480
0
    log_handle(3, fmt_hSession, hSession);
2481
0
    PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism));
2482
0
    PR_LOG(modlog, 3, ("  pPublicKeyTemplate = 0x%p", pPublicKeyTemplate));
2483
0
    PR_LOG(modlog, 3, ("  ulPublicKeyAttributeCount = %d", ulPublicKeyAttributeCount));
2484
0
    PR_LOG(modlog, 3, ("  pPrivateKeyTemplate = 0x%p", pPrivateKeyTemplate));
2485
0
    PR_LOG(modlog, 3, ("  ulPrivateKeyAttributeCount = %d", ulPrivateKeyAttributeCount));
2486
0
    PR_LOG(modlog, 3, ("  phPublicKey = 0x%p", phPublicKey));
2487
0
    print_template(pPublicKeyTemplate, ulPublicKeyAttributeCount);
2488
0
    PR_LOG(modlog, 3, ("  phPrivateKey = 0x%p", phPrivateKey));
2489
0
    print_template(pPrivateKeyTemplate, ulPrivateKeyAttributeCount);
2490
0
    print_mechanism(pMechanism);
2491
0
    nssdbg_start_time(FUNC_C_GENERATEKEYPAIR, &start);
2492
0
    rv = module_functions->C_GenerateKeyPair(hSession,
2493
0
                                             pMechanism,
2494
0
                                             pPublicKeyTemplate,
2495
0
                                             ulPublicKeyAttributeCount,
2496
0
                                             pPrivateKeyTemplate,
2497
0
                                             ulPrivateKeyAttributeCount,
2498
0
                                             phPublicKey,
2499
0
                                             phPrivateKey);
2500
0
    nssdbg_finish_time(FUNC_C_GENERATEKEYPAIR, start);
2501
0
    log_handle(4, "  *phPublicKey = 0x%x", *phPublicKey);
2502
0
    log_handle(4, "  *phPrivateKey = 0x%x", *phPrivateKey);
2503
0
    log_rv(rv);
2504
0
    return rv;
2505
0
}
2506
2507
CK_RV
2508
NSSDBGC_WrapKey(
2509
    CK_SESSION_HANDLE hSession,
2510
    CK_MECHANISM_PTR pMechanism,
2511
    CK_OBJECT_HANDLE hWrappingKey,
2512
    CK_OBJECT_HANDLE hKey,
2513
    CK_BYTE_PTR pWrappedKey,
2514
    CK_ULONG_PTR pulWrappedKeyLen)
2515
0
{
2516
0
    COMMON_DEFINITIONS;
2517
2518
0
    PR_LOG(modlog, 1, ("C_WrapKey"));
2519
0
    log_handle(3, fmt_hSession, hSession);
2520
0
    PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism));
2521
0
    log_handle(3, "  hWrappingKey = 0x%x", hWrappingKey);
2522
0
    log_handle(3, fmt_hKey, hKey);
2523
0
    PR_LOG(modlog, 3, (fmt_pWrappedKey, pWrappedKey));
2524
0
    PR_LOG(modlog, 3, ("  pulWrappedKeyLen = 0x%p", pulWrappedKeyLen));
2525
0
    print_mechanism(pMechanism);
2526
0
    nssdbg_start_time(FUNC_C_WRAPKEY, &start);
2527
0
    rv = module_functions->C_WrapKey(hSession,
2528
0
                                     pMechanism,
2529
0
                                     hWrappingKey,
2530
0
                                     hKey,
2531
0
                                     pWrappedKey,
2532
0
                                     pulWrappedKeyLen);
2533
0
    nssdbg_finish_time(FUNC_C_WRAPKEY, start);
2534
0
    PR_LOG(modlog, 4, ("  *pulWrappedKeyLen = 0x%x", *pulWrappedKeyLen));
2535
0
    log_rv(rv);
2536
0
    return rv;
2537
0
}
2538
2539
CK_RV
2540
NSSDBGC_UnwrapKey(
2541
    CK_SESSION_HANDLE hSession,
2542
    CK_MECHANISM_PTR pMechanism,
2543
    CK_OBJECT_HANDLE hUnwrappingKey,
2544
    CK_BYTE_PTR pWrappedKey,
2545
    CK_ULONG ulWrappedKeyLen,
2546
    CK_ATTRIBUTE_PTR pTemplate,
2547
    CK_ULONG ulAttributeCount,
2548
    CK_OBJECT_HANDLE_PTR phKey)
2549
0
{
2550
0
    COMMON_DEFINITIONS;
2551
2552
0
    PR_LOG(modlog, 1, ("C_UnwrapKey"));
2553
0
    log_handle(3, fmt_hSession, hSession);
2554
0
    PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism));
2555
0
    log_handle(3, "  hUnwrappingKey = 0x%x", hUnwrappingKey);
2556
0
    PR_LOG(modlog, 3, (fmt_pWrappedKey, pWrappedKey));
2557
0
    PR_LOG(modlog, 3, ("  ulWrappedKeyLen = %d", ulWrappedKeyLen));
2558
0
    PR_LOG(modlog, 3, (fmt_pTemplate, pTemplate));
2559
0
    PR_LOG(modlog, 3, (fmt_ulAttributeCount, ulAttributeCount));
2560
0
    PR_LOG(modlog, 3, (fmt_phKey, phKey));
2561
0
    print_template(pTemplate, ulAttributeCount);
2562
0
    print_mechanism(pMechanism);
2563
0
    nssdbg_start_time(FUNC_C_UNWRAPKEY, &start);
2564
0
    rv = module_functions->C_UnwrapKey(hSession,
2565
0
                                       pMechanism,
2566
0
                                       hUnwrappingKey,
2567
0
                                       pWrappedKey,
2568
0
                                       ulWrappedKeyLen,
2569
0
                                       pTemplate,
2570
0
                                       ulAttributeCount,
2571
0
                                       phKey);
2572
0
    nssdbg_finish_time(FUNC_C_UNWRAPKEY, start);
2573
0
    log_handle(4, fmt_sphKey, *phKey);
2574
0
    log_rv(rv);
2575
0
    return rv;
2576
0
}
2577
2578
CK_RV
2579
NSSDBGC_DeriveKey(
2580
    CK_SESSION_HANDLE hSession,
2581
    CK_MECHANISM_PTR pMechanism,
2582
    CK_OBJECT_HANDLE hBaseKey,
2583
    CK_ATTRIBUTE_PTR pTemplate,
2584
    CK_ULONG ulAttributeCount,
2585
    CK_OBJECT_HANDLE_PTR phKey)
2586
0
{
2587
0
    COMMON_DEFINITIONS;
2588
2589
0
    PR_LOG(modlog, 1, ("C_DeriveKey"));
2590
0
    log_handle(3, fmt_hSession, hSession);
2591
0
    PR_LOG(modlog, 3, (fmt_pMechanism, pMechanism));
2592
0
    log_handle(3, "  hBaseKey = 0x%x", hBaseKey);
2593
0
    PR_LOG(modlog, 3, (fmt_pTemplate, pTemplate));
2594
0
    PR_LOG(modlog, 3, (fmt_ulAttributeCount, ulAttributeCount));
2595
0
    PR_LOG(modlog, 3, (fmt_phKey, phKey));
2596
0
    print_template(pTemplate, ulAttributeCount);
2597
0
    print_mechanism(pMechanism);
2598
0
    nssdbg_start_time(FUNC_C_DERIVEKEY, &start);
2599
0
    rv = module_functions->C_DeriveKey(hSession,
2600
0
                                       pMechanism,
2601
0
                                       hBaseKey,
2602
0
                                       pTemplate,
2603
0
                                       ulAttributeCount,
2604
0
                                       phKey);
2605
0
    nssdbg_finish_time(FUNC_C_DERIVEKEY, start);
2606
0
    log_handle(4, fmt_sphKey, *phKey);
2607
0
    log_rv(rv);
2608
0
    return rv;
2609
0
}
2610
2611
CK_RV
2612
NSSDBGC_SeedRandom(
2613
    CK_SESSION_HANDLE hSession,
2614
    CK_BYTE_PTR pSeed,
2615
    CK_ULONG ulSeedLen)
2616
0
{
2617
0
    COMMON_DEFINITIONS;
2618
2619
0
    PR_LOG(modlog, 1, ("C_SeedRandom"));
2620
0
    log_handle(3, fmt_hSession, hSession);
2621
0
    PR_LOG(modlog, 3, ("  pSeed = 0x%p", pSeed));
2622
0
    PR_LOG(modlog, 3, ("  ulSeedLen = %d", ulSeedLen));
2623
0
    nssdbg_start_time(FUNC_C_SEEDRANDOM, &start);
2624
0
    rv = module_functions->C_SeedRandom(hSession,
2625
0
                                        pSeed,
2626
0
                                        ulSeedLen);
2627
0
    nssdbg_finish_time(FUNC_C_SEEDRANDOM, start);
2628
0
    log_rv(rv);
2629
0
    return rv;
2630
0
}
2631
2632
CK_RV
2633
NSSDBGC_GenerateRandom(
2634
    CK_SESSION_HANDLE hSession,
2635
    CK_BYTE_PTR RandomData,
2636
    CK_ULONG ulRandomLen)
2637
0
{
2638
0
    COMMON_DEFINITIONS;
2639
2640
0
    PR_LOG(modlog, 1, ("C_GenerateRandom"));
2641
0
    log_handle(3, fmt_hSession, hSession);
2642
0
    PR_LOG(modlog, 3, ("  RandomData = 0x%p", RandomData));
2643
0
    PR_LOG(modlog, 3, ("  ulRandomLen = %d", ulRandomLen));
2644
0
    nssdbg_start_time(FUNC_C_GENERATERANDOM, &start);
2645
0
    rv = module_functions->C_GenerateRandom(hSession,
2646
0
                                            RandomData,
2647
0
                                            ulRandomLen);
2648
0
    nssdbg_finish_time(FUNC_C_GENERATERANDOM, start);
2649
0
    log_rv(rv);
2650
0
    return rv;
2651
0
}
2652
2653
CK_RV
2654
NSSDBGC_GetFunctionStatus(
2655
    CK_SESSION_HANDLE hSession)
2656
0
{
2657
0
    COMMON_DEFINITIONS;
2658
2659
0
    PR_LOG(modlog, 1, ("C_GetFunctionStatus"));
2660
0
    log_handle(3, fmt_hSession, hSession);
2661
0
    nssdbg_start_time(FUNC_C_GETFUNCTIONSTATUS, &start);
2662
0
    rv = module_functions->C_GetFunctionStatus(hSession);
2663
0
    nssdbg_finish_time(FUNC_C_GETFUNCTIONSTATUS, start);
2664
0
    log_rv(rv);
2665
0
    return rv;
2666
0
}
2667
2668
CK_RV
2669
NSSDBGC_CancelFunction(
2670
    CK_SESSION_HANDLE hSession)
2671
0
{
2672
0
    COMMON_DEFINITIONS;
2673
2674
0
    PR_LOG(modlog, 1, ("C_CancelFunction"));
2675
0
    log_handle(3, fmt_hSession, hSession);
2676
0
    nssdbg_start_time(FUNC_C_CANCELFUNCTION, &start);
2677
0
    rv = module_functions->C_CancelFunction(hSession);
2678
0
    nssdbg_finish_time(FUNC_C_CANCELFUNCTION, start);
2679
0
    log_rv(rv);
2680
0
    return rv;
2681
0
}
2682
2683
CK_RV
2684
NSSDBGC_WaitForSlotEvent(
2685
    CK_FLAGS flags,
2686
    CK_SLOT_ID_PTR pSlot,
2687
    CK_VOID_PTR pRserved)
2688
0
{
2689
0
    COMMON_DEFINITIONS;
2690
2691
0
    PR_LOG(modlog, 1, ("C_WaitForSlotEvent"));
2692
0
    PR_LOG(modlog, 3, (fmt_flags, flags));
2693
0
    PR_LOG(modlog, 3, ("  pSlot = 0x%p", pSlot));
2694
0
    PR_LOG(modlog, 3, ("  pRserved = 0x%p", pRserved));
2695
0
    nssdbg_start_time(FUNC_C_WAITFORSLOTEVENT, &start);
2696
0
    rv = module_functions->C_WaitForSlotEvent(flags,
2697
0
                                              pSlot,
2698
0
                                              pRserved);
2699
0
    nssdbg_finish_time(FUNC_C_WAITFORSLOTEVENT, start);
2700
0
    log_rv(rv);
2701
0
    return rv;
2702
0
}
2703
2704
CK_RV
2705
NSSDBGC_GetInterfaceList(CK_INTERFACE_PTR interfaces,
2706
                         CK_ULONG_PTR pulCount)
2707
0
{
2708
0
    COMMON_DEFINITIONS;
2709
0
    PR_LOG(modlog, 1, ("C_GetInterfaceList"));
2710
0
    PR_LOG(modlog, 3, ("  interfaces = 0x%p", interfaces));
2711
0
    PR_LOG(modlog, 3, ("  pulCount = %d", pulCount));
2712
0
    nssdbg_start_time(FUNC_C_GETINTERFACELIST, &start);
2713
0
    rv = module_functions->C_GetInterfaceList(interfaces,
2714
0
                                              pulCount);
2715
0
    nssdbg_finish_time(FUNC_C_GETINTERFACELIST, start);
2716
0
    log_rv(rv);
2717
0
    return rv;
2718
0
}
2719
2720
CK_RV
2721
NSSDBGC_GetInterface(CK_UTF8CHAR_PTR pInterfaceName,
2722
                     CK_VERSION_PTR pVersion,
2723
                     CK_INTERFACE_PTR_PTR ppInterface,
2724
                     CK_FLAGS flags)
2725
0
{
2726
0
    COMMON_DEFINITIONS;
2727
0
    PR_LOG(modlog, 1, ("C_GetInterface"));
2728
0
    PR_LOG(modlog, 3, ("  pInterfaceName = 0x%p", pInterfaceName));
2729
0
    PR_LOG(modlog, 3, ("  pVersion = 0x%p", pVersion));
2730
0
    PR_LOG(modlog, 3, ("  ppInterface = 0x%p", ppInterface));
2731
0
    PR_LOG(modlog, 3, (fmt_flags, flags));
2732
0
    nssdbg_start_time(FUNC_C_GETINTERFACE, &start);
2733
0
    rv = module_functions->C_GetInterface(pInterfaceName,
2734
0
                                          pVersion,
2735
0
                                          ppInterface,
2736
0
                                          flags);
2737
0
    nssdbg_finish_time(FUNC_C_GETINTERFACE, start);
2738
0
    log_rv(rv);
2739
0
    return rv;
2740
0
}
2741
2742
CK_RV
2743
NSSDBGC_LoginUser(CK_SESSION_HANDLE hSession,
2744
                  CK_USER_TYPE userType,
2745
                  CK_CHAR_PTR pPin,
2746
                  CK_ULONG ulPinLen,
2747
                  CK_UTF8CHAR_PTR pUsername,
2748
                  CK_ULONG ulUsernameLen)
2749
0
{
2750
0
    COMMON_DEFINITIONS;
2751
0
    PR_LOG(modlog, 1, ("C_LoginUser"));
2752
0
    log_handle(3, fmt_hSession, hSession);
2753
0
    PR_LOG(modlog, 3, ("  userType = 0x%x", userType));
2754
0
    PR_LOG(modlog, 3, (fmt_pPin, pPin));
2755
0
    PR_LOG(modlog, 3, (fmt_ulPinLen, ulPinLen));
2756
0
    PR_LOG(modlog, 3, ("  pUsername = 0x%p", pUsername));
2757
0
    PR_LOG(modlog, 3, ("  ulUsernameLen = %d", ulUsernameLen));
2758
0
    nssdbg_start_time(FUNC_C_LOGINUSER, &start);
2759
0
    rv = module_functions->C_LoginUser(hSession,
2760
0
                                       userType,
2761
0
                                       pPin,
2762
0
                                       ulPinLen,
2763
0
                                       pUsername,
2764
0
                                       ulUsernameLen);
2765
0
    nssdbg_finish_time(FUNC_C_LOGINUSER, start);
2766
0
    log_rv(rv);
2767
0
    return rv;
2768
0
}
2769
2770
CK_RV
2771
NSSDBGC_SessionCancel(CK_SESSION_HANDLE hSession,
2772
                      CK_FLAGS flags)
2773
0
{
2774
0
    COMMON_DEFINITIONS;
2775
0
    PR_LOG(modlog, 1, ("C_SessionCancel"));
2776
0
    log_handle(3, fmt_hSession, hSession);
2777
0
    PR_LOG(modlog, 3, (fmt_flags, flags));
2778
0
    nssdbg_start_time(FUNC_C_SESSIONCANCEL, &start);
2779
0
    rv = module_functions->C_SessionCancel(hSession,
2780
0
                                           flags);
2781
0
    nssdbg_finish_time(FUNC_C_SESSIONCANCEL, start);
2782
0
    log_rv(rv);
2783
0
    return rv;
2784
0
}
2785
2786
CK_RV
2787
NSSDBGC_MessageEncryptInit(CK_SESSION_HANDLE hSession,
2788
                           CK_MECHANISM_PTR pMechanism,
2789
                           CK_OBJECT_HANDLE hKey)
2790
0
{
2791
0
    COMMON_DEFINITIONS;
2792
0
    PR_LOG(modlog, 1, ("C_MessageEncryptInit"));
2793
0
    log_handle(3, fmt_hSession, hSession);
2794
0
    print_mechanism(pMechanism);
2795
0
    log_handle(3, fmt_hKey, hKey);
2796
0
    nssdbg_start_time(FUNC_C_MESSAGEENCRYPTINIT, &start);
2797
0
    rv = module_functions->C_MessageEncryptInit(hSession,
2798
0
                                                pMechanism,
2799
0
                                                hKey);
2800
0
    nssdbg_finish_time(FUNC_C_MESSAGEENCRYPTINIT, start);
2801
0
    log_rv(rv);
2802
0
    return rv;
2803
0
}
2804
2805
CK_RV
2806
NSSDBGC_EncryptMessage(CK_SESSION_HANDLE hSession,
2807
                       CK_VOID_PTR pParameter,
2808
                       CK_ULONG ulParameterLen,
2809
                       CK_BYTE_PTR pAssociatedData,
2810
                       CK_ULONG ulAssociatedDataLen,
2811
                       CK_BYTE_PTR pPlaintext,
2812
                       CK_ULONG ulPlaintextLen,
2813
                       CK_BYTE_PTR pCiphertext,
2814
                       CK_ULONG_PTR pulCiphertextLen)
2815
0
{
2816
0
    COMMON_DEFINITIONS;
2817
0
    PR_LOG(modlog, 1, ("C_EncryptMessage"));
2818
0
    log_handle(3, fmt_hSession, hSession);
2819
0
    PR_LOG(modlog, 3, (fmt_pParameter, pParameter));
2820
0
    PR_LOG(modlog, 3, (fmt_ulParameterLen, ulParameterLen));
2821
0
    PR_LOG(modlog, 3, (fmt_pAssociatedData, pAssociatedData));
2822
0
    PR_LOG(modlog, 3, (fmt_ulAssociatedDataLen, ulAssociatedDataLen));
2823
0
    PR_LOG(modlog, 3, (fmt_pPlaintext, pPlaintext));
2824
0
    PR_LOG(modlog, 3, (fmt_ulPlaintextLen, ulPlaintextLen));
2825
0
    PR_LOG(modlog, 3, (fmt_pCiphertext, pCiphertext));
2826
0
    PR_LOG(modlog, 3, (fmt_pulCiphertextLen, pulCiphertextLen));
2827
0
    nssdbg_start_time(FUNC_C_ENCRYPTMESSAGE, &start);
2828
0
    rv = module_functions->C_EncryptMessage(hSession,
2829
0
                                            pParameter,
2830
0
                                            ulParameterLen,
2831
0
                                            pAssociatedData,
2832
0
                                            ulAssociatedDataLen,
2833
0
                                            pPlaintext,
2834
0
                                            ulPlaintextLen,
2835
0
                                            pCiphertext,
2836
0
                                            pulCiphertextLen);
2837
0
    nssdbg_finish_time(FUNC_C_ENCRYPTMESSAGE, start);
2838
0
    log_rv(rv);
2839
0
    return rv;
2840
0
}
2841
2842
CK_RV
2843
NSSDBGC_EncryptMessageBegin(CK_SESSION_HANDLE hSession,
2844
                            CK_VOID_PTR pParameter,
2845
                            CK_ULONG ulParameterLen,
2846
                            CK_BYTE_PTR pAssociatedData,
2847
                            CK_ULONG ulAssociatedDataLen)
2848
0
{
2849
0
    COMMON_DEFINITIONS;
2850
0
    PR_LOG(modlog, 1, ("C_EncryptMessageBegin"));
2851
0
    log_handle(3, fmt_hSession, hSession);
2852
0
    PR_LOG(modlog, 3, (fmt_pParameter, pParameter));
2853
0
    PR_LOG(modlog, 3, (fmt_ulParameterLen, ulParameterLen));
2854
0
    PR_LOG(modlog, 3, (fmt_pAssociatedData, pAssociatedData));
2855
0
    PR_LOG(modlog, 3, (fmt_ulAssociatedDataLen, ulAssociatedDataLen));
2856
0
    nssdbg_start_time(FUNC_C_ENCRYPTMESSAGEBEGIN, &start);
2857
0
    rv = module_functions->C_EncryptMessageBegin(hSession,
2858
0
                                                 pParameter,
2859
0
                                                 ulParameterLen,
2860
0
                                                 pAssociatedData,
2861
0
                                                 ulAssociatedDataLen);
2862
0
    nssdbg_finish_time(FUNC_C_ENCRYPTMESSAGEBEGIN, start);
2863
0
    log_rv(rv);
2864
0
    return rv;
2865
0
}
2866
2867
CK_RV
2868
NSSDBGC_EncryptMessageNext(CK_SESSION_HANDLE hSession,
2869
                           CK_VOID_PTR pParameter,
2870
                           CK_ULONG ulParameterLen,
2871
                           CK_BYTE_PTR pPlaintextPart,
2872
                           CK_ULONG ulPlaintextPartLen,
2873
                           CK_BYTE_PTR pCiphertextPart,
2874
                           CK_ULONG_PTR pulCiphertextPartLen,
2875
                           CK_FLAGS flags)
2876
0
{
2877
0
    COMMON_DEFINITIONS;
2878
0
    PR_LOG(modlog, 1, ("C_EncryptMessageNext"));
2879
0
    log_handle(3, fmt_hSession, hSession);
2880
0
    PR_LOG(modlog, 3, (fmt_pParameter, pParameter));
2881
0
    PR_LOG(modlog, 3, (fmt_ulParameterLen, ulParameterLen));
2882
0
    PR_LOG(modlog, 3, (fmt_pPlaintextPart, pPlaintextPart));
2883
0
    PR_LOG(modlog, 3, (fmt_ulPlaintextPartLen, ulPlaintextPartLen));
2884
0
    PR_LOG(modlog, 3, (fmt_pCiphertextPart, pCiphertextPart));
2885
0
    PR_LOG(modlog, 3, (fmt_pulCiphertextPartLen, pulCiphertextPartLen));
2886
0
    nssdbg_start_time(FUNC_C_ENCRYPTMESSAGENEXT, &start);
2887
0
    rv = module_functions->C_EncryptMessageNext(hSession,
2888
0
                                                pParameter,
2889
0
                                                ulParameterLen,
2890
0
                                                pPlaintextPart,
2891
0
                                                ulPlaintextPartLen,
2892
0
                                                pCiphertextPart,
2893
0
                                                pulCiphertextPartLen,
2894
0
                                                flags);
2895
0
    nssdbg_finish_time(FUNC_C_ENCRYPTMESSAGENEXT, start);
2896
0
    log_rv(rv);
2897
0
    return rv;
2898
0
}
2899
2900
CK_RV
2901
NSSDBGC_MessageEncryptFinal(CK_SESSION_HANDLE hSession)
2902
0
{
2903
0
    COMMON_DEFINITIONS;
2904
0
    PR_LOG(modlog, 1, ("C_MessageEncryptFinal"));
2905
0
    log_handle(3, fmt_hSession, hSession);
2906
0
    nssdbg_start_time(FUNC_C_MESSAGEENCRYPTFINAL, &start);
2907
0
    rv = module_functions->C_MessageEncryptFinal(hSession);
2908
0
    nssdbg_finish_time(FUNC_C_MESSAGEENCRYPTFINAL, start);
2909
0
    log_rv(rv);
2910
0
    return rv;
2911
0
}
2912
2913
CK_RV
2914
NSSDBGC_MessageDecryptInit(CK_SESSION_HANDLE hSession,
2915
                           CK_MECHANISM_PTR pMechanism,
2916
                           CK_OBJECT_HANDLE hKey)
2917
0
{
2918
0
    COMMON_DEFINITIONS;
2919
0
    PR_LOG(modlog, 1, ("C_MessageDecryptInit"));
2920
0
    log_handle(3, fmt_hSession, hSession);
2921
0
    print_mechanism(pMechanism);
2922
0
    log_handle(3, fmt_hKey, hKey);
2923
0
    nssdbg_start_time(FUNC_C_MESSAGEDECRYPTINIT, &start);
2924
0
    rv = module_functions->C_MessageDecryptInit(hSession,
2925
0
                                                pMechanism,
2926
0
                                                hKey);
2927
0
    nssdbg_finish_time(FUNC_C_MESSAGEDECRYPTINIT, start);
2928
0
    log_rv(rv);
2929
0
    return rv;
2930
0
}
2931
2932
CK_RV
2933
NSSDBGC_DecryptMessage(CK_SESSION_HANDLE hSession,
2934
                       CK_VOID_PTR pParameter,
2935
                       CK_ULONG ulParameterLen,
2936
                       CK_BYTE_PTR pAssociatedData,
2937
                       CK_ULONG ulAssociatedDataLen,
2938
                       CK_BYTE_PTR pCiphertext,
2939
                       CK_ULONG ulCiphertextLen,
2940
                       CK_BYTE_PTR pPlaintext,
2941
                       CK_ULONG_PTR pulPlaintextLen)
2942
0
{
2943
0
    COMMON_DEFINITIONS;
2944
0
    PR_LOG(modlog, 1, ("C_DecryptMessage"));
2945
0
    log_handle(3, fmt_hSession, hSession);
2946
0
    PR_LOG(modlog, 3, (fmt_pParameter, pParameter));
2947
0
    PR_LOG(modlog, 3, (fmt_ulParameterLen, ulParameterLen));
2948
0
    PR_LOG(modlog, 3, (fmt_pAssociatedData, pAssociatedData));
2949
0
    PR_LOG(modlog, 3, (fmt_ulAssociatedDataLen, ulAssociatedDataLen));
2950
0
    PR_LOG(modlog, 3, (fmt_pCiphertext, pCiphertext));
2951
0
    PR_LOG(modlog, 3, (fmt_ulCiphertextLen, ulCiphertextLen));
2952
0
    PR_LOG(modlog, 3, (fmt_pPlaintext, pPlaintext));
2953
0
    PR_LOG(modlog, 3, (fmt_pulPlaintextLen, pulPlaintextLen));
2954
0
    nssdbg_start_time(FUNC_C_DECRYPTMESSAGE, &start);
2955
0
    rv = module_functions->C_DecryptMessage(hSession,
2956
0
                                            pParameter,
2957
0
                                            ulParameterLen,
2958
0
                                            pAssociatedData,
2959
0
                                            ulAssociatedDataLen,
2960
0
                                            pCiphertext,
2961
0
                                            ulCiphertextLen,
2962
0
                                            pPlaintext,
2963
0
                                            pulPlaintextLen);
2964
0
    nssdbg_finish_time(FUNC_C_DECRYPTMESSAGE, start);
2965
0
    log_rv(rv);
2966
0
    return rv;
2967
0
}
2968
2969
CK_RV
2970
NSSDBGC_DecryptMessageBegin(CK_SESSION_HANDLE hSession,
2971
                            CK_VOID_PTR pParameter,
2972
                            CK_ULONG ulParameterLen,
2973
                            CK_BYTE_PTR pAssociatedData,
2974
                            CK_ULONG ulAssociatedDataLen)
2975
0
{
2976
0
    COMMON_DEFINITIONS;
2977
0
    PR_LOG(modlog, 1, ("C_DecryptMessageBegin"));
2978
0
    log_handle(3, fmt_hSession, hSession);
2979
0
    PR_LOG(modlog, 3, (fmt_pParameter, pParameter));
2980
0
    PR_LOG(modlog, 3, (fmt_ulParameterLen, ulParameterLen));
2981
0
    PR_LOG(modlog, 3, (fmt_pAssociatedData, pAssociatedData));
2982
0
    PR_LOG(modlog, 3, (fmt_ulAssociatedDataLen, ulAssociatedDataLen));
2983
0
    nssdbg_start_time(FUNC_C_DECRYPTMESSAGEBEGIN, &start);
2984
0
    rv = module_functions->C_DecryptMessageBegin(hSession,
2985
0
                                                 pParameter,
2986
0
                                                 ulParameterLen,
2987
0
                                                 pAssociatedData,
2988
0
                                                 ulAssociatedDataLen);
2989
0
    nssdbg_finish_time(FUNC_C_DECRYPTMESSAGEBEGIN, start);
2990
0
    log_rv(rv);
2991
0
    return rv;
2992
0
}
2993
2994
CK_RV
2995
NSSDBGC_DecryptMessageNext(CK_SESSION_HANDLE hSession,
2996
                           CK_VOID_PTR pParameter,
2997
                           CK_ULONG ulParameterLen,
2998
                           CK_BYTE_PTR pCiphertextPart,
2999
                           CK_ULONG ulCiphertextPartLen,
3000
                           CK_BYTE_PTR pPlaintextPart,
3001
                           CK_ULONG_PTR pulPlaintextPartLen,
3002
                           CK_FLAGS flags)
3003
0
{
3004
0
    COMMON_DEFINITIONS;
3005
0
    PR_LOG(modlog, 1, ("C_DecryptMessageNext"));
3006
0
    log_handle(3, fmt_hSession, hSession);
3007
0
    PR_LOG(modlog, 3, (fmt_pParameter, pParameter));
3008
0
    PR_LOG(modlog, 3, (fmt_ulParameterLen, ulParameterLen));
3009
0
    PR_LOG(modlog, 3, (fmt_pCiphertextPart, pCiphertextPart));
3010
0
    PR_LOG(modlog, 3, (fmt_ulCiphertextPartLen, ulCiphertextPartLen));
3011
0
    PR_LOG(modlog, 3, (fmt_pPlaintextPart, pPlaintextPart));
3012
0
    PR_LOG(modlog, 3, (fmt_pulPlaintextPartLen, pulPlaintextPartLen));
3013
0
    nssdbg_start_time(FUNC_C_DECRYPTMESSAGENEXT, &start);
3014
0
    rv = module_functions->C_DecryptMessageNext(hSession,
3015
0
                                                pParameter,
3016
0
                                                ulParameterLen,
3017
0
                                                pCiphertextPart,
3018
0
                                                ulCiphertextPartLen,
3019
0
                                                pPlaintextPart,
3020
0
                                                pulPlaintextPartLen,
3021
0
                                                flags);
3022
0
    nssdbg_finish_time(FUNC_C_DECRYPTMESSAGENEXT, start);
3023
0
    log_rv(rv);
3024
0
    return rv;
3025
0
}
3026
3027
CK_RV
3028
NSSDBGC_MessageDecryptFinal(CK_SESSION_HANDLE hSession)
3029
0
{
3030
0
    COMMON_DEFINITIONS;
3031
0
    PR_LOG(modlog, 1, ("C_MessageDecryptFinal"));
3032
0
    log_handle(3, fmt_hSession, hSession);
3033
0
    nssdbg_start_time(FUNC_C_MESSAGEDECRYPTFINAL, &start);
3034
0
    rv = module_functions->C_MessageDecryptFinal(hSession);
3035
0
    nssdbg_finish_time(FUNC_C_MESSAGEDECRYPTFINAL, start);
3036
0
    log_rv(rv);
3037
0
    return rv;
3038
0
}
3039
3040
CK_RV
3041
NSSDBGC_MessageSignInit(CK_SESSION_HANDLE hSession,
3042
                        CK_MECHANISM_PTR pMechanism,
3043
                        CK_OBJECT_HANDLE hKey)
3044
0
{
3045
0
    COMMON_DEFINITIONS;
3046
0
    PR_LOG(modlog, 1, ("C_MessageSignInit"));
3047
0
    log_handle(3, fmt_hSession, hSession);
3048
0
    print_mechanism(pMechanism);
3049
0
    log_handle(3, fmt_hKey, hKey);
3050
0
    nssdbg_start_time(FUNC_C_MESSAGESIGNINIT, &start);
3051
0
    rv = module_functions->C_MessageSignInit(hSession,
3052
0
                                             pMechanism,
3053
0
                                             hKey);
3054
0
    nssdbg_finish_time(FUNC_C_MESSAGESIGNINIT, start);
3055
0
    log_rv(rv);
3056
0
    return rv;
3057
0
}
3058
3059
CK_RV
3060
NSSDBGC_SignMessage(CK_SESSION_HANDLE hSession,
3061
                    CK_VOID_PTR pParameter,
3062
                    CK_ULONG ulParameterLen,
3063
                    CK_BYTE_PTR pData,
3064
                    CK_ULONG ulDataLen,
3065
                    CK_BYTE_PTR pSignature,
3066
                    CK_ULONG_PTR pulSignatureLen)
3067
0
{
3068
0
    COMMON_DEFINITIONS;
3069
0
    PR_LOG(modlog, 1, ("C_SignMessage"));
3070
0
    log_handle(3, fmt_hSession, hSession);
3071
0
    PR_LOG(modlog, 3, (fmt_pParameter, pParameter));
3072
0
    PR_LOG(modlog, 3, (fmt_ulParameterLen, ulParameterLen));
3073
0
    PR_LOG(modlog, 3, (fmt_pData, pData));
3074
0
    PR_LOG(modlog, 3, (fmt_ulDataLen, ulDataLen));
3075
0
    PR_LOG(modlog, 3, (fmt_pSignature, pSignature));
3076
0
    PR_LOG(modlog, 3, (fmt_pulSignatureLen, pulSignatureLen));
3077
0
    nssdbg_start_time(FUNC_C_SIGNMESSAGE, &start);
3078
0
    rv = module_functions->C_SignMessage(hSession,
3079
0
                                         pParameter,
3080
0
                                         ulParameterLen,
3081
0
                                         pData,
3082
0
                                         ulDataLen,
3083
0
                                         pSignature,
3084
0
                                         pulSignatureLen);
3085
0
    nssdbg_finish_time(FUNC_C_SIGNMESSAGE, start);
3086
0
    log_rv(rv);
3087
0
    return rv;
3088
0
}
3089
3090
CK_RV
3091
NSSDBGC_SignMessageBegin(CK_SESSION_HANDLE hSession,
3092
                         CK_VOID_PTR pParameter,
3093
                         CK_ULONG ulParameterLen)
3094
0
{
3095
0
    COMMON_DEFINITIONS;
3096
0
    PR_LOG(modlog, 1, ("C_SignMessageBegin"));
3097
0
    log_handle(3, fmt_hSession, hSession);
3098
0
    PR_LOG(modlog, 3, (fmt_pParameter, pParameter));
3099
0
    PR_LOG(modlog, 3, (fmt_ulParameterLen, ulParameterLen));
3100
0
    nssdbg_start_time(FUNC_C_SIGNMESSAGEBEGIN, &start);
3101
0
    rv = module_functions->C_SignMessageBegin(hSession,
3102
0
                                              pParameter,
3103
0
                                              ulParameterLen);
3104
0
    nssdbg_finish_time(FUNC_C_SIGNMESSAGEBEGIN, start);
3105
0
    log_rv(rv);
3106
0
    return rv;
3107
0
}
3108
3109
CK_RV
3110
NSSDBGC_SignMessageNext(CK_SESSION_HANDLE hSession,
3111
                        CK_VOID_PTR pParameter,
3112
                        CK_ULONG ulParameterLen,
3113
                        CK_BYTE_PTR pData,
3114
                        CK_ULONG ulDataLen,
3115
                        CK_BYTE_PTR pSignature,
3116
                        CK_ULONG_PTR pulSignatureLen)
3117
0
{
3118
0
    COMMON_DEFINITIONS;
3119
0
    PR_LOG(modlog, 1, ("C_SignMessageNext"));
3120
0
    log_handle(3, fmt_hSession, hSession);
3121
0
    PR_LOG(modlog, 3, (fmt_pParameter, pParameter));
3122
0
    PR_LOG(modlog, 3, (fmt_ulParameterLen, ulParameterLen));
3123
0
    PR_LOG(modlog, 3, (fmt_pData, pData));
3124
0
    PR_LOG(modlog, 3, (fmt_ulDataLen, ulDataLen));
3125
0
    PR_LOG(modlog, 3, (fmt_pSignature, pSignature));
3126
0
    PR_LOG(modlog, 3, (fmt_pulSignatureLen, pulSignatureLen));
3127
0
    nssdbg_start_time(FUNC_C_SIGNMESSAGENEXT, &start);
3128
0
    rv = module_functions->C_SignMessageNext(hSession,
3129
0
                                             pParameter,
3130
0
                                             ulParameterLen,
3131
0
                                             pData,
3132
0
                                             ulDataLen,
3133
0
                                             pSignature,
3134
0
                                             pulSignatureLen);
3135
0
    nssdbg_finish_time(FUNC_C_SIGNMESSAGENEXT, start);
3136
0
    log_rv(rv);
3137
0
    return rv;
3138
0
}
3139
3140
CK_RV
3141
NSSDBGC_MessageSignFinal(CK_SESSION_HANDLE hSession)
3142
0
{
3143
0
    COMMON_DEFINITIONS;
3144
0
    PR_LOG(modlog, 1, ("C_MessageSignFinal"));
3145
0
    log_handle(3, fmt_hSession, hSession);
3146
0
    nssdbg_start_time(FUNC_C_MESSAGESIGNFINAL, &start);
3147
0
    rv = module_functions->C_MessageSignFinal(hSession);
3148
0
    nssdbg_finish_time(FUNC_C_MESSAGESIGNFINAL, start);
3149
0
    log_rv(rv);
3150
0
    return rv;
3151
0
}
3152
3153
CK_RV
3154
NSSDBGC_MessageVerifyInit(CK_SESSION_HANDLE hSession,
3155
                          CK_MECHANISM_PTR pMechanism,
3156
                          CK_OBJECT_HANDLE hKey)
3157
0
{
3158
0
    COMMON_DEFINITIONS;
3159
0
    PR_LOG(modlog, 1, ("C_MessageVerifyInit"));
3160
0
    log_handle(3, fmt_hSession, hSession);
3161
0
    print_mechanism(pMechanism);
3162
0
    log_handle(3, fmt_hKey, hKey);
3163
0
    nssdbg_start_time(FUNC_C_MESSAGEVERIFYINIT, &start);
3164
0
    rv = module_functions->C_MessageVerifyInit(hSession,
3165
0
                                               pMechanism,
3166
0
                                               hKey);
3167
0
    nssdbg_finish_time(FUNC_C_MESSAGEVERIFYINIT, start);
3168
0
    log_rv(rv);
3169
0
    return rv;
3170
0
}
3171
3172
CK_RV
3173
NSSDBGC_VerifyMessage(CK_SESSION_HANDLE hSession,
3174
                      CK_VOID_PTR pParameter,
3175
                      CK_ULONG ulParameterLen,
3176
                      CK_BYTE_PTR pData,
3177
                      CK_ULONG ulDataLen,
3178
                      CK_BYTE_PTR pSignature,
3179
                      CK_ULONG ulSignatureLen)
3180
0
{
3181
0
    COMMON_DEFINITIONS;
3182
0
    PR_LOG(modlog, 1, ("C_VerifyMessage"));
3183
0
    log_handle(3, fmt_hSession, hSession);
3184
0
    PR_LOG(modlog, 3, (fmt_pParameter, pParameter));
3185
0
    PR_LOG(modlog, 3, (fmt_ulParameterLen, ulParameterLen));
3186
0
    PR_LOG(modlog, 3, (fmt_pData, pData));
3187
0
    PR_LOG(modlog, 3, (fmt_ulDataLen, ulDataLen));
3188
0
    PR_LOG(modlog, 3, (fmt_pSignature, pSignature));
3189
0
    PR_LOG(modlog, 3, (fmt_ulSignatureLen, ulSignatureLen));
3190
0
    nssdbg_start_time(FUNC_C_VERIFYMESSAGE, &start);
3191
0
    rv = module_functions->C_VerifyMessage(hSession,
3192
0
                                           pParameter,
3193
0
                                           ulParameterLen,
3194
0
                                           pData,
3195
0
                                           ulDataLen,
3196
0
                                           pSignature,
3197
0
                                           ulSignatureLen);
3198
0
    nssdbg_finish_time(FUNC_C_VERIFYMESSAGE, start);
3199
0
    log_rv(rv);
3200
0
    return rv;
3201
0
}
3202
3203
CK_RV
3204
NSSDBGC_VerifyMessageBegin(CK_SESSION_HANDLE hSession,
3205
                           CK_VOID_PTR pParameter,
3206
                           CK_ULONG ulParameterLen)
3207
0
{
3208
0
    COMMON_DEFINITIONS;
3209
0
    PR_LOG(modlog, 1, ("C_VerifyMessageBegin"));
3210
0
    log_handle(3, fmt_hSession, hSession);
3211
0
    PR_LOG(modlog, 3, (fmt_pParameter, pParameter));
3212
0
    PR_LOG(modlog, 3, (fmt_ulParameterLen, ulParameterLen));
3213
0
    nssdbg_start_time(FUNC_C_VERIFYMESSAGEBEGIN, &start);
3214
0
    rv = module_functions->C_VerifyMessageBegin(hSession,
3215
0
                                                pParameter,
3216
0
                                                ulParameterLen);
3217
0
    nssdbg_finish_time(FUNC_C_VERIFYMESSAGEBEGIN, start);
3218
0
    log_rv(rv);
3219
0
    return rv;
3220
0
}
3221
3222
CK_RV
3223
NSSDBGC_VerifyMessageNext(CK_SESSION_HANDLE hSession,
3224
                          CK_VOID_PTR pParameter,
3225
                          CK_ULONG ulParameterLen,
3226
                          CK_BYTE_PTR pData,
3227
                          CK_ULONG ulDataLen,
3228
                          CK_BYTE_PTR pSignature,
3229
                          CK_ULONG ulSignatureLen)
3230
0
{
3231
0
    COMMON_DEFINITIONS;
3232
0
    PR_LOG(modlog, 1, ("C_VerifyMessageNext"));
3233
0
    log_handle(3, fmt_hSession, hSession);
3234
0
    PR_LOG(modlog, 3, (fmt_pParameter, pParameter));
3235
0
    PR_LOG(modlog, 3, (fmt_ulParameterLen, ulParameterLen));
3236
0
    PR_LOG(modlog, 3, (fmt_pData, pData));
3237
0
    PR_LOG(modlog, 3, (fmt_ulDataLen, ulDataLen));
3238
0
    PR_LOG(modlog, 3, (fmt_pSignature, pSignature));
3239
0
    PR_LOG(modlog, 3, (fmt_ulSignatureLen, ulSignatureLen));
3240
0
    nssdbg_start_time(FUNC_C_VERIFYMESSAGENEXT, &start);
3241
0
    rv = module_functions->C_VerifyMessageNext(hSession,
3242
0
                                               pParameter,
3243
0
                                               ulParameterLen,
3244
0
                                               pData,
3245
0
                                               ulDataLen,
3246
0
                                               pSignature,
3247
0
                                               ulSignatureLen);
3248
0
    nssdbg_finish_time(FUNC_C_VERIFYMESSAGENEXT, start);
3249
0
    log_rv(rv);
3250
0
    return rv;
3251
0
}
3252
3253
CK_RV
3254
NSSDBGC_MessageVerifyFinal(CK_SESSION_HANDLE hSession)
3255
0
{
3256
0
    COMMON_DEFINITIONS;
3257
0
    PR_LOG(modlog, 1, ("C_MessageVerifyFinal"));
3258
0
    log_handle(3, fmt_hSession, hSession);
3259
0
    nssdbg_start_time(FUNC_C_MESSAGEVERIFYFINAL, &start);
3260
0
    rv = module_functions->C_MessageVerifyFinal(hSession);
3261
0
    nssdbg_finish_time(FUNC_C_MESSAGEVERIFYFINAL, start);
3262
0
    log_rv(rv);
3263
0
    return rv;
3264
0
}
3265
3266
CK_FUNCTION_LIST_3_0_PTR
3267
nss_InsertDeviceLog(
3268
    CK_FUNCTION_LIST_3_0_PTR devEPV)
3269
0
{
3270
0
    module_functions = devEPV;
3271
0
    debug_functions.version = devEPV->version;
3272
0
    modlog = PR_NewLogModule("nss_mod_log");
3273
0
    debug_functions.C_Initialize = NSSDBGC_Initialize;
3274
0
    debug_functions.C_Finalize = NSSDBGC_Finalize;
3275
0
    debug_functions.C_GetInfo = NSSDBGC_GetInfo;
3276
0
    debug_functions.C_GetFunctionList = NSSDBGC_GetFunctionList;
3277
0
    debug_functions.C_GetSlotList = NSSDBGC_GetSlotList;
3278
0
    debug_functions.C_GetSlotInfo = NSSDBGC_GetSlotInfo;
3279
0
    debug_functions.C_GetTokenInfo = NSSDBGC_GetTokenInfo;
3280
0
    debug_functions.C_GetMechanismList = NSSDBGC_GetMechanismList;
3281
0
    debug_functions.C_GetMechanismInfo = NSSDBGC_GetMechanismInfo;
3282
0
    debug_functions.C_InitToken = NSSDBGC_InitToken;
3283
0
    debug_functions.C_InitPIN = NSSDBGC_InitPIN;
3284
0
    debug_functions.C_SetPIN = NSSDBGC_SetPIN;
3285
0
    debug_functions.C_OpenSession = NSSDBGC_OpenSession;
3286
0
    debug_functions.C_CloseSession = NSSDBGC_CloseSession;
3287
0
    debug_functions.C_CloseAllSessions = NSSDBGC_CloseAllSessions;
3288
0
    debug_functions.C_GetSessionInfo = NSSDBGC_GetSessionInfo;
3289
0
    debug_functions.C_GetOperationState = NSSDBGC_GetOperationState;
3290
0
    debug_functions.C_SetOperationState = NSSDBGC_SetOperationState;
3291
0
    debug_functions.C_Login = NSSDBGC_Login;
3292
0
    debug_functions.C_Logout = NSSDBGC_Logout;
3293
0
    debug_functions.C_CreateObject = NSSDBGC_CreateObject;
3294
0
    debug_functions.C_CopyObject = NSSDBGC_CopyObject;
3295
0
    debug_functions.C_DestroyObject = NSSDBGC_DestroyObject;
3296
0
    debug_functions.C_GetObjectSize = NSSDBGC_GetObjectSize;
3297
0
    debug_functions.C_GetAttributeValue = NSSDBGC_GetAttributeValue;
3298
0
    debug_functions.C_SetAttributeValue = NSSDBGC_SetAttributeValue;
3299
0
    debug_functions.C_FindObjectsInit = NSSDBGC_FindObjectsInit;
3300
0
    debug_functions.C_FindObjects = NSSDBGC_FindObjects;
3301
0
    debug_functions.C_FindObjectsFinal = NSSDBGC_FindObjectsFinal;
3302
0
    debug_functions.C_EncryptInit = NSSDBGC_EncryptInit;
3303
0
    debug_functions.C_Encrypt = NSSDBGC_Encrypt;
3304
0
    debug_functions.C_EncryptUpdate = NSSDBGC_EncryptUpdate;
3305
0
    debug_functions.C_EncryptFinal = NSSDBGC_EncryptFinal;
3306
0
    debug_functions.C_DecryptInit = NSSDBGC_DecryptInit;
3307
0
    debug_functions.C_Decrypt = NSSDBGC_Decrypt;
3308
0
    debug_functions.C_DecryptUpdate = NSSDBGC_DecryptUpdate;
3309
0
    debug_functions.C_DecryptFinal = NSSDBGC_DecryptFinal;
3310
0
    debug_functions.C_DigestInit = NSSDBGC_DigestInit;
3311
0
    debug_functions.C_Digest = NSSDBGC_Digest;
3312
0
    debug_functions.C_DigestUpdate = NSSDBGC_DigestUpdate;
3313
0
    debug_functions.C_DigestKey = NSSDBGC_DigestKey;
3314
0
    debug_functions.C_DigestFinal = NSSDBGC_DigestFinal;
3315
0
    debug_functions.C_SignInit = NSSDBGC_SignInit;
3316
0
    debug_functions.C_Sign = NSSDBGC_Sign;
3317
0
    debug_functions.C_SignUpdate = NSSDBGC_SignUpdate;
3318
0
    debug_functions.C_SignFinal = NSSDBGC_SignFinal;
3319
0
    debug_functions.C_SignRecoverInit = NSSDBGC_SignRecoverInit;
3320
0
    debug_functions.C_SignRecover = NSSDBGC_SignRecover;
3321
0
    debug_functions.C_VerifyInit = NSSDBGC_VerifyInit;
3322
0
    debug_functions.C_Verify = NSSDBGC_Verify;
3323
0
    debug_functions.C_VerifyUpdate = NSSDBGC_VerifyUpdate;
3324
0
    debug_functions.C_VerifyFinal = NSSDBGC_VerifyFinal;
3325
0
    debug_functions.C_VerifyRecoverInit = NSSDBGC_VerifyRecoverInit;
3326
0
    debug_functions.C_VerifyRecover = NSSDBGC_VerifyRecover;
3327
0
    debug_functions.C_DigestEncryptUpdate = NSSDBGC_DigestEncryptUpdate;
3328
0
    debug_functions.C_DecryptDigestUpdate = NSSDBGC_DecryptDigestUpdate;
3329
0
    debug_functions.C_SignEncryptUpdate = NSSDBGC_SignEncryptUpdate;
3330
0
    debug_functions.C_DecryptVerifyUpdate = NSSDBGC_DecryptVerifyUpdate;
3331
0
    debug_functions.C_GenerateKey = NSSDBGC_GenerateKey;
3332
0
    debug_functions.C_GenerateKeyPair = NSSDBGC_GenerateKeyPair;
3333
0
    debug_functions.C_WrapKey = NSSDBGC_WrapKey;
3334
0
    debug_functions.C_UnwrapKey = NSSDBGC_UnwrapKey;
3335
0
    debug_functions.C_DeriveKey = NSSDBGC_DeriveKey;
3336
0
    debug_functions.C_SeedRandom = NSSDBGC_SeedRandom;
3337
0
    debug_functions.C_GenerateRandom = NSSDBGC_GenerateRandom;
3338
0
    debug_functions.C_GetFunctionStatus = NSSDBGC_GetFunctionStatus;
3339
0
    debug_functions.C_CancelFunction = NSSDBGC_CancelFunction;
3340
0
    debug_functions.C_WaitForSlotEvent = NSSDBGC_WaitForSlotEvent;
3341
0
    debug_functions.C_GetInterfaceList = NSSDBGC_GetInterfaceList;
3342
0
    debug_functions.C_GetInterface = NSSDBGC_GetInterface;
3343
0
    debug_functions.C_LoginUser = NSSDBGC_LoginUser;
3344
0
    debug_functions.C_SessionCancel = NSSDBGC_SessionCancel;
3345
0
    debug_functions.C_MessageEncryptInit = NSSDBGC_MessageEncryptInit;
3346
0
    debug_functions.C_EncryptMessage = NSSDBGC_EncryptMessage;
3347
0
    debug_functions.C_EncryptMessageBegin = NSSDBGC_EncryptMessageBegin;
3348
0
    debug_functions.C_EncryptMessageNext = NSSDBGC_EncryptMessageNext;
3349
0
    debug_functions.C_MessageEncryptFinal = NSSDBGC_MessageEncryptFinal;
3350
0
    debug_functions.C_MessageDecryptInit = NSSDBGC_MessageDecryptInit;
3351
0
    debug_functions.C_DecryptMessage = NSSDBGC_DecryptMessage;
3352
0
    debug_functions.C_DecryptMessageBegin = NSSDBGC_DecryptMessageBegin;
3353
0
    debug_functions.C_DecryptMessageNext = NSSDBGC_DecryptMessageNext;
3354
0
    debug_functions.C_MessageDecryptFinal = NSSDBGC_MessageDecryptFinal;
3355
0
    debug_functions.C_MessageSignInit = NSSDBGC_MessageSignInit;
3356
0
    debug_functions.C_SignMessage = NSSDBGC_SignMessage;
3357
0
    debug_functions.C_SignMessageBegin = NSSDBGC_SignMessageBegin;
3358
0
    debug_functions.C_SignMessageNext = NSSDBGC_SignMessageNext;
3359
0
    debug_functions.C_MessageSignFinal = NSSDBGC_MessageSignFinal;
3360
0
    debug_functions.C_MessageVerifyInit = NSSDBGC_MessageVerifyInit;
3361
0
    debug_functions.C_VerifyMessage = NSSDBGC_VerifyMessage;
3362
0
    debug_functions.C_VerifyMessageBegin = NSSDBGC_VerifyMessageBegin;
3363
0
    debug_functions.C_VerifyMessageNext = NSSDBGC_VerifyMessageNext;
3364
0
    debug_functions.C_MessageVerifyFinal = NSSDBGC_MessageVerifyFinal;
3365
0
    return &debug_functions;
3366
0
}
3367
3368
/*
3369
 * scale the time factor up accordingly.
3370
 * This routine tries to keep at least 2 significant figures on output.
3371
 *    If the time is 0, then indicate that with a 'z' for units.
3372
 *    If the time is greater than 10 minutes, output the time in minutes.
3373
 *    If the time is less than 10 minutes but greater than 10 seconds output
3374
 * the time in second.
3375
 *    If the time is less than 10 seconds but greater than 10 milliseconds
3376
 * output * the time in millisecond.
3377
 *    If the time is less than 10 milliseconds but greater than 0 ticks output
3378
 * the time in microsecond.
3379
 *
3380
 */
3381
static PRUint32
3382
getPrintTime(PRIntervalTime time, char **type)
3383
0
{
3384
0
    PRUint32 prTime;
3385
3386
    /* detect a programming error by outputting 'bu' to the output stream
3387
     * rather than crashing */
3388
0
    *type = "bug";
3389
0
    if (time == 0) {
3390
0
        *type = "z";
3391
0
        return 0;
3392
0
    }
3393
3394
0
    prTime = PR_IntervalToSeconds(time);
3395
3396
0
    if (prTime >= 600) {
3397
0
        *type = "m";
3398
0
        return prTime / 60;
3399
0
    }
3400
0
    if (prTime >= 10) {
3401
0
        *type = "s";
3402
0
        return prTime;
3403
0
    }
3404
0
    prTime = PR_IntervalToMilliseconds(time);
3405
0
    if (prTime >= 10) {
3406
0
        *type = "ms";
3407
0
        return prTime;
3408
0
    }
3409
0
    *type = "us";
3410
0
    return PR_IntervalToMicroseconds(time);
3411
0
}
3412
3413
static void
3414
print_final_statistics(void)
3415
0
{
3416
0
    int total_calls = 0;
3417
0
    PRIntervalTime total_time = 0;
3418
0
    PRUint32 pr_total_time;
3419
0
    char *type;
3420
0
    char *fname;
3421
0
    FILE *outfile = NULL;
3422
0
    int i;
3423
3424
0
    fname = PR_GetEnvSecure("NSS_OUTPUT_FILE");
3425
0
    if (fname) {
3426
        /* need to add an optional process id to the filename */
3427
0
        outfile = fopen(fname, "w+");
3428
0
    }
3429
0
    if (!outfile) {
3430
0
        outfile = stdout;
3431
0
    }
3432
3433
0
    fprintf(outfile, "%-25s %10s %12s %12s %10s\n", "Function", "# Calls",
3434
0
            "Time", "Avg.", "% Time");
3435
0
    fprintf(outfile, "\n");
3436
0
    for (i = 0; i < nssdbg_prof_size; i++) {
3437
0
        total_calls += nssdbg_prof_data[i].calls;
3438
0
        total_time += nssdbg_prof_data[i].time;
3439
0
    }
3440
0
    for (i = 0; i < nssdbg_prof_size; i++) {
3441
0
        PRIntervalTime time = nssdbg_prof_data[i].time;
3442
0
        PRUint32 usTime = PR_IntervalToMicroseconds(time);
3443
0
        PRUint32 prTime = 0;
3444
0
        PRUint32 calls = nssdbg_prof_data[i].calls;
3445
        /* don't print out functions that weren't even called */
3446
0
        if (calls == 0) {
3447
0
            continue;
3448
0
        }
3449
3450
0
        prTime = getPrintTime(time, &type);
3451
3452
0
        fprintf(outfile, "%-25s %10d %10d%2s ", nssdbg_prof_data[i].function,
3453
0
                calls, prTime, type);
3454
        /* for now always output the average in microseconds */
3455
0
        fprintf(outfile, "%10.2f%2s", (float)usTime / (float)calls, "us");
3456
0
        fprintf(outfile, "%10.2f%%", ((float)time / (float)total_time) * 100);
3457
0
        fprintf(outfile, "\n");
3458
0
    }
3459
0
    fprintf(outfile, "\n");
3460
3461
0
    pr_total_time = getPrintTime(total_time, &type);
3462
3463
0
    fprintf(outfile, "%25s %10d %10d%2s\n", "Totals", total_calls,
3464
0
            pr_total_time, type);
3465
0
    fprintf(outfile, "\n\nMaximum number of concurrent open sessions: %d\n\n",
3466
0
            maxOpenSessions);
3467
0
    fflush(outfile);
3468
0
    if (outfile != stdout) {
3469
0
        fclose(outfile);
3470
0
    }
3471
0
}