mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2024-12-24 12:39:37 +00:00
83ef61e928
* version bump to 3.13.9, auth working on mac * bump flutter version in workflow file * workflow fix * test fix * downgrade flutter version * test fix * test fix * update gradle version * start working on ui for message signing * updates * sign working for a few wallet types * updates & verification for electrum currencies * nano support * sign/verify working on eth, bitcoin broken * update translations * Implement Verify Message for Monero * save [skip ci] * pub key extraction working * fixes for electrum signing * verify working for solana! * electrum still not working :( [skip ci] * electrum messages working! * fixes for updated dart version, localization file updates * remove accidental inclusion * missed some unimplemented throws * Update res/values/strings_de.arb Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com> * Apply suggestions from code review Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com> * review suggestions and updates [skip ci] * [skip ci] add polygon * [skip ci] merge mac-auth/update version * fix litecoin * bio auth mac fix * remove comment and change duration from 2 to 0 * cherry pick previous changes * litecoin fixes, sign form fixes, use new walletAddressPicker * support accounts * verify messages working for monero * working sign and verify messages for nano * electrum signing working [skip ci] * additional nano fixes * update translations * attempt to decode signatures with base64 * workaround for secure storage bug on mac * bump version to 3.19.5 (because breez will need this version anyways) * some code cleanup * some changess didn't get saved * just documenting the issue [skip ci] * undo accidental removal + minor code cleanup * merge conflicts * merge fixes [skip ci] * add tron support * [wip] fixing * remove duplicate references to electrum path for maintainability * fixes * minor fix * fixes * undo debug comment * update migration for all electrum based wallets * hotfixes * copy over the rest of the fixes * minor code cleanup [skip ci] * updates * electrum signing workinggit statusgit statusgit statusgit status! * copy same fixes for litecoin * litecoin fixes * add v to litecoin signatures * fix dependencies * fix bitcoin_base version * merge fix * dep override * fix conflicts with main * trial fix for android build * fixes * fix * dep fix, should build * fix signing for bitcoin cash * [skip ci] minor code cleanup * [skip ci] minor code cleanup 2 * forgot wonero, various other fixes * more fixes * fix solana (untested) --------- Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com> Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
55 lines
1.5 KiB
Dart
55 lines
1.5 KiB
Dart
import 'package:cake_wallet/core/execution_state.dart';
|
|
import 'package:cake_wallet/generated/i18n.dart';
|
|
import 'package:cw_core/wallet_base.dart';
|
|
import 'package:cw_core/wallet_type.dart';
|
|
import 'package:mobx/mobx.dart';
|
|
|
|
part 'sign_view_model.g.dart';
|
|
|
|
class SignViewModel = SignViewModelBase with _$SignViewModel;
|
|
|
|
abstract class SignViewModelBase with Store {
|
|
SignViewModelBase(this.wallet) : state = InitialExecutionState();
|
|
|
|
final WalletBase wallet;
|
|
|
|
@observable
|
|
ExecutionState state;
|
|
|
|
@observable
|
|
bool isSigning = true;
|
|
|
|
bool get signIncludesAddress => [
|
|
WalletType.monero,
|
|
WalletType.bitcoin,
|
|
WalletType.bitcoinCash,
|
|
WalletType.litecoin,
|
|
WalletType.haven,
|
|
].contains(wallet.type);
|
|
|
|
@action
|
|
Future<void> sign(String message, {String? address}) async {
|
|
state = IsExecutingState();
|
|
try {
|
|
final signature = await wallet.signMessage(message, address: address);
|
|
state = ExecutedSuccessfullyState(payload: signature);
|
|
} catch (e) {
|
|
state = FailureState(e.toString());
|
|
}
|
|
}
|
|
|
|
@action
|
|
Future<void> verify(String message, String signature, {String? address}) async {
|
|
state = IsExecutingState();
|
|
try {
|
|
final sig = await wallet.verifyMessage(message, signature, address: address);
|
|
if (sig) {
|
|
state = ExecutedSuccessfullyState();
|
|
} else {
|
|
state = FailureState(S.current.signature_invalid_error);
|
|
}
|
|
} catch (e) {
|
|
state = FailureState(e.toString());
|
|
}
|
|
}
|
|
}
|