anchor.diff:  	    throw(Alert)
       end.
   
  -key_exchange(#state{role = server, key_algorithm = Algo} = State) 
  -  when Algo == rsa;
  -       Algo == dh_dss;
  -       Algo == dh_rsa ->
  +key_exchange(#state{role = server, key_algorithm = rsa} = State) ->
       State;
  -
  -%% Remove or uncomment when we decide if to support export cipher suites
  -%%key_exchange(#state{role = server, key_algorithm = rsa_export} = State) ->
  -    %% TODO when the public key in the server certificate is
  -    %% less than or equal to 512 bits in length dont send key_exchange
  -    %% but do it otherwise
  -%%    State;
  -
   key_exchange(#state{role = server, key_algorithm = Algo,
   		    diffie_hellman_params = Params,
   		    private_key = PrivateKey,
  
positive.code: 				PublicKeyInfo});
  rsa_key_exchange(_, _) ->
      throw (?ALERT_REC(?FATAL,?HANDSHAKE_FAILURE)).
  
  %% Uncomment if we decide to support cipher suites with key_algorithm
  %% dh_rsa and dh_dss.  Could also be removed if we decide support for
  %% this will not be needed. Not supported by openssl!
  %% dh_key_exchange(OwnCert, DhKeys, true) ->
  %%     case public_key:pkix_is_fixed_dh_cert(OwnCert) of
  %% 	true ->
  %% 	    ssl_handshake:key_exchange(client, fixed_diffie_hellman);
  %% 	false ->
  %% 	    {DhPubKey, _} = DhKeys,
  %% 	    ssl_handshake:key_exchange(client, {dh, DhPubKey})
  %%     end;
  %% dh_key_exchange(_, {DhPubKey, _}, false) ->
  %%     ssl_handshake:key_exchange(client, {dh, DhPubKey}).
  
  request_client_cert(#state{ssl_options = #ssl_options{verify = verify_peer},
  			   connection_states = ConnectionStates0,
  
negative.code: 
  certify(#server_key_exchange{}, 
          State = #state{role = client, negotiated_version = Version,
                         key_algorithm = rsa}) -> 
      Alert = ?ALERT_REC(?FATAL, ?UNEXPECTED_MESSAGE),
      handle_own_alert(Alert, Version, certify_server_key_exchange, State),
      {stop, normal, State};
  