using System; using System.Runtime.InteropServices; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests; using BestHTTP.SecureProtocol.Org.BouncyCastle.Security; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Signers { // Token: 0x020015DB RID: 5595 [Token(Token = "0x20015DB")] [StructLayout(3)] public class PssSigner : ISigner { // Token: 0x06009590 RID: 38288 RVA: 0x002125A0 File Offset: 0x002107A0 [Token(Token = "0x6009590")] [Address(RVA = "0x1E47830", Offset = "0x1E46230", VA = "0x181E47830")] 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: 0x06009591 RID: 38289 RVA: 0x0021261C File Offset: 0x0021081C [Token(Token = "0x6009591")] [Address(RVA = "0x1E47970", Offset = "0x1E46370", VA = "0x181E47970")] 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: 0x06009592 RID: 38290 RVA: 0x00212694 File Offset: 0x00210894 [Token(Token = "0x6009592")] [Address(RVA = "0x1E48C40", Offset = "0x1E47640", VA = "0x181E48C40")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest digest) { } // Token: 0x06009593 RID: 38291 RVA: 0x002126A8 File Offset: 0x002108A8 [Token(Token = "0x6009593")] [Address(RVA = "0x1E48C10", Offset = "0x1E47610", VA = "0x181E48C10")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest digest, int saltLen) { } // Token: 0x06009594 RID: 38292 RVA: 0x002126B8 File Offset: 0x002108B8 [Token(Token = "0x6009594")] [Address(RVA = "0x1E48BA0", Offset = "0x1E475A0", VA = "0x181E48BA0")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest digest, byte[] salt) { int length = salt.Length; } // Token: 0x06009595 RID: 38293 RVA: 0x002126D4 File Offset: 0x002108D4 [Token(Token = "0x6009595")] [Address(RVA = "0x1E48BE0", Offset = "0x1E475E0", VA = "0x181E48BE0")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest contentDigest, IDigest mgfDigest, int saltLen) { } // Token: 0x06009596 RID: 38294 RVA: 0x002126E4 File Offset: 0x002108E4 [Token(Token = "0x6009596")] [Address(RVA = "0x1E48B50", Offset = "0x1E47550", VA = "0x181E48B50")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest contentDigest, IDigest mgfDigest, byte[] salt) { } // Token: 0x06009597 RID: 38295 RVA: 0x002126F8 File Offset: 0x002108F8 [Token(Token = "0x6009597")] [Address(RVA = "0x1E48C10", Offset = "0x1E47610", VA = "0x181E48C10")] public PssSigner(IAsymmetricBlockCipher cipher, IDigest digest, int saltLen, byte trailer) { } // Token: 0x06009598 RID: 38296 RVA: 0x00212708 File Offset: 0x00210908 [Token(Token = "0x6009598")] [Address(RVA = "0x1E48A60", Offset = "0x1E47460", VA = "0x181E48A60")] 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: 0x06009599 RID: 38297 RVA: 0x00212770 File Offset: 0x00210970 [Token(Token = "0x6009599")] [Address(RVA = "0x1E48CD0", Offset = "0x1E476D0", VA = "0x181E48CD0")] 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: 0x170017EA RID: 6122 // (get) Token: 0x0600959A RID: 38298 RVA: 0x002127D8 File Offset: 0x002109D8 [Token(Token = "0x170017EA")] public virtual string AlgorithmName { [Token(Token = "0x600959A")] [Address(RVA = "0x1E48DD0", Offset = "0x1E477D0", VA = "0x181E48DD0", Slot = "11")] get { IDigest digest = this.mgfDigest; return 0 + "withRSAandMGF1"; } } // Token: 0x0600959B RID: 38299 RVA: 0x00212800 File Offset: 0x00210A00 [Token(Token = "0x600959B")] [Address(RVA = "0x1E47DF0", Offset = "0x1E467F0", VA = "0x181E47DF0", 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: 0x0600959C RID: 38300 RVA: 0x00212890 File Offset: 0x00210A90 [Token(Token = "0x600959C")] [Address(RVA = "0x1E43A90", Offset = "0x1E42490", VA = "0x181E43A90")] private void ClearBlock(byte[] block) { int length = block.Length; int num = 0; Array.Clear(block, num, length); } // Token: 0x0600959D RID: 38301 RVA: 0x002128B4 File Offset: 0x00210AB4 [Token(Token = "0x600959D")] [Address(RVA = "0x1E485B0", Offset = "0x1E46FB0", VA = "0x181E485B0", Slot = "13")] public virtual void Update(byte input) { IDigest digest = this.contentDigest1; throw new NullReferenceException(); } // Token: 0x0600959E RID: 38302 RVA: 0x002128D0 File Offset: 0x00210AD0 [Token(Token = "0x600959E")] [Address(RVA = "0x1E477B0", Offset = "0x1E461B0", VA = "0x181E477B0", Slot = "14")] public virtual void BlockUpdate(byte[] input, int inOff, int length) { IDigest digest = this.contentDigest1; } // Token: 0x0600959F RID: 38303 RVA: 0x002128EC File Offset: 0x00210AEC [Token(Token = "0x600959F")] [Address(RVA = "0x1E48560", Offset = "0x1E46F60", VA = "0x181E48560", Slot = "15")] public virtual void Reset() { IDigest digest = this.contentDigest1; throw new NullReferenceException(); } // Token: 0x060095A0 RID: 38304 RVA: 0x00212908 File Offset: 0x00210B08 [Token(Token = "0x60095A0")] [Address(RVA = "0x1E47AB0", Offset = "0x1E464B0", VA = "0x181E47AB0", 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: 0x060095A1 RID: 38305 RVA: 0x00212A68 File Offset: 0x00210C68 [Token(Token = "0x60095A1")] [Address(RVA = "0x1E48610", Offset = "0x1E47010", VA = "0x181E48610", 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: 0x060095A2 RID: 38306 RVA: 0x00212BBC File Offset: 0x00210DBC [Token(Token = "0x60095A2")] [Address(RVA = "0x1E44410", Offset = "0x1E42E10", VA = "0x181E44410")] private void ItoOSP(int i, byte[] sp) { sp[0] = (byte)i; sp[0] = (byte)i; sp[0] = (byte)i; sp[0] = (byte)i; } // Token: 0x060095A3 RID: 38307 RVA: 0x00212BF0 File Offset: 0x00210DF0 [Token(Token = "0x60095A3")] [Address(RVA = "0x1E480C0", Offset = "0x1E46AC0", VA = "0x181E480C0")] 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: 0x040062C2 RID: 25282 [Token(Token = "0x40062C2")] public const byte TrailerImplicit = 188; // Token: 0x040062C3 RID: 25283 [global::Cpp2IlInjected.FieldOffset(Offset = "0x10")] [Token(Token = "0x40062C3")] private readonly IDigest contentDigest1; // Token: 0x040062C4 RID: 25284 [global::Cpp2IlInjected.FieldOffset(Offset = "0x18")] [Token(Token = "0x40062C4")] private readonly IDigest contentDigest2; // Token: 0x040062C5 RID: 25285 [global::Cpp2IlInjected.FieldOffset(Offset = "0x20")] [Token(Token = "0x40062C5")] private readonly IDigest mgfDigest; // Token: 0x040062C6 RID: 25286 [global::Cpp2IlInjected.FieldOffset(Offset = "0x28")] [Token(Token = "0x40062C6")] private readonly IAsymmetricBlockCipher cipher; // Token: 0x040062C7 RID: 25287 [global::Cpp2IlInjected.FieldOffset(Offset = "0x30")] [Token(Token = "0x40062C7")] private SecureRandom random; // Token: 0x040062C8 RID: 25288 [global::Cpp2IlInjected.FieldOffset(Offset = "0x38")] [Token(Token = "0x40062C8")] private int hLen; // Token: 0x040062C9 RID: 25289 [global::Cpp2IlInjected.FieldOffset(Offset = "0x3C")] [Token(Token = "0x40062C9")] private int mgfhLen; // Token: 0x040062CA RID: 25290 [global::Cpp2IlInjected.FieldOffset(Offset = "0x40")] [Token(Token = "0x40062CA")] private int sLen; // Token: 0x040062CB RID: 25291 [global::Cpp2IlInjected.FieldOffset(Offset = "0x44")] [Token(Token = "0x40062CB")] private bool sSet; // Token: 0x040062CC RID: 25292 [global::Cpp2IlInjected.FieldOffset(Offset = "0x48")] [Token(Token = "0x40062CC")] private int emBits; // Token: 0x040062CD RID: 25293 [global::Cpp2IlInjected.FieldOffset(Offset = "0x50")] [Token(Token = "0x40062CD")] private byte[] salt; // Token: 0x040062CE RID: 25294 [global::Cpp2IlInjected.FieldOffset(Offset = "0x58")] [Token(Token = "0x40062CE")] private byte[] mDash; // Token: 0x040062CF RID: 25295 [global::Cpp2IlInjected.FieldOffset(Offset = "0x60")] [Token(Token = "0x40062CF")] private byte[] block; // Token: 0x040062D0 RID: 25296 [global::Cpp2IlInjected.FieldOffset(Offset = "0x68")] [Token(Token = "0x40062D0")] private byte trailer; } }