Update libsignal-service

This commit is contained in:
AsamK 2020-09-10 11:06:33 +02:00
parent 4d8b103570
commit 6c4d272309
3 changed files with 13 additions and 10 deletions

View file

@ -17,7 +17,7 @@ repositories {
} }
dependencies { dependencies {
implementation 'com.github.turasa:signal-service-java:2.15.3_unofficial_12' implementation 'com.github.turasa:signal-service-java:2.15.3_unofficial_13'
implementation 'org.bouncycastle:bcprov-jdk15on:1.66' implementation 'org.bouncycastle:bcprov-jdk15on:1.66'
implementation 'net.sourceforge.argparse4j:argparse4j:0.8.1' implementation 'net.sourceforge.argparse4j:argparse4j:0.8.1'
implementation 'com.github.hypfvieh:dbus-java:3.2.3' implementation 'com.github.hypfvieh:dbus-java:3.2.3'

View file

@ -153,6 +153,7 @@ public class Manager implements Closeable {
private SignalServiceAccountManager accountManager; private SignalServiceAccountManager accountManager;
private SignalServiceMessagePipe messagePipe = null; private SignalServiceMessagePipe messagePipe = null;
private SignalServiceMessagePipe unidentifiedMessagePipe = null; private SignalServiceMessagePipe unidentifiedMessagePipe = null;
private boolean discoverableByPhoneNumber = true;
public Manager(SignalAccount account, PathConfig pathConfig, SignalServiceConfiguration serviceConfiguration, String userAgent) { public Manager(SignalAccount account, PathConfig pathConfig, SignalServiceConfiguration serviceConfiguration, String userAgent) {
this.account = account; this.account = account;
@ -286,7 +287,7 @@ public class Manager implements Closeable {
} }
public void updateAccountAttributes() throws IOException { public void updateAccountAttributes() throws IOException {
accountManager.setAccountAttributes(account.getSignalingKey(), account.getSignalProtocolStore().getLocalRegistrationId(), true, account.getRegistrationLockPin(), account.getRegistrationLock(), getSelfUnidentifiedAccessKey(), false, ServiceConfig.capabilities); accountManager.setAccountAttributes(account.getSignalingKey(), account.getSignalProtocolStore().getLocalRegistrationId(), true, account.getRegistrationLockPin(), account.getRegistrationLock(), getSelfUnidentifiedAccessKey(), false, ServiceConfig.capabilities, discoverableByPhoneNumber);
} }
public void setProfile(String name, File avatar) throws IOException { public void setProfile(String name, File avatar) throws IOException {
@ -371,7 +372,7 @@ public class Manager implements Closeable {
verificationCode = verificationCode.replace("-", ""); verificationCode = verificationCode.replace("-", "");
account.setSignalingKey(KeyUtils.createSignalingKey()); account.setSignalingKey(KeyUtils.createSignalingKey());
// TODO make unrestricted unidentified access configurable // TODO make unrestricted unidentified access configurable
VerifyAccountResponse response = accountManager.verifyAccountWithCode(verificationCode, account.getSignalingKey(), account.getSignalProtocolStore().getLocalRegistrationId(), true, pin, null, getSelfUnidentifiedAccessKey(), false, ServiceConfig.capabilities); VerifyAccountResponse response = accountManager.verifyAccountWithCode(verificationCode, account.getSignalingKey(), account.getSignalProtocolStore().getLocalRegistrationId(), true, pin, null, getSelfUnidentifiedAccessKey(), false, ServiceConfig.capabilities, discoverableByPhoneNumber);
UUID uuid = UuidUtil.parseOrNull(response.getUuid()); UUID uuid = UuidUtil.parseOrNull(response.getUuid());
// TODO response.isStorageCapable() // TODO response.isStorageCapable()
@ -836,7 +837,8 @@ public class Manager implements Closeable {
throw new StickerPackInvalidException("Could not find find " + sticker.file); throw new StickerPackInvalidException("Could not find find " + sticker.file);
} }
StickerInfo stickerInfo = new StickerInfo(data.first(), data.second(), Optional.fromNullable(sticker.emoji).or("")); String contentType = Utils.getFileMimeType(new File(sticker.file), null);
StickerInfo stickerInfo = new StickerInfo(data.first(), data.second(), Optional.fromNullable(sticker.emoji).or(""), contentType);
stickers.add(stickerInfo); stickers.add(stickerInfo);
} }
@ -853,7 +855,8 @@ public class Manager implements Closeable {
throw new StickerPackInvalidException("Could not find find " + pack.cover.file); throw new StickerPackInvalidException("Could not find find " + pack.cover.file);
} }
cover = new StickerInfo(data.first(), data.second(), Optional.fromNullable(pack.cover.emoji).or("")); String contentType = Utils.getFileMimeType(new File(pack.cover.file), null);
cover = new StickerInfo(data.first(), data.second(), Optional.fromNullable(pack.cover.emoji).or(""), contentType);
} }
return new SignalServiceStickerManifestUpload( return new SignalServiceStickerManifestUpload(
@ -925,10 +928,10 @@ public class Manager implements Closeable {
private byte[] getSenderCertificate() { private byte[] getSenderCertificate() {
// TODO support UUID capable sender certificates // TODO support UUID capable sender certificates
// byte[] certificate = accountManager.getSenderCertificate(); // byte[] certificate = accountManager.getSenderCertificateForPhoneNumberPrivacy();
byte[] certificate; byte[] certificate;
try { try {
certificate = accountManager.getSenderCertificateLegacy(); certificate = accountManager.getSenderCertificate();
} catch (IOException e) { } catch (IOException e) {
System.err.println("Failed to get sender certificate: " + e); System.err.println("Failed to get sender certificate: " + e);
return null; return null;

View file

@ -58,7 +58,7 @@ class Utils {
return signalServiceAttachments; return signalServiceAttachments;
} }
private static String getFileMimeType(File file) throws IOException { static String getFileMimeType(File file, String defaultMimeType) throws IOException {
String mime = Files.probeContentType(file.toPath()); String mime = Files.probeContentType(file.toPath());
if (mime == null) { if (mime == null) {
try (InputStream bufferedStream = new BufferedInputStream(new FileInputStream(file))) { try (InputStream bufferedStream = new BufferedInputStream(new FileInputStream(file))) {
@ -66,7 +66,7 @@ class Utils {
} }
} }
if (mime == null) { if (mime == null) {
mime = "application/octet-stream"; return defaultMimeType;
} }
return mime; return mime;
} }
@ -74,7 +74,7 @@ class Utils {
static SignalServiceAttachmentStream createAttachment(File attachmentFile) throws IOException { static SignalServiceAttachmentStream createAttachment(File attachmentFile) throws IOException {
InputStream attachmentStream = new FileInputStream(attachmentFile); InputStream attachmentStream = new FileInputStream(attachmentFile);
final long attachmentSize = attachmentFile.length(); final long attachmentSize = attachmentFile.length();
final String mime = getFileMimeType(attachmentFile); final String mime = getFileMimeType(attachmentFile, "application/octet-stream");
// TODO mabybe add a parameter to set the voiceNote, borderless, preview, width, height and caption option // TODO mabybe add a parameter to set the voiceNote, borderless, preview, width, height and caption option
final long uploadTimestamp = System.currentTimeMillis(); final long uploadTimestamp = System.currentTimeMillis();
Optional<byte[]> preview = Optional.absent(); Optional<byte[]> preview = Optional.absent();