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 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.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; 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.k__BackingField = enumerator; } if (enumerator == (ulong)4178082296L) { while (enumerator == 0) { } this.k__BackingField = enumerator; } while (enumerator != (ulong)4179908061L) { } while (enumerator == 0) { } this.k__BackingField = (AuthenticationTypes)((ulong)2L); } if (enumerator == (ulong)1914854288L) { while (enumerator == 0) { } this.k__BackingField = enumerator; } while (enumerator != (ulong)3885209585L) { } while (enumerator == 0) { } while (enumerator != 0) { } 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 flag; if (stringLength2 > 474311018) { if (stringLength2 == 1749328254) { while (stringLength2 == 0) { } this.k__BackingField = flag; } while (!flag) { } while (!flag) { } this.k__BackingField = flag; } if (flag) { while (!flag) { } this.k__BackingField = (AuthenticationTypes)((ulong)1L); } while (!flag) { } while (!flag) { } this.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.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_480; } int num = this.k__BackingField; num++; this.k__BackingField = num; request.Finalize(); string text4 = this.k__BackingField.TrimAndLower(); if (string.Equals(text4, "md5")) { string k__BackingField2 = credentials.k__BackingField; string text5 = this.k__BackingField; string k__BackingField2 = credentials.k__BackingField; string text6 = string.Format("{0}:{1}:{2}", k__BackingField2, text5, k__BackingField2).CalculateMD5Hash(); } if (!string.Equals(text4, "md5-sess")) { goto IL_47A; } if (string.IsNullOrEmpty(this.k__BackingField)) { break; } text7 = this.k__BackingField; string text8 = this.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.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 k__BackingField3 = credentials.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.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.k__BackingField; if (text19 != 0) { } array5[1] = text19; string text20 = this.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.k__BackingField; if (text22 == 0) { string text24 = this.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.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(); } } }