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

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

Issue 1128043007: Support Kerberos on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix Android GN build Created 5 years, 6 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
OLDNEW
(Empty)
1 // Copyright (c) 2014 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 #include "net/android/dummy_spnego_authenticator.h"
5
6 #include "base/android/jni_string.h"
7 #include "base/base64.h"
8 #include "jni/DummySpnegoAuthenticator_jni.h"
9
10 namespace net {
11
12 // iso.org.dod.internet.security.mechanism.snego (1.3.6.1.5.5.2)
Ryan Sleevi 2015/06/29 13:56:44 nit: Add a comment explaining where it's from and
aberent 2015/07/02 21:13:34 Done.
13 gss_OID_desc CHROME_GSS_SPNEGO_MECH_OID_DESC_VAL = {
14 6,
15 const_cast<char*>("\x2b\x06\x01\x05\x05\x02")};
Ryan Sleevi 2015/06/29 13:56:44 DANGER: This is a fairly dangerous code pattern. B
aberent 2015/07/02 21:13:34 Done. Should probably be copied back to the origin
16
17 gss_OID CHROME_GSS_SPNEGO_MECH_OID_DESC = &CHROME_GSS_SPNEGO_MECH_OID_DESC_VAL;
18
19 namespace {
20
21 // gss_OID helpers.
22 // NOTE: gss_OID's do not own the data they point to, which should be static.
23 void ClearOid(gss_OID dest) {
24 if (!dest)
25 return;
26 dest->length = 0;
27 dest->elements = NULL;
28 }
29
30 void SetOid(gss_OID dest, const void* src, size_t length) {
31 if (!dest)
32 return;
33 ClearOid(dest);
34 if (!src)
35 return;
36 dest->length = length;
37 if (length)
38 dest->elements = const_cast<void*>(src);
39 }
40
41 void CopyOid(gss_OID dest, const gss_OID_desc* src) {
42 if (!dest)
43 return;
44 ClearOid(dest);
45 if (!src)
46 return;
47 SetOid(dest, src->elements, src->length);
48 }
49 } // namespace
Ryan Sleevi 2015/06/29 13:56:44 newline between 48/49
aberent 2015/07/02 21:13:34 Done.
50
51 namespace test {
52 GssContextMockImpl::GssContextMockImpl()
Ryan Sleevi 2015/06/29 13:56:44 newline between 51/52
aberent 2015/07/02 21:13:34 Done.
53 : lifetime_rec(0), ctx_flags(0), locally_initiated(0), open(0) {
54 ClearOid(&mech_type);
55 }
56
57 GssContextMockImpl::GssContextMockImpl(const GssContextMockImpl& other)
58 : src_name(other.src_name),
59 targ_name(other.targ_name),
60 lifetime_rec(other.lifetime_rec),
61 ctx_flags(other.ctx_flags),
62 locally_initiated(other.locally_initiated),
63 open(other.open) {
64 CopyOid(&mech_type, &other.mech_type);
65 }
66
67 GssContextMockImpl::GssContextMockImpl(const char* src_name_in,
68 const char* targ_name_in,
69 uint32_t lifetime_rec_in,
70 const gss_OID_desc& mech_type_in,
71 uint32_t ctx_flags_in,
72 int locally_initiated_in,
73 int open_in)
74 : src_name(src_name_in ? src_name_in : ""),
75 targ_name(targ_name_in ? targ_name_in : ""),
76 lifetime_rec(lifetime_rec_in),
77 ctx_flags(ctx_flags_in),
78 locally_initiated(locally_initiated_in),
79 open(open_in) {
80 CopyOid(&mech_type, &mech_type_in);
81 }
82
83 GssContextMockImpl::~GssContextMockImpl() {
84 ClearOid(&mech_type);
85 }
86
87 } // namespace test
88
89 namespace android {
90
91 DummySpnegoAuthenticator::SecurityContextQuery::SecurityContextQuery(
92 const std::string& in_expected_package,
93 uint32_t in_response_code,
94 uint32_t in_minor_response_code,
95 const test::GssContextMockImpl& in_context_info,
96 const char* in_expected_input_token,
97 const char* in_output_token)
98 : expected_package(in_expected_package),
99 response_code(in_response_code),
100 minor_response_code(in_minor_response_code),
101 context_info(in_context_info) {
102 if (in_expected_input_token) {
103 expected_input_token = in_expected_input_token;
104 } else {
105 expected_input_token = std::string();
Ryan Sleevi 2015/06/29 13:56:44 unnecessary (default string ctor will ensure this)
aberent 2015/07/02 21:13:34 Done.
106 }
107 if (in_output_token) {
108 output_token = in_output_token;
109 } else {
110 output_token = std::string();
Ryan Sleevi 2015/06/29 13:56:44 unnecessary
aberent 2015/07/02 21:13:34 Done.
111 }
112 }
113
114 DummySpnegoAuthenticator::SecurityContextQuery::~SecurityContextQuery() {
115 }
116
117 void DummySpnegoAuthenticator::EnsureTestAccountExists() {
118 Java_DummySpnegoAuthenticator_ensureTestAccountExists(
119 base::android::AttachCurrentThread());
120 }
121
122 void DummySpnegoAuthenticator::RemoveTestAccounts() {
123 Java_DummySpnegoAuthenticator_removeTestAccounts(
124 base::android::AttachCurrentThread());
125 }
126
127 void DummySpnegoAuthenticator::ExpectSecurityContext(
128 const std::string& expected_package,
129 uint32_t response_code,
130 uint32_t minor_response_code,
131 const test::GssContextMockImpl& context_info,
132 std::string& expected_input_token,
133 std::string& output_token) {
134 std::string token;
135 base::Base64Encode(output_token, &token);
Ryan Sleevi 2015/06/29 13:56:44 Check results
aberent 2015/07/02 21:13:34 Now, after significant changes, the code is checki
136 SetNextResult(response_code, token);
137 }
138
139 void DummySpnegoAuthenticator::SetNextResult(int result,
140 const std::string& token) {
141 auto env = base::android::AttachCurrentThread();
142 Java_DummySpnegoAuthenticator_setNextResult(
143 env, result, base::android::ConvertUTF8ToJavaString(env, token).obj());
144 }
145
146 bool DummySpnegoAuthenticator::RegisterJni(JNIEnv* env) {
147 return RegisterNativesImpl(env);
148 }
149
150 } // namespace android
151 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698