CertificateResponse
High level wrapper for the CertResponse CRMF structure.
using Org.BouncyCastle.Asn1.Cmp;
using Org.BouncyCastle.Asn1.Cms;
using Org.BouncyCastle.Asn1.Pkcs;
using Org.BouncyCastle.Cms;
using System;
namespace Org.BouncyCastle.Crmf
{
public class CertificateResponse
{
private readonly CertResponse m_certResponse;
public virtual bool HasEncryptedCertificate => m_certResponse.CertifiedKeyPair.CertOrEncCert.HasEncryptedCertificate;
public CertificateResponse(CertResponse certResponse)
{
m_certResponse = certResponse;
}
public virtual CmsEnvelopedData GetEncryptedCertificate()
{
if (!HasEncryptedCertificate)
throw new InvalidOperationException("encrypted certificate asked for, none found");
CertifiedKeyPair certifiedKeyPair = m_certResponse.CertifiedKeyPair;
CmsEnvelopedData cmsEnvelopedData = new CmsEnvelopedData(new Org.BouncyCastle.Asn1.Cms.ContentInfo(PkcsObjectIdentifiers.EnvelopedData, certifiedKeyPair.CertOrEncCert.EncryptedCert.Value));
if (cmsEnvelopedData.GetRecipientInfos().Count != 1)
throw new InvalidOperationException("data encrypted for more than one recipient");
return cmsEnvelopedData;
}
public virtual CmpCertificate GetCertificate()
{
if (HasEncryptedCertificate)
throw new InvalidOperationException("plaintext certificate asked for, none found");
return m_certResponse.CertifiedKeyPair.CertOrEncCert.Certificate;
}
public virtual CertResponse ToAsn1Structure()
{
return m_certResponse;
}
}
}