269 lines
6.5 KiB
C#
269 lines
6.5 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Runtime.InteropServices;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Encoders
|
|
{
|
|
// Token: 0x0200136D RID: 4973
|
|
[Token(Token = "0x200136D")]
|
|
[StructLayout(3)]
|
|
public class Base64Encoder : IEncoder
|
|
{
|
|
// Token: 0x06007DD1 RID: 32209 RVA: 0x001A6878 File Offset: 0x001A4A78
|
|
[Token(Token = "0x6007DD1")]
|
|
[Address(RVA = "0x1C5CCE0", Offset = "0x1C5B6E0", VA = "0x181C5CCE0")]
|
|
protected void InitialiseDecodingTable()
|
|
{
|
|
int num = this.decodingTable.Length;
|
|
if (num > 0)
|
|
{
|
|
num--;
|
|
}
|
|
byte[] array = this.encodingTable;
|
|
int num2 = 0;
|
|
if (num2 < array.Length)
|
|
{
|
|
byte[] array2 = this.decodingTable;
|
|
num2++;
|
|
byte[] array3 = this.encodingTable;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06007DD2 RID: 32210 RVA: 0x001A68C4 File Offset: 0x001A4AC4
|
|
[Token(Token = "0x6007DD2")]
|
|
[Address(RVA = "0x1C5CDF0", Offset = "0x1C5B7F0", VA = "0x181C5CDF0")]
|
|
public Base64Encoder()
|
|
{
|
|
byte[] array = new byte[64];
|
|
RuntimeHelpers.InitializeArray(array, fieldof(<PrivateImplementationDetails>.0953DF544832295E4A5B19928F95C351F25DA86A).FieldHandle);
|
|
this.encodingTable = array;
|
|
this.padding = (byte)((ulong)61L);
|
|
byte[] array2 = new byte[128];
|
|
this.decodingTable = array2;
|
|
base..ctor();
|
|
int num = this.decodingTable.Length;
|
|
if (num > 0)
|
|
{
|
|
num--;
|
|
}
|
|
byte[] array3 = this.encodingTable;
|
|
int num2 = 0;
|
|
if (num2 < array3.Length)
|
|
{
|
|
byte[] array4 = this.decodingTable;
|
|
num2++;
|
|
byte[] array5 = this.encodingTable;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06007DD3 RID: 32211 RVA: 0x001A6954 File Offset: 0x001A4B54
|
|
[Token(Token = "0x6007DD3")]
|
|
[Address(RVA = "0x1C5C850", Offset = "0x1C5B250", VA = "0x181C5C850", Slot = "4")]
|
|
public int Encode(byte[] data, int off, int length, Stream outStream)
|
|
{
|
|
int length2 = data.Length;
|
|
int num = off + 1;
|
|
byte b = data[num];
|
|
byte[] array = this.encodingTable;
|
|
byte[] array2 = this.encodingTable;
|
|
byte[] array3 = this.encodingTable;
|
|
byte[] array4 = this.encodingTable;
|
|
byte b2;
|
|
if (length != 0)
|
|
{
|
|
if (length == 0)
|
|
{
|
|
goto IL_70;
|
|
}
|
|
if (length == 1)
|
|
{
|
|
int length3 = data.Length;
|
|
byte[] array5 = this.encodingTable;
|
|
byte[] array6 = this.encodingTable;
|
|
byte[] array7 = this.encodingTable;
|
|
b2 = this.padding;
|
|
}
|
|
}
|
|
b2 += b2;
|
|
IL_70:
|
|
byte[] array8 = this.encodingTable;
|
|
byte[] array9 = this.encodingTable;
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06007DD4 RID: 32212 RVA: 0x001A69E8 File Offset: 0x001A4BE8
|
|
[Token(Token = "0x6007DD4")]
|
|
[Address(RVA = "0x1C5D360", Offset = "0x1C5BD60", VA = "0x181C5D360")]
|
|
private bool ignore(char c)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
// Token: 0x06007DD5 RID: 32213 RVA: 0x001A69F8 File Offset: 0x001A4BF8
|
|
[Token(Token = "0x6007DD5")]
|
|
[Address(RVA = "0x1C5C340", Offset = "0x1C5AD40", VA = "0x181C5C340", Slot = "5")]
|
|
public int Decode(byte[] data, int off, int length, Stream outStream)
|
|
{
|
|
int num = 0;
|
|
if (off >= length || off == 250)
|
|
{
|
|
}
|
|
if (off < length)
|
|
{
|
|
byte[] array = this.decodingTable;
|
|
int length2 = data.Length;
|
|
int length3 = array.Length;
|
|
if (off >= length || off == 250)
|
|
{
|
|
}
|
|
if (off < length)
|
|
{
|
|
if (off == 250)
|
|
{
|
|
}
|
|
bool flag;
|
|
if (flag)
|
|
{
|
|
}
|
|
}
|
|
if (off < length)
|
|
{
|
|
if (off == 250)
|
|
{
|
|
}
|
|
bool flag2;
|
|
if (flag2)
|
|
{
|
|
}
|
|
}
|
|
num += 3;
|
|
if (off < length)
|
|
{
|
|
int length4 = data.Length;
|
|
if (off == 250)
|
|
{
|
|
}
|
|
if (off < length)
|
|
{
|
|
}
|
|
}
|
|
}
|
|
int length5 = data.Length;
|
|
int num2;
|
|
num2 += num;
|
|
return num2;
|
|
}
|
|
|
|
// Token: 0x06007DD6 RID: 32214 RVA: 0x001A6A94 File Offset: 0x001A4C94
|
|
[Token(Token = "0x6007DD6")]
|
|
[Address(RVA = "0x1C5D380", Offset = "0x1C5BD80", VA = "0x181C5D380")]
|
|
private int nextI(byte[] data, int i, int finish)
|
|
{
|
|
if (i >= finish || i == 250)
|
|
{
|
|
}
|
|
return i;
|
|
}
|
|
|
|
// Token: 0x06007DD7 RID: 32215 RVA: 0x001A6AB4 File Offset: 0x001A4CB4
|
|
[Token(Token = "0x6007DD7")]
|
|
[Address(RVA = "0x1C5BF80", Offset = "0x1C5A980", VA = "0x181C5BF80", Slot = "6")]
|
|
public int DecodeString(string data, Stream outStream)
|
|
{
|
|
int num = 0;
|
|
int num2 = data.m_stringLength;
|
|
uint num4;
|
|
if (num2 > 0)
|
|
{
|
|
int num3 = num2 - 1;
|
|
char c = data[num3];
|
|
if (num4 == data)
|
|
{
|
|
}
|
|
num2 = num3;
|
|
}
|
|
int num5 = 0;
|
|
int num6 = this.nextI(data, num5, (int)num4);
|
|
if (num6 < (int)num4)
|
|
{
|
|
byte[] array = this.decodingTable;
|
|
char c2 = data[num6];
|
|
int num7 = num6 + 1;
|
|
int num8 = this.nextI(data, num7, (int)num4);
|
|
byte[] array2 = this.decodingTable;
|
|
char c3 = data[num8];
|
|
int num9 = num8 + 1;
|
|
int num10 = this.nextI(data, num9, (int)num4);
|
|
byte[] array3 = this.decodingTable;
|
|
char c4 = data[num10];
|
|
int num11 = num10 + 1;
|
|
int num12 = this.nextI(data, num11, (int)num4);
|
|
byte[] array4 = this.decodingTable;
|
|
num10 = num12;
|
|
char c5 = data[num12];
|
|
int num13 = num10 + 1;
|
|
if (num13 < (int)num4)
|
|
{
|
|
char c6 = data[num13];
|
|
uint num14;
|
|
if (num14 == data)
|
|
{
|
|
}
|
|
num13++;
|
|
}
|
|
}
|
|
char c7 = data[(int)num4];
|
|
char c8 = data[(int)num4];
|
|
char c9 = data[(int)num4];
|
|
int num15 = num2 - 1;
|
|
char c10 = data[num15];
|
|
int num16;
|
|
num16 += num;
|
|
return num16;
|
|
}
|
|
|
|
// Token: 0x06007DD8 RID: 32216 RVA: 0x001A6BE4 File Offset: 0x001A4DE4
|
|
[Token(Token = "0x6007DD8")]
|
|
[Address(RVA = "0x1C5CF60", Offset = "0x1C5B960", VA = "0x181C5CF60")]
|
|
private int decodeLastBlock(Stream outStream, char c1, char c2, char c3, char c4)
|
|
{
|
|
byte b = this.padding;
|
|
byte[] array = this.decodingTable;
|
|
int length = array.Length;
|
|
return 3;
|
|
}
|
|
|
|
// Token: 0x06007DD9 RID: 32217 RVA: 0x001A6C28 File Offset: 0x001A4E28
|
|
[Token(Token = "0x6007DD9")]
|
|
[Address(RVA = "0x1C5D3E0", Offset = "0x1C5BDE0", VA = "0x181C5D3E0")]
|
|
private int nextI(string data, int i, int finish)
|
|
{
|
|
if (i < finish)
|
|
{
|
|
char c = data[i];
|
|
if ((uint)65530 == data)
|
|
{
|
|
}
|
|
}
|
|
return i;
|
|
}
|
|
|
|
// Token: 0x04005A3D RID: 23101
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x4005A3D")]
|
|
protected readonly byte[] encodingTable;
|
|
|
|
// Token: 0x04005A3E RID: 23102
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x4005A3E")]
|
|
protected byte padding;
|
|
|
|
// Token: 0x04005A3F RID: 23103
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x4005A3F")]
|
|
protected readonly byte[] decodingTable;
|
|
}
|
|
}
|