Hi,
I'll test my updated code tonight and push it to
my encryption if it
doesn't break.
First off, I tested the code in sylvain/encryption (which is mostly
some minor db fixes from me and the code you fw-ported) and it works
fine. (you also need my pending branch of libosmocore as I put the
utility classmark2 a5 testing func there)
The current limitations are :
* Support only 'none' & 'comp128v1' as authentication method.
- I need to add 'xor' (for the racal test sim) and 'knowntuples'
(for sims with unknown Ki)
* Does the authentication part each time currently
- I need to add support for using the last tuple. Mostly implies
storing the key_seq somewhere from LOC_UPD_REQ until it's needed.
* Only support ciphering for Location Updates & MS-initiated calls.
I'll probably do those first two tonight, should be simple enough.
For the last one :
The current flow for a network initiated call/sms is :
- Somewhere, paging_request is called (from gsm_04_08 or gsm_04_11)
with a given call back
- [paging is done]
- Then in gsm_04_08_utils handle_paging_resp:
- We dispatch an event SS_PAGING
- Stop the paging (which calls the call back)
What I would do (and imho helps the bsc/msc split) is create a
'msc_paging_request' somewhere that would wrap the paging. The flow
would then be:
- Somewhere, msc_paging_request is called (from gsm_04_08 or
gsm_04_11) with a given call back.
- msc_paging_request calls paging_request with a cb_msc_paging.
- [paging is done]
- gsm_04_08_utils would _not_ dispatch then SS_PAGING event it self,
it would just call back cb_msc_paging given in paging_request
- Inside cb_msc_paging, I would then dispatch SS_PAGING event and
call the original call back.
Then to add the auth part, I could just modify cb_msc_paging to call
secure channel if required.
Sylvain