15 #ifndef HTTPDIGESTAUTHORIZATION_H 16 #define HTTPDIGESTAUTHORIZATION_H 18 #include "pandabase.h" 26 #include "httpAuthorization.h" 35 class HTTPDigestAuthorization :
public HTTPAuthorization {
37 HTTPDigestAuthorization(
const Tokens &tokens,
const URLSpec &url,
39 virtual ~HTTPDigestAuthorization();
41 virtual const string &get_mechanism()
const;
42 virtual bool is_valid();
44 virtual string generate(HTTPEnum::Method method,
const string &request_path,
45 const string &username,
const string &body);
61 static int match_qop_token(
const string &token);
63 string calc_request_digest(
const string &username,
const string &password,
64 HTTPEnum::Method method,
65 const string &request_path,
const string &body);
66 string calc_h(
const string &data)
const;
67 string calc_kd(
const string &secret,
const string &data)
const;
68 string get_a1(
const string &username,
const string &password);
69 string get_a2(HTTPEnum::Method method,
const string &request_path,
71 string get_hex_nonce_count()
const;
73 static string calc_md5(
const string &source);
74 INLINE
static char hexdigit(
int value);
87 static const string _mechanism;
90 ostream &operator << (ostream &out, HTTPDigestAuthorization::Algorithm algorithm);
91 ostream &operator << (ostream &out, HTTPDigestAuthorization::Qop qop);
93 #include "httpDigestAuthorization.I" 95 #endif // HAVE_OPENSSL A container for a URL, e.g.