OriginatorIdentifierOrKey
using Org.BouncyCastle.Asn1.X509;
using System;
namespace Org.BouncyCastle.Asn1.Cms
{
public class OriginatorIdentifierOrKey : Asn1Encodable, IAsn1Choice
{
private readonly Asn1Encodable m_id;
public Asn1Encodable ID => m_id;
public IssuerAndSerialNumber IssuerAndSerialNumber => IssuerAndSerialNumber.GetInstance(m_id);
public SubjectKeyIdentifier SubjectKeyIdentifier => Asn1Utilities.GetOptionalContextTagged(m_id, 0, false, SubjectKeyIdentifier.GetTagged);
public OriginatorPublicKey OriginatorPublicKey => Asn1Utilities.GetOptionalContextTagged(m_id, 1, false, OriginatorPublicKey.GetTagged);
public static OriginatorIdentifierOrKey GetInstance(object o)
{
return Asn1Utilities.GetInstanceChoice(o, GetOptional);
}
public static OriginatorIdentifierOrKey GetInstance(Asn1TaggedObject o, bool explicitly)
{
return Asn1Utilities.GetInstanceChoice(o, explicitly, GetInstance);
}
public static OriginatorIdentifierOrKey GetOptional(Asn1Encodable element)
{
if (element == null)
throw new ArgumentNullException("element");
OriginatorIdentifierOrKey originatorIdentifierOrKey = element as OriginatorIdentifierOrKey;
if (originatorIdentifierOrKey != null)
return originatorIdentifierOrKey;
IssuerAndSerialNumber optional = IssuerAndSerialNumber.GetOptional(element);
if (optional != null)
return new OriginatorIdentifierOrKey(optional);
Asn1TaggedObject optional2 = Asn1TaggedObject.GetOptional(element);
if (optional2 != null) {
if (optional2.HasContextTag(0))
return new OriginatorIdentifierOrKey(SubjectKeyIdentifier.GetTagged(optional2, false));
if (optional2.HasContextTag(1))
return new OriginatorIdentifierOrKey(OriginatorPublicKey.GetTagged(optional2, false));
}
return null;
}
public static OriginatorIdentifierOrKey GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return Asn1Utilities.GetTaggedChoice(taggedObject, declaredExplicit, GetInstance);
}
public OriginatorIdentifierOrKey(IssuerAndSerialNumber id)
{
if (id == null)
throw new ArgumentNullException("id");
m_id = id;
}
public OriginatorIdentifierOrKey(SubjectKeyIdentifier id)
{
m_id = new DerTaggedObject(false, 0, id);
}
public OriginatorIdentifierOrKey(OriginatorPublicKey id)
{
m_id = new DerTaggedObject(false, 1, id);
}
public override Asn1Object ToAsn1Object()
{
return m_id.ToAsn1Object();
}
}
}