import org.whispersystems.signalservice.api.push.SignalServiceAddress;
import org.whispersystems.signalservice.api.push.exceptions.AuthorizationFailedException;
import org.whispersystems.signalservice.api.util.DeviceNameUtil;
-import org.whispersystems.signalservice.internal.push.ConfirmCodeMessage;
+import org.whispersystems.signalservice.internal.push.ProvisioningSocket;
+import org.whispersystems.signalservice.internal.push.PushServiceSocket;
import org.whispersystems.signalservice.internal.util.DynamicCredentialsProvider;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import java.util.function.Consumer;
-import static org.asamk.signal.manager.config.ServiceConfig.getCapabilities;
+import static org.asamk.signal.manager.util.KeyUtils.generatePreKeysForType;
public class ProvisioningManagerImpl implements ProvisioningManager {
- private final static Logger logger = LoggerFactory.getLogger(ProvisioningManagerImpl.class);
+ private static final Logger logger = LoggerFactory.getLogger(ProvisioningManagerImpl.class);
private final PathConfig pathConfig;
private final ServiceEnvironmentConfig serviceEnvironmentConfig;
tempIdentityKey = KeyUtils.generateIdentityKeyPair();
password = KeyUtils.createPassword();
- GroupsV2Operations groupsV2Operations = new GroupsV2Operations(ClientZkOperations.create(
- serviceEnvironmentConfig.signalServiceConfiguration()), ServiceConfig.GROUP_MAX_SIZE);
- accountManager = new SignalServiceAccountManager(serviceEnvironmentConfig.signalServiceConfiguration(),
- new DynamicCredentialsProvider(null, null, null, password, SignalServiceAddress.DEFAULT_DEVICE_ID),
+ final var clientZkOperations = ClientZkOperations.create(serviceEnvironmentConfig.signalServiceConfiguration());
+ final var groupsV2Operations = new GroupsV2Operations(clientZkOperations, ServiceConfig.GROUP_MAX_SIZE);
+ final var credentialsProvider = new DynamicCredentialsProvider(null,
+ null,
+ null,
+ password,
+ SignalServiceAddress.DEFAULT_DEVICE_ID);
+ final var pushServiceSocket = new PushServiceSocket(serviceEnvironmentConfig.signalServiceConfiguration(),
+ credentialsProvider,
userAgent,
- groupsV2Operations,
+ clientZkOperations.getProfileOperations(),
ServiceConfig.AUTOMATIC_NETWORK_RETRY);
+ accountManager = new SignalServiceAccountManager(pushServiceSocket,
+ new ProvisioningSocket(serviceEnvironmentConfig.signalServiceConfiguration(), userAgent),
+ groupsV2Operations);
}
@Override
encryptedDeviceName,
ret.getAciIdentity(),
ret.getPniIdentity(),
- profileKey);
+ profileKey,
+ ret.getMasterKey(),
+ ret.getAccountEntropyPool(),
+ ret.getMediaRootBackupKey());
account.getConfigurationStore().setReadReceipts(ret.isReadReceipts());
+ final var aciPreKeys = generatePreKeysForType(account.getAccountData(ServiceIdType.ACI));
+ final var pniPreKeys = generatePreKeysForType(account.getAccountData(ServiceIdType.PNI));
+
logger.debug("Finishing new device registration");
var deviceId = accountManager.finishNewDeviceRegistration(ret.getProvisioningCode(),
- new ConfirmCodeMessage(false,
- true,
- account.getAccountData(ServiceIdType.ACI).getLocalRegistrationId(),
- account.getAccountData(ServiceIdType.PNI).getLocalRegistrationId(),
- encryptedDeviceName,
- getCapabilities(false)));
-
- account.finishLinking(deviceId);
+ account.getAccountAttributes(null),
+ aciPreKeys,
+ pniPreKeys);
+
+ account.finishLinking(deviceId, aciPreKeys, pniPreKeys);
ManagerImpl m = null;
try {