Require sha.sha.
Local Open Scope logic.

(*Here's the proof for the alternative specification:*)
Lemma cleanupbodyproof1 Espec wsh c h
(Hwsh: writable_share wsh):
@semax CompSpecs Espec (func_tycontext f_HMAC_cleanup HmacVarSpecs HmacFunSpecs nil)
(PROP  ()
LOCAL  (temp _ctx c)
SEP  (EX  key : list byte, hmacstate_PreInitNull wsh key h c))
(fn_body f_HMAC_cleanup)
(normal_ret_assert
(PROP ( )
LOCAL ()
SEP (data_block wsh
(list_repeat
(Z.to_nat (sizeof t_struct_hmac_ctx_st))
Byte.zero) c) * stackframe_of f_HMAC_cleanup)).