254 lines
8.3 KiB
C#
254 lines
8.3 KiB
C#
using System;
|
|
using System.Collections;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Cms;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Cms.Ecc;
|
|
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.Security;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.X509;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Cms
|
|
{
|
|
// Token: 0x02001E39 RID: 7737
|
|
[Token(Token = "0x2001E39")]
|
|
internal class KeyAgreeRecipientInfoGenerator : RecipientInfoGenerator
|
|
{
|
|
// Token: 0x0600C21C RID: 49692 RVA: 0x002BE138 File Offset: 0x002BC338
|
|
[Token(Token = "0x600C21C")]
|
|
[Address(RVA = "0x412370", Offset = "0x411370", VA = "0x180412370")]
|
|
internal KeyAgreeRecipientInfoGenerator()
|
|
{
|
|
}
|
|
|
|
// Token: 0x17001E12 RID: 7698
|
|
// (set) Token: 0x0600C21D RID: 49693 RVA: 0x002BE14C File Offset: 0x002BC34C
|
|
[Token(Token = "0x17001E12")]
|
|
internal DerObjectIdentifier KeyAgreementOID
|
|
{
|
|
[Token(Token = "0x600C21D")]
|
|
[Address(RVA = "0x415800", Offset = "0x414800", VA = "0x180415800")]
|
|
set
|
|
{
|
|
this.keyAgreementOID = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17001E13 RID: 7699
|
|
// (set) Token: 0x0600C21E RID: 49694 RVA: 0x002BE160 File Offset: 0x002BC360
|
|
[Token(Token = "0x17001E13")]
|
|
internal DerObjectIdentifier KeyEncryptionOID
|
|
{
|
|
[Token(Token = "0x600C21E")]
|
|
[Address(RVA = "0x4157F0", Offset = "0x4147F0", VA = "0x1804157F0")]
|
|
set
|
|
{
|
|
this.keyEncryptionOID = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17001E14 RID: 7700
|
|
// (set) Token: 0x0600C21F RID: 49695 RVA: 0x002BE174 File Offset: 0x002BC374
|
|
[Token(Token = "0x17001E14")]
|
|
internal ICollection RecipientCerts
|
|
{
|
|
[Token(Token = "0x600C21F")]
|
|
[Address(RVA = "0x2930BF0", Offset = "0x292FBF0", VA = "0x182930BF0")]
|
|
set
|
|
{
|
|
IList list = Platform.CreateArrayList(value);
|
|
this.recipientCerts = list;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17001E15 RID: 7701
|
|
// (set) Token: 0x0600C220 RID: 49696 RVA: 0x002BE190 File Offset: 0x002BC390
|
|
[Token(Token = "0x17001E15")]
|
|
internal AsymmetricCipherKeyPair SenderKeyPair
|
|
{
|
|
[Token(Token = "0x600C220")]
|
|
[Address(RVA = "0x415820", Offset = "0x414820", VA = "0x180415820")]
|
|
set
|
|
{
|
|
this.senderKeyPair = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600C221 RID: 49697 RVA: 0x002BE1A4 File Offset: 0x002BC3A4
|
|
[Token(Token = "0x600C221")]
|
|
[Address(RVA = "0x292FE60", Offset = "0x292EE60", VA = "0x18292FE60", Slot = "4")]
|
|
public RecipientInfo Generate(KeyParameter contentEncryptionKey, SecureRandom random)
|
|
{
|
|
for (;;)
|
|
{
|
|
int num = 0;
|
|
byte[] key = contentEncryptionKey.GetKey();
|
|
AsymmetricCipherKeyPair asymmetricCipherKeyPair = this.senderKeyPair;
|
|
AsymmetricKeyParameter publicParameter = asymmetricCipherKeyPair.publicParameter;
|
|
AsymmetricKeyParameter privateParameter = asymmetricCipherKeyPair.privateParameter;
|
|
OriginatorIdentifierOrKey originatorIdentifierOrKey = new OriginatorIdentifierOrKey(KeyAgreeRecipientInfoGenerator.CreateOriginatorPublicKey(publicParameter));
|
|
string identifier = this.keyAgreementOID.identifier;
|
|
string ecmqvSha1Kdf = CmsEnvelopedGenerator.ECMqvSha1Kdf;
|
|
if (identifier.Equals(ecmqvSha1Kdf))
|
|
{
|
|
IAsymmetricCipherKeyPairGenerator keyPairGenerator = GeneratorUtilities.GetKeyPairGenerator(this.keyAgreementOID);
|
|
if (publicParameter == 0 || publicParameter == 0)
|
|
{
|
|
goto IL_25C;
|
|
}
|
|
int num2 = 0;
|
|
if (num < num2)
|
|
{
|
|
num += num;
|
|
num++;
|
|
}
|
|
int num3 = 0;
|
|
if (num < num3)
|
|
{
|
|
num += num;
|
|
num++;
|
|
}
|
|
OriginatorPublicKey originatorPublicKey;
|
|
int num4;
|
|
MQVuserKeyingMaterial mqvuserKeyingMaterial = new MQVuserKeyingMaterial(originatorPublicKey, num4);
|
|
num4 = 0;
|
|
DerOctetString derOctetString = new DerOctetString(mqvuserKeyingMaterial);
|
|
if (num == 0)
|
|
{
|
|
}
|
|
if (num == 0)
|
|
{
|
|
goto IL_250;
|
|
}
|
|
if (mqvuserKeyingMaterial == 0)
|
|
{
|
|
}
|
|
if (mqvuserKeyingMaterial == 0)
|
|
{
|
|
goto IL_250;
|
|
}
|
|
if (privateParameter == 0)
|
|
{
|
|
}
|
|
if (privateParameter == 0)
|
|
{
|
|
goto IL_250;
|
|
}
|
|
}
|
|
Asn1Encodable[] array = new Asn1Encodable[2];
|
|
DerObjectIdentifier derObjectIdentifier = this.keyEncryptionOID;
|
|
if (derObjectIdentifier != 0)
|
|
{
|
|
}
|
|
array[0] = derObjectIdentifier;
|
|
DerNull instance = DerNull.Instance;
|
|
if (instance != 0)
|
|
{
|
|
}
|
|
array[1] = instance;
|
|
DerSequence derSequence = new DerSequence(array);
|
|
AlgorithmIdentifier algorithmIdentifier = new AlgorithmIdentifier(this.keyAgreementOID, derSequence);
|
|
IList list = this.recipientCerts;
|
|
Asn1EncodableVector asn1EncodableVector;
|
|
if (asn1EncodableVector != 0)
|
|
{
|
|
if (asn1EncodableVector == 0)
|
|
{
|
|
}
|
|
if (asn1EncodableVector != 0)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
ArrayTypeMismatchException ex;
|
|
if (ex != 0)
|
|
{
|
|
}
|
|
if (num == 0)
|
|
{
|
|
goto Block_9;
|
|
}
|
|
}
|
|
}
|
|
Asn1Object asn1Object;
|
|
TbsCertificateStructure instance2 = TbsCertificateStructure.GetInstance(asn1Object);
|
|
X509Name issuer = instance2.issuer;
|
|
BigInteger value = instance2.serialNumber.Value;
|
|
KeyAgreeRecipientIdentifier keyAgreeRecipientIdentifier = new KeyAgreeRecipientIdentifier(new IssuerAndSerialNumber(issuer, value));
|
|
string identifier2 = this.keyAgreementOID.identifier;
|
|
string ecmqvSha1Kdf2 = CmsEnvelopedGenerator.ECMqvSha1Kdf;
|
|
if (identifier2.Equals(ecmqvSha1Kdf2))
|
|
{
|
|
}
|
|
DerObjectIdentifier derObjectIdentifier2 = this.keyAgreementOID;
|
|
string identifier3 = this.keyEncryptionOID.identifier;
|
|
IBasicAgreement basicAgreementWithKdf = AgreementUtilities.GetBasicAgreementWithKdf(derObjectIdentifier2, identifier3);
|
|
DerObjectIdentifier derObjectIdentifier3 = this.keyEncryptionOID;
|
|
int num5 = 0;
|
|
int defaultKeySize = GeneratorUtilities.GetDefaultKeySize(derObjectIdentifier3);
|
|
num5 += defaultKeySize;
|
|
byte[] array2;
|
|
KeyParameter keyParameter = ParameterUtilities.CreateKeyParameter(this.keyEncryptionOID, array2);
|
|
CmsEnvelopedHelper helper = KeyAgreeRecipientInfoGenerator.Helper;
|
|
DerObjectIdentifier derObjectIdentifier4 = this.keyEncryptionOID;
|
|
int num6 = 0;
|
|
string identifier4 = derObjectIdentifier4.identifier;
|
|
IWrapper wrapper = helper.CreateWrapper(identifier4);
|
|
ParametersWithRandom parametersWithRandom = new ParametersWithRandom(keyParameter, num6);
|
|
Asn1Encodable[] array3 = new Asn1Encodable[1];
|
|
DerOctetString derOctetString2;
|
|
RecipientEncryptedKey recipientEncryptedKey = new RecipientEncryptedKey(keyAgreeRecipientIdentifier, derOctetString2);
|
|
throw new ArrayTypeMismatchException();
|
|
Block_9:
|
|
KeyAgreeRecipientInfo keyAgreeRecipientInfo;
|
|
return new RecipientInfo(keyAgreeRecipientInfo);
|
|
IL_250:
|
|
throw new NullReferenceException();
|
|
IL_25C:
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600C222 RID: 49698 RVA: 0x002BE428 File Offset: 0x002BC628
|
|
[Token(Token = "0x600C222")]
|
|
[Address(RVA = "0x292FD40", Offset = "0x292ED40", VA = "0x18292FD40")]
|
|
private static OriginatorPublicKey CreateOriginatorPublicKey(AsymmetricKeyParameter publicKey)
|
|
{
|
|
SubjectPublicKeyInfo subjectPublicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(publicKey);
|
|
Asn1Object asn1Object = subjectPublicKeyInfo.algID.ToAsn1Object();
|
|
byte[] octets = subjectPublicKeyInfo.keyData.GetOctets();
|
|
AlgorithmIdentifier algorithmIdentifier;
|
|
return new OriginatorPublicKey(algorithmIdentifier, octets);
|
|
}
|
|
|
|
// Token: 0x04007AD5 RID: 31445
|
|
[Token(Token = "0x4007AD5")]
|
|
private static readonly CmsEnvelopedHelper Helper = CmsEnvelopedHelper.Instance;
|
|
|
|
// Token: 0x04007AD6 RID: 31446
|
|
[FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x4007AD6")]
|
|
private DerObjectIdentifier keyAgreementOID;
|
|
|
|
// Token: 0x04007AD7 RID: 31447
|
|
[FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x4007AD7")]
|
|
private DerObjectIdentifier keyEncryptionOID;
|
|
|
|
// Token: 0x04007AD8 RID: 31448
|
|
[FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x4007AD8")]
|
|
private IList recipientCerts;
|
|
|
|
// Token: 0x04007AD9 RID: 31449
|
|
[FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x4007AD9")]
|
|
private AsymmetricCipherKeyPair senderKeyPair;
|
|
}
|
|
}
|