initiateSecureSession static method

Future<SecureSession> initiateSecureSession({
  1. required String localPeerId,
  2. required Future<Map<String, dynamic>> sendToRemote(
    1. Map<String, dynamic>
    ),
  3. List<CryptoAlgorithm>? supportedAsymmetric,
  4. List<CryptoAlgorithm>? supportedSymmetric,
  5. CryptoAlgorithm? preferredAsymmetric,
  6. CryptoAlgorithm? preferredSymmetric,
})

Full workflow for session initiator

Implementation

static Future<SecureSession> initiateSecureSession({
  required String localPeerId,
  required Future<Map<String, dynamic>> Function(Map<String, dynamic>) sendToRemote,
  List<CryptoAlgorithm>? supportedAsymmetric,
  List<CryptoAlgorithm>? supportedSymmetric,
  CryptoAlgorithm? preferredAsymmetric,
  CryptoAlgorithm? preferredSymmetric,
}) async {
  final sessionManager = createSessionManager();

  final localCapabilities = createDefaultCapabilities(
    peerId: localPeerId,
    supportedAsymmetric: supportedAsymmetric,
    supportedSymmetric: supportedSymmetric,
    preferredAsymmetric: preferredAsymmetric,
    preferredSymmetric: preferredSymmetric,
  );

  // Step 1: Send initiation message
  final initiationMessage = await sessionManager.initiateSession(localCapabilities);

  // Step 2: Receive response from remote peer
  final responseMessage = await sendToRemote(initiationMessage);

  // Step 3: Finalize session
  final session = await sessionManager.finalizeSession(responseMessage);

  return session;
}