wbokslag has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-tetra/+/41684?usp=email )
Change subject: Added functional TA61 decryption ......................................................................
Added functional TA61 decryption
Now uses a known SCK/CCK to decrypt identities using TA61
Change-Id: Ic01c1d9cd151ba0213ed67971cc479f312af14fb --- M src/crypto/tetra_crypto.c 1 file changed, 9 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-tetra refs/changes/84/41684/1
diff --git a/src/crypto/tetra_crypto.c b/src/crypto/tetra_crypto.c index 3230cb8..7344dd0 100644 --- a/src/crypto/tetra_crypto.c +++ b/src/crypto/tetra_crypto.c @@ -204,8 +204,15 @@
bool decrypt_identity(struct tetra_crypto_state *tcs, struct tetra_addr *addr) { - /* TODO FIXME implement TA61 decryption */ - return false; + if (!tcs->cck) + return false; + + uint8_t a_addr[3] = {addr->ssi >> 16, addr->ssi >> 8, addr->ssi}; + ta61_inv(tcs->cck->key, a_addr, a_addr); + + uint32_t addr_decrypted = (a_addr[0] << 16) | (a_addr[1] << 8) | a_addr[2]; + addr->ssi = addr_decrypted; + return true; }
bool decrypt_mac_element(struct tetra_crypto_state *tcs, struct tetra_tmvsap_prim *tmvp, struct tetra_key *key, int l1_len, int tmpdu_offset)