Definition gap:list byte -> list int := SHA256.generate_and_pad.

(* Specifications: *)
Lemma GAP: forall bits, NPeano.Nat.divide d (length (gap (bitsToBytes bits))).
Lemma sap_gap: splitAndPad = fun bits => bytesToBits (intlist_to_bytelist (gap (bitsToBytes bits))).
Lemma HASH m: SHA256.Hash m = intlist_to_bytelist (hashblocks ir (gap m)).
Lemma FOLD_HB_eq: forall l ls, length l = (c + p)%nat -> Forall (fun x => length x = (c + p)%nat) ls -> fold_left h (l :: ls) (Vector.to_list iv_v) = hash_blocks_bits (HMAC_spec_concat.HMAC_Concat.b c p) B h (Vector.to_list iv_v) (l ++ concat ls).
Lemma length_splitandpad_inner m: Forall2 (fun (bv : Vector.t bool b) (bl : list bool) => bl = Vector.to_list bv) (splitAndPad_v m) (splitandpad_blocks m).