public static string GetKeyUri(
HashAlgorithm algorithm,
string issuer,
string account,
byte[] secret,
int digits = Otp.DefaultDigits,
int period = Totp.DefaultPeriod)
{
Contract.Requires<ArgumentOutOfRangeException>(Enum.IsDefined(typeof(HashAlgorithm), algorithm));
Contract.Requires<ArgumentOutOfRangeException>(algorithm != HashAlgorithm.Unknown);
Contract.Requires<ArgumentNullException>(issuer != null);
Contract.Requires<ArgumentOutOfRangeException>(!string.IsNullOrWhiteSpace(issuer));
Contract.Requires<ArgumentNullException>(account != null);
Contract.Requires<ArgumentOutOfRangeException>(!string.IsNullOrWhiteSpace(account));
Contract.Requires<ArgumentNullException>(secret != null);
Contract.Requires<ArgumentException>(secret.Length > 0);
Contract.Requires<ArgumentOutOfRangeException>(digits > 0);
Contract.Requires<ArgumentOutOfRangeException>(period > 0);
Contract.Ensures(!string.IsNullOrWhiteSpace(Contract.Result<string>()));
return
Otp.GetKeyUri(
OtpType.Totp,
issuer,
account,
secret,
algorithm,
digits,
0,
period);
}