NAS MAC verified

This commit is contained in:
Sukchan Lee 2017-03-08 21:39:49 +09:00
parent bcb275dadc
commit d64fed59d2
4 changed files with 14 additions and 16 deletions

View file

@ -3,6 +3,7 @@
#include "core_sha2_hmac.h"
#define FC_VALUE 0x15
#include "core_debug.h"
void mme_kdf_nas(c_uint8_t algorithm_type_distinguishers,
c_uint8_t algorithm_identity, c_uint8_t *kasme, c_uint8_t *knas)
@ -16,9 +17,9 @@ void mme_kdf_nas(c_uint8_t algorithm_type_distinguishers,
s[2] = 0x00;
s[3] = 0x01;
s[1] = algorithm_identity;
s[2] = 0x00;
s[3] = 0x01;
s[4] = algorithm_identity;
s[5] = 0x00;
s[6] = 0x01;
hmac_sha256(kasme, 32, s, 7, out, 32);
memcpy(knas, out+16, 16);

View file

@ -46,7 +46,6 @@ status_t nas_security_encode(pkbuf_t **pkbuf,
nas_mac_calculate(mme_self()->selected_int_algorithm,
ue->knas_int, ue->dl_count, NAS_SECURITY_BEARER,
NAS_SECURITY_DOWNLINK_DIRECTION, new, mac);
d_print_hex(mac, 4);
d_assert(CORE_OK == pkbuf_header(new,
sizeof(nas_security_header_t) - sizeof(h.sequence_number)),

View file

@ -59,7 +59,6 @@ static void nas_sm_test1(abts_case *tc, void *data)
rc = tests1ap_enb_read(sock, recvbuf);
ABTS_INT_NEQUAL(tc, 0, rc);
recvbuf->len = 63;
ABTS_TRUE(tc, memcmp(recvbuf->payload,
core_ascii_to_hex(_authentication_request,
strlen(_authentication_request), tmp, sizeof(tmp)),
@ -77,12 +76,10 @@ static void nas_sm_test1(abts_case *tc, void *data)
recvbuf = pkbuf_alloc(0, MESSAGE_SDU_SIZE);
rc = tests1ap_enb_read(sock, recvbuf);
recvbuf->len = 43;
core_ascii_to_hex(_security_mode_command,
strlen(_security_mode_command), tmp, sizeof(tmp));
d_print_hex(tmp, recvbuf->len);
d_print_hex(recvbuf->payload, recvbuf->len);
ABTS_TRUE(tc, memcmp(recvbuf->payload,
core_ascii_to_hex(_security_mode_command,
strlen(_security_mode_command), tmp, sizeof(tmp)),
recvbuf->len) == 0);
ABTS_INT_NEQUAL(tc, 0, rc);
pkbuf_free(recvbuf);

View file

@ -97,12 +97,13 @@ static void security_test2(abts_case *tc, void *data)
static void security_test3(abts_case *tc, void *data)
{
char *_ck = "B40BA9A3C58B2A05BBF0D987B21BF8CB";
char *_ik = "F769BCD751044604127672711C6D3441";
char *_ck = "b40ba9a3c58b2a05 bbf0d987b21bf8cb";
char *_ik = "f769bcd751044604 127672711c6d3441";
char *_plmn_id = "024830";
char *_sqn = "FD8EEF40DF7D";
char *_ak = "AA689C648370";
char *_kasme = "238E457E0F758BADBCA8D34BB2612C10428D426757CB5553B2B184FA64BFC549";
char *_sqn = "fd8eef40df7d";
char *_ak = "aa689c648370";
char *_kasme =
"238e457e0f758bad bca8d34bb2612c10 428d426757cb5553 b2b184fa64bfc549";
c_uint8_t ck[16];
c_uint8_t ik[16];
c_uint8_t plmn_id[3];