]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/util/NumberVerificationUtils.java
Improve behavior when pin data doesn't exist on the server
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / util / NumberVerificationUtils.java
index 388333adb7b9f84dd7beded5fb2d03d6c8ac398a..659a8c676addafe6b0d08a7f362f7429d3832214 100644 (file)
@@ -4,6 +4,7 @@ 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.PinLockMissingException;
 import org.asamk.signal.manager.api.PinLockedException;
 import org.asamk.signal.manager.api.RateLimitException;
 import org.asamk.signal.manager.api.VerificationMethodNotAvailableException;
@@ -47,38 +48,38 @@ public class NumberVerificationUtils {
             }
         }
 
-        sessionId = sessionResponse.getBody().getId();
+        sessionId = sessionResponse.getMetadata().getId();
         sessionIdSaver.accept(sessionId);
 
-        if (sessionResponse.getBody().getVerified()) {
+        if (sessionResponse.getMetadata().getVerified()) {
             return sessionId;
         }
 
-        if (sessionResponse.getBody().getAllowedToRequestCode()) {
+        if (sessionResponse.getMetadata().getAllowedToRequestCode()) {
             return sessionId;
         }
 
         final var nextAttempt = voiceVerification
-                ? sessionResponse.getBody().getNextCall()
-                : sessionResponse.getBody().getNextSms();
+                ? sessionResponse.getMetadata().getNextCall()
+                : sessionResponse.getMetadata().getNextSms();
         if (nextAttempt == null) {
             throw new VerificationMethodNotAvailableException();
         } else if (nextAttempt > 0) {
-            final var timestamp = sessionResponse.getHeaders().getTimestamp() + nextAttempt * 1000;
+            final var timestamp = sessionResponse.getClientReceivedAtMilliseconds() + nextAttempt * 1000;
             throw new RateLimitException(timestamp);
         }
 
-        final var nextVerificationAttempt = sessionResponse.getBody().getNextVerificationAttempt();
+        final var nextVerificationAttempt = sessionResponse.getMetadata().getNextVerificationAttempt();
         if (nextVerificationAttempt != null && nextVerificationAttempt > 0) {
-            final var timestamp = sessionResponse.getHeaders().getTimestamp() + nextVerificationAttempt * 1000;
+            final var timestamp = sessionResponse.getClientReceivedAtMilliseconds() + nextVerificationAttempt * 1000;
             throw new CaptchaRequiredException(timestamp);
         }
 
-        if (sessionResponse.getBody().getRequestedInformation().contains("captcha")) {
+        if (sessionResponse.getMetadata().getRequestedInformation().contains("captcha")) {
             if (captcha != null) {
                 sessionResponse = submitCaptcha(registrationApi, sessionId, captcha);
             }
-            if (!sessionResponse.getBody().getAllowedToRequestCode()) {
+            if (!sessionResponse.getMetadata().getAllowedToRequestCode()) {
                 throw new CaptchaRequiredException("Captcha Required");
             }
         }
@@ -114,7 +115,7 @@ public class NumberVerificationUtils {
             String pin,
             PinHelper pinHelper,
             Verifier verifier
-    ) throws IOException, PinLockedException, IncorrectPinException {
+    ) throws IOException, PinLockedException, IncorrectPinException, PinLockMissingException {
         verificationCode = verificationCode.replace("-", "");
         try {
             final var response = verifier.verify(sessionId, verificationCode, null);
@@ -127,7 +128,7 @@ public class NumberVerificationUtils {
 
             final var registrationLockData = pinHelper.getRegistrationLockData(pin, e);
             if (registrationLockData == null) {
-                throw e;
+                throw new PinLockMissingException();
             }
 
             var registrationLock = registrationLockData.getMasterKey().deriveRegistrationLock();