mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-09 09:28:34 +00:00
Write capabilities to service.
This commit is contained in:
parent
d2e94dad7e
commit
ceb9e4aee2
@ -0,0 +1,17 @@
|
|||||||
|
package org.thoughtcrime.securesms;
|
||||||
|
|
||||||
|
import org.whispersystems.signalservice.api.profiles.SignalServiceProfile;
|
||||||
|
|
||||||
|
public final class AppCapabilities {
|
||||||
|
|
||||||
|
private AppCapabilities() {
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final boolean UUID_CAPABLE = false;
|
||||||
|
private static final boolean GROUPS_V2_CAPABLE = false;
|
||||||
|
|
||||||
|
public static SignalServiceProfile.Capabilities getCapabilities() {
|
||||||
|
return new SignalServiceProfile.Capabilities(UUID_CAPABLE,
|
||||||
|
GROUPS_V2_CAPABLE);
|
||||||
|
}
|
||||||
|
}
|
@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.jobs;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
|
import org.thoughtcrime.securesms.AppCapabilities;
|
||||||
import org.thoughtcrime.securesms.crypto.ProfileKeyUtil;
|
import org.thoughtcrime.securesms.crypto.ProfileKeyUtil;
|
||||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||||
import org.thoughtcrime.securesms.jobmanager.Data;
|
import org.thoughtcrime.securesms.jobmanager.Data;
|
||||||
@ -64,7 +65,8 @@ public class RefreshAttributesJob extends BaseJob {
|
|||||||
SignalServiceAccountManager signalAccountManager = ApplicationDependencies.getSignalServiceAccountManager();
|
SignalServiceAccountManager signalAccountManager = ApplicationDependencies.getSignalServiceAccountManager();
|
||||||
signalAccountManager.setAccountAttributes(null, registrationId, fetchesMessages,
|
signalAccountManager.setAccountAttributes(null, registrationId, fetchesMessages,
|
||||||
pin, registrationLockToken,
|
pin, registrationLockToken,
|
||||||
unidentifiedAccessKey, universalUnidentifiedAccess);
|
unidentifiedAccessKey, universalUnidentifiedAccess,
|
||||||
|
AppCapabilities.getCapabilities());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -7,6 +7,7 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import org.signal.zkgroup.profiles.ProfileKey;
|
import org.signal.zkgroup.profiles.ProfileKey;
|
||||||
|
import org.thoughtcrime.securesms.AppCapabilities;
|
||||||
import org.thoughtcrime.securesms.crypto.IdentityKeyUtil;
|
import org.thoughtcrime.securesms.crypto.IdentityKeyUtil;
|
||||||
import org.thoughtcrime.securesms.crypto.PreKeyUtil;
|
import org.thoughtcrime.securesms.crypto.PreKeyUtil;
|
||||||
import org.thoughtcrime.securesms.crypto.ProfileKeyUtil;
|
import org.thoughtcrime.securesms.crypto.ProfileKeyUtil;
|
||||||
@ -216,7 +217,8 @@ public final class CodeVerificationRequest {
|
|||||||
|
|
||||||
UUID uuid = accountManager.verifyAccountWithCode(code, null, registrationId, !present,
|
UUID uuid = accountManager.verifyAccountWithCode(code, null, registrationId, !present,
|
||||||
pinForServer, registrationLock,
|
pinForServer, registrationLock,
|
||||||
unidentifiedAccessKey, universalUnidentifiedAccess);
|
unidentifiedAccessKey, universalUnidentifiedAccess,
|
||||||
|
AppCapabilities.getCapabilities());
|
||||||
|
|
||||||
IdentityKeyPair identityKey = IdentityKeyUtil.getIdentityKeyPair(context);
|
IdentityKeyPair identityKey = IdentityKeyUtil.getIdentityKeyPair(context);
|
||||||
List<PreKeyRecord> records = PreKeyUtil.generatePreKeys(context);
|
List<PreKeyRecord> records = PreKeyUtil.generatePreKeys(context);
|
||||||
|
@ -27,6 +27,7 @@ import org.whispersystems.signalservice.api.push.exceptions.NoContentException;
|
|||||||
import org.whispersystems.signalservice.api.storage.StorageKey;
|
import org.whispersystems.signalservice.api.storage.StorageKey;
|
||||||
import org.whispersystems.signalservice.api.messages.calls.TurnServerInfo;
|
import org.whispersystems.signalservice.api.messages.calls.TurnServerInfo;
|
||||||
import org.whispersystems.signalservice.api.messages.multidevice.DeviceInfo;
|
import org.whispersystems.signalservice.api.messages.multidevice.DeviceInfo;
|
||||||
|
import org.whispersystems.signalservice.api.profiles.SignalServiceProfile;
|
||||||
import org.whispersystems.signalservice.api.profiles.SignalServiceProfileWrite;
|
import org.whispersystems.signalservice.api.profiles.SignalServiceProfileWrite;
|
||||||
import org.whispersystems.signalservice.api.push.ContactTokenDetails;
|
import org.whispersystems.signalservice.api.push.ContactTokenDetails;
|
||||||
import org.whispersystems.signalservice.api.push.SignedPreKeyEntity;
|
import org.whispersystems.signalservice.api.push.SignedPreKeyEntity;
|
||||||
@ -221,7 +222,8 @@ public class SignalServiceAccountManager {
|
|||||||
*/
|
*/
|
||||||
public UUID verifyAccountWithCode(String verificationCode, String signalingKey, int signalProtocolRegistrationId, boolean fetchesMessages,
|
public UUID verifyAccountWithCode(String verificationCode, String signalingKey, int signalProtocolRegistrationId, boolean fetchesMessages,
|
||||||
String pin, String registrationLock,
|
String pin, String registrationLock,
|
||||||
byte[] unidentifiedAccessKey, boolean unrestrictedUnidentifiedAccess)
|
byte[] unidentifiedAccessKey, boolean unrestrictedUnidentifiedAccess,
|
||||||
|
SignalServiceProfile.Capabilities capabilities)
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
return this.pushServiceSocket.verifyAccountCode(verificationCode, signalingKey,
|
return this.pushServiceSocket.verifyAccountCode(verificationCode, signalingKey,
|
||||||
@ -229,7 +231,8 @@ public class SignalServiceAccountManager {
|
|||||||
fetchesMessages,
|
fetchesMessages,
|
||||||
pin, registrationLock,
|
pin, registrationLock,
|
||||||
unidentifiedAccessKey,
|
unidentifiedAccessKey,
|
||||||
unrestrictedUnidentifiedAccess);
|
unrestrictedUnidentifiedAccess,
|
||||||
|
capabilities);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -247,12 +250,14 @@ public class SignalServiceAccountManager {
|
|||||||
*/
|
*/
|
||||||
public void setAccountAttributes(String signalingKey, int signalProtocolRegistrationId, boolean fetchesMessages,
|
public void setAccountAttributes(String signalingKey, int signalProtocolRegistrationId, boolean fetchesMessages,
|
||||||
String pin, String registrationLock,
|
String pin, String registrationLock,
|
||||||
byte[] unidentifiedAccessKey, boolean unrestrictedUnidentifiedAccess)
|
byte[] unidentifiedAccessKey, boolean unrestrictedUnidentifiedAccess,
|
||||||
|
SignalServiceProfile.Capabilities capabilities)
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
this.pushServiceSocket.setAccountAttributes(signalingKey, signalProtocolRegistrationId, fetchesMessages,
|
this.pushServiceSocket.setAccountAttributes(signalingKey, signalProtocolRegistrationId, fetchesMessages,
|
||||||
pin, registrationLock,
|
pin, registrationLock,
|
||||||
unidentifiedAccessKey, unrestrictedUnidentifiedAccess);
|
unidentifiedAccessKey, unrestrictedUnidentifiedAccess,
|
||||||
|
capabilities);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package org.whispersystems.signalservice.api.profiles;
|
package org.whispersystems.signalservice.api.profiles;
|
||||||
|
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
@ -104,8 +105,14 @@ public class SignalServiceProfile {
|
|||||||
@JsonProperty
|
@JsonProperty
|
||||||
private boolean gv2;
|
private boolean gv2;
|
||||||
|
|
||||||
|
@JsonCreator
|
||||||
public Capabilities() {}
|
public Capabilities() {}
|
||||||
|
|
||||||
|
public Capabilities(boolean uuid, boolean gv2) {
|
||||||
|
this.uuid = uuid;
|
||||||
|
this.gv2 = gv2;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isUuid() {
|
public boolean isUuid() {
|
||||||
return uuid;
|
return uuid;
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,8 @@ package org.whispersystems.signalservice.internal.push;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
import org.whispersystems.signalservice.api.profiles.SignalServiceProfile;
|
||||||
|
|
||||||
public class AccountAttributes {
|
public class AccountAttributes {
|
||||||
|
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
@ -37,7 +39,18 @@ public class AccountAttributes {
|
|||||||
@JsonProperty
|
@JsonProperty
|
||||||
private boolean unrestrictedUnidentifiedAccess;
|
private boolean unrestrictedUnidentifiedAccess;
|
||||||
|
|
||||||
public AccountAttributes(String signalingKey, int registrationId, boolean fetchesMessages, String pin, String registrationLock, byte[] unidentifiedAccessKey, boolean unrestrictedUnidentifiedAccess) {
|
@JsonProperty
|
||||||
|
private SignalServiceProfile.Capabilities capabilities;
|
||||||
|
|
||||||
|
public AccountAttributes(String signalingKey,
|
||||||
|
int registrationId,
|
||||||
|
boolean fetchesMessages,
|
||||||
|
String pin,
|
||||||
|
String registrationLock,
|
||||||
|
byte[] unidentifiedAccessKey,
|
||||||
|
boolean unrestrictedUnidentifiedAccess,
|
||||||
|
SignalServiceProfile.Capabilities capabilities)
|
||||||
|
{
|
||||||
this.signalingKey = signalingKey;
|
this.signalingKey = signalingKey;
|
||||||
this.registrationId = registrationId;
|
this.registrationId = registrationId;
|
||||||
this.voice = true;
|
this.voice = true;
|
||||||
@ -47,6 +60,7 @@ public class AccountAttributes {
|
|||||||
this.registrationLock = registrationLock;
|
this.registrationLock = registrationLock;
|
||||||
this.unidentifiedAccessKey = unidentifiedAccessKey;
|
this.unidentifiedAccessKey = unidentifiedAccessKey;
|
||||||
this.unrestrictedUnidentifiedAccess = unrestrictedUnidentifiedAccess;
|
this.unrestrictedUnidentifiedAccess = unrestrictedUnidentifiedAccess;
|
||||||
|
this.capabilities = capabilities;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AccountAttributes() {}
|
public AccountAttributes() {}
|
||||||
@ -86,4 +100,8 @@ public class AccountAttributes {
|
|||||||
public boolean isUnrestrictedUnidentifiedAccess() {
|
public boolean isUnrestrictedUnidentifiedAccess() {
|
||||||
return unrestrictedUnidentifiedAccess;
|
return unrestrictedUnidentifiedAccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public SignalServiceProfile.Capabilities getCapabilities() {
|
||||||
|
return capabilities;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -249,10 +249,11 @@ public class PushServiceSocket {
|
|||||||
|
|
||||||
public UUID verifyAccountCode(String verificationCode, String signalingKey, int registrationId, boolean fetchesMessages,
|
public UUID verifyAccountCode(String verificationCode, String signalingKey, int registrationId, boolean fetchesMessages,
|
||||||
String pin, String registrationLock,
|
String pin, String registrationLock,
|
||||||
byte[] unidentifiedAccessKey, boolean unrestrictedUnidentifiedAccess)
|
byte[] unidentifiedAccessKey, boolean unrestrictedUnidentifiedAccess,
|
||||||
|
SignalServiceProfile.Capabilities capabilities)
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
AccountAttributes signalingKeyEntity = new AccountAttributes(signalingKey, registrationId, fetchesMessages, pin, registrationLock, unidentifiedAccessKey, unrestrictedUnidentifiedAccess);
|
AccountAttributes signalingKeyEntity = new AccountAttributes(signalingKey, registrationId, fetchesMessages, pin, registrationLock, unidentifiedAccessKey, unrestrictedUnidentifiedAccess, capabilities);
|
||||||
String requestBody = JsonUtil.toJson(signalingKeyEntity);
|
String requestBody = JsonUtil.toJson(signalingKeyEntity);
|
||||||
String responseBody = makeServiceRequest(String.format(VERIFY_ACCOUNT_CODE_PATH, verificationCode), "PUT", requestBody);
|
String responseBody = makeServiceRequest(String.format(VERIFY_ACCOUNT_CODE_PATH, verificationCode), "PUT", requestBody);
|
||||||
VerifyAccountResponse response = JsonUtil.fromJson(responseBody, VerifyAccountResponse.class);
|
VerifyAccountResponse response = JsonUtil.fromJson(responseBody, VerifyAccountResponse.class);
|
||||||
@ -267,7 +268,8 @@ public class PushServiceSocket {
|
|||||||
|
|
||||||
public void setAccountAttributes(String signalingKey, int registrationId, boolean fetchesMessages,
|
public void setAccountAttributes(String signalingKey, int registrationId, boolean fetchesMessages,
|
||||||
String pin, String registrationLock,
|
String pin, String registrationLock,
|
||||||
byte[] unidentifiedAccessKey, boolean unrestrictedUnidentifiedAccess)
|
byte[] unidentifiedAccessKey, boolean unrestrictedUnidentifiedAccess,
|
||||||
|
SignalServiceProfile.Capabilities capabilities)
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
if (registrationLock != null && pin != null) {
|
if (registrationLock != null && pin != null) {
|
||||||
@ -275,7 +277,7 @@ public class PushServiceSocket {
|
|||||||
}
|
}
|
||||||
|
|
||||||
AccountAttributes accountAttributes = new AccountAttributes(signalingKey, registrationId, fetchesMessages, pin, registrationLock,
|
AccountAttributes accountAttributes = new AccountAttributes(signalingKey, registrationId, fetchesMessages, pin, registrationLock,
|
||||||
unidentifiedAccessKey, unrestrictedUnidentifiedAccess);
|
unidentifiedAccessKey, unrestrictedUnidentifiedAccess, capabilities);
|
||||||
makeServiceRequest(SET_ACCOUNT_ATTRIBUTES, "PUT", JsonUtil.toJson(accountAttributes));
|
makeServiceRequest(SET_ACCOUNT_ATTRIBUTES, "PUT", JsonUtil.toJson(accountAttributes));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user