public void OneTimePassword_UsingSHA512_IsGeneratedCorrectlyForRfcTests(string dateTimeString, string expectedPassword) { // Arrange var dateTime = DateTime.ParseExact(dateTimeString, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal); var otpGenerator = new TotpGenerator(); // Act var password = otpGenerator.GeneratePassword(sha512RfcSecret, dateTime, 30, PasswordLengths.EightDigitPassword, Hmac.Sha512); // Assert Assert.Equal(expectedPassword, password); }
public Task <string> Build(string purpose, string target, int lifeTimeSeconds, int maxErrorCount, string code, string?securityStamp = null) { if (purpose is null) { throw new ArgumentNullException(nameof(purpose)); } if (target is null) { throw new ArgumentNullException(nameof(target)); } if (Options.CurrentValue.LifeTimeSecond <= 0) { throw new InvalidOperationException("Invalid options: Shashlik.Captcha.LifeTimeSecond"); } if (Options.CurrentValue.MaxErrorCount < 0 || Options.CurrentValue.MaxErrorCount > 99) { throw new InvalidOperationException("Invalid options: Shashlik.Captcha.MaxErrorCount, should be 0~99"); } var key = GetKey(purpose, target, securityStamp); return(Task.FromResult(TotpGenerator.Generate(key).ToString())); }
public TotpValidatorTests() { this.totpValidator = new TotpValidator(); this.totpGenerator = new TotpGenerator(); }
public TotpValidatorTests() { totpGenerator = new TotpGenerator(); totpValidator = new TotpValidator(totpGenerator); }
/// <summary> /// Get current user's code /// </summary> public static string Generate(string secret) { _totpGenerator = new TotpGenerator(); return(_totpGenerator.Generate(secret).ToString()); }
public TotpCatpcha(IOptionsMonitor <CaptchaOptions> options) { Options = options; TotpGenerator = new TotpGenerator(); TotpValidator = new TotpValidator(TotpGenerator); }