]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/auth/digest/User.cc
2 #include "auth/digest/auth_digest.h"
3 #include "auth/digest/User.h"
6 #include "SquidConfig.h"
9 Auth::Digest::User::User(Auth::Config
*aConfig
, const char *aRequestRealm
) :
10 Auth::User(aConfig
, aRequestRealm
),
13 memset(HA1
, 0, sizeof(HA1
));
16 Auth::Digest::User::~User()
18 dlink_node
*link
, *tmplink
;
24 dlinkDelete(tmplink
, &nonces
);
25 authDigestNoncePurge(static_cast < digest_nonce_h
* >(tmplink
->data
));
26 authDigestNonceUnlink(static_cast < digest_nonce_h
* >(tmplink
->data
));
27 dlinkNodeDelete(tmplink
);
32 Auth::Digest::User::ttl() const
34 int32_t global_ttl
= static_cast<int32_t>(expiretime
- squid_curtime
+ ::Config
.authenticateTTL
);
36 /* find the longest lasting nonce. */
37 int32_t latest_nonce
= -1;
38 dlink_node
*link
= nonces
.head
;
40 digest_nonce_h
*nonce
= static_cast<digest_nonce_h
*>(link
->data
);
41 if (nonce
->flags
.valid
&& nonce
->noncedata
.creationtime
> latest_nonce
)
42 latest_nonce
= nonce
->noncedata
.creationtime
;
46 if (latest_nonce
== -1)
47 return min(-1, global_ttl
);
49 int32_t nonce_ttl
= latest_nonce
- current_time
.tv_sec
+ static_cast<Config
*>(Auth::Config::Find("digest"))->noncemaxduration
;
51 return min(nonce_ttl
, global_ttl
);