Chromium Code Reviews| Index: net/base/keygen_handler_nss.cc |
| diff --git a/net/base/keygen_handler_nss.cc b/net/base/keygen_handler_nss.cc |
| index 215244c7e56af2d2bbe3ca4a1ea5923e1e74cb49..6e7112c13f803d218b14374881bad9444cfd9bce 100644 |
| --- a/net/base/keygen_handler_nss.cc |
| +++ b/net/base/keygen_handler_nss.cc |
| @@ -4,6 +4,11 @@ |
| #include "net/base/keygen_handler.h" |
| +#include "base/crypto/pk11_blocking_password_delegate.h" |
| +#include "base/crypto/scoped_nss_types.h" |
| +#include "base/logging.h" |
| +#include "base/nss_util.h" |
| +#include "base/nss_util_internal.h" |
| #include "net/third_party/mozilla_security_manager/nsKeygenHandler.h" |
| // PSM = Mozilla's Personal Security Manager. |
| @@ -12,8 +17,30 @@ namespace psm = mozilla_security_manager; |
| namespace net { |
| std::string KeygenHandler::GenKeyAndSignChallenge() { |
| + // Ensure NSS is initialized. |
| + base::EnsureNSSInit(); |
| + |
| + // TODO(mattm): allow choosing which slot to store the generated key? |
|
wtc
2010/12/15 20:54:36
Nit: store the generated key => generate and store
mattm
2011/01/12 01:22:07
Done.
|
| + base::ScopedPK11Slot slot(base::GetDefaultNSSKeySlot()); |
| + if (!slot.get()) { |
| + LOG(ERROR) << "Couldn't get Internal key slot!"; |
|
wtc
2010/12/15 20:54:36
Nit: lowercase "internal".
mattm
2011/01/12 01:22:07
Done.
|
| + return std::string(); |
| + } |
| + |
| + // Authenticate to the token. |
| + if (SECSuccess != PK11_Authenticate(slot.get(), PR_TRUE, |
| + pk11_password_delegate_.get())) { |
| + LOG(ERROR) << "Couldn't authenticate to PK11 token!"; |
|
wtc
2010/12/15 20:54:36
Nit: this probably should also say "internal key s
mattm
2011/01/12 01:22:07
Done.
|
| + return std::string(); |
| + } |
| + |
| return psm::GenKeyAndSignChallenge(key_size_in_bits_, challenge_, url_, |
| - stores_key_); |
| + slot.get(), stores_key_); |
| +} |
| + |
| +void KeygenHandler::set_pk11_password_delegate( |
| + base::PK11BlockingPasswordDelegate* delegate) { |
| + pk11_password_delegate_.reset(delegate); |
| } |
| } // namespace net |