SignerAttribute
using Org.BouncyCastle.Asn1.X509;
using System;
namespace Org.BouncyCastle.Asn1.Esf
{
public class SignerAttribute : Asn1Encodable
{
private readonly Asn1Sequence m_claimedAttributes;
private readonly AttributeCertificate m_certifiedAttributes;
public virtual Asn1Sequence ClaimedAttributes => m_claimedAttributes;
public virtual AttributeCertificate CertifiedAttributes => m_certifiedAttributes;
public static SignerAttribute GetInstance(object obj)
{
if (obj == null)
return null;
SignerAttribute signerAttribute = obj as SignerAttribute;
if (signerAttribute != null)
return signerAttribute;
return new SignerAttribute(Asn1Sequence.GetInstance(obj), true);
}
public static SignerAttribute GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new SignerAttribute(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
}
public static SignerAttribute GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new SignerAttribute(Asn1Sequence.GetTagged(taggedObject, declaredExplicit));
}
private SignerAttribute(Asn1Sequence seq, bool dummy)
{
Asn1TaggedObject instance = Asn1TaggedObject.GetInstance(seq[0], 128);
if (instance.TagNo == 0)
m_claimedAttributes = Asn1Sequence.GetInstance(instance, true);
else {
if (instance.TagNo != 1)
throw new ArgumentException("illegal tag.", "seq");
m_certifiedAttributes = AttributeCertificate.GetInstance(instance, true);
}
}
public SignerAttribute(Asn1Sequence claimedAttributes)
{
if (claimedAttributes == null)
throw new ArgumentNullException("claimedAttributes");
m_claimedAttributes = claimedAttributes;
}
public SignerAttribute(AttributeCertificate certifiedAttributes)
{
if (certifiedAttributes == null)
throw new ArgumentNullException("certifiedAttributes");
m_certifiedAttributes = certifiedAttributes;
}
public override Asn1Object ToAsn1Object()
{
if (m_claimedAttributes == null)
return new DerSequence(new DerTaggedObject(1, m_certifiedAttributes));
return new DerSequence(new DerTaggedObject(0, m_claimedAttributes));
}
}
}