From 1dda015c6a0225bd3de2a7eb6830b8bc8ef69619 Mon Sep 17 00:00:00 2001 From: Ehren Kret Date: Tue, 3 Aug 2021 15:07:36 -0700 Subject: [PATCH] Update multi-recipient message sending to handle unrestricted destinations --- .../textsecuregcm/controllers/MessageController.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java index a493bbde2..a03d81cfa 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java @@ -431,8 +431,15 @@ public class MessageController { private void checkAccessKeys(CombinedUnidentifiedSenderAccessKeys accessKeys, Map uuidToAccountMap) { AtomicBoolean throwUnauthorized = new AtomicBoolean(false); byte[] empty = new byte[16]; + final Optional UNRESTRICTED_UNIDENTIFIED_ACCESS_KEY = Optional.of(new byte[16]); byte[] combinedUnknownAccessKeys = uuidToAccountMap.values().stream() - .map(Account::getUnidentifiedAccessKey) + .map(account -> { + if (account.isUnrestrictedUnidentifiedAccess()) { + return UNRESTRICTED_UNIDENTIFIED_ACCESS_KEY; + } else { + return account.getUnidentifiedAccessKey(); + } + }) .map(accessKey -> { if (accessKey.isEmpty()) { throwUnauthorized.set(true);