using System; using System.Runtime.InteropServices; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Macs; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters; using BestHTTP.SecureProtocol.Org.BouncyCastle.Security; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls { // Token: 0x020015A2 RID: 5538 [Token(Token = "0x20015A2")] [StructLayout(3)] public class TlsMac { // Token: 0x06009354 RID: 37716 RVA: 0x00209E14 File Offset: 0x00208014 [Token(Token = "0x6009354")] [Address(RVA = "0x1DFDF30", Offset = "0x1DFC930", VA = "0x181DFDF30")] public TlsMac(TlsContext context, IDigest digest, byte[] key, int keyOff, int keyLen) { this.context = context; KeyParameter keyParameter; byte[] array = Arrays.Clone(keyParameter.GetKey()); this.secret = array; if (digest != 0) { } this.digestBlockSize = (int)((uint)128); this.digestOverhead = (int)((uint)16); bool flag; if (!flag) { HMac hmac = new HMac(digest); this.mac = hmac; } Ssl3Mac ssl3Mac = new Ssl3Mac(digest); this.mac = ssl3Mac; if (ssl3Mac == (ulong)20L) { this.digestOverhead = (int)((ulong)4L); } IMac mac = this.mac; IMac mac2 = this.mac; this.macLength = ssl3Mac; int num = Math.Min(this.macLength, 10); this.macLength = num; } // Token: 0x170017B6 RID: 6070 // (get) Token: 0x06009355 RID: 37717 RVA: 0x00209ECC File Offset: 0x002080CC [Token(Token = "0x170017B6")] public virtual byte[] MacSecret { [Token(Token = "0x6009355")] [Address(RVA = "0x3C1240", Offset = "0x3BFC40", VA = "0x1803C1240", Slot = "4")] get { return this.secret; } } // Token: 0x170017B7 RID: 6071 // (get) Token: 0x06009356 RID: 37718 RVA: 0x00209EE0 File Offset: 0x002080E0 [Token(Token = "0x170017B7")] public virtual int Size { [Token(Token = "0x6009356")] [Address(RVA = "0x3EDF60", Offset = "0x3EC960", VA = "0x1803EDF60", Slot = "5")] get { return this.macLength; } } // Token: 0x06009357 RID: 37719 RVA: 0x00209EF4 File Offset: 0x002080F4 [Token(Token = "0x6009357")] [Address(RVA = "0x1DFDC30", Offset = "0x1DFC630", VA = "0x181DFDC30", Slot = "6")] public virtual byte[] CalculateMac(long seqNo, byte type, byte[] message, int offset, int length) { TlsContext tlsContext = this.context; bool flag; if (flag) { } int num = 0; byte[] array = new byte[13]; int num2 = 0; TlsUtilities.WriteUint64(seqNo, array, num2); array[1] = type; if (num == 0) { } int length2 = array.Length; IMac mac = this.mac; int length3 = array.Length; IMac mac2 = this.mac; return MacUtilities.DoFinal(this.mac); } // Token: 0x06009358 RID: 37720 RVA: 0x00209F60 File Offset: 0x00208160 [Token(Token = "0x6009358")] [Address(RVA = "0x1DFD9C0", Offset = "0x1DFC3C0", VA = "0x181DFD9C0", Slot = "7")] public virtual byte[] CalculateMacConstantTime(long seqNo, byte type, byte[] message, int offset, int length, int fullLength, byte[] dummyData) { int size = this.Size; TlsContext tlsContext = this.context; byte[] array; byte[] array2; array -= array2; int num = 0; IMac mac = this.mac; num += num; num++; IMac mac2 = this.mac; num += 4; num += 19; IMac mac3 = this.mac; throw new NullReferenceException(); } // Token: 0x06009359 RID: 37721 RVA: 0x00209FBC File Offset: 0x002081BC [Token(Token = "0x6009359")] [Address(RVA = "0x1DFDE90", Offset = "0x1DFC890", VA = "0x181DFDE90", Slot = "8")] protected virtual int GetDigestBlockCount(int inputLength) { int num = this.digestOverhead; return num + inputLength; } // Token: 0x0600935A RID: 37722 RVA: 0x00209FD8 File Offset: 0x002081D8 [Token(Token = "0x600935A")] [Address(RVA = "0x1DFDEA0", Offset = "0x1DFC8A0", VA = "0x181DFDEA0", Slot = "9")] protected virtual byte[] Truncate(byte[] bs) { int num = this.macLength; if (bs.Length > num) { return Arrays.CopyOf(bs, num); } return bs; } // Token: 0x040061DA RID: 25050 [global::Cpp2IlInjected.FieldOffset(Offset = "0x10")] [Token(Token = "0x40061DA")] protected readonly TlsContext context; // Token: 0x040061DB RID: 25051 [global::Cpp2IlInjected.FieldOffset(Offset = "0x18")] [Token(Token = "0x40061DB")] protected readonly byte[] secret; // Token: 0x040061DC RID: 25052 [global::Cpp2IlInjected.FieldOffset(Offset = "0x20")] [Token(Token = "0x40061DC")] protected readonly IMac mac; // Token: 0x040061DD RID: 25053 [global::Cpp2IlInjected.FieldOffset(Offset = "0x28")] [Token(Token = "0x40061DD")] protected readonly int digestBlockSize; // Token: 0x040061DE RID: 25054 [global::Cpp2IlInjected.FieldOffset(Offset = "0x2C")] [Token(Token = "0x40061DE")] protected readonly int digestOverhead; // Token: 0x040061DF RID: 25055 [global::Cpp2IlInjected.FieldOffset(Offset = "0x30")] [Token(Token = "0x40061DF")] protected readonly int macLength; } }