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 #ifndef _UTILPARS_H_
6 #define _UTILPARS_H_ 1
7 
8 #include "utilparst.h"
9 #include "plarena.h"
10 
11 /* handle a module db request */
12 char **NSSUTIL_DoModuleDBFunction(unsigned long function, char *parameters, void *args);
13 
14 /* parsing functions */
15 char *NSSUTIL_ArgFetchValue(const char *string, int *pcount);
16 const char *NSSUTIL_ArgStrip(const char *c);
17 char *NSSUTIL_ArgGetParamValue(const char *paramName, const char *parameters);
18 const char *NSSUTIL_ArgSkipParameter(const char *string);
19 char *NSSUTIL_ArgGetLabel(const char *inString, int *next);
20 long NSSUTIL_ArgDecodeNumber(const char *num);
21 PRBool NSSUTIL_ArgIsBlank(char c);
22 PRBool NSSUTIL_ArgHasFlag(const char *label, const char *flag,
23                           const char *parameters);
24 long NSSUTIL_ArgReadLong(const char *label, const char *params, long defValue,
25                          PRBool *isdefault);
26 
27 /* quoting functions */
28 int NSSUTIL_EscapeSize(const char *string, char quote);
29 char *NSSUTIL_Escape(const char *string, char quote);
30 int NSSUTIL_QuoteSize(const char *string, char quote);
31 char *NSSUTIL_Quote(const char *string, char quote);
32 int NSSUTIL_DoubleEscapeSize(const char *string, char quote1, char quote2);
33 char *NSSUTIL_DoubleEscape(const char *string, char quote1, char quote2);
34 
35 unsigned long NSSUTIL_ArgParseSlotFlags(const char *label, const char *params);
36 struct NSSUTILPreSlotInfoStr *NSSUTIL_ArgParseSlotInfo(PLArenaPool *arena,
37                                                        const char *slotParams, int *retCount);
38 char *NSSUTIL_MkSlotString(unsigned long slotID, unsigned long defaultFlags,
39                            unsigned long timeout, unsigned char askpw_in,
40                            PRBool hasRootCerts, PRBool hasRootTrust);
41 SECStatus NSSUTIL_ArgParseModuleSpec(const char *modulespec, char **lib,
42                                      char **mod, char **parameters, char **nss);
43 SECStatus NSSUTIL_ArgParseModuleSpecEx(const char *modulespec, char **lib,
44                                        char **mod, char **parameters, char **nss, char **config);
45 char *NSSUTIL_MkModuleSpec(char *dllName, char *commonName,
46                            char *parameters, char *NSS);
47 char *NSSUTIL_MkModuleSpecEx(char *dllName, char *commonName,
48                              char *parameters, char *NSS, char *config);
49 char *NSSUTIL_AddNSSFlagToModuleSpec(char *spec, char *addFlag);
50 void NSSUTIL_ArgParseCipherFlags(unsigned long *newCiphers,
51                                  const char *cipherList);
52 char *NSSUTIL_MkNSSString(char **slotStrings, int slotCount, PRBool internal,
53                           PRBool isFIPS, PRBool isModuleDB, PRBool isModuleDBOnly,
54                           PRBool isCritical, unsigned long trustOrder,
55                           unsigned long cipherOrder, unsigned long ssl0, unsigned long ssl1);
56 
57 /*
58  * private functions for softoken.
59  */
60 char *_NSSUTIL_GetSecmodName(const char *param, NSSDBType *dbType,
61                              char **appName, char **filename, PRBool *rw);
62 const char *_NSSUTIL_EvaluateConfigDir(const char *configdir, NSSDBType *dbType, char **app);
63 #if defined(_WIN32)
64 wchar_t *_NSSUTIL_UTF8ToWide(const char *buf);
65 PRStatus _NSSUTIL_Access(const char *path, PRAccessHow how);
66 #else
67 #define _NSSUTIL_Access(path, how) PR_Access((path), (how))
68 #endif
69 
70 #endif /* _UTILPARS_H_ */
71