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
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_INTERNAL_AUTH_H_
6 #define CHROME_BROWSER_INTERNAL_AUTH_H_
11 #include "base/basictypes.h"
12 #include "base/gtest_prod_util.h"
16 // Call InternalAuthVerification methods on any thread.
17 class InternalAuthVerification
{
19 // Used by consumer of passport in order to verify credentials.
20 static bool VerifyPassport(
21 const std::string
& passport
,
22 const std::string
& domain
,
23 const std::map
<std::string
, std::string
>& var_value_map
);
26 friend class InternalAuthGeneration
;
27 friend class InternalAuthVerificationService
;
28 friend class InternalAuthGenerationService
;
29 FRIEND_TEST_ALL_PREFIXES(InternalAuthTest
, ExpirationAndBruteForce
);
31 // We allow for easy separation of InternalAuthVerification and
32 // InternalAuthGeneration so the only thing they share (besides time) is
33 // a key (regenerated infrequently).
34 static void ChangeKey(const std::string
& key
);
37 static void set_verification_window_seconds(int seconds
) {
38 verification_window_seconds_
= seconds
;
42 static int get_verification_window_ticks();
44 static int verification_window_seconds_
;
46 DISALLOW_IMPLICIT_CONSTRUCTORS(InternalAuthVerification
);
49 // Not thread-safe. Make all calls on the same thread (UI thread).
50 class InternalAuthGeneration
{
52 FRIEND_TEST_ALL_PREFIXES(InternalAuthTest
, BasicGeneration
);
53 FRIEND_TEST_ALL_PREFIXES(InternalAuthTest
, DoubleGeneration
);
54 FRIEND_TEST_ALL_PREFIXES(InternalAuthTest
, BadGeneration
);
55 FRIEND_TEST_ALL_PREFIXES(InternalAuthTest
, BasicVerification
);
56 FRIEND_TEST_ALL_PREFIXES(InternalAuthTest
, BruteForce
);
57 FRIEND_TEST_ALL_PREFIXES(InternalAuthTest
, ExpirationAndBruteForce
);
58 FRIEND_TEST_ALL_PREFIXES(InternalAuthTest
, ChangeKey
);
60 // Generates passport; do this only after successful check of credentials.
61 static std::string
GeneratePassport(
62 const std::string
& domain
,
63 const std::map
<std::string
, std::string
>& var_value_map
);
65 // Used only by tests.
66 static void GenerateNewKey();
71 #endif // CHROME_BROWSER_INTERNAL_AUTH_H_