anchor.diff:  send_user(Pid, Msg) ->
       Pid ! Msg.
   
  -%% %% This is the code for {packet,ssl} removed because it was slower 
  -%% %% than handling it in erlang.
  -%% next_record(#state{socket = Socket, 
  -%% 		   tls_buffer = [Msg|Rest],
  -%% 		   connection_states = ConnectionStates0} = State) ->
  -%%     Buffer =
  -%% 	case Rest of
  -%% 	    [] -> 
  -%% 		inet:setopts(Socket, [{active,once}]),
  -%% 		buffer;
  -%% 	    _ -> Rest
  -%% 	end,
  -%%     case Msg of
  -%% 	#ssl_tls{} ->
  -%% 	    {Plain, ConnectionStates} =
  -%% 		ssl_record:decode_cipher_text(Msg, ConnectionStates0),
  -%% 	    gen_fsm:send_all_state_event(self(), Plain),
  -%% 	    State#state{tls_buffer=Buffer, connection_states = ConnectionStates};
  -%% 	{ssl_close, Msg} ->
  -%% 	    self() ! Msg,
  -%% 	    State#state{tls_buffer=Buffer}
  -%%     end;
  -%% next_record(#state{socket = Socket, tls_buffer = undefined} = State) ->
  -%%     inet:setopts(Socket, [{active,once}]),
  -%%     State#state{tls_buffer=continue};
  -%% next_record(State) ->
  -%%     State#state{tls_buffer=continue}.
  -
   next_record(#state{tls_cipher_texts = [], socket = Socket} = State) ->
       inet:setopts(Socket, [{active,once}]),
       State;
  
positive.code:     {stop, normal, State};
  
  handle_event(#alert{level = ?WARNING, description = ?NO_RENEGOTIATION} = Alert, StateName, 
  	     #state{log_alert = Log, renegotiation = {true, From}} = State) when not is_atom(From) ->
      log_alert(Log, StateName, Alert),
      gen_fsm:reply(From, {error, renegotiation_rejected}),
      {next_state, connection, next_record(State)};
  
negative.code:        Algo == dh_rsa ->
      State;
  
  %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,
  