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

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

Issue 7538029: Upstream certificate and mime Android implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync again Created 9 years, 4 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
« no previous file with comments | « net/android/network_library.h ('k') | net/base/openssl_private_key_store_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
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "net/android/network_library.h"
6
7 #include "base/android/auto_jobject.h"
8 #include "base/android/jni_android.h"
9 #include "base/android/jni_array.h"
10 #include "base/android/jni_string.h"
11 #include "base/logging.h"
12 #include "jni/android_network_library_jni.h"
13
14 using base::android::AttachCurrentThread;
15 using base::android::AutoJObject;
16 using base::android::CheckException;
17 using base::android::ConvertJavaStringToUTF8;
18 using base::android::ConvertUTF8ToJavaString;
19 using base::android::GetApplicationContext;
20 using base::android::ToJavaArrayOfByteArray;
21 using base::android::ToJavaByteArray;
22
23 namespace net {
24 namespace android {
25
26 VerifyResult VerifyX509CertChain(const std::vector<std::string>& cert_chain,
27 const std::string& hostname,
28 const std::string& auth_type) {
29 JNIEnv* env = AttachCurrentThread();
30 if (!env) {
31 // TODO(husky): Maybe initialize the JVM in unit tests?
32 LOG(WARNING) << "JNI initialization failed";
33 return VERIFY_INVOCATION_ERROR;
34 }
35
36 AutoJObject chain_byte_array = AutoJObject::FromLocalRef(
37 env, ToJavaArrayOfByteArray(env, cert_chain));
38 DCHECK(chain_byte_array.obj());
39
40 AutoJObject host_string = AutoJObject::FromLocalRef(
41 env, ConvertUTF8ToJavaString(env, hostname));
42 DCHECK(host_string.obj());
43
44 AutoJObject auth_string = AutoJObject::FromLocalRef(
45 env, ConvertUTF8ToJavaString(env, auth_type));
46 DCHECK(auth_string.obj());
47
48 jint error = Java_AndroidNetworkLibrary_verifyServerCertificates(
49 env, static_cast<jobjectArray>(chain_byte_array.obj()),
50 static_cast<jstring>(host_string.obj()),
51 static_cast<jstring>(auth_string.obj()));
52
53 switch (error) {
54 case 0:
55 return VERIFY_OK;
56 case 1:
57 return VERIFY_BAD_HOSTNAME;
58 case 2:
59 return VERIFY_NO_TRUSTED_ROOT;
60 }
61 return VERIFY_INVOCATION_ERROR;
62 }
63
64 bool StoreKeyPair(const uint8* public_key,
65 size_t public_len,
66 const uint8* private_key,
67 size_t private_len) {
68 JNIEnv* env = AttachCurrentThread();
69 AutoJObject public_array = AutoJObject::FromLocalRef(
70 env, ToJavaByteArray(env, public_key, public_len));
71 AutoJObject private_array = AutoJObject::FromLocalRef(
72 env, ToJavaByteArray(env, private_key, private_len));
73 jboolean ret = Java_AndroidNetworkLibrary_storeKeyPair(env,
74 GetApplicationContext(),
75 static_cast<jbyteArray>(public_array.obj()),
76 static_cast<jbyteArray>(private_array.obj()));
77 if (CheckException(env) || !ret) {
78 LOG(WARNING) << "Call to Java_AndroidNetworkLibrary_storeKeyPair failed";
79 return false;
80 }
81 return true;
82 }
83
84 bool GetMimeTypeFromExtension(const std::string& extension,
85 std::string* result) {
86 JNIEnv* env = AttachCurrentThread();
87
88 AutoJObject extension_string = AutoJObject::FromLocalRef(
89 env, ConvertUTF8ToJavaString(env, extension));
90 AutoJObject ret = AutoJObject::FromLocalRef(
91 env, Java_AndroidNetworkLibrary_getMimeTypeFromExtension(
92 env, static_cast<jstring>(extension_string.obj())));
93
94 if (CheckException(env) || !ret.obj()) {
95 LOG(WARNING) << "Call to getMimeTypeFromExtension failed";
96 return false;
97 }
98 *result = ConvertJavaStringToUTF8(env, static_cast<jstring>(ret.obj()));
99 return true;
100 }
101
102 bool RegisterNetworkLibrary(JNIEnv* env) {
103 return RegisterNativesImpl(env);
104 }
105
106 } // namespace android
107 } // namespace net
108
109
OLDNEW
« no previous file with comments | « net/android/network_library.h ('k') | net/base/openssl_private_key_store_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698