libosmogsm 1.11.0.26-c59d.202505152026
Osmocom GSM library
Loading...
Searching...
No Matches
Osmocom Authentication Protocol

The Osmocom Authentication Protocol (OAP) is a way to use the 3GPP AKA (Authentication and Key Agreement) as cryptographic authentication mechanism in other protocols that don't provide cryptographic authentication. More...

Files

file  oap.h
 
file  oap.c
 Osmocom Authentication Protocol.
 

Data Structures

struct  osmo_oap_message
 Parsed/decoded OAP protocol message. More...
 

Enumerations

enum  osmo_oap_iei {
  OAP_CAUSE_IE = 0x02 ,
  OAP_RAND_IE = 0x20 ,
  OAP_AUTN_IE = 0x23 ,
  OAP_XRES_IE = 0x24 ,
  OAP_AUTS_IE = 0x25 ,
  OAP_CLIENT_ID_IE = 0x30
}
 Information Element Identifiers for OAP IEs. More...
 
enum  osmo_oap_message_type {
  OAP_MSGT_REGISTER_REQUEST = 0b00000100 ,
  OAP_MSGT_REGISTER_ERROR = 0b00000101 ,
  OAP_MSGT_REGISTER_RESULT = 0b00000110 ,
  OAP_MSGT_CHALLENGE_REQUEST = 0b00001000 ,
  OAP_MSGT_CHALLENGE_ERROR = 0b00001001 ,
  OAP_MSGT_CHALLENGE_RESULT = 0b00001010 ,
  OAP_MSGT_SYNC_REQUEST = 0b00001100 ,
  OAP_MSGT_SYNC_ERROR = 0b00001101 ,
  OAP_MSGT_SYNC_RESULT = 0b00001110
}
 OAP message types. More...
 

Functions

int osmo_oap_decode (struct osmo_oap_message *oap_msg, const uint8_t *const_data, size_t data_len)
 Decode OAP message data.
 
void osmo_oap_encode (struct msgb *msg, const struct osmo_oap_message *oap_msg)
 Compose OAP message data.
 

Detailed Description

The Osmocom Authentication Protocol (OAP) is a way to use the 3GPP AKA (Authentication and Key Agreement) as cryptographic authentication mechanism in other protocols that don't provide cryptographic authentication.

Enumeration Type Documentation

◆ osmo_oap_iei

Information Element Identifiers for OAP IEs.

They match osmo_gsup_iei (so far).

Enumerator
OAP_CAUSE_IE 
OAP_RAND_IE 
OAP_AUTN_IE 
OAP_XRES_IE 
OAP_AUTS_IE 
OAP_CLIENT_ID_IE 

◆ osmo_oap_message_type

OAP message types.

Enumerator
OAP_MSGT_REGISTER_REQUEST 
OAP_MSGT_REGISTER_ERROR 
OAP_MSGT_REGISTER_RESULT 
OAP_MSGT_CHALLENGE_REQUEST 
OAP_MSGT_CHALLENGE_ERROR 
OAP_MSGT_CHALLENGE_RESULT 
OAP_MSGT_SYNC_REQUEST 
OAP_MSGT_SYNC_ERROR 
OAP_MSGT_SYNC_RESULT 

Function Documentation

◆ osmo_oap_decode()

int osmo_oap_decode ( struct osmo_oap_message oap_msg,
const uint8_t const_data,
size_t  data_len 
)

Decode OAP message data.

Parameters
[out]oap_msgParsed data is written to this instance.
[in]dataPointer to the data buffer containing the OAP message.
[in]data_lenLength of the OAP message data.
Returns
0 on success, a negative cause value on failure.

References data, DLOAP, GMM_CAUSE_INV_MAND_INFO, GMM_CAUSE_PROTO_ERR_UNSPEC, iei, len, LOGL_ERROR, LOGL_NOTICE, LOGP, OAP_AUTN_IE, OAP_AUTS_IE, OAP_CAUSE_IE, OAP_CLIENT_ID_IE, OAP_RAND_IE, OAP_XRES_IE, osmo_decode_big_endian(), osmo_shift_tlv(), and osmo_shift_v_fixed().

Referenced by osmo_oap_client_handle().

◆ osmo_oap_encode()

void osmo_oap_encode ( struct msgb msg,
const struct osmo_oap_message oap_msg 
)

Compose OAP message data.

Parameters
[out]msgOAP message data is appended to this message buffer.
[in]oap_msgElements to encode in the message data.

References len, msg, msgb_tlv_put(), msgb_v_put(), OAP_AUTN_IE, OAP_AUTS_IE, OAP_CAUSE_IE, OAP_CLIENT_ID_IE, OAP_RAND_IE, OAP_XRES_IE, OSMO_ASSERT, and osmo_encode_big_endian().

Referenced by osmo_oap_client_encoded().