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 * The following code handles the storage of PKCS 11 modules used by the | 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 | 6 * NSS. This file is written to abstract away how the modules are |
7 * stored so we can decide that later. | 7 * stored so we can decide that later. |
8 */ | 8 */ |
9 #include "secport.h" | 9 #include "secport.h" |
10 #include "prprf.h" | 10 #include "prprf.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 case '\"': | 42 case '\"': |
43 case '<': | 43 case '<': |
44 case '{': /* } end curly to keep vi bracket matching working */ | 44 case '{': /* } end curly to keep vi bracket matching working */ |
45 case '(': /* ) */ | 45 case '(': /* ) */ |
46 case '[': /* ] */ return PR_TRUE; | 46 case '[': /* ] */ return PR_TRUE; |
47 default: break; | 47 default: break; |
48 } | 48 } |
49 return PR_FALSE; | 49 return PR_FALSE; |
50 } | 50 } |
51 | 51 |
52 char *NSSUTIL_ArgStrip(char *c) { | 52 const char *NSSUTIL_ArgStrip(const char *c) { |
53 while (*c && NSSUTIL_ArgIsBlank(*c)) c++; | 53 while (*c && NSSUTIL_ArgIsBlank(*c)) c++; |
54 return c; | 54 return c; |
55 } | 55 } |
56 | 56 |
57 /* | 57 /* |
58 * find the end of the current tag/value pair. string should be pointing just | 58 * find the end of the current tag/value pair. string should be pointing just |
59 * after the equal sign. Handles quoted characters. | 59 * after the equal sign. Handles quoted characters. |
60 */ | 60 */ |
61 char * | 61 const char * |
62 NSSUTIL_ArgFindEnd(char *string) { | 62 NSSUTIL_ArgFindEnd(const char *string) { |
63 char endChar = ' '; | 63 char endChar = ' '; |
64 PRBool lastEscape = PR_FALSE; | 64 PRBool lastEscape = PR_FALSE; |
65 | 65 |
66 if (NSSUTIL_ArgIsQuote(*string)) { | 66 if (NSSUTIL_ArgIsQuote(*string)) { |
67 endChar = NSSUTIL_ArgGetPair(*string); | 67 endChar = NSSUTIL_ArgGetPair(*string); |
68 string++; | 68 string++; |
69 } | 69 } |
70 | 70 |
71 for (;*string; string++) { | 71 for (;*string; string++) { |
72 if (lastEscape) { | 72 if (lastEscape) { |
(...skipping 11 matching lines...) Expand all Loading... |
84 } | 84 } |
85 | 85 |
86 return string; | 86 return string; |
87 } | 87 } |
88 | 88 |
89 /* | 89 /* |
90 * get the value pointed to by string. string should be pointing just beyond | 90 * get the value pointed to by string. string should be pointing just beyond |
91 * the equal sign. | 91 * the equal sign. |
92 */ | 92 */ |
93 char * | 93 char * |
94 NSSUTIL_ArgFetchValue(char *string, int *pcount) | 94 NSSUTIL_ArgFetchValue(const char *string, int *pcount) |
95 { | 95 { |
96 char *end = NSSUTIL_ArgFindEnd(string); | 96 const char *end = NSSUTIL_ArgFindEnd(string); |
97 char *retString, *copyString; | 97 char *retString, *copyString; |
98 PRBool lastEscape = PR_FALSE; | 98 PRBool lastEscape = PR_FALSE; |
99 int len; | 99 int len; |
100 | 100 |
101 len = end - string; | 101 len = end - string; |
102 if (len == 0) { | 102 if (len == 0) { |
103 *pcount = 0; | 103 *pcount = 0; |
104 return NULL; | 104 return NULL; |
105 } | 105 } |
106 | 106 |
(...skipping 13 matching lines...) Expand all Loading... |
120 lastEscape = PR_FALSE; | 120 lastEscape = PR_FALSE; |
121 *copyString++ = *string; | 121 *copyString++ = *string; |
122 } | 122 } |
123 *copyString = 0; | 123 *copyString = 0; |
124 return retString; | 124 return retString; |
125 } | 125 } |
126 | 126 |
127 /* | 127 /* |
128 * point to the next parameter in string | 128 * point to the next parameter in string |
129 */ | 129 */ |
130 char * | 130 const char * |
131 NSSUTIL_ArgSkipParameter(char *string) | 131 NSSUTIL_ArgSkipParameter(const char *string) |
132 { | 132 { |
133 char *end; | 133 const char *end; |
134 /* look for the end of the <name>= */ | 134 /* look for the end of the <name>= */ |
135 for (;*string; string++) { | 135 for (;*string; string++) { |
136 if (*string == '=') { string++; break; } | 136 if (*string == '=') { string++; break; } |
137 if (NSSUTIL_ArgIsBlank(*string)) return(string); | 137 if (NSSUTIL_ArgIsBlank(*string)) return(string); |
138 } | 138 } |
139 | 139 |
140 end = NSSUTIL_ArgFindEnd(string); | 140 end = NSSUTIL_ArgFindEnd(string); |
141 if (*end) end++; | 141 if (*end) end++; |
142 return end; | 142 return end; |
143 } | 143 } |
144 | 144 |
145 /* | 145 /* |
146 * get the value from that tag value pair. | 146 * get the value from that tag value pair. |
147 */ | 147 */ |
148 char * | 148 char * |
149 NSSUTIL_ArgGetParamValue(char *paramName,char *parameters) | 149 NSSUTIL_ArgGetParamValue(const char *paramName, const char *parameters) |
150 { | 150 { |
151 char searchValue[256]; | 151 char searchValue[256]; |
152 int paramLen = strlen(paramName); | 152 int paramLen = strlen(paramName); |
153 char *returnValue = NULL; | 153 char *returnValue = NULL; |
154 int next; | 154 int next; |
155 | 155 |
156 if ((parameters == NULL) || (*parameters == 0)) return NULL; | 156 if ((parameters == NULL) || (*parameters == 0)) return NULL; |
157 | 157 |
158 PORT_Assert(paramLen+2 < sizeof(searchValue)); | 158 PORT_Assert(paramLen+2 < sizeof(searchValue)); |
159 | 159 |
160 PORT_Strcpy(searchValue,paramName); | 160 PORT_Strcpy(searchValue,paramName); |
161 PORT_Strcat(searchValue,"="); | 161 PORT_Strcat(searchValue,"="); |
162 while (*parameters) { | 162 while (*parameters) { |
163 if (PORT_Strncasecmp(parameters,searchValue,paramLen+1) == 0) { | 163 if (PORT_Strncasecmp(parameters,searchValue,paramLen+1) == 0) { |
164 parameters += paramLen+1; | 164 parameters += paramLen+1; |
165 returnValue = NSSUTIL_ArgFetchValue(parameters,&next); | 165 returnValue = NSSUTIL_ArgFetchValue(parameters,&next); |
166 break; | 166 break; |
167 } else { | 167 } else { |
168 parameters = NSSUTIL_ArgSkipParameter(parameters); | 168 parameters = NSSUTIL_ArgSkipParameter(parameters); |
169 } | 169 } |
170 parameters = NSSUTIL_ArgStrip(parameters); | 170 parameters = NSSUTIL_ArgStrip(parameters); |
171 } | 171 } |
172 return returnValue; | 172 return returnValue; |
173 } | 173 } |
174 | 174 |
175 /* | 175 /* |
176 * find the next flag in the parameter list | 176 * find the next flag in the parameter list |
177 */ | 177 */ |
178 char * | 178 const char * |
179 NSSUTIL_ArgNextFlag(char *flags) | 179 NSSUTIL_ArgNextFlag(const char *flags) |
180 { | 180 { |
181 for (; *flags ; flags++) { | 181 for (; *flags ; flags++) { |
182 if (*flags == ',') { | 182 if (*flags == ',') { |
183 flags++; | 183 flags++; |
184 break; | 184 break; |
185 } | 185 } |
186 } | 186 } |
187 return flags; | 187 return flags; |
188 } | 188 } |
189 | 189 |
190 /* | 190 /* |
191 * return true if the flag is set in the label parameter. | 191 * return true if the flag is set in the label parameter. |
192 */ | 192 */ |
193 PRBool | 193 PRBool |
194 NSSUTIL_ArgHasFlag(char *label, char *flag, char *parameters) | 194 NSSUTIL_ArgHasFlag(const char *label, const char *flag, const char *parameters) |
195 { | 195 { |
196 char *flags,*index; | 196 char *flags; |
| 197 const char *index; |
197 int len = strlen(flag); | 198 int len = strlen(flag); |
198 PRBool found = PR_FALSE; | 199 PRBool found = PR_FALSE; |
199 | 200 |
200 flags = NSSUTIL_ArgGetParamValue(label,parameters); | 201 flags = NSSUTIL_ArgGetParamValue(label,parameters); |
201 if (flags == NULL) return PR_FALSE; | 202 if (flags == NULL) return PR_FALSE; |
202 | 203 |
203 for (index=flags; *index; index=NSSUTIL_ArgNextFlag(index)) { | 204 for (index=flags; *index; index=NSSUTIL_ArgNextFlag(index)) { |
204 if (PORT_Strncasecmp(index,flag,len) == 0) { | 205 if (PORT_Strncasecmp(index,flag,len) == 0) { |
205 found=PR_TRUE; | 206 found=PR_TRUE; |
206 break; | 207 break; |
207 } | 208 } |
208 } | 209 } |
209 PORT_Free(flags); | 210 PORT_Free(flags); |
210 return found; | 211 return found; |
211 } | 212 } |
212 | 213 |
213 /* | 214 /* |
214 * decode a number. handle octal (leading '0'), hex (leading '0x') or decimal | 215 * decode a number. handle octal (leading '0'), hex (leading '0x') or decimal |
215 */ | 216 */ |
216 long | 217 long |
217 NSSUTIL_ArgDecodeNumber(char *num) | 218 NSSUTIL_ArgDecodeNumber(const char *num) |
218 { | 219 { |
219 int radix = 10; | 220 int radix = 10; |
220 unsigned long value = 0; | 221 unsigned long value = 0; |
221 long retValue = 0; | 222 long retValue = 0; |
222 int sign = 1; | 223 int sign = 1; |
223 int digit; | 224 int digit; |
224 | 225 |
225 if (num == NULL) return retValue; | 226 if (num == NULL) return retValue; |
226 | 227 |
227 num = NSSUTIL_ArgStrip(num); | 228 num = NSSUTIL_ArgStrip(num); |
(...skipping 29 matching lines...) Expand all Loading... |
257 | 258 |
258 retValue = ((int) value) * sign; | 259 retValue = ((int) value) * sign; |
259 return retValue; | 260 return retValue; |
260 } | 261 } |
261 | 262 |
262 /* | 263 /* |
263 * parameters are tag value pairs. This function returns the tag or label (the | 264 * parameters are tag value pairs. This function returns the tag or label (the |
264 * value before the equal size. | 265 * value before the equal size. |
265 */ | 266 */ |
266 char * | 267 char * |
267 NSSUTIL_ArgGetLabel(char *inString, int *next) | 268 NSSUTIL_ArgGetLabel(const char *inString, int *next) |
268 { | 269 { |
269 char *name=NULL; | 270 char *name=NULL; |
270 char *string; | 271 const char *string; |
271 int len; | 272 int len; |
272 | 273 |
273 /* look for the end of the <label>= */ | 274 /* look for the end of the <label>= */ |
274 for (string = inString;*string; string++) { | 275 for (string = inString;*string; string++) { |
275 if (*string == '=') { break; } | 276 if (*string == '=') { break; } |
276 if (NSSUTIL_ArgIsBlank(*string)) break; | 277 if (NSSUTIL_ArgIsBlank(*string)) break; |
277 } | 278 } |
278 | 279 |
279 len = string - inString; | 280 len = string - inString; |
280 | 281 |
281 *next = len; | 282 *next = len; |
282 if (*string == '=') (*next) += 1; | 283 if (*string == '=') (*next) += 1; |
283 if (len > 0) { | 284 if (len > 0) { |
284 name = PORT_Alloc(len+1); | 285 name = PORT_Alloc(len+1); |
285 PORT_Strncpy(name,inString,len); | 286 PORT_Strncpy(name,inString,len); |
286 name[len] = 0; | 287 name[len] = 0; |
287 } | 288 } |
288 return name; | 289 return name; |
289 } | 290 } |
290 | 291 |
291 /* | 292 /* |
292 * read an argument at a Long integer | 293 * read an argument at a Long integer |
293 */ | 294 */ |
294 long | 295 long |
295 NSSUTIL_ArgReadLong(char *label,char *params, long defValue, PRBool *isdefault) | 296 NSSUTIL_ArgReadLong(const char *label, const char *params, |
| 297 » » long defValue, PRBool *isdefault) |
296 { | 298 { |
297 char *value; | 299 char *value; |
298 long retValue; | 300 long retValue; |
299 if (isdefault) *isdefault = PR_FALSE; | 301 if (isdefault) *isdefault = PR_FALSE; |
300 | 302 |
301 value = NSSUTIL_ArgGetParamValue(label,params); | 303 value = NSSUTIL_ArgGetParamValue(label, params); |
302 if (value == NULL) { | 304 if (value == NULL) { |
303 if (isdefault) *isdefault = PR_TRUE; | 305 if (isdefault) *isdefault = PR_TRUE; |
304 return defValue; | 306 return defValue; |
305 } | 307 } |
306 retValue = NSSUTIL_ArgDecodeNumber(value); | 308 retValue = NSSUTIL_ArgDecodeNumber(value); |
307 if (value) PORT_Free(value); | 309 if (value) PORT_Free(value); |
308 | 310 |
309 return retValue; | 311 return retValue; |
310 } | 312 } |
311 | 313 |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
556 NSSUTIL_ARG_ENTRY(RANDOM,SECMOD_RANDOM_FLAG), | 558 NSSUTIL_ARG_ENTRY(RANDOM,SECMOD_RANDOM_FLAG), |
557 NSSUTIL_ARG_ENTRY(Disable, SECMOD_DISABLE_FLAG), | 559 NSSUTIL_ARG_ENTRY(Disable, SECMOD_DISABLE_FLAG), |
558 }; | 560 }; |
559 | 561 |
560 static int nssutil_argSlotFlagTableSize = | 562 static int nssutil_argSlotFlagTableSize = |
561 sizeof(nssutil_argSlotFlagTable)/sizeof(nssutil_argSlotFlagTable[0]); | 563 sizeof(nssutil_argSlotFlagTable)/sizeof(nssutil_argSlotFlagTable[0]); |
562 | 564 |
563 | 565 |
564 /* turn the slot flags into a bit mask */ | 566 /* turn the slot flags into a bit mask */ |
565 unsigned long | 567 unsigned long |
566 NSSUTIL_ArgParseSlotFlags(char *label,char *params) | 568 NSSUTIL_ArgParseSlotFlags(const char *label, const char *params) |
567 { | 569 { |
568 char *flags,*index; | 570 char *flags; |
| 571 const char *index; |
569 unsigned long retValue = 0; | 572 unsigned long retValue = 0; |
570 int i; | 573 int i; |
571 PRBool all = PR_FALSE; | 574 PRBool all = PR_FALSE; |
572 | 575 |
573 flags = NSSUTIL_ArgGetParamValue(label,params); | 576 flags = NSSUTIL_ArgGetParamValue(label,params); |
574 if (flags == NULL) return 0; | 577 if (flags == NULL) return 0; |
575 | 578 |
576 if (PORT_Strcasecmp(flags,"all") == 0) all = PR_TRUE; | 579 if (PORT_Strcasecmp(flags,"all") == 0) all = PR_TRUE; |
577 | 580 |
578 for (index=flags; *index; index=NSSUTIL_ArgNextFlag(index)) { | 581 for (index=flags; *index; index=NSSUTIL_ArgNextFlag(index)) { |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
613 slotInfo->defaultFlags |= PK11_OWN_PW_DEFAULTS; | 616 slotInfo->defaultFlags |= PK11_OWN_PW_DEFAULTS; |
614 } | 617 } |
615 slotInfo->hasRootCerts = NSSUTIL_ArgHasFlag("rootFlags", "hasRootCerts", | 618 slotInfo->hasRootCerts = NSSUTIL_ArgHasFlag("rootFlags", "hasRootCerts", |
616 params); | 619 params); |
617 slotInfo->hasRootTrust = NSSUTIL_ArgHasFlag("rootFlags", "hasRootTrust", | 620 slotInfo->hasRootTrust = NSSUTIL_ArgHasFlag("rootFlags", "hasRootTrust", |
618 params); | 621 params); |
619 } | 622 } |
620 | 623 |
621 /* parse all the slot specific parameters. */ | 624 /* parse all the slot specific parameters. */ |
622 struct NSSUTILPreSlotInfoStr * | 625 struct NSSUTILPreSlotInfoStr * |
623 NSSUTIL_ArgParseSlotInfo(PLArenaPool *arena, char *slotParams, int *retCount) | 626 NSSUTIL_ArgParseSlotInfo(PLArenaPool *arena, const char *slotParams, |
| 627 » » » int *retCount) |
624 { | 628 { |
625 char *slotIndex; | 629 const char *slotIndex; |
626 struct NSSUTILPreSlotInfoStr *slotInfo = NULL; | 630 struct NSSUTILPreSlotInfoStr *slotInfo = NULL; |
627 int i=0,count = 0,next; | 631 int i=0,count = 0,next; |
628 | 632 |
629 *retCount = 0; | 633 *retCount = 0; |
630 if ((slotParams == NULL) || (*slotParams == 0)) return NULL; | 634 if ((slotParams == NULL) || (*slotParams == 0)) return NULL; |
631 | 635 |
632 /* first count the number of slots */ | 636 /* first count the number of slots */ |
633 for (slotIndex = NSSUTIL_ArgStrip(slotParams); *slotIndex; | 637 for (slotIndex = NSSUTIL_ArgStrip(slotParams); *slotIndex; |
634 slotIndex = NSSUTIL_ArgStrip(NSSUTIL_ArgSkipParameter(slotIndex))) { | 638 slotIndex = NSSUTIL_ArgStrip(NSSUTIL_ArgSkipParameter(slotIndex))) { |
635 count++; | 639 count++; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
667 } | 671 } |
668 | 672 |
669 /************************************************************************ | 673 /************************************************************************ |
670 * make a new slot specific parameter | 674 * make a new slot specific parameter |
671 */ | 675 */ |
672 /* first make the slot flags */ | 676 /* first make the slot flags */ |
673 static char * | 677 static char * |
674 nssutil_mkSlotFlags(unsigned long defaultFlags) | 678 nssutil_mkSlotFlags(unsigned long defaultFlags) |
675 { | 679 { |
676 char *flags=NULL; | 680 char *flags=NULL; |
677 int i,j; | 681 unsigned int i; |
| 682 int j; |
678 | 683 |
679 for (i=0; i < sizeof(defaultFlags)*8; i++) { | 684 for (i=0; i < sizeof(defaultFlags)*8; i++) { |
680 if (defaultFlags & (1UL <<i)) { | 685 if (defaultFlags & (1UL <<i)) { |
681 char *string = NULL; | 686 char *string = NULL; |
682 | 687 |
683 for (j=0; j < nssutil_argSlotFlagTableSize; j++) { | 688 for (j=0; j < nssutil_argSlotFlagTableSize; j++) { |
684 if (nssutil_argSlotFlagTable[j].value == ( 1UL << i )) { | 689 if (nssutil_argSlotFlagTable[j].value == ( 1UL << i )) { |
685 string = nssutil_argSlotFlagTable[j].name; | 690 string = nssutil_argSlotFlagTable[j].name; |
686 break; | 691 break; |
687 } | 692 } |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
760 nssutil_freePair(rootFlagsPair); | 765 nssutil_freePair(rootFlagsPair); |
761 return slotString; | 766 return slotString; |
762 } | 767 } |
763 | 768 |
764 | 769 |
765 /************************************************************************ | 770 /************************************************************************ |
766 * Parse Full module specs into: library, commonName, module parameters, | 771 * Parse Full module specs into: library, commonName, module parameters, |
767 * and NSS specifi parameters. | 772 * and NSS specifi parameters. |
768 */ | 773 */ |
769 SECStatus | 774 SECStatus |
770 NSSUTIL_ArgParseModuleSpecEx(char *modulespec, char **lib, char **mod, | 775 NSSUTIL_ArgParseModuleSpecEx(const char *modulespec, char **lib, char **mod, |
771 char **parameters, char **nss, | 776 char **parameters, char **nss, |
772 char **config) | 777 char **config) |
773 { | 778 { |
774 int next; | 779 int next; |
775 modulespec = NSSUTIL_ArgStrip(modulespec); | 780 modulespec = NSSUTIL_ArgStrip(modulespec); |
776 | 781 |
777 *lib = *mod = *parameters = *nss = *config = 0; | 782 *lib = *mod = *parameters = *nss = *config = 0; |
778 | 783 |
779 while (*modulespec) { | 784 while (*modulespec) { |
780 NSSUTIL_HANDLE_STRING_ARG(modulespec,*lib,"library=",;) | 785 NSSUTIL_HANDLE_STRING_ARG(modulespec,*lib,"library=",;) |
781 NSSUTIL_HANDLE_STRING_ARG(modulespec,*mod,"name=",;) | 786 NSSUTIL_HANDLE_STRING_ARG(modulespec,*mod,"name=",;) |
782 NSSUTIL_HANDLE_STRING_ARG(modulespec,*parameters,"parameters=",;) | 787 NSSUTIL_HANDLE_STRING_ARG(modulespec,*parameters,"parameters=",;) |
783 NSSUTIL_HANDLE_STRING_ARG(modulespec,*nss,"nss=",;) | 788 NSSUTIL_HANDLE_STRING_ARG(modulespec,*nss,"nss=",;) |
784 NSSUTIL_HANDLE_STRING_ARG(modulespec,*config,"config=",;) | 789 NSSUTIL_HANDLE_STRING_ARG(modulespec,*config,"config=",;) |
785 NSSUTIL_HANDLE_FINAL_ARG(modulespec) | 790 NSSUTIL_HANDLE_FINAL_ARG(modulespec) |
786 } | 791 } |
787 return SECSuccess; | 792 return SECSuccess; |
788 } | 793 } |
789 | 794 |
790 /************************************************************************ | 795 /************************************************************************ |
791 * Parse Full module specs into: library, commonName, module parameters, | 796 * Parse Full module specs into: library, commonName, module parameters, |
792 * and NSS specifi parameters. | 797 * and NSS specifi parameters. |
793 */ | 798 */ |
794 SECStatus | 799 SECStatus |
795 NSSUTIL_ArgParseModuleSpec(char *modulespec, char **lib, char **mod, | 800 NSSUTIL_ArgParseModuleSpec(const char *modulespec, char **lib, char **mod, |
796 char **parameters, char **nss) | 801 char **parameters, char **nss) |
797 { | 802 { |
798 int next; | 803 int next; |
799 modulespec = NSSUTIL_ArgStrip(modulespec); | 804 modulespec = NSSUTIL_ArgStrip(modulespec); |
800 | 805 |
801 *lib = *mod = *parameters = *nss = 0; | 806 *lib = *mod = *parameters = *nss = 0; |
802 | 807 |
803 while (*modulespec) { | 808 while (*modulespec) { |
804 NSSUTIL_HANDLE_STRING_ARG(modulespec,*lib,"library=",;) | 809 NSSUTIL_HANDLE_STRING_ARG(modulespec,*lib,"library=",;) |
805 NSSUTIL_HANDLE_STRING_ARG(modulespec,*mod,"name=",;) | 810 NSSUTIL_HANDLE_STRING_ARG(modulespec,*mod,"name=",;) |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
849 { | 854 { |
850 return NSSUTIL_MkModuleSpecEx(dllName, commonName, parameters, NSS, NULL); | 855 return NSSUTIL_MkModuleSpecEx(dllName, commonName, parameters, NSS, NULL); |
851 } | 856 } |
852 | 857 |
853 | 858 |
854 #define NSSUTIL_ARG_FORTEZZA_FLAG "FORTEZZA" | 859 #define NSSUTIL_ARG_FORTEZZA_FLAG "FORTEZZA" |
855 /****************************************************************************** | 860 /****************************************************************************** |
856 * Parse the cipher flags from the NSS parameter | 861 * Parse the cipher flags from the NSS parameter |
857 */ | 862 */ |
858 void | 863 void |
859 NSSUTIL_ArgParseCipherFlags(unsigned long *newCiphers,char *cipherList) | 864 NSSUTIL_ArgParseCipherFlags(unsigned long *newCiphers, const char *cipherList) |
860 { | 865 { |
861 newCiphers[0] = newCiphers[1] = 0; | 866 newCiphers[0] = newCiphers[1] = 0; |
862 if ((cipherList == NULL) || (*cipherList == 0)) return; | 867 if ((cipherList == NULL) || (*cipherList == 0)) return; |
863 | 868 |
864 for (;*cipherList; cipherList=NSSUTIL_ArgNextFlag(cipherList)) { | 869 for (;*cipherList; cipherList=NSSUTIL_ArgNextFlag(cipherList)) { |
865 if (PORT_Strncasecmp(cipherList,NSSUTIL_ARG_FORTEZZA_FLAG, | 870 if (PORT_Strncasecmp(cipherList,NSSUTIL_ARG_FORTEZZA_FLAG, |
866 sizeof(NSSUTIL_ARG_FORTEZZA_FLAG)-1) == 0) { | 871 sizeof(NSSUTIL_ARG_FORTEZZA_FLAG)-1) == 0) { |
867 newCiphers[0] |= SECMOD_FORTEZZA_FLAG; | 872 newCiphers[0] |= SECMOD_FORTEZZA_FLAG; |
868 } | 873 } |
869 | 874 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
920 } | 925 } |
921 return flags; | 926 return flags; |
922 } | 927 } |
923 | 928 |
924 | 929 |
925 /* construct the NSS cipher flags */ | 930 /* construct the NSS cipher flags */ |
926 static char * | 931 static char * |
927 nssutil_mkCipherFlags(unsigned long ssl0, unsigned long ssl1) | 932 nssutil_mkCipherFlags(unsigned long ssl0, unsigned long ssl1) |
928 { | 933 { |
929 char *cipher = NULL; | 934 char *cipher = NULL; |
930 int i; | 935 unsigned int i; |
931 | 936 |
932 for (i=0; i < sizeof(ssl0)*8; i++) { | 937 for (i=0; i < sizeof(ssl0)*8; i++) { |
933 if (ssl0 & (1UL <<i)) { | 938 if (ssl0 & (1UL <<i)) { |
934 char *string; | 939 char *string; |
935 if ((1UL <<i) == SECMOD_FORTEZZA_FLAG) { | 940 if ((1UL <<i) == SECMOD_FORTEZZA_FLAG) { |
936 string = PR_smprintf("%s",NSSUTIL_ARG_FORTEZZA_FLAG); | 941 string = PR_smprintf("%s",NSSUTIL_ARG_FORTEZZA_FLAG); |
937 } else { | 942 } else { |
938 string = PR_smprintf("0h0x%08lx", 1UL <<i); | 943 string = PR_smprintf("0h0x%08lx", 1UL <<i); |
939 } | 944 } |
940 if (cipher) { | 945 if (cipher) { |
(...skipping 24 matching lines...) Expand all Loading... |
965 } | 970 } |
966 | 971 |
967 /* Assemble a full NSS string. */ | 972 /* Assemble a full NSS string. */ |
968 char * | 973 char * |
969 NSSUTIL_MkNSSString(char **slotStrings, int slotCount, PRBool internal, | 974 NSSUTIL_MkNSSString(char **slotStrings, int slotCount, PRBool internal, |
970 PRBool isFIPS, PRBool isModuleDB, PRBool isModuleDBOnly, | 975 PRBool isFIPS, PRBool isModuleDB, PRBool isModuleDBOnly, |
971 PRBool isCritical, unsigned long trustOrder, | 976 PRBool isCritical, unsigned long trustOrder, |
972 unsigned long cipherOrder, unsigned long ssl0, unsigned long ssl1) | 977 unsigned long cipherOrder, unsigned long ssl0, unsigned long ssl1) |
973 { | 978 { |
974 int slotLen, i; | 979 int slotLen, i; |
975 char *slotParams, *ciphers, *nss, *nssFlags, *tmp; | 980 char *slotParams, *ciphers, *nss, *nssFlags; |
| 981 const char *tmp; |
976 char *trustOrderPair,*cipherOrderPair,*slotPair,*cipherPair,*flagPair; | 982 char *trustOrderPair,*cipherOrderPair,*slotPair,*cipherPair,*flagPair; |
977 | 983 |
978 | 984 |
979 /* now let's build up the string | 985 /* now let's build up the string |
980 * first the slot infos | 986 * first the slot infos |
981 */ | 987 */ |
982 slotLen=0; | 988 slotLen=0; |
983 for (i=0; i < (int)slotCount; i++) { | 989 for (i=0; i < (int)slotCount; i++) { |
984 slotLen += PORT_Strlen(slotStrings[i])+1; | 990 slotLen += PORT_Strlen(slotStrings[i])+1; |
985 } | 991 } |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1070 dbType = NSS_DB_TYPE_SQL; | 1076 dbType = NSS_DB_TYPE_SQL; |
1071 configdir = configdir + sizeof(SQLDB) -1; | 1077 configdir = configdir + sizeof(SQLDB) -1; |
1072 } else if (PORT_Strncmp(configdir, EXTERNDB, sizeof(EXTERNDB)-1) == 0) { | 1078 } else if (PORT_Strncmp(configdir, EXTERNDB, sizeof(EXTERNDB)-1) == 0) { |
1073 dbType = NSS_DB_TYPE_EXTERN; | 1079 dbType = NSS_DB_TYPE_EXTERN; |
1074 configdir = configdir + sizeof(EXTERNDB) -1; | 1080 configdir = configdir + sizeof(EXTERNDB) -1; |
1075 } else if (PORT_Strncmp(configdir, LEGACY, sizeof(LEGACY)-1) == 0) { | 1081 } else if (PORT_Strncmp(configdir, LEGACY, sizeof(LEGACY)-1) == 0) { |
1076 dbType = NSS_DB_TYPE_LEGACY; | 1082 dbType = NSS_DB_TYPE_LEGACY; |
1077 configdir = configdir + sizeof(LEGACY) -1; | 1083 configdir = configdir + sizeof(LEGACY) -1; |
1078 } else { | 1084 } else { |
1079 /* look up the default from the environment */ | 1085 /* look up the default from the environment */ |
1080 » char *defaultType = PR_GetEnv("NSS_DEFAULT_DB_TYPE"); | 1086 » char *defaultType = PR_GetEnvSecure("NSS_DEFAULT_DB_TYPE"); |
1081 if (defaultType != NULL) { | 1087 if (defaultType != NULL) { |
1082 if (PORT_Strncmp(defaultType, SQLDB, sizeof(SQLDB)-2) == 0) { | 1088 if (PORT_Strncmp(defaultType, SQLDB, sizeof(SQLDB)-2) == 0) { |
1083 dbType = NSS_DB_TYPE_SQL; | 1089 dbType = NSS_DB_TYPE_SQL; |
1084 } else if (PORT_Strncmp(defaultType,EXTERNDB,sizeof(EXTERNDB)-2)==0)
{ | 1090 } else if (PORT_Strncmp(defaultType,EXTERNDB,sizeof(EXTERNDB)-2)==0)
{ |
1085 dbType = NSS_DB_TYPE_EXTERN; | 1091 dbType = NSS_DB_TYPE_EXTERN; |
1086 } else if (PORT_Strncmp(defaultType, LEGACY, sizeof(LEGACY)-2) == 0)
{ | 1092 } else if (PORT_Strncmp(defaultType, LEGACY, sizeof(LEGACY)-2) == 0)
{ |
1087 dbType = NSS_DB_TYPE_LEGACY; | 1093 dbType = NSS_DB_TYPE_LEGACY; |
1088 } | 1094 } |
1089 } | 1095 } |
1090 } | 1096 } |
1091 /* if the caller has already set a type, don't change it */ | 1097 /* if the caller has already set a type, don't change it */ |
1092 if (*pdbType == NSS_DB_TYPE_NONE) { | 1098 if (*pdbType == NSS_DB_TYPE_NONE) { |
1093 *pdbType = dbType; | 1099 *pdbType = dbType; |
1094 } | 1100 } |
1095 return configdir; | 1101 return configdir; |
1096 } | 1102 } |
1097 | 1103 |
1098 char * | 1104 char * |
1099 _NSSUTIL_GetSecmodName(char *param, NSSDBType *dbType, char **appName, | 1105 _NSSUTIL_GetSecmodName(const char *param, NSSDBType *dbType, char **appName, |
1100 char **filename, PRBool *rw) | 1106 char **filename, PRBool *rw) |
1101 { | 1107 { |
1102 int next; | 1108 int next; |
1103 char *configdir = NULL; | 1109 char *configdir = NULL; |
1104 char *secmodName = NULL; | 1110 char *secmodName = NULL; |
1105 char *value = NULL; | 1111 char *value = NULL; |
1106 char *save_params = param; | 1112 const char *save_params = param; |
1107 const char *lconfigdir; | 1113 const char *lconfigdir; |
1108 PRBool noModDB = PR_FALSE; | 1114 PRBool noModDB = PR_FALSE; |
1109 param = NSSUTIL_ArgStrip(param); | 1115 param = NSSUTIL_ArgStrip(param); |
1110 | |
1111 | 1116 |
1112 while (*param) { | 1117 while (*param) { |
1113 NSSUTIL_HANDLE_STRING_ARG(param,configdir,"configDir=",;) | 1118 NSSUTIL_HANDLE_STRING_ARG(param,configdir,"configDir=",;) |
1114 NSSUTIL_HANDLE_STRING_ARG(param,secmodName,"secmod=",;) | 1119 NSSUTIL_HANDLE_STRING_ARG(param,secmodName,"secmod=",;) |
1115 NSSUTIL_HANDLE_FINAL_ARG(param) | 1120 NSSUTIL_HANDLE_FINAL_ARG(param) |
1116 } | 1121 } |
1117 | 1122 |
1118 *rw = PR_TRUE; | 1123 *rw = PR_TRUE; |
1119 if (NSSUTIL_ArgHasFlag("flags","readOnly",save_params)) { | 1124 if (NSSUTIL_ArgHasFlag("flags","readOnly",save_params)) { |
1120 *rw = PR_FALSE; | 1125 *rw = PR_FALSE; |
(...skipping 28 matching lines...) Expand all Loading... |
1149 value = PR_smprintf("%s" NSSUTIL_PATH_SEPARATOR "%s", | 1154 value = PR_smprintf("%s" NSSUTIL_PATH_SEPARATOR "%s", |
1150 lconfigdir,secmodName); | 1155 lconfigdir,secmodName); |
1151 } else { | 1156 } else { |
1152 value = PR_smprintf("%s",secmodName); | 1157 value = PR_smprintf("%s",secmodName); |
1153 } | 1158 } |
1154 if (configdir) PORT_Free(configdir); | 1159 if (configdir) PORT_Free(configdir); |
1155 return value; | 1160 return value; |
1156 } | 1161 } |
1157 | 1162 |
1158 | 1163 |
OLD | NEW |