|
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 "ckdbm.h" |
|
6 |
|
7 static void |
|
8 nss_dbm_mdObject_Finalize |
|
9 ( |
|
10 NSSCKMDObject *mdObject, |
|
11 NSSCKFWObject *fwObject, |
|
12 NSSCKMDSession *mdSession, |
|
13 NSSCKFWSession *fwSession, |
|
14 NSSCKMDToken *mdToken, |
|
15 NSSCKFWToken *fwToken, |
|
16 NSSCKMDInstance *mdInstance, |
|
17 NSSCKFWInstance *fwInstance |
|
18 ) |
|
19 { |
|
20 ; |
|
21 } |
|
22 |
|
23 static CK_RV |
|
24 nss_dbm_mdObject_Destroy |
|
25 ( |
|
26 NSSCKMDObject *mdObject, |
|
27 NSSCKFWObject *fwObject, |
|
28 NSSCKMDSession *mdSession, |
|
29 NSSCKFWSession *fwSession, |
|
30 NSSCKMDToken *mdToken, |
|
31 NSSCKFWToken *fwToken, |
|
32 NSSCKMDInstance *mdInstance, |
|
33 NSSCKFWInstance *fwInstance |
|
34 ) |
|
35 { |
|
36 nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; |
|
37 return nss_dbm_db_delete_object(object->handle); |
|
38 } |
|
39 |
|
40 static CK_ULONG |
|
41 nss_dbm_mdObject_GetAttributeCount |
|
42 ( |
|
43 NSSCKMDObject *mdObject, |
|
44 NSSCKFWObject *fwObject, |
|
45 NSSCKMDSession *mdSession, |
|
46 NSSCKFWSession *fwSession, |
|
47 NSSCKMDToken *mdToken, |
|
48 NSSCKFWToken *fwToken, |
|
49 NSSCKMDInstance *mdInstance, |
|
50 NSSCKFWInstance *fwInstance, |
|
51 CK_RV *pError |
|
52 ) |
|
53 { |
|
54 nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; |
|
55 nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc; |
|
56 return nss_dbm_db_get_object_attribute_count(object->handle, pError, |
|
57 &session->deviceError); |
|
58 } |
|
59 |
|
60 static CK_RV |
|
61 nss_dbm_mdObject_GetAttributeTypes |
|
62 ( |
|
63 NSSCKMDObject *mdObject, |
|
64 NSSCKFWObject *fwObject, |
|
65 NSSCKMDSession *mdSession, |
|
66 NSSCKFWSession *fwSession, |
|
67 NSSCKMDToken *mdToken, |
|
68 NSSCKFWToken *fwToken, |
|
69 NSSCKMDInstance *mdInstance, |
|
70 NSSCKFWInstance *fwInstance, |
|
71 CK_ATTRIBUTE_TYPE_PTR typeArray, |
|
72 CK_ULONG ulCount |
|
73 ) |
|
74 { |
|
75 nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; |
|
76 nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc; |
|
77 return nss_dbm_db_get_object_attribute_types(object->handle, typeArray, |
|
78 ulCount, &session->deviceError); |
|
79 } |
|
80 |
|
81 static CK_ULONG |
|
82 nss_dbm_mdObject_GetAttributeSize |
|
83 ( |
|
84 NSSCKMDObject *mdObject, |
|
85 NSSCKFWObject *fwObject, |
|
86 NSSCKMDSession *mdSession, |
|
87 NSSCKFWSession *fwSession, |
|
88 NSSCKMDToken *mdToken, |
|
89 NSSCKFWToken *fwToken, |
|
90 NSSCKMDInstance *mdInstance, |
|
91 NSSCKFWInstance *fwInstance, |
|
92 CK_ATTRIBUTE_TYPE attribute, |
|
93 CK_RV *pError |
|
94 ) |
|
95 { |
|
96 nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; |
|
97 nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc; |
|
98 return nss_dbm_db_get_object_attribute_size(object->handle, attribute, pError, |
|
99 &session->deviceError); |
|
100 } |
|
101 |
|
102 static NSSItem * |
|
103 nss_dbm_mdObject_GetAttribute |
|
104 ( |
|
105 NSSCKMDObject *mdObject, |
|
106 NSSCKFWObject *fwObject, |
|
107 NSSCKMDSession *mdSession, |
|
108 NSSCKFWSession *fwSession, |
|
109 NSSCKMDToken *mdToken, |
|
110 NSSCKFWToken *fwToken, |
|
111 NSSCKMDInstance *mdInstance, |
|
112 NSSCKFWInstance *fwInstance, |
|
113 CK_ATTRIBUTE_TYPE attribute, |
|
114 CK_RV *pError |
|
115 ) |
|
116 { |
|
117 nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; |
|
118 nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc; |
|
119 return nss_dbm_db_get_object_attribute(object->handle, object->arena, attribute, |
|
120 pError, &session->deviceError); |
|
121 } |
|
122 |
|
123 static CK_RV |
|
124 nss_dbm_mdObject_SetAttribute |
|
125 ( |
|
126 NSSCKMDObject *mdObject, |
|
127 NSSCKFWObject *fwObject, |
|
128 NSSCKMDSession *mdSession, |
|
129 NSSCKFWSession *fwSession, |
|
130 NSSCKMDToken *mdToken, |
|
131 NSSCKFWToken *fwToken, |
|
132 NSSCKMDInstance *mdInstance, |
|
133 NSSCKFWInstance *fwInstance, |
|
134 CK_ATTRIBUTE_TYPE attribute, |
|
135 NSSItem *value |
|
136 ) |
|
137 { |
|
138 nss_dbm_object_t *object = (nss_dbm_object_t *)mdObject->etc; |
|
139 nss_dbm_session_t *session = (nss_dbm_session_t *)mdSession->etc; |
|
140 return nss_dbm_db_set_object_attribute(object->handle, attribute, value, |
|
141 &session->deviceError); |
|
142 } |
|
143 |
|
144 NSS_IMPLEMENT NSSCKMDObject * |
|
145 nss_dbm_mdObject_factory |
|
146 ( |
|
147 nss_dbm_object_t *object, |
|
148 CK_RV *pError |
|
149 ) |
|
150 { |
|
151 NSSCKMDObject *rv; |
|
152 |
|
153 rv = nss_ZNEW(object->arena, NSSCKMDObject); |
|
154 if( (NSSCKMDObject *)NULL == rv ) { |
|
155 *pError = CKR_HOST_MEMORY; |
|
156 return (NSSCKMDObject *)NULL; |
|
157 } |
|
158 |
|
159 rv->etc = (void *)object; |
|
160 rv->Finalize = nss_dbm_mdObject_Finalize; |
|
161 rv->Destroy = nss_dbm_mdObject_Destroy; |
|
162 /* IsTokenObject can be deferred */ |
|
163 rv->GetAttributeCount = nss_dbm_mdObject_GetAttributeCount; |
|
164 rv->GetAttributeTypes = nss_dbm_mdObject_GetAttributeTypes; |
|
165 rv->GetAttributeSize = nss_dbm_mdObject_GetAttributeSize; |
|
166 rv->GetAttribute = nss_dbm_mdObject_GetAttribute; |
|
167 rv->SetAttribute = nss_dbm_mdObject_SetAttribute; |
|
168 /* GetObjectSize can be deferred */ |
|
169 |
|
170 return rv; |
|
171 } |