changeset fbafd0aa63e5 in /home/hg/repos/gajim-plugins
author: lovetox forenjunkie@chello.at branches: details:gajim-plugins?cmd=changeset;node=fbafd0aa63e5 description: Make fingerprint trust code more readable
diffstat:
omemo/omemo/liteidentitykeystore.py | 7 ++++++- omemo/omemo/state.py | 20 +++++++++++--------- omemo/ui.py | 34 ++++++++++++++-------------------- 3 files changed, 31 insertions(+), 30 deletions(-)
diffs (156 lines):
diff -r a9a2145446d0 -r fbafd0aa63e5 omemo/omemo/liteidentitykeystore.py --- a/omemo/omemo/liteidentitykeystore.py Fri Jun 10 13:10:06 2016 +0200 +++ b/omemo/omemo/liteidentitykeystore.py Sat Jun 11 00:30:17 2016 +0200 @@ -150,4 +150,9 @@ c.execute(q, (recipientId, identityKey.getPublicKey().serialize())) result = c.fetchone()
- return result[0] if result else None + states = [UNTRUSTED, TRUSTED, UNDECIDED] + + if result[0] in states: + return result[0] + else: + return UNDECIDED diff -r a9a2145446d0 -r fbafd0aa63e5 omemo/omemo/state.py --- a/omemo/omemo/state.py Fri Jun 10 13:10:06 2016 +0200 +++ b/omemo/omemo/state.py Sat Jun 11 00:30:17 2016 +0200 @@ -41,6 +41,11 @@ log = logging.getLogger('gajim.plugin_system.omemo')
+UNTRUSTED = 0 +TRUSTED = 1 +UNDECIDED = 2 + + class OmemoState: def __init__(self, own_jid, connection): """ Instantiates an OmemoState object. @@ -50,7 +55,6 @@ self.session_ciphers = {} self.own_jid = own_jid self.device_ids = {} - self.trust = {None: "Not Set", 0: False, 1: True, 2: "Undecided"} self.own_devices = [] self.store = LiteAxolotlStore(connection) self.encryption = self.store.encryptionStore @@ -222,14 +226,13 @@ # Encrypt the message key with for each of receivers devices for rid, cipher in session_ciphers.items(): try: - if self.trust[self.isTrusted(cipher)] is True: + if self.isTrusted(cipher) == TRUSTED: encrypted_keys[rid] = cipher.encrypt(key).serialize() else: log.debug('Skipped Device because Trust is: ' + - str(self.trust[self.isTrusted(cipher)])) + str(self.isTrusted(cipher))) except: - log.warn('Failed to find key for device ' + str( - rid)) + log.warn('Failed to find key for device ' + str(rid))
if len(encrypted_keys) == 0: log_msg = 'Encrypted keys empty' @@ -335,19 +338,18 @@ def handlePreKeyWhisperMessage(self, recipient_id, device_id, key): preKeyWhisperMessage = PreKeyWhisperMessage(serialized=key) sessionCipher = self.get_session_cipher(recipient_id, device_id) - if self.trust[self.isTrusted(sessionCipher)] is not False: + if self.isTrusted(sessionCipher) != UNTRUSTED: key = sessionCipher.decryptPkmsg(preKeyWhisperMessage) log.debug('PreKeyWhisperMessage => ' + str(key)) return key else: raise Exception("Received PreKeyWhisperMessage from Untrusted Fingerprint!")
- def handleWhisperMessage(self, recipient_id, device_id, key): whisperMessage = WhisperMessage(serialized=key) sessionCipher = self.get_session_cipher(recipient_id, device_id) - if (self.trust[self.isTrusted(sessionCipher)] is True) or \ - (self.trust[self.isTrusted(sessionCipher)] == "Undecided"): + if self.isTrusted(sessionCipher) == TRUSTED or \ + self.isTrusted(sessionCipher) == UNDECIDED: key = sessionCipher.decryptMsg(whisperMessage) log.debug('WhisperMessage => ' + str(key)) return key diff -r a9a2145446d0 -r fbafd0aa63e5 omemo/ui.py --- a/omemo/ui.py Fri Jun 10 13:10:06 2016 +0200 +++ b/omemo/ui.py Sat Jun 11 00:30:17 2016 +0200 @@ -28,6 +28,7 @@
log = logging.getLogger('gajim.plugin_system.omemo')
+UNDECIDED = 2 TRUSTED = 1 UNTRUSTED = 0
@@ -270,7 +271,6 @@ gtk.Clipboard(selection='PRIMARY').set_text('\n'.join(fprs))
def update_context_list(self): - trust = {None: "Not Set", 0: False, 1: True, 2: "Undecided"} self.fpr_model.clear() self.device_model.clear() active = self.B.get_object('account_combobox').get_active() @@ -288,17 +288,14 @@ _id, jid, fpr, tr = item fpr = binascii.hexlify(fpr) fpr = self.human_hash(fpr[2:]) - if trust[tr] is False: - self.fpr_model.append((_id, jid, trust[tr], + if tr == UNTRUSTED: + self.fpr_model.append((_id, jid, 'False', '<tt><span foreground="#FF0040">%s</span></tt>' % fpr)) - elif trust[tr] is True: - self.fpr_model.append((_id, jid, trust[tr], + elif tr == TRUSTED: + self.fpr_model.append((_id, jid, 'True', '<tt><span foreground="#2EFE2E">%s</span></tt>' % fpr)) - elif trust[tr] == "Not Set": - self.fpr_model.append((_id, jid, trust[tr], - '<tt><span foreground="#FF0040">%s</span></tt>' % fpr)) - elif trust[tr] == "Undecided": - self.fpr_model.append((_id, jid, trust[tr], + else: + self.fpr_model.append((_id, jid, 'Undecided', '<tt><span foreground="#FF8000">%s</span></tt>' % fpr))
for item in state.own_devices: @@ -412,7 +409,6 @@ gtk.Clipboard(selection='PRIMARY').set_text('\n'.join(fprs))
def update_context_list(self): - trust = {None: "Not Set", 0: False, 1: True, 2: "Undecided"} self.fpr_model.clear() state = self.plugin.get_omemo_state(self.contact.account.name)
@@ -427,19 +423,17 @@ _id, jid, fpr, tr = item fpr = binascii.hexlify(fpr) fpr = self.human_hash(fpr[2:]) - if trust[tr] is False: - self.fpr_model.append((_id, jid, trust[tr], + if tr == UNTRUSTED: + self.fpr_model.append((_id, jid, 'False', '<tt><span foreground="#FF0040">%s</span></tt>' % fpr)) - elif trust[tr] is True: - self.fpr_model.append((_id, jid, trust[tr], + elif tr == TRUSTED: + self.fpr_model.append((_id, jid, 'True', '<tt><span foreground="#2EFE2E">%s</span></tt>' % fpr)) - elif trust[tr] == "Not Set": - self.fpr_model.append((_id, jid, trust[tr], - '<tt><span foreground="#FF0040">%s</span></tt>' % fpr)) - elif trust[tr] == "Undecided": - self.fpr_model.append((_id, jid, trust[tr], + else: + self.fpr_model.append((_id, jid, 'Undecided', '<tt><span foreground="#FF8000">%s</span></tt>' % fpr))
+ def human_hash(self, fpr): fpr = fpr.upper() fplen = len(fpr)