Coverage Report

Created: 2026-05-30 06:53

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/p11-kit/p11-kit/virtual-base-generated.h
Line
Count
Source
1
2
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
3
4
static CK_RV
5
base_C_Initialize (CK_X_FUNCTION_LIST *self,
6
                   CK_VOID_PTR init_args)
7
142
{
8
142
        p11_virtual *virt = (p11_virtual *)self;
9
142
        CK_FUNCTION_LIST *funcs = virt->lower_module;
10
142
        return funcs->C_Initialize (init_args);
11
142
}
12
    
13
static CK_RV
14
base_C_Finalize (CK_X_FUNCTION_LIST *self,
15
                 CK_VOID_PTR pReserved)
16
0
{
17
0
        p11_virtual *virt = (p11_virtual *)self;
18
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
19
0
        return funcs->C_Finalize (pReserved);
20
0
}
21
    
22
static CK_RV
23
base_C_GetInfo (CK_X_FUNCTION_LIST *self,
24
                CK_INFO_PTR pInfo)
25
0
{
26
0
        p11_virtual *virt = (p11_virtual *)self;
27
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
28
0
        return funcs->C_GetInfo (pInfo);
29
0
}
30
    
31
static CK_RV
32
base_C_GetSlotList (CK_X_FUNCTION_LIST *self,
33
                    unsigned char token_present,
34
                    CK_SLOT_ID_PTR slot_list,
35
                    long unsigned int * ulCount)
36
0
{
37
0
        p11_virtual *virt = (p11_virtual *)self;
38
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
39
0
        return funcs->C_GetSlotList (token_present,
40
0
                                     slot_list,
41
0
                                     ulCount);
42
0
}
43
    
44
static CK_RV
45
base_C_GetSlotInfo (CK_X_FUNCTION_LIST *self,
46
                    CK_SLOT_ID slotID,
47
                    CK_SLOT_INFO_PTR pInfo)
48
0
{
49
0
        p11_virtual *virt = (p11_virtual *)self;
50
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
51
0
        return funcs->C_GetSlotInfo (slotID,
52
0
                                     pInfo);
53
0
}
54
    
55
static CK_RV
56
base_C_GetTokenInfo (CK_X_FUNCTION_LIST *self,
57
                     CK_SLOT_ID slotID,
58
                     CK_TOKEN_INFO_PTR pInfo)
59
0
{
60
0
        p11_virtual *virt = (p11_virtual *)self;
61
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
62
0
        return funcs->C_GetTokenInfo (slotID,
63
0
                                      pInfo);
64
0
}
65
    
66
static CK_RV
67
base_C_GetMechanismList (CK_X_FUNCTION_LIST *self,
68
                         CK_SLOT_ID slotID,
69
                         CK_MECHANISM_TYPE_PTR mechanism_list,
70
                         long unsigned int * ulCount)
71
0
{
72
0
        p11_virtual *virt = (p11_virtual *)self;
73
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
74
0
        return funcs->C_GetMechanismList (slotID,
75
0
                                          mechanism_list,
76
0
                                          ulCount);
77
0
}
78
    
79
static CK_RV
80
base_C_GetMechanismInfo (CK_X_FUNCTION_LIST *self,
81
                         CK_SLOT_ID slotID,
82
                         CK_MECHANISM_TYPE type,
83
                         CK_MECHANISM_INFO_PTR pInfo)
84
0
{
85
0
        p11_virtual *virt = (p11_virtual *)self;
86
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
87
0
        return funcs->C_GetMechanismInfo (slotID,
88
0
                                          type,
89
0
                                          pInfo);
90
0
}
91
    
92
static CK_RV
93
base_C_InitToken (CK_X_FUNCTION_LIST *self,
94
                  CK_SLOT_ID slotID,
95
                  unsigned char * pin,
96
                  long unsigned int pin_len,
97
                  unsigned char * label)
98
0
{
99
0
        p11_virtual *virt = (p11_virtual *)self;
100
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
101
0
        return funcs->C_InitToken (slotID,
102
0
                                   pin,
103
0
                                   pin_len,
104
0
                                   label);
105
0
}
106
    
107
static CK_RV
108
base_C_InitPIN (CK_X_FUNCTION_LIST *self,
109
                CK_SESSION_HANDLE session,
110
                unsigned char * pin,
111
                long unsigned int pin_len)
112
0
{
113
0
        p11_virtual *virt = (p11_virtual *)self;
114
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
115
0
        return funcs->C_InitPIN (session,
116
0
                                 pin,
117
0
                                 pin_len);
118
0
}
119
    
120
static CK_RV
121
base_C_SetPIN (CK_X_FUNCTION_LIST *self,
122
               CK_SESSION_HANDLE session,
123
               unsigned char * old_pin,
124
               long unsigned int old_len,
125
               unsigned char * new_pin,
126
               long unsigned int new_len)
127
0
{
128
0
        p11_virtual *virt = (p11_virtual *)self;
129
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
130
0
        return funcs->C_SetPIN (session,
131
0
                                old_pin,
132
0
                                old_len,
133
0
                                new_pin,
134
0
                                new_len);
135
0
}
136
    
137
static CK_RV
138
base_C_OpenSession (CK_X_FUNCTION_LIST *self,
139
                    CK_SLOT_ID slotID,
140
                    CK_FLAGS flags,
141
                    CK_VOID_PTR application,
142
                    CK_NOTIFY notify,
143
                    CK_SESSION_HANDLE_PTR session)
144
0
{
145
0
        p11_virtual *virt = (p11_virtual *)self;
146
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
147
0
        return funcs->C_OpenSession (slotID,
148
0
                                     flags,
149
0
                                     application,
150
0
                                     notify,
151
0
                                     session);
152
0
}
153
    
154
static CK_RV
155
base_C_CloseSession (CK_X_FUNCTION_LIST *self,
156
                     CK_SESSION_HANDLE session)
157
0
{
158
0
        p11_virtual *virt = (p11_virtual *)self;
159
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
160
0
        return funcs->C_CloseSession (session);
161
0
}
162
    
163
static CK_RV
164
base_C_CloseAllSessions (CK_X_FUNCTION_LIST *self,
165
                         CK_SLOT_ID slotID)
166
0
{
167
0
        p11_virtual *virt = (p11_virtual *)self;
168
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
169
0
        return funcs->C_CloseAllSessions (slotID);
170
0
}
171
    
172
static CK_RV
173
base_C_GetSessionInfo (CK_X_FUNCTION_LIST *self,
174
                       CK_SESSION_HANDLE session,
175
                       CK_SESSION_INFO_PTR pInfo)
176
0
{
177
0
        p11_virtual *virt = (p11_virtual *)self;
178
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
179
0
        return funcs->C_GetSessionInfo (session,
180
0
                                        pInfo);
181
0
}
182
    
183
static CK_RV
184
base_C_GetOperationState (CK_X_FUNCTION_LIST *self,
185
                          CK_SESSION_HANDLE session,
186
                          unsigned char * operation_state,
187
                          long unsigned int * operation_state_len)
188
0
{
189
0
        p11_virtual *virt = (p11_virtual *)self;
190
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
191
0
        return funcs->C_GetOperationState (session,
192
0
                                           operation_state,
193
0
                                           operation_state_len);
194
0
}
195
    
196
static CK_RV
197
base_C_SetOperationState (CK_X_FUNCTION_LIST *self,
198
                          CK_SESSION_HANDLE session,
199
                          unsigned char * operation_state,
200
                          long unsigned int operation_state_len,
201
                          CK_OBJECT_HANDLE encryption_key,
202
                          CK_OBJECT_HANDLE authentication_key)
203
0
{
204
0
        p11_virtual *virt = (p11_virtual *)self;
205
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
206
0
        return funcs->C_SetOperationState (session,
207
0
                                           operation_state,
208
0
                                           operation_state_len,
209
0
                                           encryption_key,
210
0
                                           authentication_key);
211
0
}
212
    
213
static CK_RV
214
base_C_Login (CK_X_FUNCTION_LIST *self,
215
              CK_SESSION_HANDLE session,
216
              CK_USER_TYPE user_type,
217
              unsigned char * pin,
218
              long unsigned int pin_len)
219
0
{
220
0
        p11_virtual *virt = (p11_virtual *)self;
221
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
222
0
        return funcs->C_Login (session,
223
0
                               user_type,
224
0
                               pin,
225
0
                               pin_len);
226
0
}
227
    
228
static CK_RV
229
base_C_Logout (CK_X_FUNCTION_LIST *self,
230
               CK_SESSION_HANDLE session)
231
0
{
232
0
        p11_virtual *virt = (p11_virtual *)self;
233
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
234
0
        return funcs->C_Logout (session);
235
0
}
236
    
237
static CK_RV
238
base_C_CreateObject (CK_X_FUNCTION_LIST *self,
239
                     CK_SESSION_HANDLE session,
240
                     CK_ATTRIBUTE_PTR pTemplate,
241
                     long unsigned int ulCount,
242
                     CK_OBJECT_HANDLE_PTR object)
243
2
{
244
2
        p11_virtual *virt = (p11_virtual *)self;
245
2
        CK_FUNCTION_LIST *funcs = virt->lower_module;
246
2
        return funcs->C_CreateObject (session,
247
2
                                      pTemplate,
248
2
                                      ulCount,
249
2
                                      object);
250
2
}
251
    
252
static CK_RV
253
base_C_CopyObject (CK_X_FUNCTION_LIST *self,
254
                   CK_SESSION_HANDLE session,
255
                   CK_OBJECT_HANDLE object,
256
                   CK_ATTRIBUTE_PTR pTemplate,
257
                   long unsigned int ulCount,
258
                   CK_OBJECT_HANDLE_PTR new_object)
259
0
{
260
0
        p11_virtual *virt = (p11_virtual *)self;
261
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
262
0
        return funcs->C_CopyObject (session,
263
0
                                    object,
264
0
                                    pTemplate,
265
0
                                    ulCount,
266
0
                                    new_object);
267
0
}
268
    
269
static CK_RV
270
base_C_DestroyObject (CK_X_FUNCTION_LIST *self,
271
                      CK_SESSION_HANDLE session,
272
                      CK_OBJECT_HANDLE object)
273
0
{
274
0
        p11_virtual *virt = (p11_virtual *)self;
275
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
276
0
        return funcs->C_DestroyObject (session,
277
0
                                       object);
278
0
}
279
    
280
static CK_RV
281
base_C_GetObjectSize (CK_X_FUNCTION_LIST *self,
282
                      CK_SESSION_HANDLE session,
283
                      CK_OBJECT_HANDLE object,
284
                      long unsigned int * size)
285
0
{
286
0
        p11_virtual *virt = (p11_virtual *)self;
287
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
288
0
        return funcs->C_GetObjectSize (session,
289
0
                                       object,
290
0
                                       size);
291
0
}
292
    
293
static CK_RV
294
base_C_GetAttributeValue (CK_X_FUNCTION_LIST *self,
295
                          CK_SESSION_HANDLE session,
296
                          CK_OBJECT_HANDLE object,
297
                          CK_ATTRIBUTE_PTR pTemplate,
298
                          long unsigned int ulCount)
299
1
{
300
1
        p11_virtual *virt = (p11_virtual *)self;
301
1
        CK_FUNCTION_LIST *funcs = virt->lower_module;
302
1
        return funcs->C_GetAttributeValue (session,
303
1
                                           object,
304
1
                                           pTemplate,
305
1
                                           ulCount);
306
1
}
307
    
308
static CK_RV
309
base_C_SetAttributeValue (CK_X_FUNCTION_LIST *self,
310
                          CK_SESSION_HANDLE session,
311
                          CK_OBJECT_HANDLE object,
312
                          CK_ATTRIBUTE_PTR pTemplate,
313
                          long unsigned int ulCount)
314
0
{
315
0
        p11_virtual *virt = (p11_virtual *)self;
316
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
317
0
        return funcs->C_SetAttributeValue (session,
318
0
                                           object,
319
0
                                           pTemplate,
320
0
                                           ulCount);
321
0
}
322
    
323
static CK_RV
324
base_C_FindObjectsInit (CK_X_FUNCTION_LIST *self,
325
                        CK_SESSION_HANDLE session,
326
                        CK_ATTRIBUTE_PTR pTemplate,
327
                        long unsigned int ulCount)
328
0
{
329
0
        p11_virtual *virt = (p11_virtual *)self;
330
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
331
0
        return funcs->C_FindObjectsInit (session,
332
0
                                         pTemplate,
333
0
                                         ulCount);
334
0
}
335
    
336
static CK_RV
337
base_C_FindObjects (CK_X_FUNCTION_LIST *self,
338
                    CK_SESSION_HANDLE session,
339
                    CK_OBJECT_HANDLE_PTR object,
340
                    long unsigned int max_object_count,
341
                    long unsigned int * object_count)
342
0
{
343
0
        p11_virtual *virt = (p11_virtual *)self;
344
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
345
0
        return funcs->C_FindObjects (session,
346
0
                                     object,
347
0
                                     max_object_count,
348
0
                                     object_count);
349
0
}
350
    
351
static CK_RV
352
base_C_FindObjectsFinal (CK_X_FUNCTION_LIST *self,
353
                         CK_SESSION_HANDLE session)
354
0
{
355
0
        p11_virtual *virt = (p11_virtual *)self;
356
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
357
0
        return funcs->C_FindObjectsFinal (session);
358
0
}
359
    
360
static CK_RV
361
base_C_EncryptInit (CK_X_FUNCTION_LIST *self,
362
                    CK_SESSION_HANDLE session,
363
                    CK_MECHANISM_PTR mechanism,
364
                    CK_OBJECT_HANDLE hKey)
365
0
{
366
0
        p11_virtual *virt = (p11_virtual *)self;
367
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
368
0
        return funcs->C_EncryptInit (session,
369
0
                                     mechanism,
370
0
                                     hKey);
371
0
}
372
    
373
static CK_RV
374
base_C_Encrypt (CK_X_FUNCTION_LIST *self,
375
                CK_SESSION_HANDLE session,
376
                unsigned char * data,
377
                long unsigned int ulDataLen,
378
                unsigned char * encrypted_data,
379
                long unsigned int * encrypted_data_len)
380
0
{
381
0
        p11_virtual *virt = (p11_virtual *)self;
382
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
383
0
        return funcs->C_Encrypt (session,
384
0
                                 data,
385
0
                                 ulDataLen,
386
0
                                 encrypted_data,
387
0
                                 encrypted_data_len);
388
0
}
389
    
390
static CK_RV
391
base_C_EncryptUpdate (CK_X_FUNCTION_LIST *self,
392
                      CK_SESSION_HANDLE session,
393
                      unsigned char * part,
394
                      long unsigned int part_len,
395
                      unsigned char * encrypted_part,
396
                      long unsigned int * encrypted_part_len)
397
0
{
398
0
        p11_virtual *virt = (p11_virtual *)self;
399
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
400
0
        return funcs->C_EncryptUpdate (session,
401
0
                                       part,
402
0
                                       part_len,
403
0
                                       encrypted_part,
404
0
                                       encrypted_part_len);
405
0
}
406
    
407
static CK_RV
408
base_C_EncryptFinal (CK_X_FUNCTION_LIST *self,
409
                     CK_SESSION_HANDLE session,
410
                     unsigned char * last_encrypted_part,
411
                     long unsigned int * last_encrypted_part_len)
412
0
{
413
0
        p11_virtual *virt = (p11_virtual *)self;
414
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
415
0
        return funcs->C_EncryptFinal (session,
416
0
                                      last_encrypted_part,
417
0
                                      last_encrypted_part_len);
418
0
}
419
    
420
static CK_RV
421
base_C_DecryptInit (CK_X_FUNCTION_LIST *self,
422
                    CK_SESSION_HANDLE session,
423
                    CK_MECHANISM_PTR mechanism,
424
                    CK_OBJECT_HANDLE hKey)
425
2
{
426
2
        p11_virtual *virt = (p11_virtual *)self;
427
2
        CK_FUNCTION_LIST *funcs = virt->lower_module;
428
2
        return funcs->C_DecryptInit (session,
429
2
                                     mechanism,
430
2
                                     hKey);
431
2
}
432
    
433
static CK_RV
434
base_C_Decrypt (CK_X_FUNCTION_LIST *self,
435
                CK_SESSION_HANDLE session,
436
                unsigned char * encrypted_data,
437
                long unsigned int encrypted_data_len,
438
                unsigned char * data,
439
                long unsigned int * ulDataLen)
440
0
{
441
0
        p11_virtual *virt = (p11_virtual *)self;
442
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
443
0
        return funcs->C_Decrypt (session,
444
0
                                 encrypted_data,
445
0
                                 encrypted_data_len,
446
0
                                 data,
447
0
                                 ulDataLen);
448
0
}
449
    
450
static CK_RV
451
base_C_DecryptUpdate (CK_X_FUNCTION_LIST *self,
452
                      CK_SESSION_HANDLE session,
453
                      unsigned char * encrypted_part,
454
                      long unsigned int encrypted_part_len,
455
                      unsigned char * part,
456
                      long unsigned int * part_len)
457
0
{
458
0
        p11_virtual *virt = (p11_virtual *)self;
459
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
460
0
        return funcs->C_DecryptUpdate (session,
461
0
                                       encrypted_part,
462
0
                                       encrypted_part_len,
463
0
                                       part,
464
0
                                       part_len);
465
0
}
466
    
467
static CK_RV
468
base_C_DecryptFinal (CK_X_FUNCTION_LIST *self,
469
                     CK_SESSION_HANDLE session,
470
                     unsigned char * last_part,
471
                     long unsigned int * last_part_len)
472
0
{
473
0
        p11_virtual *virt = (p11_virtual *)self;
474
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
475
0
        return funcs->C_DecryptFinal (session,
476
0
                                      last_part,
477
0
                                      last_part_len);
478
0
}
479
    
480
static CK_RV
481
base_C_DigestInit (CK_X_FUNCTION_LIST *self,
482
                   CK_SESSION_HANDLE session,
483
                   CK_MECHANISM_PTR mechanism)
484
35
{
485
35
        p11_virtual *virt = (p11_virtual *)self;
486
35
        CK_FUNCTION_LIST *funcs = virt->lower_module;
487
35
        return funcs->C_DigestInit (session,
488
35
                                    mechanism);
489
35
}
490
    
491
static CK_RV
492
base_C_Digest (CK_X_FUNCTION_LIST *self,
493
               CK_SESSION_HANDLE session,
494
               unsigned char * data,
495
               long unsigned int ulDataLen,
496
               unsigned char * digest,
497
               long unsigned int * digest_len)
498
0
{
499
0
        p11_virtual *virt = (p11_virtual *)self;
500
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
501
0
        return funcs->C_Digest (session,
502
0
                                data,
503
0
                                ulDataLen,
504
0
                                digest,
505
0
                                digest_len);
506
0
}
507
    
508
static CK_RV
509
base_C_DigestUpdate (CK_X_FUNCTION_LIST *self,
510
                     CK_SESSION_HANDLE session,
511
                     unsigned char * part,
512
                     long unsigned int part_len)
513
0
{
514
0
        p11_virtual *virt = (p11_virtual *)self;
515
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
516
0
        return funcs->C_DigestUpdate (session,
517
0
                                      part,
518
0
                                      part_len);
519
0
}
520
    
521
static CK_RV
522
base_C_DigestKey (CK_X_FUNCTION_LIST *self,
523
                  CK_SESSION_HANDLE session,
524
                  CK_OBJECT_HANDLE hKey)
525
0
{
526
0
        p11_virtual *virt = (p11_virtual *)self;
527
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
528
0
        return funcs->C_DigestKey (session,
529
0
                                   hKey);
530
0
}
531
    
532
static CK_RV
533
base_C_DigestFinal (CK_X_FUNCTION_LIST *self,
534
                    CK_SESSION_HANDLE session,
535
                    unsigned char * digest,
536
                    long unsigned int * digest_len)
537
0
{
538
0
        p11_virtual *virt = (p11_virtual *)self;
539
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
540
0
        return funcs->C_DigestFinal (session,
541
0
                                     digest,
542
0
                                     digest_len);
543
0
}
544
    
545
static CK_RV
546
base_C_SignInit (CK_X_FUNCTION_LIST *self,
547
                 CK_SESSION_HANDLE session,
548
                 CK_MECHANISM_PTR mechanism,
549
                 CK_OBJECT_HANDLE hKey)
550
0
{
551
0
        p11_virtual *virt = (p11_virtual *)self;
552
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
553
0
        return funcs->C_SignInit (session,
554
0
                                  mechanism,
555
0
                                  hKey);
556
0
}
557
    
558
static CK_RV
559
base_C_Sign (CK_X_FUNCTION_LIST *self,
560
             CK_SESSION_HANDLE session,
561
             unsigned char * data,
562
             long unsigned int ulDataLen,
563
             unsigned char * signature,
564
             long unsigned int * signature_len)
565
0
{
566
0
        p11_virtual *virt = (p11_virtual *)self;
567
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
568
0
        return funcs->C_Sign (session,
569
0
                              data,
570
0
                              ulDataLen,
571
0
                              signature,
572
0
                              signature_len);
573
0
}
574
    
575
static CK_RV
576
base_C_SignUpdate (CK_X_FUNCTION_LIST *self,
577
                   CK_SESSION_HANDLE session,
578
                   unsigned char * part,
579
                   long unsigned int part_len)
580
0
{
581
0
        p11_virtual *virt = (p11_virtual *)self;
582
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
583
0
        return funcs->C_SignUpdate (session,
584
0
                                    part,
585
0
                                    part_len);
586
0
}
587
    
588
static CK_RV
589
base_C_SignFinal (CK_X_FUNCTION_LIST *self,
590
                  CK_SESSION_HANDLE session,
591
                  unsigned char * signature,
592
                  long unsigned int * signature_len)
593
0
{
594
0
        p11_virtual *virt = (p11_virtual *)self;
595
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
596
0
        return funcs->C_SignFinal (session,
597
0
                                   signature,
598
0
                                   signature_len);
599
0
}
600
    
601
static CK_RV
602
base_C_SignRecoverInit (CK_X_FUNCTION_LIST *self,
603
                        CK_SESSION_HANDLE session,
604
                        CK_MECHANISM_PTR mechanism,
605
                        CK_OBJECT_HANDLE hKey)
606
0
{
607
0
        p11_virtual *virt = (p11_virtual *)self;
608
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
609
0
        return funcs->C_SignRecoverInit (session,
610
0
                                         mechanism,
611
0
                                         hKey);
612
0
}
613
    
614
static CK_RV
615
base_C_SignRecover (CK_X_FUNCTION_LIST *self,
616
                    CK_SESSION_HANDLE session,
617
                    unsigned char * data,
618
                    long unsigned int ulDataLen,
619
                    unsigned char * signature,
620
                    long unsigned int * signature_len)
621
0
{
622
0
        p11_virtual *virt = (p11_virtual *)self;
623
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
624
0
        return funcs->C_SignRecover (session,
625
0
                                     data,
626
0
                                     ulDataLen,
627
0
                                     signature,
628
0
                                     signature_len);
629
0
}
630
    
631
static CK_RV
632
base_C_VerifyInit (CK_X_FUNCTION_LIST *self,
633
                   CK_SESSION_HANDLE session,
634
                   CK_MECHANISM_PTR mechanism,
635
                   CK_OBJECT_HANDLE hKey)
636
1
{
637
1
        p11_virtual *virt = (p11_virtual *)self;
638
1
        CK_FUNCTION_LIST *funcs = virt->lower_module;
639
1
        return funcs->C_VerifyInit (session,
640
1
                                    mechanism,
641
1
                                    hKey);
642
1
}
643
    
644
static CK_RV
645
base_C_Verify (CK_X_FUNCTION_LIST *self,
646
               CK_SESSION_HANDLE session,
647
               unsigned char * data,
648
               long unsigned int ulDataLen,
649
               unsigned char * signature,
650
               long unsigned int signature_len)
651
0
{
652
0
        p11_virtual *virt = (p11_virtual *)self;
653
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
654
0
        return funcs->C_Verify (session,
655
0
                                data,
656
0
                                ulDataLen,
657
0
                                signature,
658
0
                                signature_len);
659
0
}
660
    
661
static CK_RV
662
base_C_VerifyUpdate (CK_X_FUNCTION_LIST *self,
663
                     CK_SESSION_HANDLE session,
664
                     unsigned char * part,
665
                     long unsigned int part_len)
666
0
{
667
0
        p11_virtual *virt = (p11_virtual *)self;
668
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
669
0
        return funcs->C_VerifyUpdate (session,
670
0
                                      part,
671
0
                                      part_len);
672
0
}
673
    
674
static CK_RV
675
base_C_VerifyFinal (CK_X_FUNCTION_LIST *self,
676
                    CK_SESSION_HANDLE session,
677
                    unsigned char * signature,
678
                    long unsigned int signature_len)
679
0
{
680
0
        p11_virtual *virt = (p11_virtual *)self;
681
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
682
0
        return funcs->C_VerifyFinal (session,
683
0
                                     signature,
684
0
                                     signature_len);
685
0
}
686
    
687
static CK_RV
688
base_C_VerifyRecoverInit (CK_X_FUNCTION_LIST *self,
689
                          CK_SESSION_HANDLE session,
690
                          CK_MECHANISM_PTR mechanism,
691
                          CK_OBJECT_HANDLE hKey)
692
1
{
693
1
        p11_virtual *virt = (p11_virtual *)self;
694
1
        CK_FUNCTION_LIST *funcs = virt->lower_module;
695
1
        return funcs->C_VerifyRecoverInit (session,
696
1
                                           mechanism,
697
1
                                           hKey);
698
1
}
699
    
700
static CK_RV
701
base_C_VerifyRecover (CK_X_FUNCTION_LIST *self,
702
                      CK_SESSION_HANDLE session,
703
                      unsigned char * signature,
704
                      long unsigned int signature_len,
705
                      unsigned char * data,
706
                      long unsigned int * ulDataLen)
707
0
{
708
0
        p11_virtual *virt = (p11_virtual *)self;
709
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
710
0
        return funcs->C_VerifyRecover (session,
711
0
                                       signature,
712
0
                                       signature_len,
713
0
                                       data,
714
0
                                       ulDataLen);
715
0
}
716
    
717
static CK_RV
718
base_C_DigestEncryptUpdate (CK_X_FUNCTION_LIST *self,
719
                            CK_SESSION_HANDLE session,
720
                            unsigned char * part,
721
                            long unsigned int part_len,
722
                            unsigned char * encrypted_part,
723
                            long unsigned int * encrypted_part_len)
724
0
{
725
0
        p11_virtual *virt = (p11_virtual *)self;
726
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
727
0
        return funcs->C_DigestEncryptUpdate (session,
728
0
                                             part,
729
0
                                             part_len,
730
0
                                             encrypted_part,
731
0
                                             encrypted_part_len);
732
0
}
733
    
734
static CK_RV
735
base_C_DecryptDigestUpdate (CK_X_FUNCTION_LIST *self,
736
                            CK_SESSION_HANDLE session,
737
                            unsigned char * encrypted_part,
738
                            long unsigned int encrypted_part_len,
739
                            unsigned char * part,
740
                            long unsigned int * part_len)
741
0
{
742
0
        p11_virtual *virt = (p11_virtual *)self;
743
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
744
0
        return funcs->C_DecryptDigestUpdate (session,
745
0
                                             encrypted_part,
746
0
                                             encrypted_part_len,
747
0
                                             part,
748
0
                                             part_len);
749
0
}
750
    
751
static CK_RV
752
base_C_SignEncryptUpdate (CK_X_FUNCTION_LIST *self,
753
                          CK_SESSION_HANDLE session,
754
                          unsigned char * part,
755
                          long unsigned int part_len,
756
                          unsigned char * encrypted_part,
757
                          long unsigned int * encrypted_part_len)
758
0
{
759
0
        p11_virtual *virt = (p11_virtual *)self;
760
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
761
0
        return funcs->C_SignEncryptUpdate (session,
762
0
                                           part,
763
0
                                           part_len,
764
0
                                           encrypted_part,
765
0
                                           encrypted_part_len);
766
0
}
767
    
768
static CK_RV
769
base_C_DecryptVerifyUpdate (CK_X_FUNCTION_LIST *self,
770
                            CK_SESSION_HANDLE session,
771
                            unsigned char * encrypted_part,
772
                            long unsigned int encrypted_part_len,
773
                            unsigned char * part,
774
                            long unsigned int * part_len)
775
0
{
776
0
        p11_virtual *virt = (p11_virtual *)self;
777
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
778
0
        return funcs->C_DecryptVerifyUpdate (session,
779
0
                                             encrypted_part,
780
0
                                             encrypted_part_len,
781
0
                                             part,
782
0
                                             part_len);
783
0
}
784
    
785
static CK_RV
786
base_C_GenerateKey (CK_X_FUNCTION_LIST *self,
787
                    CK_SESSION_HANDLE session,
788
                    CK_MECHANISM_PTR mechanism,
789
                    CK_ATTRIBUTE_PTR pTemplate,
790
                    long unsigned int ulCount,
791
                    CK_OBJECT_HANDLE_PTR hKey)
792
0
{
793
0
        p11_virtual *virt = (p11_virtual *)self;
794
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
795
0
        return funcs->C_GenerateKey (session,
796
0
                                     mechanism,
797
0
                                     pTemplate,
798
0
                                     ulCount,
799
0
                                     hKey);
800
0
}
801
    
802
static CK_RV
803
base_C_GenerateKeyPair (CK_X_FUNCTION_LIST *self,
804
                        CK_SESSION_HANDLE session,
805
                        CK_MECHANISM_PTR mechanism,
806
                        CK_ATTRIBUTE_PTR public_key_template,
807
                        long unsigned int public_key_attribute_count,
808
                        CK_ATTRIBUTE_PTR private_key_template,
809
                        long unsigned int private_key_attribute_count,
810
                        CK_OBJECT_HANDLE_PTR publicKey,
811
                        CK_OBJECT_HANDLE_PTR private_key)
812
2
{
813
2
        p11_virtual *virt = (p11_virtual *)self;
814
2
        CK_FUNCTION_LIST *funcs = virt->lower_module;
815
2
        return funcs->C_GenerateKeyPair (session,
816
2
                                         mechanism,
817
2
                                         public_key_template,
818
2
                                         public_key_attribute_count,
819
2
                                         private_key_template,
820
2
                                         private_key_attribute_count,
821
2
                                         publicKey,
822
2
                                         private_key);
823
2
}
824
    
825
static CK_RV
826
base_C_WrapKey (CK_X_FUNCTION_LIST *self,
827
                CK_SESSION_HANDLE session,
828
                CK_MECHANISM_PTR mechanism,
829
                CK_OBJECT_HANDLE wrapping_key,
830
                CK_OBJECT_HANDLE hKey,
831
                unsigned char * wrapped_key,
832
                long unsigned int * wrapped_key_len)
833
0
{
834
0
        p11_virtual *virt = (p11_virtual *)self;
835
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
836
0
        return funcs->C_WrapKey (session,
837
0
                                 mechanism,
838
0
                                 wrapping_key,
839
0
                                 hKey,
840
0
                                 wrapped_key,
841
0
                                 wrapped_key_len);
842
0
}
843
    
844
static CK_RV
845
base_C_UnwrapKey (CK_X_FUNCTION_LIST *self,
846
                  CK_SESSION_HANDLE session,
847
                  CK_MECHANISM_PTR mechanism,
848
                  CK_OBJECT_HANDLE unwrapping_key,
849
                  unsigned char * wrapped_key,
850
                  long unsigned int wrapped_key_len,
851
                  CK_ATTRIBUTE_PTR pTemplate,
852
                  long unsigned int ulAttributeCount,
853
                  CK_OBJECT_HANDLE_PTR hKey)
854
2
{
855
2
        p11_virtual *virt = (p11_virtual *)self;
856
2
        CK_FUNCTION_LIST *funcs = virt->lower_module;
857
2
        return funcs->C_UnwrapKey (session,
858
2
                                   mechanism,
859
2
                                   unwrapping_key,
860
2
                                   wrapped_key,
861
2
                                   wrapped_key_len,
862
2
                                   pTemplate,
863
2
                                   ulAttributeCount,
864
2
                                   hKey);
865
2
}
866
    
867
static CK_RV
868
base_C_DeriveKey (CK_X_FUNCTION_LIST *self,
869
                  CK_SESSION_HANDLE session,
870
                  CK_MECHANISM_PTR mechanism,
871
                  CK_OBJECT_HANDLE base_key,
872
                  CK_ATTRIBUTE_PTR pTemplate,
873
                  long unsigned int ulAttributeCount,
874
                  CK_OBJECT_HANDLE_PTR hKey)
875
0
{
876
0
        p11_virtual *virt = (p11_virtual *)self;
877
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
878
0
        return funcs->C_DeriveKey (session,
879
0
                                   mechanism,
880
0
                                   base_key,
881
0
                                   pTemplate,
882
0
                                   ulAttributeCount,
883
0
                                   hKey);
884
0
}
885
    
886
static CK_RV
887
base_C_SeedRandom (CK_X_FUNCTION_LIST *self,
888
                   CK_SESSION_HANDLE session,
889
                   unsigned char * seed,
890
                   long unsigned int ulSeedLen)
891
3
{
892
3
        p11_virtual *virt = (p11_virtual *)self;
893
3
        CK_FUNCTION_LIST *funcs = virt->lower_module;
894
3
        return funcs->C_SeedRandom (session,
895
3
                                    seed,
896
3
                                    ulSeedLen);
897
3
}
898
    
899
static CK_RV
900
base_C_GenerateRandom (CK_X_FUNCTION_LIST *self,
901
                       CK_SESSION_HANDLE session,
902
                       unsigned char * random_data,
903
                       long unsigned int ulRandomLen)
904
0
{
905
0
        p11_virtual *virt = (p11_virtual *)self;
906
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
907
0
        return funcs->C_GenerateRandom (session,
908
0
                                        random_data,
909
0
                                        ulRandomLen);
910
0
}
911
    
912
static CK_RV
913
base_C_WaitForSlotEvent (CK_X_FUNCTION_LIST *self,
914
                         CK_FLAGS flags,
915
                         CK_SLOT_ID_PTR slot,
916
                         CK_VOID_PTR pReserved)
917
0
{
918
0
        p11_virtual *virt = (p11_virtual *)self;
919
0
        CK_FUNCTION_LIST *funcs = virt->lower_module;
920
0
        return funcs->C_WaitForSlotEvent (flags,
921
0
                                          slot,
922
0
                                          pReserved);
923
0
}
924
    
925
static CK_RV
926
base_C_LoginUser (CK_X_FUNCTION_LIST *self,
927
                  CK_SESSION_HANDLE session,
928
                  CK_USER_TYPE user_type,
929
                  unsigned char * pin,
930
                  long unsigned int pin_len,
931
                  unsigned char * username,
932
                  long unsigned int username_len)
933
0
{
934
0
        p11_virtual *virt = (p11_virtual *)self;
935
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
936
0
        if (funcs->version.major < 3)
937
0
                return CKR_FUNCTION_NOT_SUPPORTED;
938
0
        return funcs->C_LoginUser (session,
939
0
                                   user_type,
940
0
                                   pin,
941
0
                                   pin_len,
942
0
                                   username,
943
0
                                   username_len);
944
0
}
945
    
946
static CK_RV
947
base_C_SessionCancel (CK_X_FUNCTION_LIST *self,
948
                      CK_SESSION_HANDLE session,
949
                      CK_FLAGS flags)
950
0
{
951
0
        p11_virtual *virt = (p11_virtual *)self;
952
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
953
0
        if (funcs->version.major < 3)
954
0
                return CKR_FUNCTION_NOT_SUPPORTED;
955
0
        return funcs->C_SessionCancel (session,
956
0
                                       flags);
957
0
}
958
    
959
static CK_RV
960
base_C_MessageEncryptInit (CK_X_FUNCTION_LIST *self,
961
                           CK_SESSION_HANDLE session,
962
                           CK_MECHANISM_PTR mechanism,
963
                           CK_OBJECT_HANDLE hKey)
964
0
{
965
0
        p11_virtual *virt = (p11_virtual *)self;
966
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
967
0
        if (funcs->version.major < 3)
968
0
                return CKR_FUNCTION_NOT_SUPPORTED;
969
0
        return funcs->C_MessageEncryptInit (session,
970
0
                                            mechanism,
971
0
                                            hKey);
972
0
}
973
    
974
static CK_RV
975
base_C_EncryptMessage (CK_X_FUNCTION_LIST *self,
976
                       CK_SESSION_HANDLE session,
977
                       CK_VOID_PTR pParameter,
978
                       long unsigned int ulParameterLen,
979
                       unsigned char * associated_data,
980
                       long unsigned int associated_data_len,
981
                       unsigned char * plaintext,
982
                       long unsigned int plaintext_len,
983
                       unsigned char * ciphertext,
984
                       long unsigned int * ciphertext_len)
985
0
{
986
0
        p11_virtual *virt = (p11_virtual *)self;
987
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
988
0
        if (funcs->version.major < 3)
989
0
                return CKR_FUNCTION_NOT_SUPPORTED;
990
0
        return funcs->C_EncryptMessage (session,
991
0
                                        pParameter,
992
0
                                        ulParameterLen,
993
0
                                        associated_data,
994
0
                                        associated_data_len,
995
0
                                        plaintext,
996
0
                                        plaintext_len,
997
0
                                        ciphertext,
998
0
                                        ciphertext_len);
999
0
}
1000
    
1001
static CK_RV
1002
base_C_EncryptMessageBegin (CK_X_FUNCTION_LIST *self,
1003
                            CK_SESSION_HANDLE session,
1004
                            CK_VOID_PTR pParameter,
1005
                            long unsigned int ulParameterLen,
1006
                            unsigned char * associated_data,
1007
                            long unsigned int associated_data_len)
1008
1
{
1009
1
        p11_virtual *virt = (p11_virtual *)self;
1010
1
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1011
1
        if (funcs->version.major < 3)
1012
1
                return CKR_FUNCTION_NOT_SUPPORTED;
1013
0
        return funcs->C_EncryptMessageBegin (session,
1014
0
                                             pParameter,
1015
0
                                             ulParameterLen,
1016
0
                                             associated_data,
1017
0
                                             associated_data_len);
1018
1
}
1019
    
1020
static CK_RV
1021
base_C_EncryptMessageNext (CK_X_FUNCTION_LIST *self,
1022
                           CK_SESSION_HANDLE session,
1023
                           CK_VOID_PTR pParameter,
1024
                           long unsigned int ulParameterLen,
1025
                           unsigned char * plaintext_part,
1026
                           long unsigned int plaintext_part_len,
1027
                           unsigned char * ciphertext_part,
1028
                           long unsigned int * ciphertext_part_len,
1029
                           CK_FLAGS flags)
1030
0
{
1031
0
        p11_virtual *virt = (p11_virtual *)self;
1032
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1033
0
        if (funcs->version.major < 3)
1034
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1035
0
        return funcs->C_EncryptMessageNext (session,
1036
0
                                            pParameter,
1037
0
                                            ulParameterLen,
1038
0
                                            plaintext_part,
1039
0
                                            plaintext_part_len,
1040
0
                                            ciphertext_part,
1041
0
                                            ciphertext_part_len,
1042
0
                                            flags);
1043
0
}
1044
    
1045
static CK_RV
1046
base_C_MessageEncryptFinal (CK_X_FUNCTION_LIST *self,
1047
                            CK_SESSION_HANDLE session)
1048
0
{
1049
0
        p11_virtual *virt = (p11_virtual *)self;
1050
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1051
0
        if (funcs->version.major < 3)
1052
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1053
0
        return funcs->C_MessageEncryptFinal (session);
1054
0
}
1055
    
1056
static CK_RV
1057
base_C_MessageDecryptInit (CK_X_FUNCTION_LIST *self,
1058
                           CK_SESSION_HANDLE session,
1059
                           CK_MECHANISM_PTR mechanism,
1060
                           CK_OBJECT_HANDLE hKey)
1061
0
{
1062
0
        p11_virtual *virt = (p11_virtual *)self;
1063
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1064
0
        if (funcs->version.major < 3)
1065
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1066
0
        return funcs->C_MessageDecryptInit (session,
1067
0
                                            mechanism,
1068
0
                                            hKey);
1069
0
}
1070
    
1071
static CK_RV
1072
base_C_DecryptMessage (CK_X_FUNCTION_LIST *self,
1073
                       CK_SESSION_HANDLE session,
1074
                       CK_VOID_PTR pParameter,
1075
                       long unsigned int ulParameterLen,
1076
                       unsigned char * associated_data,
1077
                       long unsigned int associated_data_len,
1078
                       unsigned char * ciphertext,
1079
                       long unsigned int ciphertext_len,
1080
                       unsigned char * plaintext,
1081
                       long unsigned int * plaintext_len)
1082
0
{
1083
0
        p11_virtual *virt = (p11_virtual *)self;
1084
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1085
0
        if (funcs->version.major < 3)
1086
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1087
0
        return funcs->C_DecryptMessage (session,
1088
0
                                        pParameter,
1089
0
                                        ulParameterLen,
1090
0
                                        associated_data,
1091
0
                                        associated_data_len,
1092
0
                                        ciphertext,
1093
0
                                        ciphertext_len,
1094
0
                                        plaintext,
1095
0
                                        plaintext_len);
1096
0
}
1097
    
1098
static CK_RV
1099
base_C_DecryptMessageBegin (CK_X_FUNCTION_LIST *self,
1100
                            CK_SESSION_HANDLE session,
1101
                            CK_VOID_PTR pParameter,
1102
                            long unsigned int ulParameterLen,
1103
                            unsigned char * associated_data,
1104
                            long unsigned int associated_data_len)
1105
0
{
1106
0
        p11_virtual *virt = (p11_virtual *)self;
1107
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1108
0
        if (funcs->version.major < 3)
1109
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1110
0
        return funcs->C_DecryptMessageBegin (session,
1111
0
                                             pParameter,
1112
0
                                             ulParameterLen,
1113
0
                                             associated_data,
1114
0
                                             associated_data_len);
1115
0
}
1116
    
1117
static CK_RV
1118
base_C_DecryptMessageNext (CK_X_FUNCTION_LIST *self,
1119
                           CK_SESSION_HANDLE session,
1120
                           CK_VOID_PTR pParameter,
1121
                           long unsigned int ulParameterLen,
1122
                           unsigned char * ciphertext_part,
1123
                           long unsigned int ciphertext_part_len,
1124
                           unsigned char * plaintext_part,
1125
                           long unsigned int * plaintext_part_len,
1126
                           CK_FLAGS flags)
1127
0
{
1128
0
        p11_virtual *virt = (p11_virtual *)self;
1129
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1130
0
        if (funcs->version.major < 3)
1131
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1132
0
        return funcs->C_DecryptMessageNext (session,
1133
0
                                            pParameter,
1134
0
                                            ulParameterLen,
1135
0
                                            ciphertext_part,
1136
0
                                            ciphertext_part_len,
1137
0
                                            plaintext_part,
1138
0
                                            plaintext_part_len,
1139
0
                                            flags);
1140
0
}
1141
    
1142
static CK_RV
1143
base_C_MessageDecryptFinal (CK_X_FUNCTION_LIST *self,
1144
                            CK_SESSION_HANDLE session)
1145
0
{
1146
0
        p11_virtual *virt = (p11_virtual *)self;
1147
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1148
0
        if (funcs->version.major < 3)
1149
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1150
0
        return funcs->C_MessageDecryptFinal (session);
1151
0
}
1152
    
1153
static CK_RV
1154
base_C_MessageSignInit (CK_X_FUNCTION_LIST *self,
1155
                        CK_SESSION_HANDLE session,
1156
                        CK_MECHANISM_PTR mechanism,
1157
                        CK_OBJECT_HANDLE hKey)
1158
0
{
1159
0
        p11_virtual *virt = (p11_virtual *)self;
1160
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1161
0
        if (funcs->version.major < 3)
1162
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1163
0
        return funcs->C_MessageSignInit (session,
1164
0
                                         mechanism,
1165
0
                                         hKey);
1166
0
}
1167
    
1168
static CK_RV
1169
base_C_SignMessage (CK_X_FUNCTION_LIST *self,
1170
                    CK_SESSION_HANDLE session,
1171
                    CK_VOID_PTR pParameter,
1172
                    long unsigned int ulParameterLen,
1173
                    unsigned char * data,
1174
                    long unsigned int ulDataLen,
1175
                    unsigned char * signature,
1176
                    long unsigned int * signature_len)
1177
0
{
1178
0
        p11_virtual *virt = (p11_virtual *)self;
1179
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1180
0
        if (funcs->version.major < 3)
1181
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1182
0
        return funcs->C_SignMessage (session,
1183
0
                                     pParameter,
1184
0
                                     ulParameterLen,
1185
0
                                     data,
1186
0
                                     ulDataLen,
1187
0
                                     signature,
1188
0
                                     signature_len);
1189
0
}
1190
    
1191
static CK_RV
1192
base_C_SignMessageBegin (CK_X_FUNCTION_LIST *self,
1193
                         CK_SESSION_HANDLE session,
1194
                         CK_VOID_PTR pParameter,
1195
                         long unsigned int ulParameterLen)
1196
0
{
1197
0
        p11_virtual *virt = (p11_virtual *)self;
1198
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1199
0
        if (funcs->version.major < 3)
1200
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1201
0
        return funcs->C_SignMessageBegin (session,
1202
0
                                          pParameter,
1203
0
                                          ulParameterLen);
1204
0
}
1205
    
1206
static CK_RV
1207
base_C_SignMessageNext (CK_X_FUNCTION_LIST *self,
1208
                        CK_SESSION_HANDLE session,
1209
                        CK_VOID_PTR pParameter,
1210
                        long unsigned int ulParameterLen,
1211
                        unsigned char * data,
1212
                        long unsigned int ulDataLen,
1213
                        unsigned char * signature,
1214
                        long unsigned int * signature_len)
1215
0
{
1216
0
        p11_virtual *virt = (p11_virtual *)self;
1217
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1218
0
        if (funcs->version.major < 3)
1219
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1220
0
        return funcs->C_SignMessageNext (session,
1221
0
                                         pParameter,
1222
0
                                         ulParameterLen,
1223
0
                                         data,
1224
0
                                         ulDataLen,
1225
0
                                         signature,
1226
0
                                         signature_len);
1227
0
}
1228
    
1229
static CK_RV
1230
base_C_MessageSignFinal (CK_X_FUNCTION_LIST *self,
1231
                         CK_SESSION_HANDLE session)
1232
0
{
1233
0
        p11_virtual *virt = (p11_virtual *)self;
1234
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1235
0
        if (funcs->version.major < 3)
1236
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1237
0
        return funcs->C_MessageSignFinal (session);
1238
0
}
1239
    
1240
static CK_RV
1241
base_C_MessageVerifyInit (CK_X_FUNCTION_LIST *self,
1242
                          CK_SESSION_HANDLE session,
1243
                          CK_MECHANISM_PTR mechanism,
1244
                          CK_OBJECT_HANDLE hKey)
1245
2
{
1246
2
        p11_virtual *virt = (p11_virtual *)self;
1247
2
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1248
2
        if (funcs->version.major < 3)
1249
2
                return CKR_FUNCTION_NOT_SUPPORTED;
1250
0
        return funcs->C_MessageVerifyInit (session,
1251
0
                                           mechanism,
1252
0
                                           hKey);
1253
2
}
1254
    
1255
static CK_RV
1256
base_C_VerifyMessage (CK_X_FUNCTION_LIST *self,
1257
                      CK_SESSION_HANDLE session,
1258
                      CK_VOID_PTR pParameter,
1259
                      long unsigned int ulParameterLen,
1260
                      unsigned char * data,
1261
                      long unsigned int ulDataLen,
1262
                      unsigned char * signature,
1263
                      long unsigned int signature_len)
1264
0
{
1265
0
        p11_virtual *virt = (p11_virtual *)self;
1266
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1267
0
        if (funcs->version.major < 3)
1268
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1269
0
        return funcs->C_VerifyMessage (session,
1270
0
                                       pParameter,
1271
0
                                       ulParameterLen,
1272
0
                                       data,
1273
0
                                       ulDataLen,
1274
0
                                       signature,
1275
0
                                       signature_len);
1276
0
}
1277
    
1278
static CK_RV
1279
base_C_VerifyMessageBegin (CK_X_FUNCTION_LIST *self,
1280
                           CK_SESSION_HANDLE session,
1281
                           CK_VOID_PTR pParameter,
1282
                           long unsigned int ulParameterLen)
1283
0
{
1284
0
        p11_virtual *virt = (p11_virtual *)self;
1285
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1286
0
        if (funcs->version.major < 3)
1287
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1288
0
        return funcs->C_VerifyMessageBegin (session,
1289
0
                                            pParameter,
1290
0
                                            ulParameterLen);
1291
0
}
1292
    
1293
static CK_RV
1294
base_C_VerifyMessageNext (CK_X_FUNCTION_LIST *self,
1295
                          CK_SESSION_HANDLE session,
1296
                          CK_VOID_PTR pParameter,
1297
                          long unsigned int ulParameterLen,
1298
                          unsigned char * data,
1299
                          long unsigned int ulDataLen,
1300
                          unsigned char * signature,
1301
                          long unsigned int signature_len)
1302
0
{
1303
0
        p11_virtual *virt = (p11_virtual *)self;
1304
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1305
0
        if (funcs->version.major < 3)
1306
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1307
0
        return funcs->C_VerifyMessageNext (session,
1308
0
                                           pParameter,
1309
0
                                           ulParameterLen,
1310
0
                                           data,
1311
0
                                           ulDataLen,
1312
0
                                           signature,
1313
0
                                           signature_len);
1314
0
}
1315
    
1316
static CK_RV
1317
base_C_MessageVerifyFinal (CK_X_FUNCTION_LIST *self,
1318
                           CK_SESSION_HANDLE session)
1319
0
{
1320
0
        p11_virtual *virt = (p11_virtual *)self;
1321
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1322
0
        if (funcs->version.major < 3)
1323
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1324
0
        return funcs->C_MessageVerifyFinal (session);
1325
0
}
1326
    
1327
static CK_RV
1328
base_C_EncapsulateKey (CK_X_FUNCTION_LIST *self,
1329
                       CK_SESSION_HANDLE session,
1330
                       CK_MECHANISM_PTR mechanism,
1331
                       CK_OBJECT_HANDLE publicKey,
1332
                       CK_ATTRIBUTE_PTR pTemplate,
1333
                       long unsigned int ulAttributeCount,
1334
                       unsigned char * ciphertext,
1335
                       long unsigned int * ciphertext_len,
1336
                       CK_OBJECT_HANDLE_PTR phKey)
1337
0
{
1338
0
        p11_virtual *virt = (p11_virtual *)self;
1339
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1340
0
        if (funcs->version.major < 3)
1341
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1342
0
        return funcs->C_EncapsulateKey (session,
1343
0
                                        mechanism,
1344
0
                                        publicKey,
1345
0
                                        pTemplate,
1346
0
                                        ulAttributeCount,
1347
0
                                        ciphertext,
1348
0
                                        ciphertext_len,
1349
0
                                        phKey);
1350
0
}
1351
    
1352
static CK_RV
1353
base_C_DecapsulateKey (CK_X_FUNCTION_LIST *self,
1354
                       CK_SESSION_HANDLE session,
1355
                       CK_MECHANISM_PTR mechanism,
1356
                       CK_OBJECT_HANDLE private_key,
1357
                       CK_ATTRIBUTE_PTR pTemplate,
1358
                       long unsigned int ulAttributeCount,
1359
                       unsigned char * ciphertext,
1360
                       long unsigned int * ciphertext_len,
1361
                       CK_OBJECT_HANDLE_PTR phKey)
1362
0
{
1363
0
        p11_virtual *virt = (p11_virtual *)self;
1364
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1365
0
        if (funcs->version.major < 3)
1366
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1367
0
        return funcs->C_DecapsulateKey (session,
1368
0
                                        mechanism,
1369
0
                                        private_key,
1370
0
                                        pTemplate,
1371
0
                                        ulAttributeCount,
1372
0
                                        ciphertext,
1373
0
                                        ciphertext_len,
1374
0
                                        phKey);
1375
0
}
1376
    
1377
static CK_RV
1378
base_C_VerifySignatureInit (CK_X_FUNCTION_LIST *self,
1379
                            CK_SESSION_HANDLE session,
1380
                            CK_MECHANISM_PTR mechanism,
1381
                            CK_OBJECT_HANDLE hKey,
1382
                            unsigned char * signature,
1383
                            long unsigned int signature_len)
1384
0
{
1385
0
        p11_virtual *virt = (p11_virtual *)self;
1386
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1387
0
        if (funcs->version.major < 3)
1388
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1389
0
        return funcs->C_VerifySignatureInit (session,
1390
0
                                             mechanism,
1391
0
                                             hKey,
1392
0
                                             signature,
1393
0
                                             signature_len);
1394
0
}
1395
    
1396
static CK_RV
1397
base_C_VerifySignature (CK_X_FUNCTION_LIST *self,
1398
                        CK_SESSION_HANDLE session,
1399
                        unsigned char * data,
1400
                        long unsigned int ulDataLen)
1401
0
{
1402
0
        p11_virtual *virt = (p11_virtual *)self;
1403
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1404
0
        if (funcs->version.major < 3)
1405
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1406
0
        return funcs->C_VerifySignature (session,
1407
0
                                         data,
1408
0
                                         ulDataLen);
1409
0
}
1410
    
1411
static CK_RV
1412
base_C_VerifySignatureUpdate (CK_X_FUNCTION_LIST *self,
1413
                              CK_SESSION_HANDLE session,
1414
                              unsigned char * part,
1415
                              long unsigned int part_len)
1416
0
{
1417
0
        p11_virtual *virt = (p11_virtual *)self;
1418
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1419
0
        if (funcs->version.major < 3)
1420
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1421
0
        return funcs->C_VerifySignatureUpdate (session,
1422
0
                                               part,
1423
0
                                               part_len);
1424
0
}
1425
    
1426
static CK_RV
1427
base_C_VerifySignatureFinal (CK_X_FUNCTION_LIST *self,
1428
                             CK_SESSION_HANDLE session)
1429
0
{
1430
0
        p11_virtual *virt = (p11_virtual *)self;
1431
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1432
0
        if (funcs->version.major < 3)
1433
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1434
0
        return funcs->C_VerifySignatureFinal (session);
1435
0
}
1436
    
1437
static CK_RV
1438
base_C_GetSessionValidationFlags (CK_X_FUNCTION_LIST *self,
1439
                                  CK_SESSION_HANDLE session,
1440
                                  CK_SESSION_VALIDATION_FLAGS_TYPE type,
1441
                                  CK_FLAGS * flags_ptr)
1442
0
{
1443
0
        p11_virtual *virt = (p11_virtual *)self;
1444
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1445
0
        if (funcs->version.major < 3)
1446
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1447
0
        return funcs->C_GetSessionValidationFlags (session,
1448
0
                                                   type,
1449
0
                                                   flags_ptr);
1450
0
}
1451
    
1452
static CK_RV
1453
base_C_AsyncComplete (CK_X_FUNCTION_LIST *self,
1454
                      CK_SESSION_HANDLE session,
1455
                      unsigned char * function_name,
1456
                      CK_ASYNC_DATA_PTR result)
1457
0
{
1458
0
        p11_virtual *virt = (p11_virtual *)self;
1459
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1460
0
        if (funcs->version.major < 3)
1461
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1462
0
        return funcs->C_AsyncComplete (session,
1463
0
                                       function_name,
1464
0
                                       result);
1465
0
}
1466
    
1467
static CK_RV
1468
base_C_AsyncGetID (CK_X_FUNCTION_LIST *self,
1469
                   CK_SESSION_HANDLE session,
1470
                   unsigned char * function_name,
1471
                   long unsigned int * id_ptr)
1472
0
{
1473
0
        p11_virtual *virt = (p11_virtual *)self;
1474
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1475
0
        if (funcs->version.major < 3)
1476
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1477
0
        return funcs->C_AsyncGetID (session,
1478
0
                                    function_name,
1479
0
                                    id_ptr);
1480
0
}
1481
    
1482
static CK_RV
1483
base_C_AsyncJoin (CK_X_FUNCTION_LIST *self,
1484
                  CK_SESSION_HANDLE session,
1485
                  unsigned char * function_name,
1486
                  long unsigned int id,
1487
                  unsigned char * data,
1488
                  long unsigned int ulDataLen)
1489
0
{
1490
0
        p11_virtual *virt = (p11_virtual *)self;
1491
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1492
0
        if (funcs->version.major < 3)
1493
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1494
0
        return funcs->C_AsyncJoin (session,
1495
0
                                   function_name,
1496
0
                                   id,
1497
0
                                   data,
1498
0
                                   ulDataLen);
1499
0
}
1500
    
1501
static CK_RV
1502
base_C_WrapKeyAuthenticated (CK_X_FUNCTION_LIST *self,
1503
                             CK_SESSION_HANDLE session,
1504
                             CK_MECHANISM_PTR mechanism,
1505
                             CK_OBJECT_HANDLE wrapping_key,
1506
                             CK_OBJECT_HANDLE hKey,
1507
                             unsigned char * associated_data,
1508
                             long unsigned int associated_data_len,
1509
                             unsigned char * wrapped_key,
1510
                             long unsigned int * wrapped_key_len)
1511
0
{
1512
0
        p11_virtual *virt = (p11_virtual *)self;
1513
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1514
0
        if (funcs->version.major < 3)
1515
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1516
0
        return funcs->C_WrapKeyAuthenticated (session,
1517
0
                                              mechanism,
1518
0
                                              wrapping_key,
1519
0
                                              hKey,
1520
0
                                              associated_data,
1521
0
                                              associated_data_len,
1522
0
                                              wrapped_key,
1523
0
                                              wrapped_key_len);
1524
0
}
1525
    
1526
static CK_RV
1527
base_C_UnwrapKeyAuthenticated (CK_X_FUNCTION_LIST *self,
1528
                               CK_SESSION_HANDLE session,
1529
                               CK_MECHANISM_PTR mechanism,
1530
                               CK_OBJECT_HANDLE unwrapping_key,
1531
                               unsigned char * wrapped_key,
1532
                               long unsigned int wrapped_key_len,
1533
                               CK_ATTRIBUTE_PTR pTemplate,
1534
                               long unsigned int ulAttributeCount,
1535
                               unsigned char * associated_data,
1536
                               long unsigned int associated_data_len,
1537
                               CK_OBJECT_HANDLE_PTR phKey)
1538
0
{
1539
0
        p11_virtual *virt = (p11_virtual *)self;
1540
0
        CK_FUNCTION_LIST_3_2 *funcs = virt->lower_module;
1541
0
        if (funcs->version.major < 3)
1542
0
                return CKR_FUNCTION_NOT_SUPPORTED;
1543
0
        return funcs->C_UnwrapKeyAuthenticated (session,
1544
0
                                                mechanism,
1545
0
                                                unwrapping_key,
1546
0
                                                wrapped_key,
1547
0
                                                wrapped_key_len,
1548
0
                                                pTemplate,
1549
0
                                                ulAttributeCount,
1550
0
                                                associated_data,
1551
0
                                                associated_data_len,
1552
0
                                                phKey);
1553
0
}
1554
    
1555
1556
CK_X_FUNCTION_LIST p11_virtual_base = {
1557
        { CRYPTOKI_VERSION_MAJOR, CRYPTOKI_VERSION_MINOR },  /* version */
1558
        base_C_Initialize,
1559
        base_C_Finalize,
1560
        base_C_GetInfo,
1561
        base_C_GetSlotList,
1562
        base_C_GetSlotInfo,
1563
        base_C_GetTokenInfo,
1564
        base_C_GetMechanismList,
1565
        base_C_GetMechanismInfo,
1566
        base_C_InitToken,
1567
        base_C_InitPIN,
1568
        base_C_SetPIN,
1569
        base_C_OpenSession,
1570
        base_C_CloseSession,
1571
        base_C_CloseAllSessions,
1572
        base_C_GetSessionInfo,
1573
        base_C_GetOperationState,
1574
        base_C_SetOperationState,
1575
        base_C_Login,
1576
        base_C_Logout,
1577
        base_C_CreateObject,
1578
        base_C_CopyObject,
1579
        base_C_DestroyObject,
1580
        base_C_GetObjectSize,
1581
        base_C_GetAttributeValue,
1582
        base_C_SetAttributeValue,
1583
        base_C_FindObjectsInit,
1584
        base_C_FindObjects,
1585
        base_C_FindObjectsFinal,
1586
        base_C_EncryptInit,
1587
        base_C_Encrypt,
1588
        base_C_EncryptUpdate,
1589
        base_C_EncryptFinal,
1590
        base_C_DecryptInit,
1591
        base_C_Decrypt,
1592
        base_C_DecryptUpdate,
1593
        base_C_DecryptFinal,
1594
        base_C_DigestInit,
1595
        base_C_Digest,
1596
        base_C_DigestUpdate,
1597
        base_C_DigestKey,
1598
        base_C_DigestFinal,
1599
        base_C_SignInit,
1600
        base_C_Sign,
1601
        base_C_SignUpdate,
1602
        base_C_SignFinal,
1603
        base_C_SignRecoverInit,
1604
        base_C_SignRecover,
1605
        base_C_VerifyInit,
1606
        base_C_Verify,
1607
        base_C_VerifyUpdate,
1608
        base_C_VerifyFinal,
1609
        base_C_VerifyRecoverInit,
1610
        base_C_VerifyRecover,
1611
        base_C_DigestEncryptUpdate,
1612
        base_C_DecryptDigestUpdate,
1613
        base_C_SignEncryptUpdate,
1614
        base_C_DecryptVerifyUpdate,
1615
        base_C_GenerateKey,
1616
        base_C_GenerateKeyPair,
1617
        base_C_WrapKey,
1618
        base_C_UnwrapKey,
1619
        base_C_DeriveKey,
1620
        base_C_SeedRandom,
1621
        base_C_GenerateRandom,
1622
        base_C_WaitForSlotEvent,
1623
        base_C_LoginUser,
1624
        base_C_SessionCancel,
1625
        base_C_MessageEncryptInit,
1626
        base_C_EncryptMessage,
1627
        base_C_EncryptMessageBegin,
1628
        base_C_EncryptMessageNext,
1629
        base_C_MessageEncryptFinal,
1630
        base_C_MessageDecryptInit,
1631
        base_C_DecryptMessage,
1632
        base_C_DecryptMessageBegin,
1633
        base_C_DecryptMessageNext,
1634
        base_C_MessageDecryptFinal,
1635
        base_C_MessageSignInit,
1636
        base_C_SignMessage,
1637
        base_C_SignMessageBegin,
1638
        base_C_SignMessageNext,
1639
        base_C_MessageSignFinal,
1640
        base_C_MessageVerifyInit,
1641
        base_C_VerifyMessage,
1642
        base_C_VerifyMessageBegin,
1643
        base_C_VerifyMessageNext,
1644
        base_C_MessageVerifyFinal,
1645
        base_C_EncapsulateKey,
1646
        base_C_DecapsulateKey,
1647
        base_C_VerifySignatureInit,
1648
        base_C_VerifySignature,
1649
        base_C_VerifySignatureUpdate,
1650
        base_C_VerifySignatureFinal,
1651
        base_C_GetSessionValidationFlags,
1652
        base_C_AsyncComplete,
1653
        base_C_AsyncGetID,
1654
        base_C_AsyncJoin,
1655
        base_C_WrapKeyAuthenticated,
1656
        base_C_UnwrapKeyAuthenticated
1657
};