Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ran dotnet format #86

Merged
merged 4 commits into from
Jun 11, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@
"commands": [
"dotnet-cake"
]
},
"dotnet-format": {
"version": "5.1.225507",
"commands": [
"dotnet-format"
]
}
}
}
2 changes: 1 addition & 1 deletion build.cake
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ Task("Publish")
});

Task("Pack")
.IsDependentOn("Test")
.IsDependentOn("Publish")
.Does(() =>
{
var settings = new DotNetCorePackSettings
Expand Down
66 changes: 33 additions & 33 deletions src/Solnet.Examples/SolanaKeygenKeyGeneration.cs
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
using NBitcoin;
using Solnet.Wallet;
using System;

namespace Solnet.Examples
{
public class SolanaKeygenWallet
{
static void Example()
{
const string expectedSolKeygenPublicKey = "AZzmpdbZWARkPzL8GKRHjjwY74st4URgk9v7QBubeWba";
const string expectedSolKeygenPrivateKey = "2RitwnKZwoigHk9S3ftvFQhoTy5QQKAipNjZHDgCet8hyciUbJSuhMWDKRL8JKE784pK8jJPFaNerFsS6KXhY9K6";

// mnemonic and passphrase to derive seed
var passphrase = "thisiseightbytesithink";
var mnemonic = new Mnemonic("route clerk disease box emerge airport loud waste attitude film army tray forward deal onion eight catalog surface unit card window walnut wealth medal", Wordlist.English);

var solKeygenWallet = new Wallet.Wallet(mnemonic, passphrase, SeedMode.Bip39);

Console.WriteLine($"SOLLET publicKey>b58 {solKeygenWallet.Account.GetPublicKey}");
Console.WriteLine($"SOLLET privateKey>b58 {solKeygenWallet.Account.GetPrivateKey}");

if (solKeygenWallet.Account.GetPublicKey != expectedSolKeygenPublicKey || solKeygenWallet.Account.GetPrivateKey != expectedSolKeygenPrivateKey)
{
Console.WriteLine("NOT GOOD FOR THE SOL");
}
else
{
Console.WriteLine("GOOD FOR THE SOL");
}

}
}
using NBitcoin;
using Solnet.Wallet;
using System;
namespace Solnet.Examples
{
public class SolanaKeygenWallet
{
static void Example()
{
const string expectedSolKeygenPublicKey = "AZzmpdbZWARkPzL8GKRHjjwY74st4URgk9v7QBubeWba";
const string expectedSolKeygenPrivateKey = "2RitwnKZwoigHk9S3ftvFQhoTy5QQKAipNjZHDgCet8hyciUbJSuhMWDKRL8JKE784pK8jJPFaNerFsS6KXhY9K6";
// mnemonic and passphrase to derive seed
var passphrase = "thisiseightbytesithink";
var mnemonic = new Mnemonic("route clerk disease box emerge airport loud waste attitude film army tray forward deal onion eight catalog surface unit card window walnut wealth medal", Wordlist.English);
var solKeygenWallet = new Wallet.Wallet(mnemonic, passphrase, SeedMode.Bip39);
Console.WriteLine($"SOLLET publicKey>b58 {solKeygenWallet.Account.GetPublicKey}");
Console.WriteLine($"SOLLET privateKey>b58 {solKeygenWallet.Account.GetPrivateKey}");
if (solKeygenWallet.Account.GetPublicKey != expectedSolKeygenPublicKey || solKeygenWallet.Account.GetPrivateKey != expectedSolKeygenPrivateKey)
{
Console.WriteLine("NOT GOOD FOR THE SOL");
}
else
{
Console.WriteLine("GOOD FOR THE SOL");
}
}
}
}
88 changes: 44 additions & 44 deletions src/Solnet.Examples/SolletKeyGeneration.cs
Original file line number Diff line number Diff line change
@@ -1,45 +1,45 @@
using NBitcoin;
using System;
using System.Collections.Generic;

namespace Solnet.Examples
{
public class SolletKeyGeneration
{
static void Example(string[] args)
{
var expectedSolletAddresses = new List<string[]>
{
new []{"6bhhceZToGG9RsTe1nfNFXEMjavhj6CV55EsvearAt2z", "5S1UT7L6bQ8sVaPjpJyYFEEYh8HAXRXPFUEuj6kHQXs6ZE9F6a2wWrjdokAmSPP5HVP46bYxsrU8yr2FxxYmVBi6"},
new []{"9we6kjtbcZ2vy3GSLLsZTEhbAqXPTRvEyoxa8wxSqKp5", "22J7rH3DFJb1yz8JuWUWfrpsQrNsvZKov8sznfwHbPGTznSgQ8u6LQ6KixPC2mYCJDsfzME1FbdX1x89zKq4MU3K"},
new []{"3F2RNf2f2kWYgJ2XsqcjzVeh3rsEQnwf6cawtBiJGyKV", "5954a6aMxVnPTyMNdVKrSiqoVMRvZcwU7swGp9kHsV9HP9Eu81TebS4Mbq5ZGmZwUaJkkKoCJ2eJSY9cTdWzRXeF"},
new []{"GyWQGKYpvzFmjhnG5Pfw9jfvgDM7LB31HnTRPopCCS9", "tUV1EeY6CARAbuEfVqKS46X136PRBea8PcmYfHRWNQc6yYB14GkSBZ6PTybUt5W14A7FSJ6Mm6NN22fLhUhDUGu"},
new []{"GjtWSPacUQFVShQKRKPc342MLCdNiusn3WTJQKxuDfXi", "iLtErFEn6w5xbsUW63QLYMTJeX8TAgFTUDTgat3gxpaiN3AJbebv6ybtmTj1t1yvkqqY2k1uwFxaKZoCQAPcDZe"},
new []{"DjGCyxjGxpvEo921Ad4tUUWquiRG6dziJUCk8HKZoaKK", "3uvEiJiMyXqQmELLjxV8r3E7CyRFg42LUAxzz6q7fPhzTCxCzPkaMCQ9ARpWYDNiDXhue2Uma1C7KR9AkiiWUS8y"},
new []{"HU6aKFapq4RssJqV96rfE7vv1pepz5A5miPAMxGFso4X", "4xFZDEhhw3oVewE3UCvzLmhRWjjcqvVMxuYiETWiyaV2wJwEJ4ceDDE359NMirh43VYisViHAwsXjZ3F9fk6dAxB"},
new []{"HunD57AAvhBiX2SxmEDMbrgQ9pcqrtRyWKy7dWPEWYkJ", "2Z5CFuVDPQXxrB3iw5g6SAnKqApE1djAqtTZDA83rLZ1NDi6z13rwDX17qdyUDCxK9nDwKAHdVuy3h6jeXspcYxA"},
new []{"9KmfMX4Ne5ocb8C7PwjmJTWTpQTQcPhkeD2zY35mawhq", "c1BzdtL4RByNQnzcaUq3WuNLuyY4tQogGT7JWwy4YGBE8FGSgWUH8eNJFyJgXNYtwTKq4emhC4V132QX9REwujm"},
new []{"7MrtfwpJBw2hn4eopB2CVEKR1kePJV5kKmKX3wUAFsJ9", "4skUmBVmaLoriN9Ge8xcF4xQFJmF554rnRRa2u1yDbre2zj2wUpgCXUaPETLSAWNudCkNAkWM5oJFJRaeZY1g9JR"}
};

// mnemonic and passphrase to derive seed
var mnemonic = new Mnemonic("route clerk disease box emerge airport loud waste attitude film army tray forward deal onion eight catalog surface unit card window walnut wealth medal", Wordlist.English);

// The passphrase isn't used to harden the mnemonic in this case.
var solletWallet = new Wallet.Wallet(mnemonic);
var flag = true;

// Mimic sollet key generation
for (int i = 0; i < 10; i++)
{
var account = solletWallet.GetAccount(i);

Console.WriteLine($"SOLLET publicKey>b58 {account.GetPublicKey}");
Console.WriteLine($"SOLLET privateKey>b58 {account.GetPrivateKey}");

if (account.GetPublicKey != expectedSolletAddresses[i][0] || account.GetPrivateKey != expectedSolletAddresses[i][1]) flag = false;
}
Console.WriteLine(flag ? "GOOD FOR THE SOLLET" : "NOT GOOD FOR THE SOLLET");
}
}
using NBitcoin;
using System;
using System.Collections.Generic;
namespace Solnet.Examples
{
public class SolletKeyGeneration
{
static void Example(string[] args)
{
var expectedSolletAddresses = new List<string[]>
{
new []{"6bhhceZToGG9RsTe1nfNFXEMjavhj6CV55EsvearAt2z", "5S1UT7L6bQ8sVaPjpJyYFEEYh8HAXRXPFUEuj6kHQXs6ZE9F6a2wWrjdokAmSPP5HVP46bYxsrU8yr2FxxYmVBi6"},
new []{"9we6kjtbcZ2vy3GSLLsZTEhbAqXPTRvEyoxa8wxSqKp5", "22J7rH3DFJb1yz8JuWUWfrpsQrNsvZKov8sznfwHbPGTznSgQ8u6LQ6KixPC2mYCJDsfzME1FbdX1x89zKq4MU3K"},
new []{"3F2RNf2f2kWYgJ2XsqcjzVeh3rsEQnwf6cawtBiJGyKV", "5954a6aMxVnPTyMNdVKrSiqoVMRvZcwU7swGp9kHsV9HP9Eu81TebS4Mbq5ZGmZwUaJkkKoCJ2eJSY9cTdWzRXeF"},
new []{"GyWQGKYpvzFmjhnG5Pfw9jfvgDM7LB31HnTRPopCCS9", "tUV1EeY6CARAbuEfVqKS46X136PRBea8PcmYfHRWNQc6yYB14GkSBZ6PTybUt5W14A7FSJ6Mm6NN22fLhUhDUGu"},
new []{"GjtWSPacUQFVShQKRKPc342MLCdNiusn3WTJQKxuDfXi", "iLtErFEn6w5xbsUW63QLYMTJeX8TAgFTUDTgat3gxpaiN3AJbebv6ybtmTj1t1yvkqqY2k1uwFxaKZoCQAPcDZe"},
new []{"DjGCyxjGxpvEo921Ad4tUUWquiRG6dziJUCk8HKZoaKK", "3uvEiJiMyXqQmELLjxV8r3E7CyRFg42LUAxzz6q7fPhzTCxCzPkaMCQ9ARpWYDNiDXhue2Uma1C7KR9AkiiWUS8y"},
new []{"HU6aKFapq4RssJqV96rfE7vv1pepz5A5miPAMxGFso4X", "4xFZDEhhw3oVewE3UCvzLmhRWjjcqvVMxuYiETWiyaV2wJwEJ4ceDDE359NMirh43VYisViHAwsXjZ3F9fk6dAxB"},
new []{"HunD57AAvhBiX2SxmEDMbrgQ9pcqrtRyWKy7dWPEWYkJ", "2Z5CFuVDPQXxrB3iw5g6SAnKqApE1djAqtTZDA83rLZ1NDi6z13rwDX17qdyUDCxK9nDwKAHdVuy3h6jeXspcYxA"},
new []{"9KmfMX4Ne5ocb8C7PwjmJTWTpQTQcPhkeD2zY35mawhq", "c1BzdtL4RByNQnzcaUq3WuNLuyY4tQogGT7JWwy4YGBE8FGSgWUH8eNJFyJgXNYtwTKq4emhC4V132QX9REwujm"},
new []{"7MrtfwpJBw2hn4eopB2CVEKR1kePJV5kKmKX3wUAFsJ9", "4skUmBVmaLoriN9Ge8xcF4xQFJmF554rnRRa2u1yDbre2zj2wUpgCXUaPETLSAWNudCkNAkWM5oJFJRaeZY1g9JR"}
};
// mnemonic and passphrase to derive seed
var mnemonic = new Mnemonic("route clerk disease box emerge airport loud waste attitude film army tray forward deal onion eight catalog surface unit card window walnut wealth medal", Wordlist.English);
// The passphrase isn't used to harden the mnemonic in this case.
var solletWallet = new Wallet.Wallet(mnemonic);
var flag = true;
// Mimic sollet key generation
for (int i = 0; i < 10; i++)
{
var account = solletWallet.GetAccount(i);
Console.WriteLine($"SOLLET publicKey>b58 {account.GetPublicKey}");
Console.WriteLine($"SOLLET privateKey>b58 {account.GetPrivateKey}");
if (account.GetPublicKey != expectedSolletAddresses[i][0] || account.GetPrivateKey != expectedSolletAddresses[i][1]) flag = false;
}
Console.WriteLine(flag ? "GOOD FOR THE SOLLET" : "NOT GOOD FOR THE SOLLET");
}
}
}
166 changes: 83 additions & 83 deletions src/Solnet.Examples/SolletKeygenKeystore.cs
Original file line number Diff line number Diff line change
@@ -1,84 +1,84 @@
using NBitcoin;
using Solnet.KeyStore;
using Solnet.Wallet;
using System;
using System.Collections.Generic;
using System.Text;

namespace Solnet.Examples
{
public class SolletKeygenKeystore
{
static void Example(string[] args)
{
var expectedSolletAddresses = new List<string[]>
{
new []{"6bhhceZToGG9RsTe1nfNFXEMjavhj6CV55EsvearAt2z", "5S1UT7L6bQ8sVaPjpJyYFEEYh8HAXRXPFUEuj6kHQXs6ZE9F6a2wWrjdokAmSPP5HVP46bYxsrU8yr2FxxYmVBi6"},
new []{"9we6kjtbcZ2vy3GSLLsZTEhbAqXPTRvEyoxa8wxSqKp5", "22J7rH3DFJb1yz8JuWUWfrpsQrNsvZKov8sznfwHbPGTznSgQ8u6LQ6KixPC2mYCJDsfzME1FbdX1x89zKq4MU3K"},
new []{"3F2RNf2f2kWYgJ2XsqcjzVeh3rsEQnwf6cawtBiJGyKV", "5954a6aMxVnPTyMNdVKrSiqoVMRvZcwU7swGp9kHsV9HP9Eu81TebS4Mbq5ZGmZwUaJkkKoCJ2eJSY9cTdWzRXeF"},
new []{"GyWQGKYpvzFmjhnG5Pfw9jfvgDM7LB31HnTRPopCCS9", "tUV1EeY6CARAbuEfVqKS46X136PRBea8PcmYfHRWNQc6yYB14GkSBZ6PTybUt5W14A7FSJ6Mm6NN22fLhUhDUGu"},
new []{"GjtWSPacUQFVShQKRKPc342MLCdNiusn3WTJQKxuDfXi", "iLtErFEn6w5xbsUW63QLYMTJeX8TAgFTUDTgat3gxpaiN3AJbebv6ybtmTj1t1yvkqqY2k1uwFxaKZoCQAPcDZe"},
new []{"DjGCyxjGxpvEo921Ad4tUUWquiRG6dziJUCk8HKZoaKK", "3uvEiJiMyXqQmELLjxV8r3E7CyRFg42LUAxzz6q7fPhzTCxCzPkaMCQ9ARpWYDNiDXhue2Uma1C7KR9AkiiWUS8y"},
new []{"HU6aKFapq4RssJqV96rfE7vv1pepz5A5miPAMxGFso4X", "4xFZDEhhw3oVewE3UCvzLmhRWjjcqvVMxuYiETWiyaV2wJwEJ4ceDDE359NMirh43VYisViHAwsXjZ3F9fk6dAxB"},
new []{"HunD57AAvhBiX2SxmEDMbrgQ9pcqrtRyWKy7dWPEWYkJ", "2Z5CFuVDPQXxrB3iw5g6SAnKqApE1djAqtTZDA83rLZ1NDi6z13rwDX17qdyUDCxK9nDwKAHdVuy3h6jeXspcYxA"},
new []{"9KmfMX4Ne5ocb8C7PwjmJTWTpQTQcPhkeD2zY35mawhq", "c1BzdtL4RByNQnzcaUq3WuNLuyY4tQogGT7JWwy4YGBE8FGSgWUH8eNJFyJgXNYtwTKq4emhC4V132QX9REwujm"},
new []{"7MrtfwpJBw2hn4eopB2CVEKR1kePJV5kKmKX3wUAFsJ9", "4skUmBVmaLoriN9Ge8xcF4xQFJmF554rnRRa2u1yDbre2zj2wUpgCXUaPETLSAWNudCkNAkWM5oJFJRaeZY1g9JR"}
};
const string _password = "password";
const string mnemonicWords =
"route clerk disease box emerge airport loud waste attitude film army tray forward deal onion eight catalog surface unit card window walnut wealth medal";

var mnemonic = new Mnemonic(mnemonicWords, Wordlist.English);

var keystoreService = new SecretKeyStoreService();

// no passphrase to generate same keys as sollet
var wallet = new Wallet.Wallet(mnemonic);
var seed = wallet.DeriveMnemonicSeed();
Account account = null;
bool flag = true; // to check if the keys are the expected ones
Console.WriteLine($"Seed: {seed.ToStringByteArray()}\nAddress: {wallet.Account.GetPublicKey}");

/* 1. Encrypt mnemonic derived seed and generate keystore as json
var keystoreJson = keystoreService.EncryptAndGenerateDefaultKeyStoreAsJson(_password, seed, wallet.Account.EncodedPublicKey);
*/

/* 2. Encrypt the mnemonic as bytes */
var stringByteArray = Encoding.UTF8.GetBytes(mnemonic.ToString());
var encryptedKeystoreJson = keystoreService.EncryptAndGenerateDefaultKeyStoreAsJson(_password, stringByteArray, wallet.Account.GetPublicKey);

var keystoreJsonAddr = SecretKeyStoreService.GetAddressFromKeyStore(encryptedKeystoreJson);

Console.WriteLine($"Keystore JSON: {encryptedKeystoreJson}\nKeystore Address: {keystoreJsonAddr}");

/* 1. Decrypt mnemonic derived seed and generate wallet from it
var decryptedKeystore = keystoreService.DecryptKeyStoreFromJson(_password, keystoreJson);
*/

/* 2. Decrypt the mnemonic as bytes */
var decryptedKeystore = keystoreService.DecryptKeyStoreFromJson(_password, encryptedKeystoreJson);
var mnemonicString = Encoding.UTF8.GetString(decryptedKeystore);

/* 2. Restore the wallet from the restored mnemonic */
var restoredMnemonic = new Mnemonic(mnemonicString);
var restoredWallet = new Wallet.Wallet(restoredMnemonic);

// no passphrase to generate same keys as sollet
//var restoredWallet = new Wallet.Wallet(decryptedKeystore);
var restoredSeed = restoredWallet.DeriveMnemonicSeed();

Console.WriteLine($"Seed: {restoredSeed.ToStringByteArray()}");

// Mimic sollet key generation
for (int i = 0; i < 10; i++)
{
account = restoredWallet.GetAccount(i);

Console.WriteLine($"RESTORED SOLLET address {account.GetPublicKey}");

if (account.GetPublicKey != expectedSolletAddresses[i][0] || account.GetPrivateKey != expectedSolletAddresses[i][1]) flag = false;
}
Console.WriteLine(flag ? "GOOD RESTORE FOR THE SOLLET" : "NOT GOOD RESTORE FOR THE SOLLET");
}
}
using NBitcoin;
using Solnet.KeyStore;
using Solnet.Wallet;
using System;
using System.Collections.Generic;
using System.Text;
namespace Solnet.Examples
{
public class SolletKeygenKeystore
{
static void Example(string[] args)
{
var expectedSolletAddresses = new List<string[]>
{
new []{"6bhhceZToGG9RsTe1nfNFXEMjavhj6CV55EsvearAt2z", "5S1UT7L6bQ8sVaPjpJyYFEEYh8HAXRXPFUEuj6kHQXs6ZE9F6a2wWrjdokAmSPP5HVP46bYxsrU8yr2FxxYmVBi6"},
new []{"9we6kjtbcZ2vy3GSLLsZTEhbAqXPTRvEyoxa8wxSqKp5", "22J7rH3DFJb1yz8JuWUWfrpsQrNsvZKov8sznfwHbPGTznSgQ8u6LQ6KixPC2mYCJDsfzME1FbdX1x89zKq4MU3K"},
new []{"3F2RNf2f2kWYgJ2XsqcjzVeh3rsEQnwf6cawtBiJGyKV", "5954a6aMxVnPTyMNdVKrSiqoVMRvZcwU7swGp9kHsV9HP9Eu81TebS4Mbq5ZGmZwUaJkkKoCJ2eJSY9cTdWzRXeF"},
new []{"GyWQGKYpvzFmjhnG5Pfw9jfvgDM7LB31HnTRPopCCS9", "tUV1EeY6CARAbuEfVqKS46X136PRBea8PcmYfHRWNQc6yYB14GkSBZ6PTybUt5W14A7FSJ6Mm6NN22fLhUhDUGu"},
new []{"GjtWSPacUQFVShQKRKPc342MLCdNiusn3WTJQKxuDfXi", "iLtErFEn6w5xbsUW63QLYMTJeX8TAgFTUDTgat3gxpaiN3AJbebv6ybtmTj1t1yvkqqY2k1uwFxaKZoCQAPcDZe"},
new []{"DjGCyxjGxpvEo921Ad4tUUWquiRG6dziJUCk8HKZoaKK", "3uvEiJiMyXqQmELLjxV8r3E7CyRFg42LUAxzz6q7fPhzTCxCzPkaMCQ9ARpWYDNiDXhue2Uma1C7KR9AkiiWUS8y"},
new []{"HU6aKFapq4RssJqV96rfE7vv1pepz5A5miPAMxGFso4X", "4xFZDEhhw3oVewE3UCvzLmhRWjjcqvVMxuYiETWiyaV2wJwEJ4ceDDE359NMirh43VYisViHAwsXjZ3F9fk6dAxB"},
new []{"HunD57AAvhBiX2SxmEDMbrgQ9pcqrtRyWKy7dWPEWYkJ", "2Z5CFuVDPQXxrB3iw5g6SAnKqApE1djAqtTZDA83rLZ1NDi6z13rwDX17qdyUDCxK9nDwKAHdVuy3h6jeXspcYxA"},
new []{"9KmfMX4Ne5ocb8C7PwjmJTWTpQTQcPhkeD2zY35mawhq", "c1BzdtL4RByNQnzcaUq3WuNLuyY4tQogGT7JWwy4YGBE8FGSgWUH8eNJFyJgXNYtwTKq4emhC4V132QX9REwujm"},
new []{"7MrtfwpJBw2hn4eopB2CVEKR1kePJV5kKmKX3wUAFsJ9", "4skUmBVmaLoriN9Ge8xcF4xQFJmF554rnRRa2u1yDbre2zj2wUpgCXUaPETLSAWNudCkNAkWM5oJFJRaeZY1g9JR"}
};
const string _password = "password";
const string mnemonicWords =
"route clerk disease box emerge airport loud waste attitude film army tray forward deal onion eight catalog surface unit card window walnut wealth medal";
var mnemonic = new Mnemonic(mnemonicWords, Wordlist.English);
var keystoreService = new SecretKeyStoreService();
// no passphrase to generate same keys as sollet
var wallet = new Wallet.Wallet(mnemonic);
var seed = wallet.DeriveMnemonicSeed();
Account account = null;
bool flag = true; // to check if the keys are the expected ones
Console.WriteLine($"Seed: {seed.ToStringByteArray()}\nAddress: {wallet.Account.GetPublicKey}");
/* 1. Encrypt mnemonic derived seed and generate keystore as json
var keystoreJson = keystoreService.EncryptAndGenerateDefaultKeyStoreAsJson(_password, seed, wallet.Account.EncodedPublicKey);
*/
/* 2. Encrypt the mnemonic as bytes */
var stringByteArray = Encoding.UTF8.GetBytes(mnemonic.ToString());
var encryptedKeystoreJson = keystoreService.EncryptAndGenerateDefaultKeyStoreAsJson(_password, stringByteArray, wallet.Account.GetPublicKey);
var keystoreJsonAddr = SecretKeyStoreService.GetAddressFromKeyStore(encryptedKeystoreJson);
Console.WriteLine($"Keystore JSON: {encryptedKeystoreJson}\nKeystore Address: {keystoreJsonAddr}");
/* 1. Decrypt mnemonic derived seed and generate wallet from it
var decryptedKeystore = keystoreService.DecryptKeyStoreFromJson(_password, keystoreJson);
*/
/* 2. Decrypt the mnemonic as bytes */
var decryptedKeystore = keystoreService.DecryptKeyStoreFromJson(_password, encryptedKeystoreJson);
var mnemonicString = Encoding.UTF8.GetString(decryptedKeystore);
/* 2. Restore the wallet from the restored mnemonic */
var restoredMnemonic = new Mnemonic(mnemonicString);
var restoredWallet = new Wallet.Wallet(restoredMnemonic);
// no passphrase to generate same keys as sollet
//var restoredWallet = new Wallet.Wallet(decryptedKeystore);
var restoredSeed = restoredWallet.DeriveMnemonicSeed();
Console.WriteLine($"Seed: {restoredSeed.ToStringByteArray()}");
// Mimic sollet key generation
for (int i = 0; i < 10; i++)
{
account = restoredWallet.GetAccount(i);
Console.WriteLine($"RESTORED SOLLET address {account.GetPublicKey}");
if (account.GetPublicKey != expectedSolletAddresses[i][0] || account.GetPrivateKey != expectedSolletAddresses[i][1]) flag = false;
}
Console.WriteLine(flag ? "GOOD RESTORE FOR THE SOLLET" : "NOT GOOD RESTORE FOR THE SOLLET");
}
}
}
Loading