CmsEnvelopedData
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Cms;
using Org.BouncyCastle.Asn1.X509;
using System;
using System.IO;
namespace Org.BouncyCastle.Cms
{
public class CmsEnvelopedData
{
private readonly ContentInfo m_contentInfo;
private readonly EnvelopedData m_envelopedData;
private readonly RecipientInformationStore m_recipientInfoStore;
public AlgorithmIdentifier EncryptionAlgorithmID => EnvelopedData.EncryptedContentInfo.ContentEncryptionAlgorithm;
public string EncryptionAlgOid => EncryptionAlgorithmID.Algorithm.GetID();
public ContentInfo ContentInfo => m_contentInfo;
public EnvelopedData EnvelopedData => m_envelopedData;
public CmsEnvelopedData(byte[] envelopedData)
: this(CmsUtilities.ReadContentInfo(envelopedData))
{
}
public CmsEnvelopedData(Stream envelopedData)
: this(CmsUtilities.ReadContentInfo(envelopedData))
{
}
public CmsEnvelopedData(ContentInfo contentInfo)
{
if (contentInfo == null)
throw new ArgumentNullException("contentInfo");
m_contentInfo = contentInfo;
m_envelopedData = EnvelopedData.GetInstance(contentInfo.Content);
Asn1Set recipientInfos = m_envelopedData.RecipientInfos;
EncryptedContentInfo encryptedContentInfo = m_envelopedData.EncryptedContentInfo;
CmsSecureReadable secureReadable = new CmsEnvelopedHelper.CmsEnvelopedSecureReadable(readable: new CmsProcessableByteArray(encryptedContentInfo.EncryptedContent.GetOctets()), algorithm: encryptedContentInfo.ContentEncryptionAlgorithm);
m_recipientInfoStore = CmsEnvelopedHelper.BuildRecipientInformationStore(recipientInfos, secureReadable);
}
public RecipientInformationStore GetRecipientInfos()
{
return m_recipientInfoStore;
}
public Org.BouncyCastle.Asn1.Cms.AttributeTable GetUnprotectedAttributes()
{
Asn1Set unprotectedAttrs = EnvelopedData.UnprotectedAttrs;
if (unprotectedAttrs == null)
return null;
return unprotectedAttrs.ToAttributeTable();
}
public byte[] GetEncoded()
{
return m_contentInfo.GetEncoded();
}
}
}