| 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 "net/base/net_errors.h" | 6 #include "net/base/net_errors.h" |
| 7 #include "remoting/base/rsa_key_pair.h" | 7 #include "remoting/base/rsa_key_pair.h" |
| 8 #include "remoting/protocol/authenticator_test_base.h" | 8 #include "remoting/protocol/authenticator_test_base.h" |
| 9 #include "remoting/protocol/channel_authenticator.h" | 9 #include "remoting/protocol/channel_authenticator.h" |
| 10 #include "remoting/protocol/connection_tester.h" | 10 #include "remoting/protocol/connection_tester.h" |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 | 140 |
| 141 // Use a bare pointer because the storage is managed by the base class. | 141 // Use a bare pointer because the storage is managed by the base class. |
| 142 NegotiatingClientAuthenticator* client_as_negotiating_authenticator_; | 142 NegotiatingClientAuthenticator* client_as_negotiating_authenticator_; |
| 143 | 143 |
| 144 private: | 144 private: |
| 145 scoped_refptr<PairingRegistry> pairing_registry_; | 145 scoped_refptr<PairingRegistry> pairing_registry_; |
| 146 | 146 |
| 147 DISALLOW_COPY_AND_ASSIGN(NegotiatingAuthenticatorTest); | 147 DISALLOW_COPY_AND_ASSIGN(NegotiatingAuthenticatorTest); |
| 148 }; | 148 }; |
| 149 | 149 |
| 150 // These tests use net::SSLServerSocket which is not implemented for OpenSSL. | 150 TEST_F(NegotiatingAuthenticatorTest, SuccessfulAuthHmac) { |
| 151 #if defined(USE_OPENSSL) | |
| 152 #define MAYBE(x) DISABLED_##x | |
| 153 #else | |
| 154 #define MAYBE(x) x | |
| 155 #endif | |
| 156 | |
| 157 TEST_F(NegotiatingAuthenticatorTest, MAYBE(SuccessfulAuthHmac)) { | |
| 158 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( | 151 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( |
| 159 kNoClientId, kNoPairedSecret, kTestPin, kTestPin, | 152 kNoClientId, kNoPairedSecret, kTestPin, kTestPin, |
| 160 AuthenticationMethod::HMAC_SHA256, false)); | 153 AuthenticationMethod::HMAC_SHA256, false)); |
| 161 VerifyAccepted( | 154 VerifyAccepted( |
| 162 AuthenticationMethod::Spake2(AuthenticationMethod::HMAC_SHA256)); | 155 AuthenticationMethod::Spake2(AuthenticationMethod::HMAC_SHA256)); |
| 163 } | 156 } |
| 164 | 157 |
| 165 TEST_F(NegotiatingAuthenticatorTest, MAYBE(SuccessfulAuthPlain)) { | 158 TEST_F(NegotiatingAuthenticatorTest, SuccessfulAuthPlain) { |
| 166 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( | 159 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( |
| 167 kNoClientId, kNoPairedSecret, kTestPin, kTestPin, | 160 kNoClientId, kNoPairedSecret, kTestPin, kTestPin, |
| 168 AuthenticationMethod::NONE, false)); | 161 AuthenticationMethod::NONE, false)); |
| 169 VerifyAccepted(AuthenticationMethod::Spake2(AuthenticationMethod::NONE)); | 162 VerifyAccepted(AuthenticationMethod::Spake2(AuthenticationMethod::NONE)); |
| 170 } | 163 } |
| 171 | 164 |
| 172 TEST_F(NegotiatingAuthenticatorTest, MAYBE(InvalidSecretHmac)) { | 165 TEST_F(NegotiatingAuthenticatorTest, InvalidSecretHmac) { |
| 173 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( | 166 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( |
| 174 kNoClientId, kNoPairedSecret, kTestPinBad, kTestPin, | 167 kNoClientId, kNoPairedSecret, kTestPinBad, kTestPin, |
| 175 AuthenticationMethod::HMAC_SHA256, false)); | 168 AuthenticationMethod::HMAC_SHA256, false)); |
| 176 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 169 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 177 | 170 |
| 178 VerifyRejected(Authenticator::INVALID_CREDENTIALS); | 171 VerifyRejected(Authenticator::INVALID_CREDENTIALS); |
| 179 } | 172 } |
| 180 | 173 |
| 181 TEST_F(NegotiatingAuthenticatorTest, MAYBE(InvalidSecretPlain)) { | 174 TEST_F(NegotiatingAuthenticatorTest, InvalidSecretPlain) { |
| 182 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( | 175 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( |
| 183 kNoClientId, kNoPairedSecret, kTestPin, kTestPinBad, | 176 kNoClientId, kNoPairedSecret, kTestPin, kTestPinBad, |
| 184 AuthenticationMethod::NONE, false)); | 177 AuthenticationMethod::NONE, false)); |
| 185 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 178 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 186 | 179 |
| 187 VerifyRejected(Authenticator::INVALID_CREDENTIALS); | 180 VerifyRejected(Authenticator::INVALID_CREDENTIALS); |
| 188 } | 181 } |
| 189 | 182 |
| 190 TEST_F(NegotiatingAuthenticatorTest, MAYBE(IncompatibleMethods)) { | 183 TEST_F(NegotiatingAuthenticatorTest, IncompatibleMethods) { |
| 191 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( | 184 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( |
| 192 kNoClientId, kNoPairedSecret, kTestPin, kTestPinBad, | 185 kNoClientId, kNoPairedSecret, kTestPin, kTestPinBad, |
| 193 AuthenticationMethod::NONE, true)); | 186 AuthenticationMethod::NONE, true)); |
| 194 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 187 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 195 | 188 |
| 196 VerifyRejected(Authenticator::PROTOCOL_ERROR); | 189 VerifyRejected(Authenticator::PROTOCOL_ERROR); |
| 197 } | 190 } |
| 198 | 191 |
| 199 TEST_F(NegotiatingAuthenticatorTest, MAYBE(PairingNotSupported)) { | 192 TEST_F(NegotiatingAuthenticatorTest, PairingNotSupported) { |
| 200 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( | 193 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( |
| 201 kTestClientId, kTestPairedSecret, kTestPin, kTestPin, | 194 kTestClientId, kTestPairedSecret, kTestPin, kTestPin, |
| 202 AuthenticationMethod::HMAC_SHA256, false)); | 195 AuthenticationMethod::HMAC_SHA256, false)); |
| 203 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 196 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 204 VerifyAccepted( | 197 VerifyAccepted( |
| 205 AuthenticationMethod::Spake2(AuthenticationMethod::HMAC_SHA256)); | 198 AuthenticationMethod::Spake2(AuthenticationMethod::HMAC_SHA256)); |
| 206 } | 199 } |
| 207 | 200 |
| 208 TEST_F(NegotiatingAuthenticatorTest, MAYBE(PairingSupportedButNotPaired)) { | 201 TEST_F(NegotiatingAuthenticatorTest, PairingSupportedButNotPaired) { |
| 209 CreatePairingRegistry(false); | 202 CreatePairingRegistry(false); |
| 210 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( | 203 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( |
| 211 kNoClientId, kNoPairedSecret, kTestPin, kTestPin, | 204 kNoClientId, kNoPairedSecret, kTestPin, kTestPin, |
| 212 AuthenticationMethod::HMAC_SHA256, false)); | 205 AuthenticationMethod::HMAC_SHA256, false)); |
| 213 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 206 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 214 VerifyAccepted(AuthenticationMethod::Spake2Pair()); | 207 VerifyAccepted(AuthenticationMethod::Spake2Pair()); |
| 215 } | 208 } |
| 216 | 209 |
| 217 TEST_F(NegotiatingAuthenticatorTest, MAYBE(PairingRevokedPinOkay)) { | 210 TEST_F(NegotiatingAuthenticatorTest, PairingRevokedPinOkay) { |
| 218 CreatePairingRegistry(false); | 211 CreatePairingRegistry(false); |
| 219 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( | 212 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( |
| 220 kTestClientId, kTestPairedSecret, kTestPin, kTestPin, | 213 kTestClientId, kTestPairedSecret, kTestPin, kTestPin, |
| 221 AuthenticationMethod::HMAC_SHA256, false)); | 214 AuthenticationMethod::HMAC_SHA256, false)); |
| 222 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 215 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 223 VerifyAccepted(AuthenticationMethod::Spake2Pair()); | 216 VerifyAccepted(AuthenticationMethod::Spake2Pair()); |
| 224 } | 217 } |
| 225 | 218 |
| 226 TEST_F(NegotiatingAuthenticatorTest, MAYBE(PairingRevokedPinBad)) { | 219 TEST_F(NegotiatingAuthenticatorTest, PairingRevokedPinBad) { |
| 227 CreatePairingRegistry(false); | 220 CreatePairingRegistry(false); |
| 228 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( | 221 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( |
| 229 kTestClientId, kTestPairedSecret, kTestPinBad, kTestPin, | 222 kTestClientId, kTestPairedSecret, kTestPinBad, kTestPin, |
| 230 AuthenticationMethod::HMAC_SHA256, false)); | 223 AuthenticationMethod::HMAC_SHA256, false)); |
| 231 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 224 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 232 VerifyRejected(Authenticator::INVALID_CREDENTIALS); | 225 VerifyRejected(Authenticator::INVALID_CREDENTIALS); |
| 233 } | 226 } |
| 234 | 227 |
| 235 TEST_F(NegotiatingAuthenticatorTest, MAYBE(PairingSucceeded)) { | 228 TEST_F(NegotiatingAuthenticatorTest, PairingSucceeded) { |
| 236 CreatePairingRegistry(true); | 229 CreatePairingRegistry(true); |
| 237 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( | 230 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( |
| 238 kTestClientId, kTestPairedSecret, kTestPinBad, kTestPin, | 231 kTestClientId, kTestPairedSecret, kTestPinBad, kTestPin, |
| 239 AuthenticationMethod::HMAC_SHA256, false)); | 232 AuthenticationMethod::HMAC_SHA256, false)); |
| 240 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 233 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 241 VerifyAccepted(AuthenticationMethod::Spake2Pair()); | 234 VerifyAccepted(AuthenticationMethod::Spake2Pair()); |
| 242 } | 235 } |
| 243 | 236 |
| 244 TEST_F(NegotiatingAuthenticatorTest, | 237 TEST_F(NegotiatingAuthenticatorTest, |
| 245 MAYBE(PairingSucceededInvalidSecretButPinOkay)) { | 238 PairingSucceededInvalidSecretButPinOkay) { |
| 246 CreatePairingRegistry(true); | 239 CreatePairingRegistry(true); |
| 247 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( | 240 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( |
| 248 kTestClientId, kTestPairedSecretBad, kTestPin, kTestPin, | 241 kTestClientId, kTestPairedSecretBad, kTestPin, kTestPin, |
| 249 AuthenticationMethod::HMAC_SHA256, false)); | 242 AuthenticationMethod::HMAC_SHA256, false)); |
| 250 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 243 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 251 VerifyAccepted(AuthenticationMethod::Spake2Pair()); | 244 VerifyAccepted(AuthenticationMethod::Spake2Pair()); |
| 252 } | 245 } |
| 253 | 246 |
| 254 TEST_F(NegotiatingAuthenticatorTest, MAYBE(PairingFailedInvalidSecretAndPin)) { | 247 TEST_F(NegotiatingAuthenticatorTest, PairingFailedInvalidSecretAndPin) { |
| 255 CreatePairingRegistry(true); | 248 CreatePairingRegistry(true); |
| 256 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( | 249 ASSERT_NO_FATAL_FAILURE(InitAuthenticators( |
| 257 kTestClientId, kTestPairedSecretBad, kTestPinBad, kTestPin, | 250 kTestClientId, kTestPairedSecretBad, kTestPinBad, kTestPin, |
| 258 AuthenticationMethod::HMAC_SHA256, false)); | 251 AuthenticationMethod::HMAC_SHA256, false)); |
| 259 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); | 252 ASSERT_NO_FATAL_FAILURE(RunAuthExchange()); |
| 260 VerifyRejected(Authenticator::INVALID_CREDENTIALS); | 253 VerifyRejected(Authenticator::INVALID_CREDENTIALS); |
| 261 } | 254 } |
| 262 | 255 |
| 263 } // namespace protocol | 256 } // namespace protocol |
| 264 } // namespace remoting | 257 } // namespace remoting |
| OLD | NEW |