From 80e15ad54eff0d0552bea1db45208a6b80c19e16 Mon Sep 17 00:00:00 2001 From: AsamK Date: Mon, 18 Jan 2021 20:29:01 +0100 Subject: [PATCH] Only allow setting PIN by master device --- src/main/java/org/asamk/signal/manager/Manager.java | 3 +++ .../java/org/asamk/signal/manager/storage/SignalAccount.java | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/main/java/org/asamk/signal/manager/Manager.java b/src/main/java/org/asamk/signal/manager/Manager.java index 3642d6db..b8a0f57b 100644 --- a/src/main/java/org/asamk/signal/manager/Manager.java +++ b/src/main/java/org/asamk/signal/manager/Manager.java @@ -415,6 +415,9 @@ public class Manager implements Closeable { } public void setRegistrationLockPin(Optional pin) throws IOException, UnauthenticatedResponseException { + if (!account.isMasterDevice()) { + throw new RuntimeException("Only master device can set a PIN"); + } if (pin.isPresent()) { final MasterKey masterKey = account.getPinMasterKey() != null ? account.getPinMasterKey() diff --git a/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java b/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java index a6e243a8..cb6f7461 100644 --- a/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java +++ b/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java @@ -505,6 +505,10 @@ public class SignalAccount implements Closeable { this.deviceId = deviceId; } + public boolean isMasterDevice() { + return deviceId == SignalServiceAddress.DEFAULT_DEVICE_ID; + } + public String getPassword() { return password; } -- 2.50.1