using System; namespace Org.BouncyCastle.Asn1.Ess { public class ContentHints : Asn1Encodable { private readonly DerUtf8String contentDescription; private readonly DerObjectIdentifier contentType; public static ContentHints GetInstance( object o) { if (o == null || o is ContentHints) { return (ContentHints)o; } if (o is Asn1Sequence) { return new ContentHints((Asn1Sequence)o); } throw new ArgumentException("unknown object in 'ContentHints' factory : " + o.GetType().Name + "."); } /** * constructor */ private ContentHints( Asn1Sequence seq) { IAsn1Convertible field = seq[0]; if (field.ToAsn1Object() is DerUtf8String) { contentDescription = DerUtf8String.GetInstance(field); contentType = DerObjectIdentifier.GetInstance(seq[1]); } else { contentType = DerObjectIdentifier.GetInstance(seq[0]); } } public ContentHints( DerObjectIdentifier contentType) { this.contentType = contentType; this.contentDescription = null; } public ContentHints( DerObjectIdentifier contentType, DerUtf8String contentDescription) { this.contentType = contentType; this.contentDescription = contentDescription; } public DerObjectIdentifier ContentType { get { return contentType; } } public DerUtf8String ContentDescription { get { return contentDescription; } } /** *
* ContentHints ::= SEQUENCE { * contentDescription UTF8String (SIZE (1..MAX)) OPTIONAL, * contentType ContentType } **/ public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector(); if (contentDescription != null) { v.Add(contentDescription); } v.Add(contentType); return new DerSequence(v); } } }