Chromium Code Reviews| Index: chrome/browser/internal_auth.h |
| diff --git a/chrome/browser/internal_auth.h b/chrome/browser/internal_auth.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..49ce07274bb7047416cfd7c16d55424a60bd3e01 |
| --- /dev/null |
| +++ b/chrome/browser/internal_auth.h |
| @@ -0,0 +1,83 @@ |
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef CHROME_BROWSER_INTERNAL_AUTH_H_ |
| +#define CHROME_BROWSER_INTERNAL_AUTH_H_ |
| +#pragma once |
| + |
| +#include <map> |
| +#include <string> |
| + |
| +class WebSocketProxyPrivateGetPassportForTCPFunction; |
| +#ifdef UNIT_TEST |
| +class InternalAuthTest_BasicGeneration_Test; |
| +class InternalAuthTest_DoubleGeneration_Test; |
| +class InternalAuthTest_BadGeneration_Test; |
| +class InternalAuthTest_BasicVerification_Test; |
| +class InternalAuthTest_BruteForce_Test; |
| +class InternalAuthTest_ExpirationAndBruteForce_Test; |
| +class InternalAuthTest_ChangeKey_Test; |
| +#endif |
| + |
| +namespace browser { |
| + |
| +// Call InternalAuthVerification methods on any thread. |
| +class InternalAuthVerification { |
| + public: |
| + // Used by consumer of passport in order to verify credentials. |
| + static bool VerifyPassport( |
| + const std::string& passport, |
| + const std::string& domain, |
| + const std::map<std::string, std::string>& var_value_map); |
| + |
| + private: |
| + // We allow easy separation of InternalAuthVerification and |
| + // InternalAuthGeneration so the only thing they share (besides time) is |
| + // a key (regenerated infrequently). |
| + static void ChangeKey(const std::string& key); |
| + |
| +#ifdef UNIT_TEST |
| + static void set_verification_window_seconds(int seconds) { |
| + verification_window_seconds_ = seconds; |
| + } |
| +#endif |
| + |
| + static int get_verification_window_ticks(); |
| + |
| + static int verification_window_seconds_; |
| + |
| + friend class InternalAuthGeneration; |
| + friend class InternalAuthVerificationService; |
| + friend class InternalAuthGenerationService; |
| +#ifdef UNIT_TEST |
| + friend class ::InternalAuthTest_ExpirationAndBruteForce_Test; |
| +#endif |
| +}; |
| + |
| +// Not thread-safe. Make all calls on the same thread (UI thread). |
| +class InternalAuthGeneration { |
| + private: |
| + // Generates passport; do this only after successful check of credentials. |
| + static std::string GeneratePassport( |
| + const std::string& domain, |
| + const std::map<std::string, std::string>& var_value_map); |
| + |
| + // Used only by tests. |
| + static void GenerateNewKey(); |
| + |
| + friend class ::WebSocketProxyPrivateGetPassportForTCPFunction; |
| +#ifdef UNIT_TEST |
| + friend class ::InternalAuthTest_BasicGeneration_Test; |
|
Dmitry Polukhin
2011/05/16 09:41:39
Please use FRIEND_TEST macro.
Denis Lagno
2011/05/17 22:15:07
Done.
|
| + friend class ::InternalAuthTest_DoubleGeneration_Test; |
| + friend class ::InternalAuthTest_BadGeneration_Test; |
| + friend class ::InternalAuthTest_BasicVerification_Test; |
| + friend class ::InternalAuthTest_BruteForce_Test; |
| + friend class ::InternalAuthTest_ExpirationAndBruteForce_Test; |
| + friend class ::InternalAuthTest_ChangeKey_Test; |
| +#endif |
| +}; |
| + |
| +} // namespace browser |
| + |
| +#endif // CHROME_BROWSER_INTERNAL_AUTH_H_ |