Definition fpad (msg : Blist) : Blist :=
  bytesToBits (fpad_inner (bitsToBytes msg)).

(* Specifications: *)
Lemma fpad_length msg (M:length msg = c): length (fpad msg) = p.
Lemma xor_equiv_byte: forall xpad XPAD k K, bytes_bits_lists xpad (HMAC_SHA256.sixtyfour XPAD) -> ((length K) * 8)%nat = (c + p)%nat -> bytes_bits_lists k K -> bytes_bits_lists (BLxor k xpad) (HMAC_SHA256.mkArg K XPAD).
Lemma fold_left_iv_length: forall k (HK: forall iv x, length iv = k -> length (sha_h iv x) = k) l iv x , length iv = k -> length (fold_left sha_h l (sha_h iv x)) = k.