Exemplo n.º 1
0
        public async Task <IActionResult> SearchCoin(Search search)
        {
            string sig = search.Signature;

            search.Signature = null;

            if (!CoinTools.ECVerify(JsonConvert.SerializeObject(search), sig, search.PublicKey))
            {
                return(NotFound());
            }

            MintDBContext db = new MintDBContext();

            List <Guid> mc = await db.MintHolders.Where(x => x.PublicKey == search.PublicKey).Select(x => x.MintCoinId).ToListAsync();

            List <MintCoin> mccoins = new List <MintCoin>();
            List <Coin>     coins   = new List <Coin>();

            for (int i = 0; i < mc.Count; i++)
            {
                mccoins.Add(await db.MintCoins.Where(x => x.Id == mc[i]).Include(x => x.Holders).SingleAsync());
            }

            for (int i = 0; i < mccoins.Count; i++)
            {
                Coin coin = new Coin();
                coin.CountryCode      = mccoins[i].CountryCode;
                coin.CurrencyCode     = mccoins[i].CurrencyCode;
                coin.PurposeCode      = mccoins[i].PurposeCode;
                coin.HolderHash       = mccoins[i].HolderHash;
                coin.Holders          = new List <Holder>();
                coin.IssueDate        = mccoins[i].IssueDate;
                coin.IssuingAuthority = mccoins[i].IssuingAuthority;
                coin.IssuingHash      = mccoins[i].IssuingHash;
                coin.SerialNumber     = mccoins[i].SerialNumber;
                coin.Value            = mccoins[i].Value;

                for (int j = 0; j < mccoins[i].Holders.Count; j++)
                {
                    Holder holder = new Holder();
                    holder.PublicKey = mccoins[i].Holders[j].PublicKey;

                    coin.Holders.Add(holder);
                }

                coins.Add(coin);
            }

            return(Ok(coins));
        }
Exemplo n.º 2
0
        private static async Task <Coin> TransferCoin(Guid serialNumber, string issuingAuthority, List <string> holdersPublicKey)
        {
            Transfer transfer = new Transfer();

            transfer.SerialNumber     = serialNumber;
            transfer.IssuingAuthority = issuingAuthority;
            transfer.Timestamp        = DateTime.UtcNow;
            transfer.Holders          = new List <Holder>();

            for (int i = 0; i < holdersPublicKey.Count; i++)
            {
                transfer.Holders.Add(new Holder()
                {
                    PublicKey = holdersPublicKey[i]
                });
            }

            transfer.Signature = CoinTools.ECSign(JsonConvert.SerializeObject(transfer), privateECKey);

            using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://localhost:44341/api/Transfer"))
            {
                request.Content = new StringContent(JsonConvert.SerializeObject(transfer));
                request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
                request.Headers.Add("x-api-key", "86A5DFC6-0EB7-4249-B32A-366F2F8F9A51");

                HttpResponseMessage response = null;

                try
                {
                    using (HttpClient client = new HttpClient())
                        response = await client.SendAsync(request);

                    if (response != null)
                    {
                        return(JsonConvert.DeserializeObject <Coin>(await response.Content.ReadAsStringAsync()));
                    }
                    else
                    {
                        throw new Exception();
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    throw ex;
                }
            }
        }
Exemplo n.º 3
0
        private static async Task <List <Coin> > SearchCoin(string publicKey)
        {
            Search search = new Search();

            search.PublicKey = publicKey;
            search.Timestamp = DateTime.UtcNow;
            search.Signature = CoinTools.ECSign(JsonConvert.SerializeObject(search), transferPrivateKey);

            using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://localhost:44341/api/Search"))
            {
                request.Content = new StringContent(JsonConvert.SerializeObject(search));
                request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
                request.Headers.Add("x-api-key", "86A5DFC6-0EB7-4249-B32A-366F2F8F9A51");

                HttpResponseMessage response = null;

                try
                {
                    using (HttpClient client = new HttpClient())
                        response = await client.SendAsync(request);

                    if (response != null)
                    {
                        return(JsonConvert.DeserializeObject <List <Coin> >(await response.Content.ReadAsStringAsync()));
                    }
                    else
                    {
                        throw new Exception();
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    throw ex;
                }
            }
        }