OLD | NEW |
1 /* This Source Code Form is subject to the terms of the Mozilla Public | 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 | 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/. */ | 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
4 | 4 |
5 #include "builtins.h" | 5 #include "builtins.h" |
6 | 6 |
7 /* | 7 /* |
8 * builtins/object.c | 8 * builtins/object.c |
9 * | 9 * |
10 * This file implements the NSSCKMDObject object for the | 10 * This file implements the NSSCKMDObject object for the |
11 * "builtin objects" cryptoki module. | 11 * "builtin objects" cryptoki module. |
12 */ | 12 */ |
13 | 13 |
14 /* | 14 /* |
15 * Finalize - unneeded | 15 * Finalize - unneeded |
16 * Destroy - CKR_SESSION_READ_ONLY | 16 * Destroy - CKR_SESSION_READ_ONLY |
17 * IsTokenObject - CK_TRUE | 17 * IsTokenObject - CK_TRUE |
18 * GetAttributeCount | 18 * GetAttributeCount |
19 * GetAttributeTypes | 19 * GetAttributeTypes |
20 * GetAttributeSize | 20 * GetAttributeSize |
21 * GetAttribute | 21 * GetAttribute |
22 * SetAttribute - unneeded | 22 * SetAttribute - unneeded |
23 * GetObjectSize | 23 * GetObjectSize |
24 */ | 24 */ |
25 | 25 |
26 static CK_RV | 26 static CK_RV |
27 builtins_mdObject_Destroy | 27 builtins_mdObject_Destroy( |
28 ( | 28 NSSCKMDObject *mdObject, |
29 NSSCKMDObject *mdObject, | 29 NSSCKFWObject *fwObject, |
30 NSSCKFWObject *fwObject, | 30 NSSCKMDSession *mdSession, |
31 NSSCKMDSession *mdSession, | 31 NSSCKFWSession *fwSession, |
32 NSSCKFWSession *fwSession, | 32 NSSCKMDToken *mdToken, |
33 NSSCKMDToken *mdToken, | 33 NSSCKFWToken *fwToken, |
34 NSSCKFWToken *fwToken, | 34 NSSCKMDInstance *mdInstance, |
35 NSSCKMDInstance *mdInstance, | 35 NSSCKFWInstance *fwInstance) |
36 NSSCKFWInstance *fwInstance | |
37 ) | |
38 { | 36 { |
39 return CKR_SESSION_READ_ONLY; | 37 return CKR_SESSION_READ_ONLY; |
40 } | 38 } |
41 | 39 |
42 static CK_BBOOL | 40 static CK_BBOOL |
43 builtins_mdObject_IsTokenObject | 41 builtins_mdObject_IsTokenObject( |
44 ( | 42 NSSCKMDObject *mdObject, |
45 NSSCKMDObject *mdObject, | 43 NSSCKFWObject *fwObject, |
46 NSSCKFWObject *fwObject, | 44 NSSCKMDSession *mdSession, |
47 NSSCKMDSession *mdSession, | 45 NSSCKFWSession *fwSession, |
48 NSSCKFWSession *fwSession, | 46 NSSCKMDToken *mdToken, |
49 NSSCKMDToken *mdToken, | 47 NSSCKFWToken *fwToken, |
50 NSSCKFWToken *fwToken, | 48 NSSCKMDInstance *mdInstance, |
51 NSSCKMDInstance *mdInstance, | 49 NSSCKFWInstance *fwInstance) |
52 NSSCKFWInstance *fwInstance | |
53 ) | |
54 { | 50 { |
55 return CK_TRUE; | 51 return CK_TRUE; |
56 } | 52 } |
57 | 53 |
58 static CK_ULONG | 54 static CK_ULONG |
59 builtins_mdObject_GetAttributeCount | 55 builtins_mdObject_GetAttributeCount( |
60 ( | 56 NSSCKMDObject *mdObject, |
61 NSSCKMDObject *mdObject, | 57 NSSCKFWObject *fwObject, |
62 NSSCKFWObject *fwObject, | 58 NSSCKMDSession *mdSession, |
63 NSSCKMDSession *mdSession, | 59 NSSCKFWSession *fwSession, |
64 NSSCKFWSession *fwSession, | 60 NSSCKMDToken *mdToken, |
65 NSSCKMDToken *mdToken, | 61 NSSCKFWToken *fwToken, |
66 NSSCKFWToken *fwToken, | 62 NSSCKMDInstance *mdInstance, |
67 NSSCKMDInstance *mdInstance, | 63 NSSCKFWInstance *fwInstance, |
68 NSSCKFWInstance *fwInstance, | 64 CK_RV *pError) |
69 CK_RV *pError | |
70 ) | |
71 { | 65 { |
72 builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc; | 66 builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc; |
73 return io->n; | 67 return io->n; |
74 } | 68 } |
75 | 69 |
76 static CK_RV | 70 static CK_RV |
77 builtins_mdObject_GetAttributeTypes | 71 builtins_mdObject_GetAttributeTypes( |
78 ( | 72 NSSCKMDObject *mdObject, |
79 NSSCKMDObject *mdObject, | 73 NSSCKFWObject *fwObject, |
80 NSSCKFWObject *fwObject, | 74 NSSCKMDSession *mdSession, |
81 NSSCKMDSession *mdSession, | 75 NSSCKFWSession *fwSession, |
82 NSSCKFWSession *fwSession, | 76 NSSCKMDToken *mdToken, |
83 NSSCKMDToken *mdToken, | 77 NSSCKFWToken *fwToken, |
84 NSSCKFWToken *fwToken, | 78 NSSCKMDInstance *mdInstance, |
85 NSSCKMDInstance *mdInstance, | 79 NSSCKFWInstance *fwInstance, |
86 NSSCKFWInstance *fwInstance, | 80 CK_ATTRIBUTE_TYPE_PTR typeArray, |
87 CK_ATTRIBUTE_TYPE_PTR typeArray, | 81 CK_ULONG ulCount) |
88 CK_ULONG ulCount | |
89 ) | |
90 { | 82 { |
91 builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc; | 83 builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc; |
92 CK_ULONG i; | 84 CK_ULONG i; |
93 | 85 |
94 if( io->n != ulCount ) { | 86 if (io->n != ulCount) { |
95 return CKR_BUFFER_TOO_SMALL; | 87 return CKR_BUFFER_TOO_SMALL; |
96 } | 88 } |
97 | 89 |
98 for( i = 0; i < io->n; i++ ) { | 90 for (i = 0; i < io->n; i++) { |
99 typeArray[i] = io->types[i]; | 91 typeArray[i] = io->types[i]; |
100 } | 92 } |
101 | 93 |
102 return CKR_OK; | 94 return CKR_OK; |
103 } | 95 } |
104 | 96 |
105 static CK_ULONG | 97 static CK_ULONG |
106 builtins_mdObject_GetAttributeSize | 98 builtins_mdObject_GetAttributeSize( |
107 ( | 99 NSSCKMDObject *mdObject, |
108 NSSCKMDObject *mdObject, | 100 NSSCKFWObject *fwObject, |
109 NSSCKFWObject *fwObject, | 101 NSSCKMDSession *mdSession, |
110 NSSCKMDSession *mdSession, | 102 NSSCKFWSession *fwSession, |
111 NSSCKFWSession *fwSession, | 103 NSSCKMDToken *mdToken, |
112 NSSCKMDToken *mdToken, | 104 NSSCKFWToken *fwToken, |
113 NSSCKFWToken *fwToken, | 105 NSSCKMDInstance *mdInstance, |
114 NSSCKMDInstance *mdInstance, | 106 NSSCKFWInstance *fwInstance, |
115 NSSCKFWInstance *fwInstance, | 107 CK_ATTRIBUTE_TYPE attribute, |
116 CK_ATTRIBUTE_TYPE attribute, | 108 CK_RV *pError) |
117 CK_RV *pError | |
118 ) | |
119 { | 109 { |
120 builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc; | 110 builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc; |
121 CK_ULONG i; | 111 CK_ULONG i; |
122 | 112 |
123 for( i = 0; i < io->n; i++ ) { | 113 for (i = 0; i < io->n; i++) { |
124 if( attribute == io->types[i] ) { | 114 if (attribute == io->types[i]) { |
125 return (CK_ULONG)(io->items[i].size); | 115 return (CK_ULONG)(io->items[i].size); |
| 116 } |
126 } | 117 } |
127 } | |
128 | 118 |
129 *pError = CKR_ATTRIBUTE_TYPE_INVALID; | 119 *pError = CKR_ATTRIBUTE_TYPE_INVALID; |
130 return 0; | 120 return 0; |
131 } | 121 } |
132 | 122 |
133 static NSSCKFWItem | 123 static NSSCKFWItem |
134 builtins_mdObject_GetAttribute | 124 builtins_mdObject_GetAttribute( |
135 ( | 125 NSSCKMDObject *mdObject, |
136 NSSCKMDObject *mdObject, | 126 NSSCKFWObject *fwObject, |
137 NSSCKFWObject *fwObject, | 127 NSSCKMDSession *mdSession, |
138 NSSCKMDSession *mdSession, | 128 NSSCKFWSession *fwSession, |
139 NSSCKFWSession *fwSession, | 129 NSSCKMDToken *mdToken, |
140 NSSCKMDToken *mdToken, | 130 NSSCKFWToken *fwToken, |
141 NSSCKFWToken *fwToken, | 131 NSSCKMDInstance *mdInstance, |
142 NSSCKMDInstance *mdInstance, | 132 NSSCKFWInstance *fwInstance, |
143 NSSCKFWInstance *fwInstance, | 133 CK_ATTRIBUTE_TYPE attribute, |
144 CK_ATTRIBUTE_TYPE attribute, | 134 CK_RV *pError) |
145 CK_RV *pError | |
146 ) | |
147 { | 135 { |
148 NSSCKFWItem mdItem; | 136 NSSCKFWItem mdItem; |
149 builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc; | 137 builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc; |
150 CK_ULONG i; | 138 CK_ULONG i; |
151 | 139 |
152 mdItem.needsFreeing = PR_FALSE; | 140 mdItem.needsFreeing = PR_FALSE; |
153 mdItem.item = (NSSItem*) NULL; | 141 mdItem.item = (NSSItem *)NULL; |
154 | 142 |
155 for( i = 0; i < io->n; i++ ) { | 143 for (i = 0; i < io->n; i++) { |
156 if( attribute == io->types[i] ) { | 144 if (attribute == io->types[i]) { |
157 mdItem.item = (NSSItem*) &io->items[i]; | 145 mdItem.item = (NSSItem *)&io->items[i]; |
158 return mdItem; | 146 return mdItem; |
| 147 } |
159 } | 148 } |
160 } | |
161 | 149 |
162 *pError = CKR_ATTRIBUTE_TYPE_INVALID; | 150 *pError = CKR_ATTRIBUTE_TYPE_INVALID; |
163 return mdItem; | 151 return mdItem; |
164 } | 152 } |
165 | 153 |
166 static CK_ULONG | 154 static CK_ULONG |
167 builtins_mdObject_GetObjectSize | 155 builtins_mdObject_GetObjectSize( |
168 ( | 156 NSSCKMDObject *mdObject, |
169 NSSCKMDObject *mdObject, | 157 NSSCKFWObject *fwObject, |
170 NSSCKFWObject *fwObject, | 158 NSSCKMDSession *mdSession, |
171 NSSCKMDSession *mdSession, | 159 NSSCKFWSession *fwSession, |
172 NSSCKFWSession *fwSession, | 160 NSSCKMDToken *mdToken, |
173 NSSCKMDToken *mdToken, | 161 NSSCKFWToken *fwToken, |
174 NSSCKFWToken *fwToken, | 162 NSSCKMDInstance *mdInstance, |
175 NSSCKMDInstance *mdInstance, | 163 NSSCKFWInstance *fwInstance, |
176 NSSCKFWInstance *fwInstance, | 164 CK_RV *pError) |
177 CK_RV *pError | |
178 ) | |
179 { | 165 { |
180 builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc; | 166 builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc; |
181 CK_ULONG i; | 167 CK_ULONG i; |
182 CK_ULONG rv = sizeof(CK_ULONG); | 168 CK_ULONG rv = sizeof(CK_ULONG); |
183 | 169 |
184 for( i = 0; i < io->n; i++ ) { | 170 for (i = 0; i < io->n; i++) { |
185 rv += sizeof(CK_ATTRIBUTE_TYPE) + sizeof(NSSItem) + io->items[i].size; | 171 rv += sizeof(CK_ATTRIBUTE_TYPE) + sizeof(NSSItem) + io->items[i].size; |
186 } | 172 } |
187 | 173 |
188 return rv; | 174 return rv; |
189 } | 175 } |
190 | 176 |
191 static const NSSCKMDObject | 177 static const NSSCKMDObject |
192 builtins_prototype_mdObject = { | 178 builtins_prototype_mdObject = { |
193 (void *)NULL, /* etc */ | 179 (void *)NULL, /* etc */ |
194 NULL, /* Finalize */ | 180 NULL, /* Finalize */ |
195 builtins_mdObject_Destroy, | 181 builtins_mdObject_Destroy, |
196 builtins_mdObject_IsTokenObject, | 182 builtins_mdObject_IsTokenObject, |
197 builtins_mdObject_GetAttributeCount, | 183 builtins_mdObject_GetAttributeCount, |
198 builtins_mdObject_GetAttributeTypes, | 184 builtins_mdObject_GetAttributeTypes, |
199 builtins_mdObject_GetAttributeSize, | 185 builtins_mdObject_GetAttributeSize, |
200 builtins_mdObject_GetAttribute, | 186 builtins_mdObject_GetAttribute, |
201 NULL, /* FreeAttribute */ | 187 NULL, /* FreeAttribute */ |
202 NULL, /* SetAttribute */ | 188 NULL, /* SetAttribute */ |
203 builtins_mdObject_GetObjectSize, | 189 builtins_mdObject_GetObjectSize, |
204 (void *)NULL /* null terminator */ | 190 (void *)NULL /* null terminator */ |
205 }; | 191 }; |
206 | 192 |
207 NSS_IMPLEMENT NSSCKMDObject * | 193 NSS_IMPLEMENT NSSCKMDObject * |
208 nss_builtins_CreateMDObject | 194 nss_builtins_CreateMDObject( |
209 ( | 195 NSSArena *arena, |
210 NSSArena *arena, | 196 builtinsInternalObject *io, |
211 builtinsInternalObject *io, | 197 CK_RV *pError) |
212 CK_RV *pError | |
213 ) | |
214 { | 198 { |
215 if ( (void*)NULL == io->mdObject.etc) { | 199 if ((void *)NULL == io->mdObject.etc) { |
216 (void) nsslibc_memcpy(&io->mdObject,&builtins_prototype_mdObject, | 200 (void)nsslibc_memcpy(&io->mdObject, &builtins_prototype_mdObject, |
217 » » » » » sizeof(builtins_prototype_mdObject)); | 201 sizeof(builtins_prototype_mdObject)); |
218 io->mdObject.etc = (void *)io; | 202 io->mdObject.etc = (void *)io; |
219 } | 203 } |
220 | 204 |
221 return &io->mdObject; | 205 return &io->mdObject; |
222 } | 206 } |
OLD | NEW |