static char * getUserDB(void) { char *userdir = getenv("HOME"); char *nssdir = NULL; if (userdir == NULL) { return NULL; } nssdir = PORT_Alloc(strlen(userdir) +sizeof(NSS_USER_PATH1)+sizeof(NSS_USER_PATH2)); if (nssdir == NULL) { return NULL; } PORT_Strcpy(nssdir, userdir); /* verify it exists */ if (!testdir(nssdir)) { PORT_Free(nssdir); return NULL; } PORT_Strcat(nssdir, NSS_USER_PATH1); if (!testdir(nssdir) && mkdir(nssdir, 0760)) { PORT_Free(nssdir); return NULL; } PORT_Strcat(nssdir, NSS_USER_PATH2); if (!testdir(nssdir) && mkdir(nssdir, 0760)) { PORT_Free(nssdir); return NULL; } return nssdir; }
char * sftk_argGetParamValue(char *paramName,char *parameters) { char searchValue[256]; int paramLen = strlen(paramName); char *returnValue = NULL; int next; if ((parameters == NULL) || (*parameters == 0)) return NULL; PORT_Assert(paramLen+2 < sizeof(searchValue)); PORT_Strcpy(searchValue,paramName); PORT_Strcat(searchValue,"="); while (*parameters) { if (PORT_Strncasecmp(parameters,searchValue,paramLen+1) == 0) { parameters += paramLen+1; returnValue = sftk_argFetchValue(parameters,&next); break; } else { parameters = sftk_argSkipParameter(parameters); } parameters = sftk_argStrip(parameters); } return returnValue; }
int sv_PrintSignedData(FILE *out, SECItem *der, char *m, SECU_PPFunc inner) { PLArenaPool *arena = NULL; CERTSignedData *sd; int rv; /* Strip off the signature */ sd = (CERTSignedData *)PORT_ZAlloc(sizeof(CERTSignedData)); if (!sd) return PORT_GetError(); arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE); if (!arena) return SEC_ERROR_NO_MEMORY; rv = SEC_ASN1DecodeItem(arena, sd, SEC_ASN1_GET(CERT_SignedDataTemplate), der); if (rv) { PORT_FreeArena(arena, PR_FALSE); return rv; } /* fprintf(out, "%s:\n", m); */ PORT_Strcat(m, "data."); rv = (*inner)(out, &sd->data, m, 0); if (rv) { PORT_FreeArena(arena, PR_FALSE); return rv; } m[PORT_Strlen(m) - 5] = 0; fprintf(out, "%s", m); sv_PrintAlgorithmID(out, &sd->signatureAlgorithm, "signatureAlgorithm="); DER_ConvertBitString(&sd->signature); fprintf(out, "%s", m); sv_PrintAsHex(out, &sd->signature, "signature="); PORT_FreeArena(arena, PR_FALSE); return 0; }
static char * nss_makeFlags(PRBool readOnly, PRBool noCertDB, PRBool noModDB, PRBool forceOpen, PRBool passwordRequired, PRBool optimizeSpace) { char *flags = (char *)PORT_Alloc(NSS_MAX_FLAG_SIZE); PRBool first = PR_TRUE; PORT_Memset(flags,0,NSS_MAX_FLAG_SIZE); if (readOnly) { PORT_Strcat(flags,"readOnly"); first = PR_FALSE; } if (noCertDB) { if (!first) PORT_Strcat(flags,","); PORT_Strcat(flags,"noCertDB"); first = PR_FALSE; } if (noModDB) { if (!first) PORT_Strcat(flags,","); PORT_Strcat(flags,"noModDB"); first = PR_FALSE; } if (forceOpen) { if (!first) PORT_Strcat(flags,","); PORT_Strcat(flags,"forceOpen"); first = PR_FALSE; } if (passwordRequired) { if (!first) PORT_Strcat(flags,","); PORT_Strcat(flags,"passwordRequired"); first = PR_FALSE; } if (optimizeSpace) { if (!first) PORT_Strcat(flags,","); PORT_Strcat(flags,"optimizeSpace"); first = PR_FALSE; } return flags; }