anchor.diff:  		confirm_s :: undefined | binary(),
   		confirm_p :: undefined | binary(),
   		mk :: undefined | binary(),
  -		msk :: undefined | binary()}).
  +		msk :: undefined | binary(),
  +		auth_app_id :: undefined | integer(),
  +		auth_req_type :: undefined | integer(),
  +		origin_host :: undefined | binary(),
  +		origin_realm :: undefined | binary()}).
   -type statedata() :: #statedata{}.
   
   -define(TIMEOUT, 30000).
  
positive.code: 			{next_state, id, NewStateData, ?TIMEOUT}
  	end.
  
  -spec id(Event, StateData) -> Result
  	when
  		Event :: timeout | term(),
  
negative.code: -export([]).
  
  %% export the ocs_eap_pwd_fsm state callbacks
  -export([eap_start/2, id/2, commit/2, confirm/2,
  			eap_start/3]).
  
  %% export the call backs needed for gen_fsm behaviour
  -export([init/1, handle_event/3, handle_sync_event/4, handle_info/3,
  			terminate/3, code_change/4]).
  
  -include_lib("radius/include/radius.hrl").
  -include_lib("diameter/include/diameter.hrl").
  -include_lib("diameter/include/diameter_gen_base_rfc6733.hrl").
  -include("ocs_eap_codec.hrl").
  -include("../include/diameter_gen_eap_application_rfc4072.hrl").
  
  -record(statedata,
  		{server_address :: inet:ip_address(),
  		server_port :: pos_integer(),
  		client_address :: undefined | inet:ip_address(),
  		client_port :: undefined | pos_integer(),
  		radius_fsm :: undefined | pid(),
  		session_id:: string() | {NAS :: inet:ip_address() | string(),
  				Port :: string(), Peer :: string()},
  		start :: undefined | #diameter_eap_app_DER{} | #radius{},
  		eap_id = 0 :: byte(),
  		group_desc  = 19 :: byte(),
  		rand_func = 1 :: byte(),
  		prf = 1 :: byte(),
  		secret :: undefined | binary(),
  		token :: undefined | binary(),
  		password :: undefined | binary(),
  		prep :: undefined | none | rfc2759 | saslprep,
  		server_id  ::  binary(),
  		peer_id :: undefined | binary(),
  		pwe :: undefined | binary(),
  		s_rand :: undefined | integer(),
  