Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F33288216
D14320.1768718316.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
7 KB
Referenced Files
None
Subscribers
None
D14320.1768718316.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D14320: [keyserver] implement function to sign message using content `olm.Account`
Attached
Detach File
Event Timeline
Log In to Comment