301 lines
10 KiB
C#
301 lines
10 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.IO;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.IO;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Security;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.IO;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Cms
|
|
{
|
|
// Token: 0x02001E16 RID: 7702
|
|
[Token(Token = "0x2001E16")]
|
|
public class CmsEnvelopedDataStreamGenerator : CmsEnvelopedGenerator
|
|
{
|
|
// Token: 0x0600C10D RID: 49421 RVA: 0x002B9624 File Offset: 0x002B7824
|
|
[Token(Token = "0x600C10D")]
|
|
[Address(RVA = "0x2145A40", Offset = "0x2144A40", VA = "0x182145A40")]
|
|
public CmsEnvelopedDataStreamGenerator()
|
|
{
|
|
}
|
|
|
|
// Token: 0x0600C10E RID: 49422 RVA: 0x002B9638 File Offset: 0x002B7838
|
|
[Token(Token = "0x600C10E")]
|
|
[Address(RVA = "0x2145AA0", Offset = "0x2144AA0", VA = "0x182145AA0")]
|
|
public CmsEnvelopedDataStreamGenerator(SecureRandom rand)
|
|
{
|
|
IList list = Platform.CreateArrayList();
|
|
this.recipientInfoGenerators = list;
|
|
base..ctor();
|
|
this.rand = rand;
|
|
}
|
|
|
|
// Token: 0x0600C10F RID: 49423 RVA: 0x002B9664 File Offset: 0x002B7864
|
|
[Token(Token = "0x600C10F")]
|
|
[Address(RVA = "0x5C17C0", Offset = "0x5C07C0", VA = "0x1805C17C0")]
|
|
public void SetBufferSize(int bufferSize)
|
|
{
|
|
this._bufferSize = bufferSize;
|
|
}
|
|
|
|
// Token: 0x0600C110 RID: 49424 RVA: 0x002B9678 File Offset: 0x002B7878
|
|
[Token(Token = "0x600C110")]
|
|
[Address(RVA = "0x8A0F80", Offset = "0x89FF80", VA = "0x1808A0F80")]
|
|
public void SetBerEncodeRecipients(bool berEncodeRecipientSet)
|
|
{
|
|
this._berEncodeRecipientSet = berEncodeRecipientSet;
|
|
}
|
|
|
|
// Token: 0x17001DF1 RID: 7665
|
|
// (get) Token: 0x0600C111 RID: 49425 RVA: 0x002B968C File Offset: 0x002B788C
|
|
[Token(Token = "0x17001DF1")]
|
|
private DerInteger Version
|
|
{
|
|
[Token(Token = "0x600C111")]
|
|
[Address(RVA = "0x2145B50", Offset = "0x2144B50", VA = "0x182145B50")]
|
|
get
|
|
{
|
|
if (this._originatorInfo != (ulong)0L || this._unprotectedAttributes == (ulong)0L)
|
|
{
|
|
}
|
|
return new DerInteger(2);
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600C112 RID: 49426 RVA: 0x002B96B8 File Offset: 0x002B78B8
|
|
[Token(Token = "0x600C112")]
|
|
[Address(RVA = "0x21456B0", Offset = "0x21446B0", VA = "0x1821456B0")]
|
|
private Stream Open(Stream outStream, string encryptionOid, CipherKeyGenerator keyGen)
|
|
{
|
|
Asn1EncodableVector asn1EncodableVector;
|
|
for (;;)
|
|
{
|
|
int num = 0;
|
|
byte[] array = keyGen.GenerateKey();
|
|
KeyParameter keyParameter = ParameterUtilities.CreateKeyParameter(encryptionOid, array);
|
|
string text = this.ToString();
|
|
IList recipientInfoGenerators = this.recipientInfoGenerators;
|
|
if (asn1EncodableVector != 0)
|
|
{
|
|
break;
|
|
}
|
|
ArrayTypeMismatchException ex;
|
|
if (ex != 0)
|
|
{
|
|
}
|
|
if (num == 0)
|
|
{
|
|
Stream stream;
|
|
return stream;
|
|
}
|
|
}
|
|
if (asn1EncodableVector == 0)
|
|
{
|
|
}
|
|
if (asn1EncodableVector != 0)
|
|
{
|
|
Asn1Encodable[] array2 = new Asn1Encodable[1];
|
|
SecureRandom rand = this.rand;
|
|
throw new ArrayTypeMismatchException();
|
|
}
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600C113 RID: 49427 RVA: 0x002B976C File Offset: 0x002B796C
|
|
[Token(Token = "0x600C113")]
|
|
[Address(RVA = "0x2144E80", Offset = "0x2143E80", VA = "0x182144E80")]
|
|
private Stream Open(Stream outStream, AlgorithmIdentifier encAlgID, ICipherParameters cipherParameters, Asn1EncodableVector recipientInfos)
|
|
{
|
|
int num = 0;
|
|
BerSequenceGenerator berSequenceGenerator = new BerSequenceGenerator(outStream);
|
|
string text = berSequenceGenerator.ToString();
|
|
if (this._originatorInfo != (ulong)0L || this._unprotectedAttributes != (ulong)0L)
|
|
{
|
|
}
|
|
DerInteger derInteger = new DerInteger(num);
|
|
BerSequenceGenerator berSequenceGenerator2;
|
|
string text2 = berSequenceGenerator2.ToString();
|
|
if (this._berEncodeRecipientSet)
|
|
{
|
|
}
|
|
IEnumerator enumerator;
|
|
DerSetGenerator derSetGenerator;
|
|
string text3;
|
|
if (enumerator != 0)
|
|
{
|
|
if (num < enumerator)
|
|
{
|
|
num += num;
|
|
num++;
|
|
}
|
|
if (enumerator == 0)
|
|
{
|
|
num += num;
|
|
}
|
|
if (enumerator == 0)
|
|
{
|
|
throw new NullReferenceException();
|
|
}
|
|
text3 = derSetGenerator.ToString();
|
|
}
|
|
if (text3 != 0)
|
|
{
|
|
}
|
|
if (num == 0)
|
|
{
|
|
Stream rawOutputStream = derSetGenerator.GetRawOutputStream();
|
|
BerSequenceGenerator berSequenceGenerator3;
|
|
string text4 = berSequenceGenerator3.ToString();
|
|
string text5 = berSequenceGenerator3.ToString();
|
|
int num2 = 0;
|
|
SecureRandom rand = this.rand;
|
|
ParametersWithRandom parametersWithRandom = new ParametersWithRandom(num2, rand);
|
|
Stream stream;
|
|
int num3;
|
|
IBufferedCipher bufferedCipher;
|
|
CipherStream cipherStream = new CipherStream(stream, num3, bufferedCipher);
|
|
num3 = 0;
|
|
CmsEnvelopedDataStreamGenerator.CmsEnvelopedDataOutputStream cmsEnvelopedDataOutputStream;
|
|
cmsEnvelopedDataOutputStream._outer = cmsEnvelopedDataOutputStream;
|
|
cmsEnvelopedDataOutputStream._out = cipherStream;
|
|
cmsEnvelopedDataOutputStream._cGen = berSequenceGenerator;
|
|
cmsEnvelopedDataOutputStream._envGen = cmsEnvelopedDataOutputStream;
|
|
cmsEnvelopedDataOutputStream._eiGen = berSequenceGenerator3;
|
|
CmsException ex = new CmsException("exception decoding algorithm parameters.", num3);
|
|
throw new NullReferenceException();
|
|
}
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600C114 RID: 49428 RVA: 0x002B98B4 File Offset: 0x002B7AB4
|
|
[Token(Token = "0x600C114")]
|
|
[Address(RVA = "0x21454D0", Offset = "0x21444D0", VA = "0x1821454D0")]
|
|
public Stream Open(Stream outStream, string encryptionOid)
|
|
{
|
|
CipherKeyGenerator keyGenerator = GeneratorUtilities.GetKeyGenerator(encryptionOid);
|
|
SecureRandom rand = this.rand;
|
|
int defaultStrength = keyGenerator.defaultStrength;
|
|
KeyGenerationParameters keyGenerationParameters = new KeyGenerationParameters(rand, defaultStrength);
|
|
keyGenerator.Init(keyGenerationParameters);
|
|
return this.Open(outStream, encryptionOid, keyGenerator);
|
|
}
|
|
|
|
// Token: 0x0600C115 RID: 49429 RVA: 0x002B98F4 File Offset: 0x002B7AF4
|
|
[Token(Token = "0x600C115")]
|
|
[Address(RVA = "0x21455C0", Offset = "0x21445C0", VA = "0x1821455C0")]
|
|
public Stream Open(Stream outStream, string encryptionOid, int keySize)
|
|
{
|
|
CipherKeyGenerator keyGenerator = GeneratorUtilities.GetKeyGenerator(encryptionOid);
|
|
KeyGenerationParameters keyGenerationParameters = new KeyGenerationParameters(this.rand, keySize);
|
|
keyGenerator.Init(keyGenerationParameters);
|
|
return this.Open(outStream, encryptionOid, keyGenerator);
|
|
}
|
|
|
|
// Token: 0x04007A38 RID: 31288
|
|
[FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x4007A38")]
|
|
private object _originatorInfo;
|
|
|
|
// Token: 0x04007A39 RID: 31289
|
|
[FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x4007A39")]
|
|
private object _unprotectedAttributes;
|
|
|
|
// Token: 0x04007A3A RID: 31290
|
|
[FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x4007A3A")]
|
|
private int _bufferSize;
|
|
|
|
// Token: 0x04007A3B RID: 31291
|
|
[FieldOffset(Offset = "0x3C")]
|
|
[Token(Token = "0x4007A3B")]
|
|
private bool _berEncodeRecipientSet;
|
|
|
|
// Token: 0x02001E17 RID: 7703
|
|
[Token(Token = "0x2001E17")]
|
|
private class CmsEnvelopedDataOutputStream : BaseOutputStream
|
|
{
|
|
// Token: 0x0600C116 RID: 49430 RVA: 0x002B992C File Offset: 0x002B7B2C
|
|
[Token(Token = "0x600C116")]
|
|
[Address(RVA = "0x2141130", Offset = "0x2140130", VA = "0x182141130")]
|
|
public CmsEnvelopedDataOutputStream(CmsEnvelopedGenerator outer, CipherStream outStream, BerSequenceGenerator cGen, BerSequenceGenerator envGen, BerSequenceGenerator eiGen)
|
|
{
|
|
this._envGen = 0;
|
|
this._outer = outer;
|
|
this._cGen = cGen;
|
|
this._eiGen = 0;
|
|
this._out = outStream;
|
|
}
|
|
|
|
// Token: 0x0600C117 RID: 49431 RVA: 0x002B9964 File Offset: 0x002B7B64
|
|
[Token(Token = "0x600C117")]
|
|
[Address(RVA = "0x21448C0", Offset = "0x21438C0", VA = "0x1821448C0", Slot = "30")]
|
|
public override void WriteByte(byte b)
|
|
{
|
|
((IDisposable)this._out).Dispose();
|
|
}
|
|
|
|
// Token: 0x0600C118 RID: 49432 RVA: 0x002B9984 File Offset: 0x002B7B84
|
|
[Token(Token = "0x600C118")]
|
|
[Address(RVA = "0x21448F0", Offset = "0x21438F0", VA = "0x1821448F0", Slot = "29")]
|
|
public override void Write(byte[] bytes, int off, int len)
|
|
{
|
|
int num = this._out.Read(bytes, off, len);
|
|
}
|
|
|
|
// Token: 0x0600C119 RID: 49433 RVA: 0x002B99A8 File Offset: 0x002B7BA8
|
|
[Token(Token = "0x600C119")]
|
|
[Address(RVA = "0x2144700", Offset = "0x2143700", VA = "0x182144700", Slot = "15")]
|
|
public override void Close()
|
|
{
|
|
Platform.Dispose(this._out);
|
|
Stream rawOutputStream = this._eiGen.GetRawOutputStream();
|
|
if (this._outer.unprotectedAttributeGenerator != 0)
|
|
{
|
|
IDictionary dictionary = Platform.CreateHashtable();
|
|
Asn1EncodableVector asn1EncodableVector;
|
|
BerSet berSet = new BerSet(asn1EncodableVector);
|
|
BerSequenceGenerator envGen = this._envGen;
|
|
int num;
|
|
DerTaggedObject derTaggedObject = new DerTaggedObject(num != 0, 1, berSet);
|
|
num = 0;
|
|
string text = envGen.ToString();
|
|
}
|
|
Stream rawOutputStream2 = this._envGen.GetRawOutputStream();
|
|
Stream rawOutputStream3 = this._cGen.GetRawOutputStream();
|
|
base.Close();
|
|
}
|
|
|
|
// Token: 0x04007A3C RID: 31292
|
|
[FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x4007A3C")]
|
|
private readonly CmsEnvelopedGenerator _outer;
|
|
|
|
// Token: 0x04007A3D RID: 31293
|
|
[FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x4007A3D")]
|
|
private readonly CipherStream _out;
|
|
|
|
// Token: 0x04007A3E RID: 31294
|
|
[FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x4007A3E")]
|
|
private readonly BerSequenceGenerator _cGen;
|
|
|
|
// Token: 0x04007A3F RID: 31295
|
|
[FieldOffset(Offset = "0x48")]
|
|
[Token(Token = "0x4007A3F")]
|
|
private readonly BerSequenceGenerator _envGen;
|
|
|
|
// Token: 0x04007A40 RID: 31296
|
|
[FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x4007A40")]
|
|
private readonly BerSequenceGenerator _eiGen;
|
|
}
|
|
}
|
|
}
|