anchor.diff:                      //MK why don't we store the pmsdata? We should also store the pmsId
                       let dhpms = DH.exp p g gx y x in
                       let pms = PMS.DHPMS(p,g,y,gx,dhpms) in //MK is the order of y, gx right?
  -                    let ms =
  -                        if hasExtendedMS si.extensions then
  -                            CRE.extract_extended si pms log
  -                        else
  -                            CRE.extract si pms
  +                    let ms = extract si pms log in
                       (* TODO: here we should shred pms *)
                       (* move to new state *)
                       recv_fragment_server ci 
  
positive.code:                     let pmsid = pmsId pms
                      let si = {si with pmsId = pmsid; pmsData = pmsdata} in
                      let log = log @| to_log in
                      let ms =
                          if hasExtendedMS si.extensions then
                              CRE.extract_extended si pms log
                          else
                              CRE.extract si pms
                      (* TODO: we should shred the pms *)
                      (* move to new state *)
                      if si.client_auth then
  
negative.code:         (* No client certificate ==> no certificateVerify message *)
          empty_bytes
    
  let extract si pms log =
      if hasExtendedMS si.extensions then
          CRE.extract_extended si pms log
      else
          CRE.extract si pms
  
  let prepare_client_output_full_RSA (ci:ConnectionInfo) (state:hs_state) (si:SessionInfo) (cert_req:Cert.sign_cert) (log:log) : (hs_state * SessionInfo * PRF.masterSecret * log) Result =
      let clientCertBytes,certList = getCertificateBytes si cert_req in
  