| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/macros.h" | 6 #include "base/macros.h" |
| 7 #include "net/base/net_errors.h" | 7 #include "net/base/net_errors.h" |
| 8 #include "remoting/base/rsa_key_pair.h" | 8 #include "remoting/base/rsa_key_pair.h" |
| 9 #include "remoting/protocol/auth_util.h" | 9 #include "remoting/protocol/auth_util.h" |
| 10 #include "remoting/protocol/authenticator_test_base.h" | 10 #include "remoting/protocol/authenticator_test_base.h" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 const char kTestPinBad[] = "654321"; | 46 const char kTestPinBad[] = "654321"; |
| 47 | 47 |
| 48 } // namespace | 48 } // namespace |
| 49 | 49 |
| 50 class NegotiatingAuthenticatorTest : public AuthenticatorTestBase { | 50 class NegotiatingAuthenticatorTest : public AuthenticatorTestBase { |
| 51 public: | 51 public: |
| 52 NegotiatingAuthenticatorTest() {} | 52 NegotiatingAuthenticatorTest() {} |
| 53 ~NegotiatingAuthenticatorTest() override {} | 53 ~NegotiatingAuthenticatorTest() override {} |
| 54 | 54 |
| 55 protected: | 55 protected: |
| 56 void InitAuthenticators(const std::string& client_id, | 56 virtual void InitAuthenticators(const std::string& client_id, |
| 57 const std::string& client_paired_secret, | 57 const std::string& client_paired_secret, |
| 58 const std::string& client_interactive_pin, | 58 const std::string& client_interactive_pin, |
| 59 const std::string& host_secret, | 59 const std::string& host_secret, |
| 60 bool it2me) { | 60 bool it2me) { |
| 61 if (it2me) { | 61 if (it2me) { |
| 62 host_ = NegotiatingHostAuthenticator::CreateForIt2Me( | 62 host_ = NegotiatingHostAuthenticator::CreateForIt2Me( |
| 63 kHostJid, kClientJid, host_cert_, key_pair_, host_secret); | 63 kHostJid, kClientJid, host_cert_, key_pair_, host_secret); |
| 64 } else { | 64 } else { |
| 65 std::string host_secret_hash = | 65 std::string host_secret_hash = |
| 66 GetSharedSecretHash(kTestHostId, host_secret); | 66 GetSharedSecretHash(kTestHostId, host_secret); |
| 67 host_ = NegotiatingHostAuthenticator::CreateWithPin( | 67 scoped_ptr<NegotiatingHostAuthenticator> host = |
| 68 kHostJid, kClientJid, host_cert_, key_pair_, host_secret_hash, | 68 NegotiatingHostAuthenticator::CreateWithPin( |
| 69 pairing_registry_); | 69 kHostJid, kClientJid, host_cert_, key_pair_, host_secret_hash, |
| 70 pairing_registry_); |
| 71 host_as_negotiating_authenticator_ = host.get(); |
| 72 host_ = std::move(host); |
| 70 } | 73 } |
| 71 | 74 |
| 72 protocol::ClientAuthenticationConfig client_auth_config; | 75 protocol::ClientAuthenticationConfig client_auth_config; |
| 73 client_auth_config.host_id = kTestHostId; | 76 client_auth_config.host_id = kTestHostId; |
| 74 client_auth_config.pairing_client_id = client_id; | 77 client_auth_config.pairing_client_id = client_id; |
| 75 client_auth_config.pairing_secret= client_paired_secret; | 78 client_auth_config.pairing_secret = client_paired_secret; |
| 76 bool pairing_expected = pairing_registry_.get() != nullptr; | 79 bool pairing_expected = pairing_registry_.get() != nullptr; |
| 77 client_auth_config.fetch_secret_callback = | 80 client_auth_config.fetch_secret_callback = |
| 78 base::Bind(&NegotiatingAuthenticatorTest::FetchSecret, | 81 base::Bind(&NegotiatingAuthenticatorTest::FetchSecret, |
| 79 client_interactive_pin, pairing_expected); | 82 client_interactive_pin, pairing_expected); |
| 80 client_as_negotiating_authenticator_ = new NegotiatingClientAuthenticator( | 83 client_as_negotiating_authenticator_ = new NegotiatingClientAuthenticator( |
| 81 kClientJid, kHostJid, client_auth_config); | 84 kClientJid, kHostJid, client_auth_config); |
| 82 client_.reset(client_as_negotiating_authenticator_); | 85 client_.reset(client_as_negotiating_authenticator_); |
| 83 } | 86 } |
| 84 | 87 |
| 88 void DisableMethodOnClient(NegotiatingAuthenticatorBase::Method method) { |
| 89 auto* methods = &(client_as_negotiating_authenticator_->methods_); |
| 90 auto iter = std::find(methods->begin(), methods->end(), method); |
| 91 ASSERT_TRUE(iter != methods->end()); |
| 92 methods->erase(iter); |
| 93 } |
| 94 |
| 95 void DisableMethodOnHost(NegotiatingAuthenticatorBase::Method method) { |
| 96 auto* methods = &(host_as_negotiating_authenticator_->methods_); |
| 97 auto iter = std::find(methods->begin(), methods->end(), method); |
| 98 ASSERT_TRUE(iter != methods->end()); |
| 99 methods->erase(iter); |
| 100 } |
| 101 |
| 85 void CreatePairingRegistry(bool with_paired_client) { | 102 void CreatePairingRegistry(bool with_paired_client) { |
| 86 pairing_registry_ = new SynchronousPairingRegistry( | 103 pairing_registry_ = new SynchronousPairingRegistry( |
| 87 make_scoped_ptr(new MockPairingRegistryDelegate())); | 104 make_scoped_ptr(new MockPairingRegistryDelegate())); |
| 88 if (with_paired_client) { | 105 if (with_paired_client) { |
| 89 PairingRegistry::Pairing pairing( | 106 PairingRegistry::Pairing pairing( |
| 90 base::Time(), kTestClientName, kTestClientId, kTestPairedSecret); | 107 base::Time(), kTestClientName, kTestClientId, kTestPairedSecret); |
| 91 pairing_registry_->AddPairing(pairing); | 108 pairing_registry_->AddPairing(pairing); |
| 92 } | 109 } |
| 93 } | 110 } |
| 94 | 111 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 105 ASSERT_TRUE(client_->state() == Authenticator::REJECTED || | 122 ASSERT_TRUE(client_->state() == Authenticator::REJECTED || |
| 106 host_->state() == Authenticator::REJECTED); | 123 host_->state() == Authenticator::REJECTED); |
| 107 if (client_->state() == Authenticator::REJECTED) { | 124 if (client_->state() == Authenticator::REJECTED) { |
| 108 ASSERT_EQ(client_->rejection_reason(), reason); | 125 ASSERT_EQ(client_->rejection_reason(), reason); |
| 109 } | 126 } |
| 110 if (host_->state() == Authenticator::REJECTED) { | 127 if (host_->state() == Authenticator::REJECTED) { |
| 111 ASSERT_EQ(host_->rejection_reason(), reason); | 128 ASSERT_EQ(host_->rejection_reason(), reason); |
| 112 } | 129 } |
| 113 } | 130 } |
| 114 | 131 |
| 115 void VerifyAccepted(NegotiatingAuthenticatorBase::Method expected_method) { | 132 virtual void VerifyAccepted() { |
| 116 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 133 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 117 | 134 |
| 118 ASSERT_EQ(Authenticator::ACCEPTED, host_->state()); | 135 ASSERT_EQ(Authenticator::ACCEPTED, host_->state()); |
| 119 ASSERT_EQ(Authenticator::ACCEPTED, client_->state()); | 136 ASSERT_EQ(Authenticator::ACCEPTED, client_->state()); |
| 120 | 137 |
| 121 client_auth_ = client_->CreateChannelAuthenticator(); | 138 client_auth_ = client_->CreateChannelAuthenticator(); |
| 122 host_auth_ = host_->CreateChannelAuthenticator(); | 139 host_auth_ = host_->CreateChannelAuthenticator(); |
| 123 RunChannelAuth(false); | 140 RunChannelAuth(false); |
| 124 | 141 |
| 125 EXPECT_TRUE(client_socket_.get() != nullptr); | 142 EXPECT_TRUE(client_socket_.get() != nullptr); |
| 126 EXPECT_TRUE(host_socket_.get() != nullptr); | 143 EXPECT_TRUE(host_socket_.get() != nullptr); |
| 127 | 144 |
| 128 StreamConnectionTester tester(host_socket_.get(), client_socket_.get(), | 145 StreamConnectionTester tester(host_socket_.get(), client_socket_.get(), |
| 129 kMessageSize, kMessages); | 146 kMessageSize, kMessages); |
| 130 | 147 |
| 131 tester.Start(); | 148 tester.Start(); |
| 132 message_loop_.Run(); | 149 message_loop_.Run(); |
| 133 tester.CheckResults(); | 150 tester.CheckResults(); |
| 134 EXPECT_EQ(expected_method, | 151 } |
| 135 client_as_negotiating_authenticator_->current_method_); | 152 |
| 153 NegotiatingAuthenticatorBase::Method current_method() { |
| 154 return client_as_negotiating_authenticator_->current_method_; |
| 136 } | 155 } |
| 137 | 156 |
| 138 // Use a bare pointer because the storage is managed by the base class. | 157 // Use a bare pointer because the storage is managed by the base class. |
| 158 NegotiatingHostAuthenticator* host_as_negotiating_authenticator_; |
| 139 NegotiatingClientAuthenticator* client_as_negotiating_authenticator_; | 159 NegotiatingClientAuthenticator* client_as_negotiating_authenticator_; |
| 140 | 160 |
| 141 private: | 161 private: |
| 142 scoped_refptr<PairingRegistry> pairing_registry_; | 162 scoped_refptr<PairingRegistry> pairing_registry_; |
| 143 | 163 |
| 144 DISALLOW_COPY_AND_ASSIGN(NegotiatingAuthenticatorTest); | 164 DISALLOW_COPY_AND_ASSIGN(NegotiatingAuthenticatorTest); |
| 145 }; | 165 }; |
| 146 | 166 |
| 167 struct PairingTestParameters { |
| 168 bool p224_on_client; |
| 169 bool curve25519_on_client; |
| 170 bool p224_on_host; |
| 171 bool curve25519_on_host; |
| 172 |
| 173 bool expect_curve25519_used; |
| 174 }; |
| 175 |
| 176 class NegotiatingPairingAuthenticatorTest |
| 177 : public NegotiatingAuthenticatorTest, |
| 178 public testing::WithParamInterface<PairingTestParameters> { |
| 179 public: |
| 180 void InitAuthenticators(const std::string& client_id, |
| 181 const std::string& client_paired_secret, |
| 182 const std::string& client_interactive_pin, |
| 183 const std::string& host_secret, |
| 184 bool it2me) override { |
| 185 NegotiatingAuthenticatorTest::InitAuthenticators( |
| 186 client_id, client_paired_secret, client_interactive_pin, host_secret, |
| 187 it2me); |
| 188 if (!GetParam().p224_on_client) { |
| 189 DisableMethodOnClient( |
| 190 NegotiatingAuthenticatorBase::Method::PAIRED_SPAKE2_P224); |
| 191 } |
| 192 if (!GetParam().curve25519_on_client) { |
| 193 DisableMethodOnClient( |
| 194 NegotiatingAuthenticatorBase::Method::PAIRED_SPAKE2_CURVE25519); |
| 195 } |
| 196 if (!GetParam().p224_on_host) { |
| 197 DisableMethodOnHost( |
| 198 NegotiatingAuthenticatorBase::Method::PAIRED_SPAKE2_P224); |
| 199 } |
| 200 if (!GetParam().curve25519_on_host) { |
| 201 DisableMethodOnHost( |
| 202 NegotiatingAuthenticatorBase::Method::PAIRED_SPAKE2_CURVE25519); |
| 203 } |
| 204 } |
| 205 |
| 206 void VerifyAccepted() override { |
| 207 NegotiatingAuthenticatorTest::VerifyAccepted(); |
| 208 EXPECT_TRUE( |
| 209 current_method() == |
| 210 NegotiatingAuthenticatorBase::Method::PAIRED_SPAKE2_P224 || |
| 211 current_method() == |
| 212 NegotiatingAuthenticatorBase::Method::PAIRED_SPAKE2_CURVE25519); |
| 213 } |
| 214 }; |
| 215 |
| 216 INSTANTIATE_TEST_CASE_P( |
| 217 PairingParams, |
| 218 NegotiatingPairingAuthenticatorTest, |
| 219 testing::Values( |
| 220 // Only P224. |
| 221 PairingTestParameters{true, false, true, false}, |
| 222 |
| 223 // Only curve25519. |
| 224 PairingTestParameters{false, true, false, true}, |
| 225 |
| 226 // Both P224 and curve25519. |
| 227 PairingTestParameters{true, true, true, true}, |
| 228 |
| 229 // One end supports both, the other supports only P224 or curve25519. |
| 230 PairingTestParameters{false, true, true, true}, |
| 231 PairingTestParameters{true, false, true, true}, |
| 232 PairingTestParameters{true, true, false, true}, |
| 233 PairingTestParameters{true, true, true, false})); |
| 234 |
| 147 TEST_F(NegotiatingAuthenticatorTest, SuccessfulAuthMe2MePin) { | 235 TEST_F(NegotiatingAuthenticatorTest, SuccessfulAuthMe2MePin) { |
| 148 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kNoClientId, kNoPairedSecret, | 236 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kNoClientId, kNoPairedSecret, |
| 149 kTestPin, kTestPin, false)); | 237 kTestPin, kTestPin, false)); |
| 150 VerifyAccepted( | 238 VerifyAccepted(); |
| 151 NegotiatingAuthenticatorBase::Method::SHARED_SECRET_SPAKE2_CURVE25519); | 239 EXPECT_EQ( |
| 240 NegotiatingAuthenticatorBase::Method::SHARED_SECRET_SPAKE2_CURVE25519, |
| 241 current_method()); |
| 152 } | 242 } |
| 153 | 243 |
| 154 TEST_F(NegotiatingAuthenticatorTest, SuccessfulAuthIt2me) { | 244 TEST_F(NegotiatingAuthenticatorTest, SuccessfulAuthIt2me) { |
| 155 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kNoClientId, kNoPairedSecret, | 245 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kNoClientId, kNoPairedSecret, |
| 156 kTestPin, kTestPin, true)); | 246 kTestPin, kTestPin, true)); |
| 157 VerifyAccepted( | 247 VerifyAccepted(); |
| 158 NegotiatingAuthenticatorBase::Method::SHARED_SECRET_PLAIN_SPAKE2_P224); | 248 EXPECT_EQ( |
| 249 NegotiatingAuthenticatorBase::Method::SHARED_SECRET_PLAIN_SPAKE2_P224, |
| 250 current_method()); |
| 159 } | 251 } |
| 160 | 252 |
| 161 TEST_F(NegotiatingAuthenticatorTest, InvalidMe2MePin) { | 253 TEST_F(NegotiatingAuthenticatorTest, InvalidMe2MePin) { |
| 162 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kNoClientId, kNoPairedSecret, | 254 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kNoClientId, kNoPairedSecret, |
| 163 kTestPinBad, kTestPin, false)); | 255 kTestPinBad, kTestPin, false)); |
| 164 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 256 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 165 | 257 |
| 166 VerifyRejected(Authenticator::INVALID_CREDENTIALS); | 258 VerifyRejected(Authenticator::INVALID_CREDENTIALS); |
| 167 } | 259 } |
| 168 | 260 |
| 169 TEST_F(NegotiatingAuthenticatorTest, InvalidIt2MeAccessCode) { | 261 TEST_F(NegotiatingAuthenticatorTest, InvalidIt2MeAccessCode) { |
| 170 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kNoClientId, kNoPairedSecret, | 262 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kNoClientId, kNoPairedSecret, |
| 171 kTestPin, kTestPinBad, true)); | 263 kTestPin, kTestPinBad, true)); |
| 172 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 264 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 173 | 265 |
| 174 VerifyRejected(Authenticator::INVALID_CREDENTIALS); | 266 VerifyRejected(Authenticator::INVALID_CREDENTIALS); |
| 175 } | 267 } |
| 176 | 268 |
| 177 TEST_F(NegotiatingAuthenticatorTest, IncompatibleMethods) { | 269 TEST_F(NegotiatingAuthenticatorTest, IncompatibleMethods) { |
| 178 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kNoClientId, kNoPairedSecret, | 270 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kNoClientId, kNoPairedSecret, |
| 179 kTestPin, kTestPinBad, true)); | 271 kTestPin, kTestPinBad, true)); |
| 180 std::vector<NegotiatingAuthenticatorBase::Method>* methods = | 272 DisableMethodOnClient( |
| 181 &(client_as_negotiating_authenticator_->methods_); | 273 NegotiatingAuthenticatorBase::Method::SHARED_SECRET_PLAIN_SPAKE2_P224); |
| 182 methods->erase(std::find( | |
| 183 methods->begin(), methods->end(), | |
| 184 NegotiatingAuthenticatorBase::Method::SHARED_SECRET_PLAIN_SPAKE2_P224)); | |
| 185 | 274 |
| 186 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 275 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 187 | 276 |
| 188 VerifyRejected(Authenticator::PROTOCOL_ERROR); | 277 VerifyRejected(Authenticator::PROTOCOL_ERROR); |
| 189 } | 278 } |
| 190 | 279 |
| 191 TEST_F(NegotiatingAuthenticatorTest, PairingNotSupported) { | 280 TEST_F(NegotiatingAuthenticatorTest, PairingNotSupported) { |
| 192 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kTestClientId, kTestPairedSecret, | 281 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kTestClientId, kTestPairedSecret, |
| 193 kTestPin, kTestPin, false)); | 282 kTestPin, kTestPin, false)); |
| 194 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 283 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 195 VerifyAccepted( | 284 VerifyAccepted(); |
| 196 NegotiatingAuthenticatorBase::Method::SHARED_SECRET_SPAKE2_CURVE25519); | 285 EXPECT_EQ( |
| 286 NegotiatingAuthenticatorBase::Method::SHARED_SECRET_SPAKE2_CURVE25519, |
| 287 current_method()); |
| 197 } | 288 } |
| 198 | 289 |
| 199 TEST_F(NegotiatingAuthenticatorTest, PairingSupportedButNotPaired) { | 290 TEST_P(NegotiatingPairingAuthenticatorTest, PairingSupportedButNotPaired) { |
| 200 CreatePairingRegistry(false); | 291 CreatePairingRegistry(false); |
| 201 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kNoClientId, kNoPairedSecret, | 292 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kNoClientId, kNoPairedSecret, |
| 202 kTestPin, kTestPin, false)); | 293 kTestPin, kTestPin, false)); |
| 203 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 294 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 204 VerifyAccepted(NegotiatingAuthenticatorBase::Method::PAIRED_SPAKE2_P224); | 295 VerifyAccepted(); |
| 205 } | 296 } |
| 206 | 297 |
| 207 TEST_F(NegotiatingAuthenticatorTest, PairingRevokedPinOkay) { | 298 TEST_P(NegotiatingPairingAuthenticatorTest, PairingRevokedPinOkay) { |
| 208 CreatePairingRegistry(false); | 299 CreatePairingRegistry(false); |
| 209 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kTestClientId, kTestPairedSecret, | 300 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kTestClientId, kTestPairedSecret, |
| 210 kTestPin, kTestPin, false)); | 301 kTestPin, kTestPin, false)); |
| 211 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 302 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 212 VerifyAccepted(NegotiatingAuthenticatorBase::Method::PAIRED_SPAKE2_P224); | 303 VerifyAccepted(); |
| 213 } | 304 } |
| 214 | 305 |
| 215 TEST_F(NegotiatingAuthenticatorTest, PairingRevokedPinBad) { | 306 TEST_P(NegotiatingPairingAuthenticatorTest, PairingRevokedPinBad) { |
| 216 CreatePairingRegistry(false); | 307 CreatePairingRegistry(false); |
| 217 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kTestClientId, kTestPairedSecret, | 308 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kTestClientId, kTestPairedSecret, |
| 218 kTestPinBad, kTestPin, false)); | 309 kTestPinBad, kTestPin, false)); |
| 219 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 310 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 220 VerifyRejected(Authenticator::INVALID_CREDENTIALS); | 311 VerifyRejected(Authenticator::INVALID_CREDENTIALS); |
| 221 } | 312 } |
| 222 | 313 |
| 223 TEST_F(NegotiatingAuthenticatorTest, PairingSucceeded) { | 314 TEST_P(NegotiatingPairingAuthenticatorTest, PairingSucceeded) { |
| 224 CreatePairingRegistry(true); | 315 CreatePairingRegistry(true); |
| 225 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kTestClientId, kTestPairedSecret, | 316 ASSERT_NO_FATAL_FAILURE(InitAuthenticators(kTestClientId, kTestPairedSecret, |
| 226 kTestPinBad, kTestPin, false)); | 317 kTestPinBad, kTestPin, false)); |
| 227 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 318 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 228 VerifyAccepted(NegotiatingAuthenticatorBase::Method::PAIRED_SPAKE2_P224); | 319 VerifyAccepted(); |
| 229 } | 320 } |
| 230 | 321 |
| 231 TEST_F(NegotiatingAuthenticatorTest, | 322 TEST_P(NegotiatingPairingAuthenticatorTest, |
| 232 PairingSucceededInvalidSecretButPinOkay) { | 323 PairingSucceededInvalidSecretButPinOkay) { |
| 233 CreatePairingRegistry(true); | 324 CreatePairingRegistry(true); |
| 234 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( | 325 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( |
| 235 kTestClientId, kTestPairedSecretBad, kTestPin, kTestPin, false)); | 326 kTestClientId, kTestPairedSecretBad, kTestPin, kTestPin, false)); |
| 236 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 327 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 237 VerifyAccepted(NegotiatingAuthenticatorBase::Method::PAIRED_SPAKE2_P224); | 328 VerifyAccepted(); |
| 238 } | 329 } |
| 239 | 330 |
| 240 TEST_F(NegotiatingAuthenticatorTest, PairingFailedInvalidSecretAndPin) { | 331 TEST_P(NegotiatingPairingAuthenticatorTest, PairingFailedInvalidSecretAndPin) { |
| 241 CreatePairingRegistry(true); | 332 CreatePairingRegistry(true); |
| 242 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( | 333 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( |
| 243 kTestClientId, kTestPairedSecretBad, kTestPinBad, kTestPin, false)); | 334 kTestClientId, kTestPairedSecretBad, kTestPinBad, kTestPin, false)); |
| 244 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 335 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 245 VerifyRejected(Authenticator::INVALID_CREDENTIALS); | 336 VerifyRejected(Authenticator::INVALID_CREDENTIALS); |
| 246 } | 337 } |
| 247 | 338 |
| 248 } // namespace protocol | 339 } // namespace protocol |
| 249 } // namespace remoting | 340 } // namespace remoting |
| OLD | NEW |