val reveal_log (l: erased_transcript) : GTot (hs_transcript)
val reveal_log (l: erased_transcript) : GTot (hs_transcript)
let reveal_log (l:erased_transcript) : GTot (hs_transcript) =
    if false then l
    else FStar.Ghost.reveal l
module MiTLS.HandshakeLog
open MiTLS

(* see als comments in Handshake.fsti *) 

open FStar.Seq
open FStar.Error

open MiTLS.Mem 
open MiTLS.TLSError
open MiTLS.TLSConstants
open MiTLS.TLSInfo
open MiTLS.HandshakeMessages
open MiTLS.Hashing
open MiTLS.Hashing.CRF // now using incremental, collision-resistant, agile Hashing.
open FStar.Bytes //18-08-31 reordered 
open MiTLS.Range  // cwinter: the extracted OCaml file contains a reference to this, which is not reflected in the .depend file?
module Parse = MiTLS.Parse

module HS = FStar.HyperStack

(* A flag for runtime debugging of handshakelog data.
   The F* normalizer will erase debug prints at extraction
   when this flag is set to false. *)
val discard: bool -> ST unit
  (requires (fun _ -> True))
  (ensures (fun h0 _ h1 -> h0 == h1))
let discard _ = ()
let print s = discard (IO.debug_print_string ("HSL| "^s^"\n"))
unfold val trace: s:string -> ST unit
  (requires (fun _ -> True))
  (ensures (fun h0 _ h1 -> h0 == h1))
unfold let trace = if DebugFlags.debug_HSL then print else (fun _ -> ())

// FIXME(ADL): the ghost transcript is buggy in the KaRaMeL-extracted version

let erased_transcript : Type0 =
    if false then hs_transcript
    else FStar.Ghost.erased hs_transcript
/
prims.fst.checked MiTLS.TLSInfo.fst.checked MiTLS.TLSError.fst.checked MiTLS.TLSConstants.fsti.checked MiTLS.Range.fst.checked MiTLS.Parse.fst.checked MiTLS.Mem.fst.checked MiTLS.Hashing.CRF.fsti.checked MiTLS.Hashing.fsti.checked MiTLS.HandshakeMessages.fsti.checked MiTLS.DebugFlags.fst.checked MiTLS.CommonDH.fsti.checked FStar.Seq.fst.checked FStar.Pervasives.Native.fst.checked FStar.Pervasives.fsti.checked FStar.List.Tot.fst.checked FStar.IO.fst.checked FStar.HyperStack.fst.checked FStar.Ghost.fsti.checked FStar.Error.fst.checked FStar.Classical.fsti.checked FStar.Bytes.fsti.checked
MiTLS.HandshakeLog.fst
l: MiTLS.HandshakeLog.erased_transcript -> Prims.GTot MiTLS.HandshakeLog.hs_transcript
MiTLS.HandshakeLog.erased_transcript FStar.Ghost.reveal MiTLS.HandshakeLog.hs_transcript
let reveal_log (l: erased_transcript) : GTot (hs_transcript) =
  
if false then l else FStar.Ghost.reveal l