From 1570daa412ad21b0f3d62c7149f41a33ee16ce1e Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Mon, 18 May 2020 01:23:18 +0200 Subject: [PATCH] keygen: Try generating the key in dart instead of using git_bindings This seems to work rather decently, but I'm not ready to put it into production until it is tested quite thoroughly on lots of different platforms. --- lib/ssh/keygen.dart | 21 +++++++++++++++++++++ lib/ssh/main_keygen.dart | 21 +++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 lib/ssh/keygen.dart create mode 100644 lib/ssh/main_keygen.dart diff --git a/lib/ssh/keygen.dart b/lib/ssh/keygen.dart new file mode 100644 index 00000000..95d23c12 --- /dev/null +++ b/lib/ssh/keygen.dart @@ -0,0 +1,21 @@ +import 'package:git_bindings/git_bindings.dart'; +import 'package:gitjournal/ssh/rsa_key_pair.dart'; +import 'package:gitjournal/utils/logger.dart'; + +import 'package:meta/meta.dart'; + +Future generateSSHKeys({@required String comment}) async { + try { + var keyPair = await RsaKeyPair.generateAsync(); + var publicKeyStr = keyPair.publicKeyString(comment: comment); + await setSshKeys( + publicKey: publicKeyStr, + privateKey: keyPair.privateKeyString(), + ); + return publicKeyStr; + } catch (e) { + Log.e(e); + } + + return ""; +} diff --git a/lib/ssh/main_keygen.dart b/lib/ssh/main_keygen.dart new file mode 100644 index 00000000..caf7de00 --- /dev/null +++ b/lib/ssh/main_keygen.dart @@ -0,0 +1,21 @@ +import 'dart:io'; +import 'package:gitjournal/ssh/rsa_key_pair.dart'; + +void main() { + print("Generating new random key"); + var keyPair = RsaKeyPair.generate(); + var publicKeyStr = keyPair.publicKeyString(comment: "No Comment"); + var privateKeyStr = keyPair.privateKeyString(); + + var keyName = "key_"; + var num = 0; + while (File(keyName + num.toString()).existsSync()) { + num++; + } + + print("Writing public key to key_$num.pub"); + print("Writing private key to key_$num"); + + File("key_$num.pub").writeAsStringSync(publicKeyStr + '\n'); + File("key_$num").writeAsStringSync(privateKeyStr + '\n'); +}