(*Specialization of HMAC256_DRBG_generate_algorithm: no additional input*)
Definition FunGenerate RI (WS: DRBG_functions.DRBG_working_state) n: DRBG_functions.DRBG_generate_algorithm_result :=
           HMAC256_DRBG_functional_prog.HMAC256_DRBG_generate_algorithm RI
                                           WS
                                           n
                                           nil.

Lemma mbedtls_generate_Bridge s I (n:nat) bytes F ss (M: mbedtls_generate s I (32 * Z.of_nat n) = Some(bytes, ss, F)) (N:(0 < n)%nat): match I with HMAC256DRBGabs k v reseed_counter entropy_len prediction_resistance reseed_interval => reseed_counter <= reseed_interval -> prediction_resistance = false -> forall (KL: Datatypes.length (bytesToBits k) = 256%nat) (VL:Datatypes.length (bytesToBits v) = 256%nat), match F with HMAC256DRBGabs KK VV rc _ _ _ => s=ss /\ rc=reseed_counter+1 /\ match GenUpdate_original_core (Blist.of_list_length _ KL, Blist.of_list_length _ VL) n with (blocks, kv) => bitsToBytes (@Vector.to_list _ 256 (fst kv)) = KK /\ bitsToBytes (@Vector.to_list _ 256 (snd kv)) = VV /\ bytes = (bitsToBytes (Fold.flatten (map (@Vector.to_list _ 256) blocks))) end end end.