Esempio n. 1
0
        public bool VerifyPasswordForUser(string UserLoginName, string OneTimePassword)
        {
            var now     = DateTime.Now;
            var expires = _interval.RoundTimeUpToNearest(now, TimeSpan.FromSeconds(_options.TimeInterval));

            var existingSecret = _reader
                                 .Where(s =>
                                        s.UserLoginName == UserLoginName.Trim() &&
                                        now <= s.ValidUntil)
                                 .Select(s => s.Secret)
                                 .FirstOrDefault();

            if (existingSecret == null)
            {
                return(false);
            }

            var secretProvider = new ExistingSecretProvider(existingSecret);

            var generator = new TimeBasedOneTimeGenerator(secretProvider, _options, _interval);

            var generatedPassword = generator.GeneratePassword();

            return(OneTimePassword == generatedPassword);
        }
Esempio n. 2
0
        public void And_All_Minimums_Are_Met_Then_A_One_Time_Password_Is_Returned()
        {
            var generator = new TimeBasedOneTimeGenerator(secretProvider, passwordOptions, nowTimeCalculator);

            var actual = generator.GeneratePassword();

            Assert.IsNotNull(actual);
            Assert.AreEqual(passwordOptions.PasswordLength, actual.Length);
        }
Esempio n. 3
0
        public void And_Multiple_Requests_To_Generate_Are_Outside_Time_Interval_Then_They_Are_The_Different()
        {
            var first_generator  = new TimeBasedOneTimeGenerator(secretProvider, passwordOptions, nowTimeCalculator);
            var second_generator = new TimeBasedOneTimeGenerator(secretProvider, passwordOptions, laterTimeCalculator);

            var first_actual  = first_generator.GeneratePassword();
            var second_actual = second_generator.GeneratePassword();

            Assert.AreNotEqual(first_actual, second_actual);
        }
Esempio n. 4
0
 public void And_Time_Rounder_Is_Null_Then_An_Exception_Is_Thrown()
 {
     var actual = new TimeBasedOneTimeGenerator(secretProvider, passwordOptions, null);
 }
Esempio n. 5
0
 public void And_Password_Options_Is_Null_Then_An_Exception_Is_Thrown()
 {
     var actual = new TimeBasedOneTimeGenerator(secretProvider, null, nowTimeCalculator);
 }
Esempio n. 6
0
 public void And_Secret_Provider_Is_Null_Then_An_Exception_Is_Thrown()
 {
     var actual = new TimeBasedOneTimeGenerator(null, passwordOptions, nowTimeCalculator);
 }