libosmogsm UNKNOWN
Osmocom GSM library
Loading...
Searching...
No Matches
Osmocom Authentication Protocol

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