(*Require Import FCF.HMAC_DRBG_definitions_only.*)
(*Variant of FCF.HMAC_DRBG_definitions_only.Gen_loop that - specializes eta to 256 - specializes f to HMAC256 - replaces v'::bits with bits++[v']*)
Fixpoint Gen_loop_Bvec (k : Bvector 256) (v : Bvector 256) (n : nat)
: list (Bvector 256) * Bvector 256 :=
match n with
| O => (nil, v)
| S n' =>
let v' := HMAC_Bvec k (to_list v) in
let (bits, v'') := Gen_loop_Bvec k v' n' in
(List.app bits (List.cons v' List.nil), v'')
end.

(*Lemma stating the relationship between Genloop_bvec and the corresponding specialization of Gen_loop*)
Lemma GenloopBvec_Gen_loop k: forall n v blocks u,
Gen_loop_Bvec k v n = (blocks,u) ->
Gen_loop HMAC_Bvec k v n = (rev blocks, u).