OriginatorIdentifierOrKey
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Utilities;
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 => m_id as IssuerAndSerialNumber;
public SubjectKeyIdentifier SubjectKeyIdentifier {
get {
Asn1TaggedObject asn1TaggedObject = m_id as Asn1TaggedObject;
if (asn1TaggedObject != null && asn1TaggedObject.HasContextTag(0))
return SubjectKeyIdentifier.GetInstance(asn1TaggedObject, false);
return null;
}
}
public OriginatorPublicKey OriginatorPublicKey {
get {
Asn1TaggedObject asn1TaggedObject = m_id as Asn1TaggedObject;
if (asn1TaggedObject != null && asn1TaggedObject.HasContextTag(1))
return OriginatorPublicKey.GetInstance(asn1TaggedObject, false);
return null;
}
}
public static OriginatorIdentifierOrKey GetInstance(object o)
{
if (o == null)
return null;
OriginatorIdentifierOrKey originatorIdentifierOrKey = o as OriginatorIdentifierOrKey;
if (originatorIdentifierOrKey != null)
return originatorIdentifierOrKey;
IssuerAndSerialNumber issuerAndSerialNumber = o as IssuerAndSerialNumber;
if (issuerAndSerialNumber != null)
return new OriginatorIdentifierOrKey(issuerAndSerialNumber);
Asn1Sequence asn1Sequence = o as Asn1Sequence;
if (asn1Sequence != null)
return new OriginatorIdentifierOrKey(IssuerAndSerialNumber.GetInstance(asn1Sequence));
Asn1TaggedObject asn1TaggedObject = o as Asn1TaggedObject;
if (asn1TaggedObject != null) {
if (asn1TaggedObject.HasContextTag(0))
return new OriginatorIdentifierOrKey(SubjectKeyIdentifier.GetInstance(asn1TaggedObject, false));
if (asn1TaggedObject.HasContextTag(1))
return new OriginatorIdentifierOrKey(OriginatorPublicKey.GetInstance(asn1TaggedObject, false));
}
throw new ArgumentException("Invalid OriginatorIdentifierOrKey: " + Platform.GetTypeName(o), "o");
}
public static OriginatorIdentifierOrKey GetInstance(Asn1TaggedObject o, bool explicitly)
{
return Asn1Utilities.GetInstanceFromChoice(o, explicitly, GetInstance);
}
public OriginatorIdentifierOrKey(IssuerAndSerialNumber 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();
}
}
}