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

Side by Side Diff: net/android/network_library.cc

Issue 108653013: Export verified_cert and public_key_hashes on Android. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove unnecessary NET_EXPORT. Created 6 years, 11 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/android/network_library.h" 5 #include "net/android/network_library.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_array.h" 8 #include "base/android/jni_array.h"
9 #include "base/android/jni_string.h" 9 #include "base/android/jni_string.h"
10 #include "base/android/scoped_java_ref.h" 10 #include "base/android/scoped_java_ref.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "jni/AndroidNetworkLibrary_jni.h" 12 #include "jni/AndroidNetworkLibrary_jni.h"
13 13
14 using base::android::AttachCurrentThread; 14 using base::android::AttachCurrentThread;
15 using base::android::ClearException; 15 using base::android::ClearException;
16 using base::android::ConvertJavaStringToUTF8; 16 using base::android::ConvertJavaStringToUTF8;
17 using base::android::ConvertUTF8ToJavaString; 17 using base::android::ConvertUTF8ToJavaString;
18 using base::android::GetApplicationContext; 18 using base::android::GetApplicationContext;
19 using base::android::ScopedJavaLocalRef; 19 using base::android::ScopedJavaLocalRef;
20 using base::android::ToJavaArrayOfByteArray; 20 using base::android::ToJavaArrayOfByteArray;
21 using base::android::ToJavaByteArray; 21 using base::android::ToJavaByteArray;
22 22
23 namespace net { 23 namespace net {
24 namespace android { 24 namespace android {
25 25
26 CertVerifyResultAndroid VerifyX509CertChain( 26 void VerifyX509CertChain(const std::vector<std::string>& cert_chain,
27 const std::vector<std::string>& cert_chain, 27 const std::string& auth_type,
28 const std::string& auth_type) { 28 const std::string& host,
29 CertVerifyStatusAndroid* status,
30 bool* is_issued_by_known_root,
31 std::vector<std::string>* verified_chain) {
29 JNIEnv* env = AttachCurrentThread(); 32 JNIEnv* env = AttachCurrentThread();
30 33
31 ScopedJavaLocalRef<jobjectArray> chain_byte_array = 34 ScopedJavaLocalRef<jobjectArray> chain_byte_array =
32 ToJavaArrayOfByteArray(env, cert_chain); 35 ToJavaArrayOfByteArray(env, cert_chain);
33 DCHECK(!chain_byte_array.is_null()); 36 DCHECK(!chain_byte_array.is_null());
34 37
35 ScopedJavaLocalRef<jstring> auth_string = 38 ScopedJavaLocalRef<jstring> auth_string =
36 ConvertUTF8ToJavaString(env, auth_type); 39 ConvertUTF8ToJavaString(env, auth_type);
37 DCHECK(!auth_string.is_null()); 40 DCHECK(!auth_string.is_null());
38 41
39 jint result = Java_AndroidNetworkLibrary_verifyServerCertificates( 42 ScopedJavaLocalRef<jstring> host_string =
40 env, chain_byte_array.obj(), auth_string.obj()); 43 ConvertUTF8ToJavaString(env, host);
44 DCHECK(!host_string.is_null());
41 45
42 return static_cast<CertVerifyResultAndroid>(result); 46 ScopedJavaLocalRef<jobject> result =
47 Java_AndroidNetworkLibrary_verifyServerCertificates(
48 env, chain_byte_array.obj(), auth_string.obj(), host_string.obj());
49 if (ClearException(env)) {
50 *status = android::VERIFY_FAILED;
joth 2014/01/18 00:23:13 IIRC this shouldn't be needed: AndroidNetworkLibra
51 return;
52 }
53
54 ExtractCertVerifyResult(result.obj(),
55 status, is_issued_by_known_root, verified_chain);
43 } 56 }
44 57
45 void AddTestRootCertificate(const uint8* cert, size_t len) { 58 void AddTestRootCertificate(const uint8* cert, size_t len) {
46 JNIEnv* env = AttachCurrentThread(); 59 JNIEnv* env = AttachCurrentThread();
47 ScopedJavaLocalRef<jbyteArray> cert_array = ToJavaByteArray(env, cert, len); 60 ScopedJavaLocalRef<jbyteArray> cert_array = ToJavaByteArray(env, cert, len);
48 DCHECK(!cert_array.is_null()); 61 DCHECK(!cert_array.is_null());
49 Java_AndroidNetworkLibrary_addTestRootCertificate(env, cert_array.obj()); 62 Java_AndroidNetworkLibrary_addTestRootCertificate(env, cert_array.obj());
50 } 63 }
51 64
52 void ClearTestRootCertificates() { 65 void ClearTestRootCertificates() {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 *result = ConvertJavaStringToUTF8(ret); 126 *result = ConvertJavaStringToUTF8(ret);
114 return true; 127 return true;
115 } 128 }
116 129
117 bool RegisterNetworkLibrary(JNIEnv* env) { 130 bool RegisterNetworkLibrary(JNIEnv* env) {
118 return RegisterNativesImpl(env); 131 return RegisterNativesImpl(env);
119 } 132 }
120 133
121 } // namespace android 134 } // namespace android
122 } // namespace net 135 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698