DisplayText
using System;
namespace Org.BouncyCastle.Asn1.X509
{
public class DisplayText : Asn1Encodable, IAsn1Choice
{
public const int ContentTypeIA5String = 0;
public const int ContentTypeBmpString = 1;
public const int ContentTypeUtf8String = 2;
public const int ContentTypeVisibleString = 3;
public const int DisplayTextMaximumSize = 200;
internal readonly int contentType;
internal readonly IAsn1String contents;
public static DisplayText GetInstance(object obj)
{
return Asn1Utilities.GetInstanceChoice(obj, GetOptional);
}
public static DisplayText GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return Asn1Utilities.GetInstanceChoice(taggedObject, declaredExplicit, GetInstance);
}
public static DisplayText GetOptional(Asn1Encodable element)
{
if (element == null)
throw new ArgumentNullException("element");
DisplayText displayText = element as DisplayText;
if (displayText != null)
return displayText;
DerStringBase optionalInnerObject = GetOptionalInnerObject(element);
if (optionalInnerObject != null)
return new DisplayText(optionalInnerObject);
return null;
}
public static DisplayText GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return Asn1Utilities.GetTaggedChoice(taggedObject, declaredExplicit, GetInstance);
}
private static DerStringBase GetOptionalInnerObject(Asn1Encodable element)
{
return (DerStringBase)(DerIA5String.GetOptional(element) ?? DerVisibleString.GetOptional(element) ?? ((object)DerBmpString.GetOptional(element)) ?? ((object)(DerUtf8String.GetOptional(element) ?? null)));
}
public DisplayText(int type, string text)
{
if (text.Length > 200)
text = text.Substring(0, 200);
contentType = type;
switch (type) {
case 0:
contents = new DerIA5String(text);
break;
case 2:
contents = new DerUtf8String(text);
break;
case 3:
contents = new DerVisibleString(text);
break;
case 1:
contents = new DerBmpString(text);
break;
default:
contents = new DerUtf8String(text);
break;
}
}
public DisplayText(string text)
{
if (text.Length > 200)
text = text.Substring(0, 200);
contentType = 2;
contents = new DerUtf8String(text);
}
public DisplayText(IAsn1String contents)
{
this.contents = contents;
}
public override Asn1Object ToAsn1Object()
{
return (Asn1Object)contents;
}
public string GetString()
{
return contents.GetString();
}
}
}