Exemple #1
0
        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 }));
            }
        }
Exemple #2
0
        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()));
            }
        }
Exemple #3
0
        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 }));
            }
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
        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());
        }