@capgo/capacitor-updater 8.0.0 → 8.1.0
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/CapgoCapacitorUpdater.podspec +7 -5
- package/Package.swift +37 -0
- package/README.md +1461 -231
- package/android/build.gradle +29 -12
- package/android/proguard-rules.pro +45 -0
- package/android/src/main/AndroidManifest.xml +0 -1
- package/android/src/main/java/ee/forgr/capacitor_updater/BundleInfo.java +223 -195
- package/android/src/main/java/ee/forgr/capacitor_updater/BundleStatus.java +23 -23
- package/android/src/main/java/ee/forgr/capacitor_updater/Callback.java +13 -0
- package/android/src/main/java/ee/forgr/capacitor_updater/CapacitorUpdaterPlugin.java +2159 -1234
- package/android/src/main/java/ee/forgr/capacitor_updater/CapgoUpdater.java +1507 -0
- package/android/src/main/java/ee/forgr/capacitor_updater/CryptoCipher.java +330 -121
- package/android/src/main/java/ee/forgr/capacitor_updater/DataManager.java +28 -0
- package/android/src/main/java/ee/forgr/capacitor_updater/DelayCondition.java +43 -49
- package/android/src/main/java/ee/forgr/capacitor_updater/DelayUntilNext.java +4 -4
- package/android/src/main/java/ee/forgr/capacitor_updater/DelayUpdateUtils.java +260 -0
- package/android/src/main/java/ee/forgr/capacitor_updater/DeviceIdHelper.java +221 -0
- package/android/src/main/java/ee/forgr/capacitor_updater/DownloadService.java +808 -117
- package/android/src/main/java/ee/forgr/capacitor_updater/DownloadWorkerManager.java +156 -0
- package/android/src/main/java/ee/forgr/capacitor_updater/InternalUtils.java +32 -0
- package/android/src/main/java/ee/forgr/capacitor_updater/Logger.java +338 -0
- package/android/src/main/java/ee/forgr/capacitor_updater/ShakeDetector.java +72 -0
- package/android/src/main/java/ee/forgr/capacitor_updater/ShakeMenu.java +169 -0
- package/dist/docs.json +2187 -625
- package/dist/esm/definitions.d.ts +1286 -249
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/history.d.ts +1 -0
- package/dist/esm/history.js +283 -0
- package/dist/esm/history.js.map +1 -0
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +5 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/web.d.ts +36 -41
- package/dist/esm/web.js +94 -35
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +376 -35
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +376 -35
- package/dist/plugin.js.map +1 -1
- package/ios/Sources/CapacitorUpdaterPlugin/AES.swift +69 -0
- package/ios/Sources/CapacitorUpdaterPlugin/BigInt.swift +55 -0
- package/ios/{Plugin → Sources/CapacitorUpdaterPlugin}/BundleInfo.swift +37 -10
- package/ios/{Plugin → Sources/CapacitorUpdaterPlugin}/BundleStatus.swift +1 -1
- package/ios/Sources/CapacitorUpdaterPlugin/CapacitorUpdaterPlugin.swift +1605 -0
- package/ios/Sources/CapacitorUpdaterPlugin/CapgoUpdater.swift +1526 -0
- package/ios/Sources/CapacitorUpdaterPlugin/CryptoCipher.swift +267 -0
- package/ios/Sources/CapacitorUpdaterPlugin/DelayUpdateUtils.swift +220 -0
- package/ios/Sources/CapacitorUpdaterPlugin/DeviceIdHelper.swift +120 -0
- package/ios/Sources/CapacitorUpdaterPlugin/InternalUtils.swift +311 -0
- package/ios/Sources/CapacitorUpdaterPlugin/Logger.swift +310 -0
- package/ios/Sources/CapacitorUpdaterPlugin/RSA.swift +274 -0
- package/ios/Sources/CapacitorUpdaterPlugin/ShakeMenu.swift +112 -0
- package/ios/{Plugin → Sources/CapacitorUpdaterPlugin}/UserDefaultsExtension.swift +0 -2
- package/package.json +41 -35
- package/android/src/main/java/ee/forgr/capacitor_updater/CapacitorUpdater.java +0 -1130
- package/ios/Plugin/CapacitorUpdater.swift +0 -858
- package/ios/Plugin/CapacitorUpdaterPlugin.h +0 -10
- package/ios/Plugin/CapacitorUpdaterPlugin.m +0 -27
- package/ios/Plugin/CapacitorUpdaterPlugin.swift +0 -675
- package/ios/Plugin/CryptoCipher.swift +0 -240
- /package/{LICENCE → LICENSE} +0 -0
- /package/ios/{Plugin → Sources/CapacitorUpdaterPlugin}/DelayCondition.swift +0 -0
- /package/ios/{Plugin → Sources/CapacitorUpdaterPlugin}/DelayUntilNext.swift +0 -0
- /package/ios/{Plugin → Sources/CapacitorUpdaterPlugin}/Info.plist +0 -0
package/dist/plugin.js
CHANGED
|
@@ -1,12 +1,294 @@
|
|
|
1
1
|
var capacitorCapacitorUpdater = (function (exports, core) {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
+
/*
|
|
5
|
+
* Maintains navigation history across Capgo-controlled reloads when keepUrlPathAfterReload is enabled.
|
|
6
|
+
*/
|
|
7
|
+
const KEEP_FLAG_KEY = '__capgo_keep_url_path_after_reload';
|
|
8
|
+
const HISTORY_STORAGE_KEY = '__capgo_history_stack__';
|
|
9
|
+
const MAX_STACK_ENTRIES = 100;
|
|
10
|
+
const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof history !== 'undefined';
|
|
11
|
+
if (isBrowser) {
|
|
12
|
+
const win = window;
|
|
13
|
+
if (!win.__capgoHistoryPatched) {
|
|
14
|
+
win.__capgoHistoryPatched = true;
|
|
15
|
+
const isFeatureConfigured = () => {
|
|
16
|
+
try {
|
|
17
|
+
if (win.__capgoKeepUrlPathAfterReload) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
// ignore access issues
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
return window.localStorage.getItem(KEEP_FLAG_KEY) === '1';
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const readStored = () => {
|
|
32
|
+
try {
|
|
33
|
+
const raw = window.sessionStorage.getItem(HISTORY_STORAGE_KEY);
|
|
34
|
+
if (!raw) {
|
|
35
|
+
return { stack: [], index: -1 };
|
|
36
|
+
}
|
|
37
|
+
const parsed = JSON.parse(raw);
|
|
38
|
+
if (!parsed || !Array.isArray(parsed.stack) || typeof parsed.index !== 'number') {
|
|
39
|
+
return { stack: [], index: -1 };
|
|
40
|
+
}
|
|
41
|
+
return parsed;
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
return { stack: [], index: -1 };
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const writeStored = (stack, index) => {
|
|
48
|
+
try {
|
|
49
|
+
window.sessionStorage.setItem(HISTORY_STORAGE_KEY, JSON.stringify({ stack, index }));
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
// Storage might be unavailable; fail silently.
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
const clearStored = () => {
|
|
56
|
+
try {
|
|
57
|
+
window.sessionStorage.removeItem(HISTORY_STORAGE_KEY);
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
// ignore
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const normalize = (url) => {
|
|
64
|
+
try {
|
|
65
|
+
const base = url !== null && url !== void 0 ? url : window.location.href;
|
|
66
|
+
const parsed = new URL(base instanceof URL ? base.toString() : base, window.location.href);
|
|
67
|
+
return `${parsed.pathname}${parsed.search}${parsed.hash}`;
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
const trimStack = (stack, index) => {
|
|
74
|
+
if (stack.length <= MAX_STACK_ENTRIES) {
|
|
75
|
+
return { stack, index };
|
|
76
|
+
}
|
|
77
|
+
const start = stack.length - MAX_STACK_ENTRIES;
|
|
78
|
+
const trimmed = stack.slice(start);
|
|
79
|
+
const adjustedIndex = Math.max(0, index - start);
|
|
80
|
+
return { stack: trimmed, index: adjustedIndex };
|
|
81
|
+
};
|
|
82
|
+
const runWhenReady = (fn) => {
|
|
83
|
+
if (document.readyState === 'complete' || document.readyState === 'interactive') {
|
|
84
|
+
fn();
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
window.addEventListener('DOMContentLoaded', fn, { once: true });
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
let featureActive = false;
|
|
91
|
+
let isRestoring = false;
|
|
92
|
+
let restoreScheduled = false;
|
|
93
|
+
const ensureCurrentTracked = () => {
|
|
94
|
+
if (!featureActive) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const stored = readStored();
|
|
98
|
+
const current = normalize();
|
|
99
|
+
if (!current) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (stored.stack.length === 0) {
|
|
103
|
+
stored.stack.push(current);
|
|
104
|
+
stored.index = 0;
|
|
105
|
+
writeStored(stored.stack, stored.index);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (stored.index < 0 || stored.index >= stored.stack.length) {
|
|
109
|
+
stored.index = stored.stack.length - 1;
|
|
110
|
+
}
|
|
111
|
+
if (stored.stack[stored.index] !== current) {
|
|
112
|
+
stored.stack[stored.index] = current;
|
|
113
|
+
writeStored(stored.stack, stored.index);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
const record = (url, replace) => {
|
|
117
|
+
if (!featureActive || isRestoring) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const normalized = normalize(url);
|
|
121
|
+
if (!normalized) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
let { stack, index } = readStored();
|
|
125
|
+
if (stack.length === 0) {
|
|
126
|
+
stack.push(normalized);
|
|
127
|
+
index = stack.length - 1;
|
|
128
|
+
}
|
|
129
|
+
else if (replace) {
|
|
130
|
+
if (index < 0 || index >= stack.length) {
|
|
131
|
+
index = stack.length - 1;
|
|
132
|
+
}
|
|
133
|
+
stack[index] = normalized;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
if (index >= stack.length - 1) {
|
|
137
|
+
stack.push(normalized);
|
|
138
|
+
index = stack.length - 1;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
stack = stack.slice(0, index + 1);
|
|
142
|
+
stack.push(normalized);
|
|
143
|
+
index = stack.length - 1;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
({ stack, index } = trimStack(stack, index));
|
|
147
|
+
writeStored(stack, index);
|
|
148
|
+
};
|
|
149
|
+
const restoreHistory = () => {
|
|
150
|
+
if (!featureActive || isRestoring) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
const stored = readStored();
|
|
154
|
+
if (stored.stack.length === 0) {
|
|
155
|
+
ensureCurrentTracked();
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const targetIndex = stored.index >= 0 && stored.index < stored.stack.length ? stored.index : stored.stack.length - 1;
|
|
159
|
+
const normalizedCurrent = normalize();
|
|
160
|
+
if (stored.stack.length === 1 && normalizedCurrent === stored.stack[0]) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const firstEntry = stored.stack[0];
|
|
164
|
+
if (!firstEntry) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
isRestoring = true;
|
|
168
|
+
try {
|
|
169
|
+
history.replaceState(history.state, document.title, firstEntry);
|
|
170
|
+
for (let i = 1; i < stored.stack.length; i += 1) {
|
|
171
|
+
history.pushState(history.state, document.title, stored.stack[i]);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
isRestoring = false;
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
isRestoring = false;
|
|
179
|
+
const currentIndex = stored.stack.length - 1;
|
|
180
|
+
const offset = targetIndex - currentIndex;
|
|
181
|
+
if (offset !== 0) {
|
|
182
|
+
history.go(offset);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
history.replaceState(history.state, document.title, stored.stack[targetIndex]);
|
|
186
|
+
window.dispatchEvent(new PopStateEvent('popstate'));
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
const scheduleRestore = () => {
|
|
190
|
+
if (!featureActive || restoreScheduled) {
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
restoreScheduled = true;
|
|
194
|
+
runWhenReady(() => {
|
|
195
|
+
restoreScheduled = false;
|
|
196
|
+
restoreHistory();
|
|
197
|
+
});
|
|
198
|
+
};
|
|
199
|
+
let originalPushState = null;
|
|
200
|
+
let originalReplaceState = null;
|
|
201
|
+
const popstateHandler = () => {
|
|
202
|
+
if (!featureActive || isRestoring) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
const normalized = normalize();
|
|
206
|
+
if (!normalized) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
const stored = readStored();
|
|
210
|
+
const idx = stored.stack.lastIndexOf(normalized);
|
|
211
|
+
if (idx >= 0) {
|
|
212
|
+
stored.index = idx;
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
stored.stack.push(normalized);
|
|
216
|
+
stored.index = stored.stack.length - 1;
|
|
217
|
+
}
|
|
218
|
+
const trimmed = trimStack(stored.stack, stored.index);
|
|
219
|
+
writeStored(trimmed.stack, trimmed.index);
|
|
220
|
+
};
|
|
221
|
+
const patchHistory = () => {
|
|
222
|
+
if (originalPushState && originalReplaceState) {
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
originalPushState = history.pushState;
|
|
226
|
+
originalReplaceState = history.replaceState;
|
|
227
|
+
history.pushState = function pushStatePatched(state, title, url) {
|
|
228
|
+
const result = originalPushState.call(history, state, title, url);
|
|
229
|
+
record(url, false);
|
|
230
|
+
return result;
|
|
231
|
+
};
|
|
232
|
+
history.replaceState = function replaceStatePatched(state, title, url) {
|
|
233
|
+
const result = originalReplaceState.call(history, state, title, url);
|
|
234
|
+
record(url, true);
|
|
235
|
+
return result;
|
|
236
|
+
};
|
|
237
|
+
window.addEventListener('popstate', popstateHandler);
|
|
238
|
+
};
|
|
239
|
+
const unpatchHistory = () => {
|
|
240
|
+
if (originalPushState) {
|
|
241
|
+
history.pushState = originalPushState;
|
|
242
|
+
originalPushState = null;
|
|
243
|
+
}
|
|
244
|
+
if (originalReplaceState) {
|
|
245
|
+
history.replaceState = originalReplaceState;
|
|
246
|
+
originalReplaceState = null;
|
|
247
|
+
}
|
|
248
|
+
window.removeEventListener('popstate', popstateHandler);
|
|
249
|
+
};
|
|
250
|
+
const setFeatureActive = (enabled) => {
|
|
251
|
+
if (featureActive === enabled) {
|
|
252
|
+
if (featureActive) {
|
|
253
|
+
ensureCurrentTracked();
|
|
254
|
+
scheduleRestore();
|
|
255
|
+
}
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
featureActive = enabled;
|
|
259
|
+
if (featureActive) {
|
|
260
|
+
patchHistory();
|
|
261
|
+
ensureCurrentTracked();
|
|
262
|
+
scheduleRestore();
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
unpatchHistory();
|
|
266
|
+
clearStored();
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
window.addEventListener('CapacitorUpdaterKeepUrlPathAfterReload', (event) => {
|
|
270
|
+
var _a;
|
|
271
|
+
const evt = event;
|
|
272
|
+
const enabled = (_a = evt === null || evt === void 0 ? void 0 : evt.detail) === null || _a === void 0 ? void 0 : _a.enabled;
|
|
273
|
+
if (typeof enabled === 'boolean') {
|
|
274
|
+
win.__capgoKeepUrlPathAfterReload = enabled;
|
|
275
|
+
setFeatureActive(enabled);
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
win.__capgoKeepUrlPathAfterReload = true;
|
|
279
|
+
setFeatureActive(true);
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
setFeatureActive(isFeatureConfigured());
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
4
286
|
/*
|
|
5
287
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
6
288
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
7
289
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
8
290
|
*/
|
|
9
|
-
const CapacitorUpdater = core.registerPlugin(
|
|
291
|
+
const CapacitorUpdater = core.registerPlugin('CapacitorUpdater', {
|
|
10
292
|
web: () => Promise.resolve().then(function () { return web; }).then((m) => new m.CapacitorUpdaterWeb()),
|
|
11
293
|
});
|
|
12
294
|
|
|
@@ -16,94 +298,153 @@ var capacitorCapacitorUpdater = (function (exports, core) {
|
|
|
16
298
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
17
299
|
*/
|
|
18
300
|
const BUNDLE_BUILTIN = {
|
|
19
|
-
status:
|
|
20
|
-
version:
|
|
21
|
-
downloaded:
|
|
22
|
-
id:
|
|
23
|
-
checksum:
|
|
301
|
+
status: 'success',
|
|
302
|
+
version: '',
|
|
303
|
+
downloaded: '1970-01-01T00:00:00.000Z',
|
|
304
|
+
id: 'builtin',
|
|
305
|
+
checksum: '',
|
|
24
306
|
};
|
|
25
307
|
class CapacitorUpdaterWeb extends core.WebPlugin {
|
|
308
|
+
async setStatsUrl(options) {
|
|
309
|
+
console.warn('Cannot setStatsUrl in web', options);
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
async setUpdateUrl(options) {
|
|
313
|
+
console.warn('Cannot setUpdateUrl in web', options);
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
async setChannelUrl(options) {
|
|
317
|
+
console.warn('Cannot setChannelUrl in web', options);
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
26
320
|
async download(options) {
|
|
27
|
-
console.warn(
|
|
321
|
+
console.warn('Cannot download version in web', options);
|
|
28
322
|
return BUNDLE_BUILTIN;
|
|
29
323
|
}
|
|
30
324
|
async next(options) {
|
|
31
|
-
console.warn(
|
|
325
|
+
console.warn('Cannot set next version in web', options);
|
|
32
326
|
return BUNDLE_BUILTIN;
|
|
33
327
|
}
|
|
34
328
|
async isAutoUpdateEnabled() {
|
|
35
|
-
console.warn(
|
|
329
|
+
console.warn('Cannot get isAutoUpdateEnabled in web');
|
|
36
330
|
return { enabled: false };
|
|
37
331
|
}
|
|
38
332
|
async set(options) {
|
|
39
|
-
console.warn(
|
|
333
|
+
console.warn('Cannot set active bundle in web', options);
|
|
40
334
|
return;
|
|
41
335
|
}
|
|
42
336
|
async getDeviceId() {
|
|
43
|
-
console.warn(
|
|
44
|
-
return { deviceId:
|
|
337
|
+
console.warn('Cannot get ID in web');
|
|
338
|
+
return { deviceId: 'default' };
|
|
339
|
+
}
|
|
340
|
+
async getBuiltinVersion() {
|
|
341
|
+
console.warn('Cannot get version in web');
|
|
342
|
+
return { version: 'default' };
|
|
45
343
|
}
|
|
46
344
|
async getPluginVersion() {
|
|
47
|
-
console.warn(
|
|
48
|
-
return { version:
|
|
345
|
+
console.warn('Cannot get plugin version in web');
|
|
346
|
+
return { version: 'default' };
|
|
49
347
|
}
|
|
50
348
|
async delete(options) {
|
|
51
|
-
console.warn(
|
|
349
|
+
console.warn('Cannot delete bundle in web', options);
|
|
350
|
+
}
|
|
351
|
+
async setBundleError(options) {
|
|
352
|
+
console.warn('Cannot setBundleError in web', options);
|
|
353
|
+
return BUNDLE_BUILTIN;
|
|
52
354
|
}
|
|
53
355
|
async list() {
|
|
54
|
-
console.warn(
|
|
356
|
+
console.warn('Cannot list bundles in web');
|
|
55
357
|
return { bundles: [] };
|
|
56
358
|
}
|
|
57
359
|
async reset(options) {
|
|
58
|
-
console.warn(
|
|
360
|
+
console.warn('Cannot reset version in web', options);
|
|
59
361
|
}
|
|
60
362
|
async current() {
|
|
61
|
-
console.warn(
|
|
62
|
-
return { bundle: BUNDLE_BUILTIN, native:
|
|
363
|
+
console.warn('Cannot get current bundle in web');
|
|
364
|
+
return { bundle: BUNDLE_BUILTIN, native: '0.0.0' };
|
|
63
365
|
}
|
|
64
366
|
async reload() {
|
|
65
|
-
console.warn(
|
|
367
|
+
console.warn('Cannot reload current bundle in web');
|
|
66
368
|
return;
|
|
67
369
|
}
|
|
68
370
|
async getLatest() {
|
|
69
|
-
console.warn(
|
|
371
|
+
console.warn('Cannot getLatest current bundle in web');
|
|
70
372
|
return {
|
|
71
|
-
version:
|
|
72
|
-
message:
|
|
373
|
+
version: '0.0.0',
|
|
374
|
+
message: 'Cannot getLatest current bundle in web',
|
|
73
375
|
};
|
|
74
376
|
}
|
|
75
377
|
async setChannel(options) {
|
|
76
|
-
console.warn(
|
|
378
|
+
console.warn('Cannot setChannel in web', options);
|
|
77
379
|
return {
|
|
78
|
-
status:
|
|
79
|
-
error:
|
|
380
|
+
status: 'error',
|
|
381
|
+
error: 'Cannot setChannel in web',
|
|
80
382
|
};
|
|
81
383
|
}
|
|
384
|
+
async unsetChannel(options) {
|
|
385
|
+
console.warn('Cannot unsetChannel in web', options);
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
82
388
|
async setCustomId(options) {
|
|
83
|
-
console.warn(
|
|
389
|
+
console.warn('Cannot setCustomId in web', options);
|
|
84
390
|
return;
|
|
85
391
|
}
|
|
86
392
|
async getChannel() {
|
|
87
|
-
console.warn(
|
|
393
|
+
console.warn('Cannot getChannel in web');
|
|
88
394
|
return {
|
|
89
|
-
status:
|
|
90
|
-
error:
|
|
395
|
+
status: 'error',
|
|
396
|
+
error: 'Cannot getChannel in web',
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
async listChannels() {
|
|
400
|
+
console.warn('Cannot listChannels in web');
|
|
401
|
+
throw {
|
|
402
|
+
message: 'Cannot listChannels in web',
|
|
403
|
+
error: 'platform_not_supported',
|
|
91
404
|
};
|
|
92
405
|
}
|
|
93
406
|
async notifyAppReady() {
|
|
94
|
-
|
|
95
|
-
return BUNDLE_BUILTIN;
|
|
407
|
+
return { bundle: BUNDLE_BUILTIN };
|
|
96
408
|
}
|
|
97
409
|
async setMultiDelay(options) {
|
|
98
|
-
console.warn(
|
|
410
|
+
console.warn('Cannot setMultiDelay in web', options === null || options === void 0 ? void 0 : options.delayConditions);
|
|
99
411
|
return;
|
|
100
412
|
}
|
|
101
413
|
async setDelay(option) {
|
|
102
|
-
console.warn(
|
|
414
|
+
console.warn('Cannot setDelay in web', option);
|
|
103
415
|
return;
|
|
104
416
|
}
|
|
105
417
|
async cancelDelay() {
|
|
106
|
-
console.warn(
|
|
418
|
+
console.warn('Cannot cancelDelay in web');
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
async isAutoUpdateAvailable() {
|
|
422
|
+
console.warn('Cannot isAutoUpdateAvailable in web');
|
|
423
|
+
return { available: false };
|
|
424
|
+
}
|
|
425
|
+
async getCurrentBundle() {
|
|
426
|
+
console.warn('Cannot get current bundle in web');
|
|
427
|
+
return BUNDLE_BUILTIN;
|
|
428
|
+
}
|
|
429
|
+
async getNextBundle() {
|
|
430
|
+
return Promise.resolve(null);
|
|
431
|
+
}
|
|
432
|
+
async getFailedUpdate() {
|
|
433
|
+
console.warn('Cannot getFailedUpdate in web');
|
|
434
|
+
return null;
|
|
435
|
+
}
|
|
436
|
+
async setShakeMenu(_options) {
|
|
437
|
+
throw this.unimplemented('Shake menu not available on web platform');
|
|
438
|
+
}
|
|
439
|
+
async isShakeMenuEnabled() {
|
|
440
|
+
return Promise.resolve({ enabled: false });
|
|
441
|
+
}
|
|
442
|
+
async getAppId() {
|
|
443
|
+
console.warn('Cannot getAppId in web');
|
|
444
|
+
return { appId: 'default' };
|
|
445
|
+
}
|
|
446
|
+
async setAppId(options) {
|
|
447
|
+
console.warn('Cannot setAppId in web', options);
|
|
107
448
|
return;
|
|
108
449
|
}
|
|
109
450
|
}
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\nimport { registerPlugin } from \"@capacitor/core\";\nconst CapacitorUpdater = registerPlugin(\"CapacitorUpdater\", {\n web: () => import(\"./web\").then((m) => new m.CapacitorUpdaterWeb()),\n});\nexport * from \"./definitions\";\nexport { CapacitorUpdater };\n//# sourceMappingURL=index.js.map","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\nimport { WebPlugin } from \"@capacitor/core\";\nconst BUNDLE_BUILTIN = {\n status: \"success\",\n version: \"\",\n downloaded: \"1970-01-01T00:00:00.000Z\",\n id: \"builtin\",\n checksum: \"\",\n};\nexport class CapacitorUpdaterWeb extends WebPlugin {\n async download(options) {\n console.warn(\"Cannot download version in web\", options);\n return BUNDLE_BUILTIN;\n }\n async next(options) {\n console.warn(\"Cannot set next version in web\", options);\n return BUNDLE_BUILTIN;\n }\n async isAutoUpdateEnabled() {\n console.warn(\"Cannot get isAutoUpdateEnabled in web\");\n return { enabled: false };\n }\n async set(options) {\n console.warn(\"Cannot set active bundle in web\", options);\n return;\n }\n async getDeviceId() {\n console.warn(\"Cannot get ID in web\");\n return { deviceId: \"default\" };\n }\n async getPluginVersion() {\n console.warn(\"Cannot get plugin version in web\");\n return { version: \"default\" };\n }\n async delete(options) {\n console.warn(\"Cannot delete bundle in web\", options);\n }\n async list() {\n console.warn(\"Cannot list bundles in web\");\n return { bundles: [] };\n }\n async reset(options) {\n console.warn(\"Cannot reset version in web\", options);\n }\n async current() {\n console.warn(\"Cannot get current bundle in web\");\n return { bundle: BUNDLE_BUILTIN, native: \"0.0.0\" };\n }\n async reload() {\n console.warn(\"Cannot reload current bundle in web\");\n return;\n }\n async getLatest() {\n console.warn(\"Cannot getLatest current bundle in web\");\n return {\n version: \"0.0.0\",\n message: \"Cannot getLatest current bundle in web\",\n };\n }\n async setChannel(options) {\n console.warn(\"Cannot setChannel in web\", options);\n return {\n status: \"error\",\n error: \"Cannot setChannel in web\",\n };\n }\n async setCustomId(options) {\n console.warn(\"Cannot setCustomId in web\", options);\n return;\n }\n async getChannel() {\n console.warn(\"Cannot getChannel in web\");\n return {\n status: \"error\",\n error: \"Cannot getChannel in web\",\n };\n }\n async notifyAppReady() {\n console.warn(\"Cannot notify App Ready in web\");\n return BUNDLE_BUILTIN;\n }\n async setMultiDelay(options) {\n console.warn(\"Cannot setMultiDelay in web\", options === null || options === void 0 ? void 0 : options.delayConditions);\n return;\n }\n async setDelay(option) {\n console.warn(\"Cannot setDelay in web\", option);\n return;\n }\n async cancelDelay() {\n console.warn(\"Cannot cancelDelay in web\");\n return;\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/history.js","esm/index.js","esm/web.js"],"sourcesContent":["/*\n * Maintains navigation history across Capgo-controlled reloads when keepUrlPathAfterReload is enabled.\n */\nconst KEEP_FLAG_KEY = '__capgo_keep_url_path_after_reload';\nconst HISTORY_STORAGE_KEY = '__capgo_history_stack__';\nconst MAX_STACK_ENTRIES = 100;\nconst isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof history !== 'undefined';\nif (isBrowser) {\n const win = window;\n if (!win.__capgoHistoryPatched) {\n win.__capgoHistoryPatched = true;\n const isFeatureConfigured = () => {\n try {\n if (win.__capgoKeepUrlPathAfterReload) {\n return true;\n }\n }\n catch (err) {\n // ignore access issues\n }\n try {\n return window.localStorage.getItem(KEEP_FLAG_KEY) === '1';\n }\n catch (err) {\n return false;\n }\n };\n const readStored = () => {\n try {\n const raw = window.sessionStorage.getItem(HISTORY_STORAGE_KEY);\n if (!raw) {\n return { stack: [], index: -1 };\n }\n const parsed = JSON.parse(raw);\n if (!parsed || !Array.isArray(parsed.stack) || typeof parsed.index !== 'number') {\n return { stack: [], index: -1 };\n }\n return parsed;\n }\n catch (err) {\n return { stack: [], index: -1 };\n }\n };\n const writeStored = (stack, index) => {\n try {\n window.sessionStorage.setItem(HISTORY_STORAGE_KEY, JSON.stringify({ stack, index }));\n }\n catch (err) {\n // Storage might be unavailable; fail silently.\n }\n };\n const clearStored = () => {\n try {\n window.sessionStorage.removeItem(HISTORY_STORAGE_KEY);\n }\n catch (err) {\n // ignore\n }\n };\n const normalize = (url) => {\n try {\n const base = url !== null && url !== void 0 ? url : window.location.href;\n const parsed = new URL(base instanceof URL ? base.toString() : base, window.location.href);\n return `${parsed.pathname}${parsed.search}${parsed.hash}`;\n }\n catch (err) {\n return null;\n }\n };\n const trimStack = (stack, index) => {\n if (stack.length <= MAX_STACK_ENTRIES) {\n return { stack, index };\n }\n const start = stack.length - MAX_STACK_ENTRIES;\n const trimmed = stack.slice(start);\n const adjustedIndex = Math.max(0, index - start);\n return { stack: trimmed, index: adjustedIndex };\n };\n const runWhenReady = (fn) => {\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n fn();\n }\n else {\n window.addEventListener('DOMContentLoaded', fn, { once: true });\n }\n };\n let featureActive = false;\n let isRestoring = false;\n let restoreScheduled = false;\n const ensureCurrentTracked = () => {\n if (!featureActive) {\n return;\n }\n const stored = readStored();\n const current = normalize();\n if (!current) {\n return;\n }\n if (stored.stack.length === 0) {\n stored.stack.push(current);\n stored.index = 0;\n writeStored(stored.stack, stored.index);\n return;\n }\n if (stored.index < 0 || stored.index >= stored.stack.length) {\n stored.index = stored.stack.length - 1;\n }\n if (stored.stack[stored.index] !== current) {\n stored.stack[stored.index] = current;\n writeStored(stored.stack, stored.index);\n }\n };\n const record = (url, replace) => {\n if (!featureActive || isRestoring) {\n return;\n }\n const normalized = normalize(url);\n if (!normalized) {\n return;\n }\n let { stack, index } = readStored();\n if (stack.length === 0) {\n stack.push(normalized);\n index = stack.length - 1;\n }\n else if (replace) {\n if (index < 0 || index >= stack.length) {\n index = stack.length - 1;\n }\n stack[index] = normalized;\n }\n else {\n if (index >= stack.length - 1) {\n stack.push(normalized);\n index = stack.length - 1;\n }\n else {\n stack = stack.slice(0, index + 1);\n stack.push(normalized);\n index = stack.length - 1;\n }\n }\n ({ stack, index } = trimStack(stack, index));\n writeStored(stack, index);\n };\n const restoreHistory = () => {\n if (!featureActive || isRestoring) {\n return;\n }\n const stored = readStored();\n if (stored.stack.length === 0) {\n ensureCurrentTracked();\n return;\n }\n const targetIndex = stored.index >= 0 && stored.index < stored.stack.length ? stored.index : stored.stack.length - 1;\n const normalizedCurrent = normalize();\n if (stored.stack.length === 1 && normalizedCurrent === stored.stack[0]) {\n return;\n }\n const firstEntry = stored.stack[0];\n if (!firstEntry) {\n return;\n }\n isRestoring = true;\n try {\n history.replaceState(history.state, document.title, firstEntry);\n for (let i = 1; i < stored.stack.length; i += 1) {\n history.pushState(history.state, document.title, stored.stack[i]);\n }\n }\n catch (err) {\n isRestoring = false;\n return;\n }\n isRestoring = false;\n const currentIndex = stored.stack.length - 1;\n const offset = targetIndex - currentIndex;\n if (offset !== 0) {\n history.go(offset);\n }\n else {\n history.replaceState(history.state, document.title, stored.stack[targetIndex]);\n window.dispatchEvent(new PopStateEvent('popstate'));\n }\n };\n const scheduleRestore = () => {\n if (!featureActive || restoreScheduled) {\n return;\n }\n restoreScheduled = true;\n runWhenReady(() => {\n restoreScheduled = false;\n restoreHistory();\n });\n };\n let originalPushState = null;\n let originalReplaceState = null;\n const popstateHandler = () => {\n if (!featureActive || isRestoring) {\n return;\n }\n const normalized = normalize();\n if (!normalized) {\n return;\n }\n const stored = readStored();\n const idx = stored.stack.lastIndexOf(normalized);\n if (idx >= 0) {\n stored.index = idx;\n }\n else {\n stored.stack.push(normalized);\n stored.index = stored.stack.length - 1;\n }\n const trimmed = trimStack(stored.stack, stored.index);\n writeStored(trimmed.stack, trimmed.index);\n };\n const patchHistory = () => {\n if (originalPushState && originalReplaceState) {\n return;\n }\n originalPushState = history.pushState;\n originalReplaceState = history.replaceState;\n history.pushState = function pushStatePatched(state, title, url) {\n const result = originalPushState.call(history, state, title, url);\n record(url, false);\n return result;\n };\n history.replaceState = function replaceStatePatched(state, title, url) {\n const result = originalReplaceState.call(history, state, title, url);\n record(url, true);\n return result;\n };\n window.addEventListener('popstate', popstateHandler);\n };\n const unpatchHistory = () => {\n if (originalPushState) {\n history.pushState = originalPushState;\n originalPushState = null;\n }\n if (originalReplaceState) {\n history.replaceState = originalReplaceState;\n originalReplaceState = null;\n }\n window.removeEventListener('popstate', popstateHandler);\n };\n const setFeatureActive = (enabled) => {\n if (featureActive === enabled) {\n if (featureActive) {\n ensureCurrentTracked();\n scheduleRestore();\n }\n return;\n }\n featureActive = enabled;\n if (featureActive) {\n patchHistory();\n ensureCurrentTracked();\n scheduleRestore();\n }\n else {\n unpatchHistory();\n clearStored();\n }\n };\n window.addEventListener('CapacitorUpdaterKeepUrlPathAfterReload', (event) => {\n var _a;\n const evt = event;\n const enabled = (_a = evt === null || evt === void 0 ? void 0 : evt.detail) === null || _a === void 0 ? void 0 : _a.enabled;\n if (typeof enabled === 'boolean') {\n win.__capgoKeepUrlPathAfterReload = enabled;\n setFeatureActive(enabled);\n }\n else {\n win.__capgoKeepUrlPathAfterReload = true;\n setFeatureActive(true);\n }\n });\n setFeatureActive(isFeatureConfigured());\n }\n}\nexport {};\n//# sourceMappingURL=history.js.map","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\nimport { registerPlugin } from '@capacitor/core';\nimport './history';\nconst CapacitorUpdater = registerPlugin('CapacitorUpdater', {\n web: () => import('./web').then((m) => new m.CapacitorUpdaterWeb()),\n});\nexport * from './definitions';\nexport { CapacitorUpdater };\n//# sourceMappingURL=index.js.map","/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\nimport { WebPlugin } from '@capacitor/core';\nconst BUNDLE_BUILTIN = {\n status: 'success',\n version: '',\n downloaded: '1970-01-01T00:00:00.000Z',\n id: 'builtin',\n checksum: '',\n};\nexport class CapacitorUpdaterWeb extends WebPlugin {\n async setStatsUrl(options) {\n console.warn('Cannot setStatsUrl in web', options);\n return;\n }\n async setUpdateUrl(options) {\n console.warn('Cannot setUpdateUrl in web', options);\n return;\n }\n async setChannelUrl(options) {\n console.warn('Cannot setChannelUrl in web', options);\n return;\n }\n async download(options) {\n console.warn('Cannot download version in web', options);\n return BUNDLE_BUILTIN;\n }\n async next(options) {\n console.warn('Cannot set next version in web', options);\n return BUNDLE_BUILTIN;\n }\n async isAutoUpdateEnabled() {\n console.warn('Cannot get isAutoUpdateEnabled in web');\n return { enabled: false };\n }\n async set(options) {\n console.warn('Cannot set active bundle in web', options);\n return;\n }\n async getDeviceId() {\n console.warn('Cannot get ID in web');\n return { deviceId: 'default' };\n }\n async getBuiltinVersion() {\n console.warn('Cannot get version in web');\n return { version: 'default' };\n }\n async getPluginVersion() {\n console.warn('Cannot get plugin version in web');\n return { version: 'default' };\n }\n async delete(options) {\n console.warn('Cannot delete bundle in web', options);\n }\n async setBundleError(options) {\n console.warn('Cannot setBundleError in web', options);\n return BUNDLE_BUILTIN;\n }\n async list() {\n console.warn('Cannot list bundles in web');\n return { bundles: [] };\n }\n async reset(options) {\n console.warn('Cannot reset version in web', options);\n }\n async current() {\n console.warn('Cannot get current bundle in web');\n return { bundle: BUNDLE_BUILTIN, native: '0.0.0' };\n }\n async reload() {\n console.warn('Cannot reload current bundle in web');\n return;\n }\n async getLatest() {\n console.warn('Cannot getLatest current bundle in web');\n return {\n version: '0.0.0',\n message: 'Cannot getLatest current bundle in web',\n };\n }\n async setChannel(options) {\n console.warn('Cannot setChannel in web', options);\n return {\n status: 'error',\n error: 'Cannot setChannel in web',\n };\n }\n async unsetChannel(options) {\n console.warn('Cannot unsetChannel in web', options);\n return;\n }\n async setCustomId(options) {\n console.warn('Cannot setCustomId in web', options);\n return;\n }\n async getChannel() {\n console.warn('Cannot getChannel in web');\n return {\n status: 'error',\n error: 'Cannot getChannel in web',\n };\n }\n async listChannels() {\n console.warn('Cannot listChannels in web');\n throw {\n message: 'Cannot listChannels in web',\n error: 'platform_not_supported',\n };\n }\n async notifyAppReady() {\n return { bundle: BUNDLE_BUILTIN };\n }\n async setMultiDelay(options) {\n console.warn('Cannot setMultiDelay in web', options === null || options === void 0 ? void 0 : options.delayConditions);\n return;\n }\n async setDelay(option) {\n console.warn('Cannot setDelay in web', option);\n return;\n }\n async cancelDelay() {\n console.warn('Cannot cancelDelay in web');\n return;\n }\n async isAutoUpdateAvailable() {\n console.warn('Cannot isAutoUpdateAvailable in web');\n return { available: false };\n }\n async getCurrentBundle() {\n console.warn('Cannot get current bundle in web');\n return BUNDLE_BUILTIN;\n }\n async getNextBundle() {\n return Promise.resolve(null);\n }\n async getFailedUpdate() {\n console.warn('Cannot getFailedUpdate in web');\n return null;\n }\n async setShakeMenu(_options) {\n throw this.unimplemented('Shake menu not available on web platform');\n }\n async isShakeMenuEnabled() {\n return Promise.resolve({ enabled: false });\n }\n async getAppId() {\n console.warn('Cannot getAppId in web');\n return { appId: 'default' };\n }\n async setAppId(options) {\n console.warn('Cannot setAppId in web', options);\n return;\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import BigInt
|
|
2
|
+
import Foundation
|
|
3
|
+
import CommonCrypto
|
|
4
|
+
import CryptoKit
|
|
5
|
+
|
|
6
|
+
///
|
|
7
|
+
/// Constants
|
|
8
|
+
///
|
|
9
|
+
private enum AESConstants {
|
|
10
|
+
static let aesAlgorithm: CCAlgorithm = CCAlgorithm(kCCAlgorithmAES)
|
|
11
|
+
static let aesOptions: CCOptions = CCOptions(kCCOptionPKCS7Padding)
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// We do all this stuff because ios is shit and open source libraries allow to do decryption with public key
|
|
15
|
+
// So we have to do it manually, while in nodejs or Java it's ok and done at language level.
|
|
16
|
+
|
|
17
|
+
///
|
|
18
|
+
/// The AES key. Contains both the initialization vector and secret key.
|
|
19
|
+
///
|
|
20
|
+
public struct AES128Key {
|
|
21
|
+
/// Initialization vector
|
|
22
|
+
private let iv: Data
|
|
23
|
+
private let logger: Logger
|
|
24
|
+
private let aes128Key: Data
|
|
25
|
+
#if DEBUG
|
|
26
|
+
public var __debug_iv: Data { iv }
|
|
27
|
+
public var __debug_aes128Key: Data { aes128Key }
|
|
28
|
+
#endif
|
|
29
|
+
init(iv: Data, aes128Key: Data, logger: Logger) {
|
|
30
|
+
self.iv = iv
|
|
31
|
+
self.aes128Key = aes128Key
|
|
32
|
+
self.logger = logger
|
|
33
|
+
}
|
|
34
|
+
///
|
|
35
|
+
/// Takes the data and uses the private key to decrypt it. Will call `CCCrypt` in CommonCrypto
|
|
36
|
+
/// and provide it `ivData` for the initialization vector. Will use cipher block chaining (CBC) as
|
|
37
|
+
/// the mode of operation.
|
|
38
|
+
///
|
|
39
|
+
/// Returns the decrypted data.
|
|
40
|
+
///
|
|
41
|
+
public func decrypt(data: Data) -> Data? {
|
|
42
|
+
let encryptedData: UnsafePointer<UInt8> = (data as NSData).bytes.bindMemory(to: UInt8.self, capacity: data.count)
|
|
43
|
+
let encryptedDataLength: Int = data.count
|
|
44
|
+
|
|
45
|
+
if let result: NSMutableData = NSMutableData(length: encryptedDataLength) {
|
|
46
|
+
let keyData: UnsafePointer<UInt8> = (self.aes128Key as NSData).bytes.bindMemory(to: UInt8.self, capacity: self.aes128Key.count)
|
|
47
|
+
let keyLength: size_t = size_t(self.aes128Key.count)
|
|
48
|
+
let ivData: UnsafePointer<UInt8> = (iv as NSData).bytes.bindMemory(to: UInt8.self, capacity: self.iv.count)
|
|
49
|
+
|
|
50
|
+
let decryptedData: UnsafeMutablePointer<UInt8> = UnsafeMutablePointer<UInt8>(result.mutableBytes.assumingMemoryBound(to: UInt8.self))
|
|
51
|
+
let decryptedDataLength: size_t = size_t(result.length)
|
|
52
|
+
|
|
53
|
+
var decryptedLength: size_t = 0
|
|
54
|
+
|
|
55
|
+
let status: CCCryptorStatus = CCCrypt(CCOperation(kCCDecrypt), AESConstants.aesAlgorithm, AESConstants.aesOptions, keyData, keyLength, ivData, encryptedData, encryptedDataLength, decryptedData, decryptedDataLength, &decryptedLength)
|
|
56
|
+
|
|
57
|
+
if Int32(status) == Int32(kCCSuccess) {
|
|
58
|
+
result.length = Int(decryptedLength)
|
|
59
|
+
return result as Data
|
|
60
|
+
} else {
|
|
61
|
+
logger.error("AES decryption failed with status: \(status)")
|
|
62
|
+
return nil
|
|
63
|
+
}
|
|
64
|
+
} else {
|
|
65
|
+
logger.error("Failed to allocate memory for AES decryption")
|
|
66
|
+
return nil
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|