@arbidocs/client 0.4.71 → 0.4.73
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +72 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +17288 -10856
- package/dist/index.d.ts +17288 -10856
- package/dist/index.js +63 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -285,6 +285,66 @@ async function decryptMessage(encryptedBase64, senderPublicKeyBase64, recipientP
|
|
|
285
285
|
);
|
|
286
286
|
return sodium.to_string(decrypted);
|
|
287
287
|
}
|
|
288
|
+
var CALL_KEY_BYTES = 32;
|
|
289
|
+
async function generateCallKey() {
|
|
290
|
+
await initSodium();
|
|
291
|
+
return sodium.randombytes_buf(CALL_KEY_BYTES);
|
|
292
|
+
}
|
|
293
|
+
async function sealCallKey(key, recipientPublicKeyBase64) {
|
|
294
|
+
await initSodium();
|
|
295
|
+
return bytesToBase64(sodium.crypto_box_seal(key, base64ToBytes(recipientPublicKeyBase64)));
|
|
296
|
+
}
|
|
297
|
+
async function openSealedCallKey(sealedBase64, encryptionSecretKey) {
|
|
298
|
+
await initSodium();
|
|
299
|
+
const key = sealedBoxDecrypt(sealedBase64, encryptionSecretKey);
|
|
300
|
+
if (key.length !== CALL_KEY_BYTES) throw new Error("Sealed call key has the wrong length");
|
|
301
|
+
return key;
|
|
302
|
+
}
|
|
303
|
+
async function encryptCallTitle(title, key) {
|
|
304
|
+
await initSodium();
|
|
305
|
+
const nonce = sodium.randombytes_buf(sodium.crypto_secretbox_NONCEBYTES);
|
|
306
|
+
const box = sodium.crypto_secretbox_easy(sodium.from_string(title), nonce, key);
|
|
307
|
+
const out = new Uint8Array(nonce.length + box.length);
|
|
308
|
+
out.set(nonce, 0);
|
|
309
|
+
out.set(box, nonce.length);
|
|
310
|
+
return bytesToBase64(out);
|
|
311
|
+
}
|
|
312
|
+
async function decryptCallTitle(ciphertext, key) {
|
|
313
|
+
await initSodium();
|
|
314
|
+
try {
|
|
315
|
+
const raw = base64ToBytes(ciphertext);
|
|
316
|
+
const nonce = raw.slice(0, sodium.crypto_secretbox_NONCEBYTES);
|
|
317
|
+
const box = raw.slice(sodium.crypto_secretbox_NONCEBYTES);
|
|
318
|
+
return sodium.to_string(sodium.crypto_secretbox_open_easy(box, nonce, key));
|
|
319
|
+
} catch {
|
|
320
|
+
return null;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
function encodeCallKey(key) {
|
|
324
|
+
return bytesToBase64(key).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
325
|
+
}
|
|
326
|
+
function decodeCallKey(encoded) {
|
|
327
|
+
if (!/^[A-Za-z0-9_-]+$/.test(encoded)) return null;
|
|
328
|
+
const b64 = encoded.replace(/-/g, "+").replace(/_/g, "/");
|
|
329
|
+
try {
|
|
330
|
+
const key = base64ToBytes(b64 + "=".repeat((4 - b64.length % 4) % 4));
|
|
331
|
+
return key.length === CALL_KEY_BYTES ? key : null;
|
|
332
|
+
} catch {
|
|
333
|
+
return null;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
function buildCallFragment(key, linkVersion) {
|
|
337
|
+
return `k=${encodeCallKey(key)}&v=${linkVersion}`;
|
|
338
|
+
}
|
|
339
|
+
function parseCallFragment(hash) {
|
|
340
|
+
const params = new URLSearchParams(hash.replace(/^#/, ""));
|
|
341
|
+
const encoded = params.get("k");
|
|
342
|
+
if (!encoded) return null;
|
|
343
|
+
const key = decodeCallKey(encoded);
|
|
344
|
+
if (!key) return null;
|
|
345
|
+
const v = Number(params.get("v"));
|
|
346
|
+
return { key, linkVersion: Number.isInteger(v) && v > 0 ? v : null };
|
|
347
|
+
}
|
|
288
348
|
|
|
289
349
|
// src/crypto/keypairs.ts
|
|
290
350
|
async function generateUserKeypairs(username, password, deploymentDomain) {
|
|
@@ -1014,7 +1074,8 @@ async function performLogin(request, signingPrivateKey, deps) {
|
|
|
1014
1074
|
familyName: data.user.family_name ?? null,
|
|
1015
1075
|
picture: data.user.picture ?? null,
|
|
1016
1076
|
email: data.user.email ?? request.email,
|
|
1017
|
-
isSso: data.user.is_sso === true
|
|
1077
|
+
isSso: data.user.is_sso === true,
|
|
1078
|
+
isIdentityVerified: data.user.is_identity_verified === true
|
|
1018
1079
|
},
|
|
1019
1080
|
signingPrivateKey,
|
|
1020
1081
|
serverSessionKey
|
|
@@ -1455,6 +1516,6 @@ function isMessageType(msg, type) {
|
|
|
1455
1516
|
return msg.type === type;
|
|
1456
1517
|
}
|
|
1457
1518
|
|
|
1458
|
-
export { API_PREFIX, base64Decode, base64Encode, base64ToBytes, buildWebSocketUrl, bytesToBase64, canPersistSession, changePasswordWithRekey, clearAllData, clearSession, computeSharedSecret, createArbiClient, createAuthMessage, createAutoReloginMiddleware, createBearerAuthMiddleware, createContentHash, createReloginHandler, createSessionManager, createWorkspaceReopener, decryptFile, decryptMessage, decryptMessageWithSharedSecret, deriveEncryptionKeypairFromSigning, derivePublicKey, encryptFile, encryptMessage, encryptMessageWithSharedSecret, generateKeyPairs, generateLoginCredentials, generateLoginCredentialsFromKey, generatePasswordChangeCredentials, generateRandomSigningKeypair, generateRecoveryPasswordChangeCredentials, generateRegistrationCredentials, generateUserKeypairs, getSession, getUserEncryptionKeypair, hasSession, initSodium, initializeDatabase, isMessageType, parseServerMessage, passwordChangeErrorMessage, prewarmKeyPairs, saveSession, sealKeyForSession, sealedBoxDecrypt, sealedBoxEncrypt, signMessage, updateSigningPrivateKey };
|
|
1519
|
+
export { API_PREFIX, CALL_KEY_BYTES, base64Decode, base64Encode, base64ToBytes, buildCallFragment, buildWebSocketUrl, bytesToBase64, canPersistSession, changePasswordWithRekey, clearAllData, clearSession, computeSharedSecret, createArbiClient, createAuthMessage, createAutoReloginMiddleware, createBearerAuthMiddleware, createContentHash, createReloginHandler, createSessionManager, createWorkspaceReopener, decodeCallKey, decryptCallTitle, decryptFile, decryptMessage, decryptMessageWithSharedSecret, deriveEncryptionKeypairFromSigning, derivePublicKey, encodeCallKey, encryptCallTitle, encryptFile, encryptMessage, encryptMessageWithSharedSecret, generateCallKey, generateKeyPairs, generateLoginCredentials, generateLoginCredentialsFromKey, generatePasswordChangeCredentials, generateRandomSigningKeypair, generateRecoveryPasswordChangeCredentials, generateRegistrationCredentials, generateUserKeypairs, getSession, getUserEncryptionKeypair, hasSession, initSodium, initializeDatabase, isMessageType, openSealedCallKey, parseCallFragment, parseServerMessage, passwordChangeErrorMessage, prewarmKeyPairs, saveSession, sealCallKey, sealKeyForSession, sealedBoxDecrypt, sealedBoxEncrypt, signMessage, updateSigningPrivateKey };
|
|
1459
1520
|
//# sourceMappingURL=index.js.map
|
|
1460
1521
|
//# sourceMappingURL=index.js.map
|