anchor.diff:  		eap_id = EapID, radius_id = RadiusID, secret = Secret,
   		radius_fsm = RadiusFsm, authenticator = RequestAuthenticator} = StateData)->
   	{ok, HostName} = inet:gethostname(),
  +	Password = crypto:rand_bytes(4),
   	EAPData = ocs_eap_codec:eap_packet(EAPPacket),
   	#eap_packet{code = ?Response, identifier = EapID, data = Data} = EAPData,
   	EAPHeader = ocs_eap_codec:eap_pwd(Data),
   	#eap_pwd{type = ?PWD, pwd_exch = id, data = BodyData} = EAPHeader,
   	Body = ocs_eap_codec:eap_pwd_id(BodyData),
   	#eap_pwd_id{token = Token, pwd_prep = none, identity = PeerID} = Body,
  -	PWE = ocs_eap_pwd:compute_pwe(Token, PeerID, HostName, Secret),
  -	{ScalarS, ElementS} = ocs_eap_pwd:compute_scalar(Token, PWE),
  +	PWE = ocs_eap_pwd:compute_pwe(Token, PeerID, HostName, Password),
  +	{ScalarS, ElementS} = ocs_eap_pwd:compute_scalar(Password, PWE),
   	Body = #eap_pwd_commit{scalar = ScalarS, element = ElementS},
   	BodyData = ocs_eap_codec:eap_pwd_commit(Body),
   	Header = #eap_pwd{type = ?PWD, length = false,
  
positive.code: 		eap_id :: byte(),
  		authenticator :: binary(),
  		secret :: binary(),
  		radius_fsm :: pid(),
  		token :: binary(),
  		prep :: none | rfc2759 | saslprep,
  
negative.code: 			authenticator = ResponseAuthenticator, attributes = AttributeData},
  	ResponsePacket = radius:codec(Response),
  	radius:response(RadiusFsm, ResponsePacket),
  	NewStateData = StateData#statedata{password = Password, pwe = PWE,
  		peer_id = PeerID, eap_id = NewEAPID, scalar_s = ScalarS, element_s = ElementS},
  	{next_state, wait_for_commit, NewStateData, ?TIMEOUT}.
  
  -spec wait_for_commit(Event :: timeout | term(), StateData :: #statedata{}) ->
  