123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- #pragma warning disable
- using System;
- using System.Collections;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Math;
- namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509
- {
- /**
- * <code>NoticeReference</code> class, used in
- * <code>CertificatePolicies</code> X509 V3 extensions
- * (in policy qualifiers).
- *
- * <pre>
- * NoticeReference ::= Sequence {
- * organization DisplayText,
- * noticeNumbers Sequence OF Integer }
- *
- * </pre>
- *
- * @see PolicyQualifierInfo
- * @see PolicyInformation
- */
- public class NoticeReference
- : Asn1Encodable
- {
- private readonly DisplayText organization;
- private readonly Asn1Sequence noticeNumbers;
- private static Asn1EncodableVector ConvertVector(IList numbers)
- {
- Asn1EncodableVector av = new Asn1EncodableVector();
- foreach (object o in numbers)
- {
- DerInteger di;
- if (o is BigInteger)
- {
- di = new DerInteger((BigInteger)o);
- }
- else if (o is int)
- {
- di = new DerInteger((int)o);
- }
- else
- {
- throw new ArgumentException();
- }
- av.Add(di);
- }
- return av;
- }
- /**
- * Creates a new <code>NoticeReference</code> instance.
- *
- * @param organization a <code>String</code> value
- * @param numbers a <code>Vector</code> value
- */
- public NoticeReference(string organization, IList numbers)
- : this(organization, ConvertVector(numbers))
- {
- }
- /**
- * Creates a new <code>NoticeReference</code> instance.
- *
- * @param organization a <code>String</code> value
- * @param noticeNumbers an <code>ASN1EncodableVector</code> value
- */
- public NoticeReference(string organization, Asn1EncodableVector noticeNumbers)
- : this(new DisplayText(organization), noticeNumbers)
- {
- }
- /**
- * Creates a new <code>NoticeReference</code> instance.
- *
- * @param organization displayText
- * @param noticeNumbers an <code>ASN1EncodableVector</code> value
- */
- public NoticeReference(DisplayText organization, Asn1EncodableVector noticeNumbers)
- {
- this.organization = organization;
- this.noticeNumbers = new DerSequence(noticeNumbers);
- }
- /**
- * Creates a new <code>NoticeReference</code> instance.
- * <p>Useful for reconstructing a <code>NoticeReference</code>
- * instance from its encodable/encoded form.</p>
- *
- * @param as an <code>Asn1Sequence</code> value obtained from either
- * calling @{link ToAsn1Object()} for a <code>NoticeReference</code>
- * instance or from parsing it from a Der-encoded stream.
- */
- private NoticeReference(Asn1Sequence seq)
- {
- if (seq.Count != 2)
- throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
- organization = DisplayText.GetInstance(seq[0]);
- noticeNumbers = Asn1Sequence.GetInstance(seq[1]);
- }
- public static NoticeReference GetInstance(object obj)
- {
- if (obj is NoticeReference)
- return (NoticeReference)obj;
- if (obj == null)
- return null;
- return new NoticeReference(Asn1Sequence.GetInstance(obj));
- }
- public virtual DisplayText Organization
- {
- get { return organization; }
- }
- public virtual DerInteger[] GetNoticeNumbers()
- {
- DerInteger[] tmp = new DerInteger[noticeNumbers.Count];
- for (int i = 0; i != noticeNumbers.Count; ++i)
- {
- tmp[i] = DerInteger.GetInstance(noticeNumbers[i]);
- }
- return tmp;
- }
- /**
- * Describe <code>ToAsn1Object</code> method here.
- *
- * @return a <code>Asn1Object</code> value
- */
- public override Asn1Object ToAsn1Object()
- {
- return new DerSequence(organization, noticeNumbers);
- }
- }
- }
- #pragma warning restore
- #endif
|