static CK_RV lg_OpenKeyDB(const char * configdir, const char *prefix, PRBool readOnly, NSSLOWKEYDBHandle **keydbPtr) { NSSLOWKEYDBHandle *keydb; char * name = NULL; char * appName = NULL; if (prefix == NULL) { prefix = ""; } configdir = lg_EvaluateConfigDir(configdir, &appName); name = PR_smprintf("%s" PATH_SEPARATOR "%s",configdir,prefix); if (name == NULL) return CKR_HOST_MEMORY; keydb = nsslowkey_OpenKeyDB(readOnly, appName, prefix, lg_keydb_name_cb, (void *)name); PR_smprintf_free(name); if (appName) PORT_Free(appName); if (keydb == NULL) return CKR_NETSCAPE_KEYDB_FAILED; *keydbPtr = keydb; return CKR_OK; }
static CK_RV lg_OpenCertDB(const char *configdir, const char *prefix, PRBool readOnly, NSSLOWCERTCertDBHandle **certdbPtr) { NSSLOWCERTCertDBHandle *certdb = NULL; CK_RV crv = CKR_NETSCAPE_CERTDB_FAILED; SECStatus rv; char *name = NULL; char *appName = NULL; if (prefix == NULL) { prefix = ""; } configdir = lg_EvaluateConfigDir(configdir, &appName); name = PR_smprintf("%s" PATH_SEPARATOR "%s", configdir, prefix); if (name == NULL) goto loser; certdb = (NSSLOWCERTCertDBHandle *)PORT_ZAlloc(sizeof(NSSLOWCERTCertDBHandle)); if (certdb == NULL) goto loser; certdb->ref = 1; /* fix when we get the DB in */ rv = nsslowcert_OpenCertDB(certdb, readOnly, appName, prefix, lg_certdb_name_cb, (void *)name, PR_FALSE); if (rv == SECSuccess) { crv = CKR_OK; *certdbPtr = certdb; certdb = NULL; } loser: if (certdb) PR_Free(certdb); if (name) PR_smprintf_free(name); if (appName) PORT_Free(appName); return crv; }