summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornelsonb%netscape.com <devnull@localhost>2000-10-06 21:37:25 +0000
committernelsonb%netscape.com <devnull@localhost>2000-10-06 21:37:25 +0000
commit3372d5e4a80e3d50b1999499b8441ee01e2b3c3f (patch)
tree787b340d6346250c697f3e1b348114b46b9e0fba
parentfe5ead95a03f606019823f1c1854e7fdea51aad1 (diff)
downloadnss-hg-3372d5e4a80e3d50b1999499b8441ee01e2b3c3f.tar.gz
Implement new function NSS_InitReadWrite, which is just like NSS_Init
except that it opens the files read/write. This is to replace the broken SECU_ routines in nss/cmd/lib.
-rw-r--r--security/nss/lib/nss/nss.h10
-rw-r--r--security/nss/lib/nss/nssinit.c26
2 files changed, 28 insertions, 8 deletions
diff --git a/security/nss/lib/nss/nss.h b/security/nss/lib/nss/nss.h
index 154125c8b..626fecd7c 100644
--- a/security/nss/lib/nss/nss.h
+++ b/security/nss/lib/nss/nss.h
@@ -42,7 +42,7 @@
SEC_BEGIN_PROTOS
/*
- * Open the Cert, Key, and Security Module databases.
+ * Open the Cert, Key, and Security Module databases, read only.
* Initialize the Random Number Generator.
* Does not initialize the cipher policies or enables.
* Default policy settings disallow all ciphers.
@@ -50,6 +50,14 @@ SEC_BEGIN_PROTOS
extern SECStatus NSS_Init(const char *configdir);
/*
+ * Open the Cert, Key, and Security Module databases, read/write.
+ * Initialize the Random Number Generator.
+ * Does not initialize the cipher policies or enables.
+ * Default policy settings disallow all ciphers.
+ */
+extern SECStatus NSS_InitReadWrite(const char *configdir);
+
+/*
* initialize NSS without a creating cert db's, key db's, or secmod db's.
*/
SECStatus NSS_NoDB_Init(const char *configdir);
diff --git a/security/nss/lib/nss/nssinit.c b/security/nss/lib/nss/nssinit.c
index fef93e630..9a920e678 100644
--- a/security/nss/lib/nss/nssinit.c
+++ b/security/nss/lib/nss/nssinit.c
@@ -95,7 +95,7 @@ nss_keydb_name_cb(void *arg, int dbVersion)
}
SECStatus
-nss_OpenCertDB(const char * configdir)
+nss_OpenCertDB(const char * configdir, PRBool readOnly)
{
CERTCertDBHandle *certdb;
SECStatus status;
@@ -108,7 +108,7 @@ nss_OpenCertDB(const char * configdir)
if (certdb == NULL)
goto loser;
- status = CERT_OpenCertDB(certdb, PR_TRUE, nss_certdb_name_cb, (void *)configdir);
+ status = CERT_OpenCertDB(certdb, readOnly, nss_certdb_name_cb, (void *)configdir);
if (status == SECSuccess)
CERT_SetDefaultCertDB(certdb);
else {
@@ -120,14 +120,14 @@ loser:
}
SECStatus
-nss_OpenKeyDB(const char * configdir)
+nss_OpenKeyDB(const char * configdir, PRBool readOnly)
{
SECKEYKeyDBHandle *keydb;
keydb = SECKEY_GetDefaultKeyDB();
if (keydb)
return SECSuccess;
- keydb = SECKEY_OpenKeyDB(PR_TRUE, nss_keydb_name_cb, (void *)configdir);
+ keydb = SECKEY_OpenKeyDB(readOnly, nss_keydb_name_cb, (void *)configdir);
if (keydb == NULL)
return SECFailure;
SECKEY_SetDefaultKeyDB(keydb);
@@ -153,7 +153,7 @@ nss_OpenSecModDB(const char * configdir)
}
SECStatus
-NSS_Init(const char *configdir)
+nss_Init(const char *configdir, PRBool readOnly)
{
SECStatus status;
SECStatus rv = SECFailure;
@@ -161,11 +161,11 @@ NSS_Init(const char *configdir)
RNG_RNGInit(); /* initialize random number generator */
RNG_SystemInfoForRNG();
- status = nss_OpenCertDB(configdir);
+ status = nss_OpenCertDB(configdir, PR_TRUE);
if (status != SECSuccess)
goto loser;
- status = nss_OpenKeyDB(configdir);
+ status = nss_OpenKeyDB(configdir, PR_TRUE);
if (status != SECSuccess)
goto loser;
@@ -181,6 +181,18 @@ loser:
return rv;
}
+SECStatus
+NSS_Init(const char *configdir)
+{
+ return nss_Init(configdir, PR_TRUE);
+}
+
+SECStatus
+NSS_InitReadWrite(const char *configdir)
+{
+ return nss_Init(configdir, PR_FALSE);
+}
+
/*
* initialize NSS without a creating cert db's, key db's, or secmod db's.
*/