| // Copyright 2013 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_CRYPTO_MODULE_PASSWORD_DIALOG_NSS_H_ | 
 | #define CHROME_BROWSER_UI_CRYPTO_MODULE_PASSWORD_DIALOG_NSS_H_ | 
 |  | 
 | #include <string> | 
 | #include <vector> | 
 |  | 
 | #include "base/callback_forward.h" | 
 | #include "base/memory/ref_counted.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_widget_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_ |