Skip to content

Commit

Permalink
Fix issues with pni parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
AsamK committed Aug 7, 2023
1 parent 86e1079 commit 6bde596
Show file tree
Hide file tree
Showing 7 changed files with 84 additions and 56 deletions.
107 changes: 62 additions & 45 deletions graalvm-config-dir/reflect-config.json

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions graalvm-config-dir/resource-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,8 @@
"pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt67b/uprops.icu\\E"
}, {
"pattern":"java.base:\\Qsun/net/idn/uidna.spp\\E"
}, {
"pattern":"java.base:\\Qsun/net/www/content-types.properties\\E"
}, {
"pattern":"java.base:\\Qsun/text/resources/LineBreakIteratorData\\E"
}]},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.whispersystems.signalservice.api.push.exceptions.AuthorizationFailedException;
import org.whispersystems.signalservice.api.push.exceptions.DeprecatedVersionException;
import org.whispersystems.signalservice.api.util.DeviceNameUtil;
import org.whispersystems.signalservice.api.util.UuidUtil;
import org.whispersystems.signalservice.internal.push.KyberPreKeyEntity;
import org.whispersystems.signalservice.internal.push.OutgoingPushMessage;
import org.whispersystems.util.Base64UrlSafe;
Expand Down Expand Up @@ -101,8 +102,8 @@ public void checkAccountState() throws IOException {
public void checkWhoAmiI() throws IOException {
final var whoAmI = dependencies.getAccountManager().getWhoAmI();
final var number = whoAmI.getNumber();
final var aci = ACI.parseOrNull(whoAmI.getAci());
final var pni = PNI.parseOrNull(whoAmI.getPni());
final var aci = ACI.parseOrThrow(whoAmI.getAci());
final var pni = PNI.from(UuidUtil.parseOrThrow(whoAmI.getPni()));
if (number.equals(account.getNumber()) && aci.equals(account.getAci()) && pni.equals(account.getPni())) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
import org.whispersystems.signalservice.api.push.SignalServiceAddress;
import org.whispersystems.signalservice.api.push.exceptions.AlreadyVerifiedException;
import org.whispersystems.signalservice.api.push.exceptions.DeprecatedVersionException;
import org.whispersystems.signalservice.api.util.UuidUtil;
import org.whispersystems.signalservice.internal.push.VerifyAccountResponse;
import org.whispersystems.signalservice.internal.util.DynamicCredentialsProvider;

Expand Down Expand Up @@ -164,8 +165,8 @@ public void verifyAccount(
}

//accountManager.setGcmId(Optional.of(GoogleCloudMessaging.getInstance(this).register(REGISTRATION_ID)));
final var aci = ACI.parseOrNull(response.getUuid());
final var pni = PNI.parseOrNull(response.getPni());
final var aci = ACI.parseOrThrow(response.getUuid());
final var pni = PNI.from(UuidUtil.parseOrThrow(response.getPni()));
account.finishRegistration(aci, pni, masterKey, pin, aciPreKeys, pniPreKeys);
accountFileUpdater.updateAccountIdentifiers(account.getNumber(), aci);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -975,8 +975,10 @@ private Profile getProfile(final Connection connection, final RecipientId recipi
}

private RecipientAddress getRecipientAddressFromResultSet(ResultSet resultSet) throws SQLException {
final var serviceId = Optional.ofNullable(resultSet.getBytes("uuid")).map(ServiceId::parseOrNull);
final var pni = Optional.ofNullable(resultSet.getBytes("pni")).map(PNI::parseOrNull);
final var pni = Optional.ofNullable(resultSet.getBytes("pni")).map(UuidUtil::parseOrNull).map(PNI::from);
final var serviceIdUuid = Optional.ofNullable(resultSet.getBytes("uuid")).map(UuidUtil::parseOrNull);
final var serviceId = serviceIdUuid.isPresent() && pni.isPresent() && serviceIdUuid.get()
.equals(pni.get().getRawUuid()) ? pni.<ServiceId>map(p -> p) : serviceIdUuid.<ServiceId>map(ACI::from);
final var number = Optional.ofNullable(resultSet.getString("number"));
final var username = Optional.ofNullable(resultSet.getString("username"));
return new RecipientAddress(serviceId, pni, number, username);
Expand Down
13 changes: 9 additions & 4 deletions run_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ NUMBER_2="$2"
TEST_PIN_1=456test_pin_foo123
NATIVE=0
JSON_RPC=0
TEST_REGISTER=0

PATH_TEST_CONFIG="$PWD/test-config"
PATH_MAIN="$PATH_TEST_CONFIG/main"
Expand Down Expand Up @@ -100,8 +101,10 @@ run_main --version
run_main --help

## Register
register "$NUMBER_1" "$TEST_PIN_1"
register "$NUMBER_2"
if [ "$TEST_REGISTER" -eq 1 ]; then
register "$NUMBER_1" "$TEST_PIN_1"
register "$NUMBER_2"
fi

sleep 5

Expand Down Expand Up @@ -230,8 +233,10 @@ done
run_main -a "$NUMBER_1" removeDevice -d 2

## Unregister
run_main -a "$NUMBER_1" unregister
run_main -a "$NUMBER_2" unregister --delete-account
if [ "$TEST_REGISTER" -eq 1 ]; then
run_main -a "$NUMBER_1" unregister
run_main -a "$NUMBER_2" unregister --delete-account
fi

if [ ! -z "$GRAALVM_HOME" ]; then
"$GRAALVM_HOME"/lib/svm/bin/native-image-configure generate --input-dir=graalvm-config-dir/ --input-dir=graalvm-config-dir-linked/ --input-dir=graalvm-config-dir-main/ --output-dir=graalvm-config-dir//
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/asamk/signal/BaseConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ public class BaseConfig {
public final static String PROJECT_NAME = BaseConfig.class.getPackage().getImplementationTitle();
public final static String PROJECT_VERSION = BaseConfig.class.getPackage().getImplementationVersion();

final static String USER_AGENT_SIGNAL_ANDROID = "Signal-Android/6.22.0";
final static String USER_AGENT_SIGNAL_ANDROID = "Signal-Android/6.28.1";
final static String USER_AGENT_SIGNAL_CLI = PROJECT_NAME == null
? "signal-cli"
: PROJECT_NAME + "/" + PROJECT_VERSION;
Expand Down

0 comments on commit 6bde596

Please sign in to comment.