package org.spongycastle.asn1.x509; import org.spongycastle.asn1.ASN1EncodableVector; import org.spongycastle.asn1.ASN1Object; import org.spongycastle.asn1.ASN1ObjectIdentifier; import org.spongycastle.asn1.ASN1Primitive; import org.spongycastle.asn1.ASN1Sequence; import org.spongycastle.asn1.DERSequence; public class PolicyInformation extends ASN1Object { private ASN1ObjectIdentifier policyIdentifier; private ASN1Sequence policyQualifiers; private PolicyInformation( ASN1Sequence seq) { if (seq.size() < 1 || seq.size() > 2) { throw new IllegalArgumentException("Bad sequence size: " + seq.size()); } policyIdentifier = ASN1ObjectIdentifier.getInstance(seq.getObjectAt(0)); if (seq.size() > 1) { policyQualifiers = ASN1Sequence.getInstance(seq.getObjectAt(1)); } } public PolicyInformation( ASN1ObjectIdentifier policyIdentifier) { this.policyIdentifier = policyIdentifier; } public PolicyInformation( ASN1ObjectIdentifier policyIdentifier, ASN1Sequence policyQualifiers) { this.policyIdentifier = policyIdentifier; this.policyQualifiers = policyQualifiers; } public static PolicyInformation getInstance( Object obj) { if (obj == null || obj instanceof PolicyInformation) { return (PolicyInformation)obj; } return new PolicyInformation(ASN1Sequence.getInstance(obj)); } public ASN1ObjectIdentifier getPolicyIdentifier() { return policyIdentifier; } public ASN1Sequence getPolicyQualifiers() { return policyQualifiers; } /* * PolicyInformation ::= SEQUENCE { * policyIdentifier CertPolicyId, * policyQualifiers SEQUENCE SIZE (1..MAX) OF * PolicyQualifierInfo OPTIONAL } */ public ASN1Primitive toASN1Primitive() { ASN1EncodableVector v = new ASN1EncodableVector(); v.add(policyIdentifier); if (policyQualifiers != null) { v.add(policyQualifiers); } return new DERSequence(v); } }