diff --git a/lib/src/common/liblte_security.cc b/lib/src/common/liblte_security.cc index 1cf83e5b3..020f019c9 100644 --- a/lib/src/common/liblte_security.cc +++ b/lib/src/common/liblte_security.cc @@ -37,7 +37,7 @@ #include "srslte/common/liblte_security.h" #include "srslte/common/liblte_ssl.h" #include "math.h" - +#include /******************************************************************************* DEFINES *******************************************************************************/ @@ -1124,7 +1124,15 @@ LIBLTE_ERROR_ENUM liblte_security_milenage_f1(uint8 *k, rijndael_key_schedule(k, &round_keys); // Compute OPc - compute_OPc(&round_keys, op, op_c); + printf("OPc 0x: "); + for(i=0;i<16;i++) + { + op_c[i] = op[i]; + printf("%02x", op_c[i]); + } + printf("\n"); + + //compute_OPc(&round_keys, op, op_c); // Compute temp for(i=0; i<16; i++) @@ -1207,8 +1215,16 @@ LIBLTE_ERROR_ENUM liblte_security_milenage_f1_star(uint8 *k, // Initialize the round keys rijndael_key_schedule(k, &round_keys); + printf("OPc 0x: "); + for(i=0;i<16;i++) + { + op_c[i] = op[i]; + printf("%02x", op_c[i]); + } + printf("\n"); + // Compute OPc - compute_OPc(&round_keys, op, op_c); + //compute_OPc(&round_keys, op, op_c); // Compute temp for(i=0; i<16; i++) @@ -1293,8 +1309,14 @@ LIBLTE_ERROR_ENUM liblte_security_milenage_f2345(uint8 *k, rijndael_key_schedule(k, &round_keys); // Compute OPc - compute_OPc(&round_keys, op, op_c); - + //compute_OPc(&round_keys, op, op_c); + printf("OPc 0x: "); + for(i=0;i<16;i++) + { + op_c[i] = op[i]; + printf("%02x", op_c[i]); + } + printf("\n"); // Compute temp for(i=0; i<16; i++) { @@ -1398,8 +1420,15 @@ LIBLTE_ERROR_ENUM liblte_security_milenage_f5_star(uint8 *k, rijndael_key_schedule(k, &round_keys); // Compute OPc - compute_OPc(&round_keys, op, op_c); - + //compute_OPc(&round_keys, op, op_c); + printf("OPc 0x: "); + for(i=0;i<16;i++) + { + op_c[i] = op[i]; + printf("%02x", op_c[i]); + } + printf("\n"); + // Compute temp for(i=0; i<16; i++) { diff --git a/srsepc/src/hss/hss.cc b/srsepc/src/hss/hss.cc index 9a8db0e3a..cb15cebf0 100644 --- a/srsepc/src/hss/hss.cc +++ b/srsepc/src/hss/hss.cc @@ -354,7 +354,7 @@ hss::gen_auth_info_answer_milenage(uint64_t imsi, uint8_t *k_asme, uint8_t *autn return false; } gen_rand(rand); - + security_milenage_f2345( k, op, rand, @@ -498,7 +498,7 @@ hss::gen_auth_info_answer_xor(uint64_t imsi, uint8_t *k_asme, uint8_t *autn, uin mcc, mnc, k_asme); - + m_hss_log->debug("User MCC : %x MNC : %x \n", mcc, mnc); m_hss_log->debug_hex(k_asme, 32, "User k_asme : "); @@ -545,7 +545,7 @@ hss::get_k_amf_op_sqn(uint64_t imsi, uint8_t *k, uint8_t *amf, uint8_t *op, uint return true; } -void +void hss::increment_sqn(uint64_t imsi) { hss_ue_ctx_t *ue_ctx = NULL; @@ -562,9 +562,9 @@ hss::increment_sqn(uint64_t imsi) for(int i = 0; i < 6; i++) { p[5-i] = (uint8_t) ((ue_ctx->sqn[i])); } - + sqn++; - + m_hss_log->debug("Incremented SQN (IMSI: %" PRIu64 ") SQN: %" PRIu64 "\n", imsi, sqn); for(int i = 0; i < 6; i++){ @@ -627,7 +627,7 @@ bool hss::get_ue_ctx(uint64_t imsi, hss_ue_ctx_t **ue_ctx) m_hss_log->info("User not found. IMSI: %015lu\n",imsi); return false; } - + *ue_ctx = ue_ctx_it->second; return true; } @@ -660,7 +660,6 @@ hss::get_uint_vec_from_hex_str(const std::string &key_str, uint8_t *key, uint le return; } - std::string hss::hex_string(uint8_t *hex, int size) { @@ -672,15 +671,4 @@ hss::hex_string(uint8_t *hex, int size) } return ss.str(); } - /* -uint64_t -string_to_imsi() -{ - uint64_t imsi = 0; - for(int i=0;i<=14;i++){ - imsi += attach_req.eps_mobile_id.imsi[i]*std::pow(10,14-i); - } - return imsi; -} - */ } //namespace srsepc