storage: download integrity check

### Do not merge
- [ ] integrity tests

Picking up from #299, where we're implementing integrity checks for uploads.
Yeah, if there is no standard code, I would omit it and just go with the string. Maybe add a "reason" field to the error with a shorter description like "media transfer failed".