(*longer proof now in HAMC_equivalence Lemma opad_ne_ipad : EQ.opad_v <> EQ.ipad_v. intros N. assert (Vector.to_list EQ.opad_v = Vector.to_list EQ.ipad_v). rewrite N; trivial. unfold EQ.opad_v, EQ.ipad_v in H. repeat rewrite of_length_proof_irrel in H. unfold HP.Opad, HP.Ipad in H. simpl in H. discriminate. Qed. *)
Module PARS256 <: HMAC_is_PRF_Parameters SHA256 EQ256.
Parameter P : Blist -> Prop.
Parameter HP: forall m, P m -> NPeano.Nat.divide 8 (length m).

Theorem HMAC256_isPRF' A (A_wf : well_formed_oc A) tau epsilon sigma
(HH1: PRFMod.h_PRF A tau) (HH2: PRFMod.h_star_WCR A epsilon) (HH3: PRFMod.dual_h_RKA A sigma):
PRFMod.isPRF (Rnd (b EQ256.c EQ256.p)) (Rnd EQ256.c)
(HMAC EQ.h_v iv_v (HMAC_Abstract.wrappedSAP _ _ splitAndPad_v)
fpad_v EQ.opad_v EQ.ipad_v)
PRFMod.Message_eqdec _ (tau + epsilon + sigma) A.