public void Init(string label, Authenticator.SecretKeyLength keyLength) { _initialized = true; _googleAuthenticator = new GoogleAuthenticator(label, Authenticator.GenerateKey(keyLength)); txtOTPSecret.Text = _googleAuthenticator.Secret; GenerateQRCode(); }
/// <summary> /// Create a new instance of otpSettings /// </summary> /// <param name="password"></param> /// <returns>Password hash</returns> public string Create(string password, Authenticator.SecretKeyLength keyLength) { using (var randomNumberGenerator = RandomNumberGenerator.Create()) { byte[] salt1Bytes = new byte[SaltByteLength]; byte[] salt2Bytes = new byte[SaltByteLength]; byte[] passwordBytes = GeneralConverters.GetByteArrayFromString(password); randomNumberGenerator.GetBytes(salt1Bytes); randomNumberGenerator.GetBytes(salt2Bytes); PasswordHash = CreatePasswordHash(salt1Bytes, salt2Bytes, passwordBytes); _otpSettings = new OTPSettings(Authenticator.GenerateKey(keyLength), salt1Bytes, salt2Bytes); Initialized = true; return(PasswordHash); } }
private void btnGenerateSharedSecret_Click(object sender, EventArgs e) { if (txtOTPLabel.Text.Length == 0) { MessageBox.Show("Label is missing!"); return; } Authenticator.SecretKeyLength keyLengthEnumVal = Authenticator.SecretKeyLength.n16Bytes; if (rb24.Checked) { keyLengthEnumVal = Authenticator.SecretKeyLength.n24Bytes; } else if (rb32.Checked) { keyLengthEnumVal = Authenticator.SecretKeyLength.n32bytes; } createAndVerifyOTP1.Init(txtOTPLabel.Text, keyLengthEnumVal); }