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.
This commit is contained in:
Vishesh Handa
2020-05-18 01:23:18 +02:00
parent 53f02db7f4
commit 1570daa412
2 changed files with 42 additions and 0 deletions

21
lib/ssh/keygen.dart Normal file
View File

@ -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<String> 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 "";
}

21
lib/ssh/main_keygen.dart Normal file
View File

@ -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');
}