(*
  Definition ipd:Z := 54.
  Definition opd:Z:=92.
  Lemma isbyteZ_Ipad: isbyteZ ipd.
    unfold ipd. split; omega. Qed.
  Lemma isbyteZ_Opad: isbyteZ opd.
    unfold opd. split; omega. Qed.*)
  Definition fpad_v := fpad_v.Definition fpad := fpad.Definition fpad_length msg: length msg = c -> length (fpad msg) = p.Definition fpad_eq := fpad_eq.Definition splitAndPad := sha_splitandpad.Definition splitAndPad_v := splitAndPad_v.Definition splitandpad_blocks := sha_splitandpad_blocks.Definition sap_fpad:=sha_splitandpad_fpad.Definition shasplitandpad_blocks_b:= sha_splitandpad_blocks_512.Definition sap' m := concat (splitandpad_blocks m).Definition sap_app:forall (l m : Blist),
                         length l = b ->
                         splitAndPad (l ++ m) = l ++ sap' m.

(* Specifications: *)
Lemma sap'_InBlocks m: InBlocks b (sap' m).