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: 0x02001BB8 RID: 7096 [Token(Token = "0x2001BB8")] public class PssSigner : ISigner { // Token: 0x0600B16A RID: 45418 RVA: 0x00269C0C File Offset: 0x00267E0C [Token(Token = "0x600B16A")] [Address(RVA = "0x189F130", Offset = "0x189DF30", VA = "0x18189F130")] 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: 0x0600B16B RID: 45419 RVA: 0x00269C88 File Offset: 0x00267E88 [Token(Token = "0x600B16B")] [Address(RVA = "0x189F270", Offset = "0x189E070", VA = "0x18189F270")] 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: 0x0600B16C RID: 45420 RVA: 0x00269D00 File Offset: 0x00267F00 [Token(Token = "0x600B16C")] [Address(RVA = "0x18A0540", Offset = "0x189F340", VA = "0x1818A0540")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest digest) { } // Token: 0x0600B16D RID: 45421 RVA: 0x00269D14 File Offset: 0x00267F14 [Token(Token = "0x600B16D")] [Address(RVA = "0x18A0510", Offset = "0x189F310", VA = "0x1818A0510")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest digest, int saltLen) { } // Token: 0x0600B16E RID: 45422 RVA: 0x00269D24 File Offset: 0x00267F24 [Token(Token = "0x600B16E")] [Address(RVA = "0x18A04A0", Offset = "0x189F2A0", VA = "0x1818A04A0")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest digest, byte[] salt) { int length = salt.Length; } // Token: 0x0600B16F RID: 45423 RVA: 0x00269D40 File Offset: 0x00267F40 [Token(Token = "0x600B16F")] [Address(RVA = "0x18A04E0", Offset = "0x189F2E0", VA = "0x1818A04E0")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest contentDigest, IDigest mgfDigest, int saltLen) { } // Token: 0x0600B170 RID: 45424 RVA: 0x00269D50 File Offset: 0x00267F50 [Token(Token = "0x600B170")] [Address(RVA = "0x18A0450", Offset = "0x189F250", VA = "0x1818A0450")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest contentDigest, IDigest mgfDigest, byte[] salt) { } // Token: 0x0600B171 RID: 45425 RVA: 0x00269D64 File Offset: 0x00267F64 [Token(Token = "0x600B171")] [Address(RVA = "0x18A0510", Offset = "0x189F310", VA = "0x1818A0510")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest digest, int saltLen, byte trailer) { } // Token: 0x0600B172 RID: 45426 RVA: 0x00269D74 File Offset: 0x00267F74 [Token(Token = "0x600B172")] [Address(RVA = "0x18A0360", Offset = "0x189F160", VA = "0x1818A0360")] 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: 0x0600B173 RID: 45427 RVA: 0x00269DDC File Offset: 0x00267FDC [Token(Token = "0x600B173")] [Address(RVA = "0x18A05D0", Offset = "0x189F3D0", VA = "0x1818A05D0")] 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: 0x17001BEB RID: 7147 // (get) Token: 0x0600B174 RID: 45428 RVA: 0x00269E44 File Offset: 0x00268044 [Token(Token = "0x17001BEB")] public virtual string AlgorithmName { [Token(Token = "0x600B174")] [Address(RVA = "0x18A06D0", Offset = "0x189F4D0", VA = "0x1818A06D0", Slot = "11")] get { IDigest digest = this.mgfDigest; return 0 + "withRSAandMGF1"; } } // Token: 0x0600B175 RID: 45429 RVA: 0x00269E6C File Offset: 0x0026806C [Token(Token = "0x600B175")] [Address(RVA = "0x189F6F0", Offset = "0x189E4F0", VA = "0x18189F6F0", 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: 0x0600B176 RID: 45430 RVA: 0x00269EFC File Offset: 0x002680FC [Token(Token = "0x600B176")] [Address(RVA = "0x189B390", Offset = "0x189A190", VA = "0x18189B390")] private void ClearBlock(byte[] block) { int length = block.Length; int num = 0; Array.Clear(block, num, length); } // Token: 0x0600B177 RID: 45431 RVA: 0x00269F20 File Offset: 0x00268120 [Token(Token = "0x600B177")] [Address(RVA = "0x189FEB0", Offset = "0x189ECB0", VA = "0x18189FEB0", Slot = "13")] public virtual void Update(byte input) { IDigest digest = this.contentDigest1; throw new NullReferenceException(); } // Token: 0x0600B178 RID: 45432 RVA: 0x00269F3C File Offset: 0x0026813C [Token(Token = "0x600B178")] [Address(RVA = "0x189F0B0", Offset = "0x189DEB0", VA = "0x18189F0B0", Slot = "14")] public virtual void BlockUpdate(byte[] input, int inOff, int length) { IDigest digest = this.contentDigest1; } // Token: 0x0600B179 RID: 45433 RVA: 0x00269F58 File Offset: 0x00268158 [Token(Token = "0x600B179")] [Address(RVA = "0x189FE60", Offset = "0x189EC60", VA = "0x18189FE60", Slot = "15")] public virtual void Reset() { IDigest digest = this.contentDigest1; throw new NullReferenceException(); } // Token: 0x0600B17A RID: 45434 RVA: 0x00269F74 File Offset: 0x00268174 [Token(Token = "0x600B17A")] [Address(RVA = "0x189F3B0", Offset = "0x189E1B0", VA = "0x18189F3B0", 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: 0x0600B17B RID: 45435 RVA: 0x0026A0D4 File Offset: 0x002682D4 [Token(Token = "0x600B17B")] [Address(RVA = "0x189FF10", Offset = "0x189ED10", VA = "0x18189FF10", 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: 0x0600B17C RID: 45436 RVA: 0x0026A228 File Offset: 0x00268428 [Token(Token = "0x600B17C")] [Address(RVA = "0x189BD10", Offset = "0x189AB10", VA = "0x18189BD10")] private void ItoOSP(int i, byte[] sp) { sp[0] = (byte)i; sp[0] = (byte)i; sp[0] = (byte)i; sp[0] = (byte)i; } // Token: 0x0600B17D RID: 45437 RVA: 0x0026A25C File Offset: 0x0026845C [Token(Token = "0x600B17D")] [Address(RVA = "0x189F9C0", Offset = "0x189E7C0", VA = "0x18189F9C0")] 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: 0x04007105 RID: 28933 [Token(Token = "0x4007105")] public const byte TrailerImplicit = 188; // Token: 0x04007106 RID: 28934 [FieldOffset(Offset = "0x10")] [Token(Token = "0x4007106")] private readonly IDigest contentDigest1; // Token: 0x04007107 RID: 28935 [FieldOffset(Offset = "0x18")] [Token(Token = "0x4007107")] private readonly IDigest contentDigest2; // Token: 0x04007108 RID: 28936 [FieldOffset(Offset = "0x20")] [Token(Token = "0x4007108")] private readonly IDigest mgfDigest; // Token: 0x04007109 RID: 28937 [FieldOffset(Offset = "0x28")] [Token(Token = "0x4007109")] private readonly IAsymmetricBlockCipher cipher; // Token: 0x0400710A RID: 28938 [FieldOffset(Offset = "0x30")] [Token(Token = "0x400710A")] private SecureRandom random; // Token: 0x0400710B RID: 28939 [FieldOffset(Offset = "0x38")] [Token(Token = "0x400710B")] private int hLen; // Token: 0x0400710C RID: 28940 [FieldOffset(Offset = "0x3C")] [Token(Token = "0x400710C")] private int mgfhLen; // Token: 0x0400710D RID: 28941 [FieldOffset(Offset = "0x40")] [Token(Token = "0x400710D")] private int sLen; // Token: 0x0400710E RID: 28942 [FieldOffset(Offset = "0x44")] [Token(Token = "0x400710E")] private bool sSet; // Token: 0x0400710F RID: 28943 [FieldOffset(Offset = "0x48")] [Token(Token = "0x400710F")] private int emBits; // Token: 0x04007110 RID: 28944 [FieldOffset(Offset = "0x50")] [Token(Token = "0x4007110")] private byte[] salt; // Token: 0x04007111 RID: 28945 [FieldOffset(Offset = "0x58")] [Token(Token = "0x4007111")] private byte[] mDash; // Token: 0x04007112 RID: 28946 [FieldOffset(Offset = "0x60")] [Token(Token = "0x4007112")] private byte[] block; // Token: 0x04007113 RID: 28947 [FieldOffset(Offset = "0x68")] [Token(Token = "0x4007113")] private byte trailer; } }