Chromium Code Reviews| Index: net/android/network_library.cc |
| diff --git a/net/android/network_library.cc b/net/android/network_library.cc |
| index 2407100cdc3052457bb0e86d71cdd2444a8a014b..37ab18e6f4a35c86b59e9583424c9aa1f657d05f 100644 |
| --- a/net/android/network_library.cc |
| +++ b/net/android/network_library.cc |
| @@ -23,9 +23,12 @@ using base::android::ToJavaByteArray; |
| namespace net { |
| namespace android { |
| -CertVerifyResultAndroid VerifyX509CertChain( |
| - const std::vector<std::string>& cert_chain, |
| - const std::string& auth_type) { |
| +void VerifyX509CertChain(const std::vector<std::string>& cert_chain, |
| + const std::string& auth_type, |
| + const std::string& host, |
| + CertVerifyStatusAndroid* status, |
| + bool* is_issued_by_known_root, |
| + std::vector<std::string>* verified_chain) { |
| JNIEnv* env = AttachCurrentThread(); |
| ScopedJavaLocalRef<jobjectArray> chain_byte_array = |
| @@ -36,10 +39,20 @@ CertVerifyResultAndroid VerifyX509CertChain( |
| ConvertUTF8ToJavaString(env, auth_type); |
| DCHECK(!auth_string.is_null()); |
| - jint result = Java_AndroidNetworkLibrary_verifyServerCertificates( |
| - env, chain_byte_array.obj(), auth_string.obj()); |
| + ScopedJavaLocalRef<jstring> host_string = |
| + ConvertUTF8ToJavaString(env, host); |
| + DCHECK(!host_string.is_null()); |
| - return static_cast<CertVerifyResultAndroid>(result); |
| + ScopedJavaLocalRef<jobject> result = |
| + Java_AndroidNetworkLibrary_verifyServerCertificates( |
| + env, chain_byte_array.obj(), auth_string.obj(), host_string.obj()); |
| + if (ClearException(env)) { |
| + *status = android::VERIFY_FAILED; |
|
joth
2014/01/18 00:23:13
IIRC this shouldn't be needed: AndroidNetworkLibra
|
| + return; |
| + } |
| + |
| + ExtractCertVerifyResult(result.obj(), |
| + status, is_issued_by_known_root, verified_chain); |
| } |
| void AddTestRootCertificate(const uint8* cert, size_t len) { |