anchor.diff:      #server_key_exchange{params = #server_dh_params{dh_p = P,dh_g = G, 
   						    dh_y = Y},
   			 signed_params = Sig, hashsign = undefined};
  +dec_hs({Major, Minor}, ?CERTIFICATE_REQUEST,
  +       <<?BYTE(CertTypesLen), CertTypes:CertTypesLen/binary,
  +	?UINT16(HashSignsLen), HashSigns:HashSignsLen/binary,
  +	?UINT16(CertAuthsLen), CertAuths:CertAuthsLen/binary>>)
  +  when Major == 3, Minor >= 3 ->
  +    #certificate_request{certificate_types = CertTypes,
  +			 hashsign_algorithms = HashSigns,
  +			 certificate_authorities = CertAuths};
   dec_hs(_Version, ?CERTIFICATE_REQUEST,
          <<?BYTE(CertTypesLen), CertTypes:CertTypesLen/binary,
   	?UINT16(CertAuthsLen), CertAuths:CertAuthsLen/binary>>) ->
  
positive.code: certificate_verify(Signature, {?'id-dsa', PublicKey, PublicKeyParams}, Version,
  		   {HashAlgo, _SignAlgo}, MasterSecret, {_, Handshake}) ->
      Hashes = calc_certificate_verify(Version, HashAlgo, MasterSecret, Handshake),
      case public_key:verify(Hashes, none, Signature, {PublicKey, PublicKeyParams}) of
  	true ->
  	    valid;
      	false ->
      	    ?ALERT_REC(?FATAL, ?BAD_CERTIFICATE)
      end.
  
  
negative.code:     #server_key_exchange{params = #server_dh_params{dh_p = P,dh_g = G,
  						    dh_y = Y},
  			 signed_params = <<>>, hashsign = {null, anon}};
  dec_hs({Major, Minor}, ?SERVER_KEY_EXCHANGE, <<?UINT16(PLen), P:PLen/binary,
  			      ?UINT16(GLen), G:GLen/binary,
  			      ?UINT16(YLen), Y:YLen/binary,
  			      ?BYTE(HashAlgo), ?BYTE(SignAlgo),
  			      ?UINT16(Len), Sig:Len/binary>>)
    when Major == 3, Minor >= 3 ->
      #server_key_exchange{params = #server_dh_params{dh_p = P,dh_g = G,
  						    dh_y = Y},
  			 signed_params = Sig,
  			 hashsign = {ssl_cipher:hash_algorithm(HashAlgo), ssl_cipher:sign_algorithm(SignAlgo)}};
  dec_hs(_Version, ?SERVER_KEY_EXCHANGE, <<?UINT16(PLen), P:PLen/binary,
  			      ?UINT16(GLen), G:GLen/binary,
  			      ?UINT16(YLen), Y:YLen/binary,
  