import org.asamk.signal.manager.api.CaptchaRequiredException;
import org.asamk.signal.manager.api.IncorrectPinException;
+import org.asamk.signal.manager.api.NonNormalizedPhoneNumberException;
import org.asamk.signal.manager.api.PinLockedException;
import java.io.Closeable;
public interface RegistrationManager extends Closeable {
- void register(boolean voiceVerification, String captcha) throws IOException, CaptchaRequiredException;
+ void register(
+ boolean voiceVerification, String captcha
+ ) throws IOException, CaptchaRequiredException, NonNormalizedPhoneNumberException;
void verifyAccount(
String verificationCode, String pin
import org.asamk.signal.manager.api.CaptchaRequiredException;
import org.asamk.signal.manager.api.IncorrectPinException;
+import org.asamk.signal.manager.api.NonNormalizedPhoneNumberException;
import org.asamk.signal.manager.api.PinLockedException;
import org.asamk.signal.manager.api.UpdateProfile;
import org.asamk.signal.manager.config.ServiceConfig;
}
@Override
- public void register(boolean voiceVerification, String captcha) throws IOException, CaptchaRequiredException {
+ public void register(
+ boolean voiceVerification, String captcha
+ ) throws IOException, CaptchaRequiredException, NonNormalizedPhoneNumberException {
if (account.isRegistered()
&& account.getServiceEnvironment() != null
&& account.getServiceEnvironment() != serviceEnvironmentConfig.getType()) {
--- /dev/null
+package org.asamk.signal.manager.api;
+
+public class NonNormalizedPhoneNumberException extends Exception {
+
+ public NonNormalizedPhoneNumberException(final String message) {
+ super(message);
+ }
+
+ public NonNormalizedPhoneNumberException(final String message, final Throwable cause) {
+ super(message, cause);
+ }
+}
import org.asamk.signal.manager.api.CaptchaRequiredException;
import org.asamk.signal.manager.api.IncorrectPinException;
import org.asamk.signal.manager.api.InvalidDeviceLinkException;
+import org.asamk.signal.manager.api.NonNormalizedPhoneNumberException;
import org.asamk.signal.manager.api.PinLockedException;
import org.asamk.signal.manager.config.ServiceConfig;
import org.asamk.signal.manager.storage.SignalAccount;
public void startChangeNumber(
String newNumber, String captcha, boolean voiceVerification
- ) throws IOException, CaptchaRequiredException {
+ ) throws IOException, CaptchaRequiredException, NonNormalizedPhoneNumberException {
final var accountManager = dependencies.createUnauthenticatedAccountManager(newNumber, account.getPassword());
NumberVerificationUtils.requestVerificationCode(accountManager, captcha, voiceVerification);
}
import org.asamk.signal.manager.api.CaptchaRequiredException;
import org.asamk.signal.manager.api.IncorrectPinException;
+import org.asamk.signal.manager.api.NonNormalizedPhoneNumberException;
import org.asamk.signal.manager.api.Pair;
import org.asamk.signal.manager.api.PinLockedException;
import org.asamk.signal.manager.helper.PinHelper;
public static void requestVerificationCode(
SignalServiceAccountManager accountManager, String captcha, boolean voiceVerification
- ) throws IOException, CaptchaRequiredException {
+ ) throws IOException, CaptchaRequiredException, NonNormalizedPhoneNumberException {
captcha = captcha == null ? null : captcha.replace("signalcaptcha://", "");
final ServiceResponse<RequestVerificationCodeResponse> response;
handleResponseException(response);
} catch (org.whispersystems.signalservice.api.push.exceptions.CaptchaRequiredException e) {
throw new CaptchaRequiredException(e.getMessage(), e);
+ } catch (org.whispersystems.signalservice.api.push.exceptions.NonNormalizedPhoneNumberException e) {
+ throw new NonNormalizedPhoneNumberException("Phone number is not normalized ("
+ + e.getMessage()
+ + "). Expected normalized: "
+ + e.getNormalizedNumber(), e);
}
}
import org.asamk.signal.commands.exceptions.UserErrorException;
import org.asamk.signal.manager.RegistrationManager;
import org.asamk.signal.manager.api.CaptchaRequiredException;
+import org.asamk.signal.manager.api.NonNormalizedPhoneNumberException;
import org.asamk.signal.output.JsonWriter;
import java.io.IOException;
message = "Invalid captcha given.";
}
throw new UserErrorException(message);
+ } catch (NonNormalizedPhoneNumberException e) {
+ throw new UserErrorException("Failed to register: " + e.getMessage(), e);
} catch (IOException e) {
throw new IOErrorException("Request verify error: " + e.getMessage(), e);
}
import org.asamk.signal.manager.RegistrationManager;
import org.asamk.signal.manager.api.CaptchaRequiredException;
import org.asamk.signal.manager.api.IncorrectPinException;
+import org.asamk.signal.manager.api.NonNormalizedPhoneNumberException;
import org.asamk.signal.manager.api.PinLockedException;
import org.asamk.signal.manager.api.UserAlreadyExistsException;
import org.freedesktop.dbus.DBusPath;
} catch (CaptchaRequiredException e) {
String message = captcha == null ? "Captcha required for verification." : "Invalid captcha given.";
throw new SignalControl.Error.RequiresCaptcha(message);
+ } catch (NonNormalizedPhoneNumberException e) {
+ throw new Error.InvalidNumber(e.getMessage());
} catch (OverlappingFileLockException e) {
throw new SignalControl.Error.Failure("Account is already in use");
} catch (IOException e) {