|
@@ -13,10 +13,15 @@ import 'global.dart';
|
|
|
Future<RSAPrivateKey?> getRSAPrivateKey(String username) async {
|
|
Future<RSAPrivateKey?> getRSAPrivateKey(String username) async {
|
|
|
try {
|
|
try {
|
|
|
final storage = FlutterSecureStorage();
|
|
final storage = FlutterSecureStorage();
|
|
|
- String? s = await storage.read(key: 'e2ee chat private key of $username');
|
|
|
|
|
|
|
+ final _key = 'e2ee chat private key of $username';
|
|
|
|
|
+ String? s = await storage.read(key: _key);
|
|
|
|
|
+ if (s == null) {
|
|
|
|
|
+ // TODO: 如果没有私钥,需要生成
|
|
|
|
|
+ storage.write(key: _key, value: s);
|
|
|
|
|
+ }
|
|
|
Directory tempDir = await getTemporaryDirectory();
|
|
Directory tempDir = await getTemporaryDirectory();
|
|
|
String tempPath = tempDir.path;
|
|
String tempPath = tempDir.path;
|
|
|
- String filePath = '$tempPath/public.pem';
|
|
|
|
|
|
|
+ String filePath = '$tempPath/private.pem';
|
|
|
final file = File(filePath);
|
|
final file = File(filePath);
|
|
|
final privateKey = await parseKeyFromFile<RSAPrivateKey>(filePath);
|
|
final privateKey = await parseKeyFromFile<RSAPrivateKey>(filePath);
|
|
|
file.delete();
|
|
file.delete();
|
|
@@ -30,7 +35,7 @@ Future<RSAPublicKey?> getRSAPublicKey(String contents) async {
|
|
|
try {
|
|
try {
|
|
|
Directory tempDir = await getTemporaryDirectory();
|
|
Directory tempDir = await getTemporaryDirectory();
|
|
|
String tempPath = tempDir.path;
|
|
String tempPath = tempDir.path;
|
|
|
- String filePath = '$tempPath/private.pem';
|
|
|
|
|
|
|
+ String filePath = '$tempPath/public.pem';
|
|
|
final file = File(filePath);
|
|
final file = File(filePath);
|
|
|
file.writeAsString(contents);
|
|
file.writeAsString(contents);
|
|
|
final publicKey = await parseKeyFromFile<RSAPublicKey>(filePath);
|
|
final publicKey = await parseKeyFromFile<RSAPublicKey>(filePath);
|