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

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

Issue 12212135: Return specific cert verification errors on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 7 years, 10 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
« no previous file with comments | « net/android/network_library.h ('k') | net/base/cert_verify_proc_android.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 VerifyResult VerifyX509CertChain(const std::vector<std::string>& cert_chain, 26 CertVerifyResultAndroid VerifyX509CertChain(
27 const std::string& auth_type) { 27 const std::vector<std::string>& cert_chain,
28 const std::string& auth_type) {
28 JNIEnv* env = AttachCurrentThread(); 29 JNIEnv* env = AttachCurrentThread();
29 30
30 ScopedJavaLocalRef<jobjectArray> chain_byte_array = 31 ScopedJavaLocalRef<jobjectArray> chain_byte_array =
31 ToJavaArrayOfByteArray(env, cert_chain); 32 ToJavaArrayOfByteArray(env, cert_chain);
32 DCHECK(!chain_byte_array.is_null()); 33 DCHECK(!chain_byte_array.is_null());
33 34
34 ScopedJavaLocalRef<jstring> auth_string = 35 ScopedJavaLocalRef<jstring> auth_string =
35 ConvertUTF8ToJavaString(env, auth_type); 36 ConvertUTF8ToJavaString(env, auth_type);
36 DCHECK(!auth_string.is_null()); 37 DCHECK(!auth_string.is_null());
37 38
38 jboolean trusted = Java_AndroidNetworkLibrary_verifyServerCertificates( 39 jint result = Java_AndroidNetworkLibrary_verifyServerCertificates(
39 env, chain_byte_array.obj(), auth_string.obj()); 40 env, chain_byte_array.obj(), auth_string.obj());
40 if (ClearException(env))
41 return VERIFY_INVOCATION_ERROR;
42 41
43 return trusted ? VERIFY_OK : VERIFY_NO_TRUSTED_ROOT; 42 return static_cast<CertVerifyResultAndroid>(result);
44 } 43 }
45 44
46 void AddTestRootCertificate(const uint8* cert, size_t len) { 45 void AddTestRootCertificate(const uint8* cert, size_t len) {
47 JNIEnv* env = AttachCurrentThread(); 46 JNIEnv* env = AttachCurrentThread();
48 ScopedJavaLocalRef<jbyteArray> cert_array = ToJavaByteArray(env, cert, len); 47 ScopedJavaLocalRef<jbyteArray> cert_array = ToJavaByteArray(env, cert, len);
49 DCHECK(!cert_array.is_null()); 48 DCHECK(!cert_array.is_null());
50 Java_AndroidNetworkLibrary_addTestRootCertificate(env, cert_array.obj()); 49 Java_AndroidNetworkLibrary_addTestRootCertificate(env, cert_array.obj());
51 } 50 }
52 51
53 void ClearTestRootCertificates() { 52 void ClearTestRootCertificates() {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 *result = ConvertJavaStringToUTF8(ret); 113 *result = ConvertJavaStringToUTF8(ret);
115 return true; 114 return true;
116 } 115 }
117 116
118 bool RegisterNetworkLibrary(JNIEnv* env) { 117 bool RegisterNetworkLibrary(JNIEnv* env) {
119 return RegisterNativesImpl(env); 118 return RegisterNativesImpl(env);
120 } 119 }
121 120
122 } // namespace android 121 } // namespace android
123 } // namespace net 122 } // namespace net
OLDNEW
« no previous file with comments | « net/android/network_library.h ('k') | net/base/cert_verify_proc_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698