Commit 2921bc4d authored by Tien Thinh NGUYEN's avatar Tien Thinh NGUYEN

Update Authentication_Parameter_RAND

parent 25d5a587
...@@ -18,92 +18,94 @@ ...@@ -18,92 +18,94 @@
* For more information about the OpenAirInterface (OAI) Software Alliance: * For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org * contact@openairinterface.org
*/ */
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "Authentication_Parameter_RAND.hpp" #include "Authentication_Parameter_RAND.hpp"
#include "3gpp_24.501.hpp"
#include "common_defs.h"
#include "logger.hpp" #include "logger.hpp"
using namespace nas; using namespace nas;
//------------------------------------------------------------------------------
Authentication_Parameter_RAND::Authentication_Parameter_RAND()
: Type3NasIe(), _value() {
SetIeName(kAuthenticationParameterRandIeName);
}
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
Authentication_Parameter_RAND::Authentication_Parameter_RAND(uint8_t iei) Authentication_Parameter_RAND::Authentication_Parameter_RAND(uint8_t iei)
: _value() { : Type3NasIe(iei), _value() {
_iei = iei; SetIeName(kAuthenticationParameterRandIeName);
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
Authentication_Parameter_RAND::Authentication_Parameter_RAND( Authentication_Parameter_RAND::Authentication_Parameter_RAND(
const uint8_t iei, uint8_t* value) { uint8_t iei, uint8_t* value)
_iei = iei; : Type3NasIe(iei) {
for (int i = 0; i < 16; i++) { for (int i = 0; i < 16; i++) {
this->_value[i] = value[i]; this->_value[i] = value[i];
} }
SetIeName(kAuthenticationParameterRandIeName);
} }
//------------------------------------------------------------------------------
Authentication_Parameter_RAND::Authentication_Parameter_RAND()
: _iei(), _value() {}
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
Authentication_Parameter_RAND::~Authentication_Parameter_RAND() {} Authentication_Parameter_RAND::~Authentication_Parameter_RAND() {}
/*
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
uint8_t* Authentication_Parameter_RAND::getValue() { uint8_t* Authentication_Parameter_RAND::getValue() {
return _value; return _value;
} }
*/
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
int Authentication_Parameter_RAND::Encode(uint8_t* buf, int len) { int Authentication_Parameter_RAND::Encode(uint8_t* buf, int len) {
Logger::nas_mm().debug( Logger::nas_mm().debug("Encoding %s", GetIeName().c_str());
"Encoding Authentication_Parameter_RAND IEI (0x%x)", _iei);
if (len < 17) { if (len < kAuthenticationParameterRandLength) {
Logger::nas_mm().error("len is less than 17"); Logger::nas_mm().error(
return 0; "Buffer length is less than the minimum length of this IE (%d octet)",
kAuthenticationParameterRandLength);
return KEncodeDecodeError;
} }
int encoded_size = 0; int encoded_size = 0;
if (_iei) {
*(buf + encoded_size) = _iei; // IEI
encoded_size++; encoded_size += Type3NasIe::Encode(buf + encoded_size, len);
memcpy((void*) (buf + encoded_size), (void*) _value, 16); for (int i = 0; i < kAuthenticationParameterRandLength - 1; i++) {
encoded_size += 16; ENCODE_U8(buf + encoded_size, _value[i], encoded_size);
// int i = 0;
// for (int i = 0; i < 16; i++) {
// *(buf + encoded_size) = _value[i]; encoded_size++;
//}
return encoded_size;
} else {
// *(buf + encoded_size) = length - 1; encoded_size++;
// *(buf + encoded_size) = _value; encoded_size++; encoded_size++;
} }
Logger::nas_mm().debug( Logger::nas_mm().debug(
"Encoded Authentication_Parameter_RAND len (%d)", encoded_size); "Encoded %s, len (%d)", GetIeName().c_str(), encoded_size);
return encoded_size; return encoded_size;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
int Authentication_Parameter_RAND::Decode( int Authentication_Parameter_RAND::Decode(uint8_t* buf, int len, bool is_iei) {
uint8_t* buf, int len, bool is_option) { Logger::nas_mm().debug("Decoding %s", GetIeName().c_str());
Logger::nas_mm().debug(
"Decoding Authentication_Parameter_RAND IEI (0x%x)", *buf); if (len < kAuthenticationParameterRandLength) {
int decoded_size = 0; Logger::nas_mm().error(
if (is_option) { "Buffer length is less than the minimum length of this IE (%d octet)",
decoded_size++; kAuthenticationParameterRandLength);
return KEncodeDecodeError;
} }
for (int i = 0; i < 16; i++) {
_value[i] = *(buf + decoded_size); int decoded_size = 0;
decoded_size++;
// IEI and Length
decoded_size += Type3NasIe::Decode(buf + decoded_size, len, is_iei);
for (int i = 0; i < kAuthenticationParameterRandLength - 1; i++) {
DECODE_U8(buf + decoded_size, _value[i], decoded_size);
} }
for (int j = 0; j < 16; j++) {
for (int j = 0; j < kAuthenticationParameterRandLength - 1; j++) {
Logger::nas_mm().debug( Logger::nas_mm().debug(
"Decoded Authentication_Parameter_RAND value (0x%2x)", _value[j]); "Decoded Authentication_Parameter_RAND value (0x%2x)", _value[j]);
} }
Logger::nas_mm().debug( Logger::nas_mm().debug(
"Decoded Authentication_Parameter_RAND len (%d)", decoded_size); "Decoded %s, len (%d)", GetIeName().c_str(), decoded_size);
return decoded_size; return decoded_size;
} }
...@@ -19,34 +19,33 @@ ...@@ -19,34 +19,33 @@
* contact@openairinterface.org * contact@openairinterface.org
*/ */
/*! \file #ifndef _AUTHENTICATION_PARAMETER_RAND_H_
\brief #define _AUTHENTICATION_PARAMETER_RAND_H_
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef __Authentication_Parameter_RAND_H_ #include "Type3NasIe.hpp"
#define __Authentication_Parameter_RAND_H_
#include <stdint.h> #include <stdint.h>
constexpr uint8_t kAuthenticationParameterRandLength = 17;
constexpr auto kAuthenticationParameterRandIeName =
"Authentication Parameter RAND";
namespace nas { namespace nas {
class Authentication_Parameter_RAND { class Authentication_Parameter_RAND : public Type3NasIe {
public: public:
Authentication_Parameter_RAND(); Authentication_Parameter_RAND();
Authentication_Parameter_RAND(uint8_t iei); Authentication_Parameter_RAND(uint8_t iei);
Authentication_Parameter_RAND(const uint8_t iei, uint8_t* value); Authentication_Parameter_RAND(uint8_t iei, uint8_t* value);
~Authentication_Parameter_RAND(); ~Authentication_Parameter_RAND();
// void setValue(uint8_t iei, uint8_t value);
int Encode(uint8_t* buf, int len); int Encode(uint8_t* buf, int len);
int Decode(uint8_t* buf, int len, bool is_option); int Decode(uint8_t* buf, int len, bool is_option);
uint8_t* getValue();
// uint8_t* getValue();
private: private:
uint8_t _iei; uint8_t _value[kAuthenticationParameterRandLength - 1];
uint8_t _value[16];
}; };
} // namespace nas } // namespace nas
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment