Skip to main content
. 2024 Dec 13;24(24):7979. doi: 10.3390/s24247979
Algorithm 12 proc_HN
   Played by: HN
   Input: K, skHN, idHN
      
   [Step 1.3]
      in(sch,(c0, c1, c2, SNname));
      new RAND: pubKey;
      let (K1, K2) = get_hn_keys4supi(skHN, c0, c1, c2) in
      if c2 <> hmac(K2, c1) && SUPI <> sdec(c1, K1) true then exit;
      event endUE_HN_SUPI(SUPI, c0, pk(skHN))
   [Step 2.1]
      get ueDB(=SUPI, K, sqn) in
      let DHK = DHkey(sk(RAND), c0) in
      let (CONC, AK, MAC) = calc_hn_mac(RAND, DHK, K, SQN, AMF) in
      let (XRES’, HXRES’, KAUSF, KSEAF) = calc_hn_key(RAND, DHK, K, SQN, AK) in
      event beginHN_UE_MAC(SUPI, K, RAND, SQN);
      out(sch, (RAND, CONC, AMF, MAC, HXRES’));
   [Step 2.5]
      in(sch, , RES’);
      if XRES’ <> RES’ true then exit;
      event middleHN_RES(SUPI, K, RAND, SQN);
      out(sch, (SUPI, KSEAF));