import org.asamk.signal.manager.helper.PinHelper;
import org.asamk.signal.manager.storage.SignalAccount;
import org.asamk.signal.manager.util.KeyUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.whispersystems.libsignal.util.KeyHelper;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.KeyBackupServicePinException;
import org.whispersystems.signalservice.api.groupsv2.GroupsV2Operations;
import org.whispersystems.signalservice.api.kbs.MasterKey;
import org.whispersystems.signalservice.api.push.SignalServiceAddress;
-import org.whispersystems.signalservice.api.util.SleepTimer;
-import org.whispersystems.signalservice.api.util.UptimeSleepTimer;
import org.whispersystems.signalservice.api.util.UuidUtil;
import org.whispersystems.signalservice.internal.push.LockedException;
import org.whispersystems.signalservice.internal.push.VerifyAccountResponse;
public class RegistrationManager implements Closeable {
+ private final static Logger logger = LoggerFactory.getLogger(RegistrationManager.class);
+
private SignalAccount account;
private final PathConfig pathConfig;
private final ServiceEnvironmentConfig serviceEnvironmentConfig;
this.serviceEnvironmentConfig = serviceEnvironmentConfig;
this.userAgent = userAgent;
- final SleepTimer timer = new UptimeSleepTimer();
GroupsV2Operations groupsV2Operations;
try {
groupsV2Operations = new GroupsV2Operations(ClientZkOperations.create(serviceEnvironmentConfig.getSignalServiceConfiguration()));
null, account.getUsername(), account.getPassword(), SignalServiceAddress.DEFAULT_DEVICE_ID),
userAgent,
groupsV2Operations,
- ServiceConfig.AUTOMATIC_NETWORK_RETRY,
- timer);
+ ServiceConfig.AUTOMATIC_NETWORK_RETRY);
final var keyBackupService = accountManager.getKeyBackupService(ServiceConfig.getIasKeyStore(),
serviceEnvironmentConfig.getKeyBackupConfig().getEnclaveName(),
serviceEnvironmentConfig.getKeyBackupConfig().getServiceId(),
public void register(boolean voiceVerification, String captcha) throws IOException {
if (voiceVerification) {
- accountManager.requestVoiceVerificationCode(Locale.getDefault(),
+ accountManager.requestVoiceVerificationCode(getDefaultLocale(),
Optional.fromNullable(captcha),
Optional.absent());
} else {
}
}
+ private Locale getDefaultLocale() {
+ final var locale = Locale.getDefault();
+ try {
+ Locale.LanguageRange.parse(locale.getLanguage() + "-" + locale.getCountry());
+ } catch (IllegalArgumentException e) {
+ logger.debug("Invalid locale, ignoring: {}", locale);
+ return null;
+ }
+
+ return locale;
+ }
+
public Manager verifyAccount(
String verificationCode, String pin
) throws IOException, LockedException, KeyBackupSystemNoDataException, KeyBackupServicePinException {