Module ocs_eap_aka_auc_fsm

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.

Copyright © 2016 - 2026 SigScale Global Inc.

Behaviours: gen_fsm.

References

Description

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}

After successful authentication an EAP-AKA/AKA' handler should send a registration request event:
{register, {AkaFsm, Identity}
{register, {AkaFsm, Identity, APN}
and one of these replies is expected:
{ok, UserProfile, HssRealm, HssHost}
{error, Reason}

Data Types

statedata()

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()}

Function Index

init/1Initialize the ocs_eap_aka_auc_fsm finite state machine.
idle/2Handle events sent with gen_fsm:send_event/2 in the idle state.
vector/2Handle events sent with gen_fsm:send_event/2 in the vector state.
register/2Handle events sent with gen_fsm:send_event/2 in the register state.
handle_event/3Handle an event sent with gen_fsm:send_all_state_event/2.
handle_sync_event/4Handle an event sent with gen_fsm:sync_send_all_state_event/2,3.
handle_info/3Handle a received message.
terminate/3Cleanup and exit.
code_change/4Update 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).

Function Details

init/1

init(Args) -> Result

Initialize the ocs_eap_aka_auc_fsm finite state machine.

See also: //stdlib/gen_fsm:init/1.

idle/2

idle(Event, StateData) -> Result

Handle events sent with gen_fsm:send_event/2 in the idle state. @see //stdlib/gen_fsm:StateName/2

vector/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/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/3

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/4

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/3

handle_info(Info, StateName, StateData) -> Result

Handle a received message.

See also: //stdlib/gen_fsm:handle_info/3.

terminate/3

terminate(Reason, StateName, StateData) -> any()

Cleanup and exit.

See also: //stdlib/gen_fsm:terminate/3.

code_change/4

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/1 *

sqn(DIF) -> SQN

Sequence Number (SQN).

3GPP RTS 33.102 Annex C.1.1.3.

autn/4 *

autn(SQN, AK, AMF, MAC) -> AUTN

Network Authentication Token (AUTN).

sqn_ms/4 *

sqn_ms(SQN, OPc, K, RAND) -> SQN

Retrieve concealed SQNms from AUTS.

dif/1 *

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/1 *

amf(Seperation) -> AMF

Authentication Management Field (AMF).

See 3GPP TS 33.102 Annex H.

kdf/5 *

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