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 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.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: 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.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: 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.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(); } } }