Iran has vowed to take revenge for the killing of a top Hamas leader in Tehran last week in an attack it blamed on Israel.