anchor.diff:  		radius_fsm = RadiusFsm, grp_dec = GrpDec, rand_func = RandomFunc,
   		prf = PRF, s_rand = S_rand} = StateData)->
   	try 
  -		EAPData = ocs_eap_codec:eap_packet(EAPPacket),
  -		#eap_packet{code = ?Response, identifier = EapID, data = Data} = EAPData,
  +		#eap_packet{code = ?Response, identifier = EapID, data = Data} = ocs_eap_codec:eap_packet(EAPPacket),
   		EAPHeader = ocs_eap_codec:eap_pwd(Data),
   		#eap_pwd{type = ?PWD, pwd_exch = commit, data = BodyData} = EAPHeader,
   		Body = ocs_eap_codec:eap_pwd_commit(BodyData),
  
positive.code: 			ok ->
  				Ks = ocs_eap_pwd:compute_ks(<<S_rand:256>>, PWE, ScalarP, ElementP),
  				Input = [<<Ks/binary, ElementS/binary, ScalarS/binary, ElementP/binary,
  						ScalarP/binary, 0, GrpDec/binary, RandomFunc/binary, PRF/binary>>],
  				ConfirmS = ocs_eap_pwd:h(Input),
  				Body = #eap_pwd_confirm{confirm = ConfirmS},
  				BodyData = ocs_eap_codec:eap_pwd_confirm(Body),
  				Header = #eap_pwd{type = ?PWD, length = false,
  						more = false, pwd_exch = confirm, data = BodyData},
  				EAPData = ocs_eap_codec:eap_pwd(Header),
  				NewEAPID = EapID + 1,
  				Packet = #eap_packet{code = ?Request, identifier = NewEAPID, data = EAPData},
  				EAPPacketData = ocs_eap_codec:eap_packet(Packet),
  				AttributeList0 = radius_attributes:new(),
  				AttributeList1 = radius_attributes:store(?EAPMessage,
  						EAPPacketData, AttributeList0),
  				AttributeList2 = radius_attributes:store(?MessageAuthenticator,
  						<<0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0>>, AttributeList1),
  				AttrList2bin = radius_attributes:codec(AttributeList2),
  
negative.code: 	Response = #radius{code = ?AccessChallenge, id = RadiusID,
  			authenticator = ResponseAuthenticator, attributes = AttributeData},
  	ResponsePacket = radius:codec(Response),
  	radius:response(RadiusFsm, {response, ResponsePacket}),
  	ok.
  
  