ScopedPointer<char> rawChars = new char[input.length()];
Aaggh! No no no no no!
ScopedPointer can’t (and shoudn’t!) be used for arrays, because it doesn’t call delete !!
Always use HeapBlock instead for that kind of thing!
What’s wrong with this constructor:
/** Creates a checksum from a UTF-8 buffer.
E.g.
@code SHA256 checksum (myString.toUTF8());
@endcode
*/
explicit SHA256 (const CharPointer_UTF8& utf8Text) noexcept;
?