using System; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests; using BestHTTP.SecureProtocol.Org.BouncyCastle.Security; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Signers { // Token: 0x02001C98 RID: 7320 [Token(Token = "0x2001C98")] public class PssSigner : ISigner { // Token: 0x0600B538 RID: 46392 RVA: 0x00272DD0 File Offset: 0x00270FD0 [Token(Token = "0x600B538")] [Address(RVA = "0x2362F30", Offset = "0x2361F30", VA = "0x182362F30")] public static PssSigner CreateRawSigner(IAsymmetricBlockCipher cipher, IDigest digest) { NullDigest nullDigest = new NullDigest(); PssSigner pssSigner; pssSigner.cipher = cipher; pssSigner.contentDigest1 = nullDigest; pssSigner.contentDigest2 = digest; pssSigner.mgfDigest = digest; pssSigner.hLen = pssSigner; pssSigner.mgfhLen = pssSigner; pssSigner.sLen = nullDigest; pssSigner.sSet = false; byte[] array = new byte[nullDigest]; pssSigner.salt = array; byte[] array2 = new byte[nullDigest]; pssSigner.mDash = array2; pssSigner.trailer = (byte)((ulong)188L); return pssSigner; } // Token: 0x0600B539 RID: 46393 RVA: 0x00272E4C File Offset: 0x0027104C [Token(Token = "0x600B539")] [Address(RVA = "0x2363070", Offset = "0x2362070", VA = "0x182363070")] public static PssSigner CreateRawSigner(IAsymmetricBlockCipher cipher, IDigest contentDigest, IDigest mgfDigest, int saltLen, byte trailer) { NullDigest nullDigest = new NullDigest(); PssSigner pssSigner; pssSigner.cipher = cipher; pssSigner.contentDigest1 = nullDigest; pssSigner.contentDigest2 = contentDigest; pssSigner.mgfDigest = mgfDigest; pssSigner.hLen = pssSigner; pssSigner.mgfhLen = pssSigner; pssSigner.sLen = saltLen; pssSigner.sSet = false; byte[] array = new byte[saltLen]; pssSigner.salt = array; byte[] array2 = new byte[saltLen]; pssSigner.mDash = array2; pssSigner.trailer = 0; return pssSigner; } // Token: 0x0600B53A RID: 46394 RVA: 0x00272EC4 File Offset: 0x002710C4 [Token(Token = "0x600B53A")] [Address(RVA = "0x2364340", Offset = "0x2363340", VA = "0x182364340")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest digest) { } // Token: 0x0600B53B RID: 46395 RVA: 0x00272ED8 File Offset: 0x002710D8 [Token(Token = "0x600B53B")] [Address(RVA = "0x2364310", Offset = "0x2363310", VA = "0x182364310")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest digest, int saltLen) { } // Token: 0x0600B53C RID: 46396 RVA: 0x00272EE8 File Offset: 0x002710E8 [Token(Token = "0x600B53C")] [Address(RVA = "0x23642A0", Offset = "0x23632A0", VA = "0x1823642A0")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest digest, byte[] salt) { int length = salt.Length; } // Token: 0x0600B53D RID: 46397 RVA: 0x00272F04 File Offset: 0x00271104 [Token(Token = "0x600B53D")] [Address(RVA = "0x23642E0", Offset = "0x23632E0", VA = "0x1823642E0")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest contentDigest, IDigest mgfDigest, int saltLen) { } // Token: 0x0600B53E RID: 46398 RVA: 0x00272F14 File Offset: 0x00271114 [Token(Token = "0x600B53E")] [Address(RVA = "0x2364250", Offset = "0x2363250", VA = "0x182364250")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest contentDigest, IDigest mgfDigest, byte[] salt) { } // Token: 0x0600B53F RID: 46399 RVA: 0x00272F28 File Offset: 0x00271128 [Token(Token = "0x600B53F")] [Address(RVA = "0x2364310", Offset = "0x2363310", VA = "0x182364310")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest digest, int saltLen, byte trailer) { } // Token: 0x0600B540 RID: 46400 RVA: 0x00272F38 File Offset: 0x00271138 [Token(Token = "0x600B540")] [Address(RVA = "0x2364160", Offset = "0x2363160", VA = "0x182364160")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest contentDigest, IDigest mgfDigest, int saltLen, byte trailer) { this.cipher = cipher; this.contentDigest1 = contentDigest; this.contentDigest2 = contentDigest; this.mgfDigest = mgfDigest; this.sLen = 0; this.sSet = false; byte[] array = new byte[0]; this.salt = array; byte[] array2 = new byte[0]; this.mDash = array2; this.trailer = 0; } // Token: 0x0600B541 RID: 46401 RVA: 0x00272FA0 File Offset: 0x002711A0 [Token(Token = "0x600B541")] [Address(RVA = "0x23643D0", Offset = "0x23633D0", VA = "0x1823643D0")] private PssSigner(IAsymmetricBlockCipher cipher, IDigest contentDigest1, IDigest contentDigest2, IDigest mgfDigest, int saltLen, byte[] salt, byte trailer) { this.contentDigest1 = contentDigest1; this.mgfDigest = 0; this.cipher = cipher; this.contentDigest2 = contentDigest2; this.sLen = 0; bool flag; this.sSet = flag; byte[] array = new byte[0]; this.salt = 0; byte[] array2 = new byte[0]; this.mDash = array2; this.trailer = 0; } // Token: 0x17001C88 RID: 7304 // (get) Token: 0x0600B542 RID: 46402 RVA: 0x00273008 File Offset: 0x00271208 [Token(Token = "0x17001C88")] public virtual string AlgorithmName { [Token(Token = "0x600B542")] [Address(RVA = "0x23644D0", Offset = "0x23634D0", VA = "0x1823644D0", Slot = "11")] get { IDigest digest = this.mgfDigest; return 0 + "withRSAandMGF1"; } } // Token: 0x0600B543 RID: 46403 RVA: 0x00273030 File Offset: 0x00271230 [Token(Token = "0x600B543")] [Address(RVA = "0x23634F0", Offset = "0x23624F0", VA = "0x1823634F0", Slot = "12")] public virtual void Init(bool forSigning, ICipherParameters parameters) { do { if (parameters != 0 && parameters != 0) { if (parameters == 0) { continue; } this.random = parameters; } if (forSigning) { SecureRandom secureRandom = new SecureRandom(); this.random = secureRandom; } IAsymmetricBlockCipher asymmetricBlockCipher = this.cipher; } while ((parameters == 0 && parameters == 0) || parameters == 0 || parameters == 0); int num = 0; int num3; int num2 = num3 - 1; int num4 = this.sLen; this.emBits = num2; num += num4; byte[] array = new byte[num]; this.block = array; } // Token: 0x0600B544 RID: 46404 RVA: 0x002730C0 File Offset: 0x002712C0 [Token(Token = "0x600B544")] [Address(RVA = "0x2342160", Offset = "0x2341160", VA = "0x182342160")] private void ClearBlock(byte[] block) { int length = block.Length; int num = 0; Array.Clear(block, num, length); } // Token: 0x0600B545 RID: 46405 RVA: 0x002730E4 File Offset: 0x002712E4 [Token(Token = "0x600B545")] [Address(RVA = "0x2363CB0", Offset = "0x2362CB0", VA = "0x182363CB0", Slot = "13")] public virtual void Update(byte input) { IDigest digest = this.contentDigest1; throw new NullReferenceException(); } // Token: 0x0600B546 RID: 46406 RVA: 0x00273100 File Offset: 0x00271300 [Token(Token = "0x600B546")] [Address(RVA = "0x2362EB0", Offset = "0x2361EB0", VA = "0x182362EB0", Slot = "14")] public virtual void BlockUpdate(byte[] input, int inOff, int length) { IDigest digest = this.contentDigest1; } // Token: 0x0600B547 RID: 46407 RVA: 0x0027311C File Offset: 0x0027131C [Token(Token = "0x600B547")] [Address(RVA = "0x2363C60", Offset = "0x2362C60", VA = "0x182363C60", Slot = "15")] public virtual void Reset() { IDigest digest = this.contentDigest1; throw new NullReferenceException(); } // Token: 0x0600B548 RID: 46408 RVA: 0x00273138 File Offset: 0x00271338 [Token(Token = "0x600B548")] [Address(RVA = "0x23631B0", Offset = "0x23621B0", VA = "0x1823631B0", Slot = "16")] public virtual byte[] GenerateSignature() { byte[] array = this.mDash; IDigest digest = this.contentDigest1; int length = array.Length; if (this.sLen != 0) { if (!this.sSet) { double num = this.random.NextDouble(); } byte[] array2 = this.mDash; byte[] array3 = this.salt; int length2 = array2.Length; } byte[] array4 = new byte[this.hLen]; byte[] array5 = this.mDash; IDigest digest2 = this.contentDigest2; int length3 = array5.Length; int num2 = 0; IDigest digest3 = this.contentDigest2; int length4 = this.block.Length; byte[] array6 = this.block; byte[] array7 = this.salt; int length5 = array6.Length; int length6 = this.block.Length; int num3 = 0; int length7 = array4.Length; int length8 = this.MaskGeneratorFunction1(array4, num3, length7, length6).Length; byte[] array8 = this.block; if (num2 != length8) { num2++; } int length9 = array8.Length; int length10 = this.block.Length; int length11 = this.block.Length; byte b = this.trailer; int num4 = length11 - 1; byte[] array9 = this.block; IAsymmetricBlockCipher asymmetricBlockCipher = this.cipher; int length12 = array9.Length; byte[] array10 = this.block; int length13 = array10.Length; int num5 = 0; Array.Clear(array10, num5, length13); throw new NullReferenceException(); } // Token: 0x0600B549 RID: 46409 RVA: 0x00273298 File Offset: 0x00271498 [Token(Token = "0x600B549")] [Address(RVA = "0x2363D10", Offset = "0x2362D10", VA = "0x182363D10", Slot = "17")] public virtual bool VerifySignature(byte[] signature) { byte[] array = this.mDash; IDigest digest = this.contentDigest1; int length = array.Length; IAsymmetricBlockCipher asymmetricBlockCipher = this.cipher; int length2 = signature.Length; int num = 0; int length3 = this.block.Length; byte[] array2 = this.block; int num2 = array2.Length; int num3 = num2 - 1; byte b = this.trailer; int num4 = this.hLen; num2 -= num4; int num5 = this.MaskGeneratorFunction1(array2, num2, num4, num2).Length; byte[] array3 = this.block; if (num != num5) { num++; } int length4 = array3.Length; byte[] array4 = this.block; int num6 = array4.Length; num5 = num6; int num7 = this.hLen; num5 -= num7; int num8 = this.sLen; num5 -= num8; num5 += -2; int num9; if (num != num5) { num++; num9 = 0; int num10 = 0; Array.Clear(array4, num10, num6); } num6 -= num7; num6 -= num8; num9 -= num8; num6 = num8; int num11 = array4.Length; num11 -= num8; int num12 = num11 - 1; num12 += num6; if (num6 != num8) { num6++; num12++; } throw new NullReferenceException(); } // Token: 0x0600B54A RID: 46410 RVA: 0x002733EC File Offset: 0x002715EC [Token(Token = "0x600B54A")] [Address(RVA = "0x235F650", Offset = "0x235E650", VA = "0x18235F650")] private void ItoOSP(int i, byte[] sp) { sp[0] = (byte)i; sp[0] = (byte)i; sp[0] = (byte)i; sp[0] = (byte)i; } // Token: 0x0600B54B RID: 46411 RVA: 0x00273420 File Offset: 0x00271620 [Token(Token = "0x600B54B")] [Address(RVA = "0x23637C0", Offset = "0x23627C0", VA = "0x1823637C0")] private byte[] MaskGeneratorFunction1(byte[] Z, int zOff, int zLen, int length) { byte[] array = new byte[0]; byte[] array2 = new byte[this.mgfhLen]; byte[] array3 = new byte[4]; IDigest digest = this.mgfDigest; int num = 0; int num2 = this.mgfhLen; array3[0] = (byte)num; array3[0] = (byte)num; array3[0] = (byte)num; array3[0] = (byte)num; IDigest digest2 = this.mgfDigest; int num3 = 0; if (num3 < digest) { num3 += num3; num3++; } IDigest digest3 = this.mgfDigest; int num4 = 0; num4 += num4; num4++; int num5 = 0; IDigest digest4 = this.mgfDigest; int num6 = 0; if (num6 < num5) { num6 += num6; num6++; } int num7 = this.mgfhLen * num; num++; int num8 = num2 * num; array3[0] = (byte)num; array3[0] = (byte)num; array3[0] = (byte)num; array3[0] = (byte)num; IDigest digest5 = this.mgfDigest; IDigest digest6 = this.mgfDigest; int length2 = array3.Length; IDigest digest7 = this.mgfDigest; int num9 = this.mgfhLen; int num10 = array.Length; int num11 = 0; int num12 = num9 * num; num10 -= num12; Array.Copy(array2, num11, array, num12, num10); return array; } // Token: 0x040072BE RID: 29374 [Token(Token = "0x40072BE")] public const byte TrailerImplicit = 188; // Token: 0x040072BF RID: 29375 [FieldOffset(Offset = "0x10")] [Token(Token = "0x40072BF")] private readonly IDigest contentDigest1; // Token: 0x040072C0 RID: 29376 [FieldOffset(Offset = "0x18")] [Token(Token = "0x40072C0")] private readonly IDigest contentDigest2; // Token: 0x040072C1 RID: 29377 [FieldOffset(Offset = "0x20")] [Token(Token = "0x40072C1")] private readonly IDigest mgfDigest; // Token: 0x040072C2 RID: 29378 [FieldOffset(Offset = "0x28")] [Token(Token = "0x40072C2")] private readonly IAsymmetricBlockCipher cipher; // Token: 0x040072C3 RID: 29379 [FieldOffset(Offset = "0x30")] [Token(Token = "0x40072C3")] private SecureRandom random; // Token: 0x040072C4 RID: 29380 [FieldOffset(Offset = "0x38")] [Token(Token = "0x40072C4")] private int hLen; // Token: 0x040072C5 RID: 29381 [FieldOffset(Offset = "0x3C")] [Token(Token = "0x40072C5")] private int mgfhLen; // Token: 0x040072C6 RID: 29382 [FieldOffset(Offset = "0x40")] [Token(Token = "0x40072C6")] private int sLen; // Token: 0x040072C7 RID: 29383 [FieldOffset(Offset = "0x44")] [Token(Token = "0x40072C7")] private bool sSet; // Token: 0x040072C8 RID: 29384 [FieldOffset(Offset = "0x48")] [Token(Token = "0x40072C8")] private int emBits; // Token: 0x040072C9 RID: 29385 [FieldOffset(Offset = "0x50")] [Token(Token = "0x40072C9")] private byte[] salt; // Token: 0x040072CA RID: 29386 [FieldOffset(Offset = "0x58")] [Token(Token = "0x40072CA")] private byte[] mDash; // Token: 0x040072CB RID: 29387 [FieldOffset(Offset = "0x60")] [Token(Token = "0x40072CB")] private byte[] block; // Token: 0x040072CC RID: 29388 [FieldOffset(Offset = "0x68")] [Token(Token = "0x40072CC")] private byte trailer; } }