001package org.apache.commons.ssl.org.bouncycastle.asn1.crmf; 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.ASN1Primitive; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 007import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 008 009public class Controls 010 extends ASN1Object 011{ 012 private ASN1Sequence content; 013 014 private Controls(ASN1Sequence seq) 015 { 016 content = seq; 017 } 018 019 public static Controls getInstance(Object o) 020 { 021 if (o instanceof Controls) 022 { 023 return (Controls)o; 024 } 025 026 if (o != null) 027 { 028 return new Controls(ASN1Sequence.getInstance(o)); 029 } 030 031 return null; 032 } 033 034 public Controls(AttributeTypeAndValue atv) 035 { 036 content = new DERSequence(atv); 037 } 038 039 public Controls(AttributeTypeAndValue[] atvs) 040 { 041 ASN1EncodableVector v = new ASN1EncodableVector(); 042 for (int i = 0; i < atvs.length; i++) 043 { 044 v.add(atvs[i]); 045 } 046 content = new DERSequence(v); 047 } 048 049 public AttributeTypeAndValue[] toAttributeTypeAndValueArray() 050 { 051 AttributeTypeAndValue[] result = new AttributeTypeAndValue[content.size()]; 052 053 for (int i = 0; i != result.length; i++) 054 { 055 result[i] = AttributeTypeAndValue.getInstance(content.getObjectAt(i)); 056 } 057 058 return result; 059 } 060 061 /** 062 * <pre> 063 * Controls ::= SEQUENCE SIZE(1..MAX) OF AttributeTypeAndValue 064 * </pre> 065 * 066 * @return a basic ASN.1 object representation. 067 */ 068 public ASN1Primitive toASN1Primitive() 069 { 070 return content; 071 } 072}