Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(402)

Side by Side Diff: nss/lib/ckfw/builtins/bobject.c

Issue 2078763002: Delete bundled copy of NSS and replace with README. (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/nss@master
Patch Set: Delete bundled copy of NSS and replace with README. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « nss/lib/ckfw/builtins/binst.c ('k') | nss/lib/ckfw/builtins/bsession.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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 "builtins.h"
6
7 /*
8 * builtins/object.c
9 *
10 * This file implements the NSSCKMDObject object for the
11 * "builtin objects" cryptoki module.
12 */
13
14 /*
15 * Finalize - unneeded
16 * Destroy - CKR_SESSION_READ_ONLY
17 * IsTokenObject - CK_TRUE
18 * GetAttributeCount
19 * GetAttributeTypes
20 * GetAttributeSize
21 * GetAttribute
22 * SetAttribute - unneeded
23 * GetObjectSize
24 */
25
26 static CK_RV
27 builtins_mdObject_Destroy(
28 NSSCKMDObject *mdObject,
29 NSSCKFWObject *fwObject,
30 NSSCKMDSession *mdSession,
31 NSSCKFWSession *fwSession,
32 NSSCKMDToken *mdToken,
33 NSSCKFWToken *fwToken,
34 NSSCKMDInstance *mdInstance,
35 NSSCKFWInstance *fwInstance)
36 {
37 return CKR_SESSION_READ_ONLY;
38 }
39
40 static CK_BBOOL
41 builtins_mdObject_IsTokenObject(
42 NSSCKMDObject *mdObject,
43 NSSCKFWObject *fwObject,
44 NSSCKMDSession *mdSession,
45 NSSCKFWSession *fwSession,
46 NSSCKMDToken *mdToken,
47 NSSCKFWToken *fwToken,
48 NSSCKMDInstance *mdInstance,
49 NSSCKFWInstance *fwInstance)
50 {
51 return CK_TRUE;
52 }
53
54 static CK_ULONG
55 builtins_mdObject_GetAttributeCount(
56 NSSCKMDObject *mdObject,
57 NSSCKFWObject *fwObject,
58 NSSCKMDSession *mdSession,
59 NSSCKFWSession *fwSession,
60 NSSCKMDToken *mdToken,
61 NSSCKFWToken *fwToken,
62 NSSCKMDInstance *mdInstance,
63 NSSCKFWInstance *fwInstance,
64 CK_RV *pError)
65 {
66 builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc;
67 return io->n;
68 }
69
70 static CK_RV
71 builtins_mdObject_GetAttributeTypes(
72 NSSCKMDObject *mdObject,
73 NSSCKFWObject *fwObject,
74 NSSCKMDSession *mdSession,
75 NSSCKFWSession *fwSession,
76 NSSCKMDToken *mdToken,
77 NSSCKFWToken *fwToken,
78 NSSCKMDInstance *mdInstance,
79 NSSCKFWInstance *fwInstance,
80 CK_ATTRIBUTE_TYPE_PTR typeArray,
81 CK_ULONG ulCount)
82 {
83 builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc;
84 CK_ULONG i;
85
86 if (io->n != ulCount) {
87 return CKR_BUFFER_TOO_SMALL;
88 }
89
90 for (i = 0; i < io->n; i++) {
91 typeArray[i] = io->types[i];
92 }
93
94 return CKR_OK;
95 }
96
97 static CK_ULONG
98 builtins_mdObject_GetAttributeSize(
99 NSSCKMDObject *mdObject,
100 NSSCKFWObject *fwObject,
101 NSSCKMDSession *mdSession,
102 NSSCKFWSession *fwSession,
103 NSSCKMDToken *mdToken,
104 NSSCKFWToken *fwToken,
105 NSSCKMDInstance *mdInstance,
106 NSSCKFWInstance *fwInstance,
107 CK_ATTRIBUTE_TYPE attribute,
108 CK_RV *pError)
109 {
110 builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc;
111 CK_ULONG i;
112
113 for (i = 0; i < io->n; i++) {
114 if (attribute == io->types[i]) {
115 return (CK_ULONG)(io->items[i].size);
116 }
117 }
118
119 *pError = CKR_ATTRIBUTE_TYPE_INVALID;
120 return 0;
121 }
122
123 static NSSCKFWItem
124 builtins_mdObject_GetAttribute(
125 NSSCKMDObject *mdObject,
126 NSSCKFWObject *fwObject,
127 NSSCKMDSession *mdSession,
128 NSSCKFWSession *fwSession,
129 NSSCKMDToken *mdToken,
130 NSSCKFWToken *fwToken,
131 NSSCKMDInstance *mdInstance,
132 NSSCKFWInstance *fwInstance,
133 CK_ATTRIBUTE_TYPE attribute,
134 CK_RV *pError)
135 {
136 NSSCKFWItem mdItem;
137 builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc;
138 CK_ULONG i;
139
140 mdItem.needsFreeing = PR_FALSE;
141 mdItem.item = (NSSItem *)NULL;
142
143 for (i = 0; i < io->n; i++) {
144 if (attribute == io->types[i]) {
145 mdItem.item = (NSSItem *)&io->items[i];
146 return mdItem;
147 }
148 }
149
150 *pError = CKR_ATTRIBUTE_TYPE_INVALID;
151 return mdItem;
152 }
153
154 static CK_ULONG
155 builtins_mdObject_GetObjectSize(
156 NSSCKMDObject *mdObject,
157 NSSCKFWObject *fwObject,
158 NSSCKMDSession *mdSession,
159 NSSCKFWSession *fwSession,
160 NSSCKMDToken *mdToken,
161 NSSCKFWToken *fwToken,
162 NSSCKMDInstance *mdInstance,
163 NSSCKFWInstance *fwInstance,
164 CK_RV *pError)
165 {
166 builtinsInternalObject *io = (builtinsInternalObject *)mdObject->etc;
167 CK_ULONG i;
168 CK_ULONG rv = sizeof(CK_ULONG);
169
170 for (i = 0; i < io->n; i++) {
171 rv += sizeof(CK_ATTRIBUTE_TYPE) + sizeof(NSSItem) + io->items[i].size;
172 }
173
174 return rv;
175 }
176
177 static const NSSCKMDObject
178 builtins_prototype_mdObject = {
179 (void *)NULL, /* etc */
180 NULL, /* Finalize */
181 builtins_mdObject_Destroy,
182 builtins_mdObject_IsTokenObject,
183 builtins_mdObject_GetAttributeCount,
184 builtins_mdObject_GetAttributeTypes,
185 builtins_mdObject_GetAttributeSize,
186 builtins_mdObject_GetAttribute,
187 NULL, /* FreeAttribute */
188 NULL, /* SetAttribute */
189 builtins_mdObject_GetObjectSize,
190 (void *)NULL /* null terminator */
191 };
192
193 NSS_IMPLEMENT NSSCKMDObject *
194 nss_builtins_CreateMDObject(
195 NSSArena *arena,
196 builtinsInternalObject *io,
197 CK_RV *pError)
198 {
199 if ((void *)NULL == io->mdObject.etc) {
200 (void)nsslibc_memcpy(&io->mdObject, &builtins_prototype_mdObject,
201 sizeof(builtins_prototype_mdObject));
202 io->mdObject.etc = (void *)io;
203 }
204
205 return &io->mdObject;
206 }
OLDNEW
« no previous file with comments | « nss/lib/ckfw/builtins/binst.c ('k') | nss/lib/ckfw/builtins/bsession.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698