125 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections;
 | |
| 
 | |
| using Org.BouncyCastle.Asn1;
 | |
| using Org.BouncyCastle.Asn1.X509;
 | |
| 
 | |
| namespace Org.BouncyCastle.Asn1.X509.Qualified
 | |
| {
 | |
|     /**
 | |
|     * The SemanticsInformation object.
 | |
|     * <pre>
 | |
|     *       SemanticsInformation ::= SEQUENCE {
 | |
|     *         semanticsIdentifier        OBJECT IDENTIFIER   OPTIONAL,
 | |
|     *         nameRegistrationAuthorities NameRegistrationAuthorities
 | |
|     *                                                         OPTIONAL }
 | |
|     *         (WITH COMPONENTS {..., semanticsIdentifier PRESENT}|
 | |
|     *          WITH COMPONENTS {..., nameRegistrationAuthorities PRESENT})
 | |
|     *
 | |
|     *     NameRegistrationAuthorities ::=  SEQUENCE SIZE (1..MAX) OF
 | |
|     *         GeneralName
 | |
|     * </pre>
 | |
|     */
 | |
|     public class SemanticsInformation
 | |
| 		: Asn1Encodable
 | |
|     {
 | |
|         private readonly DerObjectIdentifier	semanticsIdentifier;
 | |
|         private readonly GeneralName[]			nameRegistrationAuthorities;
 | |
| 
 | |
| 		public static SemanticsInformation GetInstance(
 | |
| 			object obj)
 | |
|         {
 | |
|             if (obj == null || obj is SemanticsInformation)
 | |
|             {
 | |
|                 return (SemanticsInformation) obj;
 | |
|             }
 | |
| 
 | |
| 			if (obj is Asn1Sequence)
 | |
|             {
 | |
|                 return new SemanticsInformation(Asn1Sequence.GetInstance(obj));
 | |
|             }
 | |
| 
 | |
| 			throw new ArgumentException("unknown object in GetInstance: " + obj.GetType().FullName, "obj");
 | |
| 		}
 | |
| 
 | |
| 		public SemanticsInformation(
 | |
| 			Asn1Sequence seq)
 | |
|         {
 | |
|             if (seq.Count < 1)
 | |
|             {
 | |
|                 throw new ArgumentException("no objects in SemanticsInformation");
 | |
|             }
 | |
| 
 | |
| 			IEnumerator e = seq.GetEnumerator();
 | |
| 			e.MoveNext();
 | |
|             object obj = e.Current;
 | |
|             if (obj is DerObjectIdentifier)
 | |
|             {
 | |
|                 semanticsIdentifier = DerObjectIdentifier.GetInstance(obj);
 | |
|                 if (e.MoveNext())
 | |
|                 {
 | |
|                     obj  = e.Current;
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     obj  = null;
 | |
|                 }
 | |
|             }
 | |
| 
 | |
| 			if (obj  != null)
 | |
|             {
 | |
|                 Asn1Sequence generalNameSeq = Asn1Sequence.GetInstance(obj );
 | |
|                 nameRegistrationAuthorities = new GeneralName[generalNameSeq.Count];
 | |
|                 for (int i= 0; i < generalNameSeq.Count; i++)
 | |
|                 {
 | |
|                     nameRegistrationAuthorities[i] = GeneralName.GetInstance(generalNameSeq[i]);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 		public SemanticsInformation(
 | |
|             DerObjectIdentifier semanticsIdentifier,
 | |
|             GeneralName[] generalNames)
 | |
|         {
 | |
|             this.semanticsIdentifier = semanticsIdentifier;
 | |
|             this.nameRegistrationAuthorities = generalNames;
 | |
|         }
 | |
| 
 | |
| 		public SemanticsInformation(
 | |
| 			DerObjectIdentifier semanticsIdentifier)
 | |
|         {
 | |
|             this.semanticsIdentifier = semanticsIdentifier;
 | |
|         }
 | |
| 
 | |
|         public SemanticsInformation(
 | |
| 			GeneralName[] generalNames)
 | |
|         {
 | |
|             this.nameRegistrationAuthorities = generalNames;
 | |
|         }
 | |
| 
 | |
| 		public DerObjectIdentifier SemanticsIdentifier { get { return semanticsIdentifier; } }
 | |
| 
 | |
| 		public GeneralName[] GetNameRegistrationAuthorities()
 | |
|         {
 | |
|             return nameRegistrationAuthorities;
 | |
|         }
 | |
| 
 | |
| 		public override Asn1Object ToAsn1Object()
 | |
|         {
 | |
|             Asn1EncodableVector seq = new Asn1EncodableVector();
 | |
| 
 | |
|             if (this.semanticsIdentifier != null)
 | |
|             {
 | |
|                 seq.Add(semanticsIdentifier);
 | |
|             }
 | |
| 
 | |
| 			if (this.nameRegistrationAuthorities != null)
 | |
|             {
 | |
|                 seq.Add(new DerSequence(nameRegistrationAuthorities));
 | |
|             }
 | |
| 
 | |
| 			return new DerSequence(seq);
 | |
|         }
 | |
|     }
 | |
| }
 |