Add wallet info page
ADD
WalletWasabi.Fluent/ViewModels/Wallets/Advanced/WalletInfoViewModel.cs
+using NBitcoin;
+using WalletWasabi.Fluent.ViewModels.Navigation;
+using WalletWasabi.Userfacing;
+using WalletWasabi.Wallets;
+
+namespace WalletWasabi.Fluent.ViewModels.Wallets.Advanced
+{
+ [NavigationMetaData(Title = "Wallet Info")]
+ public partial class WalletInfoViewModel : RoutableViewModel
+ {
+ public WalletInfoViewModel(Wallet wallet)
+ {
+ var network = wallet.Network;
+
+ SetupCancel(enableCancel: true, enableCancelOnEscape: true, enableCancelOnPressed: true);
+
+ if (!wallet.KeyManager.IsWatchOnly)
+ {
+ var secret = PasswordHelper.GetMasterExtKey(wallet.KeyManager, wallet.Kitchen.SaltSoup(), out _);
+
+ ExtendedMasterPrivateKey = secret.GetWif(network).ToWif();
+ ExtendedAccountPrivateKey = secret.Derive(wallet.KeyManager.AccountKeyPath).GetWif(network).ToWif();
+ ExtendedMasterZprv = secret.ToZPrv(network);
+ ExtendedAccountZprv = secret.Derive(wallet.KeyManager.AccountKeyPath).ToZPrv(network);
+ }
+
+ ExtendedAccountPublicKey = wallet.KeyManager.ExtPubKey.ToString(network);
+ ExtendedAccountZpub = wallet.KeyManager.ExtPubKey.ToZpub(network);
+ AccountKeyPath = $"m/{wallet.KeyManager.AccountKeyPath}";
+ MasterKeyFingerprint = wallet.KeyManager.MasterFingerprint.ToString();
+ }
+
+ public string ExtendedAccountPublicKey { get; }
+
+ public string ExtendedAccountZpub { get; }
+
+ public string AccountKeyPath { get; }
+
+ public string? MasterKeyFingerprint { get; }
+
+ public string? ExtendedMasterPrivateKey { get; }
+
+ public string? ExtendedAccountPrivateKey { get; }
+
+ public string? ExtendedMasterZprv { get; }
+
+ public string? ExtendedAccountZprv { get; }
+ }
+}

ADD
WalletWasabi.Fluent/Views/Wallets/Advanced/WalletInfoView.axaml
+<UserControl xmlns="https://github.com/avaloniaui"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:c="using:WalletWasabi.Fluent.Controls"
+ mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
+ xmlns:behaviors="clr-namespace:WalletWasabi.Fluent.Behaviors"
+ xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
+ xmlns:advanced="clr-namespace:WalletWasabi.Fluent.ViewModels.Wallets.Advanced"
+ x:DataType="advanced:WalletInfoViewModel"
+ x:CompileBindings="True"
+ x:Class="WalletWasabi.Fluent.Views.Wallets.Advanced.WalletInfoView">
+ <c:ContentArea Title="{Binding Title}"
+ EnableNext="True" NextContent="Done"
+ EnableCancel="{Binding EnableCancel}"
+ EnableBack="{Binding EnableBack}">
+ <StackPanel Spacing="10" Margin="0 0 20 0">
+ <c:PreviewItem Icon="{StaticResource wasabi_logo}"
+ Text="Extended Master Private Key"
+ Content="{Binding ExtendedMasterPrivateKey}"
+ CopyParameter="{Binding ExtendedMasterPrivateKey}"
+ IsVisible="{Binding !!ExtendedMasterPrivateKey}" />
+ <Separator IsVisible="{Binding !!ExtendedMasterPrivateKey}" />
+ <c:PreviewItem Icon="{StaticResource wasabi_logo}"
+ Text="Extended Master zprv"
+ Content="{Binding ExtendedMasterZprv}"
+ CopyParameter="{Binding ExtendedMasterZprv}"
+ IsVisible="{Binding !!ExtendedMasterZprv}" />
+ <Separator IsVisible="{Binding !!ExtendedMasterZprv}" />
+ <c:PreviewItem Icon="{StaticResource wasabi_logo}"
+ Text="Extended Master Fingerprint"
+ Content="{Binding MasterKeyFingerprint}"
+ CopyParameter="{Binding MasterKeyFingerprint}" />
+ <Separator />
+ <c:PreviewItem Icon="{StaticResource wasabi_logo}"
+ Text="Account Key Path"
+ Content="{Binding AccountKeyPath}"
+ CopyParameter="{Binding AccountKeyPath}" />
+ <Separator />
+ <c:PreviewItem Icon="{StaticResource wasabi_logo}"
+ Text="Extended Account Private Key"
+ Content="{Binding ExtendedAccountPrivateKey}"
+ CopyParameter="{Binding ExtendedAccountPrivateKey}"
+ IsVisible="{Binding !!ExtendedAccountPrivateKey}" />
+ <Separator IsVisible="{Binding !!ExtendedAccountPrivateKey}" />
+ <c:PreviewItem Icon="{StaticResource wasabi_logo}"
+ Text="Extended Account zprv"
+ Content="{Binding ExtendedAccountZprv}"
+ CopyParameter="{Binding ExtendedAccountZprv}"
+ IsVisible="{Binding !!ExtendedAccountZprv}" />
+ <Separator IsVisible="{Binding !!ExtendedAccountZprv}" />
+ <c:PreviewItem Icon="{StaticResource wasabi_logo}"
+ Text="Extended Account Public Key"
+ Content="{Binding ExtendedAccountPublicKey}"
+ CopyParameter="{Binding ExtendedAccountPublicKey}" />
+ <Separator />
+ <c:PreviewItem Icon="{StaticResource wasabi_logo}"
+ Text="Extended Account zpub"
+ Content="{Binding ExtendedAccountZpub}"
+ CopyParameter="{Binding ExtendedAccountZpub}" />
+ </StackPanel>
+ </c:ContentArea>
+</UserControl>

ADD
WalletWasabi.Fluent/Views/Wallets/Advanced/WalletInfoView.axaml.cs
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace WalletWasabi.Fluent.Views.Wallets.Advanced
+{
+ public class WalletInfoView : UserControl
+ {
+ public WalletInfoView()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+ }
+}

Add wallet info page