rv = SEC_ASN1DecodeItem(temparena, epki,
rv = SEC_QuickDERDecodeItem(temparena, epki,
seckey_decode_encrypted_private_key(NSSLOWKEYDBKey *dbkey, SECItem *pwitem){    NSSLOWKEYPrivateKey *pk = NULL;    NSSLOWKEYEncryptedPrivateKeyInfo *epki;    PLArenaPool *temparena = NULL;    SECStatus rv;    SECOidTag algorithm;    if( ( dbkey == NULL ) || ( pwitem == NULL ) ) {	return NULL;    }    temparena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);    if(temparena == NULL) {	return NULL;    }    epki = (NSSLOWKEYEncryptedPrivateKeyInfo *)	PORT_ArenaZAlloc(temparena, sizeof(NSSLOWKEYEncryptedPrivateKeyInfo));    if(epki == NULL) {	goto loser;    }    rv = SEC_ASN1DecodeItem(temparena, epki,			    nsslowkey_EncryptedPrivateKeyInfoTemplate,			    &(dbkey->derPK));     if(rv != SECSuccess) {	goto loser;    }    algorithm = SECOID_GetAlgorithmTag(&(epki->algorithm));    switch(algorithm)    {      case SEC_OID_RC4:	/* TNH - this code should derive the actual RC4 key from salt and           pwitem */	rv = SECITEM_CopyItem(temparena, &(epki->algorithm.parameters),			      &(dbkey->salt));	break;      default:	break;    }    pk = seckey_decrypt_private_key(epki, pwitem);    /* let success fall through */loser:    PORT_FreeArena(temparena, PR_TRUE);    return pk;}