217 lines
6.7 KiB
C#
217 lines
6.7 KiB
C#
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;
|
|
}
|
|
}
|