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

Update Authentication_Parameter_RAND

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