SHA1

Don't merge until these things are done:
* [ ] Code style, change `$` to `0x`
* [ ] Clear allocated memory and remove .block statements
* [ ] Get it actually working
* [ ] Write unit tests