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); }
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)); }
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))); }
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); }