PolicyInformation.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
1package org.bouncycastle.asn1.x509; 2 3import org.bouncycastle.asn1.ASN1EncodableVector; 4import org.bouncycastle.asn1.ASN1Object; 5import org.bouncycastle.asn1.ASN1ObjectIdentifier; 6import org.bouncycastle.asn1.ASN1Primitive; 7import org.bouncycastle.asn1.ASN1Sequence; 8import org.bouncycastle.asn1.DERSequence; 9 10public class PolicyInformation 11 extends ASN1Object 12{ 13 private ASN1ObjectIdentifier policyIdentifier; 14 private ASN1Sequence policyQualifiers; 15 16 private PolicyInformation( 17 ASN1Sequence seq) 18 { 19 if (seq.size() < 1 || seq.size() > 2) 20 { 21 throw new IllegalArgumentException("Bad sequence size: " 22 + seq.size()); 23 } 24 25 policyIdentifier = ASN1ObjectIdentifier.getInstance(seq.getObjectAt(0)); 26 27 if (seq.size() > 1) 28 { 29 policyQualifiers = ASN1Sequence.getInstance(seq.getObjectAt(1)); 30 } 31 } 32 33 public PolicyInformation( 34 ASN1ObjectIdentifier policyIdentifier) 35 { 36 this.policyIdentifier = policyIdentifier; 37 } 38 39 public PolicyInformation( 40 ASN1ObjectIdentifier policyIdentifier, 41 ASN1Sequence policyQualifiers) 42 { 43 this.policyIdentifier = policyIdentifier; 44 this.policyQualifiers = policyQualifiers; 45 } 46 47 public static PolicyInformation getInstance( 48 Object obj) 49 { 50 if (obj == null || obj instanceof PolicyInformation) 51 { 52 return (PolicyInformation)obj; 53 } 54 55 return new PolicyInformation(ASN1Sequence.getInstance(obj)); 56 } 57 58 public ASN1ObjectIdentifier getPolicyIdentifier() 59 { 60 return policyIdentifier; 61 } 62 63 public ASN1Sequence getPolicyQualifiers() 64 { 65 return policyQualifiers; 66 } 67 68 /* 69 * PolicyInformation ::= SEQUENCE { 70 * policyIdentifier CertPolicyId, 71 * policyQualifiers SEQUENCE SIZE (1..MAX) OF 72 * PolicyQualifierInfo OPTIONAL } 73 */ 74 public ASN1Primitive toASN1Primitive() 75 { 76 ASN1EncodableVector v = new ASN1EncodableVector(); 77 78 v.add(policyIdentifier); 79 80 if (policyQualifiers != null) 81 { 82 v.add(policyQualifiers); 83 } 84 85 return new DERSequence(v); 86 } 87} 88