Esempio n. 1
0
        public void OtpGenerator_GeneratesCharsAToZ()
        {
            var otpGenerator = new OtpGenerator();
            var genSet       = new HashSet <char>();

            while (genSet.Count < MAX_DIFF_CHARS_COUNT)
            {
                foreach (char c in otpGenerator.Generate(BATCH_SIZE))
                {
                    if (!AllowedChars.Contains(c))
                    {
                        Assert.Fail("Generated disallowed char: {0}", c);
                    }
                    genSet.Add(c);
                }
            }

            if (genSet.Count > MAX_DIFF_CHARS_COUNT)
            {
                Assert.Fail("Generated too many diff characters: gen {0} vs max {0}", genSet.Count, MAX_DIFF_CHARS_COUNT);
            }
            foreach (char c in AllowedChars)
            {
                if (!genSet.Contains(c))
                {
                    Assert.Fail("{0} was not generated", c);
                }
            }
        }
Esempio n. 2
0
        public bool ValidateRecoveryCode(string code, IMultiFactorSettings mfa)
        {
            var otps = this.ToHotp(mfa);
            var otp  = new OtpGenerator(otps);

            return(otp.Generate(offset: mfa.RecoveryTripCount) == code);
        }
Esempio n. 3
0
        public IEnumerable <string> GenerateRecoveryCodes(IMultiFactorSettings mfa)
        {
            var recs = this.ToHotp(mfa);
            var otp  = new OtpGenerator(recs);

            for (var i = 0; i < 10; i++)
            {
                var code = otp.Generate(groupSize: 4);
                if (i >= mfa.RecoveryTripCount)
                {
                    yield return(code);
                }
            }
        }