Unified download and hash checking