anchor.diff:  
   handle_event(_, #ssh_msg_kex_dh_gex_reply{} = Msg, {key_exchange_dh_gex_reply,client,ReNeg}, D) ->
       {ok, NewKeys, Ssh1} = ssh_transport:handle_kex_dh_gex_reply(Msg, D#data.ssh_params),
  -    ok = send_bytes(NewKeys, D),
  +    send_bytes(NewKeys, D),
       {next_state, {new_keys,client,ReNeg}, D#data{ssh_params=Ssh1}};
   
   
  
positive.code: %%%---- diffie-hellman
  handle_event(_, #ssh_msg_kexdh_init{} = Msg, {key_exchange,server,ReNeg}, D) ->
      {ok, KexdhReply, Ssh1} = ssh_transport:handle_kexdh_init(Msg, D#data.ssh_params),
      ok = send_bytes(KexdhReply, D),
      {ok, NewKeys, Ssh} = ssh_transport:new_keys_message(Ssh1),
      ok = send_bytes(NewKeys, D),
      {next_state, {new_keys,server,ReNeg}, D#data{ssh_params=Ssh}};
  
  handle_event(_, #ssh_msg_kexdh_reply{} = Msg, {key_exchange,client,ReNeg}, D) ->
      {ok, NewKeys, Ssh} = ssh_transport:handle_kexdh_reply(Msg, D#data.ssh_params),
      ok = send_bytes(NewKeys, D),
      {next_state, {new_keys,client,ReNeg}, D#data{ssh_params=Ssh}};
  
  %%%---- diffie-hellman group exchange
  handle_event(_, #ssh_msg_kex_dh_gex_request{} = Msg, {key_exchange,server,ReNeg}, D) ->
      {ok, GexGroup, Ssh} = ssh_transport:handle_kex_dh_gex_request(Msg, D#data.ssh_params),
      ok = send_bytes(GexGroup, D),
      {next_state, {key_exchange_dh_gex_init,server,ReNeg}, D#data{ssh_params=Ssh}};
  
  handle_event(_, #ssh_msg_kex_dh_gex_request_old{} = Msg, {key_exchange,server,ReNeg}, D) ->
      {ok, GexGroup, Ssh} = ssh_transport:handle_kex_dh_gex_request(Msg, D#data.ssh_params),
      ok = send_bytes(GexGroup, D),
      {next_state, {key_exchange_dh_gex_init,server,ReNeg}, D#data{ssh_params=Ssh}};
  
  handle_event(_, #ssh_msg_kex_dh_gex_group{} = Msg, {key_exchange,client,ReNeg}, D) ->
      {ok, KexGexInit, Ssh} = ssh_transport:handle_kex_dh_gex_group(Msg, D#data.ssh_params),
      ok = send_bytes(KexGexInit, D),
      {next_state, {key_exchange_dh_gex_reply,client,ReNeg}, D#data{ssh_params=Ssh}};
  
  %%%---- elliptic curve diffie-hellman
  handle_event(_, #ssh_msg_kex_ecdh_init{} = Msg, {key_exchange,server,ReNeg}, D) ->
      {ok, KexEcdhReply, Ssh1} = ssh_transport:handle_kex_ecdh_init(Msg, D#data.ssh_params),
      ok = send_bytes(KexEcdhReply, D),
      {ok, NewKeys, Ssh} = ssh_transport:new_keys_message(Ssh1),
      ok = send_bytes(NewKeys, D),
      {next_state, {new_keys,server,ReNeg}, D#data{ssh_params=Ssh}};
  
  handle_event(_, #ssh_msg_kex_ecdh_reply{} = Msg, {key_exchange,client,ReNeg}, D) ->
      {ok, NewKeys, Ssh} = ssh_transport:handle_kex_ecdh_reply(Msg, D#data.ssh_params),
      ok = send_bytes(NewKeys, D),
      {next_state, {new_keys,client,ReNeg}, D#data{ssh_params=Ssh}};
  
  
  
negative.code: 
  handle_event(_, #ssh_msg_kex_dh_gex_init{} = Msg, {key_exchange_dh_gex_init,server,ReNeg}, D) ->
      {ok, KexGexReply, Ssh1} =  ssh_transport:handle_kex_dh_gex_init(Msg, D#data.ssh_params),
      send_bytes(KexGexReply, D),
      {ok, NewKeys, Ssh} = ssh_transport:new_keys_message(Ssh1),
      send_bytes(NewKeys, D),
      {next_state, {new_keys,server,ReNeg}, D#data{ssh_params=Ssh}};
  
  
  