Why not simply require the hibernation image is stored on a LUKS partition?
Then nobody can tamper with the image, since the LUKS key is derived from the TPM...
Then you get to reuse all the existing kernel infrastructure rather than reinventing the encryption wheel...