anchor.diff:                                    let closing = abortWithAlert (Conn(id,c)) AD_handshake_failure reason in
                                     let wo,conn = writeAll closing in
                                     WriteOutcome(wo),conn
  +                          //#end-alertAttackRecv
                             | InCCSError (x,y,hs) ->
                                 let c = {c with handshake = hs} in
                                 let closing = abortWithAlert (Conn(id,c)) x y in
  
positive.code:                   | (Change_cipher_spec, FirstHandshake(_)) | (Change_cipher_spec, Open) ->
                          let f = TLSFragment.RecordPlainToCCSPlain id.id_in history rg frag in
                          match Handshake.recv_ccs id c.handshake rg f with 
                            | InCCSAck(nextID,nextR,hs) ->
                                (* We know statically that Handshake and Application data buffers are empty.
                                 * We check Alert. We are going to reset the Alert buffer anyway, so we
  
negative.code:                     // We are finishing a handshake. Force to read, so that we'll complete the handshake.
                      (WMustRead,Conn(id,c)) 
  
            //#begin-alertAttackSend
            | Handshake.OutCCS(rg,ccs,nextID,nextWrite,new_hs_state) ->
                      let nextWCS = Record.initConnState nextID.id_out StatefulLHAE.WriterState nextWrite in
                      (* we send a (complete) CCS fragment *)
  