Module PAD := HMAC_Pad SHA256 I256.

(* Relates the HMAC padded spec to the HMAC functional program *)
Theorem HMAC_pad_concrete (K : list byte) (M H : list byte) (OP IP : byte)
(k m h : Blist) (op ip : Blist):
((length K) * 8)%nat = (c + p)%nat ->
bytes_bits_lists k K ->
bytes_bits_lists m M ->
bytes_bits_lists op (HMAC_SHA256.sixtyfour OP) ->
bytes_bits_lists ip (HMAC_SHA256.sixtyfour IP) ->
sha.HMAC_spec_pad.HMAC c p B sha_h sha_iv sha_splitandpad op ip k m = h ->
HMAC_SHA256.HmacCore IP OP M K = H ->
bytes_bits_lists h H.