diff --git a/headers/os/net/HttpAuthentication.h b/headers/os/net/HttpAuthentication.h index 0d71fc4191..8334f581bf 100644 --- a/headers/os/net/HttpAuthentication.h +++ b/headers/os/net/HttpAuthentication.h @@ -42,29 +42,33 @@ public: BHttpAuthentication(); BHttpAuthentication(const BString& username, const BString& password); - + BHttpAuthentication( + const BHttpAuthentication& other); + BHttpAuthentication& operator=( + const BHttpAuthentication& other); + // Field modification void SetUserName(const BString& username); void SetPassword(const BString& password); void SetMethod( BHttpAuthenticationMethod type); status_t Initialize(const BString& wwwAuthenticate); - + // Field access const BString& UserName() const; const BString& Password() const; BHttpAuthenticationMethod Method() const; - - BString Authorization(const BUrl& url, + + BString Authorization(const BUrl& url, const BString& method) const; - + // Base64 encoding // TODO: Move to a common place. We may have multiple implementations // in the Haiku tree... static BString Base64Encode(const BString& string); static BString Base64Decode(const BString& string); - - + + private: BString _DigestResponse(const BString& uri, const BString& method) const; @@ -72,14 +76,14 @@ private: // _KD returns a hash value of the "data" prepended by // the "secret" string... BString _H(const BString& value) const; - BString _KD(const BString& secret, + BString _KD(const BString& secret, const BString& data) const; - + private: BHttpAuthenticationMethod fAuthenticationMethod; BString fUserName; BString fPassword; - + BString fRealm; BString fDigestNonce; mutable BString fDigestCnonce; @@ -88,7 +92,7 @@ private: bool fDigestStale; BHttpAuthenticationAlgorithm fDigestAlgorithm; BHttpAuthenticationQop fDigestQop; - + BString fAuthorizationString; mutable BLocker fLock; diff --git a/src/kits/network/libnetapi/HttpAuthentication.cpp b/src/kits/network/libnetapi/HttpAuthentication.cpp index 32e47dbf5a..ea63ecf356 100644 --- a/src/kits/network/libnetapi/HttpAuthentication.cpp +++ b/src/kits/network/libnetapi/HttpAuthentication.cpp @@ -53,6 +53,43 @@ BHttpAuthentication::BHttpAuthentication(const BString& username, const BString& } +BHttpAuthentication::BHttpAuthentication(const BHttpAuthentication& other) + : + fAuthenticationMethod(other.fAuthenticationMethod), + fUserName(other.fUserName), + fPassword(other.fPassword), + fRealm(other.fRealm), + fDigestNonce(other.fDigestNonce), + fDigestCnonce(other.fDigestCnonce), + fDigestNc(other.fDigestNc), + fDigestOpaque(other.fDigestOpaque), + fDigestStale(other.fDigestStale), + fDigestAlgorithm(other.fDigestAlgorithm), + fDigestQop(other.fDigestQop), + fAuthorizationString(other.fAuthorizationString) +{ +} + + +BHttpAuthentication& BHttpAuthentication::operator=( + const BHttpAuthentication& other) +{ + fAuthenticationMethod = other.fAuthenticationMethod; + fUserName = other.fUserName; + fPassword = other.fPassword; + fRealm = other.fRealm; + fDigestNonce = other.fDigestNonce; + fDigestCnonce = other.fDigestCnonce; + fDigestNc = other.fDigestNc; + fDigestOpaque = other.fDigestOpaque; + fDigestStale = other.fDigestStale; + fDigestAlgorithm = other.fDigestAlgorithm; + fDigestQop = other.fDigestQop; + fAuthorizationString = other.fAuthorizationString; + return *this; +} + + // #pragma mark Field modification