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

Unified Diff: components/cronet/android/cronet_url_request_context_adapter.cc

Issue 2029423004: QUIC/Cronet - Add Java glue layer to serialize and de-serialize (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cert_serialize_0526
Patch Set: Created 4 years, 6 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
Index: components/cronet/android/cronet_url_request_context_adapter.cc
diff --git a/components/cronet/android/cronet_url_request_context_adapter.cc b/components/cronet/android/cronet_url_request_context_adapter.cc
index 1141e8b2cc0a90b18a593ecb41f478b52168e1a0..9ecb0fcff894d00fc7d8e6d3953871e6d39ba25a 100644
--- a/components/cronet/android/cronet_url_request_context_adapter.cc
+++ b/components/cronet/android/cronet_url_request_context_adapter.cc
@@ -14,6 +14,7 @@
#include "base/android/jni_android.h"
#include "base/android/jni_array.h"
#include "base/android/jni_string.h"
+#include "base/base64.h"
#include "base/bind.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
@@ -41,8 +42,10 @@
#include "net/base/net_errors.h"
#include "net/base/network_delegate_impl.h"
#include "net/base/url_util.h"
+#include "net/cert/caching_cert_verifier.h"
#include "net/cert/cert_verifier.h"
#include "net/cookies/cookie_monster.h"
+#include "net/extras/cert/cert_verifier_cache_persister.h"
#include "net/http/http_auth_handler_factory.h"
#include "net/http/http_server_properties_manager.h"
#include "net/log/write_to_file_net_log_observer.h"
@@ -627,6 +630,18 @@ void CronetURLRequestContextAdapter::InitializeOnNetworkThread(
}
}
+ // If there is a cert_verifier, then pouplate it's cache with
+ // |cert_verifier_data|.
+ if (!config->cert_verifier_data.empty() && context_->cert_verifier()) {
+ std::string data;
+ if (base::Base64Decode(config->cert_verifier_data, &data)) {
+ net::CertVerifierCachePersister persister(
+ reinterpret_cast<net::CachingCertVerifier*>(
+ context_->cert_verifier()));
+ persister.LoadCache(data);
+ }
+ }
+
// Iterate through PKP configuration for every host.
for (const auto& pkp : config->pkp_list) {
// Add the host pinning.
@@ -721,6 +736,16 @@ void CronetURLRequestContextAdapter::StopNetLog(
base::Unretained(this)));
}
+void CronetURLRequestContextAdapter::GetCertVerifierData(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& jcaller) {
+ PostTaskToNetworkThread(
+ FROM_HERE,
+ base::Bind(
+ &CronetURLRequestContextAdapter::GetCertVerifierDataOnNetworkThread,
+ base::Unretained(this)));
+}
+
void CronetURLRequestContextAdapter::StartNetLogToFileOnNetworkThread(
const std::string& file_name, bool log_all) {
DCHECK(GetNetworkTaskRunner()->BelongsToCurrentThread());
@@ -753,6 +778,22 @@ void CronetURLRequestContextAdapter::StopNetLogOnNetworkThread() {
}
}
+void CronetURLRequestContextAdapter::GetCertVerifierDataOnNetworkThread() {
+ DCHECK(GetNetworkTaskRunner()->BelongsToCurrentThread());
+ std::string encoded_data;
+ if (is_context_initialized_ && context_->cert_verifier()) {
+ std::string data;
+ net::CertVerifierCachePersister persister(
+ reinterpret_cast<net::CachingCertVerifier*>(context_->cert_verifier()));
+ persister.SerializeCache(&data);
+ base::Base64Encode(data, &encoded_data);
+ }
+ JNIEnv* env = base::android::AttachCurrentThread();
+ Java_CronetUrlRequestContext_onGetCertVerifierData(
+ env, jcronet_url_request_context_.obj(),
+ base::android::ConvertUTF8ToJavaString(env, encoded_data).obj());
+}
+
base::Thread* CronetURLRequestContextAdapter::GetFileThread() {
DCHECK(GetNetworkTaskRunner()->BelongsToCurrentThread());
if (!file_thread_) {
@@ -800,7 +841,8 @@ static jlong CreateRequestContextConfig(
jint jhttp_cache_mode,
jlong jhttp_cache_max_size,
const JavaParamRef<jstring>& jexperimental_quic_connection_options,
- jlong jmock_cert_verifier) {
+ jlong jmock_cert_verifier,
+ const JavaParamRef<jstring>& jcert_verifier_data) {
return reinterpret_cast<jlong>(new URLRequestContextConfig(
jquic_enabled,
ConvertNullableJavaStringToUTF8(env, jquic_default_user_agent_id),
@@ -818,7 +860,8 @@ static jlong CreateRequestContextConfig(
ConvertNullableJavaStringToUTF8(
env, jdata_reduction_proxy_secure_proxy_check_url),
base::WrapUnique(
- reinterpret_cast<net::CertVerifier*>(jmock_cert_verifier))));
+ reinterpret_cast<net::CertVerifier*>(jmock_cert_verifier)),
+ ConvertNullableJavaStringToUTF8(env, jcert_verifier_data)));
}
// Add a QUIC hint to a URLRequestContextConfig.

Powered by Google App Engine
This is Rietveld 408576698