@fileverse/api 0.0.15 → 0.0.17

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.
@@ -952,69 +952,25 @@ var init_file_encryption = __esm({
952
952
  });
953
953
 
954
954
  // src/sdk/file-utils.ts
955
- import { getArgon2idHash } from "@fileverse/crypto/argon";
956
955
  import { bytesToBase64, generateRandomBytes as generateRandomBytes2 } from "@fileverse/crypto/utils";
957
956
  import { derivePBKDF2Key, encryptAesCBC } from "@fileverse/crypto/kdf";
958
957
  import { secretBoxEncrypt } from "@fileverse/crypto/nacl";
959
- import hkdf from "futoin-hkdf";
960
958
  import tweetnacl from "tweetnacl";
961
959
  import { fromUint8Array, toUint8Array as toUint8Array2 } from "js-base64";
962
960
  import { toAESKey, aesEncrypt } from "@fileverse/crypto/webcrypto";
963
- import axios from "axios";
964
961
  import { encodeFunctionData, parseEventLogs } from "viem";
965
- var deriveKeyFromAg2Hash, getExistingEncryptionMaterial, getNaclSecretKey, generateLinkKeyMaterial;
966
962
  var init_file_utils = __esm({
967
963
  "src/sdk/file-utils.ts"() {
968
964
  "use strict";
969
965
  init_esm_shims();
970
966
  init_file_encryption();
971
967
  init_constants3();
972
- deriveKeyFromAg2Hash = async (pass, salt) => {
973
- const key = await getArgon2idHash(pass, salt);
974
- return hkdf(Buffer.from(key), tweetnacl.secretbox.keyLength, {
975
- info: Buffer.from("encryptionKey")
976
- });
977
- };
978
- getExistingEncryptionMaterial = async (existingEncryptedSecretKey, existingNonce, docId) => {
979
- const derivedKey = await deriveKeyFromAg2Hash(docId, toUint8Array2(existingNonce));
980
- const secretKey = tweetnacl.secretbox.open(
981
- toUint8Array2(existingEncryptedSecretKey),
982
- toUint8Array2(existingNonce),
983
- derivedKey
984
- );
985
- return {
986
- encryptedSecretKey: existingEncryptedSecretKey,
987
- nonce: toUint8Array2(existingNonce),
988
- secretKey,
989
- derivedKey: new Uint8Array(derivedKey)
990
- };
991
- };
992
- getNaclSecretKey = async (ddocId) => {
993
- const { secretKey } = tweetnacl.box.keyPair();
994
- const nonce = tweetnacl.randomBytes(tweetnacl.secretbox.nonceLength);
995
- const derivedKey = await deriveKeyFromAg2Hash(ddocId, nonce);
996
- const encryptedSecretKey = fromUint8Array(tweetnacl.secretbox(secretKey, nonce, derivedKey), true);
997
- return { nonce, encryptedSecretKey, secretKey, derivedKey: new Uint8Array(derivedKey) };
998
- };
999
- generateLinkKeyMaterial = async (params) => {
1000
- if (params.linkKeyNonce && params.linkKey) {
1001
- const { encryptedSecretKey: encryptedSecretKey2, nonce: nonce2, secretKey: secretKey2, derivedKey: derivedKey2 } = await getExistingEncryptionMaterial(
1002
- params.linkKey,
1003
- params.linkKeyNonce,
1004
- params.ddocId
1005
- );
1006
- if (secretKey2) return { encryptedSecretKey: encryptedSecretKey2, nonce: nonce2, secretKey: secretKey2, derivedKey: derivedKey2 };
1007
- }
1008
- const { secretKey, nonce, encryptedSecretKey, derivedKey } = await getNaclSecretKey(params.ddocId);
1009
- return { secretKey, nonce, encryptedSecretKey, derivedKey };
1010
- };
1011
968
  }
1012
969
  });
1013
970
 
1014
971
  // src/sdk/file-manager.ts
1015
972
  import { fromUint8Array as fromUint8Array2, toUint8Array as toUint8Array3 } from "js-base64";
1016
973
  import { generateAESKey, exportAESKey } from "@fileverse/crypto/webcrypto";
1017
- import { markdownToYjs } from "@fileverse/content-processor";
1018
974
  var init_file_manager = __esm({
1019
975
  "src/sdk/file-manager.ts"() {
1020
976
  "use strict";
@@ -1595,9 +1551,61 @@ import Table from "cli-table3";
1595
1551
  init_esm_shims();
1596
1552
  init_models();
1597
1553
  init_constants2();
1598
- init_file_utils();
1599
1554
  import { generate } from "short-uuid";
1600
- import { fromUint8Array as fromUint8Array4 } from "js-base64";
1555
+ import { fromUint8Array as fromUint8Array5 } from "js-base64";
1556
+
1557
+ // src/sdk/link-key-utils.ts
1558
+ init_esm_shims();
1559
+ import { getArgon2idHash } from "@fileverse/crypto/argon";
1560
+ import hkdf from "futoin-hkdf";
1561
+ import tweetnacl2 from "tweetnacl";
1562
+ import { fromUint8Array as fromUint8Array4, toUint8Array as toUint8Array5 } from "js-base64";
1563
+ var deriveKeyFromAg2Hash = async (pass, salt) => {
1564
+ const key = await getArgon2idHash(pass, salt, void 0, {
1565
+ t: 2,
1566
+ m: 4096,
1567
+ p: 8,
1568
+ dkLen: 32
1569
+ });
1570
+ return hkdf(Buffer.from(key), tweetnacl2.secretbox.keyLength, {
1571
+ info: Buffer.from("encryptionKey")
1572
+ });
1573
+ };
1574
+ var getExistingEncryptionMaterial = async (existingEncryptedSecretKey, existingNonce, docId) => {
1575
+ const derivedKey = await deriveKeyFromAg2Hash(docId, toUint8Array5(existingNonce));
1576
+ const secretKey = tweetnacl2.secretbox.open(
1577
+ toUint8Array5(existingEncryptedSecretKey),
1578
+ toUint8Array5(existingNonce),
1579
+ derivedKey
1580
+ );
1581
+ return {
1582
+ encryptedSecretKey: existingEncryptedSecretKey,
1583
+ nonce: toUint8Array5(existingNonce),
1584
+ secretKey,
1585
+ derivedKey: new Uint8Array(derivedKey)
1586
+ };
1587
+ };
1588
+ var getNaclSecretKey = async (ddocId) => {
1589
+ const { secretKey } = tweetnacl2.box.keyPair();
1590
+ const nonce = tweetnacl2.randomBytes(tweetnacl2.secretbox.nonceLength);
1591
+ const derivedKey = await deriveKeyFromAg2Hash(ddocId, nonce);
1592
+ const encryptedSecretKey = fromUint8Array4(tweetnacl2.secretbox(secretKey, nonce, derivedKey), true);
1593
+ return { nonce, encryptedSecretKey, secretKey, derivedKey: new Uint8Array(derivedKey) };
1594
+ };
1595
+ var generateLinkKeyMaterial = async (params) => {
1596
+ if (params.linkKeyNonce && params.linkKey) {
1597
+ const { encryptedSecretKey: encryptedSecretKey2, nonce: nonce2, secretKey: secretKey2, derivedKey: derivedKey2 } = await getExistingEncryptionMaterial(
1598
+ params.linkKey,
1599
+ params.linkKeyNonce,
1600
+ params.ddocId
1601
+ );
1602
+ if (secretKey2) return { encryptedSecretKey: encryptedSecretKey2, nonce: nonce2, secretKey: secretKey2, derivedKey: derivedKey2 };
1603
+ }
1604
+ const { secretKey, nonce, encryptedSecretKey, derivedKey } = await getNaclSecretKey(params.ddocId);
1605
+ return { secretKey, nonce, encryptedSecretKey, derivedKey };
1606
+ };
1607
+
1608
+ // src/domain/file/index.ts
1601
1609
  async function listFiles(params) {
1602
1610
  const { limit, skip, portalAddress } = params;
1603
1611
  const effectiveLimit = limit || DEFAULT_LIST_LIMIT;
@@ -1661,9 +1669,9 @@ var createFile = async (input) => {
1661
1669
  ddocId,
1662
1670
  portalAddress: input.portalAddress,
1663
1671
  linkKey: encryptedSecretKey,
1664
- linkKeyNonce: fromUint8Array4(nonce),
1665
- derivedKey: fromUint8Array4(derivedKey),
1666
- secretKey: fromUint8Array4(secretKey)
1672
+ linkKeyNonce: fromUint8Array5(nonce),
1673
+ derivedKey: fromUint8Array5(derivedKey),
1674
+ secretKey: fromUint8Array5(secretKey)
1667
1675
  });
1668
1676
  await EventsModel.create({ type: "create", fileId: file._id, portalAddress: file.portalAddress });
1669
1677
  return file;