anchor.diff:  	ReqPacket2 = radius:codec(Request2),
   	gen_udp:send(Socket, Address, Port, ReqPacket2).
   
  -receive_id(Socket, Address, Port, Secret, ReqAuth, RadId) ->
  +access_response(Socket, Address, Port, Secret, RadId, ReqAuth) ->
   	{ok, {Address, Port, RespPacket1}} = gen_udp:recv(Socket, 0),
   	Resp1 = radius:codec(RespPacket1),
   	#radius{code = ?AccessChallenge, id = RadId, authenticator = RespAuth,
  
positive.code: 	SharedSecret = ct:get_config(radius_shared_secret),
  	ok = ocs:add_client(AuthAddress, SharedSecret),
  	NasId = atom_to_list(node()),
  	PeerId = <<"25252525">>,
  	PeerPassword = ocs:generate_password(),
  	ok = ocs:add_subscriber(PeerId, PeerPassword, []),
  	[{nas_id, NasId}, {peer_id, PeerId}] ++ Config.
  
  -spec end_per_suite(Config :: [tuple()]) -> any().
  %% Cleanup after the whole suite.
  
negative.code: 	[{userdata, [{doc, "Send an EAP-pwd-Commit/Response to peer"}]}].
  
  pwd_commit(Config) ->
  	PeerId = <<"34567890">>,
  	MAC = "cc:dd:ee:ff:aa:bb",
  	PeerAuth = ocs:generate_password(),
  	ok = ocs:add_subscriber(PeerId, PeerAuth, []),
  	Socket = ?config(socket, Config), 
  	{ok, Address} = application:get_env(ocs, radius_auth_addr),
  	{ok, Port} = application:get_env(ocs, radius_auth_port),
  	NasId = ?config(nas_id, Config),
  	UserName = ct:get_config(radius_username),
  	Secret = ct:get_config(radius_shared_secret),
  	ReqAuth1 = radius:authenticator(),
  	RadId = 4, EapId = 1,
  	ok = send_identity(Socket, Address, Port, NasId, UserName,
  			Secret, PeerId, MAC, ReqAuth1, EapId, RadId),
  	NextEapId = EapId + 1,
  	{NextEapId, _ServerID} = receive_id(Socket, Address,
  			Port, Secret, ReqAuth1, RadId),
  	ReqAuth2 = radius:authenticator(),
  	Token = crypto:rand_bytes(4),
  	send_id(Socket, Address, Port, Secret, ReqAuth2,
  			UserName, NasId, PeerId, MAC, Token, NextEapId, RadId + 1),
  	{ok, {_Address, _Port, RespPacket1}} = gen_udp:recv(Socket, 0),
  	Response1 = radius:codec(RespPacket1),
  	#radius{code = ?AccessChallenge, attributes = Attributes} = Response1,
  	A1 = radius_attributes:codec(Attributes),
  	MsgAuth2 = radius_attributes:fetch(?MessageAuthenticator, A1),
  	A2 = radius_attributes:store(?MessageAuthenticator,
  			list_to_binary(lists:duplicate(16,0)), A1),
  	Response2 = Response1#radius{authenticator = ReqAuth2, attributes = A2},
  	RespPacket2 = radius:codec(Response2),
  	MsgAuth2 = crypto:hmac(md5, Secret, RespPacket2),
  	EapMessage2 = radius_attributes:fetch(?EAPMessage, A1),
  	EapIdCommit = NextEapId + 1,
  	#eap_packet{code = request, type = ?PWD, identifier = EapIdCommit,
  			data = EapData} = ocs_eap_codec:eap_packet(EapMessage2),
  	#eap_pwd{length = false, more = false, pwd_exch = commit,
  		data = EapPwdData} = ocs_eap_codec:eap_pwd(EapData),
  	#eap_pwd_commit{element = _ElementS,
  			scalar = _ScalarS} = ocs_eap_codec:eap_pwd_commit(EapPwdData).
  	
  pwd_confirm() ->
  	[{userdata, [{doc, "Send an EAP-pwd-Conform/Response to peer"}]}].
  