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

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: DEPS 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
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
wtc 2011/08/09 18:47:22 Delete one blank line.
michaelbai 2011/08/11 16:10:18 Done.
24 namespace net {
25 namespace android {
26
27 VerifyResult VerifyX509CertChain(const std::vector<std::string>& cert_chain,
28 const std::string& hostname,
29 const std::string& auth_type) {
30 JNIEnv* env = AttachCurrentThread();
31 if (!env) {
32 // TODO(husky): Maybe initialize the JVM in unit tests?
33 LOG(WARNING) << "JNI initialization failed";
34 return VERIFY_INVOCATION_ERROR;
35 }
36
37 AutoJObject chain_byte_array = AutoJObject::FromLocalRef(
38 env, ToJavaArrayOfByteArray(env, cert_chain));
39 DCHECK(chain_byte_array.obj());
40
41 AutoJObject host_string = AutoJObject::FromLocalRef(env,
42 ConvertUTF8ToJavaString(env, hostname));
wtc 2011/08/09 18:47:22 "env" should be moved to this line. Several other
michaelbai 2011/08/11 16:10:18 Done.
43 DCHECK(host_string.obj());
44
45 AutoJObject auth_string = AutoJObject::FromLocalRef(env,
46 ConvertUTF8ToJavaString(env, auth_type));
47 DCHECK(auth_string.obj());
48
49 jint error = Java_AndroidNetworkLibrary_verifyServerCertificates(
50 env, static_cast<jobjectArray>(chain_byte_array.obj()),
51 static_cast<jstring>(host_string.obj()),
52 static_cast<jstring>(auth_string.obj()));
53
54 switch (error) {
55 case 0:
56 return VERIFY_OK;
57 case 1:
58 return VERIFY_BAD_HOSTNAME;
59 case 2:
60 return VERIFY_NO_TRUSTED_ROOT;
61 }
62 return VERIFY_INVOCATION_ERROR;
63 }
64
65 bool StoreKeyPair(const uint8* public_key,
66 size_t public_len,
67 const uint8* private_key,
68 size_t private_len) {
69 JNIEnv* env = AttachCurrentThread();
70 AutoJObject public_array = AutoJObject::FromLocalRef(env,
71 ToJavaByteArray(env, public_key, public_len));
72 AutoJObject private_array = AutoJObject::FromLocalRef(env,
73 ToJavaByteArray(env, private_key, private_len));
74 jboolean ret = Java_AndroidNetworkLibrary_storeKeyPair(env,
75 GetApplicationContext(),
76 static_cast<jbyteArray>(public_array.obj()),
77 static_cast<jbyteArray>(private_array.obj()));
78 if (CheckException(env) || !ret) {
79 LOG(WARNING) << "Call to Java_AndroidNetworkLibrary_storeKeyPair failed";
80 return false;
81 }
82 return true;
83 }
84
85 bool GetMimeTypeFromExtension(const std::string& extension,
86 std::string* result) {
87 JNIEnv* env = AttachCurrentThread();
88
89 AutoJObject extension_string = AutoJObject::FromLocalRef(env,
90 ConvertUTF8ToJavaString(env, extension));
91 AutoJObject ret = AutoJObject::FromLocalRef(env,
92 Java_AndroidNetworkLibrary_getMimeTypeFromExtension(
93 env, static_cast<jstring>(extension_string.obj())));
94
95 if (CheckException(env) || !ret.obj()) {
96 LOG(WARNING) << "Call to getMimeTypeFromExtension failed";
97 return false;
98 }
99 *result = ConvertJavaStringToUTF8(
100 env, static_cast<jstring>(ret.obj()));
wtc 2011/08/09 18:47:22 This can fit on the previous line.
michaelbai 2011/08/11 16:10:18 Done.
101 return true;
102 }
103
104 bool RegisterNetworkLibrary(JNIEnv* env) {
105 return RegisterNativesImpl(env);
106 }
107
108 } // namespace android
109 } // namespace net
110
111
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698