storage: download integrity check

- [x] integrity tests
- [x] merge #299

Picking up from #299, where we're implementing integrity checks for uploads.
Do we really need both of these assignments. I'm guessing this is because of 80-char limits + readability?