a
This commit is contained in:
@@ -0,0 +1,469 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user