Пример #1
0
 public address_response GetWallet(string seed)
 {
     compute_address adr = new compute_address();
     adr.seed_string = seed;
     adr.nettype_string = "MAINNET";
     string genKeysData = JsonConvert.SerializeObject(adr, ser);
     byte[] genKeysDataArr = Encoding.UTF8.GetBytes(genKeysData);
     var genKeysDataLen = XMRNative.GetKeysAndAddress(genKeysDataArr, genKeysDataArr.Length);
     byte[] genKeysDataRes = new byte[genKeysDataLen];
     XMRNative.GetKeysAndAddressGetData(genKeysDataRes, genKeysDataLen);
     var genKeysDataString = Encoding.UTF8.GetString(genKeysDataRes);
     return JsonConvert.DeserializeObject\\(genKeysDataString, ser);
 }
Пример #2
0
        public XMRTaskImageResponse XMR_GetImages(BitfiWallet.NOXWS.ImageRequestTable[] requestTable)
        {
            XMRTaskImageResponse taskTransferResponse = new XMRTaskImageResponse();

            try
            {
                List <string> imgList = new List <string>();
                foreach (var tx in requestTable)
                {
                    compute_key_images img = new compute_key_images();
                    img.pub_spendKey_string = MoneroWallet.Converters.ByteArrayToHex(wallet.Keys.SpendPublic);
                    img.sec_spendKey_string = MoneroWallet.Converters.ByteArrayToHex(wallet.Keys.SpendSecret);
                    img.sec_viewKey_string  = MoneroWallet.Converters.ByteArrayToHex(wallet.Keys.ViewSecret);
                    img.tx_pub_key          = tx.TxPubKey;
                    img.out_index           = tx.OutIndex;

                    byte[] abcArr = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(img, ser));
                    var    rrr    = XMRNative.GenerateKeyImage(abcArr, abcArr.Length);
                    byte[] res123 = new byte[rrr];
                    XMRNative.GenerateKeyImageGetData(res123, rrr);
                    var result123 = Encoding.UTF8.GetString(res123);

                    var resp = JsonConvert.DeserializeObject <key_images_response>(result123, ser);
                    if (resp != null && !string.IsNullOrEmpty(resp.retVal))
                    {
                        if (string.IsNullOrEmpty(resp.err_msg))
                        {
                            imgList.Add(resp.retVal);
                        }
                    }
                }


                taskTransferResponse.SpendKeyImages = imgList.ToArray();
                taskTransferResponse.WalletAddress  = wallet.Address;
                taskTransferResponse.Error          = null;

                if (imgList.Count() < 1)
                {
                    taskTransferResponse.Error = "Invalid info or request for key images.";
                }

                return(taskTransferResponse);
            }
            catch (Exception ex)
            {
                taskTransferResponse.Error = ex.Message;
                return(taskTransferResponse);
            }
        }
Пример #3
0
 public key_images_response GetKeyImage(string ViewKey, string PubKey, string Secret, string Txn)
 {
     compute_key_images img = new compute_key_images();
     img.pub_spendKey_string = PubKey;
     img.sec_spendKey_string = Secret;
     img.sec_viewKey_string = ViewKey;
     img.tx_pub_key = Txn;
     byte[] abcArr = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(img, ser));
     var rrr = XMRNative.GenerateKeyImage(abcArr, abcArr.Length);
     byte[] res123 = new byte[rrr];
     XMRNative.GenerateKeyImageGetData(res123, rrr);
     var result123 = Encoding.UTF8.GetString(res123);
     return JsonConvert.DeserializeObject\\(result123, ser);
 }
Пример #4
0
        private Step2Response TryReconstructTransaction(string ToAddress, string Amount, string BaseData, string FromAddress, string feeNeeded = null)
        {
            string s1jData = "";
            string s2jData = "";
            var res = Double.Parse(Amount) * 1e12;
            Amount = res.ToString();
            XMRTaskTransferResponse taskTransferResponse = new XMRTaskTransferResponse();
            MoneroWalletInput data = ConvertFromString(BaseData);
            data.PassedInAttemptAtFee = null;
            if (feeNeeded != null) data.PassedInAttemptAtFee = feeNeeded;
            Step1Prepare step1Prepare = ConvertFromWSObject(data, Amount);
            byte[] s1compdata = System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(step1Prepare, ser));
            int s1len = XMRNative.s1compute(s1compdata, s1compdata.Length); s1compdata = new byte[s1len]; XMRNative.s1getdata(s1compdata, s1len);
            s1jData = System.Text.Encoding.UTF8.GetString(s1compdata);
            Step1Response step1Response = JsonConvert.DeserializeObject\\(s1jData, ser);
            if (!string.IsNullOrEmpty(step1Response.err_msg)) throw new Exception(step1Response.err_msg);
            if (!string.IsNullOrEmpty(step1Response.using_fee) && !string.IsNullOrEmpty(data.MaxAllowedFee))
            {
                BigInteger UsingFee = BigInteger.Parse(step1Response.using_fee);
                BigInteger MaxFee = BigInteger.Parse(data.MaxAllowedFee);
                if (UsingFee \>\ MaxFee) throw new Exception("Max fee exceeded by " + NDReverse((UsingFee - MaxFee).ToString(), 12));
            }
            string[] amounts = new string[step1Response.using_outs.Length];
            for (int i = 0; i \            string mix = WS.XMRGetRandom(step1Response.mixin, amounts);
            MixOutput[] mixOuts = JsonConvert.DeserializeObject\\(mix);
            Step2Prepare step2Prepare = ConcertFromWSObjectAndMergeStep1(step1Response, data, Amount, MoneroWallet.Converters.ByteArrayToHex(wallet.Keys.SpendSecret), MoneroWallet.Converters.ByteArrayToHex(wallet.Keys.ViewSecret), FromAddress, ToAddress, mixOuts);

            var s2 = JsonConvert.SerializeObject(step2Prepare, ser);
            byte[] s2compdata = System.Text.Encoding.UTF8.GetBytes(s2);
            int s2len = XMRNative.s2compute(s2compdata, s2compdata.Length);
            s2compdata = new byte[s2len];
            XMRNative.s2getdata(s2compdata, s2len);
            s2jData = System.Text.Encoding.UTF8.GetString(s2compdata);
            Step2Response step2Response = JsonConvert.DeserializeObject\\(s2jData, ser);
            return step2Response;
        }