Initial Commit
This commit is contained in:
		
							
								
								
									
										85
									
								
								iTechSharp/srcbc/asn1/esf/CertificateValues.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								iTechSharp/srcbc/asn1/esf/CertificateValues.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | ||||
| using System; | ||||
| using System.Collections; | ||||
|  | ||||
| using Org.BouncyCastle.Asn1.X509; | ||||
| using Org.BouncyCastle.Utilities.Collections; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// RFC 3126: 4.3.1 Certificate Values Attribute Definition | ||||
| 	/// <code> | ||||
| 	/// CertificateValues ::= SEQUENCE OF Certificate | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class CertificateValues | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly Asn1Sequence certificates; | ||||
|  | ||||
| 		public static CertificateValues GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is CertificateValues) | ||||
| 				return (CertificateValues) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new CertificateValues((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'CertificateValues' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private CertificateValues( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
|  | ||||
| 			foreach (Asn1Encodable ae in seq) | ||||
| 			{ | ||||
| 				X509CertificateStructure.GetInstance(ae.ToAsn1Object()); | ||||
| 			} | ||||
|  | ||||
| 			this.certificates = seq; | ||||
| 		} | ||||
|  | ||||
| 		public CertificateValues( | ||||
| 			params X509CertificateStructure[] certificates) | ||||
| 		{ | ||||
| 			if (certificates == null) | ||||
| 				throw new ArgumentNullException("certificates"); | ||||
|  | ||||
| 			this.certificates = new DerSequence(certificates); | ||||
| 		} | ||||
|  | ||||
| 		public CertificateValues( | ||||
| 			IEnumerable certificates) | ||||
| 		{ | ||||
| 			if (certificates == null) | ||||
| 				throw new ArgumentNullException("certificates"); | ||||
| 			if (!CollectionUtilities.CheckElementsAreOfType(certificates, typeof(X509CertificateStructure))) | ||||
| 				throw new ArgumentException("Must contain only 'X509CertificateStructure' objects", "certificates"); | ||||
|  | ||||
| 			this.certificates = new DerSequence( | ||||
| 				Asn1EncodableVector.FromEnumerable(certificates)); | ||||
| 		} | ||||
|  | ||||
| 		public X509CertificateStructure[] GetCertificates() | ||||
| 		{ | ||||
| 			X509CertificateStructure[] result = new X509CertificateStructure[certificates.Count]; | ||||
| 			for (int i = 0; i < certificates.Count; ++i) | ||||
| 			{ | ||||
| 				result[i] = X509CertificateStructure.GetInstance(certificates[i]); | ||||
| 			} | ||||
| 			return result; | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			return certificates; | ||||
| 		} | ||||
|  	} | ||||
| } | ||||
							
								
								
									
										17
									
								
								iTechSharp/srcbc/asn1/esf/CommitmentTypeIdentifier.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								iTechSharp/srcbc/asn1/esf/CommitmentTypeIdentifier.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| using System; | ||||
|  | ||||
| using Org.BouncyCastle.Asn1; | ||||
| using Org.BouncyCastle.Asn1.Pkcs; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
|     public abstract class CommitmentTypeIdentifier | ||||
|     { | ||||
|         public static readonly DerObjectIdentifier ProofOfOrigin = PkcsObjectIdentifiers.IdCtiEtsProofOfOrigin; | ||||
|         public static readonly DerObjectIdentifier ProofOfReceipt = PkcsObjectIdentifiers.IdCtiEtsProofOfReceipt; | ||||
|         public static readonly DerObjectIdentifier ProofOfDelivery = PkcsObjectIdentifiers.IdCtiEtsProofOfDelivery; | ||||
|         public static readonly DerObjectIdentifier ProofOfSender = PkcsObjectIdentifiers.IdCtiEtsProofOfSender; | ||||
|         public static readonly DerObjectIdentifier ProofOfApproval = PkcsObjectIdentifiers.IdCtiEtsProofOfApproval; | ||||
|         public static readonly DerObjectIdentifier ProofOfCreation = PkcsObjectIdentifiers.IdCtiEtsProofOfCreation; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										95
									
								
								iTechSharp/srcbc/asn1/esf/CommitmentTypeIndication.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								iTechSharp/srcbc/asn1/esf/CommitmentTypeIndication.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,95 @@ | ||||
| using System; | ||||
|  | ||||
| using Org.BouncyCastle.Asn1; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
|     public class CommitmentTypeIndication | ||||
|         : Asn1Encodable | ||||
|     { | ||||
|         private readonly DerObjectIdentifier	commitmentTypeId; | ||||
|         private readonly Asn1Sequence			commitmentTypeQualifier; | ||||
|  | ||||
| 		public static CommitmentTypeIndication GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is CommitmentTypeIndication) | ||||
| 				return (CommitmentTypeIndication) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new CommitmentTypeIndication((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'CommitmentTypeIndication' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		public CommitmentTypeIndication( | ||||
|             Asn1Sequence seq) | ||||
|         { | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
| 			if (seq.Count < 1 || seq.Count > 2) | ||||
| 				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); | ||||
|  | ||||
| 			this.commitmentTypeId = (DerObjectIdentifier) seq[0].ToAsn1Object(); | ||||
|  | ||||
| 			if (seq.Count > 1) | ||||
|             { | ||||
|                 this.commitmentTypeQualifier = (Asn1Sequence) seq[1].ToAsn1Object(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
| 		public CommitmentTypeIndication( | ||||
|             DerObjectIdentifier commitmentTypeId) | ||||
| 			: this(commitmentTypeId, null) | ||||
|         { | ||||
|         } | ||||
|  | ||||
| 		public CommitmentTypeIndication( | ||||
|             DerObjectIdentifier	commitmentTypeId, | ||||
|             Asn1Sequence		commitmentTypeQualifier) | ||||
|         { | ||||
| 			if (commitmentTypeId == null) | ||||
| 				throw new ArgumentNullException("commitmentTypeId"); | ||||
|  | ||||
| 			this.commitmentTypeId = commitmentTypeId; | ||||
|  | ||||
| 			if (commitmentTypeQualifier != null) | ||||
| 			{ | ||||
| 				this.commitmentTypeQualifier = commitmentTypeQualifier; | ||||
| 			} | ||||
|         } | ||||
|  | ||||
| 		public DerObjectIdentifier CommitmentTypeID | ||||
| 		{ | ||||
| 			get { return commitmentTypeId; } | ||||
| 		} | ||||
|  | ||||
| 		public Asn1Sequence CommitmentTypeQualifier | ||||
| 		{ | ||||
| 			get { return commitmentTypeQualifier; } | ||||
| 		} | ||||
|  | ||||
| 		/** | ||||
|         * <pre> | ||||
|         * CommitmentTypeIndication ::= SEQUENCE { | ||||
|         *      commitmentTypeId   CommitmentTypeIdentifier, | ||||
|         *      commitmentTypeQualifier   SEQUENCE SIZE (1..MAX) OF | ||||
|         *              CommitmentTypeQualifier OPTIONAL } | ||||
|         * </pre> | ||||
|         */ | ||||
|         public override Asn1Object ToAsn1Object() | ||||
|         { | ||||
|             Asn1EncodableVector v = new Asn1EncodableVector(commitmentTypeId); | ||||
|  | ||||
| 			if (commitmentTypeQualifier != null) | ||||
|             { | ||||
|                 v.Add(commitmentTypeQualifier); | ||||
|             } | ||||
|  | ||||
| 			return new DerSequence(v); | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										119
									
								
								iTechSharp/srcbc/asn1/esf/CommitmentTypeQualifier.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								iTechSharp/srcbc/asn1/esf/CommitmentTypeQualifier.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,119 @@ | ||||
| using System; | ||||
|  | ||||
| using Org.BouncyCastle.Asn1; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
|     /** | ||||
|     * Commitment type qualifiers, used in the Commitment-Type-Indication attribute (RFC3126). | ||||
|     * | ||||
|     * <pre> | ||||
|     *   CommitmentTypeQualifier ::= SEQUENCE { | ||||
|     *       commitmentTypeIdentifier  CommitmentTypeIdentifier, | ||||
|     *       qualifier          ANY DEFINED BY commitmentTypeIdentifier OPTIONAL } | ||||
|     * </pre> | ||||
|     */ | ||||
|     public class CommitmentTypeQualifier | ||||
|         : Asn1Encodable | ||||
|     { | ||||
|         private readonly DerObjectIdentifier	commitmentTypeIdentifier; | ||||
|         private readonly Asn1Object				qualifier; | ||||
|  | ||||
|         /** | ||||
|         * Creates a new <code>CommitmentTypeQualifier</code> instance. | ||||
|         * | ||||
|         * @param commitmentTypeIdentifier a <code>CommitmentTypeIdentifier</code> value | ||||
|         */ | ||||
|         public CommitmentTypeQualifier( | ||||
|             DerObjectIdentifier commitmentTypeIdentifier) | ||||
|             : this(commitmentTypeIdentifier, null) | ||||
|         { | ||||
|         } | ||||
|  | ||||
|     /** | ||||
|         * Creates a new <code>CommitmentTypeQualifier</code> instance. | ||||
|         * | ||||
|         * @param commitmentTypeIdentifier a <code>CommitmentTypeIdentifier</code> value | ||||
|         * @param qualifier the qualifier, defined by the above field. | ||||
|         */ | ||||
|         public CommitmentTypeQualifier( | ||||
|             DerObjectIdentifier	commitmentTypeIdentifier, | ||||
|             Asn1Encodable		qualifier) | ||||
|         { | ||||
| 			if (commitmentTypeIdentifier == null) | ||||
| 				throw new ArgumentNullException("commitmentTypeIdentifier"); | ||||
|  | ||||
| 			this.commitmentTypeIdentifier = commitmentTypeIdentifier; | ||||
|  | ||||
| 			if (qualifier != null) | ||||
| 			{ | ||||
| 				this.qualifier = qualifier.ToAsn1Object(); | ||||
| 			} | ||||
|         } | ||||
|  | ||||
|         /** | ||||
|         * Creates a new <code>CommitmentTypeQualifier</code> instance. | ||||
|         * | ||||
|         * @param as <code>CommitmentTypeQualifier</code> structure | ||||
|         * encoded as an Asn1Sequence. | ||||
|         */ | ||||
|         public CommitmentTypeQualifier( | ||||
|             Asn1Sequence seq) | ||||
|         { | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
| 			if (seq.Count < 1 || seq.Count > 2) | ||||
| 				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); | ||||
|  | ||||
| 			commitmentTypeIdentifier = (DerObjectIdentifier) seq[0].ToAsn1Object(); | ||||
|  | ||||
| 			if (seq.Count > 1) | ||||
|             { | ||||
|                 qualifier = seq[1].ToAsn1Object(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
| 		public static CommitmentTypeQualifier GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is CommitmentTypeQualifier) | ||||
| 				return (CommitmentTypeQualifier) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new CommitmentTypeQualifier((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'CommitmentTypeQualifier' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		public DerObjectIdentifier CommitmentTypeIdentifier | ||||
| 		{ | ||||
| 			get { return commitmentTypeIdentifier; } | ||||
| 		} | ||||
|  | ||||
| 		public Asn1Object Qualifier | ||||
| 		{ | ||||
| 			get { return qualifier; } | ||||
| 		} | ||||
|  | ||||
| 		/** | ||||
|         * Returns a DER-encodable representation of this instance. | ||||
|         * | ||||
|         * @return a <code>Asn1Object</code> value | ||||
|         */ | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			Asn1EncodableVector v = new Asn1EncodableVector( | ||||
| 				commitmentTypeIdentifier); | ||||
|  | ||||
| 			if (qualifier != null) | ||||
| 			{ | ||||
| 				v.Add(qualifier); | ||||
| 			} | ||||
|  | ||||
| 			return new DerSequence(v); | ||||
| 		} | ||||
|     } | ||||
| } | ||||
							
								
								
									
										84
									
								
								iTechSharp/srcbc/asn1/esf/CompleteCertificateRefs.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								iTechSharp/srcbc/asn1/esf/CompleteCertificateRefs.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,84 @@ | ||||
| using System; | ||||
| using System.Collections; | ||||
|  | ||||
| using Org.BouncyCastle.Utilities.Collections; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// RFC 3126: 4.2.1 Complete Certificate Refs Attribute Definition | ||||
| 	/// <code> | ||||
| 	/// CompleteCertificateRefs ::= SEQUENCE OF OtherCertID | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class CompleteCertificateRefs | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly Asn1Sequence otherCertIDs; | ||||
|  | ||||
| 		public static CompleteCertificateRefs GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is CompleteCertificateRefs) | ||||
| 				return (CompleteCertificateRefs) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new CompleteCertificateRefs((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'CompleteCertificateRefs' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private CompleteCertificateRefs( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
|  | ||||
| 			foreach (Asn1Encodable ae in seq) | ||||
| 			{ | ||||
| 				OtherCertID.GetInstance(ae.ToAsn1Object()); | ||||
| 			} | ||||
|  | ||||
| 			this.otherCertIDs = seq; | ||||
| 		} | ||||
|  | ||||
| 		public CompleteCertificateRefs( | ||||
| 			params OtherCertID[] otherCertIDs) | ||||
| 		{ | ||||
| 			if (otherCertIDs == null) | ||||
| 				throw new ArgumentNullException("otherCertIDs"); | ||||
|  | ||||
| 			this.otherCertIDs = new DerSequence(otherCertIDs); | ||||
| 		} | ||||
|  | ||||
| 		public CompleteCertificateRefs( | ||||
| 			IEnumerable otherCertIDs) | ||||
| 		{ | ||||
| 			if (otherCertIDs == null) | ||||
| 				throw new ArgumentNullException("otherCertIDs"); | ||||
| 			if (!CollectionUtilities.CheckElementsAreOfType(otherCertIDs, typeof(OtherCertID))) | ||||
| 				throw new ArgumentException("Must contain only 'OtherCertID' objects", "otherCertIDs"); | ||||
|  | ||||
| 			this.otherCertIDs = new DerSequence( | ||||
| 				Asn1EncodableVector.FromEnumerable(otherCertIDs)); | ||||
| 		} | ||||
|  | ||||
| 		public OtherCertID[] GetOtherCertIDs() | ||||
| 		{ | ||||
| 			OtherCertID[] result = new OtherCertID[otherCertIDs.Count]; | ||||
| 			for (int i = 0; i < otherCertIDs.Count; ++i) | ||||
| 			{ | ||||
| 				result[i] = OtherCertID.GetInstance(otherCertIDs[i].ToAsn1Object()); | ||||
| 			} | ||||
| 			return result; | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			return otherCertIDs; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										84
									
								
								iTechSharp/srcbc/asn1/esf/CompleteRevocationRefs.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								iTechSharp/srcbc/asn1/esf/CompleteRevocationRefs.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,84 @@ | ||||
| using System; | ||||
| using System.Collections; | ||||
|  | ||||
| using Org.BouncyCastle.Utilities.Collections; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition | ||||
| 	/// <code> | ||||
| 	/// CompleteRevocationRefs ::= SEQUENCE OF CrlOcspRef | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class CompleteRevocationRefs | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly Asn1Sequence crlOcspRefs; | ||||
|  | ||||
| 		public static CompleteRevocationRefs GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is CompleteRevocationRefs) | ||||
| 				return (CompleteRevocationRefs) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new CompleteRevocationRefs((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'CompleteRevocationRefs' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private CompleteRevocationRefs( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
|  | ||||
| 			foreach (Asn1Encodable ae in seq) | ||||
| 			{ | ||||
| 				CrlOcspRef.GetInstance(ae.ToAsn1Object()); | ||||
| 			} | ||||
|  | ||||
| 			this.crlOcspRefs = seq; | ||||
| 		} | ||||
|  | ||||
| 		public CompleteRevocationRefs( | ||||
| 			params CrlOcspRef[] crlOcspRefs) | ||||
| 		{ | ||||
| 			if (crlOcspRefs == null) | ||||
| 				throw new ArgumentNullException("crlOcspRefs"); | ||||
|  | ||||
| 			this.crlOcspRefs = new DerSequence(crlOcspRefs); | ||||
| 		} | ||||
|  | ||||
| 		public CompleteRevocationRefs( | ||||
| 			IEnumerable crlOcspRefs) | ||||
| 		{ | ||||
| 			if (crlOcspRefs == null) | ||||
| 				throw new ArgumentNullException("crlOcspRefs"); | ||||
| 			if (!CollectionUtilities.CheckElementsAreOfType(crlOcspRefs, typeof(CrlOcspRef))) | ||||
| 				throw new ArgumentException("Must contain only 'CrlOcspRef' objects", "crlOcspRefs"); | ||||
|  | ||||
| 			this.crlOcspRefs = new DerSequence( | ||||
| 				Asn1EncodableVector.FromEnumerable(crlOcspRefs)); | ||||
| 		} | ||||
|  | ||||
| 		public CrlOcspRef[] GetCrlOcspRefs() | ||||
| 		{ | ||||
| 			CrlOcspRef[] result = new CrlOcspRef[crlOcspRefs.Count]; | ||||
| 			for (int i = 0; i < crlOcspRefs.Count; ++i) | ||||
| 			{ | ||||
| 				result[i] = CrlOcspRef.GetInstance(crlOcspRefs[i].ToAsn1Object()); | ||||
| 			} | ||||
| 			return result; | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			return crlOcspRefs; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										110
									
								
								iTechSharp/srcbc/asn1/esf/CrlIdentifier.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								iTechSharp/srcbc/asn1/esf/CrlIdentifier.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,110 @@ | ||||
| using System; | ||||
|  | ||||
| using Org.BouncyCastle.Asn1.X509; | ||||
| using Org.BouncyCastle.Math; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition | ||||
| 	/// <code> | ||||
| 	/// CrlIdentifier ::= SEQUENCE  | ||||
| 	/// { | ||||
| 	/// 	crlissuer		Name, | ||||
| 	/// 	crlIssuedTime	UTCTime, | ||||
| 	/// 	crlNumber		INTEGER OPTIONAL | ||||
| 	/// } | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class CrlIdentifier | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly X509Name	crlIssuer; | ||||
| 		private readonly DerUtcTime	crlIssuedTime; | ||||
| 		private readonly DerInteger	crlNumber; | ||||
|  | ||||
| 		public static CrlIdentifier GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is CrlIdentifier) | ||||
| 				return (CrlIdentifier) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new CrlIdentifier((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'CrlIdentifier' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private CrlIdentifier( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
| 			if (seq.Count < 2 || seq.Count > 3) | ||||
| 				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); | ||||
|  | ||||
| 			this.crlIssuer = X509Name.GetInstance(seq[0]); | ||||
| 			this.crlIssuedTime = DerUtcTime.GetInstance(seq[1]); | ||||
|  | ||||
| 			if (seq.Count > 2) | ||||
| 			{ | ||||
| 				this.crlNumber = DerInteger.GetInstance(seq[2]); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public CrlIdentifier( | ||||
| 			X509Name	crlIssuer, | ||||
| 			DateTime	crlIssuedTime) | ||||
| 			: this(crlIssuer, crlIssuedTime, null) | ||||
| 		{ | ||||
| 		} | ||||
|  | ||||
| 		public CrlIdentifier( | ||||
| 			X509Name	crlIssuer, | ||||
| 			DateTime	crlIssuedTime, | ||||
| 			BigInteger	crlNumber) | ||||
| 		{ | ||||
| 			if (crlIssuer == null) | ||||
| 				throw new ArgumentNullException("crlIssuer"); | ||||
|  | ||||
| 			this.crlIssuer = crlIssuer; | ||||
| 			this.crlIssuedTime = new DerUtcTime(crlIssuedTime); | ||||
|  | ||||
| 			if (crlNumber != null) | ||||
| 			{ | ||||
| 				this.crlNumber = new DerInteger(crlNumber); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public X509Name CrlIssuer | ||||
| 		{ | ||||
| 			get { return crlIssuer; } | ||||
| 		} | ||||
|  | ||||
| 		public DateTime CrlIssuedTime | ||||
| 		{ | ||||
| 			get { return crlIssuedTime.ToAdjustedDateTime(); } | ||||
| 		} | ||||
|  | ||||
| 		public BigInteger CrlNumber | ||||
| 		{ | ||||
| 			get { return crlNumber == null ? null : crlNumber.Value; } | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			Asn1EncodableVector v = new Asn1EncodableVector( | ||||
| 				crlIssuer.ToAsn1Object(), crlIssuedTime); | ||||
|  | ||||
| 			if (crlNumber != null) | ||||
| 			{ | ||||
| 				v.Add(crlNumber); | ||||
| 			} | ||||
|  | ||||
| 			return new DerSequence(v); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										89
									
								
								iTechSharp/srcbc/asn1/esf/CrlListID.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								iTechSharp/srcbc/asn1/esf/CrlListID.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | ||||
| using System; | ||||
| using System.Collections; | ||||
|  | ||||
| using Org.BouncyCastle.Utilities.Collections; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition | ||||
| 	/// <code> | ||||
| 	/// CRLListID ::= SEQUENCE  | ||||
| 	/// { | ||||
| 	///		crls	SEQUENCE OF CrlValidatedID | ||||
| 	/// } | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class CrlListID | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly Asn1Sequence crls; | ||||
|  | ||||
| 		public static CrlListID GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is CrlListID) | ||||
| 				return (CrlListID) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new CrlListID((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'CrlListID' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private CrlListID( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
| 			if (seq.Count != 1) | ||||
| 				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); | ||||
|  | ||||
| 			this.crls = (Asn1Sequence) seq[0].ToAsn1Object(); | ||||
|  | ||||
| 			foreach (Asn1Encodable ae in this.crls) | ||||
| 			{ | ||||
| 				CrlValidatedID.GetInstance(ae.ToAsn1Object()); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public CrlListID( | ||||
| 			params CrlValidatedID[] crls) | ||||
| 		{ | ||||
| 			if (crls == null) | ||||
| 				throw new ArgumentNullException("crls"); | ||||
|  | ||||
| 			this.crls = new DerSequence(crls); | ||||
| 		} | ||||
|  | ||||
| 		public CrlListID( | ||||
| 			IEnumerable crls) | ||||
| 		{ | ||||
| 			if (crls == null) | ||||
| 				throw new ArgumentNullException("crls"); | ||||
| 			if (!CollectionUtilities.CheckElementsAreOfType(crls, typeof(CrlValidatedID))) | ||||
| 				throw new ArgumentException("Must contain only 'CrlValidatedID' objects", "crls"); | ||||
|  | ||||
| 			this.crls = new DerSequence( | ||||
| 				Asn1EncodableVector.FromEnumerable(crls)); | ||||
| 		} | ||||
|  | ||||
| 		public CrlValidatedID[] GetCrls() | ||||
| 		{ | ||||
| 			CrlValidatedID[] result = new CrlValidatedID[crls.Count]; | ||||
| 			for (int i = 0; i < crls.Count; ++i) | ||||
| 			{ | ||||
| 				result[i] = CrlValidatedID.GetInstance(crls[i].ToAsn1Object()); | ||||
| 			} | ||||
| 			return result; | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			return new DerSequence(crls); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										111
									
								
								iTechSharp/srcbc/asn1/esf/CrlOcspRef.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								iTechSharp/srcbc/asn1/esf/CrlOcspRef.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,111 @@ | ||||
| using System; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition | ||||
| 	/// <code> | ||||
| 	/// CrlOcspRef ::= SEQUENCE { | ||||
| 	///		crlids		[0] CRLListID		OPTIONAL, | ||||
| 	/// 	ocspids		[1] OcspListID		OPTIONAL, | ||||
| 	/// 	otherRev	[2] OtherRevRefs	OPTIONAL | ||||
| 	/// } | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class CrlOcspRef | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly CrlListID		crlids; | ||||
| 		private readonly OcspListID		ocspids; | ||||
| 		private readonly OtherRevRefs	otherRev; | ||||
|  | ||||
| 		public static CrlOcspRef GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is CrlOcspRef) | ||||
| 				return (CrlOcspRef) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new CrlOcspRef((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'CrlOcspRef' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private CrlOcspRef( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
|  | ||||
| 			foreach (Asn1TaggedObject taggedObj in seq) | ||||
| 			{ | ||||
| 				Asn1Object asn1Obj = taggedObj.GetObject(); | ||||
|  | ||||
| 				switch (taggedObj.TagNo) | ||||
| 				{ | ||||
| 					case 0: | ||||
| 						this.crlids = CrlListID.GetInstance(asn1Obj); | ||||
| 						break; | ||||
| 					case 1: | ||||
| 						this.ocspids = OcspListID.GetInstance(asn1Obj); | ||||
| 						break; | ||||
| 					case 2: | ||||
| 						this.otherRev = OtherRevRefs.GetInstance(asn1Obj); | ||||
| 						break; | ||||
| 					default: | ||||
| 						throw new ArgumentException("Illegal tag in CrlOcspRef", "seq"); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public CrlOcspRef( | ||||
| 			CrlListID		crlids, | ||||
| 			OcspListID		ocspids, | ||||
| 			OtherRevRefs	otherRev) | ||||
| 		{ | ||||
| 			this.crlids = crlids; | ||||
| 			this.ocspids = ocspids; | ||||
| 			this.otherRev = otherRev; | ||||
| 		} | ||||
|  | ||||
| 		public CrlListID CrlIDs | ||||
| 		{ | ||||
| 			get { return crlids; } | ||||
| 		} | ||||
|  | ||||
| 		public OcspListID OcspIDs | ||||
| 		{ | ||||
| 			get { return ocspids; } | ||||
| 		} | ||||
|  | ||||
| 		public OtherRevRefs OtherRev | ||||
| 		{ | ||||
| 			get { return otherRev; } | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			Asn1EncodableVector v = new Asn1EncodableVector(); | ||||
|  | ||||
| 			if (crlids != null) | ||||
| 			{ | ||||
| 				v.Add(new DerTaggedObject(true, 0, crlids.ToAsn1Object())); | ||||
| 			} | ||||
|  | ||||
| 			if (ocspids != null) | ||||
| 			{ | ||||
| 				v.Add(new DerTaggedObject(true, 1, ocspids.ToAsn1Object())); | ||||
| 			} | ||||
|  | ||||
| 			if (otherRev != null) | ||||
| 			{ | ||||
| 				v.Add(new DerTaggedObject(true, 2, otherRev.ToAsn1Object())); | ||||
| 			} | ||||
|  | ||||
| 			return new DerSequence(v); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										89
									
								
								iTechSharp/srcbc/asn1/esf/CrlValidatedID.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								iTechSharp/srcbc/asn1/esf/CrlValidatedID.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | ||||
| using System; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition | ||||
| 	/// <code> | ||||
| 	/// CrlValidatedID ::= SEQUENCE { | ||||
| 	///		crlHash			OtherHash, | ||||
| 	///		crlIdentifier	CrlIdentifier OPTIONAL} | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class CrlValidatedID | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly OtherHash		crlHash; | ||||
| 		private readonly CrlIdentifier	crlIdentifier; | ||||
|  | ||||
| 		public static CrlValidatedID GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is CrlValidatedID) | ||||
| 				return (CrlValidatedID) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new CrlValidatedID((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'CrlValidatedID' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private CrlValidatedID( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
| 			if (seq.Count < 1 || seq.Count > 2) | ||||
| 				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); | ||||
|  | ||||
| 			this.crlHash = OtherHash.GetInstance(seq[0].ToAsn1Object()); | ||||
|  | ||||
| 			if (seq.Count > 1) | ||||
| 			{ | ||||
| 				this.crlIdentifier = CrlIdentifier.GetInstance(seq[1].ToAsn1Object()); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public CrlValidatedID( | ||||
| 			OtherHash crlHash) | ||||
| 			: this(crlHash, null) | ||||
| 		{ | ||||
| 		} | ||||
|  | ||||
| 		public CrlValidatedID( | ||||
| 			OtherHash		crlHash, | ||||
| 			CrlIdentifier	crlIdentifier) | ||||
| 		{ | ||||
| 			if (crlHash == null) | ||||
| 				throw new ArgumentNullException("crlHash"); | ||||
|  | ||||
| 			this.crlHash = crlHash; | ||||
| 			this.crlIdentifier = crlIdentifier; | ||||
| 		} | ||||
|  | ||||
| 		public OtherHash CrlHash | ||||
| 		{ | ||||
| 			get { return crlHash; } | ||||
| 		} | ||||
|  | ||||
| 		public CrlIdentifier CrlIdentifier | ||||
| 		{ | ||||
| 			get { return crlIdentifier; } | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			Asn1EncodableVector v = new Asn1EncodableVector(crlHash.ToAsn1Object()); | ||||
|  | ||||
| 			if (crlIdentifier != null) | ||||
| 			{ | ||||
| 				v.Add(crlIdentifier.ToAsn1Object()); | ||||
| 			} | ||||
|  | ||||
| 			return new DerSequence(v); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										24
									
								
								iTechSharp/srcbc/asn1/esf/ESFAttributes.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								iTechSharp/srcbc/asn1/esf/ESFAttributes.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| using System; | ||||
|  | ||||
| using Org.BouncyCastle.Asn1; | ||||
| using Org.BouncyCastle.Asn1.Pkcs; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
|     public abstract class EsfAttributes | ||||
|     { | ||||
|         public static readonly DerObjectIdentifier SigPolicyId = PkcsObjectIdentifiers.IdAAEtsSigPolicyID; | ||||
|         public static readonly DerObjectIdentifier CommitmentType = PkcsObjectIdentifiers.IdAAEtsCommitmentType; | ||||
|         public static readonly DerObjectIdentifier SignerLocation = PkcsObjectIdentifiers.IdAAEtsSignerLocation; | ||||
| 		public static readonly DerObjectIdentifier SignerAttr = PkcsObjectIdentifiers.IdAAEtsSignerAttr; | ||||
| 		public static readonly DerObjectIdentifier OtherSigCert = PkcsObjectIdentifiers.IdAAEtsOtherSigCert; | ||||
| 		public static readonly DerObjectIdentifier ContentTimestamp = PkcsObjectIdentifiers.IdAAEtsContentTimestamp; | ||||
| 		public static readonly DerObjectIdentifier CertificateRefs = PkcsObjectIdentifiers.IdAAEtsCertificateRefs; | ||||
| 		public static readonly DerObjectIdentifier RevocationRefs = PkcsObjectIdentifiers.IdAAEtsRevocationRefs; | ||||
| 		public static readonly DerObjectIdentifier CertValues = PkcsObjectIdentifiers.IdAAEtsCertValues; | ||||
| 		public static readonly DerObjectIdentifier RevocationValues = PkcsObjectIdentifiers.IdAAEtsRevocationValues; | ||||
| 		public static readonly DerObjectIdentifier EscTimeStamp = PkcsObjectIdentifiers.IdAAEtsEscTimeStamp; | ||||
| 		public static readonly DerObjectIdentifier CertCrlTimestamp = PkcsObjectIdentifiers.IdAAEtsCertCrlTimestamp; | ||||
| 		public static readonly DerObjectIdentifier ArchiveTimestamp = PkcsObjectIdentifiers.IdAAEtsArchiveTimestamp; | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										77
									
								
								iTechSharp/srcbc/asn1/esf/OcspIdentifier.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								iTechSharp/srcbc/asn1/esf/OcspIdentifier.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,77 @@ | ||||
| using System; | ||||
|  | ||||
| using Org.BouncyCastle.Asn1.Ocsp; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition | ||||
| 	/// <code> | ||||
| 	/// OcspIdentifier ::= SEQUENCE { | ||||
| 	///		ocspResponderID		ResponderID, | ||||
| 	///			-- As in OCSP response data | ||||
| 	///		producedAt			GeneralizedTime | ||||
| 	///			-- As in OCSP response data | ||||
| 	/// } | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class OcspIdentifier | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly ResponderID		ocspResponderID; | ||||
| 		private readonly DerGeneralizedTime	producedAt; | ||||
|  | ||||
| 		public static OcspIdentifier GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is OcspIdentifier) | ||||
| 				return (OcspIdentifier) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new OcspIdentifier((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'OcspIdentifier' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private OcspIdentifier( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
| 			if (seq.Count != 2) | ||||
| 				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); | ||||
|  | ||||
| 			this.ocspResponderID = ResponderID.GetInstance(seq[0].ToAsn1Object()); | ||||
| 			this.producedAt = (DerGeneralizedTime) seq[1].ToAsn1Object(); | ||||
| 		} | ||||
|  | ||||
| 		public OcspIdentifier( | ||||
| 			ResponderID	ocspResponderID, | ||||
| 			DateTime	producedAt) | ||||
| 		{ | ||||
| 			if (ocspResponderID == null) | ||||
| 				throw new ArgumentNullException(); | ||||
|  | ||||
| 			this.ocspResponderID = ocspResponderID; | ||||
| 			this.producedAt = new DerGeneralizedTime(producedAt); | ||||
| 		} | ||||
|  | ||||
| 		public ResponderID OcspResponderID | ||||
| 		{ | ||||
| 			get { return ocspResponderID; } | ||||
| 		} | ||||
|  | ||||
| 		public DateTime ProducedAt | ||||
| 		{ | ||||
| 			get { return producedAt.ToDateTime(); } | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			return new DerSequence(ocspResponderID, producedAt); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										88
									
								
								iTechSharp/srcbc/asn1/esf/OcspListID.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								iTechSharp/srcbc/asn1/esf/OcspListID.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,88 @@ | ||||
| using System; | ||||
| using System.Collections; | ||||
|  | ||||
| using Org.BouncyCastle.Utilities.Collections; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition | ||||
| 	/// <code> | ||||
| 	/// OcspListID ::=  SEQUENCE { | ||||
| 	///		ocspResponses	SEQUENCE OF OcspResponsesID | ||||
| 	/// } | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class OcspListID | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly Asn1Sequence ocspResponses; | ||||
|  | ||||
| 		public static OcspListID GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is OcspListID) | ||||
| 				return (OcspListID) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new OcspListID((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'OcspListID' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private OcspListID( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
| 			if (seq.Count != 1) | ||||
| 				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); | ||||
|  | ||||
| 			this.ocspResponses = (Asn1Sequence) seq[0].ToAsn1Object(); | ||||
|  | ||||
| 			foreach (Asn1Encodable ae in this.ocspResponses) | ||||
| 			{ | ||||
| 				OcspResponsesID.GetInstance(ae.ToAsn1Object()); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public OcspListID( | ||||
| 			params OcspResponsesID[] ocspResponses) | ||||
| 		{ | ||||
| 			if (ocspResponses == null) | ||||
| 				throw new ArgumentNullException("ocspResponses"); | ||||
|  | ||||
| 			this.ocspResponses = new DerSequence(ocspResponses); | ||||
| 		} | ||||
|  | ||||
| 		public OcspListID( | ||||
| 			IEnumerable ocspResponses) | ||||
| 		{ | ||||
| 			if (ocspResponses == null) | ||||
| 				throw new ArgumentNullException("ocspResponses"); | ||||
| 			if (!CollectionUtilities.CheckElementsAreOfType(ocspResponses, typeof(OcspResponsesID))) | ||||
| 				throw new ArgumentException("Must contain only 'OcspResponsesID' objects", "ocspResponses"); | ||||
|  | ||||
| 			this.ocspResponses = new DerSequence( | ||||
| 				Asn1EncodableVector.FromEnumerable(ocspResponses)); | ||||
| 		} | ||||
|  | ||||
| 		public OcspResponsesID[] GetOcspResponses() | ||||
| 		{ | ||||
| 			OcspResponsesID[] result = new OcspResponsesID[ocspResponses.Count]; | ||||
| 			for (int i = 0; i < ocspResponses.Count; ++i) | ||||
| 			{ | ||||
| 				result[i] = OcspResponsesID.GetInstance(ocspResponses[i].ToAsn1Object()); | ||||
| 			} | ||||
| 			return result; | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			return new DerSequence(ocspResponses); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										92
									
								
								iTechSharp/srcbc/asn1/esf/OcspResponsesID.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								iTechSharp/srcbc/asn1/esf/OcspResponsesID.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,92 @@ | ||||
| using System; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition | ||||
| 	/// <code> | ||||
| 	/// OcspResponsesID ::= SEQUENCE { | ||||
| 	///		ocspIdentifier	OcspIdentifier, | ||||
| 	///		ocspRepHash		OtherHash OPTIONAL | ||||
| 	/// } | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class OcspResponsesID | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly OcspIdentifier	ocspIdentifier; | ||||
| 		private readonly OtherHash		ocspRepHash; | ||||
|  | ||||
| 		public static OcspResponsesID GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is OcspResponsesID) | ||||
| 				return (OcspResponsesID) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new OcspResponsesID((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'OcspResponsesID' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private OcspResponsesID( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
| 			if (seq.Count < 1 || seq.Count > 2) | ||||
| 				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); | ||||
|  | ||||
| 			this.ocspIdentifier = OcspIdentifier.GetInstance(seq[0].ToAsn1Object()); | ||||
|  | ||||
| 			if (seq.Count > 1) | ||||
| 			{ | ||||
| 				this.ocspRepHash = OtherHash.GetInstance(seq[1].ToAsn1Object()); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public OcspResponsesID( | ||||
| 			OcspIdentifier ocspIdentifier) | ||||
| 			: this(ocspIdentifier, null) | ||||
| 		{ | ||||
| 		} | ||||
|  | ||||
| 		public OcspResponsesID( | ||||
| 			OcspIdentifier	ocspIdentifier, | ||||
| 			OtherHash		ocspRepHash) | ||||
| 		{ | ||||
| 			if (ocspIdentifier == null) | ||||
| 				throw new ArgumentNullException("ocspIdentifier"); | ||||
|  | ||||
| 			this.ocspIdentifier = ocspIdentifier; | ||||
| 			this.ocspRepHash = ocspRepHash; | ||||
| 		} | ||||
|  | ||||
| 		public OcspIdentifier OcspIdentifier | ||||
| 		{ | ||||
| 			get { return ocspIdentifier; } | ||||
| 		} | ||||
|  | ||||
| 		public OtherHash OcspRepHash | ||||
| 		{ | ||||
| 			get { return ocspRepHash; } | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			Asn1EncodableVector v = new Asn1EncodableVector( | ||||
| 				ocspIdentifier.ToAsn1Object()); | ||||
|  | ||||
| 			if (ocspRepHash != null) | ||||
| 			{ | ||||
| 				v.Add(ocspRepHash.ToAsn1Object()); | ||||
| 			} | ||||
|  | ||||
| 			return new DerSequence(v); | ||||
| 		} | ||||
|  | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										93
									
								
								iTechSharp/srcbc/asn1/esf/OtherCertID.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								iTechSharp/srcbc/asn1/esf/OtherCertID.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,93 @@ | ||||
| using System; | ||||
|  | ||||
| using Org.BouncyCastle.Asn1.X509; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// <code> | ||||
| 	/// OtherCertID ::= SEQUENCE { | ||||
| 	/// 	otherCertHash	OtherHash, | ||||
| 	/// 	issuerSerial	IssuerSerial OPTIONAL | ||||
| 	/// } | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class OtherCertID | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly OtherHash		otherCertHash; | ||||
| 		private readonly IssuerSerial	issuerSerial; | ||||
|  | ||||
| 		public static OtherCertID GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is OtherCertID) | ||||
| 				return (OtherCertID) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new OtherCertID((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'OtherCertID' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private OtherCertID( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
| 			if (seq.Count < 1 || seq.Count > 2) | ||||
| 				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); | ||||
|  | ||||
| 			this.otherCertHash = OtherHash.GetInstance(seq[0].ToAsn1Object()); | ||||
|  | ||||
| 			if (seq.Count > 1) | ||||
| 			{ | ||||
| 				this.issuerSerial = IssuerSerial.GetInstance(seq[1].ToAsn1Object()); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public OtherCertID( | ||||
| 			OtherHash otherCertHash) | ||||
| 			: this(otherCertHash, null) | ||||
| 		{ | ||||
| 		} | ||||
|  | ||||
| 		public OtherCertID( | ||||
| 			OtherHash		otherCertHash, | ||||
| 			IssuerSerial	issuerSerial) | ||||
| 		{ | ||||
| 			if (otherCertHash == null) | ||||
| 				throw new ArgumentNullException("otherCertHash"); | ||||
|  | ||||
| 			this.otherCertHash = otherCertHash; | ||||
| 			this.issuerSerial = issuerSerial; | ||||
| 		} | ||||
|  | ||||
| 		public OtherHash OtherCertHash | ||||
| 		{ | ||||
| 			get { return otherCertHash; } | ||||
| 		} | ||||
|  | ||||
| 		public IssuerSerial IssuerSerial | ||||
| 		{ | ||||
| 			get { return issuerSerial; } | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			Asn1EncodableVector v = new Asn1EncodableVector( | ||||
| 				otherCertHash.ToAsn1Object()); | ||||
|  | ||||
| 			if (issuerSerial != null) | ||||
| 			{ | ||||
| 				v.Add(issuerSerial.ToAsn1Object()); | ||||
| 			} | ||||
|  | ||||
| 			return new DerSequence(v); | ||||
| 		} | ||||
|  | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										89
									
								
								iTechSharp/srcbc/asn1/esf/OtherHash.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								iTechSharp/srcbc/asn1/esf/OtherHash.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | ||||
| using System; | ||||
|  | ||||
| using Org.BouncyCastle.Asn1.Oiw; | ||||
| using Org.BouncyCastle.Asn1.X509; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// <code> | ||||
| 	/// OtherHash ::= CHOICE { | ||||
| 	///		sha1Hash	OtherHashValue, -- This contains a SHA-1 hash | ||||
| 	/// 	otherHash	OtherHashAlgAndValue | ||||
| 	///	} | ||||
| 	///	 | ||||
| 	///	OtherHashValue ::= OCTET STRING | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class OtherHash | ||||
| 		: Asn1Encodable | ||||
| 		//, Asn1Choice | ||||
| 	{ | ||||
| 		private readonly Asn1OctetString		sha1Hash; | ||||
| 		private readonly OtherHashAlgAndValue	otherHash; | ||||
|  | ||||
| 		public static OtherHash GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is OtherHash) | ||||
| 				return (OtherHash) obj; | ||||
|  | ||||
| 			if (obj is Asn1OctetString) | ||||
| 				return new OtherHash((Asn1OctetString) obj); | ||||
|  | ||||
| 			return new OtherHash( | ||||
| 				OtherHashAlgAndValue.GetInstance(obj)); | ||||
| 		} | ||||
|  | ||||
| 		public OtherHash( | ||||
| 			byte[] sha1Hash) | ||||
| 		{ | ||||
| 			if (sha1Hash == null) | ||||
| 				throw new ArgumentNullException("sha1Hash"); | ||||
|  | ||||
| 			this.sha1Hash = new DerOctetString(sha1Hash); | ||||
| 		} | ||||
|  | ||||
| 		public OtherHash( | ||||
| 			Asn1OctetString sha1Hash) | ||||
| 		{ | ||||
| 			if (sha1Hash == null) | ||||
| 				throw new ArgumentNullException("sha1Hash"); | ||||
|  | ||||
| 			this.sha1Hash = sha1Hash; | ||||
| 		} | ||||
|  | ||||
| 		public OtherHash( | ||||
| 			OtherHashAlgAndValue otherHash) | ||||
| 		{ | ||||
| 			if (otherHash == null) | ||||
| 				throw new ArgumentNullException("otherHash"); | ||||
|  | ||||
| 			this.otherHash = otherHash; | ||||
| 		} | ||||
|  | ||||
| 		public AlgorithmIdentifier HashAlgorithm | ||||
| 		{ | ||||
| 			get | ||||
| 			{ | ||||
| 				return otherHash == null | ||||
| 					?	new AlgorithmIdentifier(OiwObjectIdentifiers.IdSha1) | ||||
| 					:	otherHash.HashAlgorithm; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public byte[] GetHashValue() | ||||
| 		{ | ||||
| 			return otherHash == null | ||||
| 				?	sha1Hash.GetOctets() | ||||
| 				:	otherHash.GetHashValue(); | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			return otherHash == null | ||||
| 				?	sha1Hash | ||||
| 				:	otherHash.ToAsn1Object(); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										94
									
								
								iTechSharp/srcbc/asn1/esf/OtherHashAlgAndValue.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								iTechSharp/srcbc/asn1/esf/OtherHashAlgAndValue.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,94 @@ | ||||
| using System; | ||||
|  | ||||
| using Org.BouncyCastle.Asn1.X509; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <summary> | ||||
| 	/// Summary description for OtherHashAlgAndValue. | ||||
| 	/// </summary> | ||||
| 	/// <remarks> | ||||
| 	/// <code> | ||||
| 	/// OtherHashAlgAndValue ::= SEQUENCE { | ||||
| 	///		hashAlgorithm	AlgorithmIdentifier, | ||||
| 	/// 	hashValue		OtherHashValue | ||||
| 	/// } | ||||
| 	///  | ||||
| 	/// OtherHashValue ::= OCTET STRING | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class OtherHashAlgAndValue | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly AlgorithmIdentifier	hashAlgorithm; | ||||
| 		private readonly Asn1OctetString		hashValue; | ||||
|  | ||||
| 		public static OtherHashAlgAndValue GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is OtherHashAlgAndValue) | ||||
| 				return (OtherHashAlgAndValue) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new OtherHashAlgAndValue((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'OtherHashAlgAndValue' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private OtherHashAlgAndValue( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
| 			if (seq.Count != 2) | ||||
| 				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); | ||||
|  | ||||
| 			this.hashAlgorithm = AlgorithmIdentifier.GetInstance(seq[0].ToAsn1Object()); | ||||
| 			this.hashValue = (Asn1OctetString) seq[1].ToAsn1Object(); | ||||
| 		} | ||||
|  | ||||
| 		public OtherHashAlgAndValue( | ||||
| 			AlgorithmIdentifier	hashAlgorithm, | ||||
| 			byte[]				hashValue) | ||||
| 		{ | ||||
| 			if (hashAlgorithm == null) | ||||
| 				throw new ArgumentNullException("hashAlgorithm"); | ||||
| 			if (hashValue == null) | ||||
| 				throw new ArgumentNullException("hashValue"); | ||||
|  | ||||
| 			this.hashAlgorithm = hashAlgorithm; | ||||
| 			this.hashValue = new DerOctetString(hashValue); | ||||
| 		} | ||||
|  | ||||
| 		public OtherHashAlgAndValue( | ||||
| 			AlgorithmIdentifier	hashAlgorithm, | ||||
| 			Asn1OctetString		hashValue) | ||||
| 		{ | ||||
| 			if (hashAlgorithm == null) | ||||
| 				throw new ArgumentNullException("hashAlgorithm"); | ||||
| 			if (hashValue == null) | ||||
| 				throw new ArgumentNullException("hashValue"); | ||||
|  | ||||
| 			this.hashAlgorithm = hashAlgorithm; | ||||
| 			this.hashValue = hashValue; | ||||
| 		} | ||||
|  | ||||
| 		public AlgorithmIdentifier HashAlgorithm | ||||
| 		{ | ||||
| 			get { return hashAlgorithm; } | ||||
| 		} | ||||
|  | ||||
| 		public byte[] GetHashValue() | ||||
| 		{ | ||||
| 			return hashValue.GetOctets(); | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			return new DerSequence(hashAlgorithm, hashValue); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										78
									
								
								iTechSharp/srcbc/asn1/esf/OtherRevRefs.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								iTechSharp/srcbc/asn1/esf/OtherRevRefs.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,78 @@ | ||||
| using System; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition | ||||
| 	/// <code> | ||||
| 	/// OtherRevRefs ::= SEQUENCE  | ||||
| 	/// { | ||||
| 	///		otherRevRefType      OtherRevRefType, | ||||
| 	///		otherRevRefs         ANY DEFINED BY otherRevRefType | ||||
| 	/// } | ||||
| 	/// | ||||
| 	/// OtherRevRefType ::= OBJECT IDENTIFIER | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class OtherRevRefs | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly DerObjectIdentifier	otherRevRefType; | ||||
| 		private readonly Asn1Object				otherRevRefs; | ||||
|  | ||||
| 		public static OtherRevRefs GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is OtherRevRefs) | ||||
| 				return (OtherRevRefs) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new OtherRevRefs((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'OtherRevRefs' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private OtherRevRefs( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
| 			if (seq.Count != 2) | ||||
| 				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); | ||||
|  | ||||
| 			this.otherRevRefType = (DerObjectIdentifier) seq[0].ToAsn1Object(); | ||||
| 			this.otherRevRefs = seq[1].ToAsn1Object(); | ||||
| 		} | ||||
|  | ||||
| 		public OtherRevRefs( | ||||
| 			DerObjectIdentifier	otherRevRefType, | ||||
| 			Asn1Encodable		otherRevRefs) | ||||
| 		{ | ||||
| 			if (otherRevRefType == null) | ||||
| 				throw new ArgumentNullException("otherRevRefType"); | ||||
| 			if (otherRevRefs == null) | ||||
| 				throw new ArgumentNullException("otherRevRefs"); | ||||
|  | ||||
| 			this.otherRevRefType = otherRevRefType; | ||||
| 			this.otherRevRefs = otherRevRefs.ToAsn1Object(); | ||||
| 		} | ||||
|  | ||||
| 		public DerObjectIdentifier OtherRevRefType | ||||
| 		{ | ||||
| 			get { return otherRevRefType; } | ||||
| 		} | ||||
|  | ||||
| 		public Asn1Object OtherRevRefsObject | ||||
| 		{ | ||||
| 			get { return otherRevRefs; } | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			return new DerSequence(otherRevRefType, otherRevRefs); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										78
									
								
								iTechSharp/srcbc/asn1/esf/OtherRevVals.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								iTechSharp/srcbc/asn1/esf/OtherRevVals.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,78 @@ | ||||
| using System; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// RFC 3126: 4.3.2 Revocation Values Attribute Definition | ||||
| 	/// <code> | ||||
| 	/// OtherRevVals ::= SEQUENCE  | ||||
| 	/// { | ||||
| 	///		otherRevValType      OtherRevValType, | ||||
| 	///		otherRevVals         ANY DEFINED BY otherRevValType | ||||
| 	/// } | ||||
| 	/// | ||||
| 	/// OtherRevValType ::= OBJECT IDENTIFIER | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class OtherRevVals | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly DerObjectIdentifier	otherRevValType; | ||||
| 		private readonly Asn1Object				otherRevVals; | ||||
|  | ||||
| 		public static OtherRevVals GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is OtherRevVals) | ||||
| 				return (OtherRevVals) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new OtherRevVals((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'OtherRevVals' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private OtherRevVals( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
| 			if (seq.Count != 2) | ||||
| 				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); | ||||
|  | ||||
| 			this.otherRevValType = (DerObjectIdentifier) seq[0].ToAsn1Object(); | ||||
| 			this.otherRevVals = seq[1].ToAsn1Object(); | ||||
| 		} | ||||
|  | ||||
| 		public OtherRevVals( | ||||
| 			DerObjectIdentifier	otherRevValType, | ||||
| 			Asn1Encodable		otherRevVals) | ||||
| 		{ | ||||
| 			if (otherRevValType == null) | ||||
| 				throw new ArgumentNullException("otherRevValType"); | ||||
| 			if (otherRevVals == null) | ||||
| 				throw new ArgumentNullException("otherRevVals"); | ||||
|  | ||||
| 			this.otherRevValType = otherRevValType; | ||||
| 			this.otherRevVals = otherRevVals.ToAsn1Object(); | ||||
| 		} | ||||
|  | ||||
| 		public DerObjectIdentifier OtherRevValType | ||||
| 		{ | ||||
| 			get { return otherRevValType; } | ||||
| 		} | ||||
|  | ||||
| 		public Asn1Object OtherRevValsObject | ||||
| 		{ | ||||
| 			get { return otherRevVals; } | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			return new DerSequence(otherRevValType, otherRevVals); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										138
									
								
								iTechSharp/srcbc/asn1/esf/OtherSigningCertificate.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										138
									
								
								iTechSharp/srcbc/asn1/esf/OtherSigningCertificate.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,138 @@ | ||||
| using System; | ||||
| using System.Collections; | ||||
|  | ||||
| using Org.BouncyCastle.Asn1.X509; | ||||
| using Org.BouncyCastle.Utilities.Collections; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// <code> | ||||
| 	/// OtherSigningCertificate ::= SEQUENCE { | ||||
| 	/// 	certs		SEQUENCE OF OtherCertID, | ||||
| 	/// 	policies	SEQUENCE OF PolicyInformation OPTIONAL | ||||
| 	/// } | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class OtherSigningCertificate | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly Asn1Sequence	certs; | ||||
| 		private readonly Asn1Sequence	policies; | ||||
|  | ||||
| 		public static OtherSigningCertificate GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is OtherSigningCertificate) | ||||
| 				return (OtherSigningCertificate) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new OtherSigningCertificate((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'OtherSigningCertificate' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private OtherSigningCertificate( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
| 			if (seq.Count < 1 || seq.Count > 2) | ||||
| 				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); | ||||
|  | ||||
| 			this.certs = Asn1Sequence.GetInstance(seq[0].ToAsn1Object()); | ||||
|  | ||||
| 			if (seq.Count > 1) | ||||
| 			{ | ||||
| 				this.policies = Asn1Sequence.GetInstance(seq[1].ToAsn1Object()); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public OtherSigningCertificate( | ||||
| 			params OtherCertID[] certs) | ||||
| 			: this(certs, null) | ||||
| 		{ | ||||
| 		} | ||||
|  | ||||
| 		public OtherSigningCertificate( | ||||
| 			OtherCertID[]				certs, | ||||
| 			params PolicyInformation[]	policies) | ||||
| 		{ | ||||
| 			if (certs == null) | ||||
| 				throw new ArgumentNullException("certs"); | ||||
|  | ||||
| 			this.certs = new DerSequence(certs); | ||||
|  | ||||
| 			if (policies != null) | ||||
| 			{ | ||||
| 				this.policies = new DerSequence(policies); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public OtherSigningCertificate( | ||||
| 			IEnumerable certs) | ||||
| 			: this(certs, null) | ||||
| 		{ | ||||
| 		} | ||||
|  | ||||
| 		public OtherSigningCertificate( | ||||
| 			IEnumerable	certs, | ||||
| 			IEnumerable	policies) | ||||
| 		{ | ||||
| 			if (certs == null) | ||||
| 				throw new ArgumentNullException("certs"); | ||||
| 			if (!CollectionUtilities.CheckElementsAreOfType(certs, typeof(OtherCertID))) | ||||
| 				throw new ArgumentException("Must contain only 'OtherCertID' objects", "certs"); | ||||
|  | ||||
| 			this.certs = new DerSequence( | ||||
| 				Asn1EncodableVector.FromEnumerable(certs)); | ||||
|  | ||||
| 			if (policies != null) | ||||
| 			{ | ||||
| 				if (!CollectionUtilities.CheckElementsAreOfType(policies, typeof(PolicyInformation))) | ||||
| 					throw new ArgumentException("Must contain only 'PolicyInformation' objects", "policies"); | ||||
|  | ||||
| 				this.policies = new DerSequence( | ||||
| 					Asn1EncodableVector.FromEnumerable(policies)); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public OtherCertID[] GetCerts() | ||||
| 		{ | ||||
| 			OtherCertID[] cs = new OtherCertID[certs.Count]; | ||||
| 			for (int i = 0; i < certs.Count; ++i) | ||||
| 			{ | ||||
| 				cs[i] = OtherCertID.GetInstance(certs[i].ToAsn1Object()); | ||||
| 			} | ||||
| 			return cs; | ||||
| 		} | ||||
|  | ||||
| 		public PolicyInformation[] GetPolicies() | ||||
| 		{ | ||||
| 			if (policies == null) | ||||
| 				return null; | ||||
|  | ||||
| 			PolicyInformation[] ps = new PolicyInformation[policies.Count]; | ||||
| 			for (int i = 0; i < policies.Count; ++i) | ||||
| 			{ | ||||
| 				ps[i] = PolicyInformation.GetInstance(policies[i].ToAsn1Object()); | ||||
| 			} | ||||
| 			return ps; | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			Asn1EncodableVector v = new Asn1EncodableVector(certs); | ||||
|  | ||||
| 			if (policies != null) | ||||
| 			{ | ||||
| 				v.Add(policies); | ||||
| 			} | ||||
|  | ||||
| 			return new DerSequence(v); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										175
									
								
								iTechSharp/srcbc/asn1/esf/RevocationValues.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										175
									
								
								iTechSharp/srcbc/asn1/esf/RevocationValues.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,175 @@ | ||||
| using System; | ||||
| using System.Collections; | ||||
|  | ||||
| using Org.BouncyCastle.Asn1.Ocsp; | ||||
| using Org.BouncyCastle.Asn1.X509; | ||||
| using Org.BouncyCastle.Utilities.Collections; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// RFC 3126: 4.3.2 Revocation Values Attribute Definition | ||||
| 	/// <code> | ||||
| 	/// RevocationValues ::=  SEQUENCE { | ||||
| 	///		crlVals			[0] SEQUENCE OF CertificateList     OPTIONAL, | ||||
| 	///		ocspVals		[1] SEQUENCE OF BasicOCSPResponse   OPTIONAL, | ||||
| 	///		otherRevVals	[2] OtherRevVals | ||||
| 	/// } | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class RevocationValues | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly Asn1Sequence	crlVals; | ||||
| 		private readonly Asn1Sequence	ocspVals; | ||||
| 		private readonly OtherRevVals	otherRevVals; | ||||
|  | ||||
| 		public static RevocationValues GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is RevocationValues) | ||||
| 				return (RevocationValues) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new RevocationValues((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'RevocationValues' factory: " | ||||
| 				+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private RevocationValues( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
| 			if (seq.Count < 1 || seq.Count > 3) | ||||
| 				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); | ||||
|  | ||||
| 			bool otherRevValsFound = false; | ||||
|  | ||||
| 			foreach (Asn1TaggedObject taggedObj in seq) | ||||
| 			{ | ||||
| 				Asn1Object asn1Obj = taggedObj.GetObject(); | ||||
| 				switch (taggedObj.TagNo) | ||||
| 				{ | ||||
| 					case 0: | ||||
| 						Asn1Sequence crlValsSeq = (Asn1Sequence) asn1Obj; | ||||
| 						foreach (Asn1Encodable ae in crlValsSeq) | ||||
| 						{ | ||||
| 							CertificateList.GetInstance(ae.ToAsn1Object()); | ||||
| 						} | ||||
| 						this.crlVals = crlValsSeq; | ||||
| 						break; | ||||
| 					case 1: | ||||
| 						Asn1Sequence ocspValsSeq = (Asn1Sequence) asn1Obj; | ||||
| 						foreach (Asn1Encodable ae in ocspValsSeq) | ||||
| 						{ | ||||
| 							BasicOcspResponse.GetInstance(ae.ToAsn1Object()); | ||||
| 						} | ||||
| 						this.ocspVals = ocspValsSeq; | ||||
| 						break; | ||||
| 					case 2: | ||||
| 						this.otherRevVals = OtherRevVals.GetInstance(asn1Obj); | ||||
| 						otherRevValsFound = true; | ||||
| 						break; | ||||
| 					default: | ||||
| 						throw new ArgumentException("Illegal tag in RevocationValues", "seq"); | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			if (!otherRevValsFound) | ||||
| 				throw new ArgumentException("No otherRevVals found", "seq"); | ||||
| 		} | ||||
|  | ||||
| 		public RevocationValues( | ||||
| 			CertificateList[]	crlVals, | ||||
| 			BasicOcspResponse[]	ocspVals, | ||||
| 			OtherRevVals		otherRevVals) | ||||
| 		{ | ||||
| 			if (otherRevVals == null) | ||||
| 				throw new ArgumentNullException("otherRevVals"); | ||||
|  | ||||
| 			if (crlVals != null) | ||||
| 			{ | ||||
| 				this.crlVals = new DerSequence(crlVals); | ||||
| 			} | ||||
|  | ||||
| 			if (ocspVals != null) | ||||
| 			{ | ||||
| 				this.ocspVals = new DerSequence(ocspVals); | ||||
| 			} | ||||
|  | ||||
| 			this.otherRevVals = otherRevVals; | ||||
| 		} | ||||
|  | ||||
| 		public RevocationValues( | ||||
| 			IEnumerable			crlVals, | ||||
| 			IEnumerable			ocspVals, | ||||
| 			OtherRevVals		otherRevVals) | ||||
| 		{ | ||||
| 			if (otherRevVals == null) | ||||
| 				throw new ArgumentNullException("otherRevVals"); | ||||
|  | ||||
| 			if (crlVals != null) | ||||
| 			{ | ||||
| 				if (!CollectionUtilities.CheckElementsAreOfType(crlVals, typeof(CertificateList))) | ||||
| 					throw new ArgumentException("Must contain only 'CertificateList' objects", "crlVals"); | ||||
|  | ||||
| 				this.crlVals = new DerSequence( | ||||
| 					Asn1EncodableVector.FromEnumerable(crlVals)); | ||||
| 			} | ||||
|  | ||||
| 			if (ocspVals != null) | ||||
| 			{ | ||||
| 				if (!CollectionUtilities.CheckElementsAreOfType(ocspVals, typeof(BasicOcspResponse))) | ||||
| 					throw new ArgumentException("Must contain only 'BasicOcspResponse' objects", "ocspVals"); | ||||
|  | ||||
| 				this.ocspVals = new DerSequence( | ||||
| 					Asn1EncodableVector.FromEnumerable(ocspVals)); | ||||
| 			} | ||||
|  | ||||
| 			this.otherRevVals = otherRevVals; | ||||
| 		} | ||||
|  | ||||
| 		public CertificateList[] GetCrlVals() | ||||
| 		{ | ||||
| 			CertificateList[] result = new CertificateList[crlVals.Count]; | ||||
| 			for (int i = 0; i < crlVals.Count; ++i) | ||||
| 			{ | ||||
| 				result[i] = CertificateList.GetInstance(crlVals[i].ToAsn1Object()); | ||||
| 			} | ||||
| 			return result; | ||||
| 		} | ||||
|  | ||||
| 		public BasicOcspResponse[] GetOcspVals() | ||||
| 		{ | ||||
| 			BasicOcspResponse[] result = new BasicOcspResponse[ocspVals.Count]; | ||||
| 			for (int i = 0; i < ocspVals.Count; ++i) | ||||
| 			{ | ||||
| 				result[i] = BasicOcspResponse.GetInstance(ocspVals[i].ToAsn1Object()); | ||||
| 			} | ||||
| 			return result; | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			Asn1EncodableVector v = new Asn1EncodableVector(); | ||||
|  | ||||
| 			if (crlVals != null) | ||||
| 			{ | ||||
| 				v.Add(new DerTaggedObject(true, 0, crlVals)); | ||||
| 			} | ||||
|  | ||||
| 			if (ocspVals != null) | ||||
| 			{ | ||||
| 				v.Add(new DerTaggedObject(true, 1, ocspVals)); | ||||
| 			} | ||||
|  | ||||
| 			v.Add(new DerTaggedObject(true, 2, otherRevVals.ToAsn1Object())); | ||||
|  | ||||
| 			return new DerSequence(v); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										71
									
								
								iTechSharp/srcbc/asn1/esf/SigPolicyQualifierInfo.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								iTechSharp/srcbc/asn1/esf/SigPolicyQualifierInfo.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | ||||
| using System; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// <code> | ||||
| 	/// SigPolicyQualifierInfo ::= SEQUENCE { | ||||
|     ///		sigPolicyQualifierId  SigPolicyQualifierId, | ||||
| 	///		sigQualifier          ANY DEFINED BY sigPolicyQualifierId | ||||
| 	/// } | ||||
| 	///  | ||||
| 	/// SigPolicyQualifierId ::= OBJECT IDENTIFIER | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class SigPolicyQualifierInfo | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly DerObjectIdentifier	sigPolicyQualifierId; | ||||
| 		private readonly Asn1Object				sigQualifier; | ||||
|  | ||||
| 		public static SigPolicyQualifierInfo GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is SigPolicyQualifierInfo) | ||||
| 				return (SigPolicyQualifierInfo) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new SigPolicyQualifierInfo((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'SigPolicyQualifierInfo' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private SigPolicyQualifierInfo( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
| 			if (seq.Count != 2) | ||||
| 				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); | ||||
|  | ||||
| 			this.sigPolicyQualifierId = (DerObjectIdentifier) seq[0].ToAsn1Object(); | ||||
| 			this.sigQualifier = seq[1].ToAsn1Object(); | ||||
| 		} | ||||
|  | ||||
| 		public SigPolicyQualifierInfo( | ||||
| 			DerObjectIdentifier	sigPolicyQualifierId, | ||||
| 			Asn1Encodable		sigQualifier) | ||||
| 		{ | ||||
| 			this.sigPolicyQualifierId = sigPolicyQualifierId; | ||||
| 			this.sigQualifier = sigQualifier.ToAsn1Object(); | ||||
| 		} | ||||
|  | ||||
| 		public DerObjectIdentifier SigPolicyQualifierId | ||||
| 		{ | ||||
| 			get { return sigPolicyQualifierId; } | ||||
| 		} | ||||
|  | ||||
| 		public Asn1Object SigQualifier | ||||
| 		{ | ||||
| 			get { return sigQualifier; } | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			return new DerSequence(sigPolicyQualifierId, sigQualifier); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										145
									
								
								iTechSharp/srcbc/asn1/esf/SignaturePolicyId.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										145
									
								
								iTechSharp/srcbc/asn1/esf/SignaturePolicyId.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,145 @@ | ||||
| using System; | ||||
| using System.Collections; | ||||
|  | ||||
| using Org.BouncyCastle.Utilities.Collections; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// <code> | ||||
| 	/// SignaturePolicyId ::= SEQUENCE { | ||||
| 	/// 	sigPolicyIdentifier		SigPolicyId, | ||||
| 	/// 	sigPolicyHash			SigPolicyHash, | ||||
| 	/// 	sigPolicyQualifiers		SEQUENCE SIZE (1..MAX) OF SigPolicyQualifierInfo OPTIONAL | ||||
| 	/// } | ||||
| 	///  | ||||
| 	/// SigPolicyId ::= OBJECT IDENTIFIER | ||||
| 	///  | ||||
| 	/// SigPolicyHash ::= OtherHashAlgAndValue | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class SignaturePolicyId | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		private readonly DerObjectIdentifier	sigPolicyIdentifier; | ||||
| 		private readonly OtherHashAlgAndValue	sigPolicyHash; | ||||
| 		private readonly Asn1Sequence			sigPolicyQualifiers; | ||||
|  | ||||
| 		public static SignaturePolicyId GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is SignaturePolicyId) | ||||
| 				return (SignaturePolicyId) obj; | ||||
|  | ||||
| 			if (obj is Asn1Sequence) | ||||
| 				return new SignaturePolicyId((Asn1Sequence) obj); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'SignaturePolicyId' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		private SignaturePolicyId( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			if (seq == null) | ||||
| 				throw new ArgumentNullException("seq"); | ||||
| 			if (seq.Count < 2 || seq.Count > 3) | ||||
| 				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); | ||||
|  | ||||
| 			this.sigPolicyIdentifier = (DerObjectIdentifier) seq[0].ToAsn1Object(); | ||||
| 			this.sigPolicyHash = OtherHashAlgAndValue.GetInstance(seq[1].ToAsn1Object()); | ||||
|  | ||||
| 			if (seq.Count > 2) | ||||
| 			{ | ||||
| 				this.sigPolicyQualifiers = (Asn1Sequence) seq[2].ToAsn1Object(); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public SignaturePolicyId( | ||||
| 			DerObjectIdentifier		sigPolicyIdentifier, | ||||
| 			OtherHashAlgAndValue	sigPolicyHash) | ||||
| 			: this(sigPolicyIdentifier, sigPolicyHash, null) | ||||
| 		{ | ||||
| 		} | ||||
|  | ||||
| 		public SignaturePolicyId( | ||||
| 			DerObjectIdentifier				sigPolicyIdentifier, | ||||
| 			OtherHashAlgAndValue			sigPolicyHash, | ||||
| 			params SigPolicyQualifierInfo[]	sigPolicyQualifiers) | ||||
| 		{ | ||||
| 			if (sigPolicyIdentifier == null) | ||||
| 				throw new ArgumentNullException("sigPolicyIdentifier"); | ||||
| 			if (sigPolicyHash == null) | ||||
| 				throw new ArgumentNullException("sigPolicyHash"); | ||||
|  | ||||
| 			this.sigPolicyIdentifier = sigPolicyIdentifier; | ||||
| 			this.sigPolicyHash = sigPolicyHash; | ||||
|  | ||||
| 			if (sigPolicyQualifiers != null) | ||||
| 			{ | ||||
| 				this.sigPolicyQualifiers = new DerSequence(sigPolicyQualifiers); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public SignaturePolicyId( | ||||
| 			DerObjectIdentifier		sigPolicyIdentifier, | ||||
| 			OtherHashAlgAndValue	sigPolicyHash, | ||||
| 			IEnumerable				sigPolicyQualifiers) | ||||
| 		{ | ||||
| 			if (sigPolicyIdentifier == null) | ||||
| 				throw new ArgumentNullException("sigPolicyIdentifier"); | ||||
| 			if (sigPolicyHash == null) | ||||
| 				throw new ArgumentNullException("sigPolicyHash"); | ||||
|  | ||||
| 			this.sigPolicyIdentifier = sigPolicyIdentifier; | ||||
| 			this.sigPolicyHash = sigPolicyHash; | ||||
|  | ||||
| 			if (sigPolicyQualifiers != null) | ||||
| 			{ | ||||
| 				if (!CollectionUtilities.CheckElementsAreOfType(sigPolicyQualifiers, typeof(SigPolicyQualifierInfo))) | ||||
| 					throw new ArgumentException("Must contain only 'SigPolicyQualifierInfo' objects", "sigPolicyQualifiers"); | ||||
|  | ||||
| 				this.sigPolicyQualifiers = new DerSequence( | ||||
| 					Asn1EncodableVector.FromEnumerable(sigPolicyQualifiers)); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public DerObjectIdentifier SigPolicyIdentifier | ||||
| 		{ | ||||
| 			get { return sigPolicyIdentifier; } | ||||
| 		} | ||||
|  | ||||
| 		public OtherHashAlgAndValue SigPolicyHash | ||||
| 		{ | ||||
| 			get { return sigPolicyHash; } | ||||
| 		} | ||||
|  | ||||
| 		public SigPolicyQualifierInfo[] GetSigPolicyQualifiers() | ||||
| 		{ | ||||
| 			if (sigPolicyQualifiers == null) | ||||
| 				return null; | ||||
|  | ||||
| 			SigPolicyQualifierInfo[] infos = new SigPolicyQualifierInfo[sigPolicyQualifiers.Count]; | ||||
| 			for (int i = 0; i < sigPolicyQualifiers.Count; ++i) | ||||
| 			{ | ||||
| 				infos[i] = SigPolicyQualifierInfo.GetInstance(sigPolicyQualifiers[i]); | ||||
| 			} | ||||
| 			return infos; | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			Asn1EncodableVector v = new Asn1EncodableVector( | ||||
| 				sigPolicyIdentifier, sigPolicyHash.ToAsn1Object()); | ||||
|  | ||||
| 			if (sigPolicyQualifiers != null) | ||||
| 			{ | ||||
| 				v.Add(sigPolicyQualifiers.ToAsn1Object()); | ||||
| 			} | ||||
|  | ||||
| 			return new DerSequence(v); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										65
									
								
								iTechSharp/srcbc/asn1/esf/SignaturePolicyIdentifier.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								iTechSharp/srcbc/asn1/esf/SignaturePolicyIdentifier.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| using System; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/// <remarks> | ||||
| 	/// <code> | ||||
| 	/// SignaturePolicyIdentifier ::= CHOICE { | ||||
| 	///		SignaturePolicyId		SignaturePolicyId, | ||||
| 	///		SignaturePolicyImplied	SignaturePolicyImplied | ||||
| 	/// } | ||||
| 	///  | ||||
| 	/// SignaturePolicyImplied ::= NULL | ||||
| 	/// </code> | ||||
| 	/// </remarks> | ||||
| 	public class SignaturePolicyIdentifier | ||||
| 		: Asn1Encodable | ||||
| 		//, Asn1Choice | ||||
| 	{ | ||||
| 		private readonly SignaturePolicyId sigPolicy; | ||||
|  | ||||
| 		public static SignaturePolicyIdentifier GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is SignaturePolicyIdentifier) | ||||
| 				return (SignaturePolicyIdentifier) obj; | ||||
|  | ||||
| 			if (obj is SignaturePolicyId) | ||||
| 				return new SignaturePolicyIdentifier((SignaturePolicyId) obj); | ||||
|  | ||||
| 			if (obj is Asn1Null) | ||||
| 				return new SignaturePolicyIdentifier(); | ||||
|  | ||||
| 			throw new ArgumentException( | ||||
| 				"Unknown object in 'SignaturePolicyIdentifier' factory: " | ||||
| 					+ obj.GetType().Name, | ||||
| 				"obj"); | ||||
| 		} | ||||
|  | ||||
| 		public SignaturePolicyIdentifier() | ||||
| 		{ | ||||
| 			this.sigPolicy = null; | ||||
| 		} | ||||
|  | ||||
| 		public SignaturePolicyIdentifier( | ||||
| 			SignaturePolicyId signaturePolicyId) | ||||
| 		{ | ||||
| 			if (signaturePolicyId == null) | ||||
| 				throw new ArgumentNullException("signaturePolicyId"); | ||||
|  | ||||
| 			this.sigPolicy = signaturePolicyId; | ||||
| 		} | ||||
|  | ||||
| 		public SignaturePolicyId SignaturePolicyId | ||||
| 		{ | ||||
| 			get { return sigPolicy; } | ||||
| 		} | ||||
|  | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			return sigPolicy == null | ||||
| 				?	DerNull.Instance | ||||
| 				:	sigPolicy.ToAsn1Object(); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										144
									
								
								iTechSharp/srcbc/asn1/esf/SignerLocation.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								iTechSharp/srcbc/asn1/esf/SignerLocation.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,144 @@ | ||||
| using System; | ||||
| using System.Collections; | ||||
|  | ||||
| using Org.BouncyCastle.Asn1; | ||||
|  | ||||
| namespace Org.BouncyCastle.Asn1.Esf | ||||
| { | ||||
| 	/** | ||||
| 	* Signer-Location attribute (RFC3126). | ||||
| 	* | ||||
| 	* <pre> | ||||
| 	*   SignerLocation ::= SEQUENCE { | ||||
| 	*       countryName        [0] DirectoryString OPTIONAL, | ||||
| 	*       localityName       [1] DirectoryString OPTIONAL, | ||||
| 	*       postalAddress      [2] PostalAddress OPTIONAL } | ||||
| 	* | ||||
| 	*   PostalAddress ::= SEQUENCE SIZE(1..6) OF DirectoryString | ||||
| 	* </pre> | ||||
| 	*/ | ||||
| 	public class SignerLocation | ||||
| 		: Asn1Encodable | ||||
| 	{ | ||||
| 		// TODO Should these be using DirectoryString? | ||||
| 		private DerUtf8String	countryName; | ||||
| 		private DerUtf8String	localityName; | ||||
| 		private Asn1Sequence	postalAddress; | ||||
|  | ||||
| 		public SignerLocation( | ||||
| 			Asn1Sequence seq) | ||||
| 		{ | ||||
| 			foreach (Asn1TaggedObject obj in seq) | ||||
| 			{ | ||||
| 				switch (obj.TagNo) | ||||
| 				{ | ||||
| 					case 0: | ||||
| 						this.countryName = DerUtf8String.GetInstance(obj, true); | ||||
| 						break; | ||||
| 					case 1: | ||||
| 						this.localityName = DerUtf8String.GetInstance(obj, true); | ||||
| 						break; | ||||
| 					case 2: | ||||
| 						bool isExplicit = obj.IsExplicit();	// handle erroneous implicitly tagged sequences | ||||
| 						this.postalAddress = Asn1Sequence.GetInstance(obj, isExplicit); | ||||
| 						if (postalAddress != null && postalAddress.Count > 6) | ||||
| 							throw new ArgumentException("postal address must contain less than 6 strings"); | ||||
| 						break; | ||||
| 					default: | ||||
| 						throw new ArgumentException("illegal tag"); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public SignerLocation( | ||||
| 			DerUtf8String	countryName, | ||||
| 			DerUtf8String	localityName, | ||||
| 			Asn1Sequence	postalAddress) | ||||
| 		{ | ||||
| 			if (postalAddress != null && postalAddress.Count > 6) | ||||
| 			{ | ||||
| 				throw new ArgumentException("postal address must contain less than 6 strings"); | ||||
| 			} | ||||
|  | ||||
| 			if (countryName != null) | ||||
| 			{ | ||||
| 				this.countryName = DerUtf8String.GetInstance(countryName.ToAsn1Object()); | ||||
| 			} | ||||
|  | ||||
| 			if (localityName != null) | ||||
| 			{ | ||||
| 				this.localityName = DerUtf8String.GetInstance(localityName.ToAsn1Object()); | ||||
| 			} | ||||
|  | ||||
| 			if (postalAddress != null) | ||||
| 			{ | ||||
| 				this.postalAddress = (Asn1Sequence) postalAddress.ToAsn1Object(); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		public static SignerLocation GetInstance( | ||||
| 			object obj) | ||||
| 		{ | ||||
| 			if (obj == null || obj is SignerLocation) | ||||
| 			{ | ||||
| 				return (SignerLocation) obj; | ||||
| 			} | ||||
|  | ||||
| 			return new SignerLocation(Asn1Sequence.GetInstance(obj)); | ||||
| 		} | ||||
|  | ||||
| 		public DerUtf8String CountryName | ||||
| 		{ | ||||
| 			get { return countryName; } | ||||
| 		} | ||||
|  | ||||
| 		public DerUtf8String LocalityName | ||||
| 		{ | ||||
| 			get { return localityName; } | ||||
| 		} | ||||
|  | ||||
| 		public Asn1Sequence PostalAddress | ||||
| 		{ | ||||
| 			get { return postalAddress; } | ||||
| 		} | ||||
|  | ||||
| 		/** | ||||
| 		* <pre> | ||||
| 		*   SignerLocation ::= SEQUENCE { | ||||
| 		*       countryName        [0] DirectoryString OPTIONAL, | ||||
| 		*       localityName       [1] DirectoryString OPTIONAL, | ||||
| 		*       postalAddress      [2] PostalAddress OPTIONAL } | ||||
| 		* | ||||
| 		*   PostalAddress ::= SEQUENCE SIZE(1..6) OF DirectoryString | ||||
| 		* | ||||
| 		*   DirectoryString ::= CHOICE { | ||||
| 		*         teletexString           TeletexString (SIZE (1..MAX)), | ||||
| 		*         printableString         PrintableString (SIZE (1..MAX)), | ||||
| 		*         universalString         UniversalString (SIZE (1..MAX)), | ||||
| 		*         utf8String              UTF8String (SIZE (1.. MAX)), | ||||
| 		*         bmpString               BMPString (SIZE (1..MAX)) } | ||||
| 		* </pre> | ||||
| 		*/ | ||||
| 		public override Asn1Object ToAsn1Object() | ||||
| 		{ | ||||
| 			Asn1EncodableVector v = new Asn1EncodableVector(); | ||||
|  | ||||
| 			if (countryName != null) | ||||
| 			{ | ||||
| 				v.Add(new DerTaggedObject(true, 0, countryName)); | ||||
| 			} | ||||
|  | ||||
| 			if (localityName != null) | ||||
| 			{ | ||||
| 				v.Add(new DerTaggedObject(true, 1, localityName)); | ||||
| 			} | ||||
|  | ||||
| 			if (postalAddress != null) | ||||
| 			{ | ||||
| 				v.Add(new DerTaggedObject(true, 2, postalAddress)); | ||||
| 			} | ||||
|  | ||||
| 			return new DerSequence(v); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user