public IActionResult TwoGetOneInsertDynamicSqlConstantDecryptTran([FromBody] SimplePayload payload) { XmlDocument doc = new XmlDocument(); try { doc.LoadXml(Constants.XMLData); RSA idtpPrivate = RSA.Create(); RSA idtpPublic = RSA.Create(); RSA sampleBankPrivate = RSA.Create(); RSA sampleBankPublic = RSA.Create(); sampleBankPrivate.FromXmlString(IDTPCryptography.bankPrivateKey); idtpPublic.FromXmlString(IDTPCryptography.idtpPublicKey); IDTPCryptography cryptography = new IDTPCryptography(); doc = cryptography.DecryptAndValidateSignature(doc, sampleBankPrivate, idtpPublic); string sendervid = "", receiverVid = "", idtppin = ""; sendervid = doc.GetElementsByTagName("DbtrAcct").Item(0).InnerText; receiverVid = doc.GetElementsByTagName("CdtrAcct").Item(0).InnerText; idtppin = doc.GetElementsByTagName("IDTP_PIN").Item(0).InnerText; string amountstr = ""; amountstr = doc.GetElementsByTagName("IntrBkSttlmAmt").Item(0).InnerText; if (!idtppin.Equals("123456")) { throw new Exception("Invalid Pin"); } decimal amount = 0; decimal.TryParse(amountstr, out amount); var senderInfo = DBUtility.GetUser(sendervid); var receiverInfo = DBUtility.GetUser(receiverVid); DBUtility.OneInsertDynamicSqlNoLog(payload.transactionId, sendervid, senderInfo.AccountNo, senderInfo.BankId, receiverVid, receiverInfo.AccountNo, receiverInfo.BankId, amount, DateTime.Now, payload.clientRequestTime, "TwoGetOneInsertDynamicSqlXmlDecryptTran"); return(new JsonResult(new { StatusCode = HttpStatusCode.OK, Message = "Direct Pay Successfull" })); } catch (Exception ex) { return(new JsonResult(new { StatusCode = HttpStatusCode.BadRequest, Message = ex.Message })); } }
public async Task <ActionResult> GetAuthorizationToken([FromBody] LoginDTO loginDTO) { try { ApplicationUser applicationUser = null; string masterToken; MasterToken tokenObj; if (loginDTO != null) { applicationUser = await userManager.FindByNameAsync(loginDTO.UserName).ConfigureAwait(false); if (applicationUser != null) { string secrectSalt = applicationUser.SecretSalt; IDTPCryptography cryptography = new IDTPCryptography(); masterToken = cryptography.EncryptSecret(secrectSalt, loginDTO.MasterToken); tokenObj = _businessLayer.GetMasterTokenByTokenNo(masterToken); if (tokenObj != null) { ApplicationUser userInTokenTable = await userManager.FindByIdAsync(tokenObj.UserId).ConfigureAwait(false); if (userInTokenTable.Id == applicationUser.Id && tokenObj.TokenExpiryDate >= DateTime.Today) { string role; var roleList = await userManager.GetRolesAsync(applicationUser).ConfigureAwait(false); role = roleList.FirstOrDefault(); if (applicationUser != null) { string tokenString = GetToken(applicationUser, role); return(Ok(tokenString)); } } } } } return(BadRequest()); } catch (Exception ex) { return(BadRequest(ex.Message.ToString())); } }
public IActionResult XMLDecryptAndValidationWithExistingAlgo([FromBody] Payload payload) { XmlDocument doc = new XmlDocument(); try { doc.LoadXml(payload.xmlData); RSA idtpPrivate = RSA.Create(); RSA idtpPublic = RSA.Create(); RSA sampleBankPrivate = RSA.Create(); RSA sampleBankPublic = RSA.Create(); sampleBankPrivate.FromXmlString(IDTPCryptography.bankPrivateKey); idtpPublic.FromXmlString(IDTPCryptography.idtpPublicKey); IDTPCryptography cryptography = new IDTPCryptography(); doc = cryptography.DecryptAndValidateSignature(doc, sampleBankPrivate, idtpPublic); string sendervid = "", receiverVid = ""; sendervid = doc.GetElementsByTagName("DbtrAcct").Item(0).InnerText; receiverVid = doc.GetElementsByTagName("CdtrAcct").Item(0).InnerText; string amountstr = ""; amountstr = doc.GetElementsByTagName("IntrBkSttlmAmt").Item(0).InnerText; string strDockerName = System.Environment.MachineName; string dtApiResponseTime = DateTime.Now.ToShortDateString(); try { DBUtility.WriteData(Guid.NewGuid().ToString(), "Hello-World", strDockerName, dtApiResponseTime, dtApiResponseTime); } catch (Exception) { throw; } return(new JsonResult(new { StatusCode = HttpStatusCode.OK, Message = "Direct Pay Successfull" })); } catch (Exception ex) { return(new JsonResult(new { StatusCode = HttpStatusCode.BadRequest, Message = ex.Message })); } }
public string Encrypt([FromBody] string xmlData) { XmlDocument doc = new XmlDocument(); string enccryptedxml = string.Empty; try { doc.LoadXml(xmlData); RSA idtpPrivate = RSA.Create(); RSA sampleBankPublic = RSA.Create(); IDTPCryptography cryptography = new IDTPCryptography(); string idtpPrivateKeyPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Security", "idtpPrivate.key"); string bankPublicKeyPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Security", "sampleBank1Public.pub"); idtpPrivate.FromXmlString(System.IO.File.ReadAllText(idtpPrivateKeyPath)); sampleBankPublic.FromXmlString(System.IO.File.ReadAllText(bankPublicKeyPath)); enccryptedxml = cryptography.SingAndEncryptDocument(doc, idtpPrivate, sampleBankPublic).InnerXml; } catch (Exception ex) { enccryptedxml = ex.Message; } return(enccryptedxml); }
public async Task <string> GetMasterToken(string appName) { string token = Guid.NewGuid().ToString(); var currentUser = await GetCurrentUser(); IDTPCryptography cryptography = new IDTPCryptography(); string encryptedToken = cryptography.EncryptSecret(currentUser.SecretSalt, token); try { MasterToken masterToken = new MasterToken() { AppName = appName, Token = encryptedToken, TokenExpiryDate = DateTime.Today.AddDays(30), UserId = currentUser.Id, EntityState = EntityState.Added }; _businessLayer.AddMasterToken(masterToken); return(token); } catch (Exception) { return(token); } }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { BusinessLayer businessLayer = new BusinessLayer(); ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); if (ModelState.IsValid) { //returnUrl = returnUrl ?? Url.Content("~/"); returnUrl = returnUrl ?? Url.Content("~/Users/Index?userType=" + Input.UserType); IDTPCryptography cryptography = new IDTPCryptography(); //Getting password salt to encrypt string passSalt = cryptography.GetSecretSalt(); var user = new ApplicationUser(); switch (Input.UserType) { case "Admin": { user = new ApplicationUser { UserName = Input.UserId, Email = Input.Email, SecretSalt = passSalt }; var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { IDTPUserAdmin newUser = new IDTPUserAdmin { Id = user.Id, FirstName = Input.FirstName, LastName = Input.LastName, ContactNo = Input.ContactNo, Email = Input.Email, LoginId = Input.UserId, NID = Input.NID, CreatedOn = DateTime.Now, ModifiedOn = DateTime.Now, EntityState = EntityState.Added }; businessLayer.AddUser(newUser); await _userManager.AddToRoleAsync(user, "IDTPAdmin"); } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } if (!ModelState.IsValid) { TempData["form"] = Input.UserType; return(Page()); } else { //await _signInManager.SignInAsync(user, isPersistent: false); return(LocalRedirect(returnUrl)); } } case "Business": { user = new ApplicationUser { UserName = Input.BusinessId, Email = Input.BusinessEmail, SecretSalt = passSalt }; var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { Business newUser = new Business { Id = user.Id, FullName = Input.BusinessName, ContactNo = Input.BusinessContactNo, Email = Input.BusinessEmail, LoginId = Input.BusinessId, NID = Input.BusinessNID, TIN = Input.BusinessTIN, BIN = Input.BusinessBIN, BankName = Input.BusinessBankName, BranchName = Input.BusinessBranchName, AccountNumber = Input.BusinessAccountNumber, CreatedOn = DateTime.Now, ModifiedOn = DateTime.Now, EntityState = EntityState.Added }; businessLayer.AddMerchant(newUser); await _userManager.AddToRoleAsync(user, "Business"); } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } if (!ModelState.IsValid) { TempData["form"] = Input.UserType; return(Page()); } else { //await _signInManager.SignInAsync(user, isPersistent: false); return(LocalRedirect(returnUrl)); } } case "GovtInstitute": { user = new ApplicationUser { UserName = Input.GovtId, Email = Input.GovtEmail, SecretSalt = passSalt }; var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { GovernmentInstitution newGovtInstitutionInfo = new GovernmentInstitution { LoginId = Input.GovtId, Name = Input.GovtInstitutionName, BIN = Input.GovtBIN, Email = Input.GovtEmail, ContactNo = Input.GovtContactNo, Address = Input.Address, BankName = Input.GovtBankName, BranchName = Input.GovtBranchName, AccountNumber = Input.GovtAccountNumber, ContactPersonName = Input.ContactPersonName, ContactPersonDesignation = Input.ContactPersonDesignation, ContactPersonEmail = Input.ContactPersonEmail, ContactPersonMobile = Input.ContactPersonMobile, ContactPersonNID = Input.ContactPersonNID, ContactPersonOffice = Input.ContactPersonOffice, CreatedOn = DateTime.Now, ModifiedOn = DateTime.Now, EntityState = EntityState.Added }; businessLayer.AddGovtInstitutionInfo(newGovtInstitutionInfo); await _userManager.AddToRoleAsync(user, "GovernmentInstitute"); } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } if (!ModelState.IsValid) { TempData["form"] = Input.UserType; return(Page()); } else { //await _signInManager.SignInAsync(user, isPersistent: false); return(LocalRedirect(returnUrl)); } } case "FinInstitute": { user = new ApplicationUser { UserName = Input.FinancialId, Email = Input.FinancialEmail, SecretSalt = passSalt }; var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { FinancialInstitution newFinInstitutionInfo = new FinancialInstitution { Id = user.Id, LoginId = Input.FinancialId, InstitutionName = Input.FinancialInstitutionName, TIN = Input.FinancialTIN, BIN = Input.FinancialBIN, Email = Input.FinancialEmail, ContactNo = Input.FinancialContactNo, SwiftCode = Input.FinancialSwiftCode, VatId = Input.FinancialVatId, ContactPersonName = Input.ContactPersonName, ContactPersonDesignation = Input.ContactPersonDesignation, ContactPersonEmail = Input.ContactPersonEmail, ContactPersonMobile = Input.ContactPersonMobile, ContactPersonNID = Input.ContactPersonNID, ContactPersonOffice = Input.ContactPersonOffice, CreatedOn = DateTime.Now, ModifiedOn = DateTime.Now, EntityState = EntityState.Added }; businessLayer.AddFinInstitutionInfo(newFinInstitutionInfo); await _userManager.AddToRoleAsync(user, "FinancialInstitute"); } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } if (!ModelState.IsValid) { TempData["form"] = Input.UserType; return(Page()); } else { //await _signInManager.SignInAsync(user, isPersistent: false); return(LocalRedirect(returnUrl)); } } } } // If we got this far, something failed, redisplay form TempData["form"] = Input.UserType; return(Page()); }