Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(395)

Unified Diff: net/base/keygen_handler_unittest.cc

Issue 384413004: Remove default key slot from KeygenHandler. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments: adding ifdefs. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/base/keygen_handler_nss.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/keygen_handler_unittest.cc
diff --git a/net/base/keygen_handler_unittest.cc b/net/base/keygen_handler_unittest.cc
index a868b2925c8745ee9362f8cf1a6dee84df208028..2cb64743c8b4a7b5f74ce4e5b39e959c4c21ea7c 100644
--- a/net/base/keygen_handler_unittest.cc
+++ b/net/base/keygen_handler_unittest.cc
@@ -14,24 +14,59 @@
#include "base/threading/thread_restrictions.h"
#include "base/synchronization/waitable_event.h"
#include "build/build_config.h"
-#include "crypto/nss_util.h"
#include "testing/gtest/include/gtest/gtest.h"
#if defined(USE_NSS)
#include <private/pprthred.h> // PR_DetachThread
+#include "crypto/nss_crypto_module_delegate.h"
+#include "crypto/nss_util.h"
+#include "crypto/nss_util_internal.h"
#endif
namespace net {
namespace {
+#if defined(USE_NSS)
+class StubCryptoModuleDelegate : public crypto::NSSCryptoModuleDelegate {
+ public:
+ explicit StubCryptoModuleDelegate(crypto::ScopedPK11Slot slot)
+ : slot_(slot.Pass()) {}
+
+ virtual std::string RequestPassword(const std::string& slot_name,
+ bool retry,
+ bool* cancelled) OVERRIDE{
+ return std::string();
+ }
+
+ virtual crypto::ScopedPK11Slot RequestSlot() OVERRIDE {
+ return crypto::ScopedPK11Slot(PK11_ReferenceSlot(slot_.get()));
+ }
+
+ private:
+ crypto::ScopedPK11Slot slot_;
+};
+#endif
+
class KeygenHandlerTest : public ::testing::Test {
public:
KeygenHandlerTest() {}
virtual ~KeygenHandlerTest() {}
+ scoped_ptr<KeygenHandler> CreateKeygenHandler() {
+ scoped_ptr<KeygenHandler> handler(new KeygenHandler(
+ 768, "some challenge", GURL("http://www.example.com")));
+#if defined(USE_NSS)
+ handler->set_crypto_module_delegate(
+ scoped_ptr<crypto::NSSCryptoModuleDelegate>(
+ new StubCryptoModuleDelegate(
+ crypto::ScopedPK11Slot(crypto::GetPersistentNSSKeySlot()))));
+#endif
+ return handler.Pass();
+ }
+
private:
-#if defined(OS_CHROMEOS) && defined(USE_NSS)
+#if defined(USE_NSS)
crypto::ScopedTestNSSDB test_nss_db_;
#endif
};
@@ -73,22 +108,22 @@ void AssertValidSignedPublicKeyAndChallenge(const std::string& result,
}
TEST_F(KeygenHandlerTest, SmokeTest) {
- KeygenHandler handler(768, "some challenge", GURL("http://www.example.com"));
- handler.set_stores_key(false); // Don't leave the key-pair behind
- std::string result = handler.GenKeyAndSignChallenge();
+ scoped_ptr<KeygenHandler> handler(CreateKeygenHandler());
+ handler->set_stores_key(false); // Don't leave the key-pair behind
+ std::string result = handler->GenKeyAndSignChallenge();
VLOG(1) << "KeygenHandler produced: " << result;
AssertValidSignedPublicKeyAndChallenge(result, "some challenge");
}
-void ConcurrencyTestCallback(base::WaitableEvent* event,
- const std::string& challenge,
+void ConcurrencyTestCallback(const std::string& challenge,
+ base::WaitableEvent* event,
+ scoped_ptr<KeygenHandler> handler,
std::string* result) {
// We allow Singleton use on the worker thread here since we use a
// WaitableEvent to synchronize, so it's safe.
base::ThreadRestrictions::ScopedAllowSingleton scoped_allow_singleton;
- KeygenHandler handler(768, challenge, GURL("http://www.example.com"));
- handler.set_stores_key(false); // Don't leave the key-pair behind.
- *result = handler.GenKeyAndSignChallenge();
+ handler->set_stores_key(false); // Don't leave the key-pair behind.
+ *result = handler->GenKeyAndSignChallenge();
event->Signal();
#if defined(USE_NSS)
// Detach the thread from NSPR.
@@ -109,12 +144,15 @@ TEST_F(KeygenHandlerTest, ConcurrencyTest) {
base::WaitableEvent* events[NUM_HANDLERS] = { NULL };
std::string results[NUM_HANDLERS];
for (int i = 0; i < NUM_HANDLERS; i++) {
+ scoped_ptr<KeygenHandler> handler(CreateKeygenHandler());
events[i] = new base::WaitableEvent(false, false);
- base::WorkerPool::PostTask(
- FROM_HERE,
- base::Bind(ConcurrencyTestCallback, events[i], "some challenge",
- &results[i]),
- true);
+ base::WorkerPool::PostTask(FROM_HERE,
+ base::Bind(ConcurrencyTestCallback,
+ "some challenge",
+ events[i],
+ base::Passed(&handler),
+ &results[i]),
+ true);
}
for (int i = 0; i < NUM_HANDLERS; i++) {
« no previous file with comments | « net/base/keygen_handler_nss.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698