Beispiel #1
0
        public IActionResult GetAuthorizationExchangeCode(string clientId, string scopes)
        {
            if (Request.Cookies.ContainsKey(OAUTH2_COOKIE))
            {
                var tokenString = Request.Cookies[OAUTH2_COOKIE];
                var token       = _context.Credential.Find(tokenString);
                if (token != null && token.IsValid())
                {
                    var client = _context.RegisteredClient.Find(clientId);
                    if (client == null)
                    {
                        return(NotFound());
                    }

                    var exchange = new ExchangeToken()
                    {
                        ExchangeCode = Guid.NewGuid().ToString(),
                        Credential   = Credential.GenerateCredential(token.AccountId, scopes)
                    };
                    _memoryCache.Set(exchange.ExchangeCode, exchange,
                                     new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromSeconds(180)));
                    return(Redirect(client.RedirectUrl + "?code=" + exchange.ExchangeCode));
                }
            }
            return(RedirectToAction("Authentication", new { redirectUrl = Request.GetDisplayUrl() }));
        }
        public void DeployExchangeTokenContract()
        {
            ExchangeToken exchangeToken = new ExchangeToken("https://coe01.blockchain.azure.com:3200/Yo9hBJ7LRpAXDwShDmiu38HR",
                                                            LedgerClientTest.applicationAccount); //application

            var txReceipt = exchangeToken.DeployContractAsync().GetAwaiter().GetResult();

            Assert.IsNotNull(txReceipt);
        }
        public void ExchangeTokens()
        {
            ExchangeToken exchangeToken = new ExchangeToken("https://coe01.blockchain.azure.com:3200/Yo9hBJ7LRpAXDwShDmiu38HR",
                                                            LedgerClientTest.applicationAccount); //application

            var txRecipt = exchangeToken.ExchangeTokens(
                "0xbd61a163aa1f75712edc8cfd191facc25593c4f4", //exchange Token contract address
                "0xd924ae5f425c723830a7962042eff5391641d8d5", //Marketplace (application) address
                "0x5468f00d7ff611e574197ce822c35a0be78242f5", //user who wants to exchange token
                "0x86265a6295f571a6b75210a6b9b72b562cc7def8", // air token address
                "0x667423be3657b37bd8b02d1bb5ebed24457fb2b4", // car token address
                120,                                          // exchange rate percentage 120% ( 100 AIR = 120 CAR )
                100).GetAwaiter().GetResult();

            Assert.IsNotNull(txRecipt);
        }
Beispiel #4
0
        private static Dto.ManageInvoiceRequest CreateManageInvoicesRequest <T>(
            TechnicalUser user,
            SoftwareIdentification software,
            ExchangeToken token,
            Dto.ManageInvoiceOperationType operation,
            ISequence <T> invoices,
            Func <T, Dto.InvoiceData> invoiceDataGetter)
        {
            var operations = invoices.Values.Select(item =>
            {
                var invoiceData      = invoiceDataGetter(item.Value);
                var invoiceDataBytes = Encoding.UTF8.GetBytes(XmlManipulator.Serialize(invoiceData));
                return(new Dto.InvoiceOperationType
                {
                    index = item.Index,
                    invoiceData = invoiceDataBytes,
                    invoiceOperation = operation,
                    electronicInvoiceHash = invoiceData.completenessIndicator.Match(
                        t => new Dto.CryptoType
                    {
                        cryptoType = RequestEncryptionAlgorithm,
                        Value = Sha512.GetSha3Hash(Convert.ToBase64String(invoiceDataBytes))
                    },
                        f => null
                        )
                });
            });
            var invoiceHashes        = operations.Select(t => Sha512.GetSha3Hash($"{t.invoiceOperation}{Convert.ToBase64String(t.invoiceData)}"));
            var invoiceSignatureData = string.Join("", invoiceHashes);

            var request = CreateRequest <Dto.ManageInvoiceRequest>(user, software, invoiceSignatureData);

            request.exchangeToken     = Encoding.UTF8.GetString(token.Value);
            request.invoiceOperations = new Dto.InvoiceOperationListType
            {
                compressedContent = false,
                invoiceOperation  = operations.ToArray()
            };

            return(request);
        }
        public async Task <ResponseResult <string, ResultErrorCode> > SendModificationDocumentsAsync(ExchangeToken token, ISequentialEnumerable <ModificationInvoice> invoices)
        {
            var request = RequestCreator.CreateManageInvoicesRequest(TechnicalUser, SoftwareIdentification, token, invoices);

            return(await ManageInvoicesAsync(request, invoices));
        }
        public Task <ResponseResult <string, ResultErrorCode> > SendInvoicesAsync(ExchangeToken token, ISequence <Invoice> invoices)
        {
            var request = RequestCreator.CreateManageInvoicesRequest(TechnicalUser, SoftwareIdentification, token, invoices);

            return(ManageInvoicesAsync(request, invoices));
        }
Beispiel #7
0
 internal static Dto.ManageInvoiceRequest CreateManageInvoicesRequest(TechnicalUser user, SoftwareIdentification software, ExchangeToken token, ISequence <ModificationInvoice> invoices)
 {
     return(CreateManageInvoicesRequest(user, software, token, Dto.ManageInvoiceOperationType.MODIFY, invoices, d => RequestMapper.MapModificationInvoice(d)));
 }
Beispiel #8
0
 internal static Dto.ManageInvoiceRequest CreateManageInvoicesRequest(TechnicalUser user, SoftwareIdentification software, ExchangeToken token, ISequence <Invoice> invoices)
 {
     return(CreateManageInvoicesRequest(user, software, token, Dto.ManageInvoiceOperationType.CREATE, invoices, i => RequestMapper.MapInvoice(i)));
 }
        private static Dto.ManageInvoiceRequest CreateManageInvoicesRequest <T>(TechnicalUser user, SoftwareIdentification software, ExchangeToken token, Dto.ManageInvoiceOperationType operation, ISequentialEnumerable <T> invoices, Func <T, Dto.InvoiceData> mapper)
        {
            var operations = invoices.Select(item => new Dto.InvoiceOperationType
            {
                index            = item.Index,
                invoiceData      = Encoding.UTF8.GetBytes(XmlManipulator.Serialize(mapper(item.Item))),
                invoiceOperation = operation
            });
            var invoiceHashes        = operations.Select(t => Sha512.GetSha3Hash($"{t.invoiceOperation}{Convert.ToBase64String(t.invoiceData)}"));
            var invoiceSignatureData = string.Join("", invoiceHashes);

            var request = CreateRequest <Dto.ManageInvoiceRequest>(user, software, invoiceSignatureData);

            request.exchangeToken     = Encoding.UTF8.GetString(token.Value);
            request.invoiceOperations = new Dto.InvoiceOperationListType
            {
                compressedContent = false,
                invoiceOperation  = operations.ToArray()
            };

            return(request);
        }