public async Task <string> GetAddressAsync( IAddressPath addressPath, bool isPublicKey, bool display, AddressType addressType, InputScriptType inputScriptType, string coinName) { try { if (addressPath == null) { throw new ArgumentNullException(nameof(addressPath)); } var path = addressPath.ToArray(); if (isPublicKey) { var publicKey = await SendMessageAsync <PublicKey, GetPublicKey>(new GetPublicKey { CoinName = coinName, AddressNs = path, ShowDisplay = display, ScriptType = inputScriptType }).ConfigureAwait(false); return(publicKey.Xpub); } switch (addressType) { case AddressType.Bitcoin: //Ultra hack to deal with a coin name change in Firmware Version 1.6.2 if (Features.MajorVersion <= 1 && Features.MinorVersion < 6 && string.Equals(coinName, "Bgold", StringComparison.Ordinal)) { coinName = "Bitcoin Gold"; } return((await SendMessageAsync <Address, GetAddress>(new GetAddress { ShowDisplay = display, AddressNs = path, CoinName = coinName, ScriptType = inputScriptType }).ConfigureAwait(false)).address); case AddressType.Ethereum: return(await GetEthereumAddress(display, path).ConfigureAwait(false)); case AddressType.Cardano: CheckForSupported(nameof(AddressType.Cardano)); return((await SendMessageAsync <CardanoAddress, CardanoGetAddress>(new CardanoGetAddress { ShowDisplay = display, AddressNs = path }).ConfigureAwait(false)).Address); case AddressType.Stellar: return((await SendMessageAsync <StellarAddress, StellarGetAddress>(new StellarGetAddress { ShowDisplay = display, AddressNs = path }).ConfigureAwait(false)).Address); case AddressType.Tezoz: CheckForSupported(nameof(AddressType.Tezoz)); return((await SendMessageAsync <TezosAddress, TezosGetAddress>(new TezosGetAddress { ShowDisplay = display, AddressNs = path }).ConfigureAwait(false)).Address); case AddressType.NEM: return((await SendMessageAsync <NEMAddress, NEMGetAddress>(new NEMGetAddress { ShowDisplay = display, AddressNs = path }).ConfigureAwait(false)).Address); default: throw new NotImplementedException(); } } catch (Exception ex) { Logger.LogError(ex, "Error Getting Trezor Address {LogSection}", LogSection); throw; } }
/// <summary> /// /// </summary> /// <param name="info"></param> /// <param name="context"></param> protected InputScriptNode(SerializationInfo info, StreamingContext context) : base(info, context) { mScriptType = (InputScriptType)Enum.Parse(typeof(InputScriptType), info.GetString("ScriptType")); mInput = info.GetString("InitialValue"); }
public Task <string> GetAddressAsync(IAddressPath addressPath, bool isPublicKey, bool display, AddressType addressType, InputScriptType inputScriptType) => GetAddressAsync(addressPath, isPublicKey, display, addressType, inputScriptType, null);
public async Task <string> GetAddressAsync(IAddressPath addressPath, bool isPublicKey, bool display, AddressType addressType, InputScriptType inputScriptType, string coinName) { try { if (addressPath == null) { throw new ArgumentNullException(nameof(addressPath)); } var path = addressPath.ToArray(); if (isPublicKey) { var publicKey = await SendMessageAsync <PublicKey, GetPublicKey>(new GetPublicKey { CoinName = coinName, AddressNs = path, ShowDisplay = display, ScriptType = inputScriptType }); return(publicKey.Xpub); } switch (addressType) { case AddressType.Bitcoin: //Ultra hack to deal with a coin name change in Firmware Version 1.6.2 if (Features.MajorVersion <= 1 && Features.MinorVersion < 6 && string.Equals(coinName, "Bgold", StringComparison.Ordinal)) { coinName = "Bitcoin Gold"; } return((await SendMessageAsync <Address, GetAddress>(new GetAddress { ShowDisplay = display, AddressNs = path, CoinName = coinName, ScriptType = inputScriptType })).address); case AddressType.Ethereum: var ethereumAddresssds = await SendMessageAsync <object, EthereumGetAddress>(new EthereumGetAddress { ShowDisplay = display, AddressNs = path }); switch (ethereumAddresssds) { case EthereumAddress ethereumAddress: return(ethereumAddress.Address.ToLower()); case Contracts.BackwardsCompatible.EthereumAddress ethereumAddress: //Ouch. Nasty var sb = new StringBuilder(); foreach (var b in ethereumAddress.Address) { sb.Append(b.ToString("X2").ToLower()); } var hexString = sb.ToString(); hexString = $"0x{hexString}"; return(hexString); } throw new NotImplementedException(); case AddressType.Cardano: CheckForSupported(nameof(AddressType.Cardano)); return((await SendMessageAsync <CardanoAddress, CardanoGetAddress>(new CardanoGetAddress { ShowDisplay = display, AddressNs = path })).Address); case AddressType.Stellar: return((await SendMessageAsync <StellarAddress, StellarGetAddress>(new StellarGetAddress { ShowDisplay = display, AddressNs = path })).Address); case AddressType.Tezoz: CheckForSupported(nameof(AddressType.Tezoz)); return((await SendMessageAsync <TezosAddress, TezosGetAddress>(new TezosGetAddress { ShowDisplay = display, AddressNs = path })).Address); case AddressType.NEM: return((await SendMessageAsync <NEMAddress, NEMGetAddress>(new NEMGetAddress { ShowDisplay = display, AddressNs = path })).Address); default: throw new NotImplementedException(); } } catch (Exception ex) { Logger?.Log("Error Getting Trezor Address", LogSection, ex, LogLevel.Error); throw; } }
public async Task <string> GetAddressAsync(IAddressPath addressPath, bool isPublicKey, bool display, AddressType addressType, InputScriptType inputScriptType, string coinName) { try { var path = addressPath.ToArray(); if (isPublicKey) { var publicKey = await SendMessageAsync <PublicKey, GetPublicKey>(new GetPublicKey { CoinName = coinName, AddressNs = path, ShowDisplay = display, ScriptType = inputScriptType }); return(publicKey.Xpub); } else { switch (addressType) { case AddressType.Bitcoin: //Ultra hack to deal with a coin name change in Firmware Version 1.6.2 if ((Features.MajorVersion <= 1 && Features.MinorVersion < 6) && coinName == "Bgold") { coinName = "Bitcoin Gold"; } return((await SendMessageAsync <Address, GetAddress>(new GetAddress { ShowDisplay = display, AddressNs = path, CoinName = coinName, ScriptType = inputScriptType })).address); case AddressType.Ethereum: var ethereumAddress = await SendMessageAsync <EthereumAddress, EthereumGetAddress>(new EthereumGetAddress { ShowDisplay = display, AddressNs = path }); var sb = new StringBuilder(); foreach (var b in ethereumAddress.Address) { sb.Append(b.ToString("X2").ToLower()); } var hexString = sb.ToString(); return($"0x{hexString}"); default: throw new NotImplementedException(); } } } catch (Exception ex) { Logger.Log("Error Getting Trezor Address", ex, LogSection); throw; } }
public async Task <string> GetAddressAsync(IAddressPath addressPath, bool isPublicKey, bool display, AddressType addressType, InputScriptType inputScriptType, string coinName) { try { if (addressPath == null) { throw new ArgumentNullException(nameof(addressPath)); } var path = addressPath.ToArray(); if (isPublicKey) { var publicKey = await SendMessageAsync <PublicKey, GetPublicKey>(new GetPublicKey { AddressNs = path, ShowDisplay = display, ScriptType = inputScriptType }); return(publicKey.Xpub); } else { switch (addressType) { case AddressType.Bitcoin: return((await SendMessageAsync <Address, GetAddress>(new GetAddress { ShowDisplay = display, AddressNs = path, CoinName = coinName, ScriptType = inputScriptType })).address); case AddressType.Ethereum: var ethereumAddress = await SendMessageAsync <EthereumAddress, EthereumGetAddress>(new EthereumGetAddress { ShowDisplay = display, AddressNs = path }); var sb = new StringBuilder(); foreach (var b in ethereumAddress.Address) { sb.Append(b.ToString("X2").ToLower()); } var hexString = sb.ToString(); return($"0x{hexString}"); default: throw new NotImplementedException(); } } } catch (Exception ex) { Logger.Log("Error Getting KeepKey Address", LogSection, ex, LogLevel.Error); throw; } }
public async Task <string> GetAddressAsync(IAddressPath addressPath, bool isPublicKey, bool display, AddressType addressType, InputScriptType inputScriptType, string coinName) { try { var path = addressPath.ToArray(); if (isPublicKey) { var publicKey = await SendMessageAsync <PublicKey, GetPublicKey>(new GetPublicKey { AddressNs = path, ShowDisplay = display, ScriptType = inputScriptType }); return(publicKey.Xpub); } else { switch (addressType) { case AddressType.Bitcoin: return((await SendMessageAsync <Address, GetAddress>(new GetAddress { ShowDisplay = display, AddressNs = path, CoinName = coinName, ScriptType = inputScriptType })).address); case AddressType.Ethereum: var ethereumAddress = await SendMessageAsync <EthereumAddress, EthereumGetAddress>(new EthereumGetAddress { ShowDisplay = display, AddressNs = path }); return($"0x{ethereumAddress.Address.ToHex().ToLower()}"); default: throw new NotImplementedException(); } } } catch (Exception ex) { Log.Error($"Error Getting KeepKey Address \n {ex}"); throw; } }