GPRS: Add 'input' generator functions for GPRS cipher algorithm

This commit is contained in:
Harald Welte 2010-06-30 19:50:14 +02:00
parent b9ce51c5fd
commit e335b91ccd
2 changed files with 20 additions and 0 deletions

View File

@ -45,4 +45,10 @@ int gprs_cipher_run(uint8_t *out, uint16_t len, enum gprs_ciph_algo algo,
/* Do we have an implementation for this cipher? */
int gprs_cipher_supported(enum gprs_ciph_algo algo);
/* GSM TS 04.64 / Section A.2.1 : Generation of 'input' */
uint32_t gprs_cipher_gen_input_ui(uint32_t iov_ui, uint8_t sapi, uint32_t lfn, uint32_t oc);
/* GSM TS 04.64 / Section A.2.1 : Generation of 'input' */
uint32_t gprs_cipher_gen_input_i(uint32_t iov_i, uint32_t lfn, uint32_t oc);
#endif /* _GPRS_CIPHER_H */

View File

@ -83,3 +83,17 @@ int gprs_cipher_supported(enum gprs_ciph_algo algo)
return 0;
}
/* GSM TS 04.64 / Section A.2.1 : Generation of 'input' */
uint32_t gprs_cipher_gen_input_ui(uint32_t iov_ui, uint8_t sapi, uint32_t lfn, uint32_t oc)
{
uint32_t sx = ((1<<27) * sapi) + (1<<31);
return (iov_ui ^ sx) + lfn + oc;
}
/* GSM TS 04.64 / Section A.2.1 : Generation of 'input' */
uint32_t gprs_cipher_gen_input_i(uint32_t iov_i, uint32_t lfn, uint32_t oc)
{
return iov_i + lfn + oc;
}