SECMOD_HANDLE_STRING_ARG(index,minPW,"FIPSTokenDescription=",;) SECMOD_HANDLE_STRING_ARG(index,tmp,"minPWLen=",;)
SECMOD_HANDLE_STRING_ARG(index,fpslotdes,"FIPSTokenDescription=",;) SECMOD_HANDLE_STRING_ARG(index,minPW,"minPWLen=",;)
secmod_parseParameters(char *param, sftk_parameters *parsed, PRBool isFIPS) {    int next;    char *tmp;    char *index;    char *certPrefix = NULL, *keyPrefix = NULL;    char *tokdes = NULL, *ptokdes = NULL;    char *slotdes = NULL, *pslotdes = NULL;    char *fslotdes = NULL, *fpslotdes = NULL;    char *minPW = NULL;    index = secmod_argStrip(param);    PORT_Memset(parsed, 0, sizeof(sftk_parameters));    while (*index) {	SECMOD_HANDLE_STRING_ARG(index,parsed->configdir,"configDir=",;)	SECMOD_HANDLE_STRING_ARG(index,parsed->secmodName,"secmod=",;)	SECMOD_HANDLE_STRING_ARG(index,parsed->man,"manufacturerID=",;)	SECMOD_HANDLE_STRING_ARG(index,parsed->libdes,"libraryDescription=",;)	/* constructed values, used so legacy interfaces still work */	SECMOD_HANDLE_STRING_ARG(index,certPrefix,"certPrefix=",;)        SECMOD_HANDLE_STRING_ARG(index,keyPrefix,"keyPrefix=",;)        SECMOD_HANDLE_STRING_ARG(index,tokdes,"cryptoTokenDescription=",;)        SECMOD_HANDLE_STRING_ARG(index,ptokdes,"dbTokenDescription=",;)        SECMOD_HANDLE_STRING_ARG(index,slotdes,"cryptoSlotDescription=",;)        SECMOD_HANDLE_STRING_ARG(index,pslotdes,"dbSlotDescription=",;)        SECMOD_HANDLE_STRING_ARG(index,fslotdes,"FIPSSlotDescription=",;)        SECMOD_HANDLE_STRING_ARG(index,minPW,"FIPSTokenDescription=",;)	SECMOD_HANDLE_STRING_ARG(index,tmp,"minPWLen=",;)	SECMOD_HANDLE_STRING_ARG(index,tmp,"flags=", 		if(tmp) { secmod_parseFlags(param,parsed); PORT_Free(tmp); })	SECMOD_HANDLE_STRING_ARG(index,tmp,"tokens=", 		if(tmp) { secmod_parseTokens(tmp,parsed); PORT_Free(tmp); })