Page MenuHomePhabricator

D14028.id46063.diff
No OneTemporary

D14028.id46063.diff

diff --git a/keyserver/src/responders/user-responders.js b/keyserver/src/responders/user-responders.js
--- a/keyserver/src/responders/user-responders.js
+++ b/keyserver/src/responders/user-responders.js
@@ -2,7 +2,6 @@
import type { Utility as OlmUtility } from '@commapp/olm';
import invariant from 'invariant';
-import { getRustAPI } from 'rust-node-addon';
import { SiweErrorType, SiweMessage } from 'siwe';
import t, { type TInterface } from 'tcomb';
import bcrypt from 'twin-bcrypt';
@@ -136,8 +135,8 @@
import { fetchOlmAccount } from '../updaters/olm-account-updater.js';
import { userSubscriptionUpdater } from '../updaters/user-subscription-updaters.js';
import { viewerAcknowledgmentUpdater } from '../updaters/viewer-acknowledgment-updater.js';
-import { verifyUserLoggedIn } from '../user/login.js';
-import { getOlmUtility, getContentSigningKey } from '../utils/olm-utils.js';
+import { getInboundKeysForUserDevice } from '../utils/identity-utils.js';
+import { getOlmUtility } from '../utils/olm-utils.js';
export const subscriptionUpdateRequestInputValidator: TInterface<SubscriptionUpdateRequest> =
tShape<SubscriptionUpdateRequest>({
@@ -796,31 +795,18 @@
// 1. Check if there's already a user for this userID. Simultaneously, get
// info for identity service auth.
- const [existingUsername, authDeviceID, identityInfo, rustAPI] =
- await Promise.all([
- fetchUsername(userID),
- getContentSigningKey(),
- verifyUserLoggedIn(),
- getRustAPI(),
- verifyCalendarQueryThreadIDs(calendarQuery),
- ]);
+ const [existingUsername] = await Promise.all([
+ fetchUsername(userID),
+ verifyCalendarQueryThreadIDs(calendarQuery),
+ ]);
if (!existingUsername && doNotRegister) {
throw new ServerError('account_does_not_exist');
}
- if (!identityInfo) {
- throw new ServerError('account_not_registered_on_identity_service');
- }
// 2. Get user's keys from identity service.
let inboundKeysForUser;
try {
- inboundKeysForUser = await rustAPI.getInboundKeysForUserDevice(
- identityInfo.userId,
- authDeviceID,
- identityInfo.accessToken,
- userID,
- deviceID,
- );
+ inboundKeysForUser = await getInboundKeysForUserDevice(userID, deviceID);
} catch (e) {
console.log(e);
throw new ServerError('failed_to_retrieve_inbound_keys');
diff --git a/keyserver/src/utils/identity-utils.js b/keyserver/src/utils/identity-utils.js
--- a/keyserver/src/utils/identity-utils.js
+++ b/keyserver/src/utils/identity-utils.js
@@ -2,7 +2,11 @@
import { getRustAPI } from 'rust-node-addon';
-import type { UserIdentitiesResponse } from 'lib/types/identity-service-types.js';
+import type {
+ UserIdentitiesResponse,
+ InboundKeyInfoResponse,
+} from 'lib/types/identity-service-types.js';
+import { ServerError } from 'lib/utils/errors.js';
import { getContentSigningKey } from './olm-utils.js';
import type { IdentityInfo } from '../user/identity.js';
@@ -119,6 +123,29 @@
);
}
+async function getInboundKeysForUserDevice(
+ userID: string,
+ deviceID: string,
+): Promise<InboundKeyInfoResponse> {
+ const [authDeviceID, identityInfo, rustAPI] = await Promise.all([
+ getContentSigningKey(),
+ verifyUserLoggedIn(),
+ getRustAPI(),
+ ]);
+
+ if (!identityInfo) {
+ throw new ServerError('account_not_registered_on_identity_service');
+ }
+
+ return rustAPI.getInboundKeysForUserDevice(
+ identityInfo.userId,
+ authDeviceID,
+ identityInfo.accessToken,
+ userID,
+ deviceID,
+ );
+}
+
export {
findUserIdentities,
privilegedDeleteUsers,
@@ -126,4 +153,5 @@
syncPlatformDetails,
uploadOneTimeKeys,
publishPrekeys,
+ getInboundKeysForUserDevice,
};

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 1, 11:00 PM (10 h, 26 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2606256
Default Alt Text
D14028.id46063.diff (3 KB)

Event Timeline