|  | // Copyright 2013 The Chromium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef CHROME_BROWSER_UI_CRYPTO_MODULE_PASSWORD_DIALOG_NSS_H_ | 
|  | #define CHROME_BROWSER_UI_CRYPTO_MODULE_PASSWORD_DIALOG_NSS_H_ | 
|  |  | 
|  | #include <vector> | 
|  |  | 
|  | #include "base/functional/callback_forward.h" | 
|  | #include "chrome/browser/ui/crypto_module_password_dialog.h" | 
|  | #include "crypto/scoped_nss_types.h" | 
|  | #include "net/base/host_port_pair.h" | 
|  | #include "ui/gfx/native_ui_types.h" | 
|  |  | 
|  | typedef struct CERTCertificateStr CERTCertificate; | 
|  |  | 
|  | namespace chrome { | 
|  |  | 
|  | // Asynchronously unlock |modules|, if necessary. |callback| is called when | 
|  | // done (regardless if any modules were successfully unlocked or not).  Should | 
|  | // only be called on UI thread. | 
|  | void UnlockSlotsIfNecessary(std::vector<crypto::ScopedPK11Slot> modules, | 
|  | CryptoModulePasswordReason reason, | 
|  | const net::HostPortPair& server, | 
|  | gfx::NativeWindow parent, | 
|  | base::OnceClosure 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(CERTCertificate* cert, | 
|  | CryptoModulePasswordReason reason, | 
|  | const net::HostPortPair& server, | 
|  | gfx::NativeWindow parent, | 
|  | base::OnceClosure callback); | 
|  |  | 
|  | }  // namespace chrome | 
|  |  | 
|  | #endif  // CHROME_BROWSER_UI_CRYPTO_MODULE_PASSWORD_DIALOG_NSS_H_ |