Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-AMF
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
1
Issues
1
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenXG
OpenXG-AMF
Commits
25d5a587
Commit
25d5a587
authored
Jan 11, 2023
by
Tien Thinh NGUYEN
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update Authentication Request
parent
a78537c1
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
67 additions
and
39 deletions
+67
-39
src/nas/common/Ie_Const.hpp
src/nas/common/Ie_Const.hpp
+8
-4
src/nas/msgs/AuthenticationRequest.cpp
src/nas/msgs/AuthenticationRequest.cpp
+51
-29
src/nas/msgs/AuthenticationRequest.hpp
src/nas/msgs/AuthenticationRequest.hpp
+7
-5
src/nas/msgs/RegistrationRequest.cpp
src/nas/msgs/RegistrationRequest.cpp
+1
-1
No files found.
src/nas/common/Ie_Const.hpp
View file @
25d5a587
...
@@ -90,9 +90,13 @@ constexpr uint8_t kIeiPayloadContainerType = 0x08; // Should be verified
...
@@ -90,9 +90,13 @@ constexpr uint8_t kIeiPayloadContainerType = 0x08; // Should be verified
constexpr
uint8_t
kIeiNetworkSlicingIndication
=
0x09
;
// 9-(4 higher bits)
constexpr
uint8_t
kIeiNetworkSlicingIndication
=
0x09
;
// 9-(4 higher bits)
constexpr
uint8_t
kIeiMicoIndication
=
0x0B
;
// B-(4 higher bits)
constexpr
uint8_t
kIeiMicoIndication
=
0x0B
;
// B-(4 higher bits)
constexpr
uint8_t
kIeiNasKeySetIdentifier
=
0x0C
;
// C-(4 higher bits)
constexpr
uint8_t
kIei5gmmCapability
=
0x10
;
constexpr
uint8_t
kIei5gmmCapability
=
0x10
;
constexpr
uint8_t
kIeiUeUsageSetting
=
0x18
;
constexpr
uint8_t
kIeiUeUsageSetting
=
0x18
;
constexpr
uint8_t
kIeiAuthenticationParameterAutn
=
0x20
;
constexpr
uint8_t
kIeiAuthenticationParameterRand
=
0x21
;
constexpr
uint8_t
kIeiAllowedPduSessionStatus
=
0x25
;
constexpr
uint8_t
kIeiAllowedPduSessionStatus
=
0x25
;
constexpr
uint8_t
kIeiUeStatus
=
0x2b
;
constexpr
uint8_t
kIeiUeStatus
=
0x2b
;
...
@@ -121,5 +125,5 @@ constexpr uint8_t kIei5gGuti = 0x77;
...
@@ -121,5 +125,5 @@ constexpr uint8_t kIei5gGuti = 0x77;
constexpr
uint8_t
kIeiImeisv
=
0x77
;
constexpr
uint8_t
kIeiImeisv
=
0x77
;
constexpr
uint8_t
kIeiNonImeisvPei
=
0x78
;
constexpr
uint8_t
kIeiNonImeisvPei
=
0x78
;
constexpr
uint8_t
kIeiEapMessage
=
0x78
;
// TODO: to be verified
constexpr
uint8_t
kIeiEapMessage
=
0x78
;
constexpr
uint8_t
kIeiPayloadContainer
=
0x7b
;
constexpr
uint8_t
kIeiPayloadContainer
=
0x7b
;
src/nas/msgs/AuthenticationRequest.cpp
View file @
25d5a587
...
@@ -29,9 +29,9 @@ using namespace nas;
...
@@ -29,9 +29,9 @@ using namespace nas;
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
AuthenticationRequest
::
AuthenticationRequest
()
AuthenticationRequest
::
AuthenticationRequest
()
:
NasMmPlainHeader
(
EPD_5GS_MM_MSG
,
AUTHENTICATION_REQUEST
)
{
:
NasMmPlainHeader
(
EPD_5GS_MM_MSG
,
AUTHENTICATION_REQUEST
)
{
ie_authentication_parameter_rand
=
NULL
;
ie_authentication_parameter_rand
=
std
::
nullopt
;
ie_authentication_parameter_autn
=
NULL
;
ie_authentication_parameter_autn
=
std
::
nullopt
;
ie_eap_message
=
NULL
;
ie_eap_message
=
std
::
nullopt
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
...
@@ -57,18 +57,20 @@ void AuthenticationRequest::setABBA(uint8_t length, uint8_t* value) {
...
@@ -57,18 +57,20 @@ void AuthenticationRequest::setABBA(uint8_t length, uint8_t* value) {
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
AuthenticationRequest
::
setAuthentication_Parameter_RAND
(
uint8_t
*
value
)
{
void
AuthenticationRequest
::
setAuthentication_Parameter_RAND
(
uint8_t
*
value
)
{
ie_authentication_parameter_rand
=
ie_authentication_parameter_rand
=
new
Authentication_Parameter_RAND
(
0x21
,
value
);
std
::
make_optional
<
Authentication_Parameter_RAND
>
(
kIeiAuthenticationParameterRand
,
value
);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
AuthenticationRequest
::
setAuthentication_Parameter_AUTN
(
uint8_t
*
value
)
{
void
AuthenticationRequest
::
setAuthentication_Parameter_AUTN
(
uint8_t
*
value
)
{
ie_authentication_parameter_autn
=
ie_authentication_parameter_autn
=
new
Authentication_Parameter_AUTN
(
0x20
,
value
);
std
::
make_optional
<
Authentication_Parameter_AUTN
>
(
kIeiAuthenticationParameterAutn
,
value
);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
AuthenticationRequest
::
setEAP_Message
(
bstring
eap
)
{
void
AuthenticationRequest
::
setEAP_Message
(
bstring
eap
)
{
ie_eap_message
=
new
EAP_Message
(
0x78
,
eap
);
ie_eap_message
=
std
::
make_optional
<
EAP_Message
>
(
kIeiEapMessage
,
eap
);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
...
@@ -105,11 +107,11 @@ int AuthenticationRequest::Encode(uint8_t* buf, int len) {
...
@@ -105,11 +107,11 @@ int AuthenticationRequest::Encode(uint8_t* buf, int len) {
}
}
// Authentication parameter RAND
// Authentication parameter RAND
if
(
!
ie_authentication_parameter_rand
)
{
if
(
!
ie_authentication_parameter_rand
.
has_value
()
)
{
Logger
::
nas_mm
().
warn
(
Logger
::
nas_mm
().
warn
(
"IE ie_authentication_parameter_rand is not available"
);
"IE ie_authentication_parameter_rand is not available"
);
}
else
{
}
else
{
int
size
=
ie_authentication_parameter_rand
->
Encode
(
int
size
=
ie_authentication_parameter_rand
.
value
().
Encode
(
buf
+
encoded_size
,
len
-
encoded_size
);
buf
+
encoded_size
,
len
-
encoded_size
);
if
(
size
!=
0
)
{
if
(
size
!=
0
)
{
encoded_size
+=
size
;
encoded_size
+=
size
;
...
@@ -119,11 +121,11 @@ int AuthenticationRequest::Encode(uint8_t* buf, int len) {
...
@@ -119,11 +121,11 @@ int AuthenticationRequest::Encode(uint8_t* buf, int len) {
}
}
}
}
// Authentication parameter AUTN
// Authentication parameter AUTN
if
(
!
ie_authentication_parameter_autn
)
{
if
(
!
ie_authentication_parameter_autn
.
has_value
()
)
{
Logger
::
nas_mm
().
warn
(
Logger
::
nas_mm
().
warn
(
"IE ie_authentication_parameter_autn is not available"
);
"IE ie_authentication_parameter_autn is not available"
);
}
else
{
}
else
{
int
size
=
ie_authentication_parameter_autn
->
Encode
(
int
size
=
ie_authentication_parameter_autn
.
value
().
Encode
(
buf
+
encoded_size
,
len
-
encoded_size
);
buf
+
encoded_size
,
len
-
encoded_size
);
if
(
size
!=
0
)
{
if
(
size
!=
0
)
{
encoded_size
+=
size
;
encoded_size
+=
size
;
...
@@ -133,10 +135,11 @@ int AuthenticationRequest::Encode(uint8_t* buf, int len) {
...
@@ -133,10 +135,11 @@ int AuthenticationRequest::Encode(uint8_t* buf, int len) {
}
}
}
}
// EAP message
// EAP message
if
(
!
ie_eap_message
)
{
if
(
!
ie_eap_message
.
has_value
()
)
{
Logger
::
nas_mm
().
warn
(
"IE ie_eap_message is not available"
);
Logger
::
nas_mm
().
warn
(
"IE ie_eap_message is not available"
);
}
else
{
}
else
{
int
size
=
ie_eap_message
->
Encode
(
buf
+
encoded_size
,
len
-
encoded_size
);
int
size
=
ie_eap_message
.
value
().
Encode
(
buf
+
encoded_size
,
len
-
encoded_size
);
if
(
size
!=
0
)
{
if
(
size
!=
0
)
{
encoded_size
+=
size
;
encoded_size
+=
size
;
}
else
{
}
else
{
...
@@ -154,6 +157,7 @@ int AuthenticationRequest::Encode(uint8_t* buf, int len) {
...
@@ -154,6 +157,7 @@ int AuthenticationRequest::Encode(uint8_t* buf, int len) {
int
AuthenticationRequest
::
Decode
(
uint8_t
*
buf
,
int
len
)
{
int
AuthenticationRequest
::
Decode
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"Decoding RegistrationReject message"
);
Logger
::
nas_mm
().
debug
(
"Decoding RegistrationReject message"
);
int
decoded_size
=
0
;
int
decoded_size
=
0
;
int
decoded_result
=
0
;
decoded_size
=
NasMmPlainHeader
::
Decode
(
buf
,
len
);
decoded_size
=
NasMmPlainHeader
::
Decode
(
buf
,
len
);
decoded_size
+=
ie_ngKSI
.
Decode
(
decoded_size
+=
ie_ngKSI
.
Decode
(
...
@@ -168,26 +172,44 @@ int AuthenticationRequest::Decode(uint8_t* buf, int len) {
...
@@ -168,26 +172,44 @@ int AuthenticationRequest::Decode(uint8_t* buf, int len) {
Logger
::
nas_mm
().
debug
(
"First option IEI 0x%x"
,
octet
);
Logger
::
nas_mm
().
debug
(
"First option IEI 0x%x"
,
octet
);
while
((
octet
!=
0x0
))
{
while
((
octet
!=
0x0
))
{
switch
(
octet
)
{
switch
(
octet
)
{
case
0x21
:
{
case
kIeiAuthenticationParameterRand
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI(0x21)"
);
Logger
::
nas_mm
().
debug
(
ie_authentication_parameter_rand
=
new
Authentication_Parameter_RAND
();
"Decoding IEI 0x%x"
,
kIeiAuthenticationParameterRand
);
decoded_size
+=
ie_authentication_parameter_rand
->
Decode
(
Authentication_Parameter_RAND
ie_authentication_parameter_rand_tmp
=
{};
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
if
((
decoded_result
=
ie_authentication_parameter_rand_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
))
==
KEncodeDecodeError
)
return
decoded_result
;
decoded_size
+=
decoded_result
;
ie_authentication_parameter_rand
=
std
::
optional
<
Authentication_Parameter_RAND
>
(
ie_authentication_parameter_rand_tmp
);
octet
=
*
(
buf
+
decoded_size
);
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
}
break
;
case
0x20
:
{
case
kIeiAuthenticationParameterAutn
:
{
ie_authentication_parameter_autn
=
new
Authentication_Parameter_AUTN
();
Authentication_Parameter_AUTN
ie_authentication_parameter_autn_tmp
=
{};
decoded_size
+=
ie_authentication_parameter_autn
->
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
if
((
decoded_result
=
ie_authentication_parameter_autn_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
))
==
KEncodeDecodeError
)
return
decoded_result
;
decoded_size
+=
decoded_result
;
ie_authentication_parameter_autn
=
std
::
optional
<
Authentication_Parameter_AUTN
>
(
ie_authentication_parameter_autn_tmp
);
octet
=
*
(
buf
+
decoded_size
);
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
}
break
;
case
0x78
:
{
case
kIeiEapMessage
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x78"
);
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIeiEapMessage
);
ie_eap_message
=
new
EAP_Message
();
EAP_Message
ie_eap_message_tmp
=
{};
decoded_size
+=
ie_eap_message
->
Decode
(
if
((
decoded_result
=
ie_eap_message_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
buf
+
decoded_size
,
len
-
decoded_size
,
true
))
==
KEncodeDecodeError
)
return
decoded_result
;
decoded_size
+=
decoded_result
;
ie_eap_message
=
std
::
optional
<
EAP_Message
>
(
ie_eap_message_tmp
);
octet
=
*
(
buf
+
decoded_size
);
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
Logger
::
nas_mm
().
debug
(
"Next IEI 0x%x"
,
octet
);
}
break
;
}
break
;
...
...
src/nas/msgs/AuthenticationRequest.hpp
View file @
25d5a587
...
@@ -45,9 +45,11 @@ class AuthenticationRequest : public NasMmPlainHeader {
...
@@ -45,9 +45,11 @@ class AuthenticationRequest : public NasMmPlainHeader {
public:
public:
NasKeySetIdentifier
ie_ngKSI
;
// Mandatory
NasKeySetIdentifier
ie_ngKSI
;
// Mandatory
ABBA
ie_abba
;
// Mandatory
ABBA
ie_abba
;
// Mandatory
Authentication_Parameter_RAND
*
ie_authentication_parameter_rand
;
// Optional
std
::
optional
<
Authentication_Parameter_RAND
>
Authentication_Parameter_AUTN
*
ie_authentication_parameter_autn
;
// Optional
ie_authentication_parameter_rand
;
// Optional
EAP_Message
*
ie_eap_message
;
// Optional
std
::
optional
<
Authentication_Parameter_AUTN
>
ie_authentication_parameter_autn
;
// Optional
std
::
optional
<
EAP_Message
>
ie_eap_message
;
// Optional
};
};
}
// namespace nas
}
// namespace nas
...
...
src/nas/msgs/RegistrationRequest.cpp
View file @
25d5a587
...
@@ -174,7 +174,7 @@ void RegistrationRequest::Set5gSTmsi() {}
...
@@ -174,7 +174,7 @@ void RegistrationRequest::Set5gSTmsi() {}
void
RegistrationRequest
::
setNonCurrentNativeNasKSI
(
void
RegistrationRequest
::
setNonCurrentNativeNasKSI
(
uint8_t
tsc
,
uint8_t
key_set_id
)
{
uint8_t
tsc
,
uint8_t
key_set_id
)
{
ie_non_current_native_nas_ksi
=
std
::
make_optional
<
NasKeySetIdentifier
>
(
ie_non_current_native_nas_ksi
=
std
::
make_optional
<
NasKeySetIdentifier
>
(
0xC
,
tsc
,
key_set_id
);
// TODO: remove hardcoded value
kIeiNasKeySetIdentifier
,
tsc
,
key_set_id
);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment