using System; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Macs { // Token: 0x02001C51 RID: 7249 [Token(Token = "0x2001C51")] public class HMac : IMac { // Token: 0x0600B572 RID: 46450 RVA: 0x0027A428 File Offset: 0x00278628 [Token(Token = "0x600B572")] [Address(RVA = "0x1C286A0", Offset = "0x1C274A0", VA = "0x181C286A0")] public HMac(IDigest digest) { this.digest = digest; byte[] array = new byte[0]; int num = this.digestSize; this.inputPad = array; byte[] array2 = new byte[num]; this.outputBuf = array2; } // Token: 0x17001C92 RID: 7314 // (get) Token: 0x0600B573 RID: 46451 RVA: 0x0027A46C File Offset: 0x0027866C [Token(Token = "0x17001C92")] public virtual string AlgorithmName { [Token(Token = "0x600B573")] [Address(RVA = "0x1C28750", Offset = "0x1C27550", VA = "0x181C28750", Slot = "11")] get { IDigest digest = this.digest; return 0 + "/HMAC"; } } // Token: 0x0600B574 RID: 46452 RVA: 0x0027A494 File Offset: 0x00278694 [Token(Token = "0x600B574")] [Address(RVA = "0x3F6E20", Offset = "0x3F5C20", VA = "0x1803F6E20", Slot = "12")] public virtual IDigest GetUnderlyingDigest() { return this.digest; } // Token: 0x0600B575 RID: 46453 RVA: 0x0027A4A8 File Offset: 0x002786A8 [Token(Token = "0x600B575")] [Address(RVA = "0x1C28160", Offset = "0x1C26F60", VA = "0x181C28160", Slot = "13")] public virtual void Init(ICipherParameters parameters) { int length2; for (;;) { IDigest digest = this.digest; int num = 0; if (parameters != 0 && parameters != 0) { byte[] array; int length = array.Length; byte[] array2 = this.inputPad; int num2 = 0; int num3 = 0; Array.Copy(array, num3, array2, num2, length); IDigest digest2 = this.digest; IDigest digest3 = this.digest; int num4 = this.digestSize; int num5 = this.blockLength; byte[] array3 = this.inputPad; num5 -= num4; Array.Clear(array3, num4, num5); int num6 = this.blockLength; int num7 = 0; byte[] array4 = this.outputBuf; int num8 = 0; Array.Copy(this.inputPad, num8, array4, num7, num6); if (this.blockLength > 0) { byte[] array5 = this.inputPad; num++; if (this.blockLength > 0) { byte[] array6 = this.outputBuf; num++; } if (num != 0) { IDigest digest4 = this.digest; if (num == 0 || num == 0) { continue; } int num9 = this.blockLength; this.opadState = num; if (num == 0 || num == 0) { continue; } } byte[] array7 = this.inputPad; IDigest digest5 = this.digest; length2 = array7.Length; if (length2 == 0) { return; } IDigest digest6 = this.digest; if (length2 != 0 && length2 != 0) { break; } } } } this.ipadState = length2; } // Token: 0x0600B576 RID: 46454 RVA: 0x0027A5FC File Offset: 0x002787FC [Token(Token = "0x600B576")] [Address(RVA = "0x40B720", Offset = "0x40A520", VA = "0x18040B720", Slot = "14")] public virtual int GetMacSize() { return this.digestSize; } // Token: 0x0600B577 RID: 46455 RVA: 0x0027A610 File Offset: 0x00278810 [Token(Token = "0x600B577")] [Address(RVA = "0x1C285F0", Offset = "0x1C273F0", VA = "0x181C285F0", Slot = "15")] public virtual void Update(byte input) { IDigest digest = this.digest; throw new NullReferenceException(); } // Token: 0x0600B578 RID: 46456 RVA: 0x0027A62C File Offset: 0x0027882C [Token(Token = "0x600B578")] [Address(RVA = "0x1C27E90", Offset = "0x1C26C90", VA = "0x181C27E90", Slot = "16")] public virtual void BlockUpdate(byte[] input, int inOff, int len) { IDigest digest = this.digest; } // Token: 0x0600B579 RID: 46457 RVA: 0x0027A648 File Offset: 0x00278848 [Token(Token = "0x600B579")] [Address(RVA = "0x1C27F10", Offset = "0x1C26D10", VA = "0x181C27F10", Slot = "17")] public virtual int DoFinal(byte[] output, int outOff) { int num; int num5; for (;;) { IDigest digest = this.digest; num = this.blockLength; IMemoable memoable = this.opadState; IDigest digest2 = this.digest; if (memoable == 0) { int length = this.outputBuf.Length; } if (num != 0 && num != 0) { IDigest digest3 = this.digest; int num2 = this.blockLength; IDigest digest4 = this.digest; int num3 = this.digestSize; int num4 = this.blockLength; Array.Clear(this.outputBuf, num4, num3); IMemoable memoable2 = this.ipadState; IDigest digest5 = this.digest; if (memoable2 == 0) { break; } if (num5 != 0 && num5 != 0) { goto Block_5; } } } num5 = this.inputPad.Length; num5 = num; return num5; Block_5: throw new NullReferenceException(); } // Token: 0x0600B57A RID: 46458 RVA: 0x0027A700 File Offset: 0x00278900 [Token(Token = "0x600B57A")] [Address(RVA = "0x1C28570", Offset = "0x1C27370", VA = "0x181C28570", Slot = "18")] public virtual void Reset() { IDigest digest = this.digest; byte[] array = this.inputPad; IDigest digest2 = this.digest; int length = array.Length; } // Token: 0x0600B57B RID: 46459 RVA: 0x0027A730 File Offset: 0x00278930 [Token(Token = "0x600B57B")] [Address(RVA = "0x1C28650", Offset = "0x1C27450", VA = "0x181C28650")] private static void XorPad(byte[] pad, int len, byte n) { int num = 0; if (len > 0) { num++; } } // Token: 0x04007318 RID: 29464 [Token(Token = "0x4007318")] private const byte IPAD = 54; // Token: 0x04007319 RID: 29465 [Token(Token = "0x4007319")] private const byte OPAD = 92; // Token: 0x0400731A RID: 29466 [FieldOffset(Offset = "0x10")] [Token(Token = "0x400731A")] private readonly IDigest digest; // Token: 0x0400731B RID: 29467 [FieldOffset(Offset = "0x18")] [Token(Token = "0x400731B")] private readonly int digestSize; // Token: 0x0400731C RID: 29468 [FieldOffset(Offset = "0x1C")] [Token(Token = "0x400731C")] private readonly int blockLength; // Token: 0x0400731D RID: 29469 [FieldOffset(Offset = "0x20")] [Token(Token = "0x400731D")] private IMemoable ipadState; // Token: 0x0400731E RID: 29470 [FieldOffset(Offset = "0x28")] [Token(Token = "0x400731E")] private IMemoable opadState; // Token: 0x0400731F RID: 29471 [FieldOffset(Offset = "0x30")] [Token(Token = "0x400731F")] private readonly byte[] inputPad; // Token: 0x04007320 RID: 29472 [FieldOffset(Offset = "0x38")] [Token(Token = "0x4007320")] private readonly byte[] outputBuf; } }