//OTHER internal XMRTaskImageResponse XMR_GetImages(int[] SecretSalt, int[] SecretPW, BitfiWallet.NOXWS.ImageRequestTable[] requestTable) { XMRTaskImageResponse taskTransferResponse = new XMRTaskImageResponse(); try { byte[] keybytes = HDDerriveKey(SecretSalt, SecretPW, 0, "xmr"); var wlt = MoneroWallet.Wallet.OpenWallet(keybytes); BitfiWallet.XMRGen xMRGen = new BitfiWallet.XMRGen(wlt); var resp = xMRGen.XMR_GetImages(requestTable); taskTransferResponse.Error = resp.Error; taskTransferResponse.SpendKeyImages = resp.SpendKeyImages; taskTransferResponse.WalletAddress = resp.WalletAddress; Sclear.EraseBytes(keybytes); wlt.Dispose(); return(taskTransferResponse); } catch { taskTransferResponse.Error = "1"; return(taskTransferResponse); } }
public static Wallet OpenWallet(byte[] seed) { BitfiWallet.XMRGen xmrgen = new BitfiWallet.XMRGen(); var gwlt = xmrgen.GetWallet(Converters.ByteArrayToHex(seed)); Keys keys = new Keys(); keys.SpendPublic = Converters.HexToByteArray(gwlt.pub_spendKey_string); keys.SpendSecret = Converters.HexToByteArray(gwlt.sec_spendKey_string); keys.ViewPublic = Converters.HexToByteArray(gwlt.pub_viewKey_string); keys.ViewSecret = Converters.HexToByteArray(gwlt.sec_viewKey_string); string address = gwlt.address_string; return new Wallet(keys, seed, address); }
internal XMRTaskTransferResponse XMR_Sign(int[] SecretSalt, int[] SecretPW, string ToAddress, string Amount, string BaseData, string FromAddress) { XMRTaskTransferResponse taskTransferResponse = new XMRTaskTransferResponse(); byte[] keybytes = HDDerriveKey(SecretSalt, SecretPW, 0, "xmr"); try { byte[] bts = Convert.FromBase64String(BaseData); string jData = System.Text.Encoding.UTF8.GetString(bts); JsonSerializerSettings ser = new JsonSerializerSettings(); ser.MissingMemberHandling = MissingMemberHandling.Ignore; ser.NullValueHandling = NullValueHandling.Ignore; ser.ObjectCreationHandling = ObjectCreationHandling.Auto; ser.TypeNameHandling = TypeNameHandling.All; var data = JsonConvert.DeserializeObject <MoneroWallet.LedgerData>(jData, ser); var wlt = MoneroWallet.Wallet.OpenWallet(keybytes); Sclear.EraseBytes(keybytes); if (wlt.Address != FromAddress) { wlt.Dispose(); taskTransferResponse.Error = "Invalid information."; return(taskTransferResponse); } BitfiWallet.XMRGen xMRGen = new BitfiWallet.XMRGen(wlt); var send = xMRGen.XMR_Sign(ToAddress, Amount, BaseData, FromAddress); taskTransferResponse.Error = send.Error; taskTransferResponse.SpendKeyImages = send.SpendKeyImages; taskTransferResponse.TxnHex = send.TxnHex; wlt.Dispose(); if (string.IsNullOrEmpty(taskTransferResponse.Error)) { } return(taskTransferResponse); } catch (Exception ex) { taskTransferResponse.Error = ex.Message; return(taskTransferResponse); } }