Lines Matching +full:8 +full:k

27  * @opc: OPc = 128-bit value derived from OP and K
28 * @k: K = 128-bit subscriber key
36 int milenage_f1(const u8 *opc, const u8 *k, const u8 *_rand, in milenage_f1() argument
45 if (aes_128_encrypt_block(k, tmp1, tmp1)) in milenage_f1()
51 os_memcpy(tmp2 + 8, tmp2, 8); in milenage_f1()
55 /* rotate (tmp2 XOR OP_C) by r1 (= 0x40 = 8 bytes) */ in milenage_f1()
57 tmp3[(i + 8) % 16] = tmp2[i] ^ opc[i]; in milenage_f1()
64 if (aes_128_encrypt_block(k, tmp3, tmp1)) in milenage_f1()
69 os_memcpy(mac_a, tmp1, 8); /* f1 */ in milenage_f1()
71 os_memcpy(mac_s, tmp1 + 8, 8); /* f1* */ in milenage_f1()
78 * @opc: OPc = 128-bit value derived from OP and K
79 * @k: K = 128-bit subscriber key
88 int milenage_f2345(const u8 *opc, const u8 *k, const u8 *_rand, in milenage_f2345() argument
97 if (aes_128_encrypt_block(k, tmp1, tmp2)) in milenage_f2345()
111 if (aes_128_encrypt_block(k, tmp1, tmp3)) in milenage_f2345()
116 os_memcpy(res, tmp3 + 8, 8); /* f2 */ in milenage_f2345()
126 if (aes_128_encrypt_block(k, tmp1, ck)) in milenage_f2345()
134 /* rotate by r4 = 0x40 = 8 bytes */ in milenage_f2345()
136 tmp1[(i + 8) % 16] = tmp2[i] ^ opc[i]; in milenage_f2345()
138 if (aes_128_encrypt_block(k, tmp1, ik)) in milenage_f2345()
149 tmp1[15] ^= 8; /* XOR c5 (= ..08) */ in milenage_f2345()
150 if (aes_128_encrypt_block(k, tmp1, tmp1)) in milenage_f2345()
164 * @k: K = 128-bit subscriber key
173 void milenage_generate(const u8 *opc, const u8 *amf, const u8 *k, in milenage_generate() argument
178 u8 mac_a[8], ak[6]; in milenage_generate()
180 if (*res_len < 8) { in milenage_generate()
184 if (milenage_f1(opc, k, _rand, sqn, amf, mac_a, NULL) || in milenage_generate()
185 milenage_f2345(opc, k, _rand, res, ck, ik, ak, NULL)) { in milenage_generate()
189 *res_len = 8; in milenage_generate()
195 os_memcpy(autn + 8, mac_a, 8); in milenage_generate()
202 * @k: K = 128-bit subscriber key
208 int milenage_auts(const u8 *opc, const u8 *k, const u8 *_rand, const u8 *auts, in milenage_auts() argument
212 u8 ak[6], mac_s[8]; in milenage_auts()
215 if (milenage_f2345(opc, k, _rand, NULL, NULL, NULL, NULL, ak)) in milenage_auts()
219 if (milenage_f1(opc, k, _rand, sqn, amf, NULL, mac_s) || in milenage_auts()
220 os_memcmp_const(mac_s, auts + 6, 8) != 0) in milenage_auts()
229 * @k: K = 128-bit subscriber key
235 int gsm_milenage(const u8 *opc, const u8 *k, const u8 *_rand, u8 *sres, u8 *kc) in gsm_milenage() argument
237 u8 res[8], ck[16], ik[16]; in gsm_milenage()
240 if (milenage_f2345(opc, k, _rand, res, ck, ik, NULL, NULL)) in gsm_milenage()
243 for (i = 0; i < 8; i++) in gsm_milenage()
244 kc[i] = ck[i] ^ ck[i + 8] ^ ik[i] ^ ik[i + 8]; in gsm_milenage()
259 * @k: K = 128-bit subscriber key
270 int milenage_check(const u8 *opc, const u8 *k, const u8 *sqn, const u8 *_rand, in milenage_check() argument
275 u8 mac_a[8], ak[6], rx_sqn[6]; in milenage_check()
281 if (milenage_f2345(opc, k, _rand, res, ck, ik, ak, NULL)) in milenage_check()
284 *res_len = 8; in milenage_check()
297 if (milenage_f2345(opc, k, _rand, NULL, NULL, NULL, NULL, ak)) in milenage_check()
302 if (milenage_f1(opc, k, _rand, sqn, auts_amf, NULL, auts + 6)) in milenage_check()
310 if (milenage_f1(opc, k, _rand, rx_sqn, amf, mac_a, NULL)) in milenage_check()
313 wpa_hexdump(MSG_DEBUG, "Milenage: MAC_A", mac_a, 8); in milenage_check()
315 if (os_memcmp_const(mac_a, autn + 8, 8) != 0) { in milenage_check()
318 autn + 8, 8); in milenage_check()