using System; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Macs; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities; using BestHTTP.SecureProtocol.Org.BouncyCastle.Security; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using Cpp2IlInjected; using Hjg.Pngcs; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls { // Token: 0x02001BEA RID: 7146 [Token(Token = "0x2001BEA")] public class Chacha20Poly1305 : TlsCipher { // Token: 0x0600AFF9 RID: 45049 RVA: 0x00260888 File Offset: 0x0025EA88 [Token(Token = "0x600AFF9")] [Address(RVA = "0x2332570", Offset = "0x2331570", VA = "0x182332570")] public Chacha20Poly1305(TlsContext context) { do { base..ctor(); } while (!TlsUtilities.IsTlsV12(context)); this.context = context; byte[] array = TlsUtilities.CalculateKeyBlock(context, 88); int num; KeyParameter keyParameter = new KeyParameter(array, num, 32); num = 0; KeyParameter keyParameter2 = new KeyParameter(array, 32, 32); byte[] array2 = Arrays.CopyOfRange(array, 64, 76); byte[] array3 = Arrays.CopyOfRange(array, 76, 88); ChaCha7539Engine chaCha7539Engine = new ChaCha7539Engine(); this.encryptCipher = chaCha7539Engine; ChaCha7539Engine chaCha7539Engine2 = new ChaCha7539Engine(); this.decryptCipher = chaCha7539Engine2; if (chaCha7539Engine2 == 0) { } this.encryptIV = array3; this.decryptIV = array2; ChaCha7539Engine chaCha7539Engine3 = this.encryptCipher; byte[] array4 = this.encryptIV; ParametersWithIV parametersWithIV = new ParametersWithIV(keyParameter2, array4); chaCha7539Engine3.Reset(); ChaCha7539Engine chaCha7539Engine4 = this.decryptCipher; byte[] array5 = this.decryptIV; ParametersWithIV parametersWithIV2 = new ParametersWithIV(keyParameter, array5); string algorithmName = ((IStreamCipher)chaCha7539Engine4).AlgorithmName; } // Token: 0x0600AFFA RID: 45050 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x600AFFA")] [Address(RVA = "0x23322C0", Offset = "0x23312C0", VA = "0x1823322C0", Slot = "7")] public virtual int GetPlaintextLimit(int ciphertextLimit) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x0600AFFB RID: 45051 RVA: 0x00260960 File Offset: 0x0025EB60 [Token(Token = "0x600AFFB")] [Address(RVA = "0x2331EF0", Offset = "0x2330EF0", VA = "0x182331EF0", Slot = "8")] public virtual byte[] EncodePlaintext(long seqNo, byte type, byte[] plaintext, int offset, int len) { byte[] array = this.encryptIV; byte[] array2 = new byte[this.encryptCipher]; this.encryptCipher.AdvanceCounter(); return array2; } // Token: 0x0600AFFC RID: 45052 RVA: 0x00260994 File Offset: 0x0025EB94 [Token(Token = "0x600AFFC")] [Address(RVA = "0x2331CE0", Offset = "0x2330CE0", VA = "0x182331CE0", Slot = "9")] public virtual byte[] DecodeCiphertext(long seqNo, byte type, byte[] ciphertext, int offset, int len) { bool flag; do { byte[] array = this.decryptIV; } while (!flag); byte[] array3; byte[] array2 = new byte[array3]; this.decryptCipher.AdvanceCounter(); return array2; } // Token: 0x0600AFFD RID: 45053 RVA: 0x002609C4 File Offset: 0x0025EBC4 [Token(Token = "0x600AFFD")] [Address(RVA = "0x23322D0", Offset = "0x23312D0", VA = "0x1823322D0", Slot = "10")] protected virtual KeyParameter InitRecord(IStreamCipher cipher, bool forEncryption, long seqNo, byte[] iv) { throw new NullReferenceException(); } // Token: 0x0600AFFE RID: 45054 RVA: 0x002609D8 File Offset: 0x0025EBD8 [Token(Token = "0x600AFFE")] [Address(RVA = "0x2331AB0", Offset = "0x2330AB0", VA = "0x182331AB0", Slot = "11")] protected virtual byte[] CalculateNonce(long seqNo, byte[] iv) { byte[] array = new byte[12]; TlsUtilities.WriteUint64(seqNo, array, 4); int num = 0; num++; return array; } // Token: 0x0600AFFF RID: 45055 RVA: 0x00260A04 File Offset: 0x0025EC04 [Token(Token = "0x600AFFF")] [Address(RVA = "0x2332060", Offset = "0x2331060", VA = "0x182332060", Slot = "12")] protected virtual KeyParameter GenerateRecordMacKey(IStreamCipher cipher) { byte[] array = new byte[64]; int num = 0; num += num; num++; int num2; uint num3; KeyParameter keyParameter = new KeyParameter(array, num2, (int)num3); num2 = 0; int num4 = 0; Arrays.Fill(array, (byte)num4); return keyParameter; } // Token: 0x0600B000 RID: 45056 RVA: 0x00260A4C File Offset: 0x0025EC4C [Token(Token = "0x600B000")] [Address(RVA = "0x2331B90", Offset = "0x2330B90", VA = "0x182331B90", Slot = "13")] protected virtual byte[] CalculateRecordMac(KeyParameter macKey, byte[] additionalData, byte[] buf, int off, int len) { Poly1305 poly = new Poly1305(); int length = additionalData.Length; return MacUtilities.DoFinal(poly); } // Token: 0x0600B001 RID: 45057 RVA: 0x00260A74 File Offset: 0x0025EC74 [Token(Token = "0x600B001")] [Address(RVA = "0x23323B0", Offset = "0x23313B0", VA = "0x1823323B0", Slot = "14")] protected virtual void UpdateRecordMacLength(IMac mac, int len) { int length = Pack.UInt64_To_LE((ulong)len).Length; } // Token: 0x0600B002 RID: 45058 RVA: 0x00260A94 File Offset: 0x0025EC94 [Token(Token = "0x600B002")] [Address(RVA = "0x2332430", Offset = "0x2331430", VA = "0x182332430", Slot = "15")] protected virtual void UpdateRecordMacText(IMac mac, byte[] buf, int off, int len) { if (mac < 0) { } } // Token: 0x0600B003 RID: 45059 RVA: 0x00260AAC File Offset: 0x0025ECAC [Token(Token = "0x600B003")] [Address(RVA = "0x23321C0", Offset = "0x23311C0", VA = "0x1823321C0", Slot = "16")] protected virtual byte[] GetAdditionalData(long seqNo, byte type, int len) { byte[] array = new byte[13]; int num = 0; TlsUtilities.WriteUint64(seqNo, array, num); TlsUtilities.WriteUint8(type, array, 8); TlsContext tlsContext = this.context; PngHelperInternal.WriteInt2tobytes(len, array, 11); return array; } // Token: 0x04006ED0 RID: 28368 [Token(Token = "0x4006ED0")] private static readonly byte[] Zeroes = new byte[15]; // Token: 0x04006ED1 RID: 28369 [FieldOffset(Offset = "0x10")] [Token(Token = "0x4006ED1")] protected readonly TlsContext context; // Token: 0x04006ED2 RID: 28370 [FieldOffset(Offset = "0x18")] [Token(Token = "0x4006ED2")] protected readonly ChaCha7539Engine encryptCipher; // Token: 0x04006ED3 RID: 28371 [FieldOffset(Offset = "0x20")] [Token(Token = "0x4006ED3")] protected readonly ChaCha7539Engine decryptCipher; // Token: 0x04006ED4 RID: 28372 [FieldOffset(Offset = "0x28")] [Token(Token = "0x4006ED4")] protected readonly byte[] encryptIV; // Token: 0x04006ED5 RID: 28373 [FieldOffset(Offset = "0x30")] [Token(Token = "0x4006ED5")] protected readonly byte[] decryptIV; } }