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

Side by Side Diff: nss/lib/softoken/sftkpars.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/softoken/sftkpars.h ('k') | nss/lib/softoken/sftkpwd.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 * The following code handles the storage of PKCS 11 modules used by the
6 * NSS. This file is written to abstract away how the modules are
7 * stored so we can deside that later.
8 */
9 #include "pkcs11i.h"
10 #include "sdb.h"
11 #include "prprf.h"
12 #include "prenv.h"
13 #include "utilpars.h"
14
15 #define FREE_CLEAR(p) if (p) { PORT_Free(p); p = NULL; }
16
17 static void
18 sftk_parseTokenFlags(char *tmp, sftk_token_parameters *parsed) {
19 parsed->readOnly = NSSUTIL_ArgHasFlag("flags","readOnly",tmp);
20 parsed->noCertDB = NSSUTIL_ArgHasFlag("flags","noCertDB",tmp);
21 parsed->noKeyDB = NSSUTIL_ArgHasFlag("flags","noKeyDB",tmp);
22 parsed->forceOpen = NSSUTIL_ArgHasFlag("flags","forceOpen",tmp);
23 parsed->pwRequired = NSSUTIL_ArgHasFlag("flags","passwordRequired",tmp);
24 parsed->optimizeSpace = NSSUTIL_ArgHasFlag("flags","optimizeSpace",tmp);
25 return;
26 }
27
28 static void
29 sftk_parseFlags(char *tmp, sftk_parameters *parsed) {
30 parsed->noModDB = NSSUTIL_ArgHasFlag("flags","noModDB",tmp);
31 parsed->readOnly = NSSUTIL_ArgHasFlag("flags","readOnly",tmp);
32 /* keep legacy interface working */
33 parsed->noCertDB = NSSUTIL_ArgHasFlag("flags","noCertDB",tmp);
34 parsed->forceOpen = NSSUTIL_ArgHasFlag("flags","forceOpen",tmp);
35 parsed->pwRequired = NSSUTIL_ArgHasFlag("flags","passwordRequired",tmp);
36 parsed->optimizeSpace = NSSUTIL_ArgHasFlag("flags","optimizeSpace",tmp);
37 return;
38 }
39
40 static CK_RV
41 sftk_parseTokenParameters(char *param, sftk_token_parameters *parsed)
42 {
43 int next;
44 char *tmp = NULL;
45 const char *index;
46 index = NSSUTIL_ArgStrip(param);
47
48 while (*index) {
49 NSSUTIL_HANDLE_STRING_ARG(index,parsed->configdir,"configDir=",;)
50 NSSUTIL_HANDLE_STRING_ARG(index,parsed->updatedir,"updateDir=",;)
51 NSSUTIL_HANDLE_STRING_ARG(index,parsed->updCertPrefix,
52 "updateCertPrefix=",;)
53 NSSUTIL_HANDLE_STRING_ARG(index,parsed->updKeyPrefix,
54 "updateKeyPrefix=",;)
55 NSSUTIL_HANDLE_STRING_ARG(index,parsed->updateID,"updateID=",;)
56 NSSUTIL_HANDLE_STRING_ARG(index,parsed->certPrefix,"certPrefix=",;)
57 NSSUTIL_HANDLE_STRING_ARG(index,parsed->keyPrefix,"keyPrefix=",;)
58 NSSUTIL_HANDLE_STRING_ARG(index,parsed->tokdes,"tokenDescription=",;)
59 NSSUTIL_HANDLE_STRING_ARG(index,parsed->updtokdes,
60 "updateTokenDescription=",;)
61 NSSUTIL_HANDLE_STRING_ARG(index,parsed->slotdes,"slotDescription=",;)
62 NSSUTIL_HANDLE_STRING_ARG(index,tmp,"minPWLen=",
63 if(tmp) { parsed->minPW=atoi(tmp); PORT_Free(tmp); tmp = NULL; })
64 NSSUTIL_HANDLE_STRING_ARG(index,tmp,"flags=",
65 if(tmp) { sftk_parseTokenFlags(param,parsed); PORT_Free(tmp);
66 tmp = NULL; })
67 NSSUTIL_HANDLE_FINAL_ARG(index)
68 }
69 return CKR_OK;
70 }
71
72 static void
73 sftk_parseTokens(char *tokenParams, sftk_parameters *parsed)
74 {
75 const char *tokenIndex;
76 sftk_token_parameters *tokens = NULL;
77 int i=0,count = 0,next;
78
79 if ((tokenParams == NULL) || (*tokenParams == 0)) return;
80
81 /* first count the number of slots */
82 for (tokenIndex = NSSUTIL_ArgStrip(tokenParams); *tokenIndex;
83 tokenIndex = NSSUTIL_ArgStrip(NSSUTIL_ArgSkipParameter(tokenIndex))) {
84 count++;
85 }
86
87 /* get the data structures */
88 tokens = (sftk_token_parameters *)
89 PORT_ZAlloc(count*sizeof(sftk_token_parameters));
90 if (tokens == NULL) return;
91
92 for (tokenIndex = NSSUTIL_ArgStrip(tokenParams), i = 0;
93 *tokenIndex && i < count ; i++ ) {
94 char *name;
95 name = NSSUTIL_ArgGetLabel(tokenIndex,&next);
96 tokenIndex += next;
97
98 tokens[i].slotID = NSSUTIL_ArgDecodeNumber(name);
99 tokens[i].readOnly = PR_FALSE;
100 tokens[i].noCertDB = PR_FALSE;
101 tokens[i].noKeyDB = PR_FALSE;
102 if (!NSSUTIL_ArgIsBlank(*tokenIndex)) {
103 char *args = NSSUTIL_ArgFetchValue(tokenIndex,&next);
104 tokenIndex += next;
105 if (args) {
106 sftk_parseTokenParameters(args,&tokens[i]);
107 PORT_Free(args);
108 }
109 }
110 if (name) PORT_Free(name);
111 tokenIndex = NSSUTIL_ArgStrip(tokenIndex);
112 }
113 parsed->token_count = i;
114 parsed->tokens = tokens;
115 return;
116 }
117
118 CK_RV
119 sftk_parseParameters(char *param, sftk_parameters *parsed, PRBool isFIPS)
120 {
121 int next;
122 char *tmp = NULL;
123 const char *index;
124 char *certPrefix = NULL, *keyPrefix = NULL;
125 char *tokdes = NULL, *ptokdes = NULL, *pupdtokdes = NULL;
126 char *slotdes = NULL, *pslotdes = NULL;
127 char *fslotdes = NULL, *ftokdes = NULL;
128 char *minPW = NULL;
129 index = NSSUTIL_ArgStrip(param);
130
131 PORT_Memset(parsed, 0, sizeof(sftk_parameters));
132
133 while (*index) {
134 NSSUTIL_HANDLE_STRING_ARG(index,parsed->configdir,"configDir=",;)
135 NSSUTIL_HANDLE_STRING_ARG(index,parsed->updatedir,"updateDir=",;)
136 NSSUTIL_HANDLE_STRING_ARG(index,parsed->updateID,"updateID=",;)
137 NSSUTIL_HANDLE_STRING_ARG(index,parsed->secmodName,"secmod=",;)
138 NSSUTIL_HANDLE_STRING_ARG(index,parsed->man,"manufacturerID=",;)
139 NSSUTIL_HANDLE_STRING_ARG(index,parsed->libdes,"libraryDescription=",;)
140 /* constructed values, used so legacy interfaces still work */
141 NSSUTIL_HANDLE_STRING_ARG(index,certPrefix,"certPrefix=",;)
142 NSSUTIL_HANDLE_STRING_ARG(index,keyPrefix,"keyPrefix=",;)
143 NSSUTIL_HANDLE_STRING_ARG(index,tokdes,"cryptoTokenDescription=",;)
144 NSSUTIL_HANDLE_STRING_ARG(index,ptokdes,"dbTokenDescription=",;)
145 NSSUTIL_HANDLE_STRING_ARG(index,slotdes,"cryptoSlotDescription=",;)
146 NSSUTIL_HANDLE_STRING_ARG(index,pslotdes,"dbSlotDescription=",;)
147 NSSUTIL_HANDLE_STRING_ARG(index,fslotdes,"FIPSSlotDescription=",;)
148 NSSUTIL_HANDLE_STRING_ARG(index,ftokdes,"FIPSTokenDescription=",;)
149 NSSUTIL_HANDLE_STRING_ARG(index,pupdtokdes, "updateTokenDescription=",;)
150 NSSUTIL_HANDLE_STRING_ARG(index,minPW,"minPWLen=",;)
151
152 NSSUTIL_HANDLE_STRING_ARG(index,tmp,"flags=",
153 if(tmp) { sftk_parseFlags(param,parsed); PORT_Free(tmp);
154 tmp = NULL; })
155 NSSUTIL_HANDLE_STRING_ARG(index,tmp,"tokens=",
156 if(tmp) { sftk_parseTokens(tmp,parsed); PORT_Free(tmp); tmp = NULL; })
157 NSSUTIL_HANDLE_FINAL_ARG(index)
158 }
159 if (parsed->tokens == NULL) {
160 int count = isFIPS ? 1 : 2;
161 int index = count-1;
162 sftk_token_parameters *tokens = NULL;
163
164 tokens = (sftk_token_parameters *)
165 PORT_ZAlloc(count*sizeof(sftk_token_parameters));
166 if (tokens == NULL) {
167 goto loser;
168 }
169 parsed->tokens = tokens;
170 parsed->token_count = count;
171 tokens[index].slotID = isFIPS ? FIPS_SLOT_ID : PRIVATE_KEY_SLOT_ID;
172 tokens[index].certPrefix = certPrefix;
173 tokens[index].keyPrefix = keyPrefix;
174 tokens[index].minPW = minPW ? atoi(minPW) : 0;
175 tokens[index].readOnly = parsed->readOnly;
176 tokens[index].noCertDB = parsed->noCertDB;
177 tokens[index].noKeyDB = parsed->noCertDB;
178 tokens[index].forceOpen = parsed->forceOpen;
179 tokens[index].pwRequired = parsed->pwRequired;
180 tokens[index].optimizeSpace = parsed->optimizeSpace;
181 tokens[0].optimizeSpace = parsed->optimizeSpace;
182 certPrefix = NULL;
183 keyPrefix = NULL;
184 if (isFIPS) {
185 tokens[index].tokdes = ftokdes;
186 tokens[index].updtokdes = pupdtokdes;
187 tokens[index].slotdes = fslotdes;
188 fslotdes = NULL;
189 ftokdes = NULL;
190 pupdtokdes = NULL;
191 } else {
192 tokens[index].tokdes = ptokdes;
193 tokens[index].updtokdes = pupdtokdes;
194 tokens[index].slotdes = pslotdes;
195 tokens[0].slotID = NETSCAPE_SLOT_ID;
196 tokens[0].tokdes = tokdes;
197 tokens[0].slotdes = slotdes;
198 tokens[0].noCertDB = PR_TRUE;
199 tokens[0].noKeyDB = PR_TRUE;
200 pupdtokdes = NULL;
201 ptokdes = NULL;
202 pslotdes = NULL;
203 tokdes = NULL;
204 slotdes = NULL;
205 }
206 }
207
208 loser:
209 FREE_CLEAR(certPrefix);
210 FREE_CLEAR(keyPrefix);
211 FREE_CLEAR(tokdes);
212 FREE_CLEAR(ptokdes);
213 FREE_CLEAR(pupdtokdes);
214 FREE_CLEAR(slotdes);
215 FREE_CLEAR(pslotdes);
216 FREE_CLEAR(fslotdes);
217 FREE_CLEAR(ftokdes);
218 FREE_CLEAR(minPW);
219 return CKR_OK;
220 }
221
222 void
223 sftk_freeParams(sftk_parameters *params)
224 {
225 int i;
226
227 for (i=0; i < params->token_count; i++) {
228 FREE_CLEAR(params->tokens[i].configdir);
229 FREE_CLEAR(params->tokens[i].certPrefix);
230 FREE_CLEAR(params->tokens[i].keyPrefix);
231 FREE_CLEAR(params->tokens[i].tokdes);
232 FREE_CLEAR(params->tokens[i].slotdes);
233 FREE_CLEAR(params->tokens[i].updatedir);
234 FREE_CLEAR(params->tokens[i].updCertPrefix);
235 FREE_CLEAR(params->tokens[i].updKeyPrefix);
236 FREE_CLEAR(params->tokens[i].updateID);
237 FREE_CLEAR(params->tokens[i].updtokdes);
238 }
239
240 FREE_CLEAR(params->configdir);
241 FREE_CLEAR(params->secmodName);
242 FREE_CLEAR(params->man);
243 FREE_CLEAR(params->libdes);
244 FREE_CLEAR(params->tokens);
245 FREE_CLEAR(params->updatedir);
246 FREE_CLEAR(params->updateID);
247 }
248
OLDNEW
« no previous file with comments | « nss/lib/softoken/sftkpars.h ('k') | nss/lib/softoken/sftkpwd.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698