168 lines
4.8 KiB
C#
168 lines
4.8 KiB
C#
using System;
|
|
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: 0x02001C5F RID: 7263
|
|
[Token(Token = "0x2001C5F")]
|
|
public class TlsMac
|
|
{
|
|
// Token: 0x0600B2FC RID: 45820 RVA: 0x0026A66C File Offset: 0x0026886C
|
|
[Token(Token = "0x600B2FC")]
|
|
[Address(RVA = "0x4A9CB0", Offset = "0x4A8CB0", VA = "0x1804A9CB0")]
|
|
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);
|
|
if (!TlsUtilities.IsSsl(context))
|
|
{
|
|
HMac hmac = new HMac(digest);
|
|
this.mac = hmac;
|
|
}
|
|
Ssl3Mac ssl3Mac;
|
|
ssl3Mac.digest = digest;
|
|
ssl3Mac.padLength = (int)((uint)48);
|
|
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: 0x17001C54 RID: 7252
|
|
// (get) Token: 0x0600B2FD RID: 45821 RVA: 0x0026A730 File Offset: 0x00268930
|
|
[Token(Token = "0x17001C54")]
|
|
public virtual byte[] MacSecret
|
|
{
|
|
[Token(Token = "0x600B2FD")]
|
|
[Address(RVA = "0x4157B0", Offset = "0x4147B0", VA = "0x1804157B0", Slot = "4")]
|
|
get
|
|
{
|
|
return this.secret;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17001C55 RID: 7253
|
|
// (get) Token: 0x0600B2FE RID: 45822 RVA: 0x0026A744 File Offset: 0x00268944
|
|
[Token(Token = "0x17001C55")]
|
|
public virtual int Size
|
|
{
|
|
[Token(Token = "0x600B2FE")]
|
|
[Address(RVA = "0x4257C0", Offset = "0x4247C0", VA = "0x1804257C0", Slot = "5")]
|
|
get
|
|
{
|
|
return this.macLength;
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600B2FF RID: 45823 RVA: 0x0026A758 File Offset: 0x00268958
|
|
[Token(Token = "0x600B2FF")]
|
|
[Address(RVA = "0x4A99B0", Offset = "0x4A89B0", VA = "0x1804A99B0", Slot = "6")]
|
|
public virtual byte[] CalculateMac(long seqNo, byte type, byte[] message, int offset, int length)
|
|
{
|
|
TlsContext tlsContext = this.context;
|
|
byte[] array = new byte[11];
|
|
int num = 0;
|
|
TlsUtilities.WriteUint64(seqNo, array, num);
|
|
TlsUtilities.WriteUint8(type, array, 8);
|
|
bool flag;
|
|
if (!flag)
|
|
{
|
|
}
|
|
IMac mac = this.mac;
|
|
int length2 = array.Length;
|
|
IMac mac2 = this.mac;
|
|
return MacUtilities.DoFinal(this.mac);
|
|
}
|
|
|
|
// Token: 0x0600B300 RID: 45824 RVA: 0x0026A7B8 File Offset: 0x002689B8
|
|
[Token(Token = "0x600B300")]
|
|
[Address(RVA = "0x4A9780", Offset = "0x4A8780", VA = "0x1804A9780", Slot = "7")]
|
|
public virtual byte[] CalculateMacConstantTime(long seqNo, byte type, byte[] message, int offset, int length, int fullLength, byte[] dummyData)
|
|
{
|
|
int size = this.Size;
|
|
bool flag = TlsUtilities.IsSsl(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: 0x0600B301 RID: 45825 RVA: 0x0026A818 File Offset: 0x00268A18
|
|
[Token(Token = "0x600B301")]
|
|
[Address(RVA = "0x4A9C10", Offset = "0x4A8C10", VA = "0x1804A9C10", Slot = "8")]
|
|
protected virtual int GetDigestBlockCount(int inputLength)
|
|
{
|
|
int num = this.digestOverhead;
|
|
return num + inputLength;
|
|
}
|
|
|
|
// Token: 0x0600B302 RID: 45826 RVA: 0x0026A834 File Offset: 0x00268A34
|
|
[Token(Token = "0x600B302")]
|
|
[Address(RVA = "0x4A9C20", Offset = "0x4A8C20", VA = "0x1804A9C20", Slot = "9")]
|
|
protected virtual byte[] Truncate(byte[] bs)
|
|
{
|
|
int num = this.macLength;
|
|
if (bs.Length > num)
|
|
{
|
|
return Arrays.CopyOf(bs, num);
|
|
}
|
|
return bs;
|
|
}
|
|
|
|
// Token: 0x040071D6 RID: 29142
|
|
[FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x40071D6")]
|
|
protected readonly TlsContext context;
|
|
|
|
// Token: 0x040071D7 RID: 29143
|
|
[FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x40071D7")]
|
|
protected readonly byte[] secret;
|
|
|
|
// Token: 0x040071D8 RID: 29144
|
|
[FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x40071D8")]
|
|
protected readonly IMac mac;
|
|
|
|
// Token: 0x040071D9 RID: 29145
|
|
[FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x40071D9")]
|
|
protected readonly int digestBlockSize;
|
|
|
|
// Token: 0x040071DA RID: 29146
|
|
[FieldOffset(Offset = "0x2C")]
|
|
[Token(Token = "0x40071DA")]
|
|
protected readonly int digestOverhead;
|
|
|
|
// Token: 0x040071DB RID: 29147
|
|
[FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x40071DB")]
|
|
protected readonly int macLength;
|
|
}
|
|
}
|