@secrecy/lib 1.0.0-dev.63 → 1.0.0-dev.65
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/BaseClient-15fdf493.d.ts +351 -0
- package/dist/BaseClient.cjs +2 -0
- package/dist/BaseClient.cjs.map +1 -0
- package/dist/BaseClient.d.ts +16 -104
- package/dist/BaseClient.js +2 -482
- package/dist/BaseClient.js.map +1 -0
- package/dist/PopupTools.cjs +2 -0
- package/dist/PopupTools.cjs.map +1 -0
- package/dist/PopupTools.d.ts +5 -4
- package/dist/PopupTools.js +2 -216
- package/dist/PopupTools.js.map +1 -0
- package/dist/ZeusThunder.cjs +2 -0
- package/dist/ZeusThunder.cjs.map +1 -0
- package/dist/ZeusThunder.d.ts +6 -2
- package/dist/ZeusThunder.js +2 -79
- package/dist/ZeusThunder.js.map +1 -0
- package/dist/cache.cjs +2 -0
- package/dist/cache.cjs.map +1 -0
- package/dist/cache.d.ts +22 -4
- package/dist/cache.js +2 -4
- package/dist/cache.js.map +1 -0
- package/dist/chunk-5WPCTUWH.cjs +2 -0
- package/dist/chunk-5WPCTUWH.cjs.map +1 -0
- package/dist/chunk-KMTF2BZE.js +2 -0
- package/dist/chunk-KMTF2BZE.js.map +1 -0
- package/dist/client/SecrecyAppClient.cjs +2 -0
- package/dist/client/SecrecyAppClient.cjs.map +1 -0
- package/dist/client/SecrecyAppClient.d.ts +16 -17
- package/dist/client/SecrecyAppClient.js +2 -256
- package/dist/client/SecrecyAppClient.js.map +1 -0
- package/dist/client/SecrecyCloudClient.cjs +2 -0
- package/dist/client/SecrecyCloudClient.cjs.map +1 -0
- package/dist/client/SecrecyCloudClient.d.ts +16 -89
- package/dist/client/SecrecyCloudClient.js +2 -1627
- package/dist/client/SecrecyCloudClient.js.map +1 -0
- package/dist/client/SecrecyDbClient.cjs +2 -0
- package/dist/client/SecrecyDbClient.cjs.map +1 -0
- package/dist/client/SecrecyDbClient.d.ts +16 -21
- package/dist/client/SecrecyDbClient.js +2 -198
- package/dist/client/SecrecyDbClient.js.map +1 -0
- package/dist/client/SecrecyMailClient.cjs +2 -0
- package/dist/client/SecrecyMailClient.cjs.map +1 -0
- package/dist/client/SecrecyMailClient.d.ts +16 -42
- package/dist/client/SecrecyMailClient.js +2 -1187
- package/dist/client/SecrecyMailClient.js.map +1 -0
- package/dist/client/SecrecyPayClient.cjs +2 -0
- package/dist/client/SecrecyPayClient.cjs.map +1 -0
- package/dist/client/SecrecyPayClient.d.ts +16 -7
- package/dist/client/SecrecyPayClient.js +2 -37
- package/dist/client/SecrecyPayClient.js.map +1 -0
- package/dist/client/SecrecyWalletClient.cjs +2 -0
- package/dist/client/SecrecyWalletClient.cjs.map +1 -0
- package/dist/client/SecrecyWalletClient.d.ts +16 -30
- package/dist/client/SecrecyWalletClient.js +2 -76
- package/dist/client/SecrecyWalletClient.js.map +1 -0
- package/dist/client/convert/file.cjs +2 -0
- package/dist/client/convert/file.cjs.map +1 -0
- package/dist/client/convert/file.d.ts +11 -5
- package/dist/client/convert/file.js +2 -34
- package/dist/client/convert/file.js.map +1 -0
- package/dist/client/convert/mail.cjs +2 -0
- package/dist/client/convert/mail.cjs.map +1 -0
- package/dist/client/convert/mail.d.ts +13 -3
- package/dist/client/convert/mail.js +2 -48
- package/dist/client/convert/mail.js.map +1 -0
- package/dist/client/convert/node.cjs +2 -0
- package/dist/client/convert/node.cjs.map +1 -0
- package/dist/client/convert/node.d.ts +18 -9
- package/dist/client/convert/node.js +2 -100
- package/dist/client/convert/node.js.map +1 -0
- package/dist/client/helpers.cjs +2 -0
- package/dist/client/helpers.cjs.map +1 -0
- package/dist/client/helpers.d.ts +16 -28
- package/dist/client/helpers.js +2 -126
- package/dist/client/helpers.js.map +1 -0
- package/dist/client/index.cjs +2 -0
- package/dist/client/index.cjs.map +1 -0
- package/dist/client/index.d.ts +16 -34
- package/dist/client/index.js +2 -52
- package/dist/client/index.js.map +1 -0
- package/dist/client/storage.cjs +2 -0
- package/dist/client/storage.cjs.map +1 -0
- package/dist/client/storage.d.ts +6 -3
- package/dist/client/storage.js +2 -12
- package/dist/client/storage.js.map +1 -0
- package/dist/client/types/File.cjs +1 -0
- package/dist/client/types/File.cjs.map +1 -0
- package/dist/client/types/File.d.ts +9 -5
- package/dist/client/types/File.js +1 -3
- package/dist/client/types/File.js.map +1 -0
- package/dist/client/types/Inputs.cjs +1 -0
- package/dist/client/types/Inputs.cjs.map +1 -0
- package/dist/client/types/Inputs.d.ts +6 -4
- package/dist/client/types/Inputs.js +1 -3
- package/dist/client/types/Inputs.js.map +1 -0
- package/dist/client/types/Node.cjs +1 -0
- package/dist/client/types/Node.cjs.map +1 -0
- package/dist/client/types/Node.d.ts +9 -56
- package/dist/client/types/Node.js +1 -3
- package/dist/client/types/Node.js.map +1 -0
- package/dist/client/types/UserAppNotifications.cjs +1 -0
- package/dist/client/types/UserAppNotifications.cjs.map +1 -0
- package/dist/client/types/UserAppNotifications.d.ts +3 -1
- package/dist/client/types/UserAppNotifications.js +1 -3
- package/dist/client/types/UserAppNotifications.js.map +1 -0
- package/dist/client/types/UserAppSettings.cjs +1 -0
- package/dist/client/types/UserAppSettings.cjs.map +1 -0
- package/dist/client/types/UserAppSettings.d.ts +3 -1
- package/dist/client/types/UserAppSettings.js +1 -3
- package/dist/client/types/UserAppSettings.js.map +1 -0
- package/dist/client/types/index.cjs +2 -0
- package/dist/client/types/index.cjs.map +1 -0
- package/dist/client/types/index.d.ts +86 -30
- package/dist/client/types/index.js +2 -8
- package/dist/client/types/index.js.map +1 -0
- package/dist/client/types/selectors.cjs +2 -0
- package/dist/client/types/selectors.cjs.map +1 -0
- package/dist/client/types/selectors.d.ts +7 -5
- package/dist/client/types/selectors.js +2 -138
- package/dist/client/types/selectors.js.map +1 -0
- package/dist/crypto/file.cjs +2 -0
- package/dist/crypto/file.cjs.map +1 -0
- package/dist/crypto/file.d.ts +8 -6
- package/dist/crypto/file.js +2 -210
- package/dist/crypto/file.js.map +1 -0
- package/dist/crypto/index.cjs +2 -0
- package/dist/crypto/index.cjs.map +1 -0
- package/dist/crypto/index.d.ts +11 -9
- package/dist/crypto/index.js +2 -47
- package/dist/crypto/index.js.map +1 -0
- package/dist/error.cjs +1 -0
- package/dist/error.cjs.map +1 -0
- package/dist/error.d.ts +12 -10
- package/dist/error.js +1 -3
- package/dist/error.js.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +19 -11
- package/dist/index.js +2 -9
- package/dist/index.js.map +1 -0
- package/dist/minify/index.cjs +2 -0
- package/dist/minify/index.cjs.map +1 -0
- package/dist/minify/index.d.ts +4 -2
- package/dist/minify/index.js +2 -28
- package/dist/minify/index.js.map +1 -0
- package/dist/minify/lz4.cjs +3 -0
- package/dist/minify/lz4.cjs.map +1 -0
- package/dist/minify/lz4.d.ts +7 -5
- package/dist/minify/lz4.js +3 -627
- package/dist/minify/lz4.js.map +1 -0
- package/dist/sodium.cjs +2 -0
- package/dist/sodium.cjs.map +1 -0
- package/dist/sodium.d.ts +5 -3
- package/dist/sodium.js +2 -6
- package/dist/sodium.js.map +1 -0
- package/dist/utils/store-buddy.cjs +2 -0
- package/dist/utils/store-buddy.cjs.map +1 -0
- package/dist/utils/store-buddy.d.ts +4 -3
- package/dist/utils/store-buddy.js +2 -65
- package/dist/utils/store-buddy.js.map +1 -0
- package/dist/utils/time.cjs +2 -0
- package/dist/utils/time.cjs.map +1 -0
- package/dist/utils/time.d.ts +4 -2
- package/dist/utils/time.js +2 -14
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/utils.cjs +2 -0
- package/dist/utils/utils.cjs.map +1 -0
- package/dist/utils/utils.d.ts +6 -4
- package/dist/utils/utils.js +2 -57
- package/dist/utils/utils.js.map +1 -0
- package/dist/worker/md5.cjs +2 -0
- package/dist/worker/md5.cjs.map +1 -0
- package/dist/worker/md5.d.ts +3 -1
- package/dist/worker/md5.js +2 -25
- package/dist/worker/md5.js.map +1 -0
- package/dist/worker/sodium.cjs +2 -0
- package/dist/worker/sodium.cjs.map +1 -0
- package/dist/worker/sodium.d.ts +6 -3
- package/dist/worker/sodium.js +2 -120
- package/dist/worker/sodium.js.map +1 -0
- package/dist/worker/workerCodes.cjs +254 -0
- package/dist/worker/workerCodes.cjs.map +1 -0
- package/dist/worker/workerCodes.d.ts +4 -2
- package/dist/worker/workerCodes.js +4 -5
- package/dist/worker/workerCodes.js.map +1 -0
- package/dist/zeus/const.cjs +2 -0
- package/dist/zeus/const.cjs.map +1 -0
- package/dist/zeus/const.d.ts +5 -3
- package/dist/zeus/const.js +2 -1286
- package/dist/zeus/const.js.map +1 -0
- package/dist/zeus/index.cjs +5 -0
- package/dist/zeus/index.cjs.map +1 -0
- package/dist/zeus/index.d.ts +80 -78
- package/dist/zeus/index.js +5 -687
- package/dist/zeus/index.js.map +1 -0
- package/package.json +27 -30
|
@@ -1,138 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
4
|
-
|
|
5
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
6
|
-
|
|
7
|
-
import { Selector } from "../../zeus/index.js";
|
|
8
|
-
export const fileSelector = Selector("File")({
|
|
9
|
-
id: true,
|
|
10
|
-
size: true,
|
|
11
|
-
sizeBefore: true,
|
|
12
|
-
createdAt: true,
|
|
13
|
-
md5: true,
|
|
14
|
-
md5Encrypted: true,
|
|
15
|
-
access: {
|
|
16
|
-
key: true,
|
|
17
|
-
sharedBy: {
|
|
18
|
-
keyPair: {
|
|
19
|
-
pub: true
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
export const userSelector = Selector("User")({
|
|
25
|
-
id: true,
|
|
26
|
-
firstname: true,
|
|
27
|
-
lastname: true,
|
|
28
|
-
email: true,
|
|
29
|
-
publicKey: true
|
|
30
|
-
});
|
|
31
|
-
export const nodeSelector = Selector("Node")({
|
|
32
|
-
id: true,
|
|
33
|
-
isFavorite: true,
|
|
34
|
-
type: true,
|
|
35
|
-
createdAt: true,
|
|
36
|
-
deletedAt: true,
|
|
37
|
-
createdBy: {
|
|
38
|
-
user: userSelector
|
|
39
|
-
},
|
|
40
|
-
sizes: {
|
|
41
|
-
size: true,
|
|
42
|
-
sizeBefore: true
|
|
43
|
-
},
|
|
44
|
-
updatedAt: true,
|
|
45
|
-
name: true,
|
|
46
|
-
access: {
|
|
47
|
-
rights: true,
|
|
48
|
-
isRoot: true,
|
|
49
|
-
nameKey: true,
|
|
50
|
-
sharedBy: {
|
|
51
|
-
keyPair: {
|
|
52
|
-
pub: true
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
userApp: {
|
|
56
|
-
user: userSelector
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
accesses: {
|
|
60
|
-
rights: true,
|
|
61
|
-
isRoot: true,
|
|
62
|
-
nameKey: true,
|
|
63
|
-
sharedBy: {
|
|
64
|
-
keyPair: {
|
|
65
|
-
pub: true
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
userApp: {
|
|
69
|
-
user: userSelector
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
breadcrumb: {
|
|
73
|
-
id: true,
|
|
74
|
-
name: true,
|
|
75
|
-
nameKey: true,
|
|
76
|
-
pubKey: true
|
|
77
|
-
},
|
|
78
|
-
parentId: true,
|
|
79
|
-
currentFileId: true
|
|
80
|
-
});
|
|
81
|
-
export const nodeFullSelector = Selector("Node")(_objectSpread(_objectSpread({}, nodeSelector), {}, {
|
|
82
|
-
parent: nodeSelector,
|
|
83
|
-
children: nodeSelector,
|
|
84
|
-
history: fileSelector,
|
|
85
|
-
current: fileSelector
|
|
86
|
-
}));
|
|
87
|
-
export const mailSelector = Selector("Mail")({
|
|
88
|
-
id: true,
|
|
89
|
-
type: true,
|
|
90
|
-
body: true,
|
|
91
|
-
subject: true,
|
|
92
|
-
openedAt: true,
|
|
93
|
-
createdAt: true,
|
|
94
|
-
deletedAt: true,
|
|
95
|
-
recipients: _objectSpread(_objectSpread({}, userSelector), {}, {
|
|
96
|
-
publicKey: false
|
|
97
|
-
}),
|
|
98
|
-
recipient: _objectSpread(_objectSpread({}, userSelector), {}, {
|
|
99
|
-
publicKey: false
|
|
100
|
-
}),
|
|
101
|
-
sender: userSelector,
|
|
102
|
-
mailIntegrity: {
|
|
103
|
-
id: true,
|
|
104
|
-
hash: true,
|
|
105
|
-
hashKey: true,
|
|
106
|
-
replyTo: {
|
|
107
|
-
id: true
|
|
108
|
-
},
|
|
109
|
-
temporaryRecipients: {
|
|
110
|
-
email: true
|
|
111
|
-
},
|
|
112
|
-
recipients: _objectSpread(_objectSpread({}, userSelector), {}, {
|
|
113
|
-
publicKey: false
|
|
114
|
-
})
|
|
115
|
-
},
|
|
116
|
-
mailIntegrityDraft: {
|
|
117
|
-
id: true,
|
|
118
|
-
hash: true,
|
|
119
|
-
hashKey: true,
|
|
120
|
-
replyTo: {
|
|
121
|
-
id: true
|
|
122
|
-
},
|
|
123
|
-
temporaryRecipients: {
|
|
124
|
-
email: true
|
|
125
|
-
},
|
|
126
|
-
recipients: _objectSpread(_objectSpread({}, userSelector), {}, {
|
|
127
|
-
publicKey: false
|
|
128
|
-
})
|
|
129
|
-
},
|
|
130
|
-
files: {
|
|
131
|
-
fileKey: true,
|
|
132
|
-
filename: true,
|
|
133
|
-
file: {
|
|
134
|
-
id: true
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZWxlY3RvciIsImZpbGVTZWxlY3RvciIsImlkIiwic2l6ZSIsInNpemVCZWZvcmUiLCJjcmVhdGVkQXQiLCJtZDUiLCJtZDVFbmNyeXB0ZWQiLCJhY2Nlc3MiLCJrZXkiLCJzaGFyZWRCeSIsImtleVBhaXIiLCJwdWIiLCJ1c2VyU2VsZWN0b3IiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsImVtYWlsIiwicHVibGljS2V5Iiwibm9kZVNlbGVjdG9yIiwiaXNGYXZvcml0ZSIsInR5cGUiLCJkZWxldGVkQXQiLCJjcmVhdGVkQnkiLCJ1c2VyIiwic2l6ZXMiLCJ1cGRhdGVkQXQiLCJuYW1lIiwicmlnaHRzIiwiaXNSb290IiwibmFtZUtleSIsInVzZXJBcHAiLCJhY2Nlc3NlcyIsImJyZWFkY3J1bWIiLCJwdWJLZXkiLCJwYXJlbnRJZCIsImN1cnJlbnRGaWxlSWQiLCJub2RlRnVsbFNlbGVjdG9yIiwicGFyZW50IiwiY2hpbGRyZW4iLCJoaXN0b3J5IiwiY3VycmVudCIsIm1haWxTZWxlY3RvciIsImJvZHkiLCJzdWJqZWN0Iiwib3BlbmVkQXQiLCJyZWNpcGllbnRzIiwicmVjaXBpZW50Iiwic2VuZGVyIiwibWFpbEludGVncml0eSIsImhhc2giLCJoYXNoS2V5IiwicmVwbHlUbyIsInRlbXBvcmFyeVJlY2lwaWVudHMiLCJtYWlsSW50ZWdyaXR5RHJhZnQiLCJmaWxlcyIsImZpbGVLZXkiLCJmaWxlbmFtZSIsImZpbGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpZW50L3R5cGVzL3NlbGVjdG9ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3RvciB9IGZyb20gXCIuLi8uLi96ZXVzL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBjb25zdCBmaWxlU2VsZWN0b3IgPSBTZWxlY3RvcihcIkZpbGVcIikoe1xuICBpZDogdHJ1ZSxcbiAgc2l6ZTogdHJ1ZSxcbiAgc2l6ZUJlZm9yZTogdHJ1ZSxcbiAgY3JlYXRlZEF0OiB0cnVlLFxuICBtZDU6IHRydWUsXG4gIG1kNUVuY3J5cHRlZDogdHJ1ZSxcbiAgYWNjZXNzOiB7XG4gICAga2V5OiB0cnVlLFxuICAgIHNoYXJlZEJ5OiB7XG4gICAgICBrZXlQYWlyOiB7XG4gICAgICAgIHB1YjogdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCB1c2VyU2VsZWN0b3IgPSBTZWxlY3RvcihcIlVzZXJcIikoe1xuICBpZDogdHJ1ZSxcbiAgZmlyc3RuYW1lOiB0cnVlLFxuICBsYXN0bmFtZTogdHJ1ZSxcbiAgZW1haWw6IHRydWUsXG4gIHB1YmxpY0tleTogdHJ1ZVxufSk7XG5cbmV4cG9ydCBjb25zdCBub2RlU2VsZWN0b3IgPSBTZWxlY3RvcihcIk5vZGVcIikoe1xuICBpZDogdHJ1ZSxcbiAgaXNGYXZvcml0ZTogdHJ1ZSxcbiAgdHlwZTogdHJ1ZSxcbiAgY3JlYXRlZEF0OiB0cnVlLFxuICBkZWxldGVkQXQ6IHRydWUsXG4gIGNyZWF0ZWRCeToge1xuICAgIHVzZXI6IHVzZXJTZWxlY3RvclxuICB9LFxuICBzaXplczoge1xuICAgIHNpemU6IHRydWUsXG4gICAgc2l6ZUJlZm9yZTogdHJ1ZVxuICB9LFxuICB1cGRhdGVkQXQ6IHRydWUsXG4gIG5hbWU6IHRydWUsXG4gIGFjY2Vzczoge1xuICAgIHJpZ2h0czogdHJ1ZSxcbiAgICBpc1Jvb3Q6IHRydWUsXG4gICAgbmFtZUtleTogdHJ1ZSxcbiAgICBzaGFyZWRCeToge1xuICAgICAga2V5UGFpcjoge1xuICAgICAgICBwdWI6IHRydWVcbiAgICAgIH1cbiAgICB9LFxuICAgIHVzZXJBcHA6IHtcbiAgICAgIHVzZXI6IHVzZXJTZWxlY3RvclxuICAgIH1cbiAgfSxcbiAgYWNjZXNzZXM6IHtcbiAgICByaWdodHM6IHRydWUsXG4gICAgaXNSb290OiB0cnVlLFxuICAgIG5hbWVLZXk6IHRydWUsXG4gICAgc2hhcmVkQnk6IHtcbiAgICAgIGtleVBhaXI6IHtcbiAgICAgICAgcHViOiB0cnVlXG4gICAgICB9XG4gICAgfSxcbiAgICB1c2VyQXBwOiB7XG4gICAgICB1c2VyOiB1c2VyU2VsZWN0b3JcbiAgICB9XG4gIH0sXG4gIGJyZWFkY3J1bWI6IHtcbiAgICBpZDogdHJ1ZSxcbiAgICBuYW1lOiB0cnVlLFxuICAgIG5hbWVLZXk6IHRydWUsXG4gICAgcHViS2V5OiB0cnVlXG4gIH0sXG4gIHBhcmVudElkOiB0cnVlLFxuICBjdXJyZW50RmlsZUlkOiB0cnVlXG59KTtcblxuZXhwb3J0IGNvbnN0IG5vZGVGdWxsU2VsZWN0b3IgPSBTZWxlY3RvcihcIk5vZGVcIikoe1xuICAuLi5ub2RlU2VsZWN0b3IsXG4gIHBhcmVudDogbm9kZVNlbGVjdG9yLFxuICBjaGlsZHJlbjogbm9kZVNlbGVjdG9yLFxuICBoaXN0b3J5OiBmaWxlU2VsZWN0b3IsXG4gIGN1cnJlbnQ6IGZpbGVTZWxlY3RvclxufSk7XG5cbmV4cG9ydCBjb25zdCBtYWlsU2VsZWN0b3IgPSBTZWxlY3RvcihcIk1haWxcIikoe1xuICBpZDogdHJ1ZSxcbiAgdHlwZTogdHJ1ZSxcbiAgYm9keTogdHJ1ZSxcbiAgc3ViamVjdDogdHJ1ZSxcbiAgb3BlbmVkQXQ6IHRydWUsXG4gIGNyZWF0ZWRBdDogdHJ1ZSxcbiAgZGVsZXRlZEF0OiB0cnVlLFxuICByZWNpcGllbnRzOiB7XG4gICAgLi4udXNlclNlbGVjdG9yLFxuICAgIHB1YmxpY0tleTogZmFsc2VcbiAgfSxcbiAgcmVjaXBpZW50OiB7XG4gICAgLi4udXNlclNlbGVjdG9yLFxuICAgIHB1YmxpY0tleTogZmFsc2VcbiAgfSxcbiAgc2VuZGVyOiB1c2VyU2VsZWN0b3IsXG4gIG1haWxJbnRlZ3JpdHk6IHtcbiAgICBpZDogdHJ1ZSxcbiAgICBoYXNoOiB0cnVlLFxuICAgIGhhc2hLZXk6IHRydWUsXG4gICAgcmVwbHlUbzoge1xuICAgICAgaWQ6IHRydWVcbiAgICB9LFxuICAgIHRlbXBvcmFyeVJlY2lwaWVudHM6IHtcbiAgICAgIGVtYWlsOiB0cnVlXG4gICAgfSxcbiAgICByZWNpcGllbnRzOiB7XG4gICAgICAuLi51c2VyU2VsZWN0b3IsXG4gICAgICBwdWJsaWNLZXk6IGZhbHNlXG4gICAgfVxuICB9LFxuICBtYWlsSW50ZWdyaXR5RHJhZnQ6IHtcbiAgICBpZDogdHJ1ZSxcbiAgICBoYXNoOiB0cnVlLFxuICAgIGhhc2hLZXk6IHRydWUsXG4gICAgcmVwbHlUbzoge1xuICAgICAgaWQ6IHRydWVcbiAgICB9LFxuICAgIHRlbXBvcmFyeVJlY2lwaWVudHM6IHtcbiAgICAgIGVtYWlsOiB0cnVlXG4gICAgfSxcbiAgICByZWNpcGllbnRzOiB7XG4gICAgICAuLi51c2VyU2VsZWN0b3IsXG4gICAgICBwdWJsaWNLZXk6IGZhbHNlXG4gICAgfVxuICB9LFxuICBmaWxlczoge1xuICAgIGZpbGVLZXk6IHRydWUsXG4gICAgZmlsZW5hbWU6IHRydWUsXG4gICAgZmlsZToge1xuICAgICAgaWQ6IHRydWVcbiAgICB9XG4gIH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxTQUFTQSxRQUFULFFBQXlCLHFCQUF6QjtBQUVBLE9BQU8sTUFBTUMsWUFBWSxHQUFHRCxRQUFRLENBQUMsTUFBRCxDQUFSLENBQWlCO0VBQzNDRSxFQUFFLEVBQUUsSUFEdUM7RUFFM0NDLElBQUksRUFBRSxJQUZxQztFQUczQ0MsVUFBVSxFQUFFLElBSCtCO0VBSTNDQyxTQUFTLEVBQUUsSUFKZ0M7RUFLM0NDLEdBQUcsRUFBRSxJQUxzQztFQU0zQ0MsWUFBWSxFQUFFLElBTjZCO0VBTzNDQyxNQUFNLEVBQUU7SUFDTkMsR0FBRyxFQUFFLElBREM7SUFFTkMsUUFBUSxFQUFFO01BQ1JDLE9BQU8sRUFBRTtRQUNQQyxHQUFHLEVBQUU7TUFERTtJQUREO0VBRko7QUFQbUMsQ0FBakIsQ0FBckI7QUFpQlAsT0FBTyxNQUFNQyxZQUFZLEdBQUdiLFFBQVEsQ0FBQyxNQUFELENBQVIsQ0FBaUI7RUFDM0NFLEVBQUUsRUFBRSxJQUR1QztFQUUzQ1ksU0FBUyxFQUFFLElBRmdDO0VBRzNDQyxRQUFRLEVBQUUsSUFIaUM7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
|
|
1
|
+
import{a as r,b as t}from"../../chunk-KMTF2BZE.js";import{Selector as u}from"../../zeus/index.js";const s=u("File")({id:!0,size:!0,sizeBefore:!0,createdAt:!0,md5:!0,md5Encrypted:!0,access:{key:!0,sharedBy:{keyPair:{pub:!0}}}}),e=u("User")({id:!0,firstname:!0,lastname:!0,email:!0,publicKey:!0}),i=u("Node")({id:!0,isFavorite:!0,type:!0,createdAt:!0,deletedAt:!0,createdBy:{user:e},sizes:{size:!0,sizeBefore:!0},updatedAt:!0,name:!0,access:{rights:!0,isRoot:!0,nameKey:!0,sharedBy:{keyPair:{pub:!0}},userApp:{user:e}},accesses:{rights:!0,isRoot:!0,nameKey:!0,sharedBy:{keyPair:{pub:!0}},userApp:{user:e}},breadcrumb:{id:!0,name:!0,nameKey:!0,pubKey:!0},parentId:!0,currentFileId:!0}),c=u("Node")(t(r({},i),{parent:i,children:i,history:s,current:s})),d=u("Mail")({id:!0,type:!0,body:!0,subject:!0,openedAt:!0,createdAt:!0,deletedAt:!0,recipients:t(r({},e),{publicKey:!1}),recipient:t(r({},e),{publicKey:!1}),sender:e,mailIntegrity:{id:!0,hash:!0,hashKey:!0,replyTo:{id:!0},temporaryRecipients:{email:!0},recipients:t(r({},e),{publicKey:!1})},mailIntegrityDraft:{id:!0,hash:!0,hashKey:!0,replyTo:{id:!0},temporaryRecipients:{email:!0},recipients:t(r({},e),{publicKey:!1})},files:{fileKey:!0,filename:!0,file:{id:!0}}});export{s as fileSelector,d as mailSelector,c as nodeFullSelector,i as nodeSelector,e as userSelector};
|
|
2
|
+
//# sourceMappingURL=selectors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/client/types/selectors.ts"],"sourcesContent":["import { Selector } from \"../../zeus/index.js\";\n\nexport const fileSelector = Selector(\"File\")({\n id: true,\n size: true,\n sizeBefore: true,\n createdAt: true,\n md5: true,\n md5Encrypted: true,\n access: {\n key: true,\n sharedBy: {\n keyPair: {\n pub: true\n }\n }\n }\n});\n\nexport const userSelector = Selector(\"User\")({\n id: true,\n firstname: true,\n lastname: true,\n email: true,\n publicKey: true\n});\n\nexport const nodeSelector = Selector(\"Node\")({\n id: true,\n isFavorite: true,\n type: true,\n createdAt: true,\n deletedAt: true,\n createdBy: {\n user: userSelector\n },\n sizes: {\n size: true,\n sizeBefore: true\n },\n updatedAt: true,\n name: true,\n access: {\n rights: true,\n isRoot: true,\n nameKey: true,\n sharedBy: {\n keyPair: {\n pub: true\n }\n },\n userApp: {\n user: userSelector\n }\n },\n accesses: {\n rights: true,\n isRoot: true,\n nameKey: true,\n sharedBy: {\n keyPair: {\n pub: true\n }\n },\n userApp: {\n user: userSelector\n }\n },\n breadcrumb: {\n id: true,\n name: true,\n nameKey: true,\n pubKey: true\n },\n parentId: true,\n currentFileId: true\n});\n\nexport const nodeFullSelector = Selector(\"Node\")({\n ...nodeSelector,\n parent: nodeSelector,\n children: nodeSelector,\n history: fileSelector,\n current: fileSelector\n});\n\nexport const mailSelector = Selector(\"Mail\")({\n id: true,\n type: true,\n body: true,\n subject: true,\n openedAt: true,\n createdAt: true,\n deletedAt: true,\n recipients: {\n ...userSelector,\n publicKey: false\n },\n recipient: {\n ...userSelector,\n publicKey: false\n },\n sender: userSelector,\n mailIntegrity: {\n id: true,\n hash: true,\n hashKey: true,\n replyTo: {\n id: true\n },\n temporaryRecipients: {\n email: true\n },\n recipients: {\n ...userSelector,\n publicKey: false\n }\n },\n mailIntegrityDraft: {\n id: true,\n hash: true,\n hashKey: true,\n replyTo: {\n id: true\n },\n temporaryRecipients: {\n email: true\n },\n recipients: {\n ...userSelector,\n publicKey: false\n }\n },\n files: {\n fileKey: true,\n filename: true,\n file: {\n id: true\n }\n }\n});\n"],"mappings":"mDAAA,OAAS,YAAAA,MAAgB,sBAElB,MAAMC,EAAeD,EAAS,MAAM,EAAE,CAC3C,GAAI,GACJ,KAAM,GACN,WAAY,GACZ,UAAW,GACX,IAAK,GACL,aAAc,GACd,OAAQ,CACN,IAAK,GACL,SAAU,CACR,QAAS,CACP,IAAK,EACP,CACF,CACF,CACF,CAAC,EAEYE,EAAeF,EAAS,MAAM,EAAE,CAC3C,GAAI,GACJ,UAAW,GACX,SAAU,GACV,MAAO,GACP,UAAW,EACb,CAAC,EAEYG,EAAeH,EAAS,MAAM,EAAE,CAC3C,GAAI,GACJ,WAAY,GACZ,KAAM,GACN,UAAW,GACX,UAAW,GACX,UAAW,CACT,KAAME,CACR,EACA,MAAO,CACL,KAAM,GACN,WAAY,EACd,EACA,UAAW,GACX,KAAM,GACN,OAAQ,CACN,OAAQ,GACR,OAAQ,GACR,QAAS,GACT,SAAU,CACR,QAAS,CACP,IAAK,EACP,CACF,EACA,QAAS,CACP,KAAMA,CACR,CACF,EACA,SAAU,CACR,OAAQ,GACR,OAAQ,GACR,QAAS,GACT,SAAU,CACR,QAAS,CACP,IAAK,EACP,CACF,EACA,QAAS,CACP,KAAMA,CACR,CACF,EACA,WAAY,CACV,GAAI,GACJ,KAAM,GACN,QAAS,GACT,OAAQ,EACV,EACA,SAAU,GACV,cAAe,EACjB,CAAC,EAEYE,EAAmBJ,EAAS,MAAM,EAAEK,EAAAC,EAAA,GAC5CH,GAD4C,CAE/C,OAAQA,EACR,SAAUA,EACV,QAASF,EACT,QAASA,CACX,EAAC,EAEYM,EAAeP,EAAS,MAAM,EAAE,CAC3C,GAAI,GACJ,KAAM,GACN,KAAM,GACN,QAAS,GACT,SAAU,GACV,UAAW,GACX,UAAW,GACX,WAAYK,EAAAC,EAAA,GACPJ,GADO,CAEV,UAAW,EACb,GACA,UAAWG,EAAAC,EAAA,GACNJ,GADM,CAET,UAAW,EACb,GACA,OAAQA,EACR,cAAe,CACb,GAAI,GACJ,KAAM,GACN,QAAS,GACT,QAAS,CACP,GAAI,EACN,EACA,oBAAqB,CACnB,MAAO,EACT,EACA,WAAYG,EAAAC,EAAA,GACPJ,GADO,CAEV,UAAW,EACb,EACF,EACA,mBAAoB,CAClB,GAAI,GACJ,KAAM,GACN,QAAS,GACT,QAAS,CACP,GAAI,EACN,EACA,oBAAqB,CACnB,MAAO,EACT,EACA,WAAYG,EAAAC,EAAA,GACPJ,GADO,CAEV,UAAW,EACb,EACF,EACA,MAAO,CACL,QAAS,GACT,SAAU,GACV,KAAM,CACJ,GAAI,EACN,CACF,CACF,CAAC","names":["Selector","fileSelector","userSelector","nodeSelector","nodeFullSelector","__spreadProps","__spreadValues","mailSelector"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }require('../chunk-5WPCTUWH.cjs');var _sodiumjs = require('../sodium.js');var _sparkmd5 = require('spark-md5'); var _sparkmd52 = _interopRequireDefault(_sparkmd5);var _utilsjs = require('../utils/utils.js');function _(o,e){if(!o)throw new Error(e)}function k(){return _sodiumjs.sodium.crypto_secretstream_xchacha20poly1305_keygen()}function T(o){let e=!1;const{state:t,header:y}=_sodiumjs.sodium.crypto_secretstream_xchacha20poly1305_init_push(o),l=(i,d)=>(_(e===!1,"state already destroyed"),_sodiumjs.sodium.crypto_secretstream_xchacha20poly1305_push(t,d,null,i));function p(){_(e===!1,"state already destroyed"),e=!0}return{encrypt:l,destroy:p,header:y}}function w(o,e){_(o.byteLength>=_sodiumjs.sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES,`header must be at least HEADERBYTES (${_sodiumjs.sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES}) long`),_(e.byteLength>=_sodiumjs.sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES,`key must be at least KEYBYTES (${_sodiumjs.sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES}) long`);let t=!1;const y=_sodiumjs.sodium.crypto_secretstream_xchacha20poly1305_init_pull(o,e),l=i=>(_(t===!1,"state already destroyed"),_sodiumjs.sodium.crypto_secretstream_xchacha20poly1305_pull(y,i));function p(){_(t===!1,"state already destroyed"),t=!0}return{decrypt:l,destroy:p}}const m=8192;async function F(o,e,t,y){await _sodiumjs.setup.call(void 0, );const{encrypt:l,destroy:p,header:i}=T(o),d=m+_sodiumjs.sodium.crypto_secretstream_xchacha20poly1305_ABYTES,c=Math.ceil(e.byteLength/m)*d+i.byteLength;t==null||t({percent:0,total:c,current:0});const h=new Uint8Array(c),n=new _sparkmd52.default.ArrayBuffer,u=new _sparkmd52.default.ArrayBuffer;h.set(i),n.append(i);let a=i.byteLength;t==null||t({percent:a/c,total:c,current:a});let E=a/c;for(const s of _utilsjs.chunks.call(void 0, e,m)){if(y!=null&&y.signal.aborted)throw new Error("Encrypt aborted");u.append(s);const b=s.length<m?_sodiumjs.sodium.crypto_secretstream_xchacha20poly1305_TAG_FINAL:_sodiumjs.sodium.crypto_secretstream_xchacha20poly1305_TAG_MESSAGE,f=l(b,s);n.append(f),h.set(f,a),a+=f.byteLength;const A=a/c;A>E+.01&&(t==null||t({percent:A,total:c,current:a}),E=A)}return p(),t==null||t({percent:1,total:a,current:a}),{data:h.slice(0,a),md5Encrypted:n.end(),md5:u.end()}}async function L(o,e,t,y){await _sodiumjs.setup.call(void 0, );const l=e.slice(0,_sodiumjs.sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES);e=e.slice(_sodiumjs.sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES);const{decrypt:p,destroy:i}=w(l,o),d=m+_sodiumjs.sodium.crypto_secretstream_xchacha20poly1305_ABYTES,c=Math.ceil(e.byteLength/d)*m;t==null||t({percent:0,total:c,current:0});const h=new Uint8Array(c);let n=0,u=n/c;for(const a of _utilsjs.chunks.call(void 0, e,d)){if(y!=null&&y.signal.aborted)throw new Error("Decrypt aborted");const E=p(a);h.set(E.message,n),n+=E.message.byteLength;const s=n/c;s>u+.01&&(t==null||t({percent:s,total:c,current:n}),u=s)}return i(),t==null||t({percent:1,total:n,current:n}),h.slice(0,n)}exports.CHUNK_SIZE = m; exports.decryptSecretstream = L; exports.encryptSecretstream = F; exports.secretstreamKeygen = k;
|
|
2
|
+
//# sourceMappingURL=file.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/crypto/file.ts"],"names":["setup","sodium","SparkMD5","chunks","assert","c","message","secretstreamKeygen","encrypt","key","destroyed","state","header","tag","plaintext","destroy","decrypt","ciphertext","CHUNK_SIZE","encryptSecretstream","data","progress","abort","crypt","cryptedChunk","max","final","sparkEncrypted","spark","total","lastPercent","chunk","crypted","percent","decryptSecretstream","decryptt","chunkSize","tmp"],"mappings":"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","sourcesContent":["import type { MessageTag } from \"libsodium-wrappers\";\nimport { setup, sodium } from \"../sodium.js\";\nimport SparkMD5 from \"spark-md5\";\nimport { chunks } from \"../utils/utils.js\";\n\nexport type EncryptedFile = {\n data: Uint8Array;\n md5: string;\n md5Encrypted: string;\n};\n\nfunction assert(c: boolean, message: string): void {\n if (!c) {\n throw new Error(message);\n }\n}\n\ntype EncryptFn = (tag: number, plaintext: Uint8Array) => Uint8Array;\n\ntype DecryptFn = (ciphertext: Uint8Array) => MessageTag;\n\nexport function secretstreamKeygen(): Uint8Array {\n return sodium.crypto_secretstream_xchacha20poly1305_keygen();\n}\n\nfunction encrypt(key: Uint8Array): {\n destroy: () => void;\n encrypt: EncryptFn;\n header: Uint8Array;\n} {\n let destroyed = false;\n const { state, header } =\n sodium.crypto_secretstream_xchacha20poly1305_init_push(key);\n\n const encrypt: EncryptFn = (tag, plaintext) => {\n assert(destroyed === false, \"state already destroyed\");\n\n return sodium.crypto_secretstream_xchacha20poly1305_push(\n state,\n plaintext,\n null,\n tag\n );\n };\n\n function destroy(): void {\n assert(destroyed === false, \"state already destroyed\");\n destroyed = true;\n }\n\n return {\n encrypt,\n destroy,\n header\n };\n}\n\nfunction decrypt(\n header: Uint8Array,\n key: Uint8Array\n): {\n destroy: () => void;\n decrypt: DecryptFn;\n} {\n assert(\n header.byteLength >=\n sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES,\n `header must be at least HEADERBYTES (${sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES}) long`\n );\n assert(\n key.byteLength >= sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES,\n `key must be at least KEYBYTES (${sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES}) long`\n );\n\n let destroyed = false;\n const state = sodium.crypto_secretstream_xchacha20poly1305_init_pull(\n header,\n key\n );\n\n const decrypt: DecryptFn = ciphertext => {\n assert(destroyed === false, \"state already destroyed\");\n\n return sodium.crypto_secretstream_xchacha20poly1305_pull(state, ciphertext);\n };\n\n function destroy(): void {\n assert(destroyed === false, \"state already destroyed\");\n destroyed = true;\n }\n\n return {\n decrypt,\n destroy\n };\n}\n\nexport const CHUNK_SIZE = 8192;\n\nexport type Progress = {\n percent: number;\n total: number;\n current: number;\n};\n\nexport async function encryptSecretstream(\n key: Uint8Array,\n data: Uint8Array,\n progress?: (progress: Progress) => Promise<void>,\n abort?: AbortController\n): Promise<EncryptedFile> {\n await setup();\n const { encrypt: crypt, destroy, header } = encrypt(key);\n const cryptedChunk =\n CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;\n const max =\n Math.ceil(data.byteLength / CHUNK_SIZE) * cryptedChunk + header.byteLength;\n\n progress?.({\n percent: 0,\n total: max,\n current: 0\n });\n const final = new Uint8Array(max);\n const sparkEncrypted = new SparkMD5.ArrayBuffer();\n const spark = new SparkMD5.ArrayBuffer();\n\n final.set(header);\n sparkEncrypted.append(header);\n let total = header.byteLength;\n progress?.({\n percent: total / max,\n total: max,\n current: total\n });\n let lastPercent = total / max;\n\n for (const chunk of chunks(data, CHUNK_SIZE)) {\n if (abort?.signal.aborted) {\n throw new Error(`Encrypt aborted`);\n }\n spark.append(chunk);\n const tag =\n chunk.length < CHUNK_SIZE\n ? sodium.crypto_secretstream_xchacha20poly1305_TAG_FINAL\n : sodium.crypto_secretstream_xchacha20poly1305_TAG_MESSAGE;\n const crypted = crypt(tag, chunk);\n sparkEncrypted.append(crypted);\n final.set(crypted, total);\n total += crypted.byteLength;\n const percent = total / max;\n if (percent > lastPercent + 0.01) {\n progress?.({\n percent,\n total: max,\n current: total\n });\n lastPercent = percent;\n }\n }\n\n destroy();\n progress?.({\n percent: 1,\n total,\n current: total\n });\n return {\n data: final.slice(0, total),\n md5Encrypted: sparkEncrypted.end(),\n md5: spark.end()\n };\n}\n\nexport async function decryptSecretstream(\n key: Uint8Array,\n data: Uint8Array,\n progress?: (progress: Progress) => Promise<void>,\n abort?: AbortController\n): Promise<Uint8Array> {\n await setup();\n const header = data.slice(\n 0,\n sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES\n );\n data = data.slice(sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES);\n\n const { decrypt: decryptt, destroy } = decrypt(header, key);\n const chunkSize =\n CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;\n const max = Math.ceil(data.byteLength / chunkSize) * CHUNK_SIZE;\n\n progress?.({\n percent: 0,\n total: max,\n current: 0\n });\n const final = new Uint8Array(max);\n let total = 0;\n\n let lastPercent = total / max;\n\n for (const chunk of chunks(data, chunkSize)) {\n if (abort?.signal.aborted) {\n throw new Error(`Decrypt aborted`);\n }\n const tmp = decryptt(chunk);\n final.set(tmp.message, total);\n total += tmp.message.byteLength;\n const percent = total / max;\n if (percent > lastPercent + 0.01) {\n progress?.({\n percent,\n total: max,\n current: total\n });\n lastPercent = percent;\n }\n }\n\n destroy();\n progress?.({\n percent: 1,\n total,\n current: total\n });\n return final.slice(0, total);\n}\n\n// async function mainSecretstream(random: Uint8Array): Promise<void> {\n// const key = secretstreamKeygen();\n// console.time(\"secretstream_encrypt\");\n// const crypted = encryptSecretstream(key, random);\n// console.timeEnd(\"secretstream_encrypt\");\n// console.time(\"secretstream_decrypt\");\n// const decrypted = decryptSecretstream(key, crypted);\n// console.timeEnd(\"secretstream_decrypt\");\n// const first = to_hex(random).slice(0, 32);\n// const final = to_hex(decrypted).slice(0, 32);\n// console.log({\n// first,\n// final,\n// equals: first === final\n// });\n// }\n// async function mainSecretbox(random: Uint8Array): Promise<void> {\n// const key = generateSecretBox();\n// console.time(\"secretbox_encrypt\");\n// const crypted = encryptFile(random, key);\n// console.timeEnd(\"secretbox_encrypt\");\n// console.time(\"secretbox_decrypt\");\n// const decrypted = decryptFile(crypted, key);\n// console.timeEnd(\"secretbox_decrypt\");\n// const first = to_hex(random).slice(0, 32);\n// const final = to_hex(decrypted).slice(0, 32);\n// console.log({\n// first,\n// final,\n// equals: first === final\n// });\n// }\n\n// async function main(): Promise<void> {\n// await ready;\n// console.time(\"randombytes_buf\");\n// const random = randombytes_buf(1_000_000 * 1024);\n// console.timeEnd(\"randombytes_buf\");\n// await Promise.all([mainSecretstream(random), mainSecretbox(random)]);\n// }\n\n// main();\n"]}
|
package/dist/crypto/file.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
declare type EncryptedFile = {
|
|
2
2
|
data: Uint8Array;
|
|
3
3
|
md5: string;
|
|
4
4
|
md5Encrypted: string;
|
|
5
5
|
};
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
declare function secretstreamKeygen(): Uint8Array;
|
|
7
|
+
declare const CHUNK_SIZE = 8192;
|
|
8
|
+
declare type Progress = {
|
|
9
9
|
percent: number;
|
|
10
10
|
total: number;
|
|
11
11
|
current: number;
|
|
12
12
|
};
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
declare function encryptSecretstream(key: Uint8Array, data: Uint8Array, progress?: (progress: Progress) => Promise<void>, abort?: AbortController): Promise<EncryptedFile>;
|
|
14
|
+
declare function decryptSecretstream(key: Uint8Array, data: Uint8Array, progress?: (progress: Progress) => Promise<void>, abort?: AbortController): Promise<Uint8Array>;
|
|
15
|
+
|
|
16
|
+
export { CHUNK_SIZE, EncryptedFile, Progress, decryptSecretstream, encryptSecretstream, secretstreamKeygen };
|
package/dist/crypto/file.js
CHANGED
|
@@ -1,210 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import { chunks } from "../utils/utils.js";
|
|
4
|
-
|
|
5
|
-
function assert(c, message) {
|
|
6
|
-
if (!c) {
|
|
7
|
-
throw new Error(message);
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export function secretstreamKeygen() {
|
|
12
|
-
return sodium.crypto_secretstream_xchacha20poly1305_keygen();
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
function encrypt(key) {
|
|
16
|
-
let destroyed = false;
|
|
17
|
-
const {
|
|
18
|
-
state,
|
|
19
|
-
header
|
|
20
|
-
} = sodium.crypto_secretstream_xchacha20poly1305_init_push(key);
|
|
21
|
-
|
|
22
|
-
const encrypt = (tag, plaintext) => {
|
|
23
|
-
assert(destroyed === false, "state already destroyed");
|
|
24
|
-
return sodium.crypto_secretstream_xchacha20poly1305_push(state, plaintext, null, tag);
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
function destroy() {
|
|
28
|
-
assert(destroyed === false, "state already destroyed");
|
|
29
|
-
destroyed = true;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return {
|
|
33
|
-
encrypt,
|
|
34
|
-
destroy,
|
|
35
|
-
header
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function decrypt(header, key) {
|
|
40
|
-
assert(header.byteLength >= sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES, `header must be at least HEADERBYTES (${sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES}) long`);
|
|
41
|
-
assert(key.byteLength >= sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES, `key must be at least KEYBYTES (${sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES}) long`);
|
|
42
|
-
let destroyed = false;
|
|
43
|
-
const state = sodium.crypto_secretstream_xchacha20poly1305_init_pull(header, key);
|
|
44
|
-
|
|
45
|
-
const decrypt = ciphertext => {
|
|
46
|
-
assert(destroyed === false, "state already destroyed");
|
|
47
|
-
return sodium.crypto_secretstream_xchacha20poly1305_pull(state, ciphertext);
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
function destroy() {
|
|
51
|
-
assert(destroyed === false, "state already destroyed");
|
|
52
|
-
destroyed = true;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return {
|
|
56
|
-
decrypt,
|
|
57
|
-
destroy
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
export const CHUNK_SIZE = 8192;
|
|
62
|
-
export async function encryptSecretstream(key, data, progress, abort) {
|
|
63
|
-
await setup();
|
|
64
|
-
const {
|
|
65
|
-
encrypt: crypt,
|
|
66
|
-
destroy,
|
|
67
|
-
header
|
|
68
|
-
} = encrypt(key);
|
|
69
|
-
const cryptedChunk = CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;
|
|
70
|
-
const max = Math.ceil(data.byteLength / CHUNK_SIZE) * cryptedChunk + header.byteLength;
|
|
71
|
-
progress == null ? void 0 : progress({
|
|
72
|
-
percent: 0,
|
|
73
|
-
total: max,
|
|
74
|
-
current: 0
|
|
75
|
-
});
|
|
76
|
-
const final = new Uint8Array(max);
|
|
77
|
-
const sparkEncrypted = new SparkMD5.ArrayBuffer();
|
|
78
|
-
const spark = new SparkMD5.ArrayBuffer();
|
|
79
|
-
final.set(header);
|
|
80
|
-
sparkEncrypted.append(header);
|
|
81
|
-
let total = header.byteLength;
|
|
82
|
-
progress == null ? void 0 : progress({
|
|
83
|
-
percent: total / max,
|
|
84
|
-
total: max,
|
|
85
|
-
current: total
|
|
86
|
-
});
|
|
87
|
-
let lastPercent = total / max;
|
|
88
|
-
|
|
89
|
-
for (const chunk of chunks(data, CHUNK_SIZE)) {
|
|
90
|
-
if (abort != null && abort.signal.aborted) {
|
|
91
|
-
throw new Error(`Encrypt aborted`);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
spark.append(chunk);
|
|
95
|
-
const tag = chunk.length < CHUNK_SIZE ? sodium.crypto_secretstream_xchacha20poly1305_TAG_FINAL : sodium.crypto_secretstream_xchacha20poly1305_TAG_MESSAGE;
|
|
96
|
-
const crypted = crypt(tag, chunk);
|
|
97
|
-
sparkEncrypted.append(crypted);
|
|
98
|
-
final.set(crypted, total);
|
|
99
|
-
total += crypted.byteLength;
|
|
100
|
-
const percent = total / max;
|
|
101
|
-
|
|
102
|
-
if (percent > lastPercent + 0.01) {
|
|
103
|
-
progress == null ? void 0 : progress({
|
|
104
|
-
percent,
|
|
105
|
-
total: max,
|
|
106
|
-
current: total
|
|
107
|
-
});
|
|
108
|
-
lastPercent = percent;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
destroy();
|
|
113
|
-
progress == null ? void 0 : progress({
|
|
114
|
-
percent: 1,
|
|
115
|
-
total,
|
|
116
|
-
current: total
|
|
117
|
-
});
|
|
118
|
-
return {
|
|
119
|
-
data: final.slice(0, total),
|
|
120
|
-
md5Encrypted: sparkEncrypted.end(),
|
|
121
|
-
md5: spark.end()
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
export async function decryptSecretstream(key, data, progress, abort) {
|
|
125
|
-
await setup();
|
|
126
|
-
const header = data.slice(0, sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES);
|
|
127
|
-
data = data.slice(sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES);
|
|
128
|
-
const {
|
|
129
|
-
decrypt: decryptt,
|
|
130
|
-
destroy
|
|
131
|
-
} = decrypt(header, key);
|
|
132
|
-
const chunkSize = CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;
|
|
133
|
-
const max = Math.ceil(data.byteLength / chunkSize) * CHUNK_SIZE;
|
|
134
|
-
progress == null ? void 0 : progress({
|
|
135
|
-
percent: 0,
|
|
136
|
-
total: max,
|
|
137
|
-
current: 0
|
|
138
|
-
});
|
|
139
|
-
const final = new Uint8Array(max);
|
|
140
|
-
let total = 0;
|
|
141
|
-
let lastPercent = total / max;
|
|
142
|
-
|
|
143
|
-
for (const chunk of chunks(data, chunkSize)) {
|
|
144
|
-
if (abort != null && abort.signal.aborted) {
|
|
145
|
-
throw new Error(`Decrypt aborted`);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
const tmp = decryptt(chunk);
|
|
149
|
-
final.set(tmp.message, total);
|
|
150
|
-
total += tmp.message.byteLength;
|
|
151
|
-
const percent = total / max;
|
|
152
|
-
|
|
153
|
-
if (percent > lastPercent + 0.01) {
|
|
154
|
-
progress == null ? void 0 : progress({
|
|
155
|
-
percent,
|
|
156
|
-
total: max,
|
|
157
|
-
current: total
|
|
158
|
-
});
|
|
159
|
-
lastPercent = percent;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
destroy();
|
|
164
|
-
progress == null ? void 0 : progress({
|
|
165
|
-
percent: 1,
|
|
166
|
-
total,
|
|
167
|
-
current: total
|
|
168
|
-
});
|
|
169
|
-
return final.slice(0, total);
|
|
170
|
-
} // async function mainSecretstream(random: Uint8Array): Promise<void> {
|
|
171
|
-
// const key = secretstreamKeygen();
|
|
172
|
-
// console.time("secretstream_encrypt");
|
|
173
|
-
// const crypted = encryptSecretstream(key, random);
|
|
174
|
-
// console.timeEnd("secretstream_encrypt");
|
|
175
|
-
// console.time("secretstream_decrypt");
|
|
176
|
-
// const decrypted = decryptSecretstream(key, crypted);
|
|
177
|
-
// console.timeEnd("secretstream_decrypt");
|
|
178
|
-
// const first = to_hex(random).slice(0, 32);
|
|
179
|
-
// const final = to_hex(decrypted).slice(0, 32);
|
|
180
|
-
// console.log({
|
|
181
|
-
// first,
|
|
182
|
-
// final,
|
|
183
|
-
// equals: first === final
|
|
184
|
-
// });
|
|
185
|
-
// }
|
|
186
|
-
// async function mainSecretbox(random: Uint8Array): Promise<void> {
|
|
187
|
-
// const key = generateSecretBox();
|
|
188
|
-
// console.time("secretbox_encrypt");
|
|
189
|
-
// const crypted = encryptFile(random, key);
|
|
190
|
-
// console.timeEnd("secretbox_encrypt");
|
|
191
|
-
// console.time("secretbox_decrypt");
|
|
192
|
-
// const decrypted = decryptFile(crypted, key);
|
|
193
|
-
// console.timeEnd("secretbox_decrypt");
|
|
194
|
-
// const first = to_hex(random).slice(0, 32);
|
|
195
|
-
// const final = to_hex(decrypted).slice(0, 32);
|
|
196
|
-
// console.log({
|
|
197
|
-
// first,
|
|
198
|
-
// final,
|
|
199
|
-
// equals: first === final
|
|
200
|
-
// });
|
|
201
|
-
// }
|
|
202
|
-
// async function main(): Promise<void> {
|
|
203
|
-
// await ready;
|
|
204
|
-
// console.time("randombytes_buf");
|
|
205
|
-
// const random = randombytes_buf(1_000_000 * 1024);
|
|
206
|
-
// console.timeEnd("randombytes_buf");
|
|
207
|
-
// await Promise.all([mainSecretstream(random), mainSecretbox(random)]);
|
|
208
|
-
// }
|
|
209
|
-
// main();
|
|
210
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZXR1cCIsInNvZGl1bSIsIlNwYXJrTUQ1IiwiY2h1bmtzIiwiYXNzZXJ0IiwiYyIsIm1lc3NhZ2UiLCJFcnJvciIsInNlY3JldHN0cmVhbUtleWdlbiIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfa2V5Z2VuIiwiZW5jcnlwdCIsImtleSIsImRlc3Ryb3llZCIsInN0YXRlIiwiaGVhZGVyIiwiY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9pbml0X3B1c2giLCJ0YWciLCJwbGFpbnRleHQiLCJjcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X3B1c2giLCJkZXN0cm95IiwiZGVjcnlwdCIsImJ5dGVMZW5ndGgiLCJjcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTIiwiY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9LRVlCWVRFUyIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfaW5pdF9wdWxsIiwiY2lwaGVydGV4dCIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfcHVsbCIsIkNIVU5LX1NJWkUiLCJlbmNyeXB0U2VjcmV0c3RyZWFtIiwiZGF0YSIsInByb2dyZXNzIiwiYWJvcnQiLCJjcnlwdCIsImNyeXB0ZWRDaHVuayIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfQUJZVEVTIiwibWF4IiwiTWF0aCIsImNlaWwiLCJwZXJjZW50IiwidG90YWwiLCJjdXJyZW50IiwiZmluYWwiLCJVaW50OEFycmF5Iiwic3BhcmtFbmNyeXB0ZWQiLCJBcnJheUJ1ZmZlciIsInNwYXJrIiwic2V0IiwiYXBwZW5kIiwibGFzdFBlcmNlbnQiLCJjaHVuayIsInNpZ25hbCIsImFib3J0ZWQiLCJsZW5ndGgiLCJjcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X1RBR19GSU5BTCIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfVEFHX01FU1NBR0UiLCJjcnlwdGVkIiwic2xpY2UiLCJtZDVFbmNyeXB0ZWQiLCJlbmQiLCJtZDUiLCJkZWNyeXB0U2VjcmV0c3RyZWFtIiwiZGVjcnlwdHQiLCJjaHVua1NpemUiLCJ0bXAiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY3J5cHRvL2ZpbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNZXNzYWdlVGFnIH0gZnJvbSBcImxpYnNvZGl1bS13cmFwcGVyc1wiO1xuaW1wb3J0IHsgc2V0dXAsIHNvZGl1bSB9IGZyb20gXCIuLi9zb2RpdW0uanNcIjtcbmltcG9ydCBTcGFya01ENSBmcm9tIFwic3BhcmstbWQ1XCI7XG5pbXBvcnQgeyBjaHVua3MgfSBmcm9tIFwiLi4vdXRpbHMvdXRpbHMuanNcIjtcblxuZXhwb3J0IHR5cGUgRW5jcnlwdGVkRmlsZSA9IHtcbiAgZGF0YTogVWludDhBcnJheTtcbiAgbWQ1OiBzdHJpbmc7XG4gIG1kNUVuY3J5cHRlZDogc3RyaW5nO1xufTtcblxuZnVuY3Rpb24gYXNzZXJ0KGM6IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoIWMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIH1cbn1cblxudHlwZSBFbmNyeXB0Rm4gPSAodGFnOiBudW1iZXIsIHBsYWludGV4dDogVWludDhBcnJheSkgPT4gVWludDhBcnJheTtcblxudHlwZSBEZWNyeXB0Rm4gPSAoY2lwaGVydGV4dDogVWludDhBcnJheSkgPT4gTWVzc2FnZVRhZztcblxuZXhwb3J0IGZ1bmN0aW9uIHNlY3JldHN0cmVhbUtleWdlbigpOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X2tleWdlbigpO1xufVxuXG5mdW5jdGlvbiBlbmNyeXB0KGtleTogVWludDhBcnJheSk6IHtcbiAgZGVzdHJveTogKCkgPT4gdm9pZDtcbiAgZW5jcnlwdDogRW5jcnlwdEZuO1xuICBoZWFkZXI6IFVpbnQ4QXJyYXk7XG59IHtcbiAgbGV0IGRlc3Ryb3llZCA9IGZhbHNlO1xuICBjb25zdCB7IHN0YXRlLCBoZWFkZXIgfSA9XG4gICAgc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfaW5pdF9wdXNoKGtleSk7XG5cbiAgY29uc3QgZW5jcnlwdDogRW5jcnlwdEZuID0gKHRhZywgcGxhaW50ZXh0KSA9PiB7XG4gICAgYXNzZXJ0KGRlc3Ryb3llZCA9PT0gZmFsc2UsIFwic3RhdGUgYWxyZWFkeSBkZXN0cm95ZWRcIik7XG5cbiAgICByZXR1cm4gc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfcHVzaChcbiAgICAgIHN0YXRlLFxuICAgICAgcGxhaW50ZXh0LFxuICAgICAgbnVsbCxcbiAgICAgIHRhZ1xuICAgICk7XG4gIH07XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpOiB2b2lkIHtcbiAgICBhc3NlcnQoZGVzdHJveWVkID09PSBmYWxzZSwgXCJzdGF0ZSBhbHJlYWR5IGRlc3Ryb3llZFwiKTtcbiAgICBkZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbmNyeXB0LFxuICAgIGRlc3Ryb3ksXG4gICAgaGVhZGVyXG4gIH07XG59XG5cbmZ1bmN0aW9uIGRlY3J5cHQoXG4gIGhlYWRlcjogVWludDhBcnJheSxcbiAga2V5OiBVaW50OEFycmF5XG4pOiB7XG4gIGRlc3Ryb3k6ICgpID0+IHZvaWQ7XG4gIGRlY3J5cHQ6IERlY3J5cHRGbjtcbn0ge1xuICBhc3NlcnQoXG4gICAgaGVhZGVyLmJ5dGVMZW5ndGggPj1cbiAgICAgIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTLFxuICAgIGBoZWFkZXIgbXVzdCBiZSBhdCBsZWFzdCBIRUFERVJCWVRFUyAoJHtzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9IRUFERVJCWVRFU30pIGxvbmdgXG4gICk7XG4gIGFzc2VydChcbiAgICBrZXkuYnl0ZUxlbmd0aCA+PSBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9LRVlCWVRFUyxcbiAgICBga2V5IG11c3QgYmUgYXQgbGVhc3QgS0VZQllURVMgKCR7c29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfS0VZQllURVN9KSBsb25nYFxuICApO1xuXG4gIGxldCBkZXN0cm95ZWQgPSBmYWxzZTtcbiAgY29uc3Qgc3RhdGUgPSBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9pbml0X3B1bGwoXG4gICAgaGVhZGVyLFxuICAgIGtleVxuICApO1xuXG4gIGNvbnN0IGRlY3J5cHQ6IERlY3J5cHRGbiA9IGNpcGhlcnRleHQgPT4ge1xuICAgIGFzc2VydChkZXN0cm95ZWQgPT09IGZhbHNlLCBcInN0YXRlIGFscmVhZHkgZGVzdHJveWVkXCIpO1xuXG4gICAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X3B1bGwoc3RhdGUsIGNpcGhlcnRleHQpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgYXNzZXJ0KGRlc3Ryb3llZCA9PT0gZmFsc2UsIFwic3RhdGUgYWxyZWFkeSBkZXN0cm95ZWRcIik7XG4gICAgZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGVjcnlwdCxcbiAgICBkZXN0cm95XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBDSFVOS19TSVpFID0gODE5MjtcblxuZXhwb3J0IHR5cGUgUHJvZ3Jlc3MgPSB7XG4gIHBlcmNlbnQ6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlcjtcbiAgY3VycmVudDogbnVtYmVyO1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuY3J5cHRTZWNyZXRzdHJlYW0oXG4gIGtleTogVWludDhBcnJheSxcbiAgZGF0YTogVWludDhBcnJheSxcbiAgcHJvZ3Jlc3M/OiAocHJvZ3Jlc3M6IFByb2dyZXNzKSA9PiBQcm9taXNlPHZvaWQ+LFxuICBhYm9ydD86IEFib3J0Q29udHJvbGxlclxuKTogUHJvbWlzZTxFbmNyeXB0ZWRGaWxlPiB7XG4gIGF3YWl0IHNldHVwKCk7XG4gIGNvbnN0IHsgZW5jcnlwdDogY3J5cHQsIGRlc3Ryb3ksIGhlYWRlciB9ID0gZW5jcnlwdChrZXkpO1xuICBjb25zdCBjcnlwdGVkQ2h1bmsgPVxuICAgIENIVU5LX1NJWkUgKyBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9BQllURVM7XG4gIGNvbnN0IG1heCA9XG4gICAgTWF0aC5jZWlsKGRhdGEuYnl0ZUxlbmd0aCAvIENIVU5LX1NJWkUpICogY3J5cHRlZENodW5rICsgaGVhZGVyLmJ5dGVMZW5ndGg7XG5cbiAgcHJvZ3Jlc3M/Lih7XG4gICAgcGVyY2VudDogMCxcbiAgICB0b3RhbDogbWF4LFxuICAgIGN1cnJlbnQ6IDBcbiAgfSk7XG4gIGNvbnN0IGZpbmFsID0gbmV3IFVpbnQ4QXJyYXkobWF4KTtcbiAgY29uc3Qgc3BhcmtFbmNyeXB0ZWQgPSBuZXcgU3BhcmtNRDUuQXJyYXlCdWZmZXIoKTtcbiAgY29uc3Qgc3BhcmsgPSBuZXcgU3BhcmtNRDUuQXJyYXlCdWZmZXIoKTtcblxuICBmaW5hbC5zZXQoaGVhZGVyKTtcbiAgc3BhcmtFbmNyeXB0ZWQuYXBwZW5kKGhlYWRlcik7XG4gIGxldCB0b3RhbCA9IGhlYWRlci5ieXRlTGVuZ3RoO1xuICBwcm9ncmVzcz8uKHtcbiAgICBwZXJjZW50OiB0b3RhbCAvIG1heCxcbiAgICB0b3RhbDogbWF4LFxuICAgIGN1cnJlbnQ6IHRvdGFsXG4gIH0pO1xuICBsZXQgbGFzdFBlcmNlbnQgPSB0b3RhbCAvIG1heDtcblxuICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcyhkYXRhLCBDSFVOS19TSVpFKSkge1xuICAgIGlmIChhYm9ydD8uc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW5jcnlwdCBhYm9ydGVkYCk7XG4gICAgfVxuICAgIHNwYXJrLmFwcGVuZChjaHVuayk7XG4gICAgY29uc3QgdGFnID1cbiAgICAgIGNodW5rLmxlbmd0aCA8IENIVU5LX1NJWkVcbiAgICAgICAgPyBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9UQUdfRklOQUxcbiAgICAgICAgOiBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9UQUdfTUVTU0FHRTtcbiAgICBjb25zdCBjcnlwdGVkID0gY3J5cHQodGFnLCBjaHVuayk7XG4gICAgc3BhcmtFbmNyeXB0ZWQuYXBwZW5kKGNyeXB0ZWQpO1xuICAgIGZpbmFsLnNldChjcnlwdGVkLCB0b3RhbCk7XG4gICAgdG90YWwgKz0gY3J5cHRlZC5ieXRlTGVuZ3RoO1xuICAgIGNvbnN0IHBlcmNlbnQgPSB0b3RhbCAvIG1heDtcbiAgICBpZiAocGVyY2VudCA+IGxhc3RQZXJjZW50ICsgMC4wMSkge1xuICAgICAgcHJvZ3Jlc3M/Lih7XG4gICAgICAgIHBlcmNlbnQsXG4gICAgICAgIHRvdGFsOiBtYXgsXG4gICAgICAgIGN1cnJlbnQ6IHRvdGFsXG4gICAgICB9KTtcbiAgICAgIGxhc3RQZXJjZW50ID0gcGVyY2VudDtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCk7XG4gIHByb2dyZXNzPy4oe1xuICAgIHBlcmNlbnQ6IDEsXG4gICAgdG90YWwsXG4gICAgY3VycmVudDogdG90YWxcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgZGF0YTogZmluYWwuc2xpY2UoMCwgdG90YWwpLFxuICAgIG1kNUVuY3J5cHRlZDogc3BhcmtFbmNyeXB0ZWQuZW5kKCksXG4gICAgbWQ1OiBzcGFyay5lbmQoKVxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVjcnlwdFNlY3JldHN0cmVhbShcbiAga2V5OiBVaW50OEFycmF5LFxuICBkYXRhOiBVaW50OEFycmF5LFxuICBwcm9ncmVzcz86IChwcm9ncmVzczogUHJvZ3Jlc3MpID0+IFByb21pc2U8dm9pZD4sXG4gIGFib3J0PzogQWJvcnRDb250cm9sbGVyXG4pOiBQcm9taXNlPFVpbnQ4QXJyYXk+IHtcbiAgYXdhaXQgc2V0dXAoKTtcbiAgY29uc3QgaGVhZGVyID0gZGF0YS5zbGljZShcbiAgICAwLFxuICAgIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTXG4gICk7XG4gIGRhdGEgPSBkYXRhLnNsaWNlKHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTKTtcblxuICBjb25zdCB7IGRlY3J5cHQ6IGRlY3J5cHR0LCBkZXN0cm95IH0gPSBkZWNyeXB0KGhlYWRlciwga2V5KTtcbiAgY29uc3QgY2h1bmtTaXplID1cbiAgICBDSFVOS19TSVpFICsgc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfQUJZVEVTO1xuICBjb25zdCBtYXggPSBNYXRoLmNlaWwoZGF0YS5ieXRlTGVuZ3RoIC8gY2h1bmtTaXplKSAqIENIVU5LX1NJWkU7XG5cbiAgcHJvZ3Jlc3M/Lih7XG4gICAgcGVyY2VudDogMCxcbiAgICB0b3RhbDogbWF4LFxuICAgIGN1cnJlbnQ6IDBcbiAgfSk7XG4gIGNvbnN0IGZpbmFsID0gbmV3IFVpbnQ4QXJyYXkobWF4KTtcbiAgbGV0IHRvdGFsID0gMDtcblxuICBsZXQgbGFzdFBlcmNlbnQgPSB0b3RhbCAvIG1heDtcblxuICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcyhkYXRhLCBjaHVua1NpemUpKSB7XG4gICAgaWYgKGFib3J0Py5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEZWNyeXB0IGFib3J0ZWRgKTtcbiAgICB9XG4gICAgY29uc3QgdG1wID0gZGVjcnlwdHQoY2h1bmspO1xuICAgIGZpbmFsLnNldCh0bXAubWVzc2FnZSwgdG90YWwpO1xuICAgIHRvdGFsICs9IHRtcC5tZXNzYWdlLmJ5dGVMZW5ndGg7XG4gICAgY29uc3QgcGVyY2VudCA9IHRvdGFsIC8gbWF4O1xuICAgIGlmIChwZXJjZW50ID4gbGFzdFBlcmNlbnQgKyAwLjAxKSB7XG4gICAgICBwcm9ncmVzcz8uKHtcbiAgICAgICAgcGVyY2VudCxcbiAgICAgICAgdG90YWw6IG1heCxcbiAgICAgICAgY3VycmVudDogdG90YWxcbiAgICAgIH0pO1xuICAgICAgbGFzdFBlcmNlbnQgPSBwZXJjZW50O1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKTtcbiAgcHJvZ3Jlc3M/Lih7XG4gICAgcGVyY2VudDogMSxcbiAgICB0b3RhbCxcbiAgICBjdXJyZW50OiB0b3RhbFxuICB9KTtcbiAgcmV0dXJuIGZpbmFsLnNsaWNlKDAsIHRvdGFsKTtcbn1cblxuLy8gYXN5bmMgZnVuY3Rpb24gbWFpblNlY3JldHN0cmVhbShyYW5kb206IFVpbnQ4QXJyYXkpOiBQcm9taXNlPHZvaWQ+IHtcbi8vICAgY29uc3Qga2V5ID0gc2VjcmV0c3RyZWFtS2V5Z2VuKCk7XG4vLyAgIGNvbnNvbGUudGltZShcInNlY3JldHN0cmVhbV9lbmNyeXB0XCIpO1xuLy8gICBjb25zdCBjcnlwdGVkID0gZW5jcnlwdFNlY3JldHN0cmVhbShrZXksIHJhbmRvbSk7XG4vLyAgIGNvbnNvbGUudGltZUVuZChcInNlY3JldHN0cmVhbV9lbmNyeXB0XCIpO1xuLy8gICBjb25zb2xlLnRpbWUoXCJzZWNyZXRzdHJlYW1fZGVjcnlwdFwiKTtcbi8vICAgY29uc3QgZGVjcnlwdGVkID0gZGVjcnlwdFNlY3JldHN0cmVhbShrZXksIGNyeXB0ZWQpO1xuLy8gICBjb25zb2xlLnRpbWVFbmQoXCJzZWNyZXRzdHJlYW1fZGVjcnlwdFwiKTtcbi8vICAgY29uc3QgZmlyc3QgPSB0b19oZXgocmFuZG9tKS5zbGljZSgwLCAzMik7XG4vLyAgIGNvbnN0IGZpbmFsID0gdG9faGV4KGRlY3J5cHRlZCkuc2xpY2UoMCwgMzIpO1xuLy8gICBjb25zb2xlLmxvZyh7XG4vLyAgICAgZmlyc3QsXG4vLyAgICAgZmluYWwsXG4vLyAgICAgZXF1YWxzOiBmaXJzdCA9PT0gZmluYWxcbi8vICAgfSk7XG4vLyB9XG4vLyBhc3luYyBmdW5jdGlvbiBtYWluU2VjcmV0Ym94KHJhbmRvbTogVWludDhBcnJheSk6IFByb21pc2U8dm9pZD4ge1xuLy8gICBjb25zdCBrZXkgPSBnZW5lcmF0ZVNlY3JldEJveCgpO1xuLy8gICBjb25zb2xlLnRpbWUoXCJzZWNyZXRib3hfZW5jcnlwdFwiKTtcbi8vICAgY29uc3QgY3J5cHRlZCA9IGVuY3J5cHRGaWxlKHJhbmRvbSwga2V5KTtcbi8vICAgY29uc29sZS50aW1lRW5kKFwic2VjcmV0Ym94X2VuY3J5cHRcIik7XG4vLyAgIGNvbnNvbGUudGltZShcInNlY3JldGJveF9kZWNyeXB0XCIpO1xuLy8gICBjb25zdCBkZWNyeXB0ZWQgPSBkZWNyeXB0RmlsZShjcnlwdGVkLCBrZXkpO1xuLy8gICBjb25zb2xlLnRpbWVFbmQoXCJzZWNyZXRib3hfZGVjcnlwdFwiKTtcbi8vICAgY29uc3QgZmlyc3QgPSB0b19oZXgocmFuZG9tKS5zbGljZSgwLCAzMik7XG4vLyAgIGNvbnN0IGZpbmFsID0gdG9faGV4KGRlY3J5cHRlZCkuc2xpY2UoMCwgMzIpO1xuLy8gICBjb25zb2xlLmxvZyh7XG4vLyAgICAgZmlyc3QsXG4vLyAgICAgZmluYWwsXG4vLyAgICAgZXF1YWxzOiBmaXJzdCA9PT0gZmluYWxcbi8vICAgfSk7XG4vLyB9XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIG1haW4oKTogUHJvbWlzZTx2b2lkPiB7XG4vLyAgIGF3YWl0IHJlYWR5O1xuLy8gICBjb25zb2xlLnRpbWUoXCJyYW5kb21ieXRlc19idWZcIik7XG4vLyAgIGNvbnN0IHJhbmRvbSA9IHJhbmRvbWJ5dGVzX2J1ZigxXzAwMF8wMDAgKiAxMDI0KTtcbi8vICAgY29uc29sZS50aW1lRW5kKFwicmFuZG9tYnl0ZXNfYnVmXCIpO1xuLy8gICBhd2FpdCBQcm9taXNlLmFsbChbbWFpblNlY3JldHN0cmVhbShyYW5kb20pLCBtYWluU2VjcmV0Ym94KHJhbmRvbSldKTtcbi8vIH1cblxuLy8gbWFpbigpO1xuIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxLQUFULEVBQWdCQyxNQUFoQixRQUE4QixjQUE5QjtBQUNBLE9BQU9DLFFBQVAsTUFBcUIsV0FBckI7QUFDQSxTQUFTQyxNQUFULFFBQXVCLG1CQUF2Qjs7QUFRQSxTQUFTQyxNQUFULENBQWdCQyxDQUFoQixFQUE0QkMsT0FBNUIsRUFBbUQ7RUFDakQsSUFBSSxDQUFDRCxDQUFMLEVBQVE7SUFDTixNQUFNLElBQUlFLEtBQUosQ0FBVUQsT0FBVixDQUFOO0VBQ0Q7QUFDRjs7QUFNRCxPQUFPLFNBQVNFLGtCQUFULEdBQTBDO0VBQy9DLE9BQU9QLE1BQU0sQ0FBQ1EsNENBQVAsRUFBUDtBQUNEOztBQUVELFNBQVNDLE9BQVQsQ0FBaUJDLEdBQWpCLEVBSUU7RUFDQSxJQUFJQyxTQUFTLEdBQUcsS0FBaEI7RUFDQSxNQUFNO0lBQUVDLEtBQUY7SUFBU0M7RUFBVCxJQUNKYixNQUFNLENBQUNjLCtDQUFQLENBQXVESixHQUF2RCxDQURGOztFQUdBLE1BQU1ELE9BQWtCLEdBQUcsQ0FBQ00sR0FBRCxFQUFNQyxTQUFOLEtBQW9CO0lBQzdDYixNQUFNLENBQUNRLFNBQVMsS0FBSyxLQUFmLEVBQXNCLHlCQUF0QixDQUFOO0lBRUEsT0FBT1gsTUFBTSxDQUFDaUIsMENBQVAsQ0FDTEwsS0FESyxFQUVMSSxTQUZLLEVBR0wsSUFISyxFQUlMRCxHQUpLLENBQVA7RUFNRCxDQVREOztFQVdBLFNBQVNHLE9BQVQsR0FBeUI7SUFDdkJmLE1BQU0sQ0FBQ1EsU0FBUyxLQUFLLEtBQWYsRUFBc0IseUJBQXRCLENBQU47SUFDQUEsU0FBUyxHQUFHLElB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
|
|
1
|
+
import"../chunk-KMTF2BZE.js";import{setup as x,sodium as r}from"../sodium.js";import S from"spark-md5";import{chunks as U}from"../utils/utils.js";function _(o,e){if(!o)throw new Error(e)}function k(){return r.crypto_secretstream_xchacha20poly1305_keygen()}function T(o){let e=!1;const{state:t,header:y}=r.crypto_secretstream_xchacha20poly1305_init_push(o),l=(i,d)=>(_(e===!1,"state already destroyed"),r.crypto_secretstream_xchacha20poly1305_push(t,d,null,i));function p(){_(e===!1,"state already destroyed"),e=!0}return{encrypt:l,destroy:p,header:y}}function w(o,e){_(o.byteLength>=r.crypto_secretstream_xchacha20poly1305_HEADERBYTES,`header must be at least HEADERBYTES (${r.crypto_secretstream_xchacha20poly1305_HEADERBYTES}) long`),_(e.byteLength>=r.crypto_secretstream_xchacha20poly1305_KEYBYTES,`key must be at least KEYBYTES (${r.crypto_secretstream_xchacha20poly1305_KEYBYTES}) long`);let t=!1;const y=r.crypto_secretstream_xchacha20poly1305_init_pull(o,e),l=i=>(_(t===!1,"state already destroyed"),r.crypto_secretstream_xchacha20poly1305_pull(y,i));function p(){_(t===!1,"state already destroyed"),t=!0}return{decrypt:l,destroy:p}}const m=8192;async function F(o,e,t,y){await x();const{encrypt:l,destroy:p,header:i}=T(o),d=m+r.crypto_secretstream_xchacha20poly1305_ABYTES,c=Math.ceil(e.byteLength/m)*d+i.byteLength;t==null||t({percent:0,total:c,current:0});const h=new Uint8Array(c),n=new S.ArrayBuffer,u=new S.ArrayBuffer;h.set(i),n.append(i);let a=i.byteLength;t==null||t({percent:a/c,total:c,current:a});let E=a/c;for(const s of U(e,m)){if(y!=null&&y.signal.aborted)throw new Error("Encrypt aborted");u.append(s);const b=s.length<m?r.crypto_secretstream_xchacha20poly1305_TAG_FINAL:r.crypto_secretstream_xchacha20poly1305_TAG_MESSAGE,f=l(b,s);n.append(f),h.set(f,a),a+=f.byteLength;const A=a/c;A>E+.01&&(t==null||t({percent:A,total:c,current:a}),E=A)}return p(),t==null||t({percent:1,total:a,current:a}),{data:h.slice(0,a),md5Encrypted:n.end(),md5:u.end()}}async function L(o,e,t,y){await x();const l=e.slice(0,r.crypto_secretstream_xchacha20poly1305_HEADERBYTES);e=e.slice(r.crypto_secretstream_xchacha20poly1305_HEADERBYTES);const{decrypt:p,destroy:i}=w(l,o),d=m+r.crypto_secretstream_xchacha20poly1305_ABYTES,c=Math.ceil(e.byteLength/d)*m;t==null||t({percent:0,total:c,current:0});const h=new Uint8Array(c);let n=0,u=n/c;for(const a of U(e,d)){if(y!=null&&y.signal.aborted)throw new Error("Decrypt aborted");const E=p(a);h.set(E.message,n),n+=E.message.byteLength;const s=n/c;s>u+.01&&(t==null||t({percent:s,total:c,current:n}),u=s)}return i(),t==null||t({percent:1,total:n,current:n}),h.slice(0,n)}export{m as CHUNK_SIZE,L as decryptSecretstream,F as encryptSecretstream,k as secretstreamKeygen};
|
|
2
|
+
//# sourceMappingURL=file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/crypto/file.ts"],"sourcesContent":["import type { MessageTag } from \"libsodium-wrappers\";\nimport { setup, sodium } from \"../sodium.js\";\nimport SparkMD5 from \"spark-md5\";\nimport { chunks } from \"../utils/utils.js\";\n\nexport type EncryptedFile = {\n data: Uint8Array;\n md5: string;\n md5Encrypted: string;\n};\n\nfunction assert(c: boolean, message: string): void {\n if (!c) {\n throw new Error(message);\n }\n}\n\ntype EncryptFn = (tag: number, plaintext: Uint8Array) => Uint8Array;\n\ntype DecryptFn = (ciphertext: Uint8Array) => MessageTag;\n\nexport function secretstreamKeygen(): Uint8Array {\n return sodium.crypto_secretstream_xchacha20poly1305_keygen();\n}\n\nfunction encrypt(key: Uint8Array): {\n destroy: () => void;\n encrypt: EncryptFn;\n header: Uint8Array;\n} {\n let destroyed = false;\n const { state, header } =\n sodium.crypto_secretstream_xchacha20poly1305_init_push(key);\n\n const encrypt: EncryptFn = (tag, plaintext) => {\n assert(destroyed === false, \"state already destroyed\");\n\n return sodium.crypto_secretstream_xchacha20poly1305_push(\n state,\n plaintext,\n null,\n tag\n );\n };\n\n function destroy(): void {\n assert(destroyed === false, \"state already destroyed\");\n destroyed = true;\n }\n\n return {\n encrypt,\n destroy,\n header\n };\n}\n\nfunction decrypt(\n header: Uint8Array,\n key: Uint8Array\n): {\n destroy: () => void;\n decrypt: DecryptFn;\n} {\n assert(\n header.byteLength >=\n sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES,\n `header must be at least HEADERBYTES (${sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES}) long`\n );\n assert(\n key.byteLength >= sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES,\n `key must be at least KEYBYTES (${sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES}) long`\n );\n\n let destroyed = false;\n const state = sodium.crypto_secretstream_xchacha20poly1305_init_pull(\n header,\n key\n );\n\n const decrypt: DecryptFn = ciphertext => {\n assert(destroyed === false, \"state already destroyed\");\n\n return sodium.crypto_secretstream_xchacha20poly1305_pull(state, ciphertext);\n };\n\n function destroy(): void {\n assert(destroyed === false, \"state already destroyed\");\n destroyed = true;\n }\n\n return {\n decrypt,\n destroy\n };\n}\n\nexport const CHUNK_SIZE = 8192;\n\nexport type Progress = {\n percent: number;\n total: number;\n current: number;\n};\n\nexport async function encryptSecretstream(\n key: Uint8Array,\n data: Uint8Array,\n progress?: (progress: Progress) => Promise<void>,\n abort?: AbortController\n): Promise<EncryptedFile> {\n await setup();\n const { encrypt: crypt, destroy, header } = encrypt(key);\n const cryptedChunk =\n CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;\n const max =\n Math.ceil(data.byteLength / CHUNK_SIZE) * cryptedChunk + header.byteLength;\n\n progress?.({\n percent: 0,\n total: max,\n current: 0\n });\n const final = new Uint8Array(max);\n const sparkEncrypted = new SparkMD5.ArrayBuffer();\n const spark = new SparkMD5.ArrayBuffer();\n\n final.set(header);\n sparkEncrypted.append(header);\n let total = header.byteLength;\n progress?.({\n percent: total / max,\n total: max,\n current: total\n });\n let lastPercent = total / max;\n\n for (const chunk of chunks(data, CHUNK_SIZE)) {\n if (abort?.signal.aborted) {\n throw new Error(`Encrypt aborted`);\n }\n spark.append(chunk);\n const tag =\n chunk.length < CHUNK_SIZE\n ? sodium.crypto_secretstream_xchacha20poly1305_TAG_FINAL\n : sodium.crypto_secretstream_xchacha20poly1305_TAG_MESSAGE;\n const crypted = crypt(tag, chunk);\n sparkEncrypted.append(crypted);\n final.set(crypted, total);\n total += crypted.byteLength;\n const percent = total / max;\n if (percent > lastPercent + 0.01) {\n progress?.({\n percent,\n total: max,\n current: total\n });\n lastPercent = percent;\n }\n }\n\n destroy();\n progress?.({\n percent: 1,\n total,\n current: total\n });\n return {\n data: final.slice(0, total),\n md5Encrypted: sparkEncrypted.end(),\n md5: spark.end()\n };\n}\n\nexport async function decryptSecretstream(\n key: Uint8Array,\n data: Uint8Array,\n progress?: (progress: Progress) => Promise<void>,\n abort?: AbortController\n): Promise<Uint8Array> {\n await setup();\n const header = data.slice(\n 0,\n sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES\n );\n data = data.slice(sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES);\n\n const { decrypt: decryptt, destroy } = decrypt(header, key);\n const chunkSize =\n CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;\n const max = Math.ceil(data.byteLength / chunkSize) * CHUNK_SIZE;\n\n progress?.({\n percent: 0,\n total: max,\n current: 0\n });\n const final = new Uint8Array(max);\n let total = 0;\n\n let lastPercent = total / max;\n\n for (const chunk of chunks(data, chunkSize)) {\n if (abort?.signal.aborted) {\n throw new Error(`Decrypt aborted`);\n }\n const tmp = decryptt(chunk);\n final.set(tmp.message, total);\n total += tmp.message.byteLength;\n const percent = total / max;\n if (percent > lastPercent + 0.01) {\n progress?.({\n percent,\n total: max,\n current: total\n });\n lastPercent = percent;\n }\n }\n\n destroy();\n progress?.({\n percent: 1,\n total,\n current: total\n });\n return final.slice(0, total);\n}\n\n// async function mainSecretstream(random: Uint8Array): Promise<void> {\n// const key = secretstreamKeygen();\n// console.time(\"secretstream_encrypt\");\n// const crypted = encryptSecretstream(key, random);\n// console.timeEnd(\"secretstream_encrypt\");\n// console.time(\"secretstream_decrypt\");\n// const decrypted = decryptSecretstream(key, crypted);\n// console.timeEnd(\"secretstream_decrypt\");\n// const first = to_hex(random).slice(0, 32);\n// const final = to_hex(decrypted).slice(0, 32);\n// console.log({\n// first,\n// final,\n// equals: first === final\n// });\n// }\n// async function mainSecretbox(random: Uint8Array): Promise<void> {\n// const key = generateSecretBox();\n// console.time(\"secretbox_encrypt\");\n// const crypted = encryptFile(random, key);\n// console.timeEnd(\"secretbox_encrypt\");\n// console.time(\"secretbox_decrypt\");\n// const decrypted = decryptFile(crypted, key);\n// console.timeEnd(\"secretbox_decrypt\");\n// const first = to_hex(random).slice(0, 32);\n// const final = to_hex(decrypted).slice(0, 32);\n// console.log({\n// first,\n// final,\n// equals: first === final\n// });\n// }\n\n// async function main(): Promise<void> {\n// await ready;\n// console.time(\"randombytes_buf\");\n// const random = randombytes_buf(1_000_000 * 1024);\n// console.timeEnd(\"randombytes_buf\");\n// await Promise.all([mainSecretstream(random), mainSecretbox(random)]);\n// }\n\n// main();\n"],"mappings":"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","names":["setup","sodium","SparkMD5","chunks","assert","c","message","secretstreamKeygen","encrypt","key","destroyed","state","header","tag","plaintext","destroy","decrypt","ciphertext","CHUNK_SIZE","encryptSecretstream","data","progress","abort","crypt","cryptedChunk","max","final","sparkEncrypted","spark","total","lastPercent","chunk","crypted","percent","decryptSecretstream","decryptt","chunkSize","tmp"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-5WPCTUWH.cjs');var _utilsjs = require('../utils/utils.js');var _sodiumjs = require('../sodium.js');function p(t,o,e){const n=_sodiumjs.sodium.randombytes_buf(_sodiumjs.sodium.crypto_box_NONCEBYTES),c=_sodiumjs.sodium.crypto_box_easy(t,n,_sodiumjs.sodium.from_hex(o),_sodiumjs.sodium.from_hex(e));return _utilsjs.concatenate.call(void 0, n,c)}function s(){return _sodiumjs.sodium.crypto_box_keypair("hex")}function x(t,o,e){if(t.length<_sodiumjs.sodium.crypto_box_NONCEBYTES+_sodiumjs.sodium.crypto_box_MACBYTES)throw"data too short";const n=t.slice(0,_sodiumjs.sodium.crypto_box_NONCEBYTES),c=t.slice(_sodiumjs.sodium.crypto_box_NONCEBYTES);return _sodiumjs.sodium.crypto_box_open_easy(c,n,_sodiumjs.sodium.from_hex(o),_sodiumjs.sodium.from_hex(e))}function a(){return _sodiumjs.sodium.randombytes_buf(_sodiumjs.sodium.crypto_secretbox_KEYBYTES,"hex")}function b(t,o){const e=_sodiumjs.sodium.randombytes_buf(_sodiumjs.sodium.crypto_secretbox_NONCEBYTES),n=_sodiumjs.sodium.crypto_secretbox_easy(t,e,_sodiumjs.sodium.from_hex(o));return _utilsjs.concatenate.call(void 0, e,n)}function f(t,o){if(t.length<_sodiumjs.sodium.crypto_secretbox_NONCEBYTES+_sodiumjs.sodium.crypto_secretbox_MACBYTES)throw"data too short";const e=t.slice(0,_sodiumjs.sodium.crypto_secretbox_NONCEBYTES),n=t.slice(_sodiumjs.sodium.crypto_secretbox_NONCEBYTES);return _sodiumjs.sodium.crypto_secretbox_open_easy(n,e,_sodiumjs.sodium.from_hex(o))}function u(t,o){return _sodiumjs.sodium.crypto_box_seal(t,_sodiumjs.sodium.from_hex(o))}function E(t,{privateKey:o,publicKey:e}){return _sodiumjs.sodium.crypto_box_seal_open(t,_sodiumjs.sodium.from_hex(e),_sodiumjs.sodium.from_hex(o))}exports.decryptAnonymous = E; exports.decryptCryptoBox = x; exports.decryptSecretBox = f; exports.encryptAnonymous = u; exports.encryptCryptoBox = p; exports.encryptSecretBox = b; exports.generateCryptoBoxKeyPair = s; exports.generateSecretBoxKey = a;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/crypto/index.ts"],"names":["concatenate","sodium","encryptCryptoBox","data","publicKeyBob","privateKeyAlice","nonce","crypt","generateCryptoBoxKeyPair","decryptCryptoBox","publicKeyAlice","privateKeyBob","cipher","generateSecretBoxKey","encryptSecretBox","key","decryptSecretBox","encryptAnonymous","receiverPublicKey","decryptAnonymous","privateKey","publicKey"],"mappings":"8BAAA,OAAS,eAAAA,MAAmB,oBAC5B,OAAS,UAAAC,MAAc,eAOhB,SAASC,EACdC,EACAC,EACAC,EACY,CACZ,MAAMC,EAAQL,EAAO,gBAAgBA,EAAO,qBAAqB,EAC3DM,EAAQN,EAAO,gBACnBE,EACAG,EACAL,EAAO,SAASG,CAAY,EAC5BH,EAAO,SAASI,CAAe,CACjC,EACA,OAAOL,EAAYM,EAAOC,CAAK,CACjC,CAEO,SAASC,GAAoC,CAClD,OAAOP,EAAO,mBAAmB,KAAK,CACxC,CAEO,SAASQ,EACdN,EACAO,EACAC,EACY,CACZ,GAAIR,EAAK,OAASF,EAAO,sBAAwBA,EAAO,oBACtD,KAAM,iBAER,MAAMK,EAAQH,EAAK,MAAM,EAAGF,EAAO,qBAAqB,EAClDW,EAAST,EAAK,MAAMF,EAAO,qBAAqB,EACtD,OAAOA,EAAO,qBACZW,EACAN,EACAL,EAAO,SAASS,CAAc,EAC9BT,EAAO,SAASU,CAAa,CAC/B,CACF,CAEO,SAASE,GAA+B,CAC7C,OAAOZ,EAAO,gBAAgBA,EAAO,0BAA2B,KAAK,CACvE,CAEO,SAASa,EAAiBX,EAAkBY,EAAyB,CAC1E,MAAMT,EAAQL,EAAO,gBAAgBA,EAAO,2BAA2B,EACjEM,EAAQN,EAAO,sBAAsBE,EAAMG,EAAOL,EAAO,SAASc,CAAG,CAAC,EAC5E,OAAOf,EAAYM,EAAOC,CAAK,CACjC,CAEO,SAASS,EAAiBb,EAAkBY,EAAyB,CAC1E,GACEZ,EAAK,OACLF,EAAO,4BAA8BA,EAAO,0BAE5C,KAAM,iBAER,MAAMK,EAAQH,EAAK,MAAM,EAAGF,EAAO,2BAA2B,EACxDW,EAAST,EAAK,MAAMF,EAAO,2BAA2B,EAC5D,OAAOA,EAAO,2BAA2BW,EAAQN,EAAOL,EAAO,SAASc,CAAG,CAAC,CAC9E,CAEO,SAASE,EACdd,EACAe,EACY,CACZ,OAAOjB,EAAO,gBAAgBE,EAAMF,EAAO,SAASiB,CAAiB,CAAC,CACxE,CAEO,SAASC,EACdhB,EACA,CAAE,WAAAiB,EAAY,UAAAC,CAAU,EACZ,CACZ,OAAOpB,EAAO,qBACZE,EACAF,EAAO,SAASoB,CAAS,EACzBpB,EAAO,SAASmB,CAAU,CAC5B,CACF","sourcesContent":["import { concatenate } from \"../utils/utils.js\";\nimport { sodium } from \"../sodium.js\";\n\nexport interface KeyPair {\n publicKey: string;\n privateKey: string;\n}\n\nexport function encryptCryptoBox(\n data: Uint8Array,\n publicKeyBob: string,\n privateKeyAlice: string\n): Uint8Array {\n const nonce = sodium.randombytes_buf(sodium.crypto_box_NONCEBYTES);\n const crypt = sodium.crypto_box_easy(\n data,\n nonce,\n sodium.from_hex(publicKeyBob),\n sodium.from_hex(privateKeyAlice)\n );\n return concatenate(nonce, crypt);\n}\n\nexport function generateCryptoBoxKeyPair(): KeyPair {\n return sodium.crypto_box_keypair(\"hex\");\n}\n\nexport function decryptCryptoBox(\n data: Uint8Array,\n publicKeyAlice: string,\n privateKeyBob: string\n): Uint8Array {\n if (data.length < sodium.crypto_box_NONCEBYTES + sodium.crypto_box_MACBYTES) {\n throw \"data too short\";\n }\n const nonce = data.slice(0, sodium.crypto_box_NONCEBYTES);\n const cipher = data.slice(sodium.crypto_box_NONCEBYTES);\n return sodium.crypto_box_open_easy(\n cipher,\n nonce,\n sodium.from_hex(publicKeyAlice),\n sodium.from_hex(privateKeyBob)\n );\n}\n\nexport function generateSecretBoxKey(): string {\n return sodium.randombytes_buf(sodium.crypto_secretbox_KEYBYTES, \"hex\");\n}\n\nexport function encryptSecretBox(data: Uint8Array, key: string): Uint8Array {\n const nonce = sodium.randombytes_buf(sodium.crypto_secretbox_NONCEBYTES);\n const crypt = sodium.crypto_secretbox_easy(data, nonce, sodium.from_hex(key));\n return concatenate(nonce, crypt);\n}\n\nexport function decryptSecretBox(data: Uint8Array, key: string): Uint8Array {\n if (\n data.length <\n sodium.crypto_secretbox_NONCEBYTES + sodium.crypto_secretbox_MACBYTES\n ) {\n throw \"data too short\";\n }\n const nonce = data.slice(0, sodium.crypto_secretbox_NONCEBYTES);\n const cipher = data.slice(sodium.crypto_secretbox_NONCEBYTES);\n return sodium.crypto_secretbox_open_easy(cipher, nonce, sodium.from_hex(key));\n}\n\nexport function encryptAnonymous(\n data: Uint8Array,\n receiverPublicKey: string\n): Uint8Array {\n return sodium.crypto_box_seal(data, sodium.from_hex(receiverPublicKey));\n}\n\nexport function decryptAnonymous(\n data: Uint8Array,\n { privateKey, publicKey }: KeyPair\n): Uint8Array {\n return sodium.crypto_box_seal_open(\n data,\n sodium.from_hex(publicKey),\n sodium.from_hex(privateKey)\n );\n}\n"]}
|
package/dist/crypto/index.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
interface KeyPair {
|
|
2
2
|
publicKey: string;
|
|
3
3
|
privateKey: string;
|
|
4
4
|
}
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
declare function encryptCryptoBox(data: Uint8Array, publicKeyBob: string, privateKeyAlice: string): Uint8Array;
|
|
6
|
+
declare function generateCryptoBoxKeyPair(): KeyPair;
|
|
7
|
+
declare function decryptCryptoBox(data: Uint8Array, publicKeyAlice: string, privateKeyBob: string): Uint8Array;
|
|
8
|
+
declare function generateSecretBoxKey(): string;
|
|
9
|
+
declare function encryptSecretBox(data: Uint8Array, key: string): Uint8Array;
|
|
10
|
+
declare function decryptSecretBox(data: Uint8Array, key: string): Uint8Array;
|
|
11
|
+
declare function encryptAnonymous(data: Uint8Array, receiverPublicKey: string): Uint8Array;
|
|
12
|
+
declare function decryptAnonymous(data: Uint8Array, { privateKey, publicKey }: KeyPair): Uint8Array;
|
|
13
|
+
|
|
14
|
+
export { KeyPair, decryptAnonymous, decryptCryptoBox, decryptSecretBox, encryptAnonymous, encryptCryptoBox, encryptSecretBox, generateCryptoBoxKeyPair, generateSecretBoxKey };
|
package/dist/crypto/index.js
CHANGED
|
@@ -1,47 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
export function encryptCryptoBox(data, publicKeyBob, privateKeyAlice) {
|
|
4
|
-
const nonce = sodium.randombytes_buf(sodium.crypto_box_NONCEBYTES);
|
|
5
|
-
const crypt = sodium.crypto_box_easy(data, nonce, sodium.from_hex(publicKeyBob), sodium.from_hex(privateKeyAlice));
|
|
6
|
-
return concatenate(nonce, crypt);
|
|
7
|
-
}
|
|
8
|
-
export function generateCryptoBoxKeyPair() {
|
|
9
|
-
return sodium.crypto_box_keypair("hex");
|
|
10
|
-
}
|
|
11
|
-
export function decryptCryptoBox(data, publicKeyAlice, privateKeyBob) {
|
|
12
|
-
if (data.length < sodium.crypto_box_NONCEBYTES + sodium.crypto_box_MACBYTES) {
|
|
13
|
-
throw "data too short";
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const nonce = data.slice(0, sodium.crypto_box_NONCEBYTES);
|
|
17
|
-
const cipher = data.slice(sodium.crypto_box_NONCEBYTES);
|
|
18
|
-
return sodium.crypto_box_open_easy(cipher, nonce, sodium.from_hex(publicKeyAlice), sodium.from_hex(privateKeyBob));
|
|
19
|
-
}
|
|
20
|
-
export function generateSecretBoxKey() {
|
|
21
|
-
return sodium.randombytes_buf(sodium.crypto_secretbox_KEYBYTES, "hex");
|
|
22
|
-
}
|
|
23
|
-
export function encryptSecretBox(data, key) {
|
|
24
|
-
const nonce = sodium.randombytes_buf(sodium.crypto_secretbox_NONCEBYTES);
|
|
25
|
-
const crypt = sodium.crypto_secretbox_easy(data, nonce, sodium.from_hex(key));
|
|
26
|
-
return concatenate(nonce, crypt);
|
|
27
|
-
}
|
|
28
|
-
export function decryptSecretBox(data, key) {
|
|
29
|
-
if (data.length < sodium.crypto_secretbox_NONCEBYTES + sodium.crypto_secretbox_MACBYTES) {
|
|
30
|
-
throw "data too short";
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const nonce = data.slice(0, sodium.crypto_secretbox_NONCEBYTES);
|
|
34
|
-
const cipher = data.slice(sodium.crypto_secretbox_NONCEBYTES);
|
|
35
|
-
return sodium.crypto_secretbox_open_easy(cipher, nonce, sodium.from_hex(key));
|
|
36
|
-
}
|
|
37
|
-
export function encryptAnonymous(data, receiverPublicKey) {
|
|
38
|
-
return sodium.crypto_box_seal(data, sodium.from_hex(receiverPublicKey));
|
|
39
|
-
}
|
|
40
|
-
export function decryptAnonymous(data, _ref) {
|
|
41
|
-
let {
|
|
42
|
-
privateKey,
|
|
43
|
-
publicKey
|
|
44
|
-
} = _ref;
|
|
45
|
-
return sodium.crypto_box_seal_open(data, sodium.from_hex(publicKey), sodium.from_hex(privateKey));
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb25jYXRlbmF0ZSIsInNvZGl1bSIsImVuY3J5cHRDcnlwdG9Cb3giLCJkYXRhIiwicHVibGljS2V5Qm9iIiwicHJpdmF0ZUtleUFsaWNlIiwibm9uY2UiLCJyYW5kb21ieXRlc19idWYiLCJjcnlwdG9fYm94X05PTkNFQllURVMiLCJjcnlwdCIsImNyeXB0b19ib3hfZWFzeSIsImZyb21faGV4IiwiZ2VuZXJhdGVDcnlwdG9Cb3hLZXlQYWlyIiwiY3J5cHRvX2JveF9rZXlwYWlyIiwiZGVjcnlwdENyeXB0b0JveCIsInB1YmxpY0tleUFsaWNlIiwicHJpdmF0ZUtleUJvYiIsImxlbmd0aCIsImNyeXB0b19ib3hfTUFDQllURVMiLCJzbGljZSIsImNpcGhlciIsImNyeXB0b19ib3hfb3Blbl9lYXN5IiwiZ2VuZXJhdGVTZWNyZXRCb3hLZXkiLCJjcnlwdG9fc2VjcmV0Ym94X0tFWUJZVEVTIiwiZW5jcnlwdFNlY3JldEJveCIsImtleSIsImNyeXB0b19zZWNyZXRib3hfTk9OQ0VCWVRFUyIsImNyeXB0b19zZWNyZXRib3hfZWFzeSIsImRlY3J5cHRTZWNyZXRCb3giLCJjcnlwdG9fc2VjcmV0Ym94X01BQ0JZVEVTIiwiY3J5cHRvX3NlY3JldGJveF9vcGVuX2Vhc3kiLCJlbmNyeXB0QW5vbnltb3VzIiwicmVjZWl2ZXJQdWJsaWNLZXkiLCJjcnlwdG9fYm94X3NlYWwiLCJkZWNyeXB0QW5vbnltb3VzIiwicHJpdmF0ZUtleSIsInB1YmxpY0tleSIsImNyeXB0b19ib3hfc2VhbF9vcGVuIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NyeXB0by9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25jYXRlbmF0ZSB9IGZyb20gXCIuLi91dGlscy91dGlscy5qc1wiO1xuaW1wb3J0IHsgc29kaXVtIH0gZnJvbSBcIi4uL3NvZGl1bS5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleVBhaXIge1xuICBwdWJsaWNLZXk6IHN0cmluZztcbiAgcHJpdmF0ZUtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jcnlwdENyeXB0b0JveChcbiAgZGF0YTogVWludDhBcnJheSxcbiAgcHVibGljS2V5Qm9iOiBzdHJpbmcsXG4gIHByaXZhdGVLZXlBbGljZTogc3RyaW5nXG4pOiBVaW50OEFycmF5IHtcbiAgY29uc3Qgbm9uY2UgPSBzb2RpdW0ucmFuZG9tYnl0ZXNfYnVmKHNvZGl1bS5jcnlwdG9fYm94X05PTkNFQllURVMpO1xuICBjb25zdCBjcnlwdCA9IHNvZGl1bS5jcnlwdG9fYm94X2Vhc3koXG4gICAgZGF0YSxcbiAgICBub25jZSxcbiAgICBzb2RpdW0uZnJvbV9oZXgocHVibGljS2V5Qm9iKSxcbiAgICBzb2RpdW0uZnJvbV9oZXgocHJpdmF0ZUtleUFsaWNlKVxuICApO1xuICByZXR1cm4gY29uY2F0ZW5hdGUobm9uY2UsIGNyeXB0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQ3J5cHRvQm94S2V5UGFpcigpOiBLZXlQYWlyIHtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fYm94X2tleXBhaXIoXCJoZXhcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNyeXB0Q3J5cHRvQm94KFxuICBkYXRhOiBVaW50OEFycmF5LFxuICBwdWJsaWNLZXlBbGljZTogc3RyaW5nLFxuICBwcml2YXRlS2V5Qm9iOiBzdHJpbmdcbik6IFVpbnQ4QXJyYXkge1xuICBpZiAoZGF0YS5sZW5ndGggPCBzb2RpdW0uY3J5cHRvX2JveF9OT05DRUJZVEVTICsgc29kaXVtLmNyeXB0b19ib3hfTUFDQllURVMpIHtcbiAgICB0aHJvdyBcImRhdGEgdG9vIHNob3J0XCI7XG4gIH1cbiAgY29uc3Qgbm9uY2UgPSBkYXRhLnNsaWNlKDAsIHNvZGl1bS5jcnlwdG9fYm94X05PTkNFQllURVMpO1xuICBjb25zdCBjaXBoZXIgPSBkYXRhLnNsaWNlKHNvZGl1bS5jcnlwdG9fYm94X05PTkNFQllURVMpO1xuICByZXR1cm4gc29kaXVtLmNyeXB0b19ib3hfb3Blbl9lYXN5KFxuICAgIGNpcGhlcixcbiAgICBub25jZSxcbiAgICBzb2RpdW0uZnJvbV9oZXgocHVibGljS2V5QWxpY2UpLFxuICAgIHNvZGl1bS5mcm9tX2hleChwcml2YXRlS2V5Qm9iKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVTZWNyZXRCb3hLZXkoKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNvZGl1bS5yYW5kb21ieXRlc19idWYoc29kaXVtLmNyeXB0b19zZWNyZXRib3hfS0VZQllURVMsIFwiaGV4XCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jcnlwdFNlY3JldEJveChkYXRhOiBVaW50OEFycmF5LCBrZXk6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCBub25jZSA9IHNvZGl1bS5yYW5kb21ieXRlc19idWYoc29kaXVtLmNyeXB0b19zZWNyZXRib3hfTk9OQ0VCWVRFUyk7XG4gIGNvbnN0IGNyeXB0ID0gc29kaXVtLmNyeXB0b19zZWNyZXRib3hfZWFzeShkYXRhLCBub25jZSwgc29kaXVtLmZyb21faGV4KGtleSkpO1xuICByZXR1cm4gY29uY2F0ZW5hdGUobm9uY2UsIGNyeXB0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY3J5cHRTZWNyZXRCb3goZGF0YTogVWludDhBcnJheSwga2V5OiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgaWYgKFxuICAgIGRhdGEubGVuZ3RoIDxcbiAgICBzb2RpdW0uY3J5cHRvX3NlY3JldGJveF9OT05DRUJZVEVTICsgc29kaXVtLmNyeXB0b19zZWNyZXRib3hfTUFDQllURVNcbiAgKSB7XG4gICAgdGhyb3cgXCJkYXRhIHRvbyBzaG9ydFwiO1xuICB9XG4gIGNvbnN0IG5vbmNlID0gZGF0YS5zbGljZSgwLCBzb2RpdW0uY3J5cHRvX3NlY3JldGJveF9OT05DRUJZVEVTKTtcbiAgY29uc3QgY2lwaGVyID0gZGF0YS5zbGljZShzb2RpdW0uY3J5cHRvX3NlY3JldGJveF9OT05DRUJZVEVTKTtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fc2VjcmV0Ym94X29wZW5fZWFzeShjaXBoZXIsIG5vbmNlLCBzb2RpdW0uZnJvbV9oZXgoa2V5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNyeXB0QW5vbnltb3VzKFxuICBkYXRhOiBVaW50OEFycmF5LFxuICByZWNlaXZlclB1YmxpY0tleTogc3RyaW5nXG4pOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fYm94X3NlYWwoZGF0YSwgc29kaXVtLmZyb21faGV4KHJlY2VpdmVyUHVibGljS2V5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNyeXB0QW5vbnltb3VzKFxuICBkYXRhOiBVaW50OEFycmF5LFxuICB7IHByaXZhdGVLZXksIHB1YmxpY0tleSB9OiBLZXlQYWlyXG4pOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fYm94X3NlYWxfb3BlbihcbiAgICBkYXRhLFxuICAgIHNvZGl1bS5mcm9tX2hleChwdWJsaWNLZXkpLFxuICAgIHNvZGl1bS5mcm9tX2hleChwcml2YXRlS2V5KVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxXQUFULFFBQTRCLG1CQUE1QjtBQUNBLFNBQVNDLE1BQVQsUUFBdUIsY0FBdkI7QUFPQSxPQUFPLFNBQVNDLGdCQUFULENBQ0xDLElBREssRUFFTEMsWUFGSyxFQUdMQyxlQUhLLEVBSU87RUFDWixNQUFNQyxLQUFLLEdBQUdMLE1BQU0sQ0FBQ00sZUFBUCxDQUF1Qk4sTUFBTSxDQUFDTyxxQkFBOUIsQ0FBZDtFQUNBLE1BQU1DLEtBQUssR0FBR1IsTUFBTSxDQUFDUyxlQUFQLENBQ1pQLElBRFksRUFFWkcsS0FGWSxFQUdaTCxNQUFNLENBQUNVLFFBQVAsQ0FBZ0JQLFlBQWhCLENBSFksRUFJWkgsTUFBTSxDQUFDVSxRQUFQLENBQWdCTixlQUFoQixDQUpZLENBQWQ7RUFNQSxPQUFPTCxXQUFXLENBQUNNLEtBQUQsRUFBUUcsS0FBUixDQUFsQjtBQUNEO0FB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
|
|
1
|
+
import"../chunk-KMTF2BZE.js";import{concatenate as y}from"../utils/utils.js";import{sodium as r}from"../sodium.js";function p(t,o,e){const n=r.randombytes_buf(r.crypto_box_NONCEBYTES),c=r.crypto_box_easy(t,n,r.from_hex(o),r.from_hex(e));return y(n,c)}function s(){return r.crypto_box_keypair("hex")}function x(t,o,e){if(t.length<r.crypto_box_NONCEBYTES+r.crypto_box_MACBYTES)throw"data too short";const n=t.slice(0,r.crypto_box_NONCEBYTES),c=t.slice(r.crypto_box_NONCEBYTES);return r.crypto_box_open_easy(c,n,r.from_hex(o),r.from_hex(e))}function a(){return r.randombytes_buf(r.crypto_secretbox_KEYBYTES,"hex")}function b(t,o){const e=r.randombytes_buf(r.crypto_secretbox_NONCEBYTES),n=r.crypto_secretbox_easy(t,e,r.from_hex(o));return y(e,n)}function f(t,o){if(t.length<r.crypto_secretbox_NONCEBYTES+r.crypto_secretbox_MACBYTES)throw"data too short";const e=t.slice(0,r.crypto_secretbox_NONCEBYTES),n=t.slice(r.crypto_secretbox_NONCEBYTES);return r.crypto_secretbox_open_easy(n,e,r.from_hex(o))}function u(t,o){return r.crypto_box_seal(t,r.from_hex(o))}function E(t,{privateKey:o,publicKey:e}){return r.crypto_box_seal_open(t,r.from_hex(e),r.from_hex(o))}export{E as decryptAnonymous,x as decryptCryptoBox,f as decryptSecretBox,u as encryptAnonymous,p as encryptCryptoBox,b as encryptSecretBox,s as generateCryptoBoxKeyPair,a as generateSecretBoxKey};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/crypto/index.ts"],"sourcesContent":["import { concatenate } from \"../utils/utils.js\";\nimport { sodium } from \"../sodium.js\";\n\nexport interface KeyPair {\n publicKey: string;\n privateKey: string;\n}\n\nexport function encryptCryptoBox(\n data: Uint8Array,\n publicKeyBob: string,\n privateKeyAlice: string\n): Uint8Array {\n const nonce = sodium.randombytes_buf(sodium.crypto_box_NONCEBYTES);\n const crypt = sodium.crypto_box_easy(\n data,\n nonce,\n sodium.from_hex(publicKeyBob),\n sodium.from_hex(privateKeyAlice)\n );\n return concatenate(nonce, crypt);\n}\n\nexport function generateCryptoBoxKeyPair(): KeyPair {\n return sodium.crypto_box_keypair(\"hex\");\n}\n\nexport function decryptCryptoBox(\n data: Uint8Array,\n publicKeyAlice: string,\n privateKeyBob: string\n): Uint8Array {\n if (data.length < sodium.crypto_box_NONCEBYTES + sodium.crypto_box_MACBYTES) {\n throw \"data too short\";\n }\n const nonce = data.slice(0, sodium.crypto_box_NONCEBYTES);\n const cipher = data.slice(sodium.crypto_box_NONCEBYTES);\n return sodium.crypto_box_open_easy(\n cipher,\n nonce,\n sodium.from_hex(publicKeyAlice),\n sodium.from_hex(privateKeyBob)\n );\n}\n\nexport function generateSecretBoxKey(): string {\n return sodium.randombytes_buf(sodium.crypto_secretbox_KEYBYTES, \"hex\");\n}\n\nexport function encryptSecretBox(data: Uint8Array, key: string): Uint8Array {\n const nonce = sodium.randombytes_buf(sodium.crypto_secretbox_NONCEBYTES);\n const crypt = sodium.crypto_secretbox_easy(data, nonce, sodium.from_hex(key));\n return concatenate(nonce, crypt);\n}\n\nexport function decryptSecretBox(data: Uint8Array, key: string): Uint8Array {\n if (\n data.length <\n sodium.crypto_secretbox_NONCEBYTES + sodium.crypto_secretbox_MACBYTES\n ) {\n throw \"data too short\";\n }\n const nonce = data.slice(0, sodium.crypto_secretbox_NONCEBYTES);\n const cipher = data.slice(sodium.crypto_secretbox_NONCEBYTES);\n return sodium.crypto_secretbox_open_easy(cipher, nonce, sodium.from_hex(key));\n}\n\nexport function encryptAnonymous(\n data: Uint8Array,\n receiverPublicKey: string\n): Uint8Array {\n return sodium.crypto_box_seal(data, sodium.from_hex(receiverPublicKey));\n}\n\nexport function decryptAnonymous(\n data: Uint8Array,\n { privateKey, publicKey }: KeyPair\n): Uint8Array {\n return sodium.crypto_box_seal_open(\n data,\n sodium.from_hex(publicKey),\n sodium.from_hex(privateKey)\n );\n}\n"],"mappings":"6BAAA,OAAS,eAAAA,MAAmB,oBAC5B,OAAS,UAAAC,MAAc,eAOhB,SAASC,EACdC,EACAC,EACAC,EACY,CACZ,MAAMC,EAAQL,EAAO,gBAAgBA,EAAO,qBAAqB,EAC3DM,EAAQN,EAAO,gBACnBE,EACAG,EACAL,EAAO,SAASG,CAAY,EAC5BH,EAAO,SAASI,CAAe,CACjC,EACA,OAAOL,EAAYM,EAAOC,CAAK,CACjC,CAEO,SAASC,GAAoC,CAClD,OAAOP,EAAO,mBAAmB,KAAK,CACxC,CAEO,SAASQ,EACdN,EACAO,EACAC,EACY,CACZ,GAAIR,EAAK,OAASF,EAAO,sBAAwBA,EAAO,oBACtD,KAAM,iBAER,MAAMK,EAAQH,EAAK,MAAM,EAAGF,EAAO,qBAAqB,EAClDW,EAAST,EAAK,MAAMF,EAAO,qBAAqB,EACtD,OAAOA,EAAO,qBACZW,EACAN,EACAL,EAAO,SAASS,CAAc,EAC9BT,EAAO,SAASU,CAAa,CAC/B,CACF,CAEO,SAASE,GAA+B,CAC7C,OAAOZ,EAAO,gBAAgBA,EAAO,0BAA2B,KAAK,CACvE,CAEO,SAASa,EAAiBX,EAAkBY,EAAyB,CAC1E,MAAMT,EAAQL,EAAO,gBAAgBA,EAAO,2BAA2B,EACjEM,EAAQN,EAAO,sBAAsBE,EAAMG,EAAOL,EAAO,SAASc,CAAG,CAAC,EAC5E,OAAOf,EAAYM,EAAOC,CAAK,CACjC,CAEO,SAASS,EAAiBb,EAAkBY,EAAyB,CAC1E,GACEZ,EAAK,OACLF,EAAO,4BAA8BA,EAAO,0BAE5C,KAAM,iBAER,MAAMK,EAAQH,EAAK,MAAM,EAAGF,EAAO,2BAA2B,EACxDW,EAAST,EAAK,MAAMF,EAAO,2BAA2B,EAC5D,OAAOA,EAAO,2BAA2BW,EAAQN,EAAOL,EAAO,SAASc,CAAG,CAAC,CAC9E,CAEO,SAASE,EACdd,EACAe,EACY,CACZ,OAAOjB,EAAO,gBAAgBE,EAAMF,EAAO,SAASiB,CAAiB,CAAC,CACxE,CAEO,SAASC,EACdhB,EACA,CAAE,WAAAiB,EAAY,UAAAC,CAAU,EACZ,CACZ,OAAOpB,EAAO,qBACZE,EACAF,EAAO,SAASoB,CAAS,EACzBpB,EAAO,SAASmB,CAAU,CAC5B,CACF","names":["concatenate","sodium","encryptCryptoBox","data","publicKeyBob","privateKeyAlice","nonce","crypt","generateCryptoBoxKeyPair","decryptCryptoBox","publicKeyAlice","privateKeyBob","cipher","generateSecretBoxKey","encryptSecretBox","key","decryptSecretBox","encryptAnonymous","receiverPublicKey","decryptAnonymous","privateKey","publicKey"]}
|
package/dist/error.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";//# sourceMappingURL=error.cjs.map
|