This commit is contained in:
niko
2026-04-11 22:19:20 +02:00
parent 45b857ff11
commit 8fc35183db
17034 changed files with 2863552 additions and 0 deletions
@@ -0,0 +1,20 @@
using System;
using Cpp2IlInjected;
namespace BestHTTP.Authentication
{
// Token: 0x02001FC8 RID: 8136
[Token(Token = "0x2001FC8")]
public enum AuthenticationTypes
{
// Token: 0x04008412 RID: 33810
[Token(Token = "0x4008412")]
Unknown,
// Token: 0x04008413 RID: 33811
[Token(Token = "0x4008413")]
Basic,
// Token: 0x04008414 RID: 33812
[Token(Token = "0x4008414")]
Digest
}
}
@@ -0,0 +1,74 @@
using System;
using Cpp2IlInjected;
namespace BestHTTP.Authentication
{
// Token: 0x02001FC9 RID: 8137
[Token(Token = "0x2001FC9")]
public sealed class Credentials
{
// Token: 0x170020E5 RID: 8421
// (get) Token: 0x0600CE98 RID: 52888 RVA: 0x002F9200 File Offset: 0x002F7400
// (set) Token: 0x0600CE99 RID: 52889 RVA: 0x002F9214 File Offset: 0x002F7414
[Token(Token = "0x170020E5")]
public AuthenticationTypes Type
{
[Token(Token = "0x600CE98")]
[Address(RVA = "0x3FA560", Offset = "0x3F9360", VA = "0x1803FA560")]
get;
[Token(Token = "0x600CE99")]
[Address(RVA = "0x536480", Offset = "0x535280", VA = "0x180536480")]
private set;
}
// Token: 0x170020E6 RID: 8422
// (get) Token: 0x0600CE9A RID: 52890 RVA: 0x002F9228 File Offset: 0x002F7428
// (set) Token: 0x0600CE9B RID: 52891 RVA: 0x002F923C File Offset: 0x002F743C
[Token(Token = "0x170020E6")]
public string UserName
{
[Token(Token = "0x600CE9A")]
[Address(RVA = "0x3F5F40", Offset = "0x3F4D40", VA = "0x1803F5F40")]
get;
[Token(Token = "0x600CE9B")]
[Address(RVA = "0x3F7210", Offset = "0x3F6010", VA = "0x1803F7210")]
private set;
}
// Token: 0x170020E7 RID: 8423
// (get) Token: 0x0600CE9C RID: 52892 RVA: 0x002F9250 File Offset: 0x002F7450
// (set) Token: 0x0600CE9D RID: 52893 RVA: 0x002F9264 File Offset: 0x002F7464
[Token(Token = "0x170020E7")]
public string Password
{
[Token(Token = "0x600CE9C")]
[Address(RVA = "0x3F6400", Offset = "0x3F5200", VA = "0x1803F6400")]
get;
[Token(Token = "0x600CE9D")]
[Address(RVA = "0x460F90", Offset = "0x45FD90", VA = "0x180460F90")]
private set;
}
// Token: 0x0600CE9E RID: 52894 RVA: 0x002F9278 File Offset: 0x002F7478
[Token(Token = "0x600CE9E")]
[Address(RVA = "0xA9F510", Offset = "0xA9E310", VA = "0x180A9F510")]
public Credentials(string userName, string password)
{
this.UserName = userName;
this.Password = password;
this.Type = (AuthenticationTypes)((ulong)0L);
}
// Token: 0x0600CE9F RID: 52895 RVA: 0x002F92A4 File Offset: 0x002F74A4
[Token(Token = "0x600CE9F")]
[Address(RVA = "0xA9F550", Offset = "0xA9E350", VA = "0x180A9F550")]
public Credentials(AuthenticationTypes type, string userName, string password)
{
int num = 0;
base.FieldGetter(num, userName, password);
this.Type = type;
this.UserName = userName;
this.Password = password;
}
}
}
@@ -0,0 +1,480 @@
using System;
using System.Collections.Generic;
using System.Text;
using BestHTTP.Extensions;
using Cpp2IlInjected;
namespace BestHTTP.Authentication
{
// Token: 0x02001FCA RID: 8138
[Token(Token = "0x2001FCA")]
public sealed class Digest
{
// Token: 0x170020E8 RID: 8424
// (get) Token: 0x0600CEA0 RID: 52896 RVA: 0x002F92D4 File Offset: 0x002F74D4
// (set) Token: 0x0600CEA1 RID: 52897 RVA: 0x002F92E8 File Offset: 0x002F74E8
[Token(Token = "0x170020E8")]
public Uri Uri
{
[Token(Token = "0x600CEA0")]
[Address(RVA = "0x3F6E20", Offset = "0x3F5C20", VA = "0x1803F6E20")]
get;
[Token(Token = "0x600CEA1")]
[Address(RVA = "0x3F7200", Offset = "0x3F6000", VA = "0x1803F7200")]
private set;
}
// Token: 0x170020E9 RID: 8425
// (get) Token: 0x0600CEA2 RID: 52898 RVA: 0x002F92FC File Offset: 0x002F74FC
// (set) Token: 0x0600CEA3 RID: 52899 RVA: 0x002F9310 File Offset: 0x002F7510
[Token(Token = "0x170020E9")]
public AuthenticationTypes Type
{
[Token(Token = "0x600CEA2")]
[Address(RVA = "0x40B720", Offset = "0x40A520", VA = "0x18040B720")]
get;
[Token(Token = "0x600CEA3")]
[Address(RVA = "0x41F740", Offset = "0x41E540", VA = "0x18041F740")]
private set;
}
// Token: 0x170020EA RID: 8426
// (get) Token: 0x0600CEA4 RID: 52900 RVA: 0x002F9324 File Offset: 0x002F7524
// (set) Token: 0x0600CEA5 RID: 52901 RVA: 0x002F9338 File Offset: 0x002F7538
[Token(Token = "0x170020EA")]
public string Realm
{
[Token(Token = "0x600CEA4")]
[Address(RVA = "0x3F6400", Offset = "0x3F5200", VA = "0x1803F6400")]
get;
[Token(Token = "0x600CEA5")]
[Address(RVA = "0x460F90", Offset = "0x45FD90", VA = "0x180460F90")]
private set;
}
// Token: 0x170020EB RID: 8427
// (get) Token: 0x0600CEA6 RID: 52902 RVA: 0x002F934C File Offset: 0x002F754C
// (set) Token: 0x0600CEA7 RID: 52903 RVA: 0x002F9360 File Offset: 0x002F7560
[Token(Token = "0x170020EB")]
public bool Stale
{
[Token(Token = "0x600CEA6")]
[Address(RVA = "0x494270", Offset = "0x493070", VA = "0x180494270")]
get;
[Token(Token = "0x600CEA7")]
[Address(RVA = "0x494500", Offset = "0x493300", VA = "0x180494500")]
private set;
}
// Token: 0x170020EC RID: 8428
// (get) Token: 0x0600CEA8 RID: 52904 RVA: 0x002F9374 File Offset: 0x002F7574
// (set) Token: 0x0600CEA9 RID: 52905 RVA: 0x002F9388 File Offset: 0x002F7588
[Token(Token = "0x170020EC")]
private string Nonce
{
[Token(Token = "0x600CEA8")]
[Address(RVA = "0x3FA180", Offset = "0x3F8F80", VA = "0x1803FA180")]
get;
[Token(Token = "0x600CEA9")]
[Address(RVA = "0x4437E0", Offset = "0x4425E0", VA = "0x1804437E0")]
set;
}
// Token: 0x170020ED RID: 8429
// (get) Token: 0x0600CEAA RID: 52906 RVA: 0x002F939C File Offset: 0x002F759C
// (set) Token: 0x0600CEAB RID: 52907 RVA: 0x002F93B0 File Offset: 0x002F75B0
[Token(Token = "0x170020ED")]
private string Opaque
{
[Token(Token = "0x600CEAA")]
[Address(RVA = "0x3F63D0", Offset = "0x3F51D0", VA = "0x1803F63D0")]
get;
[Token(Token = "0x600CEAB")]
[Address(RVA = "0x5329E0", Offset = "0x5317E0", VA = "0x1805329E0")]
set;
}
// Token: 0x170020EE RID: 8430
// (get) Token: 0x0600CEAC RID: 52908 RVA: 0x002F93C4 File Offset: 0x002F75C4
// (set) Token: 0x0600CEAD RID: 52909 RVA: 0x002F93D8 File Offset: 0x002F75D8
[Token(Token = "0x170020EE")]
private string Algorithm
{
[Token(Token = "0x600CEAC")]
[Address(RVA = "0x408890", Offset = "0x407690", VA = "0x180408890")]
get;
[Token(Token = "0x600CEAD")]
[Address(RVA = "0x403B30", Offset = "0x402930", VA = "0x180403B30")]
set;
}
// Token: 0x170020EF RID: 8431
// (get) Token: 0x0600CEAE RID: 52910 RVA: 0x002F93EC File Offset: 0x002F75EC
// (set) Token: 0x0600CEAF RID: 52911 RVA: 0x002F9400 File Offset: 0x002F7600
[Token(Token = "0x170020EF")]
public List<string> ProtectedUris
{
[Token(Token = "0x600CEAE")]
[Address(RVA = "0x3FA170", Offset = "0x3F8F70", VA = "0x1803FA170")]
get;
[Token(Token = "0x600CEAF")]
[Address(RVA = "0x46AA50", Offset = "0x469850", VA = "0x18046AA50")]
private set;
}
// Token: 0x170020F0 RID: 8432
// (get) Token: 0x0600CEB0 RID: 52912 RVA: 0x002F9414 File Offset: 0x002F7614
// (set) Token: 0x0600CEB1 RID: 52913 RVA: 0x002F9428 File Offset: 0x002F7628
[Token(Token = "0x170020F0")]
private string QualityOfProtections
{
[Token(Token = "0x600CEB0")]
[Address(RVA = "0x415290", Offset = "0x414090", VA = "0x180415290")]
get;
[Token(Token = "0x600CEB1")]
[Address(RVA = "0x46AB00", Offset = "0x469900", VA = "0x18046AB00")]
set;
}
// Token: 0x170020F1 RID: 8433
// (get) Token: 0x0600CEB2 RID: 52914 RVA: 0x002F943C File Offset: 0x002F763C
// (set) Token: 0x0600CEB3 RID: 52915 RVA: 0x002F9450 File Offset: 0x002F7650
[Token(Token = "0x170020F1")]
private int NonceCount
{
[Token(Token = "0x600CEB2")]
[Address(RVA = "0x3FA190", Offset = "0x3F8F90", VA = "0x1803FA190")]
get;
[Token(Token = "0x600CEB3")]
[Address(RVA = "0x568560", Offset = "0x567360", VA = "0x180568560")]
set;
}
// Token: 0x170020F2 RID: 8434
// (get) Token: 0x0600CEB4 RID: 52916 RVA: 0x002F9464 File Offset: 0x002F7664
// (set) Token: 0x0600CEB5 RID: 52917 RVA: 0x002F9478 File Offset: 0x002F7678
[Token(Token = "0x170020F2")]
private string HA1Sess
{
[Token(Token = "0x600CEB4")]
[Address(RVA = "0x423DE0", Offset = "0x422BE0", VA = "0x180423DE0")]
get;
[Token(Token = "0x600CEB5")]
[Address(RVA = "0x567490", Offset = "0x566290", VA = "0x180567490")]
set;
}
// Token: 0x0600CEB6 RID: 52918 RVA: 0x002F948C File Offset: 0x002F768C
[Token(Token = "0x600CEB6")]
[Address(RVA = "0xAA12E0", Offset = "0xAA00E0", VA = "0x180AA12E0")]
internal Digest(Uri uri)
{
this.Uri = uri;
this.Algorithm = "md5";
}
// Token: 0x0600CEB7 RID: 52919 RVA: 0x002F94B4 File Offset: 0x002F76B4
[Token(Token = "0x600CEB7")]
[Address(RVA = "0xAA0E60", Offset = "0xA9FC60", VA = "0x180AA0E60")]
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;
bool flag;
if (flag)
{
int stringLength = header.m_stringLength;
int stringLength2;
if (flag > true)
{
if (flag > true)
{
if (flag)
{
while (!flag)
{
}
this.<QualityOfProtections>k__BackingField = flag;
}
if (flag)
{
while (!flag)
{
}
this.<Nonce>k__BackingField = flag;
}
while (!flag)
{
}
while (!flag)
{
}
this.<Type>k__BackingField = (AuthenticationTypes)((ulong)2L);
}
if (flag)
{
while (!flag)
{
}
this.<Realm>k__BackingField = flag;
}
while (!flag)
{
}
while (!flag)
{
}
while (flag)
{
}
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 flag2;
if (stringLength2 > 474311018)
{
if (stringLength2 == 1749328254)
{
while (stringLength2 == 0)
{
}
this.<Stale>k__BackingField = flag2;
}
while (!flag2)
{
}
while (!flag2)
{
}
this.<Opaque>k__BackingField = flag2;
}
if (flag2)
{
while (!flag2)
{
}
this.<Type>k__BackingField = (AuthenticationTypes)((ulong)1L);
}
while (!flag2)
{
}
while (!flag2)
{
}
this.<Algorithm>k__BackingField = flag2;
}
}
while (num != 0);
}
// Token: 0x0600CEB8 RID: 52920 RVA: 0x002F9624 File Offset: 0x002F7824
[Token(Token = "0x600CEB8")]
[Address(RVA = "0xA9FF40", Offset = "0xA9ED40", VA = "0x180A9FF40")]
public string GenerateResponseHeader(HTTPRequest request, Credentials credentials, bool isProxy = false)
{
string text8;
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_492;
}
int num = this.<NonceCount>k__BackingField;
num++;
this.<NonceCount>k__BackingField = num;
request.Finalize();
string text4 = this.<NonceCount>k__BackingField.ToString("X8");
string text5 = this.<Algorithm>k__BackingField.TrimAndLower();
if (string.Equals(text5, "md5"))
{
string <Password>k__BackingField2 = credentials.<Password>k__BackingField;
string text6 = this.<Realm>k__BackingField;
string <UserName>k__BackingField2 = credentials.<UserName>k__BackingField;
string text7 = string.Format("{0}:{1}:{2}", <UserName>k__BackingField2, text6, <Password>k__BackingField2).CalculateMD5Hash();
}
if (!string.Equals(text5, "md5-sess"))
{
goto IL_48C;
}
if (string.IsNullOrEmpty(this.<HA1Sess>k__BackingField))
{
break;
}
text8 = this.<HA1Sess>k__BackingField;
string text9 = this.<QualityOfProtections>k__BackingField;
if (text9 != 0)
{
string text10 = text9.TrimAndLower();
}
int num2 = 0;
if (isProxy)
{
string host = request.CurrentUri.Host;
int port = request.CurrentUri.Port;
int num3;
string text11 = host + ":" + num3;
}
int hashCode = request.<MethodType>k__BackingField.GetHashCode();
requestPathAndQueryURL = request.CurrentUri.GetRequestPathAndQueryURL();
if (num2 == 0)
{
goto IL_328;
}
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 text12 = (string.Empty + ":" + requestPathAndQueryURL).CalculateMD5Hash();
object[] array3 = new object[6];
throw new ArrayTypeMismatchException();
Block_10:
string text13 = VariableSizedBufferPool.NoData.CalculateMD5Hash();
string text15;
string text14 = string.Format("{0}:{1}:{2}", text15, requestPathAndQueryURL, text13).CalculateMD5Hash();
object[] array4 = new object[6];
throw new ArrayTypeMismatchException();
IL_328:
HTTPMethods httpmethods;
int hashCode2 = httpmethods.GetHashCode();
Uri uri;
string requestPathAndQueryURL2 = uri.GetRequestPathAndQueryURL();
string text17;
string text16 = (text17 + ":" + requestPathAndQueryURL2).CalculateMD5Hash();
string text18 = this.<Nonce>k__BackingField;
string text19 = string.Format("{0}:{1}:{2}", text8, text18, text16).CalculateMD5Hash();
object[] array5 = new object[6];
if (text17 != 0)
{
}
array5[0] = text17;
string text20 = this.<Realm>k__BackingField;
if (text20 != 0)
{
}
array5[1] = text20;
string text21 = this.<Nonce>k__BackingField;
if (text21 != 0)
{
}
array5[2] = text21;
if (requestPathAndQueryURL != 0)
{
}
array5[3] = requestPathAndQueryURL;
if (text8 != 0)
{
}
array5[4] = text8;
if (text19 != 0)
{
}
array5[5] = text19;
string text22 = string.Format("Digest username=\"{0}\", realm=\"{1}\", nonce=\"{2}\", uri=\"{3}\", cnonce=\"{4}\", response=\"{5}\"", array5);
string text23;
if ("auth-int" != 0)
{
string[] array6 = new string[5];
if (text22 != 0)
{
}
array6[0] = text22;
if (", qop=\"" != 0)
{
}
array6[1] = ", qop=\"";
array6[2] = "auth-int";
if ("\", nc=" != 0)
{
}
array6[3] = "\", nc=";
if ("\", nc=" != 0)
{
}
array6[4] = "\", nc=";
text23 = string.Concat(array6);
}
string text24 = this.<Opaque>k__BackingField;
if (text23 == 0)
{
string text25 = this.<Opaque>k__BackingField;
string text26 = text23 + ", opaque=\"" + text25 + "\"";
}
IL_48C:
return string.Empty;
IL_492:
throw new NullReferenceException();
}
// Token: 0x0600CEB9 RID: 52921 RVA: 0x002F9C18 File Offset: 0x002F7E18
[Token(Token = "0x600CEB9")]
[Address(RVA = "0xAA0D50", Offset = "0xA9FB50", VA = "0x180AA0D50")]
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();
}
}
}
@@ -0,0 +1,125 @@
using System;
using System.Collections.Generic;
using System.Threading;
using Cpp2IlInjected;
namespace BestHTTP.Authentication
{
// Token: 0x02001FCB RID: 8139
[Token(Token = "0x2001FCB")]
public static class DigestStore
{
// Token: 0x0600CEBA RID: 52922 RVA: 0x002F9C70 File Offset: 0x002F7E70
[Token(Token = "0x600CEBA")]
[Address(RVA = "0xA9FA30", Offset = "0xA9E830", VA = "0x180A9FA30")]
public static Digest Get(Uri uri)
{
int num;
do
{
num = 0;
object locker = DigestStore.Locker;
int num2 = 0;
Dictionary<string, Digest> digests = DigestStore.Digests;
string host = uri.Host;
if (digests.TryGetValue(host, num2))
{
string host2 = uri.Host;
string host3 = uri.Host;
bool flag;
if (string.CompareOrdinal(host2, host3) == 0 && uri.GetHashCode() != 0 && num < uri.m_originalUnicodeString && !flag)
{
num++;
}
}
Monitor.Exit(locker);
}
while (num != 0);
throw new NullReferenceException();
}
// Token: 0x0600CEBB RID: 52923 RVA: 0x002F9D0C File Offset: 0x002F7F0C
[Token(Token = "0x600CEBB")]
[Address(RVA = "0xA9F800", Offset = "0xA9E600", VA = "0x180A9F800")]
public static Digest GetOrCreate(Uri uri)
{
int num;
do
{
num = 0;
object locker = DigestStore.Locker;
int num2 = 0;
Dictionary<string, Digest> digests = DigestStore.Digests;
string host = uri.Host;
if (!digests.TryGetValue(host, num2))
{
Dictionary<string, Digest> digests2 = DigestStore.Digests;
string host2 = uri.Host;
Digest digest;
digest.<Uri>k__BackingField = uri;
digest.<Algorithm>k__BackingField = "md5";
digests2.Add(host2, digest);
}
Monitor.Exit(locker);
}
while (num != 0);
throw new NullReferenceException();
}
// Token: 0x0600CEBC RID: 52924 RVA: 0x002F9D88 File Offset: 0x002F7F88
[Token(Token = "0x600CEBC")]
[Address(RVA = "0xA9FCA0", Offset = "0xA9EAA0", VA = "0x180A9FCA0")]
public static void Remove(Uri uri)
{
int num;
do
{
num = 0;
object locker = DigestStore.Locker;
Dictionary<string, Digest> digests = DigestStore.Digests;
string host = uri.Host;
bool flag = digests.Remove(host);
Monitor.Exit(locker);
}
while (num != 0);
}
// Token: 0x0600CEBD RID: 52925 RVA: 0x0000220F File Offset: 0x0000040F
[Token(Token = "0x600CEBD")]
[Address(RVA = "0xA9F620", Offset = "0xA9E420", VA = "0x180A9F620")]
public static string FindBest(List<string> authHeaders)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x0600CEBE RID: 52926 RVA: 0x002F9DCC File Offset: 0x002F7FCC
// Note: this type is marked as 'beforefieldinit'.
[Token(Token = "0x600CEBE")]
[Address(RVA = "0xA9FDE0", Offset = "0xA9EBE0", VA = "0x180A9FDE0")]
static DigestStore()
{
string[] array = new string[2];
if ("digest" != 0)
{
}
array[0] = "digest";
if ("basic" != 0)
{
}
array[1] = "basic";
DigestStore.SupportedAlgorithms = array;
}
// Token: 0x04008423 RID: 33827
[Token(Token = "0x4008423")]
private static Dictionary<string, Digest> Digests = new Dictionary();
// Token: 0x04008424 RID: 33828
[Token(Token = "0x4008424")]
private static object Locker = new object();
// Token: 0x04008425 RID: 33829
[Token(Token = "0x4008425")]
private static string[] SupportedAlgorithms;
}
}