Chromium Code Reviews| OLD | NEW |
|---|---|
| (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 | |
| OLD | NEW |