diff --git a/lib/ssh/keygen.dart b/lib/ssh/keygen.dart index bb02adc4..9925e12c 100644 --- a/lib/ssh/keygen.dart +++ b/lib/ssh/keygen.dart @@ -25,10 +25,11 @@ class SshKey { final bool useDartKeyGen = false; Future<SshKey?> generateSSHKeys({required String comment}) async { - if (useDartKeyGen) { - //return generateSSHKeysDart(comment: comment); - } else {} - return generateSSHKeysNative(comment: comment); + if (Platform.isAndroid || Platform.isIOS) { + return generateSSHKeysNative(comment: comment); + } else { + return generateSSHKeysKeygen(comment: comment); + } } /* @@ -80,6 +81,37 @@ Future<SshKey?> generateSSHKeysNative({required String comment}) async { return null; } +Future<SshKey?> generateSSHKeysKeygen({required String comment}) async { + var privateFile = p.join(Directory.systemTemp.path, 'id_rsa'); + + // ssh-keygen -f /tmp/r -t rsa -b 4096 -q -N "" -C 'happy' + var process = await Process.start('ssh-keygen', [ + '-f', + privateFile, + '-t', + 'rsa', + '-b', + '4096', + '-q', + '-N', + '', + '-C', + comment, + ]); + + var exitCode = await process.exitCode; + if (exitCode != 0) { + // FIXME: Give me an error! + return null; + } + + return SshKey( + publicKey: await File(privateFile + '.pub').readAsString(), + privateKey: await File(privateFile).readAsString(), + password: "", + ); +} + Future<SshKey> generateSSHEccKeys({required String comment}) async { print("Generating KeyPair ..."); var stopwatch = Stopwatch()..start(); diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements index dddb8a30..9f56413f 100644 --- a/macos/Runner/DebugProfile.entitlements +++ b/macos/Runner/DebugProfile.entitlements @@ -3,7 +3,7 @@ <plist version="1.0"> <dict> <key>com.apple.security.app-sandbox</key> - <true/> + <false/> <key>com.apple.security.cs.allow-jit</key> <true/> <key>com.apple.security.network.server</key> diff --git a/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements index 852fa1a4..e89b7f32 100644 --- a/macos/Runner/Release.entitlements +++ b/macos/Runner/Release.entitlements @@ -3,6 +3,6 @@ <plist version="1.0"> <dict> <key>com.apple.security.app-sandbox</key> - <true/> + <false/> </dict> </plist>