using System; namespace Org.BouncyCastle.Asn1.X509 { /** * Policy qualifiers, used in the X509V3 CertificatePolicies * extension. * *
	 *   PolicyQualifierInfo ::= Sequence {
	 *       policyQualifierId  PolicyQualifierId,
	 *       qualifier          ANY DEFINED BY policyQualifierId }
	 * 
*/ public class PolicyQualifierInfo : Asn1Encodable { internal readonly DerObjectIdentifier policyQualifierId; internal readonly Asn1Encodable qualifier; /** * Creates a new PolicyQualifierInfo instance. * * @param policyQualifierId a PolicyQualifierId value * @param qualifier the qualifier, defined by the above field. */ public PolicyQualifierInfo( DerObjectIdentifier policyQualifierId, Asn1Encodable qualifier) { this.policyQualifierId = policyQualifierId; this.qualifier = qualifier; } /** * Creates a new PolicyQualifierInfo containing a * cPSuri qualifier. * * @param cps the CPS (certification practice statement) uri as a * string. */ public PolicyQualifierInfo( string cps) { policyQualifierId = PolicyQualifierID.IdQtCps; qualifier = new DerIA5String(cps); } /** * Creates a new PolicyQualifierInfo instance. * * @param as PolicyQualifierInfo X509 structure * encoded as an Asn1Sequence. */ private PolicyQualifierInfo( Asn1Sequence seq) { if (seq.Count != 2) throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); policyQualifierId = DerObjectIdentifier.GetInstance(seq[0]); qualifier = seq[1]; } public static PolicyQualifierInfo GetInstance( object obj) { if (obj is PolicyQualifierInfo) { return (PolicyQualifierInfo) obj; } if (obj is Asn1Sequence) { return new PolicyQualifierInfo((Asn1Sequence) obj); } throw new ArgumentException("unknown object in GetInstance: " + obj.GetType().FullName, "obj"); } /** * Returns a Der-encodable representation of this instance. * * @return a Asn1Object value */ public override Asn1Object ToAsn1Object() { return new DerSequence(policyQualifierId, qualifier); } } }