//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);
            }
        }
Ejemplo n.º 2
0
 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);
            }
        }