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..83d92e8777f3a804573c66710e6acccf313c38ed |
--- /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 WebproxyGetTokenFunction; |
+#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 token in order to verify credentials. |
+ static bool VerifyToken( |
+ const std::string& token, |
+ 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 token; do this only after successful check of credentials. |
+ static std::string GenerateToken( |
+ const std::string& domain, |
+ const std::map<std::string, std::string>& var_value_map); |
+ |
+ // Used only by tests. |
+ static void GenerateNewKey(); |
+ |
+ friend class ::WebproxyGetTokenFunction; |
+#ifdef UNIT_TEST |
+ friend class ::InternalAuthTest_BasicGeneration_Test; |
+ 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_ |