/// /// /// import 'ccc_iso_manager.dart'; import 'ccc_iso_result.dart'; import 'cipher_constants.dart'; /// Copious Cipher Chain - Phase 1 with Isolate Support /// Now supports async operations using CryptoIsolateManager class CopiousCipherChain { final CryptoIsolateManager? _isolateManager; // New isolate-based crypto final List _cipherSequence; // Integer-based cipher sequence final Map _cipherParams; // Cipher parameters /// New constructor with isolate manager (Phase 1) CopiousCipherChain.withIsolateManager({ required CryptoIsolateManager isolateManager, List? cipherSequence, Map? cipherParams, }) : _isolateManager = isolateManager, _cipherSequence = cipherSequence ?? CipherConstants.PHASE1_SEQUENCE, _cipherParams = cipherParams ?? CipherConstants.DEFAULT_CIPHER_PARAMS; /// Async encrypt with isolate support Future> encryptAsync( List data, { required String channelUuid, int? messageSequence, bool isUserMessage = false, List? customCipherSequence, Map? customParams, }) async { if (_isolateManager == null) { throw StateError('Isolate manager not available. Use legacy encrypt() or create with withIsolateManager()'); } final result = await _isolateManager.encrypt( data, channelUuid: channelUuid, messageSequence: messageSequence, cipherSequence: customCipherSequence ?? _cipherSequence, params: customParams ?? _cipherParams, isUserMessage: isUserMessage, ); if (!result.success) { throw Exception('Encryption failed: ${result.error}'); } return result.data; } /// Async decrypt with isolate support Future> decryptAsync( List data, { required String channelUuid, int? messageSequence, List? customCipherSequence, Map? customParams, }) async { if (_isolateManager == null) { throw StateError('Isolate manager not available. Use legacy decrypt() or create with withIsolateManager()'); } final result = await _isolateManager.decrypt( data, channelUuid: channelUuid, messageSequence: messageSequence, cipherSequence: customCipherSequence ?? _cipherSequence, params: customParams ?? _cipherParams, ); if (!result.success) { throw Exception('Decryption failed: ${result.error}'); } return result.data; } /// Test the cipher chain with a roundtrip operation Future testCipherChain({ String testData = 'Test message for cipher chain validation', String channelUuid = 'test-channel-999', }) async { if (_isolateManager == null) { return false; // Cannot test without isolate manager } try { final result = await _isolateManager.testOperation( testData: testData, channelUuid: channelUuid, ); return result.success; } catch (e) { return false; } } /// Get cipher sequence description String get cipherSequenceDescription { return CipherConstants.getSequenceDescription(_cipherSequence); } /// Get performance metrics (if using isolate manager) CryptoMetrics? get metrics => _isolateManager?.metrics; /// Check if using isolate manager bool get usesIsolateManager => _isolateManager != null; /// Get current cipher sequence List get cipherSequence => List.from(_cipherSequence); /// Get current cipher parameters Map get cipherParams => Map.from(_cipherParams); }