/// <summary> /// Intializes a new instance of the <see cref="TwoFactorAuth"/> class. /// </summary> /// <param name="issuer">The issuer of the TOTP authentication token.</param> /// <param name="digits">The number of digits to be displayed to the user / required for verification.</param> /// <param name="period">The period, specified in seconds, a TOTP is valid.</param> /// <param name="algorithm">The algorithm to use when generating TOTP codes.</param> /// <param name="qrcodeprovider">The <see cref="IQrCodeProvider"/> to use for generating QR codes.</param> /// <param name="rngprovider">The <see cref="IRngProvider"/> to use for generating sequences of random numbers.</param> /// <param name="timeprovider">The <see cref="ITimeProvider"/> to use for generating sequences of random numbers.</param> /// <exception cref="ArgumentOutOfRangeException"> /// Thrown when <paramref name="digits"/> or <paramref name="period"/> are less than 0 or the specified /// <paramref name="algorithm"/> is invalid. /// </exception> public TwoFactorAuth( string issuer = null, int digits = DEFAULTDIGITS, int period = DEFAULTPERIOD, Algorithm algorithm = Algorithm.SHA1, IQrCodeProvider qrcodeprovider = null, IRngProvider rngprovider = null, ITimeProvider timeprovider = null) { this.Issuer = issuer; if (digits <= 0) { throw new ArgumentOutOfRangeException(nameof(digits)); } this.Digits = digits; if (period <= 0) { throw new ArgumentOutOfRangeException(nameof(period)); } this.Period = period; if (!Enum.IsDefined(typeof(Algorithm), algorithm)) { throw new ArgumentOutOfRangeException(nameof(algorithm)); } this.Algorithm = algorithm; this.QrCodeProvider = qrcodeprovider ?? DefaultProviders.DefaultQrCodeProvider; this.RngProvider = rngprovider ?? DefaultProviders.DefaultRngProvider; this.TimeProvider = timeprovider ?? DefaultProviders.DefaultTimeProvider; }
/// <summary> /// Intializes a new instance of the <see cref="TwoFactorAuth"/> class. /// </summary> /// <param name="issuer">The issuer of the TOTP authentication token.</param> /// <param name="digits">The number of digits to be displayed to the user / required for verification.</param> /// <param name="period">The period, specified in seconds, a TOTP is valid.</param> /// <param name="algorithm">The algorithm to use when generating TOTP codes.</param> /// <param name="qrcodeprovider">The <see cref="IQrCodeProvider"/> to use for generating QR codes.</param> /// <param name="rngprovider">The <see cref="IRngProvider"/> to use for generating sequences of random numbers.</param> /// <exception cref="ArgumentOutOfRangeException"> /// Thrown when <paramref name="digits"/> or <paramref name="period"/> are less than 0 or the specified /// <paramref name="algorithm"/> is invalid. /// </exception> /// <exception cref="ArgumentNullException"> /// Thrown when the specified <paramref name="qrcodeprovider"/> or <paramref name="rngprovider"/> is null. /// </exception> public TwoFactorAuth(string issuer, int digits, int period, Algorithm algorithm, IQrCodeProvider qrcodeprovider, IRngProvider rngprovider) { this.Issuer = issuer; if (digits <= 0) throw new ArgumentOutOfRangeException("digits"); this.Digits = digits; if (period <= 0) throw new ArgumentOutOfRangeException("period"); this.Period = period; if (!Enum.IsDefined(typeof(Algorithm), algorithm)) throw new ArgumentOutOfRangeException("algorithm"); this.Algorithm = algorithm; if (qrcodeprovider == null) throw new ArgumentNullException("qrcodeprovider"); this.QrCodeProvider = qrcodeprovider; if (rngprovider == null) throw new ArgumentNullException("rngprovider"); this.RngProvider = rngprovider; }
/// <summary> /// Intializes a new instance of the <see cref="TwoFactorAuth"/> class. /// </summary> /// <param name="issuer">The issuer of the TOTP authentication token.</param> /// <param name="algorithm">The algorithm to use when generating TOTP codes.</param> /// <param name="qrcodeprovider">The <see cref="IQrCodeProvider"/> to use for generating QR codes.</param> /// <param name="rngprovider">The <see cref="IRngProvider"/> to use for generating sequences of random numbers.</param> /// <exception cref="ArgumentOutOfRangeException"> /// Thrown when the specified <paramref name="algorithm"/> is invalid. /// </exception> /// <exception cref="ArgumentNullException"> /// Thrown when the specified <paramref name="qrcodeprovider"/> or <paramref name="rngprovider"/> is null. /// </exception> public TwoFactorAuth(string issuer, Algorithm algorithm, IQrCodeProvider qrcodeprovider, IRngProvider rngprovider) : this(issuer, DEFAULTDIGITS, DEFAULTPERIOD, algorithm, qrcodeprovider, rngprovider) { }
/// <summary> /// Intializes a new instance of the <see cref="TwoFactorAuth"/> class. /// </summary> /// <param name="issuer">The issuer of the TOTP authentication token.</param> /// <param name="qrcodeprovider">The <see cref="IQrCodeProvider"/> to use for generating QR codes.</param> /// <param name="rngprovider">The <see cref="IRngProvider"/> to use for generating sequences of random numbers.</param> /// <exception cref="ArgumentNullException"> /// Thrown when the specified <paramref name="rngprovider"/> is null. /// </exception> public TwoFactorAuth(string issuer, IQrCodeProvider qrcodeprovider, IRngProvider rngprovider) : this(issuer, DEFAULTDIGITS, DEFAULTPERIOD, DEFAULTALGORITHM, qrcodeprovider, rngprovider) { }
/// <summary> /// Intializes a new instance of the <see cref="TwoFactorAuth"/> class. /// </summary> /// <param name="issuer">The issuer of the TOTP authentication token.</param> /// <param name="digits">The number of digits to be displayed to the user / required for verification.</param> /// <param name="period">The period, specified in seconds, a TOTP is valid.</param> /// <param name="algorithm">The algorithm to use when generating TOTP codes.</param> /// <param name="qrcodeprovider">The <see cref="IQrCodeProvider"/> to use for generating QR codes.</param> /// <exception cref="ArgumentOutOfRangeException"> /// Thrown when <paramref name="digits"/> or <paramref name="period"/> are less than 0 or the specified /// <paramref name="algorithm"/> is invalid. /// </exception> /// <exception cref="ArgumentNullException"> /// Thrown when the specified <paramref name="qrcodeprovider"/> is null. /// </exception> public TwoFactorAuth(string issuer, int digits, int period, Algorithm algorithm, IQrCodeProvider qrcodeprovider) : this(issuer, digits, period, algorithm, qrcodeprovider, DefaultProviders.DefaultRngProvider) { }
/// <summary> /// Intializes a new instance of the <see cref="TwoFactorAuth"/> class. /// </summary> /// <param name="issuer">The issuer of the TOTP authentication token.</param> /// <param name="digits">The number of digits to be displayed to the user / required for verification.</param> /// <param name="period">The period, specified in seconds, a TOTP is valid.</param> /// <param name="algorithm">The algorithm to use when generating TOTP codes.</param> /// <param name="qrcodeprovider">The <see cref="IQrCodeProvider"/> to use for generating QR codes.</param> /// <param name="rngprovider">The <see cref="IRngProvider"/> to use for generating sequences of random numbers.</param> /// <exception cref="ArgumentOutOfRangeException"> /// Thrown when <paramref name="digits"/> or <paramref name="period"/> are less than 0 or the specified /// <paramref name="algorithm"/> is invalid. /// </exception> /// <exception cref="ArgumentNullException"> /// Thrown when the specified <paramref name="qrcodeprovider"/> or <paramref name="rngprovider"/> is null. /// </exception> public TwoFactorAuth(string issuer, int digits, int period, Algorithm algorithm, IQrCodeProvider qrcodeprovider, IRngProvider rngprovider) { this.Issuer = issuer; if (digits <= 0) { throw new ArgumentOutOfRangeException("digits"); } this.Digits = digits; if (period <= 0) { throw new ArgumentOutOfRangeException("period"); } this.Period = period; if (!Enum.IsDefined(typeof(Algorithm), algorithm)) { throw new ArgumentOutOfRangeException("algorithm"); } this.Algorithm = algorithm; if (qrcodeprovider == null) { throw new ArgumentNullException("qrcodeprovider"); } this.QrCodeProvider = qrcodeprovider; if (rngprovider == null) { throw new ArgumentNullException("rngprovider"); } this.RngProvider = rngprovider; }