From 6af9199a76be71d84868d92428dbbc360f0d2b0c Mon Sep 17 00:00:00 2001 From: poka Date: Tue, 16 Aug 2022 01:44:45 +0200 Subject: [PATCH] add methode to import Cs account --- lib/providers/substrate_sdk.dart | 50 +++++++++++++++++++++++++++++++- lib/screens/home.dart | 2 ++ pubspec.lock | 4 +-- pubspec.yaml | 2 ++ 4 files changed, 55 insertions(+), 3 deletions(-) diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart index 4d476dd..09c90c4 100644 --- a/lib/providers/substrate_sdk.dart +++ b/lib/providers/substrate_sdk.dart @@ -1,3 +1,4 @@ +import 'dart:typed_data'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:gecko/globals.dart'; @@ -13,7 +14,8 @@ import 'package:polkawallet_sdk/storage/keyring.dart'; import 'package:polkawallet_sdk/storage/types/keyPairData.dart'; import 'package:provider/provider.dart'; import 'package:truncate/truncate.dart'; -// import 'package:web_socket_channel/io.dart'; +import 'package:pointycastle/pointycastle.dart' as pc; +import "package:hex/hex.dart"; class SubstrateSdk with ChangeNotifier { final WalletSDK sdk = WalletSDK(); @@ -368,6 +370,52 @@ class SubstrateSdk with ChangeNotifier { return nodeParams; } + Future csToV2(String salt, String password) async { + final scrypt = pc.KeyDerivator('scrypt'); + + scrypt.init( + pc.ScryptParameters( + 4096, + 16, + 1, + 32, + Uint8List.fromList(salt.codeUnits), + ), + ); + final rawSeed = scrypt.process(Uint8List.fromList(password.codeUnits)); + final rawSeedHex = '0x${HEX.encode(rawSeed)}'; + + // final newAddress1 = await sdk.api.keyring.addressFromRawSeed(ss58, + // cryptoType: CryptoType.ed25519, rawSeed: '0x$rawSeedString'); + + // log.d('csconvert address: ${newAddress1.address}'); + + final json = await sdk.api.keyring + .importAccount(keyring, + keyType: KeyType.rawSeed, + key: rawSeedHex, + name: 'test', + password: 'password', + derivePath: '', + cryptoType: CryptoType.ed25519) + .catchError((e) { + importIsLoading = false; + notifyListeners(); + }); + + final keypair = await sdk.api.keyring.addAccount( + keyring, + keyType: KeyType.rawSeed, + acc: json!, + password: password, + ); + await sdk.api.keyring.deleteAccount(keyring, keypair); + + // final keypair2 = KeyPairData.fromJson(json as Map); + + log.d(keypair.address); + } + Future importAccount( {String mnemonic = '', String derivePath = '', diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 4157045..7fe309e 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -39,6 +39,8 @@ class HomeScreen extends StatelessWidget { final bool isWalletsExists = myWalletProvider.checkIfWalletExist(); + // sub.csToV2('test', 'test'); + isTall = false; ratio = 1; if (MediaQuery.of(context).size.height >= 930) { diff --git a/pubspec.lock b/pubspec.lock index 017b92e..949cbc3 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -557,7 +557,7 @@ packages: source: hosted version: "2.1.0" hex: - dependency: transitive + dependency: "direct main" description: name: hex url: "https://pub.dartlang.org" @@ -1052,7 +1052,7 @@ packages: source: hosted version: "2.1.2" pointycastle: - dependency: transitive + dependency: "direct main" description: name: pointycastle url: "https://pub.dartlang.org" diff --git a/pubspec.yaml b/pubspec.yaml index 7ae857b..bee3f4a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -71,6 +71,8 @@ dependencies: easy_localization: ^3.0.1 flutter_markdown: ^0.6.10+2 dropdown_button2: ^1.6.3 + pointycastle: ^3.6.1 + hex: ^0.2.0 dev_dependencies: # flutter_launcher_icons: ^0.9.2