@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.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