diff options
Diffstat (limited to 'mme/key_derivation.c')
-rw-r--r-- | mme/key_derivation.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/mme/key_derivation.c b/mme/key_derivation.c index 36e4c915..8d5d8a40 100644 --- a/mme/key_derivation.c +++ b/mme/key_derivation.c @@ -80,3 +80,19 @@ void hss_auc_kasme(const uint8_t *ck, const uint8_t *ik, const uint8_t plmn_id[3 gnutls_hmac_fast(GNUTLS_MAC_SHA256, k, 32, s, 14, kasme); } + +/* TS33.401 Annex A.9: NAS token derivation for inter-RAT mobility */ +void mme_kdf_nas_token(const uint8_t *kasme, uint32_t ul_count, uint8_t *nas_token) +{ + uint8_t s[7]; + + s[0] = 0x17; /* FC Value */ + + ul_count = htonl(ul_count); + memcpy(s+1, &ul_count, 4); + + s[5] = 0x00; + s[6] = 0x04; + + gnutls_hmac_fast(GNUTLS_MAC_SHA256, kasme, 32, s, 7, nas_token); +} |