anchor.diff:              | Error(x,y) -> Error(x,y)
               | Correct(extL) -> parseClientSCSVs ch_ciphers extL
   
  -let prepareClientExtensions cfg (conn:ConnectionInfo) renegoCVD (resumeCVDOpt:cVerifyData option) =
  -    let res =
  -        if cfg.safe_renegotiation then
  -            [CE_renegotiation_info(renegoCVD)]
  -        else
  -            []
  -    if cfg.safe_resumption then
  -        match resumeCVDOpt with
  +let prepareClientExtensions (cfg:config) (conn:ConnectionInfo) renegoCVD (resumeCVDOpt:cVerifyData option) =
  +    (* Always send supported extensions. The configuration options will influence how strict the tests will be *)
  +    let res = [CE_renegotiation_info(renegoCVD)]
  +    match resumeCVDOpt with
           | None -> res
           | Some(resumeCVD) -> CE_resumption_info(resumeCVD) :: res
  -    else
  -        res
   
   let serverToNegotiatedExtension cExtL (resuming:bool) res sExt : negotiatedExtensions Result=
       match res with
  
positive.code:     | _ -> None
  
  let checkServerResumptionInfoExtension config (sExtL: serverExtension list) cVerifyData sVerifyData =
      if config.safe_resumption then
          match List.tryPick isServerResumptionInfo sExtL with
          | None -> false
          | Some(x) ->
              let (cvd,svd) = x in
              equalBytes (cvd @| svd) (cVerifyData @| sVerifyData)
      else
          true
  
  (* SignatureAndHashAlgorithm parsing functions *)
  let sigHashAlgBytes alg =
  
negative.code:     | _ -> None
  
  let checkServerRenegotiationInfoExtension config (sExtL: serverExtension list) cVerifyData sVerifyData =
      match List.tryPick isServerRenegotiationInfo sExtL with
      | None -> not (config.safe_renegotiation)
      | Some(x) ->
          let (cvd,svd) = x in
          equalBytes (cvd @| svd) (cVerifyData @| sVerifyData)
  
  let isClientResumptionInfo e =
      match e with
  