wbokslag has uploaded this change for review.
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)
To view, visit change 41684. To unsubscribe, or for help writing mail filters, visit settings.