@peg yes but very minor niggle: I'd avoid things like slice(-16)
(which I can only presume measures from the end backwards) and instead do slice(0, 16)
because it's more explicit. explicit is better than implicit. of course, we know that sha256 returns 32 bytes, so this is the same... actually does that return the first or last 16 bytes?