diff options
Diffstat (limited to 'crypto/src/asn1/cmp/PKIFreeText.cs')
-rw-r--r-- | crypto/src/asn1/cmp/PKIFreeText.cs | 73 |
1 files changed, 39 insertions, 34 deletions
diff --git a/crypto/src/asn1/cmp/PKIFreeText.cs b/crypto/src/asn1/cmp/PKIFreeText.cs index 006930320..f3a4b8a81 100644 --- a/crypto/src/asn1/cmp/PKIFreeText.cs +++ b/crypto/src/asn1/cmp/PKIFreeText.cs @@ -1,61 +1,66 @@ using System; -using Org.BouncyCastle.Utilities; - namespace Org.BouncyCastle.Asn1.Cmp { public class PkiFreeText : Asn1Encodable { - internal Asn1Sequence strings; - - public static PkiFreeText GetInstance( - Asn1TaggedObject obj, - bool isExplicit) + public static PkiFreeText GetInstance(object obj) { - return GetInstance(Asn1Sequence.GetInstance(obj, isExplicit)); + if (obj is PkiFreeText pkiFreeText) + return pkiFreeText; + + if (obj != null) + return new PkiFreeText(Asn1Sequence.GetInstance(obj)); + + return null; } - public static PkiFreeText GetInstance( - object obj) + public static PkiFreeText GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) + { + return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + } + + internal Asn1Sequence m_strings; + + internal PkiFreeText(Asn1Sequence seq) { - if (obj is PkiFreeText) - { - return (PkiFreeText)obj; - } - else if (obj is Asn1Sequence) + foreach (var element in seq) { - return new PkiFreeText((Asn1Sequence)obj); + if (!(element is DerUtf8String)) + throw new ArgumentException("attempt to insert non UTF8 STRING into PkiFreeText"); } - throw new ArgumentException("Unknown object in factory: " + Platform.GetTypeName(obj), "obj"); + m_strings = seq; } - public PkiFreeText( - Asn1Sequence seq) + public PkiFreeText(DerUtf8String p) { - foreach (object o in seq) - { - if (!(o is DerUtf8String)) - { - throw new ArgumentException("attempt to insert non UTF8 STRING into PkiFreeText"); - } - } + m_strings = new DerSequence(p); + } - this.strings = seq; + public PkiFreeText(string p) + : this(new DerUtf8String(p)) + { } - public PkiFreeText( - DerUtf8String p) + public PkiFreeText(DerUtf8String[] strs) { - strings = new DerSequence(p); + m_strings = new DerSequence(strs); } - public int Count + public PkiFreeText(string[] strs) { - get { return strings.Count; } + Asn1EncodableVector v = new Asn1EncodableVector(strs.Length); + for (int i = 0; i < strs.Length; i++) + { + v.Add(new DerUtf8String(strs[i])); + } + m_strings = new DerSequence(v); } + public virtual int Count => m_strings.Count; + /** * Return the UTF8STRING at index. * @@ -64,7 +69,7 @@ namespace Org.BouncyCastle.Asn1.Cmp */ public DerUtf8String this[int index] { - get { return (DerUtf8String) strings[index]; } + get { return (DerUtf8String)m_strings[index]; } } /** @@ -74,7 +79,7 @@ namespace Org.BouncyCastle.Asn1.Cmp */ public override Asn1Object ToAsn1Object() { - return strings; + return m_strings; } } } |