Index: chrome/browser/ui/pk11_password_dialog.h |
diff --git a/chrome/browser/ui/pk11_password_dialog.h b/chrome/browser/ui/pk11_password_dialog.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4f0deccf3f93cab2363b581f360f576e1f2a719c |
--- /dev/null |
+++ b/chrome/browser/ui/pk11_password_dialog.h |
@@ -0,0 +1,69 @@ |
+// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_BROWSER_UI_PK11_PASSWORD_DIALOG_H_ |
+#define CHROME_BROWSER_UI_PK11_PASSWORD_DIALOG_H_ |
+#pragma once |
+ |
+#include <string> |
+ |
+#include "base/callback.h" |
+ |
+namespace base { |
+class PK11BlockingPasswordDelegate; |
+} |
+ |
+namespace net { |
+class CryptoModule; |
+class X509Certificate; |
+} |
+ |
+namespace browser { |
+ |
+// An enum to describe the reason for the password request. |
+enum PK11PasswordReason { |
+ kPK11PasswordKeygen, |
+ kPK11PasswordCertEnrollment, |
+ kPK11PasswordClientAuth, |
+ kPK11PasswordCertImport, |
+ kPK11PasswordCertExport, |
+}; |
+ |
+typedef Callback1<const char*>::Type PK11PasswordCallback; |
+ |
+// Display a dialog, prompting the user to authenticate to unlock |
+// |module|. |reason| describes the purpose of the authentication and |
+// affects the message displayed in the dialog. |server| is the name |
+// of the server which requested the access. |
+void ShowPK11PasswordDialog(const std::string& module_name, |
+ bool retry, |
+ PK11PasswordReason reason, |
+ const std::string& server, |
+ PK11PasswordCallback* callback); |
+ |
+// Returns a PK11BlockingPasswordDelegate to open a dialog and block |
+// until returning. Should only be used on a worker thread. |
+base::PK11BlockingPasswordDelegate* NewPK11BlockingDialogDelegate( |
+ PK11PasswordReason reason, |
+ const std::string& server); |
+ |
+// Asynchronously unlock |module|, if necessary. |callback| is called when done |
+// (regardless if module was successfully unlocked or not). Should only be |
+// called on UI thread. |
+void UnlockSlotIfNecessary(net::CryptoModule* module, |
+ browser::PK11PasswordReason reason, |
+ const std::string& server, |
+ Callback0::Type* callback); |
+ |
+// Asynchronously unlock the |cert|'s module, if necessary. |callback| is |
+// called when done (regardless if module was successfully unlocked or not). |
+// Should only be called on UI thread. |
+void UnlockCertSlotIfNecessary(net::X509Certificate* cert, |
+ browser::PK11PasswordReason reason, |
+ const std::string& server, |
+ Callback0::Type* callback); |
+ |
+} // namespace browser |
+ |
+#endif // CHROME_BROWSER_UI_PK11_PASSWORD_DIALOG_H_ |