@arbidocs/client 0.4.108 → 0.4.110
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 +42 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5674 -3352
- package/dist/index.d.ts +5674 -3352
- package/dist/index.js +36 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -345,6 +345,41 @@ function parseCallFragment(hash) {
|
|
|
345
345
|
const v = Number(params.get("v"));
|
|
346
346
|
return { key, linkVersion: Number.isInteger(v) && v > 0 ? v : null };
|
|
347
347
|
}
|
|
348
|
+
var CHAT_KEY_BYTES = 32;
|
|
349
|
+
async function deriveDirectChatKey(peerPublicKeyBase64, mySecretKey) {
|
|
350
|
+
await initSodium();
|
|
351
|
+
return sodium.crypto_box_beforenm(base64ToBytes(peerPublicKeyBase64), mySecretKey);
|
|
352
|
+
}
|
|
353
|
+
async function generateChatKey() {
|
|
354
|
+
await initSodium();
|
|
355
|
+
return sodium.randombytes_buf(CHAT_KEY_BYTES);
|
|
356
|
+
}
|
|
357
|
+
async function sealChatKey(key, publicKeyBase64) {
|
|
358
|
+
await initSodium();
|
|
359
|
+
return bytesToBase64(sodium.crypto_box_seal(key, base64ToBytes(publicKeyBase64)));
|
|
360
|
+
}
|
|
361
|
+
async function openSealedChatKey(sealedBase64, mySecretKey) {
|
|
362
|
+
await initSodium();
|
|
363
|
+
const key = sealedBoxDecrypt(sealedBase64, mySecretKey);
|
|
364
|
+
if (key.length !== CHAT_KEY_BYTES) throw new Error("Sealed chat key has the wrong length");
|
|
365
|
+
return key;
|
|
366
|
+
}
|
|
367
|
+
async function encryptWithChatKey(plaintext, key) {
|
|
368
|
+
await initSodium();
|
|
369
|
+
const nonce = sodium.randombytes_buf(sodium.crypto_secretbox_NONCEBYTES);
|
|
370
|
+
const box = sodium.crypto_secretbox_easy(sodium.from_string(plaintext), nonce, key);
|
|
371
|
+
const out = new Uint8Array(nonce.length + box.length);
|
|
372
|
+
out.set(nonce, 0);
|
|
373
|
+
out.set(box, nonce.length);
|
|
374
|
+
return bytesToBase64(out);
|
|
375
|
+
}
|
|
376
|
+
async function decryptWithChatKey(ciphertext, key) {
|
|
377
|
+
await initSodium();
|
|
378
|
+
const raw = base64ToBytes(ciphertext);
|
|
379
|
+
const nonce = raw.slice(0, sodium.crypto_secretbox_NONCEBYTES);
|
|
380
|
+
const box = raw.slice(sodium.crypto_secretbox_NONCEBYTES);
|
|
381
|
+
return sodium.to_string(sodium.crypto_secretbox_open_easy(box, nonce, key));
|
|
382
|
+
}
|
|
348
383
|
|
|
349
384
|
// src/crypto/keypairs.ts
|
|
350
385
|
async function generateUserKeypairs(username, password, deploymentDomain) {
|
|
@@ -1419,6 +1454,6 @@ function isMessageType(msg, type) {
|
|
|
1419
1454
|
return msg.type === type;
|
|
1420
1455
|
}
|
|
1421
1456
|
|
|
1422
|
-
export { API_PREFIX, CALL_KEY_BYTES, base64Decode, base64Encode, base64ToBytes, buildCallFragment, buildWebSocketUrl, bytesToBase64, canPersistSession, changePassword, clearAllData, clearSession, computeSharedSecret, createArbiClient, createAuthMessage, createAutoReloginMiddleware, createBearerAuthMiddleware, createContentHash, createReloginHandler, createSessionManager, createWorkspaceReopener, decodeCallKey, decryptCallTitle, decryptFile, decryptMessage, decryptMessageWithSharedSecret, deriveEncryptionKeypairFromSigning, derivePublicKey, encodeCallKey, encryptCallTitle, encryptFile, encryptMessage, encryptMessageWithSharedSecret, generateCallKey, generateIdentityKeypair, generateKeyPairs, generateLoginCredentials, generateLoginCredentialsFromKey, generatePasswordChangeCredentials, generateRandomSigningKeypair, generateRegistrationCredentials, generateUserKeypairs, getSession, getUserEncryptionKeypair, hasSession, identityFromLoginResponse, initSodium, initializeDatabase, isMessageType, openSealedCallKey, parseCallFragment, parseServerMessage, passwordChangeErrorMessage, prewarmKeyPairs, saveSession, sealCallKey, sealKeyForSession, sealedBoxDecrypt, sealedBoxEncrypt, signMessage, unlockIdentityWithPassword, unwrapIdentityKey, updateWrappedIdentityKey, wrapIdentityKey };
|
|
1457
|
+
export { API_PREFIX, CALL_KEY_BYTES, CHAT_KEY_BYTES, base64Decode, base64Encode, base64ToBytes, buildCallFragment, buildWebSocketUrl, bytesToBase64, canPersistSession, changePassword, clearAllData, clearSession, computeSharedSecret, createArbiClient, createAuthMessage, createAutoReloginMiddleware, createBearerAuthMiddleware, createContentHash, createReloginHandler, createSessionManager, createWorkspaceReopener, decodeCallKey, decryptCallTitle, decryptFile, decryptMessage, decryptMessageWithSharedSecret, decryptWithChatKey, deriveDirectChatKey, deriveEncryptionKeypairFromSigning, derivePublicKey, encodeCallKey, encryptCallTitle, encryptFile, encryptMessage, encryptMessageWithSharedSecret, encryptWithChatKey, generateCallKey, generateChatKey, generateIdentityKeypair, generateKeyPairs, generateLoginCredentials, generateLoginCredentialsFromKey, generatePasswordChangeCredentials, generateRandomSigningKeypair, generateRegistrationCredentials, generateUserKeypairs, getSession, getUserEncryptionKeypair, hasSession, identityFromLoginResponse, initSodium, initializeDatabase, isMessageType, openSealedCallKey, openSealedChatKey, parseCallFragment, parseServerMessage, passwordChangeErrorMessage, prewarmKeyPairs, saveSession, sealCallKey, sealChatKey, sealKeyForSession, sealedBoxDecrypt, sealedBoxEncrypt, signMessage, unlockIdentityWithPassword, unwrapIdentityKey, updateWrappedIdentityKey, wrapIdentityKey };
|
|
1423
1458
|
//# sourceMappingURL=index.js.map
|
|
1424
1459
|
//# sourceMappingURL=index.js.map
|