diff options
| author | Max <msuraev@sysmocom.de> | 2016-04-21 14:46:30 +0200 | 
|---|---|---|
| committer | Harald Welte <laforge@gnumonks.org> | 2016-04-22 15:09:27 +0200 | 
| commit | bf990bb8fd5aa27c57416831311bc4b2a9769bef (patch) | |
| tree | 5bc2a1d0abb7645b2785a6ec61a4f798b274677e /include/osmocom/crypt | |
| parent | 402b9b055538737838ce112a99a75401aa4f14c6 (diff) | |
Update internal GPRS cipher API
Update internal API (for GPRS cipher implementors): make it compliant
with ETSI TS 155.22. External API left untouched.
Diffstat (limited to 'include/osmocom/crypt')
| -rw-r--r-- | include/osmocom/crypt/gprs_cipher.h | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/include/osmocom/crypt/gprs_cipher.h b/include/osmocom/crypt/gprs_cipher.h index 940b07b1..d6edefaf 100644 --- a/include/osmocom/crypt/gprs_cipher.h +++ b/include/osmocom/crypt/gprs_cipher.h @@ -9,6 +9,7 @@ enum gprs_ciph_algo {  	GPRS_ALGO_GEA1,  	GPRS_ALGO_GEA2,  	GPRS_ALGO_GEA3, +	GPRS_ALGO_GEA4,  	_GPRS_ALGO_NUM  }; @@ -27,7 +28,7 @@ struct gprs_cipher_impl {  	/* As specified in 04.64 Annex A.  Uses Kc, IV and direction  	 * to generate the 1523 bytes cipher stream that need to be  	 * XORed wit the plaintext for encrypt / ciphertext for decrypt */ -	int (*run)(uint8_t *out, uint16_t len, uint64_t kc, uint32_t iv, +	int (*run)(uint8_t *out, uint16_t len, uint8_t *kc, uint32_t iv,  		   enum gprs_cipher_direction direction);  }; @@ -39,11 +40,14 @@ int gprs_cipher_load(const char *path);  /* function to be called by core code */  int gprs_cipher_run(uint8_t *out, uint16_t len, enum gprs_ciph_algo algo, -		    uint64_t kc, uint32_t iv, enum gprs_cipher_direction dir); +		    uint8_t *kc, uint32_t iv, enum gprs_cipher_direction dir);  /* Do we have an implementation for this cipher? */  int gprs_cipher_supported(enum gprs_ciph_algo algo); +/* Return key length for supported cipher, in bytes */ +unsigned gprs_cipher_key_length(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);  | 
