blob: 028c632ff8f6d42434a51811647aa61f29400a93 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*
2 * UMTS AKA - Milenage algorithm (3GPP TS 35.205, .206, .207, .208)
3 * Copyright (c) 2006-2007 <j@w1.fi>
4 * Copyright (C) 2015 MediaTek Inc.
5 *
6 *
7 * This program is free software; this software is distributed under
8 * the terms of 3-clause BSD license.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions are met:
12 * 1. Redistributions of source code must retain the above copyright notice,
13 * this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright notice,
15 * this list of conditions and the following disclaimer in the documentation
16 * and/or other materials provided with the distribution.
17 * 3. Neither the name of the copyright holder nor the names of its
18 * contributors may be used to endorse or promote products derived from
19 * this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 * POSSIBILITY OF SUCH DAMAGE.
32 *
33 */
34
35void milenage_generate(const kal_uint8 *opc, const kal_uint8 *amf, const kal_uint8 *k, const kal_uint8 *sqn, const kal_uint8 *_rand, kal_uint8 *autn, kal_uint8 *ik, kal_uint8 *ck, kal_uint8 *res, kal_uint32 *res_len);
36
37kal_int32 milenage_auts(const kal_uint8 *opc, const kal_uint8 *k, const kal_uint8 *_rand, const kal_uint8 *auts, kal_uint8 *sqn);
38
39kal_int32 gsm_milenage(const kal_uint8 *opc, const kal_uint8 *k, const kal_uint8 *_rand, kal_uint8 *sres, kal_uint8 *kc);
40
41kal_int32 milenage_check(const kal_uint8 *opc, const kal_uint8 *k, const kal_uint8 *sqn, const kal_uint8 *_rand, const kal_uint8 *autn, kal_uint8 *ik, kal_uint8 *ck, kal_uint8 *res, kal_uint32 *res_len, kal_uint8 *auts);
42
43kal_int32 milenage_f1(const kal_uint8 *opc, const kal_uint8 *k, const kal_uint8 *_rand, const kal_uint8 *sqn, const kal_uint8 *amf, kal_uint8 *mac_a, kal_uint8 *mac_s);
44
45kal_int32 milenage_f2345(const kal_uint8 *opc, const kal_uint8 *k, const kal_uint8 *_rand, kal_uint8 *res, kal_uint8 *ck, kal_uint8 *ik, kal_uint8 *ak, kal_uint8 *akstar);
46
47kal_int32 milenage_opc_gen(kal_uint8 *opc, const kal_uint8 *k, const kal_uint8 *op);