Taking a `UInt32*` and treating it as an array without having a corresponding length pointer makes my inner C programmer antsy.

I want to say CommonCrypto has a convenient data struct that has `len` and `bytes` members that would fix this.

There's also out arguments that aren't checked for nil before writing.

I think I might be writing a PR in the near future.