storage: download integrity check

### Do not merge
- [ ] integrity tests

Picking up from #299, where we're implementing integrity checks for uploads.
I like the idea of an error string more than a code just because the code isn't really standardized and may not be supported in future changes.