Files
Jan2021-Cpp2Il-Dump/Assembly-CSharp/BestHTTP/Authentication/Digest.cs
T
2026-04-08 23:40:05 +02:00

485 lines
14 KiB
C#

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
using BestHTTP.Extensions;
using Cpp2IlInjected;
namespace BestHTTP.Authentication
{
// Token: 0x020019ED RID: 6637
[Token(Token = "0x20019ED")]
[StructLayout(3)]
public sealed class Digest
{
// Token: 0x17001CE7 RID: 7399
// (get) Token: 0x0600B2C6 RID: 45766 RVA: 0x002A0BF8 File Offset: 0x0029EDF8
// (set) Token: 0x0600B2C7 RID: 45767 RVA: 0x002A0C0C File Offset: 0x0029EE0C
[Token(Token = "0x17001CE7")]
public Uri Uri
{
[Token(Token = "0x600B2C6")]
[Address(RVA = "0x3C39A0", Offset = "0x3C23A0", VA = "0x1803C39A0")]
get;
[Token(Token = "0x600B2C7")]
[Address(RVA = "0x3C39B0", Offset = "0x3C23B0", VA = "0x1803C39B0")]
private set;
}
// Token: 0x17001CE8 RID: 7400
// (get) Token: 0x0600B2C8 RID: 45768 RVA: 0x002A0C20 File Offset: 0x0029EE20
// (set) Token: 0x0600B2C9 RID: 45769 RVA: 0x002A0C34 File Offset: 0x0029EE34
[Token(Token = "0x17001CE8")]
public AuthenticationTypes Type
{
[Token(Token = "0x600B2C8")]
[Address(RVA = "0x3EE8D0", Offset = "0x3ED2D0", VA = "0x1803EE8D0")]
get;
[Token(Token = "0x600B2C9")]
[Address(RVA = "0x4F8C20", Offset = "0x4F7620", VA = "0x1804F8C20")]
private set;
}
// Token: 0x17001CE9 RID: 7401
// (get) Token: 0x0600B2CA RID: 45770 RVA: 0x002A0C48 File Offset: 0x0029EE48
// (set) Token: 0x0600B2CB RID: 45771 RVA: 0x002A0C5C File Offset: 0x0029EE5C
[Token(Token = "0x17001CE9")]
public string Realm
{
[Token(Token = "0x600B2CA")]
[Address(RVA = "0x3C1220", Offset = "0x3BFC20", VA = "0x1803C1220")]
get;
[Token(Token = "0x600B2CB")]
[Address(RVA = "0x3C1260", Offset = "0x3BFC60", VA = "0x1803C1260")]
private set;
}
// Token: 0x17001CEA RID: 7402
// (get) Token: 0x0600B2CC RID: 45772 RVA: 0x002A0C70 File Offset: 0x0029EE70
// (set) Token: 0x0600B2CD RID: 45773 RVA: 0x002A0C84 File Offset: 0x0029EE84
[Token(Token = "0x17001CEA")]
public bool Stale
{
[Token(Token = "0x600B2CC")]
[Address(RVA = "0x651230", Offset = "0x64FC30", VA = "0x180651230")]
get;
[Token(Token = "0x600B2CD")]
[Address(RVA = "0x6C60C0", Offset = "0x6C4AC0", VA = "0x1806C60C0")]
private set;
}
// Token: 0x17001CEB RID: 7403
// (get) Token: 0x0600B2CE RID: 45774 RVA: 0x002A0C98 File Offset: 0x0029EE98
// (set) Token: 0x0600B2CF RID: 45775 RVA: 0x002A0CAC File Offset: 0x0029EEAC
[Token(Token = "0x17001CEB")]
private string Nonce
{
[Token(Token = "0x600B2CE")]
[Address(RVA = "0x3C1250", Offset = "0x3BFC50", VA = "0x1803C1250")]
get;
[Token(Token = "0x600B2CF")]
[Address(RVA = "0x3C1290", Offset = "0x3BFC90", VA = "0x1803C1290")]
set;
}
// Token: 0x17001CEC RID: 7404
// (get) Token: 0x0600B2D0 RID: 45776 RVA: 0x002A0CC0 File Offset: 0x0029EEC0
// (set) Token: 0x0600B2D1 RID: 45777 RVA: 0x002A0CD4 File Offset: 0x0029EED4
[Token(Token = "0x17001CEC")]
private string Opaque
{
[Token(Token = "0x600B2D0")]
[Address(RVA = "0x3EE8E0", Offset = "0x3ED2E0", VA = "0x1803EE8E0")]
get;
[Token(Token = "0x600B2D1")]
[Address(RVA = "0x421E00", Offset = "0x420800", VA = "0x180421E00")]
set;
}
// Token: 0x17001CED RID: 7405
// (get) Token: 0x0600B2D2 RID: 45778 RVA: 0x002A0CE8 File Offset: 0x0029EEE8
// (set) Token: 0x0600B2D3 RID: 45779 RVA: 0x002A0CFC File Offset: 0x0029EEFC
[Token(Token = "0x17001CED")]
private string Algorithm
{
[Token(Token = "0x600B2D2")]
[Address(RVA = "0x3D32F0", Offset = "0x3D1CF0", VA = "0x1803D32F0")]
get;
[Token(Token = "0x600B2D3")]
[Address(RVA = "0x3D3460", Offset = "0x3D1E60", VA = "0x1803D3460")]
set;
}
// Token: 0x17001CEE RID: 7406
// (get) Token: 0x0600B2D4 RID: 45780 RVA: 0x002A0D10 File Offset: 0x0029EF10
// (set) Token: 0x0600B2D5 RID: 45781 RVA: 0x002A0D24 File Offset: 0x0029EF24
[Token(Token = "0x17001CEE")]
public List<string> ProtectedUris
{
[Token(Token = "0x600B2D4")]
[Address(RVA = "0x3EDEA0", Offset = "0x3EC8A0", VA = "0x1803EDEA0")]
get;
[Token(Token = "0x600B2D5")]
[Address(RVA = "0x3EDED0", Offset = "0x3EC8D0", VA = "0x1803EDED0")]
private set;
}
// Token: 0x17001CEF RID: 7407
// (get) Token: 0x0600B2D6 RID: 45782 RVA: 0x002A0D38 File Offset: 0x0029EF38
// (set) Token: 0x0600B2D7 RID: 45783 RVA: 0x002A0D4C File Offset: 0x0029EF4C
[Token(Token = "0x17001CEF")]
private string QualityOfProtections
{
[Token(Token = "0x600B2D6")]
[Address(RVA = "0x462740", Offset = "0x461140", VA = "0x180462740")]
get;
[Token(Token = "0x600B2D7")]
[Address(RVA = "0x462750", Offset = "0x461150", VA = "0x180462750")]
set;
}
// Token: 0x17001CF0 RID: 7408
// (get) Token: 0x0600B2D8 RID: 45784 RVA: 0x002A0D60 File Offset: 0x0029EF60
// (set) Token: 0x0600B2D9 RID: 45785 RVA: 0x002A0D74 File Offset: 0x0029EF74
[Token(Token = "0x17001CF0")]
private int NonceCount
{
[Token(Token = "0x600B2D8")]
[Address(RVA = "0x4F8170", Offset = "0x4F6B70", VA = "0x1804F8170")]
get;
[Token(Token = "0x600B2D9")]
[Address(RVA = "0x4F8620", Offset = "0x4F7020", VA = "0x1804F8620")]
set;
}
// Token: 0x17001CF1 RID: 7409
// (get) Token: 0x0600B2DA RID: 45786 RVA: 0x002A0D88 File Offset: 0x0029EF88
// (set) Token: 0x0600B2DB RID: 45787 RVA: 0x002A0D9C File Offset: 0x0029EF9C
[Token(Token = "0x17001CF1")]
private string HA1Sess
{
[Token(Token = "0x600B2DA")]
[Address(RVA = "0x3EDE90", Offset = "0x3EC890", VA = "0x1803EDE90")]
get;
[Token(Token = "0x600B2DB")]
[Address(RVA = "0x3EDEC0", Offset = "0x3EC8C0", VA = "0x1803EDEC0")]
set;
}
// Token: 0x0600B2DC RID: 45788 RVA: 0x002A0DB0 File Offset: 0x0029EFB0
[Token(Token = "0x600B2DC")]
[Address(RVA = "0x1A2CD80", Offset = "0x1A2B780", VA = "0x181A2CD80")]
internal Digest(Uri uri)
{
this.Uri = uri;
this.Algorithm = "md5";
}
// Token: 0x0600B2DD RID: 45789 RVA: 0x002A0DD8 File Offset: 0x0029EFD8
[Token(Token = "0x600B2DD")]
[Address(RVA = "0x1A2C8D0", Offset = "0x1A2B2D0", VA = "0x181A2C8D0")]
public void ParseChallange(string header)
{
int num;
do
{
num = 0;
this.<Type>k__BackingField = (AuthenticationTypes)num;
this.<Stale>k__BackingField = num != 0;
this.<Opaque>k__BackingField = num;
this.<HA1Sess>k__BackingField = num;
this.<NonceCount>k__BackingField = num;
this.<QualityOfProtections>k__BackingField = num;
List<string> list = this.<ProtectedUris>k__BackingField;
if (list != 0)
{
list.Clear();
}
List<HeaderValue> <Values>k__BackingField = new WWWAuthenticateHeaderParser(header).<Values>k__BackingField;
List.Enumerator enumerator;
if (enumerator != 0)
{
int stringLength = header.m_stringLength;
int stringLength2;
if (enumerator > (ulong)1863671838L)
{
if (enumerator > (ulong)3885209585L)
{
if (enumerator == (ulong)4143537083L)
{
while (enumerator == 0)
{
}
this.<QualityOfProtections>k__BackingField = enumerator;
}
if (enumerator == (ulong)4178082296L)
{
while (enumerator == 0)
{
}
this.<Nonce>k__BackingField = enumerator;
}
while (enumerator != (ulong)4179908061L)
{
}
while (enumerator == 0)
{
}
this.<Type>k__BackingField = (AuthenticationTypes)((ulong)2L);
}
if (enumerator == (ulong)1914854288L)
{
while (enumerator == 0)
{
}
this.<Realm>k__BackingField = enumerator;
}
while (enumerator != (ulong)3885209585L)
{
}
while (enumerator == 0)
{
}
while (enumerator != 0)
{
}
if (this.<ProtectedUris>k__BackingField == (ulong)0L)
{
List<string> list2 = new List();
this.<ProtectedUris>k__BackingField = list2;
}
string text;
this.<ProtectedUris>k__BackingField.Add(text);
string text2;
stringLength2 = text2.m_stringLength;
}
bool flag;
if (stringLength2 > 474311018)
{
if (stringLength2 == 1749328254)
{
while (stringLength2 == 0)
{
}
this.<Stale>k__BackingField = flag;
}
while (!flag)
{
}
while (!flag)
{
}
this.<Opaque>k__BackingField = flag;
}
if (flag)
{
while (!flag)
{
}
this.<Type>k__BackingField = (AuthenticationTypes)((ulong)1L);
}
while (!flag)
{
}
while (!flag)
{
}
this.<Algorithm>k__BackingField = flag;
}
if (num != -1)
{
}
}
while (num != 0);
}
// Token: 0x0600B2DE RID: 45790 RVA: 0x002A0F74 File Offset: 0x0029F174
[Token(Token = "0x600B2DE")]
[Address(RVA = "0x1A2B9B0", Offset = "0x1A2A3B0", VA = "0x181A2B9B0")]
public string GenerateResponseHeader(HTTPRequest request, Credentials credentials, bool isProxy = false)
{
string text7;
string requestPathAndQueryURL;
for (;;)
{
AuthenticationTypes authenticationTypes = this.<Type>k__BackingField;
if (authenticationTypes == AuthenticationTypes.Basic)
{
Encoding utf = Encoding.UTF8;
string <Password>k__BackingField = credentials.<Password>k__BackingField;
string <UserName>k__BackingField = credentials.<UserName>k__BackingField;
string text = string.Format("{0}:{1}", <UserName>k__BackingField, <Password>k__BackingField);
string text3;
string text2 = "Basic " + text3;
}
if (authenticationTypes != AuthenticationTypes.Digest)
{
goto IL_480;
}
int num = this.<NonceCount>k__BackingField;
num++;
this.<NonceCount>k__BackingField = num;
request.Finalize();
string text4 = this.<Algorithm>k__BackingField.TrimAndLower();
if (string.Equals(text4, "md5"))
{
string <Password>k__BackingField2 = credentials.<Password>k__BackingField;
string text5 = this.<Realm>k__BackingField;
string <UserName>k__BackingField2 = credentials.<UserName>k__BackingField;
string text6 = string.Format("{0}:{1}:{2}", <UserName>k__BackingField2, text5, <Password>k__BackingField2).CalculateMD5Hash();
}
if (!string.Equals(text4, "md5-sess"))
{
goto IL_47A;
}
if (string.IsNullOrEmpty(this.<HA1Sess>k__BackingField))
{
break;
}
text7 = this.<HA1Sess>k__BackingField;
string text8 = this.<QualityOfProtections>k__BackingField;
if (text8 != 0)
{
string text9 = text8.TrimAndLower();
}
int num2 = 0;
if (isProxy)
{
string host = request.CurrentUri.Host;
int port = request.CurrentUri.Port;
int num3;
string text10 = host + ":" + num3;
}
int hashCode = request.<MethodType>k__BackingField.GetHashCode();
requestPathAndQueryURL = request.CurrentUri.GetRequestPathAndQueryURL();
if (num2 == 0)
{
goto IL_316;
}
bool flag;
byte[] array;
if (!flag)
{
bool flag2;
if (!flag2)
{
goto Block_9;
}
}
else if (array == 0)
{
goto Block_10;
}
}
object[] array2 = new object[5];
string <UserName>k__BackingField3 = credentials.<UserName>k__BackingField;
throw new ArrayTypeMismatchException();
Block_9:
string text11 = (string.Empty + ":" + requestPathAndQueryURL).CalculateMD5Hash();
object[] array3 = new object[6];
throw new ArrayTypeMismatchException();
Block_10:
string text12 = VariableSizedBufferPool.NoData.CalculateMD5Hash();
string text14;
string text13 = string.Format("{0}:{1}:{2}", text14, requestPathAndQueryURL, text12).CalculateMD5Hash();
object[] array4 = new object[6];
throw new ArrayTypeMismatchException();
IL_316:
HTTPMethods httpmethods;
int hashCode2 = httpmethods.GetHashCode();
Uri uri;
string requestPathAndQueryURL2 = uri.GetRequestPathAndQueryURL();
string text16;
string text15 = (text16 + ":" + requestPathAndQueryURL2).CalculateMD5Hash();
string text17 = this.<Nonce>k__BackingField;
string text18 = string.Format("{0}:{1}:{2}", text7, text17, text15).CalculateMD5Hash();
object[] array5 = new object[6];
if (text16 != 0)
{
}
array5[0] = text16;
string text19 = this.<Realm>k__BackingField;
if (text19 != 0)
{
}
array5[1] = text19;
string text20 = this.<Nonce>k__BackingField;
if (text20 != 0)
{
}
array5[2] = text20;
if (requestPathAndQueryURL != 0)
{
}
array5[3] = requestPathAndQueryURL;
if (text7 != 0)
{
}
array5[4] = text7;
if (text18 != 0)
{
}
array5[5] = text18;
string text21 = string.Format("Digest username=\"{0}\", realm=\"{1}\", nonce=\"{2}\", uri=\"{3}\", cnonce=\"{4}\", response=\"{5}\"", array5);
string text22;
if ("auth-int" != 0)
{
string[] array6 = new string[5];
if (text21 != 0)
{
}
array6[0] = text21;
if (", qop=\"" != 0)
{
}
array6[1] = ", qop=\"";
array6[2] = "auth-int";
if ("\", nc=" != 0)
{
}
array6[3] = "\", nc=";
if ("\", nc=" != 0)
{
}
array6[4] = "\", nc=";
text22 = string.Concat(array6);
}
string text23 = this.<Opaque>k__BackingField;
if (text22 == 0)
{
string text24 = this.<Opaque>k__BackingField;
string text25 = text22 + ", opaque=\"" + text24 + "\"";
}
IL_47A:
return string.Empty;
IL_480:
throw new NullReferenceException();
}
// Token: 0x0600B2DF RID: 45791 RVA: 0x002A1558 File Offset: 0x0029F758
[Token(Token = "0x600B2DF")]
[Address(RVA = "0x1A2C7C0", Offset = "0x1A2B1C0", VA = "0x181A2C7C0")]
public bool IsUriProtected(Uri uri)
{
string host = uri.Host;
string host2 = this.<Uri>k__BackingField.Host;
if (string.CompareOrdinal(host, host2) == 0)
{
int hashCode = uri.GetHashCode();
if (this.<ProtectedUris>k__BackingField != 0)
{
int num = 0;
bool flag;
if (!flag)
{
List<string> list = this.<ProtectedUris>k__BackingField;
num++;
}
}
return true;
}
throw new NullReferenceException();
}
}
}