| 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 |