SECU_PrintError (progName, "unable to import CRL");
SECU_PrintError (progName, "unable to import CRL"); } else { SEC_DestroyCrl (crl);
SECStatus ImportCRL (CERTCertDBHandle *certHandle, char *url, int type,                      PRFileDesc *inFile, PRInt32 importOptions, PRInt32 decodeOptions){    CERTCertificate *cert = NULL;    CERTSignedCrl *crl = NULL;    SECItem crlDER;    PK11SlotInfo* slot = NULL;    int rv;    PRIntervalTime starttime, endtime, elapsed;    PRUint32 mins, secs, msecs;    crlDER.data = NULL;    /* Read in the entire file specified with the -f argument */	rv = SECU_ReadDERFromFile(&crlDER, inFile, PR_FALSE);    if (rv != SECSuccess) {	SECU_PrintError(progName, "unable to read input file");	return (SECFailure);    }    decodeOptions |= CRL_DECODE_DONT_COPY_DER;    slot = PK11_GetInternalKeySlot();     starttime = PR_IntervalNow();    crl = PK11_ImportCRL(slot, &crlDER, url, type,          NULL, importOptions, NULL, decodeOptions);    endtime = PR_IntervalNow();    elapsed = endtime - starttime;    mins = PR_IntervalToSeconds(elapsed) / 60;    secs = PR_IntervalToSeconds(elapsed) % 60;    msecs = PR_IntervalToMilliseconds(elapsed) % 1000;    printf("Elapsed : %2d:%2d.%3d\n", mins, secs, msecs);    if (!crl) {	const char *errString;	errString = SECU_Strerror(PORT_GetError());	if ( errString && PORT_Strlen (errString) == 0)	    SECU_PrintError		    (progName, "CRL is not imported (error: input CRL is not up to date.)");	else    	    SECU_PrintError		    (progName, "unable to import CRL");    }    SEC_DestroyCrl (crl);    if (slot) {        PK11_FreeSlot(slot);    }    return (rv);}