DRAFT:Add support of reading system privatekey (.ssh/id_rsa)

This commit is contained in:
calvin
2023-08-04 18:41:04 +08:00
parent 0260444ca0
commit 486b920d6b
3 changed files with 38 additions and 1 deletions

View File

@@ -1,3 +1,6 @@
import 'dart:io';
import 'package:toolbox/core/utils/misc.dart' show getHome, pathJoin;
import 'package:toolbox/data/model/app/error.dart';
import 'package:hive_flutter/hive_flutter.dart';
part 'private_key_info.g.dart';
@@ -29,3 +32,15 @@ class PrivateKeyInfo {
return data;
}
}
class SystemPrivateKeyInfo extends PrivateKeyInfo {
SystemPrivateKeyInfo() : super("System private key", "", "");
Future getKey() async {
File idRsaFile = File(pathJoin(getHome(), ".ssh/id_rsa"));
if (!await idRsaFile.exists()) {
this.privateKey="";
}
this.privateKey= await idRsaFile.readAsString();
}
}

View File

@@ -1,7 +1,10 @@
import 'dart:async';
import 'package:toolbox/core/persistant_store.dart';
import 'package:toolbox/data/model/server/private_key_info.dart';
import 'package:toolbox/core/utils/platform.dart';
class PrivateKeyStore extends PersistentStore {
late SystemPrivateKeyInfo systemPrivateKeyInfo;
void put(PrivateKeyInfo info) {
box.put(info.id, info);
}
@@ -15,10 +18,19 @@ class PrivateKeyStore extends PersistentStore {
ps.add(s);
}
}
if (isLinux || isMacOS) {
SystemPrivateKeyInfo sysPk = SystemPrivateKeyInfo();
unawaited(sysPk.getKey());
systemPrivateKeyInfo = sysPk;
ps.add(sysPk);
}
return ps;
}
PrivateKeyInfo? get(String? id) {
if (id == "System private key") {
return this.systemPrivateKeyInfo;
}
if (id == null) return null;
return box.get(id);
}