| Index: chrome/browser/net/keygen_handler_generic.cc
|
| diff --git a/chrome/browser/net/keygen_handler_generic.cc b/chrome/browser/net/keygen_handler_generic.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..48193475a012dd0f30c4f5118378666c4d853684
|
| --- /dev/null
|
| +++ b/chrome/browser/net/keygen_handler_generic.cc
|
| @@ -0,0 +1,59 @@
|
| +// Copyright (c) 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.
|
| +
|
| +// This is the generic wrapper used for keygen on non-NSS platforms.
|
| +
|
| +#include "chrome/browser/net/keygen_handler.h"
|
| +
|
| +#include "base/bind.h"
|
| +#include "base/location.h"
|
| +#include "base/logging.h"
|
| +#include "base/threading/worker_pool.h"
|
| +#include "net/base/keygen_handler.h"
|
| +
|
| +namespace {
|
| +
|
| +void KeygenOnWorkerThread(
|
| + int key_size_in_bits,
|
| + const std::string& challenge,
|
| + const GURL& url,
|
| + bool stores_key,
|
| + std::string* result) {
|
| + net::KeygenHandler handler(key_size_in_bits, challenge, url);
|
| + handler.set_stores_key(stores_key);
|
| + *result = handler.GenKeyAndSignChallenge();
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +namespace chrome_browser_net {
|
| +
|
| +void Keygen(content::ResourceContext* context,
|
| + int key_size_in_bits,
|
| + const std::string& challenge,
|
| + const GURL& url,
|
| + bool stores_key,
|
| + const base::Callback<void(const std::string*)>& callback) {
|
| +
|
| + VLOG(1) << "Dispatching keygen task to worker pool.";
|
| + std::string* result(new std::string());
|
| + // Dispatch to worker pool, so we do not block the IO thread.
|
| + if (!base::WorkerPool::PostTaskAndReply(
|
| + FROM_HERE,
|
| + base::Bind(&KeygenOnWorkerThread,
|
| + key_size_in_bits,
|
| + challenge,
|
| + url,
|
| + stores_key,
|
| + result),
|
| + base::Bind(callback, base::Owned(result)),
|
| + true)) {
|
| + NOTREACHED() << "Failed to dispatch keygen task to worker pool";
|
| + callback.Run(NULL);
|
| + return;
|
| + }
|
| +}
|
| +
|
| +} // namespace chrome_browser_net
|
| +
|
|
|