Explicitly malloc'd buffer should either be explicitly free'd or
ownership given to NSData via `freeWhenDone:YES`
Instead I opted to avoid the explict malloc altogether, and avoided some
unnecessary allocations.
Also made sure encryption failures propogate to error handler
// FREEBIE