rv = ((encrypt != PR_TRUE) ? RC2_Decrypt : RC2_Encrypt)(
rv = (encrypt ? RC2_Encrypt: RC2_Decrypt)(
sec_pkcs5_rc2(SECItem *key, SECItem *iv, SECItem *src, PRBool dummy, 								PRBool encrypt){    SECItem *dest;    SECItem *dup_src;    SECStatus rv = SECFailure;    int pad;    if((src == NULL) || (key == NULL) || (iv == NULL)) {	return NULL;    }    dup_src = SECITEM_DupItem(src);    if(dup_src == NULL) {	return NULL;    }    if(encrypt != PR_FALSE) {	void *dummy;	dummy = DES_PadBuffer(NULL, dup_src->data, 			      dup_src->len, &dup_src->len);	if(dummy == NULL) {	    SECITEM_FreeItem(dup_src, PR_TRUE);	    return NULL;	}	dup_src->data = (unsigned char*)dummy;    }    dest = (SECItem *)PORT_ZAlloc(sizeof(SECItem));    if(dest != NULL) {	dest->data = (unsigned char *)PORT_ZAlloc(dup_src->len + 64);	if(dest->data != NULL) {	    RC2Context *ctxt;	    ctxt = RC2_CreateContext(key->data, key->len, iv->data,					 	NSS_RC2_CBC, key->len);	    if(ctxt != NULL) {		rv = ((encrypt != PR_TRUE) ? RC2_Decrypt : RC2_Encrypt)(			ctxt, dest->data, &dest->len,			dup_src->len + 64, dup_src->data, dup_src->len);		/* assumes 8 byte blocks  -- remove padding */			if((rv == SECSuccess) && (encrypt != PR_TRUE)) {		    pad = dest->data[dest->len-1];		    if((pad > 0) && (pad <= 8)) {			if(dest->data[dest->len-pad] != pad) {			    PORT_SetError(SEC_ERROR_BAD_PASSWORD);			    rv = SECFailure;			} else {			    dest->len -= pad;			}		    } else {			PORT_SetError(SEC_ERROR_BAD_PASSWORD);			rv = SECFailure;		    }		}	    }	}    }    if((rv != SECSuccess) && (dest != NULL)) {	SECITEM_FreeItem(dest, PR_TRUE);	dest = NULL;    }    if(dup_src != NULL) {	SECITEM_FreeItem(dup_src, PR_TRUE);    }    return dest;}