コード例 #1
0
        public void Can_Get_Decrypted_Credentials()
        {
            // Setup
            string decryptedString = "decrypted string";
            string username        = "******";
            string encryptedString = "w6AnE3eWg1urf54jkTejCku+JT3gPT78e9MAkUa8fsI=";

            byte[] expectedKey           = Convert.FromBase64String("LHRqdBadRUVh3cdMYoeuYVng/qQlgvBReEAg5JvO48E=");
            byte[] expectedIV            = Convert.FromBase64String("CB7hOrmWxs2riRF26Imn7w==");
            byte[] expectedEncryptedPass = Convert.FromBase64String(encryptedString);

            var encryptionMock = new Mock <EncryptionUtils>();

            encryptionMock.Setup(x => x.DecryptStringFromBytes_AES(expectedEncryptedPass, expectedKey, expectedIV)).Returns(decryptedString);

            var user   = new User();
            var jigsaw = new JigsawAccountDetails {
                AssociatedUser = user, Username = username, EncryptedPassword = encryptedString
            };

            _context.JigsawAccountDetails.Add(jigsaw);
            _context.SaveChanges();

            _process = new JigsawAuthProcesses(_context, encryptionMock.Object);

            // Act
            var result = _process.Execute(new GetUserJigsawCredentialsParams {
                RequestingUserId = user.Id
            });

            // Verify
            Assert.IsNotNull(result, "Process returned a null result");
            Assert.AreEqual(username, result.JigsawUsername, "An incorrect username was returned");
            Assert.AreEqual(decryptedString, result.JigsawPassword, "An incorrect password was returned");
        }
コード例 #2
0
        /// <summary>
        /// Saves the jigsaw user credentials for the user
        /// </summary>
        /// <param name="procParams"></param>
        /// <returns></returns>
        public GeneralSuccessResultViewModel Execute(SaveJigsawUserCredentialsParams procParams)
        {
            // Get the encryption key and iv from the app.config
            var key            = Convert.FromBase64String(ConfigurationManager.AppSettings[KEY_APPSETTINGS]);
            var iv             = Convert.FromBase64String(ConfigurationManager.AppSettings[IV_APPSETTINGS]);
            var encryptedBytes = _encryptionUtils.EncryptStringToBytes_AES(procParams.JigsawPassword, key, iv);

            var user = _context.Users
                       .Where(x => x.Id == procParams.RequestingUserId)
                       .Include(x => x.JigsawAccountDetails)
                       .FirstOrDefault();

            if (user == null)
            {
                throw new MJLEntityNotFoundException(typeof(User), procParams.RequestingUserId);
            }

            var jigsaw = new JigsawAccountDetails
            {
                Username          = procParams.JigsawUsername.Trim(),
                EncryptedPassword = Convert.ToBase64String(encryptedBytes)
            };

            user.JigsawAccountDetails = jigsaw;
            _context.SaveChanges();

            // Attempt to use the new credentials to make sure they are valid
            Execute(new GetJigsawUserPointsParams {
                RequestingUserId = procParams.RequestingUserId
            });

            return(new GeneralSuccessResultViewModel {
                WasSuccessful = true
            });
        }