GNU Radio's GSM Package
kasumi.h
Go to the documentation of this file.
1 /*! \file kasumi.h
2  * KASUMI header.
3  *
4  * See kasumi.c for details
5  * The parameters are described in TS 135 202.
6  */
7 
8 #pragma once
9 
10 #include <stdint.h>
11 
12 /*! Single iteration of KASUMI cipher
13  * \param[in] P Block, 64 bits to be processed in this round
14  * \param[in] KLi1 Expanded subkeys
15  * \param[in] KLi2 Expanded subkeys
16  * \param[in] KOi1 Expanded subkeys
17  * \param[in] KOi2 Expanded subkeys
18  * \param[in] KOi3 Expanded subkeys
19  * \param[in] KIi1 Expanded subkeys
20  * \param[in] KIi2 Expanded subkeys
21  * \param[in] KIi3 Expanded subkeys
22  * \returns processed block of 64 bits
23  */
24 uint64_t _kasumi(uint64_t P, const uint16_t *KLi1, const uint16_t *KLi2, const uint16_t *KOi1, const uint16_t *KOi2, const uint16_t *KOi3, const uint16_t *KIi1, const uint16_t *KIi2, const uint16_t *KIi3);
25 
26 /*! Implementation of the KGCORE algorithm (used by A5/3, A5/4, GEA3, GEA4 and ECSD)
27  * \param[in] CA
28  * \param[in] cb
29  * \param[in] cc
30  * \param[in] cd
31  * \param[in] ck 8-bytes long key
32  * \param[out] co cl-dependent
33  * \param[in] cl
34  */
35 void _kasumi_kgcore(uint8_t CA, uint8_t cb, uint32_t cc, uint8_t cd, const uint8_t *ck, uint8_t *co, uint16_t cl);
36 
37 /*! Expand key into set of subkeys - see TS 135 202 for details
38  * \param[in] key (128 bits) as array of bytes
39  * \param[out] KLi1 Expanded subkeys
40  * \param[out] KLi2 Expanded subkeys
41  * \param[out] KOi1 Expanded subkeys
42  * \param[out] KOi2 Expanded subkeys
43  * \param[out] KOi3 Expanded subkeys
44  * \param[out] KIi1 Expanded subkeys
45  * \param[out] KIi2 Expanded subkeys
46  * \param[out] KIi3 Expanded subkeys
47  */
48 void _kasumi_key_expand(const uint8_t *key, uint16_t *KLi1, uint16_t *KLi2, uint16_t *KOi1, uint16_t *KOi2, uint16_t *KOi3, uint16_t *KIi1, uint16_t *KIi2, uint16_t *KIi3);
_kasumi
uint64_t _kasumi(uint64_t P, const uint16_t *KLi1, const uint16_t *KLi2, const uint16_t *KOi1, const uint16_t *KOi2, const uint16_t *KOi3, const uint16_t *KIi1, const uint16_t *KIi2, const uint16_t *KIi3)
_kasumi_key_expand
void _kasumi_key_expand(const uint8_t *key, uint16_t *KLi1, uint16_t *KLi2, uint16_t *KOi1, uint16_t *KOi2, uint16_t *KOi3, uint16_t *KIi1, uint16_t *KIi2, uint16_t *KIi3)
_kasumi_kgcore
void _kasumi_kgcore(uint8_t CA, uint8_t cb, uint32_t cc, uint8_t cd, const uint8_t *ck, uint8_t *co, uint16_t cl)