SigningCertificate
using Org.BouncyCastle.Asn1.X509;
using System;
namespace Org.BouncyCastle.Asn1.Ess
{
public class SigningCertificate : Asn1Encodable
{
private readonly Asn1Sequence m_certs;
private readonly Asn1Sequence m_policies;
public static SigningCertificate GetInstance(object o)
{
if (o == null)
return null;
SigningCertificate signingCertificate = o as SigningCertificate;
if (signingCertificate != null)
return signingCertificate;
return new SigningCertificate(Asn1Sequence.GetInstance(o));
}
public static SigningCertificate GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new SigningCertificate(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
}
public static SigningCertificate GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new SigningCertificate(Asn1Sequence.GetTagged(taggedObject, declaredExplicit));
}
[Obsolete("Use 'GetInstance' instead")]
public SigningCertificate(Asn1Sequence seq)
{
int count = seq.Count;
int sequencePosition = 0;
if (count < 1 || count > 2)
throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq");
m_certs = Asn1Sequence.GetInstance(seq[sequencePosition++]);
m_policies = Asn1Utilities.ReadOptional(seq, ref sequencePosition, Asn1Sequence.GetOptional);
if (sequencePosition != count)
throw new ArgumentException("Unexpected elements in sequence", "seq");
}
public SigningCertificate(EssCertID essCertID)
{
m_certs = new DerSequence(essCertID);
}
public EssCertID[] GetCerts()
{
return m_certs.MapElements(EssCertID.GetInstance);
}
public PolicyInformation[] GetPolicies()
{
return m_policies?.MapElements(PolicyInformation.GetInstance);
}
public override Asn1Object ToAsn1Object()
{
if (m_policies != null)
return DerSequence.FromElements(m_certs, m_policies);
return DerSequence.FromElement(m_certs);
}
}
}