using System; using System.Collections.Generic; using System.Text; using BestHTTP.Extensions; using Cpp2IlInjected; namespace BestHTTP.Authentication { // Token: 0x020020AA RID: 8362 [Token(Token = "0x20020AA")] public sealed class Digest { // Token: 0x17002185 RID: 8581 // (get) Token: 0x0600D26E RID: 53870 RVA: 0x0030176C File Offset: 0x002FF96C // (set) Token: 0x0600D26F RID: 53871 RVA: 0x00301780 File Offset: 0x002FF980 [Token(Token = "0x17002185")] public Uri Uri { [Token(Token = "0x600D26E")] [Address(RVA = "0x411530", Offset = "0x410530", VA = "0x180411530")] get; [Token(Token = "0x600D26F")] [Address(RVA = "0x415800", Offset = "0x414800", VA = "0x180415800")] private set; } // Token: 0x17002186 RID: 8582 // (get) Token: 0x0600D270 RID: 53872 RVA: 0x00301794 File Offset: 0x002FF994 // (set) Token: 0x0600D271 RID: 53873 RVA: 0x003017A8 File Offset: 0x002FF9A8 [Token(Token = "0x17002186")] public AuthenticationTypes Type { [Token(Token = "0x600D270")] [Address(RVA = "0x411540", Offset = "0x410540", VA = "0x180411540")] get; [Token(Token = "0x600D271")] [Address(RVA = "0x5F1910", Offset = "0x5F0910", VA = "0x1805F1910")] private set; } // Token: 0x17002187 RID: 8583 // (get) Token: 0x0600D272 RID: 53874 RVA: 0x003017BC File Offset: 0x002FF9BC // (set) Token: 0x0600D273 RID: 53875 RVA: 0x003017D0 File Offset: 0x002FF9D0 [Token(Token = "0x17002187")] public string Realm { [Token(Token = "0x600D272")] [Address(RVA = "0x4157C0", Offset = "0x4147C0", VA = "0x1804157C0")] get; [Token(Token = "0x600D273")] [Address(RVA = "0x415810", Offset = "0x414810", VA = "0x180415810")] private set; } // Token: 0x17002188 RID: 8584 // (get) Token: 0x0600D274 RID: 53876 RVA: 0x003017E4 File Offset: 0x002FF9E4 // (set) Token: 0x0600D275 RID: 53877 RVA: 0x003017F8 File Offset: 0x002FF9F8 [Token(Token = "0x17002188")] public bool Stale { [Token(Token = "0x600D274")] [Address(RVA = "0x51F260", Offset = "0x51E260", VA = "0x18051F260")] get; [Token(Token = "0x600D275")] [Address(RVA = "0x51F2B0", Offset = "0x51E2B0", VA = "0x18051F2B0")] private set; } // Token: 0x17002189 RID: 8585 // (get) Token: 0x0600D276 RID: 53878 RVA: 0x0030180C File Offset: 0x002FFA0C // (set) Token: 0x0600D277 RID: 53879 RVA: 0x00301820 File Offset: 0x002FFA20 [Token(Token = "0x17002189")] private string Nonce { [Token(Token = "0x600D276")] [Address(RVA = "0x4157E0", Offset = "0x4147E0", VA = "0x1804157E0")] get; [Token(Token = "0x600D277")] [Address(RVA = "0x415830", Offset = "0x414830", VA = "0x180415830")] set; } // Token: 0x1700218A RID: 8586 // (get) Token: 0x0600D278 RID: 53880 RVA: 0x00301834 File Offset: 0x002FFA34 // (set) Token: 0x0600D279 RID: 53881 RVA: 0x00301848 File Offset: 0x002FFA48 [Token(Token = "0x1700218A")] private string Opaque { [Token(Token = "0x600D278")] [Address(RVA = "0x41CEF0", Offset = "0x41BEF0", VA = "0x18041CEF0")] get; [Token(Token = "0x600D279")] [Address(RVA = "0x41CFF0", Offset = "0x41BFF0", VA = "0x18041CFF0")] set; } // Token: 0x1700218B RID: 8587 // (get) Token: 0x0600D27A RID: 53882 RVA: 0x0030185C File Offset: 0x002FFA5C // (set) Token: 0x0600D27B RID: 53883 RVA: 0x00301870 File Offset: 0x002FFA70 [Token(Token = "0x1700218B")] private string Algorithm { [Token(Token = "0x600D27A")] [Address(RVA = "0x417680", Offset = "0x416680", VA = "0x180417680")] get; [Token(Token = "0x600D27B")] [Address(RVA = "0x417960", Offset = "0x416960", VA = "0x180417960")] set; } // Token: 0x1700218C RID: 8588 // (get) Token: 0x0600D27C RID: 53884 RVA: 0x00301884 File Offset: 0x002FFA84 // (set) Token: 0x0600D27D RID: 53885 RVA: 0x00301898 File Offset: 0x002FFA98 [Token(Token = "0x1700218C")] public List ProtectedUris { [Token(Token = "0x600D27C")] [Address(RVA = "0x4975A0", Offset = "0x4965A0", VA = "0x1804975A0")] get; [Token(Token = "0x600D27D")] [Address(RVA = "0x55BCF0", Offset = "0x55ACF0", VA = "0x18055BCF0")] private set; } // Token: 0x1700218D RID: 8589 // (get) Token: 0x0600D27E RID: 53886 RVA: 0x003018AC File Offset: 0x002FFAAC // (set) Token: 0x0600D27F RID: 53887 RVA: 0x003018C0 File Offset: 0x002FFAC0 [Token(Token = "0x1700218D")] private string QualityOfProtections { [Token(Token = "0x600D27E")] [Address(RVA = "0x4936E0", Offset = "0x4926E0", VA = "0x1804936E0")] get; [Token(Token = "0x600D27F")] [Address(RVA = "0x55BCE0", Offset = "0x55ACE0", VA = "0x18055BCE0")] set; } // Token: 0x1700218E RID: 8590 // (get) Token: 0x0600D280 RID: 53888 RVA: 0x003018D4 File Offset: 0x002FFAD4 // (set) Token: 0x0600D281 RID: 53889 RVA: 0x003018E8 File Offset: 0x002FFAE8 [Token(Token = "0x1700218E")] private int NonceCount { [Token(Token = "0x600D280")] [Address(RVA = "0x56DD20", Offset = "0x56CD20", VA = "0x18056DD20")] get; [Token(Token = "0x600D281")] [Address(RVA = "0x56DEE0", Offset = "0x56CEE0", VA = "0x18056DEE0")] set; } // Token: 0x1700218F RID: 8591 // (get) Token: 0x0600D282 RID: 53890 RVA: 0x003018FC File Offset: 0x002FFAFC // (set) Token: 0x0600D283 RID: 53891 RVA: 0x00301910 File Offset: 0x002FFB10 [Token(Token = "0x1700218F")] private string HA1Sess { [Token(Token = "0x600D282")] [Address(RVA = "0x417720", Offset = "0x416720", VA = "0x180417720")] get; [Token(Token = "0x600D283")] [Address(RVA = "0x417A20", Offset = "0x416A20", VA = "0x180417A20")] set; } // Token: 0x0600D284 RID: 53892 RVA: 0x00301924 File Offset: 0x002FFB24 [Token(Token = "0x600D284")] [Address(RVA = "0x169E7E0", Offset = "0x169D7E0", VA = "0x18169E7E0")] internal Digest(Uri uri) { this.Uri = uri; this.Algorithm = "md5"; } // Token: 0x0600D285 RID: 53893 RVA: 0x0030194C File Offset: 0x002FFB4C [Token(Token = "0x600D285")] [Address(RVA = "0x169E360", Offset = "0x169D360", VA = "0x18169E360")] public void ParseChallange(string header) { int num; do { num = 0; this.k__BackingField = (AuthenticationTypes)num; this.k__BackingField = num != 0; this.k__BackingField = num; this.k__BackingField = num; this.k__BackingField = num; this.k__BackingField = num; List list = this.k__BackingField; if (list != 0) { list.Clear(); } List k__BackingField = new WWWAuthenticateHeaderParser(header).k__BackingField; bool flag; if (flag) { int stringLength = header.m_stringLength; int stringLength2; if (flag > true) { if (flag > true) { if (flag) { while (!flag) { } this.k__BackingField = flag; } if (flag) { while (!flag) { } this.k__BackingField = flag; } while (!flag) { } while (!flag) { } this.k__BackingField = (AuthenticationTypes)((ulong)2L); } if (flag) { while (!flag) { } this.k__BackingField = flag; } while (!flag) { } while (!flag) { } while (flag) { } if (this.k__BackingField == (ulong)0L) { List list2 = new List(); this.k__BackingField = list2; } string text; this.k__BackingField.Add(text); string text2; stringLength2 = text2.m_stringLength; } bool flag2; if (stringLength2 > 474311018) { if (stringLength2 == 1749328254) { while (stringLength2 == 0) { } this.k__BackingField = flag2; } while (!flag2) { } while (!flag2) { } this.k__BackingField = flag2; } if (flag2) { while (!flag2) { } this.k__BackingField = (AuthenticationTypes)((ulong)1L); } while (!flag2) { } while (!flag2) { } this.k__BackingField = flag2; } } while (num != 0); } // Token: 0x0600D286 RID: 53894 RVA: 0x00301ABC File Offset: 0x002FFCBC [Token(Token = "0x600D286")] [Address(RVA = "0x169D440", Offset = "0x169C440", VA = "0x18169D440")] public string GenerateResponseHeader(HTTPRequest request, Credentials credentials, bool isProxy = false) { string text8; string requestPathAndQueryURL; for (;;) { AuthenticationTypes authenticationTypes = this.k__BackingField; if (authenticationTypes == AuthenticationTypes.Basic) { Encoding utf = Encoding.UTF8; string k__BackingField = credentials.k__BackingField; string k__BackingField = credentials.k__BackingField; string text = string.Format("{0}:{1}", k__BackingField, k__BackingField); string text3; string text2 = "Basic " + text3; } if (authenticationTypes != AuthenticationTypes.Digest) { goto IL_492; } int num = this.k__BackingField; num++; this.k__BackingField = num; request.Finalize(); string text4 = this.k__BackingField.ToString("X8"); string text5 = this.k__BackingField.TrimAndLower(); if (string.Equals(text5, "md5")) { string k__BackingField2 = credentials.k__BackingField; string text6 = this.k__BackingField; string k__BackingField2 = credentials.k__BackingField; string text7 = string.Format("{0}:{1}:{2}", k__BackingField2, text6, k__BackingField2).CalculateMD5Hash(); } if (!string.Equals(text5, "md5-sess")) { goto IL_48C; } if (string.IsNullOrEmpty(this.k__BackingField)) { break; } text8 = this.k__BackingField; string text9 = this.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.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 k__BackingField3 = credentials.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.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.k__BackingField; if (text20 != 0) { } array5[1] = text20; string text21 = this.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.k__BackingField; if (text23 == 0) { string text25 = this.k__BackingField; string text26 = text23 + ", opaque=\"" + text25 + "\""; } IL_48C: return string.Empty; IL_492: throw new NullReferenceException(); } // Token: 0x0600D287 RID: 53895 RVA: 0x003020B0 File Offset: 0x003002B0 [Token(Token = "0x600D287")] [Address(RVA = "0x169E250", Offset = "0x169D250", VA = "0x18169E250")] public bool IsUriProtected(Uri uri) { string host = uri.Host; string host2 = this.k__BackingField.Host; if (string.CompareOrdinal(host, host2) == 0) { int hashCode = uri.GetHashCode(); if (this.k__BackingField != 0) { int num = 0; bool flag; if (!flag) { List list = this.k__BackingField; num++; } } return true; } throw new NullReferenceException(); } } }