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 
5 #include "ckcapi.h"
6 
7 /*
8  * ckcapi/cslot.c
9  *
10  * This file implements the NSSCKMDSlot object for the
11  * "nss to capi" cryptoki module.
12  */
13 
14 static NSSUTF8 *
ckcapi_mdSlot_GetSlotDescription(NSSCKMDSlot * mdSlot,NSSCKFWSlot * fwSlot,NSSCKMDInstance * mdInstance,NSSCKFWInstance * fwInstance,CK_RV * pError)15 ckcapi_mdSlot_GetSlotDescription(
16     NSSCKMDSlot *mdSlot,
17     NSSCKFWSlot *fwSlot,
18     NSSCKMDInstance *mdInstance,
19     NSSCKFWInstance *fwInstance,
20     CK_RV *pError)
21 {
22     return (NSSUTF8 *)nss_ckcapi_SlotDescription;
23 }
24 
25 static NSSUTF8 *
ckcapi_mdSlot_GetManufacturerID(NSSCKMDSlot * mdSlot,NSSCKFWSlot * fwSlot,NSSCKMDInstance * mdInstance,NSSCKFWInstance * fwInstance,CK_RV * pError)26 ckcapi_mdSlot_GetManufacturerID(
27     NSSCKMDSlot *mdSlot,
28     NSSCKFWSlot *fwSlot,
29     NSSCKMDInstance *mdInstance,
30     NSSCKFWInstance *fwInstance,
31     CK_RV *pError)
32 {
33     return (NSSUTF8 *)nss_ckcapi_ManufacturerID;
34 }
35 
36 static CK_VERSION
ckcapi_mdSlot_GetHardwareVersion(NSSCKMDSlot * mdSlot,NSSCKFWSlot * fwSlot,NSSCKMDInstance * mdInstance,NSSCKFWInstance * fwInstance)37 ckcapi_mdSlot_GetHardwareVersion(
38     NSSCKMDSlot *mdSlot,
39     NSSCKFWSlot *fwSlot,
40     NSSCKMDInstance *mdInstance,
41     NSSCKFWInstance *fwInstance)
42 {
43     return nss_ckcapi_HardwareVersion;
44 }
45 
46 static CK_VERSION
ckcapi_mdSlot_GetFirmwareVersion(NSSCKMDSlot * mdSlot,NSSCKFWSlot * fwSlot,NSSCKMDInstance * mdInstance,NSSCKFWInstance * fwInstance)47 ckcapi_mdSlot_GetFirmwareVersion(
48     NSSCKMDSlot *mdSlot,
49     NSSCKFWSlot *fwSlot,
50     NSSCKMDInstance *mdInstance,
51     NSSCKFWInstance *fwInstance)
52 {
53     return nss_ckcapi_FirmwareVersion;
54 }
55 
56 static NSSCKMDToken *
ckcapi_mdSlot_GetToken(NSSCKMDSlot * mdSlot,NSSCKFWSlot * fwSlot,NSSCKMDInstance * mdInstance,NSSCKFWInstance * fwInstance,CK_RV * pError)57 ckcapi_mdSlot_GetToken(
58     NSSCKMDSlot *mdSlot,
59     NSSCKFWSlot *fwSlot,
60     NSSCKMDInstance *mdInstance,
61     NSSCKFWInstance *fwInstance,
62     CK_RV *pError)
63 {
64     return (NSSCKMDToken *)&nss_ckcapi_mdToken;
65 }
66 
67 NSS_IMPLEMENT_DATA const NSSCKMDSlot
68     nss_ckcapi_mdSlot = {
69         (void *)NULL, /* etc */
70         NULL,         /* Initialize */
71         NULL,         /* Destroy */
72         ckcapi_mdSlot_GetSlotDescription,
73         ckcapi_mdSlot_GetManufacturerID,
74         NULL, /* GetTokenPresent -- defaults to true */
75         NULL, /* GetRemovableDevice -- defaults to false */
76         NULL, /* GetHardwareSlot -- defaults to false */
77         ckcapi_mdSlot_GetHardwareVersion,
78         ckcapi_mdSlot_GetFirmwareVersion,
79         ckcapi_mdSlot_GetToken,
80         (void *)NULL /* null terminator */
81     };
82