diff --git a/keyserver/src/push/send.js b/keyserver/src/push/send.js --- a/keyserver/src/push/send.js +++ b/keyserver/src/push/send.js @@ -807,10 +807,11 @@ platformDetails.codeVersion && platformDetails.codeVersion >= FUTURE_CODE_VERSION; - let blobHash, encryptionKey, blobUploadError; + let blobHash, holder, encryptionKey, blobUploadError; if (canQueryBlobService) { ({ blobHash: blobHash, + holder: holder, encryptionKey: encryptionKey, blobUploadError: blobUploadError, } = await blobServiceUpload(copyWithMessageInfos.compile())); @@ -823,9 +824,10 @@ ); } - if (blobHash && encryptionKey) { + if (blobHash && encryptionKey && holder) { notification.payload = { blobHash, + holder, encryptionKey, ...notification.payload, }; @@ -963,10 +965,11 @@ } const canQueryBlobService = codeVersion && codeVersion >= FUTURE_CODE_VERSION; - let blobHash, encryptionKey, blobUploadError; + let blobHash, holder, encryptionKey, blobUploadError; if (canQueryBlobService) { ({ blobHash: blobHash, + holder: holder, encryptionKey: encryptionKey, blobUploadError: blobUploadError, } = await blobServiceUpload(JSON.stringify(copyWithMessageInfos.data))); @@ -980,7 +983,7 @@ } let notifsWithoutMessageInfos; - if (!blobHash || !encryptionKey) { + if (!blobHash || !encryptionKey || !holder) { notifsWithoutMessageInfos = await prepareEncryptedAndroidNotifications( devicesWithExcessiveSize, notification, @@ -995,6 +998,7 @@ badgeOnly: badgeOnly ? '1' : '0', threadID, blobHash, + holder, encryptionKey, ...rest, }, diff --git a/keyserver/src/push/types.js b/keyserver/src/push/types.js --- a/keyserver/src/push/types.js +++ b/keyserver/src/push/types.js @@ -25,6 +25,7 @@ ...AndroidNotificationPayloadBase, +blobHash: string, +encryptionKey: string, + +holder: string, }; export type AndroidNotification = { diff --git a/keyserver/src/push/utils.js b/keyserver/src/push/utils.js --- a/keyserver/src/push/utils.js +++ b/keyserver/src/push/utils.js @@ -385,6 +385,7 @@ async function blobServiceUpload(payload: string): Promise< | { +blobHash: string, + +holder: string, +encryptionKey: string, } | { +blobUploadError: string }, @@ -394,7 +395,7 @@ await encrypt(encryptionKey, new TextEncoder().encode(payload)), ); - const blobHolder = uuid.v4(); + const holder = uuid.v4(); const blobHashBase64 = await crypto .createHash('sha256') .update(encryptedPayloadBuffer) @@ -413,7 +414,7 @@ { method: blobService.httpEndpoints.ASSIGN_HOLDER.method, body: JSON.stringify({ - holder: blobHolder, + holder: holder, blob_hash: blobHash, }), headers: { @@ -460,6 +461,7 @@ const encryptionKeyString = Buffer.from(encryptionKey).toString('base64'); return { blobHash, + holder, encryptionKey: encryptionKeyString, }; }