001package org.apache.commons.ssl.org.bouncycastle.asn1.x509; 002 003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1ObjectIdentifier; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 008import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 009 010public class PolicyInformation 011 extends ASN1Object 012{ 013 private ASN1ObjectIdentifier policyIdentifier; 014 private ASN1Sequence policyQualifiers; 015 016 private PolicyInformation( 017 ASN1Sequence seq) 018 { 019 if (seq.size() < 1 || seq.size() > 2) 020 { 021 throw new IllegalArgumentException("Bad sequence size: " 022 + seq.size()); 023 } 024 025 policyIdentifier = ASN1ObjectIdentifier.getInstance(seq.getObjectAt(0)); 026 027 if (seq.size() > 1) 028 { 029 policyQualifiers = ASN1Sequence.getInstance(seq.getObjectAt(1)); 030 } 031 } 032 033 public PolicyInformation( 034 ASN1ObjectIdentifier policyIdentifier) 035 { 036 this.policyIdentifier = policyIdentifier; 037 } 038 039 public PolicyInformation( 040 ASN1ObjectIdentifier policyIdentifier, 041 ASN1Sequence policyQualifiers) 042 { 043 this.policyIdentifier = policyIdentifier; 044 this.policyQualifiers = policyQualifiers; 045 } 046 047 public static PolicyInformation getInstance( 048 Object obj) 049 { 050 if (obj == null || obj instanceof PolicyInformation) 051 { 052 return (PolicyInformation)obj; 053 } 054 055 return new PolicyInformation(ASN1Sequence.getInstance(obj)); 056 } 057 058 public ASN1ObjectIdentifier getPolicyIdentifier() 059 { 060 return policyIdentifier; 061 } 062 063 public ASN1Sequence getPolicyQualifiers() 064 { 065 return policyQualifiers; 066 } 067 068 /* 069 * PolicyInformation ::= SEQUENCE { 070 * policyIdentifier CertPolicyId, 071 * policyQualifiers SEQUENCE SIZE (1..MAX) OF 072 * PolicyQualifierInfo OPTIONAL } 073 */ 074 public ASN1Primitive toASN1Primitive() 075 { 076 ASN1EncodableVector v = new ASN1EncodableVector(); 077 078 v.add(policyIdentifier); 079 080 if (policyQualifiers != null) 081 { 082 v.add(policyQualifiers); 083 } 084 085 return new DERSequence(v); 086 } 087}