@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.
- package/dist/cli/index.js +0 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cloudflare.js +105 -65
- package/dist/cloudflare.js.map +1 -1
- package/dist/commands/index.js +57 -49
- package/dist/commands/index.js.map +1 -1
- package/dist/index.js +100 -60
- package/dist/index.js.map +1 -1
- package/dist/worker.js +39 -12
- package/dist/worker.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/index.js
CHANGED
|
@@ -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
|
|
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:
|
|
1665
|
-
derivedKey:
|
|
1666
|
-
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;
|