EncryptedData
using Org.BouncyCastle.Asn1.X509;
using System;
namespace Org.BouncyCastle.Asn1.Pkcs
{
public class EncryptedData : Asn1Encodable
{
private readonly Asn1Sequence m_data;
public DerObjectIdentifier ContentType => DerObjectIdentifier.GetInstance(m_data[0]);
public AlgorithmIdentifier EncryptionAlgorithm => AlgorithmIdentifier.GetInstance(m_data[1]);
public Asn1OctetString Content {
get {
if (m_data.Count != 3)
return null;
return Asn1OctetString.GetTagged(Asn1TaggedObject.GetInstance(m_data[2], 128, 0), false);
}
}
public static EncryptedData GetInstance(object obj)
{
if (obj == null)
return null;
EncryptedData encryptedData = obj as EncryptedData;
if (encryptedData != null)
return encryptedData;
return new EncryptedData(Asn1Sequence.GetInstance(obj));
}
public static EncryptedData GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new EncryptedData(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
}
public static EncryptedData GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new EncryptedData(Asn1Sequence.GetTagged(taggedObject, declaredExplicit));
}
private EncryptedData(Asn1Sequence seq)
{
int count = seq.Count;
if (count != 2)
throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq");
if (!DerInteger.GetInstance(seq[0]).HasValue(0))
throw new ArgumentException("sequence not version 0");
m_data = Asn1Sequence.GetInstance(seq[1]);
}
public EncryptedData(DerObjectIdentifier contentType, AlgorithmIdentifier encryptionAlgorithm, Asn1Encodable content)
{
m_data = new BerSequence(contentType, encryptionAlgorithm, new BerTaggedObject(false, 0, content));
}
public override Asn1Object ToAsn1Object()
{
return new BerSequence(DerInteger.Zero, m_data);
}
}
}