Commit graph

96 commits

Author SHA1 Message Date
AsamK
6a1b7dc597 Implement support for sending/receiving Group V2 messages
Requires libzkgroup to work, which is currently only included for x86_64 Linux

Related #354
2020-11-23 22:40:14 +01:00
AsamK
c3e1d4fc75 Add possibility to pass a captcha token to register command
Fixes #251
2020-11-22 11:03:14 +01:00
AsamK
a634b46eb2 Remove legacy EncapsulatedExceptions from manager 2020-11-22 10:38:28 +01:00
AsamK
d94a7511dd Use StandardCharsets.UTF_8 2020-11-22 10:03:41 +01:00
AsamK
8a86f250ec Store profile keys only in profile store
Fixes #328
2020-11-21 20:11:46 +01:00
AsamK
8c1f082c8a Save account data after executing message actions
Fixes #361
2020-11-21 11:51:59 +01:00
AsamK
2ab8646168 Don't retry messages if they fail for another reason than untrusted identity 2020-11-21 11:51:31 +01:00
AsamK
b0502f9f82 Update dependencies 2020-11-21 11:49:06 +01:00
AsamK
a54fc92c05 Fix behavior for recipients with only UUIDs
Fixes #359
2020-10-11 11:15:34 +02:00
AsamK
ad509e8097 Refactor ProfileStore to handle name/uuid addresses correctly 2020-09-11 16:22:30 +02:00
AsamK
bb24a2aa31 Add workaround to fix crashes if native libzkgroup is not available
Fixes #350
Fixes #349
Fixes #344
2020-09-11 15:35:44 +02:00
AsamK
bb59d1c9c9 Ignore error if downloading profile avatar fails 2020-09-11 09:23:30 +02:00
AsamK
b94c1e50e6 Cache profiles for 24h before retrieving them again 2020-09-10 14:20:16 +02:00
AsamK
0f3aa22519 Retrieve avatar profile image 2020-09-10 12:20:04 +02:00
AsamK
6c4d272309 Update libsignal-service 2020-09-10 11:07:30 +02:00
AsamK
2c5a70cc47 Improve stderr output 2020-08-14 20:49:54 +02:00
AsamK
2c3d222e84 Remove unnecessary stderr output
Fixes #334
2020-08-14 20:49:54 +02:00
AsamK
e6c1e03e21 Update dependencies
updateProfile can now only update both name and avatar at the same time,
as the upstream API has changed.
2020-08-09 13:00:29 +02:00
AsamK
f96770df3c Move decrypting recipient profile to separate method 2020-08-06 22:35:59 +02:00
AsamK
2f9873c35e Use isEmpty() 2020-07-02 21:34:52 +02:00
AsamK
34caba2a7a Delay auto responses to messages until caught up with old messages
To prevent responding with old state, if the last receive call was a long
time ago.
2020-06-05 12:13:17 +02:00
AsamK
d14b8ac71f Detect when receive has caught up with old messages 2020-06-04 18:44:13 +02:00
AsamK
bfb12b0872 Refactor sendMessage and extract sendSelfMessage method 2020-05-22 12:54:22 +02:00
AsamK
1aba9f370e Extract sending of expiration timer update to separate method 2020-05-22 12:48:39 +02:00
AsamK
e048b1886d Store number/uuid in recipient store after receiving a message
Necessary to find the correct session if the sender send the next message
with only the uuid.

Fixes #309
2020-05-22 12:32:36 +02:00
Matúš Košút
b382a4260b
Contact config - message expiration time (#308)
Co-authored-by: Matus Kosut <matus.kosut@ntnu.no>
2020-05-16 22:55:53 +02:00
AsamK
1e0aa8929d Separate DbusSignal implementation from Manager 2020-05-15 23:11:18 +02:00
AsamK
d08508e6ef Move Exception classes to corresponding package 2020-05-15 20:03:51 +02:00
AsamK
d520023fc7 Refactor Manager and SignalAccount to implement Closeable
Should make sure that file lock and web socket connections are closed
reliably.
2020-05-13 23:33:40 +02:00
AsamK
87f65de0c5 Save account state after ending session even if sending the message has failed 2020-05-11 18:31:22 +02:00
AsamK
a02031aa80 Refactor Manager to always have a valid SignalAccount instance
Extract ProvisioningManager to link new devices
2020-05-11 18:07:37 +02:00
AsamK
8163a42d3a Split manager ServiceConfig from BaseConfig 2020-05-11 14:51:55 +02:00
AsamK
916d0e3cf1 Don't send group info request after receiving QUIT for unknown group
The sender has quit the group so he won't respond to the info request anyway
2020-05-07 12:41:49 +02:00
AsamK
26840a2f0f Update dependencies 2020-05-06 20:11:26 +02:00
AsamK
00777a469c Switch to hypfvieh dbus-java
Removes transitive dependency on libmatthew-unix-java

Fixes #285
2020-05-06 09:13:49 +02:00
AsamK
08749fcee0 When sending an end session message clear local session store also if sending message fails 2020-04-21 20:36:28 +02:00
AsamK
19b01ff2e9 Also catch IllegalArgumentException when sending messages during receive
It's necessary to keep receiving messages if a session state is corrupted.
e.g:
Exception in thread "main" java.lang.IllegalArgumentException: Empty key
        at java.base/javax.crypto.spec.SecretKeySpec.<init>(Unknown Source)
        at org.whispersystems.libsignal.ratchet.ChainKey.getBaseMaterial(ChainKey.java:57)
        at org.whispersystems.libsignal.ratchet.ChainKey.getMessageKeys(ChainKey.java:47)
        at org.whispersystems.libsignal.SessionCipher.encrypt(SessionCipher.java:97)
        at org.signal.libsignal.metadata.SealedSessionCipher.encrypt(SealedSessionCipher.java:70)
        at org.whispersystems.signalservice.api.crypto.SignalServiceCipher.encrypt(SignalServiceCipher.java:86)
        at org.whispersystems.signalservice.api.SignalServiceMessageSender.getEncryptedMessage(SignalServiceMessageSender.java:1456)
        at org.whispersystems.signalservice.api.SignalServiceMessageSender.getEncryptedMessages(SignalServiceMessageSender.java:1406)
        at org.whispersystems.signalservice.api.SignalServiceMessageSender.sendMessage(SignalServiceMessageSender.java:1276)
        at org.whispersystems.signalservice.api.SignalServiceMessageSender.sendReceipt(SignalServiceMessageSender.java:206)
        at org.asamk.signal.manager.Manager.sendReceipt(Manager.java:686)
        at org.asamk.signal.manager.Manager.handleMessage(Manager.java:1562)
        at org.asamk.signal.manager.Manager.receiveMessages(Manager.java:1496)
        at org.asamk.signal.commands.ReceiveCommand.handleCommand(ReceiveCommand.java:160)
        at org.asamk.signal.Main.handleCommands(Main.java:137)
        at org.asamk.signal.Main.main(Main.java:60)
2020-04-21 20:33:23 +02:00
AsamK
ae41d0c502 Output json when receiving messages from dbus and --json parameter is given
Fixes #138
2020-04-03 16:22:10 +02:00
AsamK
f51f0cbbcf Return message timestamp after sucessfully sending a message
Fixes #104
2020-04-03 14:02:18 +02:00
AsamK
320e126eeb Add RecipientStore to resolve all identifiers to SignalServiceAddress
Should fix #290
2020-04-03 13:22:36 +02:00
AsamK
e684a902bb Update dependencies 2020-03-30 22:00:41 +02:00
AsamK
ff18b1bf99 Get untrusted identity from inner exception
Fixes #283
2020-03-29 14:45:11 +02:00
AsamK
7e5aec6e15 Store uuids in identity and session store 2020-03-29 13:32:45 +02:00
AsamK
286070c054 Use legacy sender certificate, until uuid support is complete 2020-03-25 20:34:12 +01:00
AsamK
5df8f32820 Mark our own identity key as trusted initially
to match Signal-Android behavior
2020-03-24 18:16:05 +01:00
AsamK
995de3ef5b Improve behavior, when authorization fails
- register command should still be possible, to regain authorization
- reset uuid after registering, otherwise the verify request will fail
2020-03-24 18:15:21 +01:00
AsamK
efa1c43b0b Get uuids from contact store when resolving numbers 2020-03-24 14:36:12 +01:00
AsamK
26aa31edc2 Only send our profile key to recipient who are in our contact list 2020-03-24 14:36:12 +01:00
AsamK
20bf605e36 Only store our own profile key in contact list, if a contact entry already exists 2020-03-24 14:36:12 +01:00
AsamK
6665dc0e48 Set uuid after verify and linking and request it at startup for existing clients 2020-03-24 14:36:12 +01:00