Home | History | Annotate | Download | only in base
      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 #pragma once
      8 
      9 #include <string>
     10 
     11 #include "base/memory/ref_counted.h"
     12 #include "base/string16.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   bool operator==(const AuthChallengeInfo& that) const;
     25 
     26   bool operator!=(const AuthChallengeInfo& that) const {
     27     return !(*this == that);
     28   }
     29 
     30   bool is_proxy;  // true for Proxy-Authenticate, false for WWW-Authenticate.
     31   std::wstring host_and_port;  // <host>:<port> of the server asking for auth
     32                                // (could be the proxy).
     33   std::wstring scheme;  // "Basic", "Digest", or whatever other method is used.
     34   std::wstring realm;  // the realm provided by the server, if there is one.
     35 
     36  private:
     37   friend class base::RefCountedThreadSafe<AuthChallengeInfo>;
     38   ~AuthChallengeInfo();
     39 };
     40 
     41 // Authentication structures
     42 enum AuthState {
     43   AUTH_STATE_DONT_NEED_AUTH,
     44   AUTH_STATE_NEED_AUTH,
     45   AUTH_STATE_HAVE_AUTH,
     46   AUTH_STATE_CANCELED
     47 };
     48 
     49 class AuthData : public base::RefCountedThreadSafe<AuthData> {
     50  public:
     51   AuthState state;  // whether we need, have, or gave up on authentication.
     52   std::wstring scheme;  // the authentication scheme.
     53   string16 username;  // the username supplied to us for auth.
     54   string16 password;  // the password supplied to us for auth.
     55 
     56   // We wouldn't instantiate this class if we didn't need authentication.
     57   AuthData();
     58 
     59  private:
     60   friend class base::RefCountedThreadSafe<AuthData>;
     61   ~AuthData();
     62 };
     63 
     64 }  // namespace net
     65 
     66 #endif  // NET_BASE_AUTH_H__
     67