355 lines
13 KiB
C#
355 lines
13 KiB
C#
using System;
|
|
using System.Security.Cryptography;
|
|
using System.Security.Cryptography.X509Certificates;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Pkcs;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Math;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.X509;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Security
|
|
{
|
|
// Token: 0x020019A7 RID: 6567
|
|
[Token(Token = "0x20019A7")]
|
|
public sealed class DotNetUtilities
|
|
{
|
|
// Token: 0x06009CBC RID: 40124 RVA: 0x0020BD08 File Offset: 0x00209F08
|
|
[Token(Token = "0x6009CBC")]
|
|
[Address(RVA = "0x3F5100", Offset = "0x3F3F00", VA = "0x1803F5100")]
|
|
private DotNetUtilities()
|
|
{
|
|
}
|
|
|
|
// Token: 0x06009CBD RID: 40125 RVA: 0x0020BD1C File Offset: 0x00209F1C
|
|
[Token(Token = "0x6009CBD")]
|
|
[Address(RVA = "0x19AD960", Offset = "0x19AC760", VA = "0x1819AD960")]
|
|
public static global::System.Security.Cryptography.X509Certificates.X509Certificate ToX509Certificate(X509CertificateStructure x509Struct)
|
|
{
|
|
return new global::System.Security.Cryptography.X509Certificates.X509Certificate(x509Struct.GetDerEncoded());
|
|
}
|
|
|
|
// Token: 0x06009CBE RID: 40126 RVA: 0x0020BD3C File Offset: 0x00209F3C
|
|
[Token(Token = "0x6009CBE")]
|
|
[Address(RVA = "0x19AD9D0", Offset = "0x19AC7D0", VA = "0x1819AD9D0")]
|
|
public static global::System.Security.Cryptography.X509Certificates.X509Certificate ToX509Certificate(BestHTTP.SecureProtocol.Org.BouncyCastle.X509.X509Certificate x509Cert)
|
|
{
|
|
AsymmetricKeyParameter publicKey = x509Cert.GetPublicKey();
|
|
global::System.Security.Cryptography.X509Certificates.X509Certificate x509Certificate;
|
|
return x509Certificate;
|
|
}
|
|
|
|
// Token: 0x06009CBF RID: 40127 RVA: 0x0020BD58 File Offset: 0x00209F58
|
|
[Token(Token = "0x6009CBF")]
|
|
[Address(RVA = "0x19AC4E0", Offset = "0x19AB2E0", VA = "0x1819AC4E0")]
|
|
public static BestHTTP.SecureProtocol.Org.BouncyCastle.X509.X509Certificate FromX509Certificate(global::System.Security.Cryptography.X509Certificates.X509Certificate x509Cert)
|
|
{
|
|
X509CertificateParser x509CertificateParser = new X509CertificateParser();
|
|
byte[] publicKey = x509Cert.GetPublicKey();
|
|
return x509CertificateParser.ReadCertificate(publicKey);
|
|
}
|
|
|
|
// Token: 0x06009CC0 RID: 40128 RVA: 0x0020BD80 File Offset: 0x00209F80
|
|
[Token(Token = "0x6009CC0")]
|
|
[Address(RVA = "0x19AC560", Offset = "0x19AB360", VA = "0x1819AC560")]
|
|
public static AsymmetricCipherKeyPair GetDsaKeyPair(DSA dsa)
|
|
{
|
|
AsymmetricCipherKeyPair asymmetricCipherKeyPair;
|
|
return asymmetricCipherKeyPair;
|
|
}
|
|
|
|
// Token: 0x06009CC1 RID: 40129 RVA: 0x0020BD94 File Offset: 0x00209F94
|
|
[Token(Token = "0x6009CC1")]
|
|
[Address(RVA = "0x19AC5D0", Offset = "0x19AB3D0", VA = "0x1819AC5D0")]
|
|
public static AsymmetricCipherKeyPair GetDsaKeyPair(DSAParameters dp)
|
|
{
|
|
if (dp.Seed != (ulong)0L)
|
|
{
|
|
byte[] seed = dp.Seed;
|
|
}
|
|
int num = 0;
|
|
byte[] g;
|
|
BigInteger bigInteger = new BigInteger(1, g);
|
|
g = dp.G;
|
|
BigInteger bigInteger2;
|
|
BigInteger bigInteger3;
|
|
DsaParameters dsaParameters = new DsaParameters(bigInteger2, bigInteger3, bigInteger, num);
|
|
BigInteger bigInteger4;
|
|
DsaPublicKeyParameters dsaPublicKeyParameters = new DsaPublicKeyParameters(bigInteger4, dsaParameters);
|
|
BigInteger bigInteger5;
|
|
DsaPrivateKeyParameters dsaPrivateKeyParameters = new DsaPrivateKeyParameters(bigInteger5, dsaParameters);
|
|
return new AsymmetricCipherKeyPair(dsaPublicKeyParameters, dsaPrivateKeyParameters);
|
|
}
|
|
|
|
// Token: 0x06009CC2 RID: 40130 RVA: 0x0020BDF4 File Offset: 0x00209FF4
|
|
[Token(Token = "0x6009CC2")]
|
|
[Address(RVA = "0x19AC7C0", Offset = "0x19AB5C0", VA = "0x1819AC7C0")]
|
|
public static DsaPublicKeyParameters GetDsaPublicKey(DSA dsa)
|
|
{
|
|
int num = 0;
|
|
BigInteger bigInteger;
|
|
BigInteger bigInteger2;
|
|
BigInteger bigInteger3;
|
|
DsaParameters dsaParameters = new DsaParameters(bigInteger, bigInteger2, bigInteger3, num);
|
|
BigInteger bigInteger4;
|
|
return new DsaPublicKeyParameters(bigInteger4, dsaParameters);
|
|
}
|
|
|
|
// Token: 0x06009CC3 RID: 40131 RVA: 0x0020BE20 File Offset: 0x0020A020
|
|
[Token(Token = "0x6009CC3")]
|
|
[Address(RVA = "0x19AC980", Offset = "0x19AB780", VA = "0x1819AC980")]
|
|
public static DsaPublicKeyParameters GetDsaPublicKey(DSAParameters dp)
|
|
{
|
|
if (dp.Seed != (ulong)0L)
|
|
{
|
|
byte[] seed = dp.Seed;
|
|
}
|
|
int num = 0;
|
|
byte[] g;
|
|
BigInteger bigInteger = new BigInteger(1, g);
|
|
g = dp.G;
|
|
BigInteger bigInteger2;
|
|
BigInteger bigInteger3;
|
|
DsaParameters dsaParameters = new DsaParameters(bigInteger2, bigInteger3, bigInteger, num);
|
|
BigInteger bigInteger4;
|
|
return new DsaPublicKeyParameters(bigInteger4, dsaParameters);
|
|
}
|
|
|
|
// Token: 0x06009CC4 RID: 40132 RVA: 0x0020BE6C File Offset: 0x0020A06C
|
|
[Token(Token = "0x6009CC4")]
|
|
[Address(RVA = "0x19ACF40", Offset = "0x19ABD40", VA = "0x1819ACF40")]
|
|
public static AsymmetricCipherKeyPair GetRsaKeyPair(RSA rsa)
|
|
{
|
|
byte[] array;
|
|
byte b = array[0];
|
|
byte b2 = array[2];
|
|
AsymmetricCipherKeyPair asymmetricCipherKeyPair;
|
|
return asymmetricCipherKeyPair;
|
|
}
|
|
|
|
// Token: 0x06009CC5 RID: 40133 RVA: 0x0020BE90 File Offset: 0x0020A090
|
|
[Token(Token = "0x6009CC5")]
|
|
[Address(RVA = "0x19ACD10", Offset = "0x19ABB10", VA = "0x1819ACD10")]
|
|
public static AsymmetricCipherKeyPair GetRsaKeyPair(RSAParameters rp)
|
|
{
|
|
int num;
|
|
BigInteger bigInteger;
|
|
BigInteger bigInteger2;
|
|
RsaKeyParameters rsaKeyParameters = new RsaKeyParameters(num != 0, bigInteger, bigInteger2);
|
|
num = 0;
|
|
byte[] p;
|
|
BigInteger bigInteger3 = new BigInteger(1, p);
|
|
p = rp.P;
|
|
BigInteger bigInteger4 = new BigInteger(1, p);
|
|
byte[] dp;
|
|
BigInteger bigInteger5 = new BigInteger(1, dp);
|
|
dp = rp.DP;
|
|
BigInteger bigInteger6 = new BigInteger(1, dp);
|
|
BigInteger bigInteger7 = new BigInteger(1, dp);
|
|
AsymmetricCipherKeyPair asymmetricCipherKeyPair;
|
|
return asymmetricCipherKeyPair;
|
|
}
|
|
|
|
// Token: 0x06009CC6 RID: 40134 RVA: 0x0020BEF0 File Offset: 0x0020A0F0
|
|
[Token(Token = "0x6009CC6")]
|
|
[Address(RVA = "0x19ACFB0", Offset = "0x19ABDB0", VA = "0x1819ACFB0")]
|
|
public static RsaKeyParameters GetRsaPublicKey(RSA rsa)
|
|
{
|
|
int num;
|
|
BigInteger bigInteger;
|
|
BigInteger bigInteger2;
|
|
RsaKeyParameters rsaKeyParameters = new RsaKeyParameters(num != 0, bigInteger, bigInteger2);
|
|
num = 0;
|
|
return rsaKeyParameters;
|
|
}
|
|
|
|
// Token: 0x06009CC7 RID: 40135 RVA: 0x0020BF14 File Offset: 0x0020A114
|
|
[Token(Token = "0x6009CC7")]
|
|
[Address(RVA = "0x19AD0B0", Offset = "0x19ABEB0", VA = "0x1819AD0B0")]
|
|
public static RsaKeyParameters GetRsaPublicKey(RSAParameters rp)
|
|
{
|
|
int num;
|
|
BigInteger bigInteger;
|
|
BigInteger bigInteger2;
|
|
RsaKeyParameters rsaKeyParameters = new RsaKeyParameters(num != 0, bigInteger, bigInteger2);
|
|
num = 0;
|
|
return rsaKeyParameters;
|
|
}
|
|
|
|
// Token: 0x06009CC8 RID: 40136 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x6009CC8")]
|
|
[Address(RVA = "0x19ACB00", Offset = "0x19AB900", VA = "0x1819ACB00")]
|
|
public static AsymmetricCipherKeyPair GetKeyPair(AsymmetricAlgorithm privateKey)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06009CC9 RID: 40137 RVA: 0x0020BF30 File Offset: 0x0020A130
|
|
[Token(Token = "0x6009CC9")]
|
|
[Address(RVA = "0x19AD750", Offset = "0x19AC550", VA = "0x1819AD750")]
|
|
public static RSA ToRSA(RsaKeyParameters rsaKey)
|
|
{
|
|
int num = 0;
|
|
byte[] array = rsaKey.modulus.ToByteArrayUnsigned();
|
|
BigInteger exponent = rsaKey.exponent;
|
|
byte[] array2 = exponent.ToByteArrayUnsigned();
|
|
int length = array.Length;
|
|
byte[] array3 = DotNetUtilities.ConvertRSAParametersField(exponent, length);
|
|
return DotNetUtilities.CreateRSAProvider(num);
|
|
}
|
|
|
|
// Token: 0x06009CCA RID: 40138 RVA: 0x0020BF78 File Offset: 0x0020A178
|
|
[Token(Token = "0x6009CCA")]
|
|
[Address(RVA = "0x19AD610", Offset = "0x19AC410", VA = "0x1819AD610")]
|
|
public static RSA ToRSA(RsaKeyParameters rsaKey, CspParameters csp)
|
|
{
|
|
int num = 0;
|
|
byte[] array = rsaKey.modulus.ToByteArrayUnsigned();
|
|
BigInteger exponent = rsaKey.exponent;
|
|
byte[] array2 = exponent.ToByteArrayUnsigned();
|
|
int length = array.Length;
|
|
byte[] array3 = DotNetUtilities.ConvertRSAParametersField(exponent, length);
|
|
RSAParameters rsaparameters = new RSACryptoServiceProvider(csp).ExportParameters(num != 0);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06009CCB RID: 40139 RVA: 0x0020BFC8 File Offset: 0x0020A1C8
|
|
[Token(Token = "0x6009CCB")]
|
|
[Address(RVA = "0x19AD910", Offset = "0x19AC710", VA = "0x1819AD910")]
|
|
public static RSA ToRSA(RsaPrivateCrtKeyParameters privKey)
|
|
{
|
|
RSAParameters rsaparameters;
|
|
byte[] p = rsaparameters.P;
|
|
byte[] dp = rsaparameters.DP;
|
|
byte[] inverseQ = rsaparameters.InverseQ;
|
|
RSA rsa;
|
|
return rsa;
|
|
}
|
|
|
|
// Token: 0x06009CCC RID: 40140 RVA: 0x0020BFEC File Offset: 0x0020A1EC
|
|
[Token(Token = "0x6009CCC")]
|
|
[Address(RVA = "0x19AD4D0", Offset = "0x19AC2D0", VA = "0x1819AD4D0")]
|
|
public static RSA ToRSA(RsaPrivateCrtKeyParameters privKey, CspParameters csp)
|
|
{
|
|
RSAParameters rsaparameters;
|
|
byte[] p = rsaparameters.P;
|
|
byte[] dp = rsaparameters.DP;
|
|
byte[] inverseQ = rsaparameters.InverseQ;
|
|
RSACryptoServiceProvider rsacryptoServiceProvider = new RSACryptoServiceProvider(csp);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06009CCD RID: 40141 RVA: 0x0020C01C File Offset: 0x0020A21C
|
|
[Token(Token = "0x6009CCD")]
|
|
[Address(RVA = "0x19AD5C0", Offset = "0x19AC3C0", VA = "0x1819AD5C0")]
|
|
public static RSA ToRSA(RsaPrivateKeyStructure privKey)
|
|
{
|
|
RSAParameters rsaparameters;
|
|
byte[] p = rsaparameters.P;
|
|
byte[] dp = rsaparameters.DP;
|
|
byte[] inverseQ = rsaparameters.InverseQ;
|
|
RSA rsa;
|
|
return rsa;
|
|
}
|
|
|
|
// Token: 0x06009CCE RID: 40142 RVA: 0x0020C040 File Offset: 0x0020A240
|
|
[Token(Token = "0x6009CCE")]
|
|
[Address(RVA = "0x19AD820", Offset = "0x19AC620", VA = "0x1819AD820")]
|
|
public static RSA ToRSA(RsaPrivateKeyStructure privKey, CspParameters csp)
|
|
{
|
|
RSAParameters rsaparameters;
|
|
byte[] p = rsaparameters.P;
|
|
byte[] dp = rsaparameters.DP;
|
|
byte[] inverseQ = rsaparameters.InverseQ;
|
|
RSACryptoServiceProvider rsacryptoServiceProvider = new RSACryptoServiceProvider(csp);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06009CCF RID: 40143 RVA: 0x0020C070 File Offset: 0x0020A270
|
|
[Token(Token = "0x6009CCF")]
|
|
[Address(RVA = "0x19AD170", Offset = "0x19ABF70", VA = "0x1819AD170")]
|
|
public static RSAParameters ToRSAParameters(RsaKeyParameters rsaKey)
|
|
{
|
|
if ("{il2cpp array field il2cppMethodInfo->}" == (ulong)0L)
|
|
{
|
|
}
|
|
rsaKey.privateKey = false;
|
|
rsaKey.exponent = 0;
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06009CD0 RID: 40144 RVA: 0x0020C09C File Offset: 0x0020A29C
|
|
[Token(Token = "0x6009CD0")]
|
|
[Address(RVA = "0x19AD380", Offset = "0x19AC180", VA = "0x1819AD380")]
|
|
public static RSAParameters ToRSAParameters(RsaPrivateCrtKeyParameters privKey)
|
|
{
|
|
byte[] array;
|
|
privKey.privateKey = array != null;
|
|
byte[] array2;
|
|
privKey.exponent = array2;
|
|
byte[] array3;
|
|
privKey.p = array3;
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06009CD1 RID: 40145 RVA: 0x0020C0C8 File Offset: 0x0020A2C8
|
|
[Token(Token = "0x6009CD1")]
|
|
[Address(RVA = "0x19AD230", Offset = "0x19AC030", VA = "0x1819AD230")]
|
|
public static RSAParameters ToRSAParameters(RsaPrivateKeyStructure privKey)
|
|
{
|
|
byte[] array;
|
|
privKey.modulus = array;
|
|
byte[] array2;
|
|
privKey.privateExponent = array2;
|
|
byte[] array3;
|
|
privKey.prime2 = array3;
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06009CD2 RID: 40146 RVA: 0x0020C0F4 File Offset: 0x0020A2F4
|
|
[Token(Token = "0x6009CD2")]
|
|
[Address(RVA = "0x19AC220", Offset = "0x19AB020", VA = "0x1819AC220")]
|
|
private static byte[] ConvertRSAParametersField(BigInteger n, int size)
|
|
{
|
|
byte[] array = n.ToByteArrayUnsigned();
|
|
if (array.Length != size)
|
|
{
|
|
byte[] array2 = new byte[size];
|
|
int length = array.Length;
|
|
int num = 0;
|
|
Array.Copy(array, num, array2, size, length);
|
|
}
|
|
return array;
|
|
}
|
|
|
|
// Token: 0x06009CD3 RID: 40147 RVA: 0x0020C134 File Offset: 0x0020A334
|
|
[Token(Token = "0x6009CD3")]
|
|
[Address(RVA = "0x19AC3B0", Offset = "0x19AB1B0", VA = "0x1819AC3B0")]
|
|
private static RSA CreateRSAProvider(RSAParameters rp)
|
|
{
|
|
CspParameters cspParameters = new CspParameters();
|
|
Guid guid = Guid.NewGuid();
|
|
string text = string.Format("BouncyCastle-{0}", guid);
|
|
cspParameters.KeyContainerName = text;
|
|
RSACryptoServiceProvider rsacryptoServiceProvider = new RSACryptoServiceProvider(cspParameters);
|
|
byte[] p = rp.P;
|
|
byte[] dp = rp.DP;
|
|
byte[] inverseQ = rp.InverseQ;
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06009CD4 RID: 40148 RVA: 0x0020C184 File Offset: 0x0020A384
|
|
[Token(Token = "0x6009CD4")]
|
|
[Address(RVA = "0x19AC300", Offset = "0x19AB100", VA = "0x1819AC300")]
|
|
private static RSA CreateRSAProvider(RSAParameters rp, CspParameters csp)
|
|
{
|
|
RSACryptoServiceProvider rsacryptoServiceProvider = new RSACryptoServiceProvider(csp);
|
|
byte[] p = rp.P;
|
|
byte[] dp = rp.DP;
|
|
byte[] inverseQ = rp.InverseQ;
|
|
throw new NullReferenceException();
|
|
}
|
|
}
|
|
}
|