Page MenuHomePhorge

D14320.1768718316.diff
No OneTemporary

Size
7 KB
Referenced Files
None
Subscribers
None

D14320.1768718316.diff

diff --git a/keyserver/src/creators/account-creator.js b/keyserver/src/creators/account-creator.js
--- a/keyserver/src/creators/account-creator.js
+++ b/keyserver/src/creators/account-creator.js
@@ -42,13 +42,13 @@
import { createNewUserCookie, setNewSession } from '../session/cookies.js';
import { createScriptViewer } from '../session/scripts.js';
import type { Viewer } from '../session/viewer.js';
-import { fetchOlmAccount } from '../updaters/olm-account-updater.js';
import { updateThread } from '../updaters/thread-updaters.js';
import { viewerAcknowledgmentUpdater } from '../updaters/viewer-acknowledgment-updater.js';
import {
isAuthoritativeKeyserver,
thisKeyserverAdmin,
} from '../user/identity.js';
+import { signUsingOlmAccount } from '../utils/olm-utils.js';
const adminMessages = [
'welcome to Comm!',
@@ -224,11 +224,10 @@
};
const stringifiedMessage = JSON.stringify(reservedUsernameMessage);
- const [rustAPI, accountInfo] = await Promise.all([
+ const [rustAPI, signature] = await Promise.all([
getRustAPI(),
- fetchOlmAccount('content'),
+ signUsingOlmAccount(stringifiedMessage),
]);
- const signature = accountInfo.account.sign(stringifiedMessage);
await rustAPI.addReservedUsernames(stringifiedMessage, signature);
}
diff --git a/keyserver/src/cron/update-identity-reserved-usernames.js b/keyserver/src/cron/update-identity-reserved-usernames.js
--- a/keyserver/src/cron/update-identity-reserved-usernames.js
+++ b/keyserver/src/cron/update-identity-reserved-usernames.js
@@ -5,13 +5,12 @@
import type { ReservedUsernameMessage } from 'lib/types/crypto-types.js';
import { fetchAllUserDetails } from '../fetchers/user-fetchers.js';
-import { fetchOlmAccount } from '../updaters/olm-account-updater.js';
+import { signUsingOlmAccount } from '../utils/olm-utils.js';
async function updateIdentityReservedUsernames(): Promise<void> {
- const [userDetails, rustAPI, accountInfo] = await Promise.all([
+ const [userDetails, rustAPI] = await Promise.all([
fetchAllUserDetails(),
getRustAPI(),
- fetchOlmAccount('content'),
]);
const issuedAt = new Date().toISOString();
const reservedUsernameMessage: ReservedUsernameMessage = {
@@ -20,7 +19,7 @@
issuedAt,
};
const stringifiedMessage = JSON.stringify(reservedUsernameMessage);
- const signature = accountInfo.account.sign(stringifiedMessage);
+ const signature = await signUsingOlmAccount(stringifiedMessage);
await rustAPI.addReservedUsernames(stringifiedMessage, signature);
}
diff --git a/keyserver/src/deleters/account-deleters.js b/keyserver/src/deleters/account-deleters.js
--- a/keyserver/src/deleters/account-deleters.js
+++ b/keyserver/src/deleters/account-deleters.js
@@ -20,8 +20,8 @@
import { removeBlobHolders } from '../services/blob.js';
import { createNewAnonymousCookie } from '../session/cookies.js';
import type { Viewer, AnonymousViewerData } from '../session/viewer.js';
-import { fetchOlmAccount } from '../updaters/olm-account-updater.js';
import { blobHoldersFromUploadRows } from '../uploads/media-utils.js';
+import { signUsingOlmAccount } from '../utils/olm-utils.js';
async function deleteUploadsForUser(deletedUserID: string): Promise<void> {
try {
@@ -129,9 +129,10 @@
const message = JSON.stringify(reservedUsernameMessage);
const removeReservedUsernamePromise = (async () => {
- const rustAPI = await getRustAPI();
- const accountInfo = await fetchOlmAccount('content');
- const signature = accountInfo.account.sign(message);
+ const [rustAPI, signature] = await Promise.all([
+ getRustAPI(),
+ signUsingOlmAccount(message),
+ ]);
await rustAPI.removeReservedUsername(message, signature);
})();
if (viewer.isScriptViewer) {
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
@@ -133,10 +133,10 @@
updateUserSettings,
updateUserAvatar,
} from '../updaters/account-updaters.js';
-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 { getInboundKeysForUserDevice } from '../utils/identity-utils.js';
+import { signUsingOlmAccount } from '../utils/olm-utils.js';
export const subscriptionUpdateRequestInputValidator: TInterface<SubscriptionUpdateRequest> =
tShape<SubscriptionUpdateRequest>({
@@ -962,10 +962,7 @@
FROM users
WHERE LCASE(username) = LCASE(${request.username})
`;
- const [[userResult], accountInfo] = await Promise.all([
- dbQuery(userQuery),
- fetchOlmAccount('content'),
- ]);
+ const [userResult] = await dbQuery(userQuery);
if (userResult.length === 0) {
throw new ServerError('invalid_credentials');
@@ -993,7 +990,7 @@
issuedAt,
};
const message = JSON.stringify(reservedUsernameMessage);
- const signature = accountInfo.account.sign(message);
+ const signature = await signUsingOlmAccount(message);
return { message, signature };
}
diff --git a/keyserver/src/socket/tunnelbroker.js b/keyserver/src/socket/tunnelbroker.js
--- a/keyserver/src/socket/tunnelbroker.js
+++ b/keyserver/src/socket/tunnelbroker.js
@@ -46,7 +46,6 @@
import { getMessageForException } from 'lib/utils/errors.js';
import sleep from 'lib/utils/sleep.js';
-import { fetchOlmAccount } from '../updaters/olm-account-updater.js';
import {
clearIdentityInfo,
fetchIdentityInfo,
@@ -60,6 +59,7 @@
uploadNewOneTimeKeys,
getNewDeviceKeyUpload,
markPrekeysAsPublished,
+ signUsingOlmAccount,
} from '../utils/olm-utils.js';
type TBConnectionInfo = {
@@ -297,10 +297,9 @@
const messageToKeyserver = JSON.parse(payload);
if (qrCodeAuthMessageValidator.is(messageToKeyserver)) {
const request: QRCodeAuthMessage = messageToKeyserver;
- const [qrCodeAuthMessage, rustAPI, accountInfo] = await Promise.all([
+ const [qrCodeAuthMessage, rustAPI] = await Promise.all([
this.parseQRCodeAuthMessage(request),
getRustAPI(),
- fetchOlmAccount('content'),
]);
if (
!qrCodeAuthMessage ||
@@ -320,7 +319,7 @@
payload: deviceKeyUpload.keyPayload,
signature: deviceKeyUpload.keyPayloadSignature,
};
- const nonceSignature = accountInfo.account.sign(nonce);
+ const nonceSignature = await signUsingOlmAccount(nonce);
const identityInfo = await rustAPI.uploadSecondaryDeviceKeysAndLogIn(
userID,
diff --git a/keyserver/src/utils/olm-utils.js b/keyserver/src/utils/olm-utils.js
--- a/keyserver/src/utils/olm-utils.js
+++ b/keyserver/src/utils/olm-utils.js
@@ -241,6 +241,20 @@
return result;
}
+async function signUsingOlmAccount(message: string): Promise<string> {
+ const pickledAccount = await fetchPickledOlmAccount('content');
+
+ const signUsingAccount: (account: OlmAccount) => string = (
+ account: OlmAccount,
+ ) => account.sign(message);
+
+ const { result } = await unpickleAccountAndUseCallback(
+ pickledAccount,
+ signUsingAccount,
+ );
+ return result;
+}
+
function validateAndUploadAccountPrekeys(
contentAccount: OlmAccount,
notifAccount: OlmAccount,
@@ -300,4 +314,5 @@
publishPrekeysToIdentity,
getNewDeviceKeyUpload,
markPrekeysAsPublished,
+ signUsingOlmAccount,
};

File Metadata

Mime Type
text/plain
Expires
Sun, Jan 18, 6:38 AM (5 h, 34 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5950648
Default Alt Text
D14320.1768718316.diff (7 KB)

Event Timeline