Files
27Aug2021-Cpp2IL-Dump/Assembly-CSharp/BestHTTP/SecureProtocol/Org/BouncyCastle/Crypto/Signers/PssSigner.cs
T
niko c12fbe3fc6 m
2026-04-12 16:51:38 +02:00

470 lines
14 KiB
C#

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;
}
}