using System; using System.Collections; using System.Runtime.InteropServices; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests { // Token: 0x02001720 RID: 5920 [Token(Token = "0x2001720")] [StructLayout(3)] public class SkeinDigest : IDigest, IMemoable { // Token: 0x06009FF1 RID: 40945 RVA: 0x00251274 File Offset: 0x0024F474 [Token(Token = "0x6009FF1")] [Address(RVA = "0x2251A60", Offset = "0x2250460", VA = "0x182251A60")] public SkeinDigest(int stateSizeBits, int digestSizeBits) { SkeinEngine skeinEngine = new SkeinEngine(stateSizeBits, digestSizeBits); this.engine = skeinEngine; int num = 0; skeinEngine.chain = num; skeinEngine.key = num; skeinEngine.preMessageParameters = num; skeinEngine.postMessageParameters = num; skeinEngine.CreateInitialState(); skeinEngine.ubi.Reset(48); } // Token: 0x06009FF2 RID: 40946 RVA: 0x002512D0 File Offset: 0x0024F4D0 [Token(Token = "0x6009FF2")] [Address(RVA = "0x22519A0", Offset = "0x22503A0", VA = "0x1822519A0")] public SkeinDigest(SkeinDigest digest) { SkeinEngine skeinEngine = digest.engine; bool isPartialBlockOkay = skeinEngine.threefish.IsPartialBlockOkay; SkeinEngine skeinEngine2; skeinEngine2.CopyIn(skeinEngine); this.engine = skeinEngine2; } // Token: 0x06009FF3 RID: 40947 RVA: 0x0025130C File Offset: 0x0024F50C [Token(Token = "0x6009FF3")] [Address(RVA = "0x22517A0", Offset = "0x22501A0", VA = "0x1822517A0", Slot = "12")] public void Reset(IMemoable other) { int num; SkeinEngine skeinEngine; for (;;) { num = 0; if (other != 0) { skeinEngine = this.engine; if (other == 0 || other != 0) { ThreefishEngine threefish = skeinEngine.threefish; bool isPartialBlockOkay = threefish.IsPartialBlockOkay; bool isPartialBlockOkay2 = threefish.IsPartialBlockOkay; if (isPartialBlockOkay == isPartialBlockOkay2 && skeinEngine.outputSizeBytes == (isPartialBlockOkay2 ? 1 : 0)) { break; } } } } skeinEngine.CopyIn(num); } // Token: 0x06009FF4 RID: 40948 RVA: 0x0025136C File Offset: 0x0024F56C [Token(Token = "0x6009FF4")] [Address(RVA = "0x2251550", Offset = "0x224FF50", VA = "0x182251550", Slot = "11")] public IMemoable Copy() { SkeinEngine skeinEngine = this.engine; bool isPartialBlockOkay = skeinEngine.threefish.IsPartialBlockOkay; SkeinEngine skeinEngine2; skeinEngine2.CopyIn(skeinEngine); SkeinDigest skeinDigest; skeinDigest.engine = skeinEngine2; throw new NullReferenceException(); } // Token: 0x17001924 RID: 6436 // (get) Token: 0x06009FF5 RID: 40949 RVA: 0x002513A0 File Offset: 0x0024F5A0 [Token(Token = "0x17001924")] public string AlgorithmName { [Token(Token = "0x6009FF5")] [Address(RVA = "0x2251B30", Offset = "0x2250530", VA = "0x182251B30", Slot = "4")] get { object[] array = new object[4]; if ("Skein-" != 0) { } array[0] = "Skein-"; bool isPartialBlockOkay = this.engine.threefish.IsPartialBlockOkay; if (isPartialBlockOkay) { } array[1] = isPartialBlockOkay; if ("-" != 0) { } array[2] = "-"; int outputSizeBytes = this.engine.outputSizeBytes; if (outputSizeBytes != 0) { } array[3] = outputSizeBytes; return string.Concat(array); } } // Token: 0x06009FF6 RID: 40950 RVA: 0x00251420 File Offset: 0x0024F620 [Token(Token = "0x6009FF6")] [Address(RVA = "0x5FE710", Offset = "0x5FD110", VA = "0x1805FE710", Slot = "5")] public int GetDigestSize() { return this.engine.outputSizeBytes; } // Token: 0x06009FF7 RID: 40951 RVA: 0x00251440 File Offset: 0x0024F640 [Token(Token = "0x6009FF7")] [Address(RVA = "0x2251630", Offset = "0x2250030", VA = "0x182251630", Slot = "6")] public int GetByteLength() { string algorithmName = ((IBlockCipher)this.engine.threefish).AlgorithmName; throw new NullReferenceException(); } // Token: 0x06009FF8 RID: 40952 RVA: 0x00251464 File Offset: 0x0024F664 [Token(Token = "0x6009FF8")] [Address(RVA = "0x2251670", Offset = "0x2250070", VA = "0x182251670")] public void Init(SkeinParameters parameters) { SkeinEngine skeinEngine = this.engine; int num = 0; skeinEngine.chain = num; skeinEngine.key = num; skeinEngine.preMessageParameters = num; skeinEngine.postMessageParameters = num; if (parameters != 0) { byte[] key = parameters.GetKey(); IDictionary parameters2 = parameters.parameters; skeinEngine.InitParams(parameters2); } skeinEngine.CreateInitialState(); skeinEngine.ubi.Reset(48); } // Token: 0x06009FF9 RID: 40953 RVA: 0x002514C8 File Offset: 0x0024F6C8 [Token(Token = "0x6009FF9")] [Address(RVA = "0x2251740", Offset = "0x2250140", VA = "0x182251740", Slot = "10")] public void Reset() { SkeinEngine skeinEngine = this.engine; ulong[] chain = skeinEngine.chain; int length = chain.Length; int num = 0; ulong[] initialState = skeinEngine.initialState; int num2 = 0; Array.Copy(initialState, num2, chain, num, length); skeinEngine.ubi.Reset(48); } // Token: 0x06009FFA RID: 40954 RVA: 0x00251518 File Offset: 0x0024F718 [Token(Token = "0x6009FFA")] [Address(RVA = "0x2251940", Offset = "0x2250340", VA = "0x182251940", Slot = "7")] public void Update(byte inByte) { SkeinEngine skeinEngine = this.engine; skeinEngine.singleByte[0] = inByte; byte[] singleByte = skeinEngine.singleByte; int num = 0; skeinEngine.Update(singleByte, num, 1); } // Token: 0x06009FFB RID: 40955 RVA: 0x00251554 File Offset: 0x0024F754 [Token(Token = "0x6009FFB")] [Address(RVA = "0x20F8EE0", Offset = "0x20F78E0", VA = "0x1820F8EE0", Slot = "8")] public void BlockUpdate(byte[] inBytes, int inOff, int len) { this.engine.Update(inBytes, inOff, len); } // Token: 0x06009FFC RID: 40956 RVA: 0x00251578 File Offset: 0x0024F778 [Token(Token = "0x6009FFC")] [Address(RVA = "0x20F8F10", Offset = "0x20F7910", VA = "0x1820F8F10", Slot = "9")] public int DoFinal(byte[] outBytes, int outOff) { return this.engine.DoFinal(outBytes, outOff); } // Token: 0x04006901 RID: 26881 [Token(Token = "0x4006901")] public const int SKEIN_256 = 256; // Token: 0x04006902 RID: 26882 [Token(Token = "0x4006902")] public const int SKEIN_512 = 512; // Token: 0x04006903 RID: 26883 [Token(Token = "0x4006903")] public const int SKEIN_1024 = 1024; // Token: 0x04006904 RID: 26884 [global::Cpp2IlInjected.FieldOffset(Offset = "0x10")] [Token(Token = "0x4006904")] private readonly SkeinEngine engine; } }