diff options
author | Miquel Lionel <lionel@les-miquelots.net> | 2023-10-30 21:48:08 +0100 |
---|---|---|
committer | Miquel Lionel <lionel@les-miquelots.net> | 2023-10-30 21:48:08 +0100 |
commit | d761e8ccd5293d2f30a889b0cbe302c985aee68c (patch) | |
tree | 922bb248a7fee4cdff3da114abc7d77200f3d0da /plugins/omemo/src/signal/simple_iks.vala | |
parent | 302e954c99c71d670201828c6746dfaa40276d6d (diff) | |
parent | 3de716446819550514d50a8112f5b6dd0c662702 (diff) | |
download | dino-add_conversation_account_indicator.tar.gz dino-add_conversation_account_indicator.zip |
Show which account is currently used in conversation details in the about sectionadd_conversation_account_indicator
Diffstat (limited to 'plugins/omemo/src/signal/simple_iks.vala')
-rw-r--r-- | plugins/omemo/src/signal/simple_iks.vala | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/plugins/omemo/src/signal/simple_iks.vala b/plugins/omemo/src/signal/simple_iks.vala new file mode 100644 index 00000000..5247c455 --- /dev/null +++ b/plugins/omemo/src/signal/simple_iks.vala @@ -0,0 +1,40 @@ +using Gee; + +namespace Signal { + +public class SimpleIdentityKeyStore : IdentityKeyStore { + public override Bytes identity_key_private { get; set; } + public override Bytes identity_key_public { get; set; } + public override uint32 local_registration_id { get; set; } + private Map<string, Map<int, IdentityKeyStore.TrustedIdentity>> trusted_identities = new HashMap<string, Map<int, IdentityKeyStore.TrustedIdentity>>(); + + public override void save_identity(Address address, uint8[] key) throws Error { + string name = address.name; + if (trusted_identities.has_key(name)) { + if (trusted_identities[name].has_key(address.device_id)) { + trusted_identities[name][address.device_id].key = key; + trusted_identity_updated(trusted_identities[name][address.device_id]); + } else { + trusted_identities[name][address.device_id] = new TrustedIdentity.by_address(address, key); + trusted_identity_added(trusted_identities[name][address.device_id]); + } + } else { + trusted_identities[name] = new HashMap<int, IdentityKeyStore.TrustedIdentity>(); + trusted_identities[name][address.device_id] = new TrustedIdentity.by_address(address, key); + trusted_identity_added(trusted_identities[name][address.device_id]); + } + } + + public override bool is_trusted_identity(Address address, uint8[] key) throws Error { + if (!trusted_identities.has_key(address.name)) return true; + if (!trusted_identities[address.name].has_key(address.device_id)) return true; + uint8[] other_key = trusted_identities[address.name][address.device_id].key; + if (other_key.length != key.length) return false; + for (int i = 0; i < key.length; i++) { + if (other_key[i] != key[i]) return false; + } + return true; + } +} + +} |