156 lines
4.9 KiB
C#
156 lines
4.9 KiB
C#
using System;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Math;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines
|
|
{
|
|
// Token: 0x02001D84 RID: 7556
|
|
[Token(Token = "0x2001D84")]
|
|
public class RsaBlindingEngine : IAsymmetricBlockCipher
|
|
{
|
|
// Token: 0x0600BC35 RID: 48181 RVA: 0x00298ED8 File Offset: 0x002970D8
|
|
[Token(Token = "0x600BC35")]
|
|
[Address(RVA = "0x2736A20", Offset = "0x2735A20", VA = "0x182736A20")]
|
|
public RsaBlindingEngine()
|
|
{
|
|
RsaCoreEngine rsaCoreEngine = new RsaCoreEngine();
|
|
base..ctor();
|
|
this.core = rsaCoreEngine;
|
|
}
|
|
|
|
// Token: 0x0600BC36 RID: 48182 RVA: 0x00298EF8 File Offset: 0x002970F8
|
|
[Token(Token = "0x600BC36")]
|
|
[Address(RVA = "0x493D90", Offset = "0x492D90", VA = "0x180493D90")]
|
|
public RsaBlindingEngine(IRsa rsa)
|
|
{
|
|
this.core = rsa;
|
|
}
|
|
|
|
// Token: 0x17001D85 RID: 7557
|
|
// (get) Token: 0x0600BC37 RID: 48183 RVA: 0x00298F14 File Offset: 0x00297114
|
|
[Token(Token = "0x17001D85")]
|
|
public virtual string AlgorithmName
|
|
{
|
|
[Token(Token = "0x600BC37")]
|
|
[Address(RVA = "0x2736A80", Offset = "0x2735A80", VA = "0x182736A80", Slot = "9")]
|
|
get
|
|
{
|
|
return "RSA";
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600BC38 RID: 48184 RVA: 0x00298F28 File Offset: 0x00297128
|
|
[Token(Token = "0x600BC38")]
|
|
[Address(RVA = "0x2736680", Offset = "0x2735680", VA = "0x182736680", Slot = "10")]
|
|
public virtual void Init(bool forEncryption, ICipherParameters param)
|
|
{
|
|
int num;
|
|
for (;;)
|
|
{
|
|
if ((param != 0 || param != 0) && param != 0 && param != 0)
|
|
{
|
|
num = 0;
|
|
if (param != 0)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
IRsa rsa = this.core;
|
|
this.forEncryption = forEncryption;
|
|
this.key = num;
|
|
this.blindingFactor = num;
|
|
}
|
|
|
|
// Token: 0x0600BC39 RID: 48185 RVA: 0x00298F7C File Offset: 0x0029717C
|
|
[Token(Token = "0x600BC39")]
|
|
[Address(RVA = "0x27365E0", Offset = "0x27355E0", VA = "0x1827365E0", Slot = "11")]
|
|
public virtual int GetInputBlockSize()
|
|
{
|
|
IRsa rsa = this.core;
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600BC3A RID: 48186 RVA: 0x00298F98 File Offset: 0x00297198
|
|
[Token(Token = "0x600BC3A")]
|
|
[Address(RVA = "0x2736630", Offset = "0x2735630", VA = "0x182736630", Slot = "12")]
|
|
public virtual int GetOutputBlockSize()
|
|
{
|
|
IRsa rsa = this.core;
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600BC3B RID: 48187 RVA: 0x00298FB4 File Offset: 0x002971B4
|
|
[Token(Token = "0x600BC3B")]
|
|
[Address(RVA = "0x2736870", Offset = "0x2735870", VA = "0x182736870", Slot = "13")]
|
|
public virtual byte[] ProcessBlock(byte[] inBuf, int inOff, int inLen)
|
|
{
|
|
IRsa rsa = this.core;
|
|
RsaKeyParameters rsaKeyParameters = this.key;
|
|
if (!this.forEncryption)
|
|
{
|
|
BigInteger bigInteger = this.blindingFactor;
|
|
BigInteger modulus = rsaKeyParameters.modulus;
|
|
BigInteger bigInteger2 = bigInteger.ModInverse(modulus);
|
|
}
|
|
BigInteger bigInteger3 = this.blindingFactor;
|
|
BigInteger modulus2 = rsaKeyParameters.modulus;
|
|
BigInteger exponent = rsaKeyParameters.exponent;
|
|
BigInteger bigInteger4 = bigInteger3.ModPow(exponent, modulus2);
|
|
BigInteger modulus3 = this.key.modulus;
|
|
BigInteger bigInteger6;
|
|
BigInteger bigInteger5 = bigInteger6.Mod(modulus3);
|
|
IRsa rsa2 = this.core;
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600BC3C RID: 48188 RVA: 0x0029903C File Offset: 0x0029723C
|
|
[Token(Token = "0x600BC3C")]
|
|
[Address(RVA = "0x2736560", Offset = "0x2735560", VA = "0x182736560")]
|
|
private BigInteger BlindMessage(BigInteger msg)
|
|
{
|
|
RsaKeyParameters rsaKeyParameters = this.key;
|
|
BigInteger bigInteger = this.blindingFactor;
|
|
BigInteger modulus = rsaKeyParameters.modulus;
|
|
BigInteger exponent = rsaKeyParameters.exponent;
|
|
BigInteger bigInteger2 = bigInteger.ModPow(exponent, modulus);
|
|
BigInteger bigInteger3 = msg.Multiply(bigInteger2);
|
|
BigInteger modulus2 = this.key.modulus;
|
|
return bigInteger3.Mod(modulus2);
|
|
}
|
|
|
|
// Token: 0x0600BC3D RID: 48189 RVA: 0x00299098 File Offset: 0x00297298
|
|
[Token(Token = "0x600BC3D")]
|
|
[Address(RVA = "0x27369B0", Offset = "0x27359B0", VA = "0x1827369B0")]
|
|
private BigInteger UnblindMessage(BigInteger blindedMsg)
|
|
{
|
|
RsaKeyParameters rsaKeyParameters = this.key;
|
|
BigInteger bigInteger = this.blindingFactor;
|
|
BigInteger modulus = rsaKeyParameters.modulus;
|
|
BigInteger bigInteger2 = bigInteger.ModInverse(modulus);
|
|
return blindedMsg.Multiply(bigInteger2).Mod(modulus);
|
|
}
|
|
|
|
// Token: 0x040076A2 RID: 30370
|
|
[FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x40076A2")]
|
|
private readonly IRsa core;
|
|
|
|
// Token: 0x040076A3 RID: 30371
|
|
[FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x40076A3")]
|
|
private RsaKeyParameters key;
|
|
|
|
// Token: 0x040076A4 RID: 30372
|
|
[FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x40076A4")]
|
|
private BigInteger blindingFactor;
|
|
|
|
// Token: 0x040076A5 RID: 30373
|
|
[FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x40076A5")]
|
|
private bool forEncryption;
|
|
}
|
|
}
|