Пример #1
0
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;
}
Пример #2
0
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;
}