From 8e2a30647b9f8dd683b25f39278a09968effcde2 Mon Sep 17 00:00:00 2001 From: Zachary Atkins Date: Sat, 10 Apr 2021 15:26:38 -0500 Subject: [PATCH 1/2] added cached keypair to manager --- loc_chain_app/lib/util/keyfile_manager.dart | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/loc_chain_app/lib/util/keyfile_manager.dart b/loc_chain_app/lib/util/keyfile_manager.dart index 97c2136..85bb962 100644 --- a/loc_chain_app/lib/util/keyfile_manager.dart +++ b/loc_chain_app/lib/util/keyfile_manager.dart @@ -3,6 +3,8 @@ import 'package:path_provider/path_provider.dart'; import 'dart:io'; class KeyFileManager { + static KeyPair keyPair = KeyPair(); + static Future get _localPath async { final directory = await getApplicationDocumentsDirectory(); return directory.path; @@ -19,6 +21,9 @@ class KeyFileManager { } static Future readKeyPair() async { + if (keyPair.hasPublicKey() && keyPair.hasPrivateKey()) { + return keyPair; + } try { String privKey = await _privKeyFile.then( (file) => file.readAsString(), @@ -26,11 +31,11 @@ class KeyFileManager { String pubKey = await _pubKeyFile.then( (file) => file.readAsString(), ); - - return KeyPair( + keyPair = KeyPair( privateKey: privKey, publicKey: pubKey, ); + return keyPair; } catch (e) { print(e); return KeyPair(); @@ -38,9 +43,10 @@ class KeyFileManager { } static Future writeKeyPair(KeyPair pair) async { + keyPair = pair; final File privKeyFile = await _privKeyFile; final File pubKeyFile = await _pubKeyFile; - pubKeyFile.writeAsString(pair.publicKey); - privKeyFile.writeAsString(pair.privateKey); + pubKeyFile.writeAsString(keyPair.publicKey); + privKeyFile.writeAsString(keyPair.privateKey); } } From a7c7133d4f685fec6b9270dec067ec80d09e2769 Mon Sep 17 00:00:00 2001 From: Zachary Atkins Date: Sat, 10 Apr 2021 15:26:51 -0500 Subject: [PATCH 2/2] implemented hashing --- loc_chain_app/lib/util/transaction_manager.dart | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/loc_chain_app/lib/util/transaction_manager.dart b/loc_chain_app/lib/util/transaction_manager.dart index 9bfee07..659fc0a 100644 --- a/loc_chain_app/lib/util/transaction_manager.dart +++ b/loc_chain_app/lib/util/transaction_manager.dart @@ -3,15 +3,25 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:sqflite/sqflite.dart'; import 'package:fast_rsa/rsa.dart'; +import 'package:loc_chain_app/util/keyfile_manager.dart'; + import 'dart:io'; class Transaction { - Transaction({required this.otherUserID}) { + Transaction({required this.hash}) { SharedPreferences.getInstance().then((s) => _id = s.getString('id') ?? '0'); } late final String _id; - final String otherUserID; - static Hash? makeTransactionHash() {} + final String hash; + static Future makeTransactionHash(String otherUserId) async { + String id = await SharedPreferences.getInstance() + .then((s) => s.getString('id') ?? ''); + bool idLess = id.compareTo(otherUserId) < 0; + var lesser = idLess ? id : otherUserId; + var greater = idLess ? otherUserId : id; + return RSA.signPKCS1v15("$lesser-$greater", Hash.HASH_SHA256, + KeyFileManager.keyPair.privateKey); + } } class TransactionsDBManager {