scripts
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
||||
namespace System.Net
|
||||
{
|
||||
// Token: 0x02000211 RID: 529
|
||||
internal class DigestClient : IAuthenticationModule
|
||||
{
|
||||
// Token: 0x170005E8 RID: 1512
|
||||
// (get) Token: 0x06001203 RID: 4611 RVA: 0x00035C6C File Offset: 0x00033E6C
|
||||
private static Hashtable Cache
|
||||
{
|
||||
get
|
||||
{
|
||||
object syncRoot = DigestClient.cache.SyncRoot;
|
||||
lock (syncRoot)
|
||||
{
|
||||
DigestClient.CheckExpired(DigestClient.cache.Count);
|
||||
}
|
||||
return DigestClient.cache;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06001204 RID: 4612 RVA: 0x00035CC8 File Offset: 0x00033EC8
|
||||
private static void CheckExpired(int count)
|
||||
{
|
||||
if (count < 10)
|
||||
{
|
||||
return;
|
||||
}
|
||||
DateTime dateTime = DateTime.MaxValue;
|
||||
DateTime now = DateTime.Now;
|
||||
ArrayList arrayList = null;
|
||||
foreach (object obj in DigestClient.cache.Keys)
|
||||
{
|
||||
int num = (int)obj;
|
||||
DigestSession digestSession = (DigestSession)DigestClient.cache[num];
|
||||
if (digestSession.LastUse < dateTime && (digestSession.LastUse - now).Ticks > 6000000000L)
|
||||
{
|
||||
dateTime = digestSession.LastUse;
|
||||
if (arrayList == null)
|
||||
{
|
||||
arrayList = new ArrayList();
|
||||
}
|
||||
arrayList.Add(num);
|
||||
}
|
||||
}
|
||||
if (arrayList != null)
|
||||
{
|
||||
foreach (object obj2 in arrayList)
|
||||
{
|
||||
int num2 = (int)obj2;
|
||||
DigestClient.cache.Remove(num2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06001205 RID: 4613 RVA: 0x00035E34 File Offset: 0x00034034
|
||||
public Authorization Authenticate(string challenge, WebRequest webRequest, ICredentials credentials)
|
||||
{
|
||||
if (credentials == null || challenge == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
string text = challenge.Trim();
|
||||
if (text.ToLower().IndexOf("digest") == -1)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
HttpWebRequest httpWebRequest = webRequest as HttpWebRequest;
|
||||
if (httpWebRequest == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
int num = httpWebRequest.Address.GetHashCode() ^ credentials.GetHashCode();
|
||||
DigestSession digestSession = (DigestSession)DigestClient.Cache[num];
|
||||
bool flag = digestSession == null;
|
||||
if (flag)
|
||||
{
|
||||
digestSession = new DigestSession();
|
||||
}
|
||||
if (!digestSession.Parse(challenge))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
DigestClient.Cache.Add(num, digestSession);
|
||||
}
|
||||
return digestSession.Authenticate(webRequest, credentials);
|
||||
}
|
||||
|
||||
// Token: 0x06001206 RID: 4614 RVA: 0x00035EE8 File Offset: 0x000340E8
|
||||
public Authorization PreAuthenticate(WebRequest webRequest, ICredentials credentials)
|
||||
{
|
||||
HttpWebRequest httpWebRequest = webRequest as HttpWebRequest;
|
||||
if (httpWebRequest == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
if (credentials == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
int num = httpWebRequest.Address.GetHashCode() ^ credentials.GetHashCode();
|
||||
DigestSession digestSession = (DigestSession)DigestClient.Cache[num];
|
||||
if (digestSession == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return digestSession.Authenticate(webRequest, credentials);
|
||||
}
|
||||
|
||||
// Token: 0x170005E9 RID: 1513
|
||||
// (get) Token: 0x06001207 RID: 4615 RVA: 0x00035F48 File Offset: 0x00034148
|
||||
public string AuthenticationType
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Digest";
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170005EA RID: 1514
|
||||
// (get) Token: 0x06001208 RID: 4616 RVA: 0x00035F50 File Offset: 0x00034150
|
||||
public bool CanPreAuthenticate
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000FAF RID: 4015
|
||||
private static readonly Hashtable cache = Hashtable.Synchronized(new Hashtable());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user