native-update 1.4.4 → 1.4.6

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.
Files changed (59) hide show
  1. package/AI-INTEGRATION-GUIDE.md +4 -4
  2. package/Readme.md +33 -33
  3. package/android/src/main/AndroidManifest.xml +2 -3
  4. package/dist/esm/__tests__/bundle-manager.test.js +49 -22
  5. package/dist/esm/__tests__/bundle-manager.test.js.map +1 -1
  6. package/dist/esm/app-update/app-update-checker.d.ts +27 -1
  7. package/dist/esm/app-update/app-update-checker.js +109 -4
  8. package/dist/esm/app-update/app-update-checker.js.map +1 -1
  9. package/dist/esm/background-update/background-scheduler.d.ts +25 -0
  10. package/dist/esm/background-update/background-scheduler.js +176 -61
  11. package/dist/esm/background-update/background-scheduler.js.map +1 -1
  12. package/dist/esm/core/config.d.ts +15 -0
  13. package/dist/esm/core/config.js +8 -0
  14. package/dist/esm/core/config.js.map +1 -1
  15. package/dist/esm/core/errors.d.ts +4 -0
  16. package/dist/esm/core/errors.js +5 -0
  17. package/dist/esm/core/errors.js.map +1 -1
  18. package/dist/esm/core/plugin-manager.d.ts +6 -0
  19. package/dist/esm/core/plugin-manager.js +17 -0
  20. package/dist/esm/core/plugin-manager.js.map +1 -1
  21. package/dist/esm/definitions.d.ts +82 -0
  22. package/dist/esm/definitions.js +1 -0
  23. package/dist/esm/definitions.js.map +1 -1
  24. package/dist/esm/firestore/schema.d.ts +1 -0
  25. package/dist/esm/firestore/schema.js +5 -1
  26. package/dist/esm/firestore/schema.js.map +1 -1
  27. package/dist/esm/index.d.ts +3 -1
  28. package/dist/esm/index.js +2 -0
  29. package/dist/esm/index.js.map +1 -1
  30. package/dist/esm/live-update/delta-processor.d.ts +7 -3
  31. package/dist/esm/live-update/delta-processor.js +100 -13
  32. package/dist/esm/live-update/delta-processor.js.map +1 -1
  33. package/dist/esm/plugin.js +384 -21
  34. package/dist/esm/plugin.js.map +1 -1
  35. package/dist/esm/security/crypto.d.ts +64 -1
  36. package/dist/esm/security/crypto.js +158 -1
  37. package/dist/esm/security/crypto.js.map +1 -1
  38. package/dist/esm/web.d.ts +40 -1
  39. package/dist/esm/web.js +317 -23
  40. package/dist/esm/web.js.map +1 -1
  41. package/dist/plugin.cjs.js +1 -1
  42. package/dist/plugin.cjs.js.map +1 -1
  43. package/dist/plugin.esm.js +1 -1
  44. package/dist/plugin.esm.js.map +1 -1
  45. package/dist/plugin.js +2 -2
  46. package/dist/plugin.js.map +1 -1
  47. package/docs/CHANGELOG.md +13 -0
  48. package/docs/KNOWN_LIMITATIONS.md +54 -69
  49. package/docs/REMAINING_FEATURES.md +14 -13
  50. package/docs/features/live-updates.md +7 -7
  51. package/docs/production-readiness.md +20 -23
  52. package/docs/reports/CLAUDE-CODE-COMPLETION-PROMPT.md +403 -0
  53. package/docs/reports/CLAUDE_CODE_PROMPT.md +29 -0
  54. package/docs/reports/CODEBASE_STATUS_REPORT.md +272 -0
  55. package/docs/reports/COMPREHENSIVE-PROJECT-AUDIT-2026-02-24.md +747 -0
  56. package/docs/reports/claude-completion.json +241 -0
  57. package/docs/tracking/capacitor-rollout-note-2026-03-01.md +21 -0
  58. package/docs/tracking/completion-tracker-2026-02-24.json +174 -0
  59. package/package.json +10 -10
@@ -2,6 +2,7 @@ import { registerPlugin } from '@capacitor/core';
2
2
  import { SyncStatus, BundleStatus, UpdateErrorCode } from './definitions';
3
3
  import { PluginManager } from './core/plugin-manager';
4
4
  import { NativeUpdateError, ErrorCode } from './core/errors';
5
+ import { CryptoUtils } from './security/crypto';
5
6
  /**
6
7
  * Web implementation of the Native Update Plugin
7
8
  */
@@ -65,16 +66,119 @@ class NativeUpdatePluginWeb {
65
66
  };
66
67
  }
67
68
  // LiveUpdatePlugin methods
68
- async sync(_options) {
69
+ async sync(options) {
69
70
  const bundleManager = this.pluginManager.getBundleManager();
71
+ const configManager = this.pluginManager.getConfigManager();
72
+ const downloadManager = this.pluginManager.getDownloadManager();
73
+ const eventEmitter = this.pluginManager.getEventEmitter();
70
74
  try {
71
- // Check for updates
75
+ // Get current version
72
76
  const currentBundle = await bundleManager.getActiveBundle();
73
77
  const currentVersion = (currentBundle === null || currentBundle === void 0 ? void 0 : currentBundle.version) || '1.0.0';
74
- // For now, return up-to-date status
78
+ // Get base URL from config
79
+ const baseUrl = configManager.get('baseUrl');
80
+ if (!baseUrl) {
81
+ return {
82
+ status: SyncStatus.UP_TO_DATE,
83
+ version: currentVersion,
84
+ };
85
+ }
86
+ // Check for updates from server
87
+ const channel = (options === null || options === void 0 ? void 0 : options.channel) || configManager.get('channel') || 'production';
88
+ let updateInfo = null;
89
+ try {
90
+ const response = await fetch(`${baseUrl}/updates/latest`, {
91
+ method: 'GET',
92
+ headers: {
93
+ 'Content-Type': 'application/json',
94
+ 'X-Current-Version': currentVersion,
95
+ 'X-Channel': channel,
96
+ },
97
+ });
98
+ if (response.ok) {
99
+ const data = await response.json();
100
+ const latestVersion = data.version || data.latestVersion;
101
+ if (latestVersion && this.compareVersions(currentVersion, latestVersion) < 0) {
102
+ updateInfo = {
103
+ version: latestVersion,
104
+ url: data.url || data.downloadUrl,
105
+ mandatory: data.mandatory,
106
+ notes: data.notes || data.releaseNotes,
107
+ checksum: data.checksum,
108
+ signature: data.signature,
109
+ };
110
+ }
111
+ }
112
+ }
113
+ catch (_a) {
114
+ // Server check failed, continue with UP_TO_DATE
115
+ return {
116
+ status: SyncStatus.UP_TO_DATE,
117
+ version: currentVersion,
118
+ };
119
+ }
120
+ // If no update available, return up-to-date
121
+ if (!updateInfo) {
122
+ return {
123
+ status: SyncStatus.UP_TO_DATE,
124
+ version: currentVersion,
125
+ };
126
+ }
127
+ // If update mode is IMMEDIATE, download and apply automatically
128
+ if ((options === null || options === void 0 ? void 0 : options.updateMode) === 'immediate' || (options === null || options === void 0 ? void 0 : options.updateMode) === undefined) {
129
+ // Emit update available event
130
+ eventEmitter.emit('updateStateChanged', {
131
+ status: BundleStatus.DOWNLOADING,
132
+ bundleId: updateInfo.version,
133
+ version: updateInfo.version,
134
+ });
135
+ // Download the update
136
+ const onProgress = (event) => {
137
+ eventEmitter.emit('downloadProgress', event);
138
+ };
139
+ const blob = await downloadManager.downloadWithRetry(updateInfo.url, updateInfo.version, onProgress);
140
+ // Get ArrayBuffer for decryption and validation
141
+ let bundleData = await blob.arrayBuffer();
142
+ // Decrypt if encryption is enabled
143
+ bundleData = await this.decryptBundleIfNeeded(bundleData);
144
+ // Validate checksum and signature before saving
145
+ await this.validateBundleData(bundleData, updateInfo.checksum, updateInfo.signature);
146
+ // Convert back to Blob for storage
147
+ const validatedBlob = new Blob([bundleData], { type: blob.type });
148
+ const path = await downloadManager.saveBlob(updateInfo.version, validatedBlob);
149
+ // Create bundle info
150
+ const bundleInfo = {
151
+ bundleId: updateInfo.version,
152
+ version: updateInfo.version,
153
+ path,
154
+ downloadTime: Date.now(),
155
+ size: validatedBlob.size,
156
+ status: BundleStatus.READY,
157
+ checksum: updateInfo.checksum || '',
158
+ verified: true, // Validated before saving
159
+ };
160
+ // Save bundle
161
+ await bundleManager.saveBundleInfo(bundleInfo);
162
+ // Set as active and reload if immediate
163
+ await bundleManager.setActiveBundle(updateInfo.version);
164
+ eventEmitter.emit('updateStateChanged', {
165
+ status: BundleStatus.ACTIVE,
166
+ bundleId: updateInfo.version,
167
+ version: updateInfo.version,
168
+ });
169
+ return {
170
+ status: SyncStatus.UPDATE_INSTALLED,
171
+ version: updateInfo.version,
172
+ description: updateInfo.notes,
173
+ mandatory: updateInfo.mandatory,
174
+ };
175
+ }
176
+ // Return update available for manual handling
75
177
  return {
76
- status: SyncStatus.UP_TO_DATE,
77
- version: currentVersion,
178
+ status: SyncStatus.UPDATE_AVAILABLE,
179
+ version: updateInfo.version,
180
+ description: updateInfo.notes,
181
+ mandatory: updateInfo.mandatory,
78
182
  };
79
183
  }
80
184
  catch (error) {
@@ -196,6 +300,265 @@ class NativeUpdatePluginWeb {
196
300
  };
197
301
  }
198
302
  }
303
+ // ============================================
304
+ // Convenience Methods (Aliases)
305
+ // ============================================
306
+ /**
307
+ * Check for available updates (convenience wrapper around getLatest + current version)
308
+ */
309
+ async checkForUpdate() {
310
+ const bundleManager = this.pluginManager.getBundleManager();
311
+ const configManager = this.pluginManager.getConfigManager();
312
+ try {
313
+ // Get current version
314
+ const currentBundle = await bundleManager.getActiveBundle();
315
+ const currentVersion = (currentBundle === null || currentBundle === void 0 ? void 0 : currentBundle.version) || '1.0.0';
316
+ // Check for latest from server
317
+ const baseUrl = configManager.get('baseUrl');
318
+ if (!baseUrl) {
319
+ return {
320
+ available: false,
321
+ currentVersion,
322
+ };
323
+ }
324
+ // Fetch latest version info from server
325
+ try {
326
+ const response = await fetch(`${baseUrl}/updates/latest`, {
327
+ method: 'GET',
328
+ headers: {
329
+ 'Content-Type': 'application/json',
330
+ 'X-Current-Version': currentVersion,
331
+ },
332
+ });
333
+ if (!response.ok) {
334
+ return {
335
+ available: false,
336
+ currentVersion,
337
+ };
338
+ }
339
+ const data = await response.json();
340
+ const latestVersion = data.version || data.latestVersion;
341
+ const isNewer = this.compareVersions(currentVersion, latestVersion) < 0;
342
+ return {
343
+ available: isNewer,
344
+ currentVersion,
345
+ latestVersion: isNewer ? latestVersion : undefined,
346
+ url: isNewer ? data.url : undefined,
347
+ mandatory: data.mandatory,
348
+ notes: data.notes || data.releaseNotes,
349
+ size: data.size,
350
+ checksum: data.checksum,
351
+ signature: data.signature,
352
+ };
353
+ }
354
+ catch (_a) {
355
+ // Server check failed, return not available
356
+ return {
357
+ available: false,
358
+ currentVersion,
359
+ };
360
+ }
361
+ }
362
+ catch (error) {
363
+ throw new NativeUpdateError(ErrorCode.NETWORK_ERROR, error instanceof Error ? error.message : 'Failed to check for updates');
364
+ }
365
+ }
366
+ /**
367
+ * Download the latest available update
368
+ */
369
+ async downloadUpdate(options) {
370
+ const downloadManager = this.pluginManager.getDownloadManager();
371
+ const bundleManager = this.pluginManager.getBundleManager();
372
+ const eventEmitter = this.pluginManager.getEventEmitter();
373
+ // If no options provided, check for update first
374
+ let updateInfo;
375
+ if (!(options === null || options === void 0 ? void 0 : options.url) || !(options === null || options === void 0 ? void 0 : options.version)) {
376
+ updateInfo = await this.checkForUpdate();
377
+ if (!updateInfo.available || !updateInfo.url) {
378
+ throw new NativeUpdateError(ErrorCode.UPDATE_NOT_AVAILABLE, 'No update available to download');
379
+ }
380
+ }
381
+ const url = (options === null || options === void 0 ? void 0 : options.url) || (updateInfo === null || updateInfo === void 0 ? void 0 : updateInfo.url) || '';
382
+ const version = (options === null || options === void 0 ? void 0 : options.version) || (updateInfo === null || updateInfo === void 0 ? void 0 : updateInfo.latestVersion) || '';
383
+ const checksum = (options === null || options === void 0 ? void 0 : options.checksum) || (updateInfo === null || updateInfo === void 0 ? void 0 : updateInfo.checksum) || '';
384
+ const signature = (options === null || options === void 0 ? void 0 : options.signature) || (updateInfo === null || updateInfo === void 0 ? void 0 : updateInfo.signature) || '';
385
+ if (!url || !version) {
386
+ throw new NativeUpdateError(ErrorCode.INVALID_CONFIG, 'URL and version are required for download');
387
+ }
388
+ // Create progress callback that emits events
389
+ const onProgress = (event) => {
390
+ eventEmitter.emit('downloadProgress', event);
391
+ if (options === null || options === void 0 ? void 0 : options.onProgress) {
392
+ options.onProgress(event);
393
+ }
394
+ };
395
+ // Download the bundle
396
+ const blob = await downloadManager.downloadWithRetry(url, version, onProgress);
397
+ // Get ArrayBuffer for decryption and validation
398
+ let bundleData = await blob.arrayBuffer();
399
+ // Decrypt if encryption is enabled
400
+ bundleData = await this.decryptBundleIfNeeded(bundleData);
401
+ // Validate checksum and signature before saving
402
+ await this.validateBundleData(bundleData, checksum, signature || undefined);
403
+ // Convert back to Blob for storage
404
+ const validatedBlob = new Blob([bundleData], { type: blob.type });
405
+ const path = await downloadManager.saveBlob(version, validatedBlob);
406
+ // Create bundle info
407
+ const bundleInfo = {
408
+ bundleId: version,
409
+ version,
410
+ path,
411
+ downloadTime: Date.now(),
412
+ size: validatedBlob.size,
413
+ status: BundleStatus.READY,
414
+ checksum,
415
+ verified: true, // Validated before saving
416
+ };
417
+ // Save bundle info
418
+ await bundleManager.saveBundleInfo(bundleInfo);
419
+ return bundleInfo;
420
+ }
421
+ /**
422
+ * Apply a downloaded update and reload the app
423
+ */
424
+ async applyUpdate(bundleId) {
425
+ const bundleManager = this.pluginManager.getBundleManager();
426
+ // If bundleId not provided, find the most recent ready bundle
427
+ let targetBundleId = bundleId;
428
+ if (!targetBundleId) {
429
+ const bundles = await bundleManager.getAllBundles();
430
+ const readyBundles = bundles
431
+ .filter(b => b.status === BundleStatus.READY)
432
+ .sort((a, b) => b.downloadTime - a.downloadTime);
433
+ if (readyBundles.length === 0) {
434
+ throw new NativeUpdateError(ErrorCode.FILE_NOT_FOUND, 'No ready bundle found to apply');
435
+ }
436
+ targetBundleId = readyBundles[0].bundleId;
437
+ }
438
+ // Get the bundle
439
+ const bundle = await bundleManager.getBundle(targetBundleId);
440
+ if (!bundle) {
441
+ throw new NativeUpdateError(ErrorCode.FILE_NOT_FOUND, `Bundle ${targetBundleId} not found`);
442
+ }
443
+ // Set as active and reload
444
+ await this.set(bundle);
445
+ await this.reload();
446
+ }
447
+ /**
448
+ * Cancel an active download
449
+ */
450
+ async cancelDownload(bundleId) {
451
+ const downloadManager = this.pluginManager.getDownloadManager();
452
+ downloadManager.cancelDownload(bundleId);
453
+ }
454
+ /**
455
+ * Cancel all active downloads
456
+ */
457
+ async cancelAllDownloads() {
458
+ const downloadManager = this.pluginManager.getDownloadManager();
459
+ downloadManager.cancelAllDownloads();
460
+ }
461
+ /**
462
+ * Check if a download is currently active
463
+ */
464
+ async isDownloading(bundleId) {
465
+ const downloadManager = this.pluginManager.getDownloadManager();
466
+ return downloadManager.isDownloading(bundleId);
467
+ }
468
+ /**
469
+ * Get the count of active downloads
470
+ */
471
+ async getActiveDownloadCount() {
472
+ const downloadManager = this.pluginManager.getDownloadManager();
473
+ return downloadManager.getActiveDownloadCount();
474
+ }
475
+ /**
476
+ * Compare two semantic versions
477
+ * Returns: -1 if v1 < v2, 0 if equal, 1 if v1 > v2
478
+ */
479
+ compareVersions(v1, v2) {
480
+ const parts1 = v1.split('.').map(Number);
481
+ const parts2 = v2.split('.').map(Number);
482
+ for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
483
+ const p1 = parts1[i] || 0;
484
+ const p2 = parts2[i] || 0;
485
+ if (p1 < p2)
486
+ return -1;
487
+ if (p1 > p2)
488
+ return 1;
489
+ }
490
+ return 0;
491
+ }
492
+ /**
493
+ * Decrypt bundle data if encryption is enabled
494
+ * Returns the decrypted data or the original data if encryption is not enabled
495
+ */
496
+ async decryptBundleIfNeeded(bundleData) {
497
+ const configManager = this.pluginManager.getConfigManager();
498
+ const enableEncryption = configManager.get('enableEncryption');
499
+ const encryptionKey = configManager.get('encryptionKey');
500
+ const encryptionSalt = configManager.get('encryptionSalt');
501
+ if (!enableEncryption) {
502
+ return bundleData;
503
+ }
504
+ // Validate encryption configuration
505
+ if (!encryptionKey) {
506
+ throw new NativeUpdateError(ErrorCode.INVALID_CONFIG, 'Encryption is enabled but encryptionKey is not configured');
507
+ }
508
+ if (!encryptionSalt) {
509
+ throw new NativeUpdateError(ErrorCode.INVALID_CONFIG, 'Encryption is enabled but encryptionSalt is not configured');
510
+ }
511
+ try {
512
+ // Try to parse as encrypted bundle JSON
513
+ const decoder = new TextDecoder();
514
+ const jsonString = decoder.decode(bundleData);
515
+ const encryptedBundle = JSON.parse(jsonString);
516
+ // Verify it's an encrypted bundle
517
+ if (!CryptoUtils.isEncryptedBundle(encryptedBundle)) {
518
+ throw new NativeUpdateError(ErrorCode.VALIDATION_ERROR, 'Encryption is enabled but bundle is not encrypted');
519
+ }
520
+ // Decrypt the bundle
521
+ const decryptedData = await CryptoUtils.decryptBundle(encryptedBundle, encryptionKey, encryptionSalt);
522
+ return decryptedData;
523
+ }
524
+ catch (error) {
525
+ if (error instanceof NativeUpdateError) {
526
+ throw error;
527
+ }
528
+ throw new NativeUpdateError(ErrorCode.VALIDATION_ERROR, `Failed to decrypt bundle: ${error instanceof Error ? error.message : 'Unknown error'}`);
529
+ }
530
+ }
531
+ /**
532
+ * Validate bundle data using SecurityValidator
533
+ * Returns true if valid, throws error if invalid
534
+ */
535
+ async validateBundleData(bundleData, expectedChecksum, signature) {
536
+ const securityValidator = this.pluginManager.getSecurityValidator();
537
+ const configManager = this.pluginManager.getConfigManager();
538
+ // Verify checksum if provided
539
+ if (expectedChecksum) {
540
+ const isValidChecksum = await securityValidator.verifyChecksum(bundleData, expectedChecksum);
541
+ if (!isValidChecksum) {
542
+ throw new NativeUpdateError(ErrorCode.CHECKSUM_MISMATCH, 'Bundle checksum verification failed');
543
+ }
544
+ }
545
+ // Verify signature if requireSignature is enabled
546
+ const requireSignature = configManager.get('requireSignature');
547
+ const publicKey = configManager.get('publicKey');
548
+ if (requireSignature) {
549
+ if (!publicKey) {
550
+ throw new NativeUpdateError(ErrorCode.INVALID_CONFIG, 'Signature verification required but publicKey is not configured');
551
+ }
552
+ if (!signature) {
553
+ throw new NativeUpdateError(ErrorCode.SIGNATURE_INVALID, 'Signature verification required but no signature provided');
554
+ }
555
+ const isValidSignature = await securityValidator.verifySignature(bundleData, signature);
556
+ if (!isValidSignature) {
557
+ throw new NativeUpdateError(ErrorCode.SIGNATURE_INVALID, 'Bundle signature verification failed');
558
+ }
559
+ }
560
+ return true;
561
+ }
199
562
  // AppUpdatePlugin methods
200
563
  async getAppUpdateInfo() {
201
564
  const appUpdateManager = this.pluginManager.getAppUpdateManager();
@@ -232,7 +595,10 @@ class NativeUpdatePluginWeb {
232
595
  }
233
596
  // BackgroundUpdatePlugin methods
234
597
  async enableBackgroundUpdates(config) {
235
- // Store the configuration
598
+ // Configure the background scheduler
599
+ const scheduler = this.pluginManager.getBackgroundScheduler();
600
+ scheduler.configure(config);
601
+ // Store the configuration in preferences for persistence
236
602
  const preferences = this.pluginManager
237
603
  .getConfigManager()
238
604
  .get('preferences');
@@ -244,6 +610,14 @@ class NativeUpdatePluginWeb {
244
610
  }
245
611
  }
246
612
  async disableBackgroundUpdates() {
613
+ // Disable the scheduler
614
+ const scheduler = this.pluginManager.getBackgroundScheduler();
615
+ scheduler.configure({
616
+ enabled: false,
617
+ checkInterval: 0,
618
+ updateTypes: [],
619
+ });
620
+ // Remove the configuration from preferences
247
621
  const preferences = this.pluginManager
248
622
  .getConfigManager()
249
623
  .get('preferences');
@@ -252,27 +626,16 @@ class NativeUpdatePluginWeb {
252
626
  }
253
627
  }
254
628
  async getBackgroundUpdateStatus() {
255
- return {
256
- enabled: false,
257
- isRunning: false,
258
- checkCount: 0,
259
- failureCount: 0,
260
- };
629
+ const scheduler = this.pluginManager.getBackgroundScheduler();
630
+ return scheduler.getStatus();
261
631
  }
262
632
  async scheduleBackgroundCheck(_interval) {
263
633
  // Not supported on web
264
634
  throw new NativeUpdateError(ErrorCode.PLATFORM_NOT_SUPPORTED, 'Background updates are not supported on web');
265
635
  }
266
636
  async triggerBackgroundCheck() {
267
- return {
268
- success: false,
269
- updatesFound: false,
270
- notificationSent: false,
271
- error: {
272
- code: UpdateErrorCode.PLATFORM_NOT_SUPPORTED,
273
- message: 'Background updates are not supported on web',
274
- },
275
- };
637
+ const scheduler = this.pluginManager.getBackgroundScheduler();
638
+ return scheduler.performCheck();
276
639
  }
277
640
  async setNotificationPreferences(preferences) {
278
641
  // Store preferences but notifications aren't supported on web
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,25 @@
1
1
  /**
2
- * Cryptographic utilities for bundle verification
2
+ * Cryptographic utilities for bundle verification and encryption
3
3
  */
4
+ /**
5
+ * Configuration for bundle encryption
6
+ */
7
+ export interface EncryptionConfig {
8
+ algorithm: 'AES-GCM';
9
+ keyLength: 128 | 192 | 256;
10
+ ivLength: number;
11
+ tagLength: number;
12
+ }
13
+ /**
14
+ * Encrypted bundle structure
15
+ */
16
+ export interface EncryptedBundle {
17
+ iv: string;
18
+ data: string;
19
+ tag?: string;
20
+ algorithm: string;
21
+ keyId?: string;
22
+ }
4
23
  export declare class CryptoUtils {
5
24
  /**
6
25
  * Calculate SHA-256 checksum of data
@@ -22,4 +41,48 @@ export declare class CryptoUtils {
22
41
  * Validate checksum format
23
42
  */
24
43
  static isValidChecksum(checksum: string, algorithm?: 'SHA-256' | 'SHA-512'): boolean;
44
+ /**
45
+ * Derive an encryption key from a password/secret
46
+ * Uses PBKDF2 for secure key derivation
47
+ */
48
+ static deriveKey(password: string, salt: ArrayBuffer, keyLength?: 128 | 192 | 256): Promise<CryptoKey>;
49
+ /**
50
+ * Import a raw encryption key
51
+ */
52
+ static importKey(keyData: ArrayBuffer | string, keyLength?: 128 | 192 | 256): Promise<CryptoKey>;
53
+ /**
54
+ * Encrypt data using AES-256-GCM
55
+ */
56
+ static encrypt(data: ArrayBuffer | Uint8Array, key: CryptoKey, config?: Partial<EncryptionConfig>): Promise<EncryptedBundle>;
57
+ /**
58
+ * Decrypt data using AES-256-GCM
59
+ */
60
+ static decrypt(encryptedBundle: EncryptedBundle, key: CryptoKey, config?: Partial<EncryptionConfig>): Promise<ArrayBuffer>;
61
+ /**
62
+ * Encrypt a bundle file (convenience method for typical use case)
63
+ */
64
+ static encryptBundle(bundleData: ArrayBuffer, encryptionKey: string, salt?: ArrayBuffer): Promise<{
65
+ encrypted: EncryptedBundle;
66
+ salt: string;
67
+ }>;
68
+ /**
69
+ * Decrypt a bundle file (convenience method for typical use case)
70
+ */
71
+ static decryptBundle(encryptedBundle: EncryptedBundle, encryptionKey: string, salt: string): Promise<ArrayBuffer>;
72
+ /**
73
+ * Check if a bundle is encrypted
74
+ */
75
+ static isEncryptedBundle(data: unknown): data is EncryptedBundle;
76
+ /**
77
+ * Generate a random encryption key
78
+ */
79
+ static generateEncryptionKey(length?: 128 | 192 | 256): string;
80
+ /**
81
+ * Generate a random salt
82
+ */
83
+ static generateSalt(length?: number): string;
84
+ /**
85
+ * Convert ArrayBuffer to base64 string
86
+ */
87
+ static arrayBufferToBase64(buffer: ArrayBuffer): string;
25
88
  }