private void mAddButton_Clicked() { // TODO - persist start directory (and possibly viewMode) using (var dialog = new KeyFileDialog()) { dialog.SetDirectory (Environment.GetFolderPath( Environment.SpecialFolder.Personal)); dialog.Exec (); if (dialog.Result == (int)QDialog.DialogCode.Accepted) { var constraints = dialog.GetConstraints (); foreach (var file in dialog.SelectedFiles) { try { KeyFormatter.GetPassphraseCallback passphraseCallback = () => { var passphraseDialog = new PassphraseDialog(); passphraseDialog.Exec(); if (passphraseDialog.Result == (int)QDialog.DialogCode.Rejected) { return null; } using (var passphrase = new PinnedArray<byte>(passphraseDialog.GetPassphrase())) { var securePassphrase = new SecureString(); foreach (var b in passphrase.Data) { securePassphrase.AppendChar((char)b); } return securePassphrase; } }; mAgent.AddKeyFromFile (file, passphraseCallback, constraints); } catch (AgentFailureException) { QMessageBox.Critical (this, Tr("Agent Failure"), Tr("Possible causes:") + "<ul>" + "</li>" + "<li>" + Tr("Agent is locked") + "</li>" + "<li>" + Tr("Agent does not support this key type") + "</ul>"); } catch (KeyFormatterException) { QMessageBox.Critical (this, Tr("File format error"), Tr("This file not a recognized private key file") + "<br><br>" + file); } catch (Exception ex) { Debug.Fail (ex.ToString ()); } } } } if (mAgent is Agent) { UpdateUIState (); } else { ReloadData (); } }
private void mAddButton_Clicked() { // TODO - persist start directory (and possibly viewMode) using (var dialog = new KeyFileDialog()) { dialog.SetDirectory(Environment.GetFolderPath( Environment.SpecialFolder.Personal)); dialog.Exec(); if (dialog.Result == (int)QDialog.DialogCode.Accepted) { var constraints = dialog.GetConstraints(); foreach (var file in dialog.SelectedFiles) { try { KeyFormatter.GetPassphraseCallback passphraseCallback = () => { var passphraseDialog = new PassphraseDialog(); passphraseDialog.Exec(); if (passphraseDialog.Result == (int)QDialog.DialogCode.Rejected) { return(null); } using (var passphrase = new PinnedArray <byte>(passphraseDialog.GetPassphrase())) { var securePassphrase = new SecureString(); foreach (var b in passphrase.Data) { securePassphrase.AppendChar((char)b); } return(securePassphrase); } }; mAgent.AddKeyFromFile(file, passphraseCallback, constraints); } catch (AgentFailureException) { QMessageBox.Critical(this, Tr("Agent Failure"), Tr("Possible causes:") + "<ul>" + "</li>" + "<li>" + Tr("Agent is locked") + "</li>" + "<li>" + Tr("Agent does not support this key type") + "</ul>"); } catch (KeyFormatterException) { QMessageBox.Critical(this, Tr("File format error"), Tr("This file not a recognized private key file") + "<br><br>" + file); } catch (Exception ex) { Debug.Fail(ex.ToString()); } } } } if (mAgent is Agent) { UpdateUIState(); } else { ReloadData(); } }