OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 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. | |
4 | |
5 #ifndef NET_BASE_AUTH_H__ | |
6 #define NET_BASE_AUTH_H__ | |
7 | |
8 #include <string> | |
9 | |
10 #include "base/memory/ref_counted.h" | |
11 #include "base/strings/string16.h" | |
12 #include "net/base/host_port_pair.h" | |
13 #include "net/base/net_export.h" | |
14 | |
15 namespace net { | |
16 | |
17 // Holds info about an authentication challenge that we may want to display | |
18 // to the user. | |
19 class NET_EXPORT AuthChallengeInfo : | |
20 public base::RefCountedThreadSafe<AuthChallengeInfo> { | |
21 public: | |
22 AuthChallengeInfo(); | |
23 | |
24 // Determines whether two AuthChallengeInfo's are equivalent. | |
25 bool Equals(const AuthChallengeInfo& other) const; | |
26 | |
27 // Whether this came from a server or a proxy. | |
28 bool is_proxy; | |
29 | |
30 // The service issuing the challenge. | |
31 HostPortPair challenger; | |
32 | |
33 // The authentication scheme used, such as "basic" or "digest". If the | |
34 // |source| is FTP_SERVER, this is an empty string. The encoding is ASCII. | |
35 std::string scheme; | |
36 | |
37 // The realm of the challenge. May be empty. The encoding is UTF-8. | |
38 std::string realm; | |
39 | |
40 private: | |
41 friend class base::RefCountedThreadSafe<AuthChallengeInfo>; | |
42 ~AuthChallengeInfo(); | |
43 }; | |
44 | |
45 // Authentication Credentials for an authentication credentials. | |
46 class NET_EXPORT AuthCredentials { | |
47 public: | |
48 AuthCredentials(); | |
49 AuthCredentials(const base::string16& username, | |
50 const base::string16& password); | |
51 ~AuthCredentials(); | |
52 | |
53 // Set the |username| and |password|. | |
54 void Set(const base::string16& username, const base::string16& password); | |
55 | |
56 // Determines if |this| is equivalent to |other|. | |
57 bool Equals(const AuthCredentials& other) const; | |
58 | |
59 // Returns true if all credentials are empty. | |
60 bool Empty() const; | |
61 | |
62 // Overwrites the password memory to prevent it from being read if | |
63 // it's paged out to disk. | |
64 void Zap(); | |
65 | |
66 const base::string16& username() const { return username_; } | |
67 const base::string16& password() const { return password_; } | |
68 | |
69 private: | |
70 // The username to provide, possibly empty. This should be ASCII only to | |
71 // minimize compatibility problems, but arbitrary UTF-16 strings are allowed | |
72 // and will be attempted. | |
73 base::string16 username_; | |
74 | |
75 // The password to provide, possibly empty. This should be ASCII only to | |
76 // minimize compatibility problems, but arbitrary UTF-16 strings are allowed | |
77 // and will be attempted. | |
78 base::string16 password_; | |
79 | |
80 // Intentionally allowing the implicit copy constructor and assignment | |
81 // operators. | |
82 }; | |
83 | |
84 // Authentication structures | |
85 enum AuthState { | |
86 AUTH_STATE_DONT_NEED_AUTH, | |
87 AUTH_STATE_NEED_AUTH, | |
88 AUTH_STATE_HAVE_AUTH, | |
89 AUTH_STATE_CANCELED | |
90 }; | |
91 | |
92 class AuthData : public base::RefCountedThreadSafe<AuthData> { | |
93 public: | |
94 AuthState state; // whether we need, have, or gave up on authentication. | |
95 AuthCredentials credentials; // The credentials to use for auth. | |
96 | |
97 // We wouldn't instantiate this class if we didn't need authentication. | |
98 AuthData(); | |
99 | |
100 private: | |
101 friend class base::RefCountedThreadSafe<AuthData>; | |
102 ~AuthData(); | |
103 }; | |
104 | |
105 } // namespace net | |
106 | |
107 #endif // NET_BASE_AUTH_H__ | |
OLD | NEW |