Copyright © 2016 - 2026 SigScale Global Inc.
Behaviours: gen_fsm.
References
This gen_fsm behaviour callback module implements the functions associated with an Authentication Center (AuC) in the user's home domain within EAP 3rd Generation Authentication and Key Agreement (EAP-AKA') in the ocs application.
The users of this module are the EAP-AKA/AKA' handlers which request
authentication vectors by sending the event:
{vector, {AkaFsm, Identity, AUTS, RAT, ANID}} (AKA')
{vector, {AkaFsm, Identity, AUTS, RAT}} (AKA)
and expect one of these replies:
{ok, {RAND, AUTN, CKprime, IKprime, XRES}} (AKA')
{ok, {RAND, AUTN, CK, IK, XRES}} (AKA)
{error, Reason}
{register, {AkaFsm, Identity}{register, {AkaFsm, Identity, APN}{ok, UserProfile, HssRealm, HssHost}{error, Reason}
statedata() = #statedata{aka_fsm = pid() | undefined, identity = binary() | undefined, apn = binary() | undefined, rand = binary() | undefined, auts = binary() | undefined, rat_type = non_neg_integer() | undefined, anid = string() | undefined, service = tuple() | false, origin_host = binary(), origin_realm = binary(), hss_realm = string() | undefined, hss_host = string() | undefined, nas_host = string() | undefined, nas_realm = string() | undefined, nas_address = inet:ip_address() | undefined, session_id = string(), aaa_failure = boolean(), attributes = radius_attributes:attributes()}
| init/1 | Initialize the ocs_eap_aka_auc_fsm finite state machine. |
| idle/2 | Handle events sent with gen_fsm:send_event/2 in the idle state. |
| vector/2 | Handle events sent with gen_fsm:send_event/2 in the vector state. |
| register/2 | Handle events sent with gen_fsm:send_event/2 in the register state. |
| handle_event/3 | Handle an event sent with gen_fsm:send_all_state_event/2. |
| handle_sync_event/4 | Handle an event sent with gen_fsm:sync_send_all_state_event/2,3. |
| handle_info/3 | Handle a received message. |
| terminate/3 | Cleanup and exit. |
| code_change/4 | Update internal state data during a release upgrade/downgrade. |
| sqn/1* | Sequence Number (SQN). |
| autn/4* | Network Authentication Token (AUTN). |
| sqn_ms/4* | Retrieve concealed SQNms from AUTS. |
| dif/1* | The DIF value represents the current difference between generated SEQ values for that user and the GLC. |
| amf/1* | Authentication Management Field (AMF). |
| kdf/5* | Key Derivation Function (KDF). |
init(Args) -> Result
Initialize the ocs_eap_aka_auc_fsm finite state machine.
See also: //stdlib/gen_fsm:init/1.
idle(Event, StateData) -> Result
Handle events sent with gen_fsm:send_event/2 in the idle state. @see //stdlib/gen_fsm:StateName/2
vector(Event, StateData) -> Result
Handle events sent with gen_fsm:send_event/2 in the vector state. @see //stdlib/gen_fsm:StateName/2
register(Event, StateData) -> Result
Handle events sent with gen_fsm:send_event/2 in the register state. @see //stdlib/gen_fsm:StateName/2
handle_event(Event, StateName, StateData) -> Result
Handle an event sent with gen_fsm:send_all_state_event/2.
See also: //stdlib/gen_fsm:handle_event/3.
handle_sync_event(Event, From, StateName, StateData) -> Result
Handle an event sent with gen_fsm:sync_send_all_state_event/2,3.
See also: //stdlib/gen_fsm:handle_sync_event/4.
handle_info(Info, StateName, StateData) -> Result
Handle a received message.
See also: //stdlib/gen_fsm:handle_info/3.
terminate(Reason, StateName, StateData) -> any()
Cleanup and exit.
See also: //stdlib/gen_fsm:terminate/3.
code_change(OldVsn, StateName, StateData, Extra) -> Result
Update internal state data during a release upgrade/downgrade.
See also: //stdlib/gen_fsm:code_change/4.
sqn(DIF) -> SQN
Sequence Number (SQN).
3GPP RTS 33.102 Annex C.1.1.3.autn(SQN, AK, AMF, MAC) -> AUTN
Network Authentication Token (AUTN).
sqn_ms(SQN, OPc, K, RAND) -> SQN
Retrieve concealed SQNms from AUTS.
dif(SQN) -> DIF
The DIF value represents the current difference between generated SEQ values for that user and the GLC.
3GPP RTS 33.102 Annex C.1.1.3.amf(Seperation) -> AMF
Authentication Management Field (AMF).
See 3GPP TS 33.102 Annex H.kdf(CK, IK, ANID, SQN, AK) -> MSK
Key Derivation Function (KDF).
See 3GPP TS 33.402 Annex A, 3GPP TS 32.220 Annex B.Generated by EDoc