eap-aka-3gpp2: Fix SQN generation

Same as the previous commit.

Fixes: 424ddf801c ("Do not use monotonic time for AKA sequence numbers, it has an undefined starting point")
This commit is contained in:
Tobias Brunner
2026-07-23 10:26:08 +02:00
parent 371c35612c
commit cfc72fe901
@@ -71,14 +71,15 @@ bool eap_aka_3gpp2_get_k(identification_t *id, char k[AKA_K_LEN])
void eap_aka_3gpp2_get_sqn(char sqn[AKA_SQN_LEN], int offset)
{
timeval_t time;
uint32_t sec, usec;
gettimeofday(&time, NULL);
/* set sqn to an integer containing 4 bytes seconds + 2 bytes usecs */
time.tv_sec = htonl(time.tv_sec + offset);
sec = htonl((uint32_t)(time.tv_sec + offset));
/* usec's are never larger than 0x000f423f, so we shift the 12 first bits */
time.tv_usec = htonl(time.tv_usec << 12);
memcpy(sqn, (char*)&time.tv_sec + sizeof(time_t) - 4, 4);
memcpy(sqn + 4, &time.tv_usec, 2);
usec = htonl((uint32_t)time.tv_usec << 12);
memcpy(sqn, &sec, 4);
memcpy(sqn + 4, &usec, 2);
}
METHOD(simaka_provider_t, get_quintuplet, bool,