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.ASN1Primitive; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 007import org.apache.commons.ssl.org.bouncycastle.asn1.DERBitString; 008import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 009 010public class AttributeCertificate 011 extends ASN1Object 012{ 013 AttributeCertificateInfo acinfo; 014 AlgorithmIdentifier signatureAlgorithm; 015 DERBitString signatureValue; 016 017 /** 018 * @param obj 019 * @return an AttributeCertificate object 020 */ 021 public static AttributeCertificate getInstance(Object obj) 022 { 023 if (obj instanceof AttributeCertificate) 024 { 025 return (AttributeCertificate)obj; 026 } 027 else if (obj != null) 028 { 029 return new AttributeCertificate(ASN1Sequence.getInstance(obj)); 030 } 031 032 return null; 033 } 034 035 public AttributeCertificate( 036 AttributeCertificateInfo acinfo, 037 AlgorithmIdentifier signatureAlgorithm, 038 DERBitString signatureValue) 039 { 040 this.acinfo = acinfo; 041 this.signatureAlgorithm = signatureAlgorithm; 042 this.signatureValue = signatureValue; 043 } 044 045 /** 046 * @deprecated use getInstance() method. 047 */ 048 public AttributeCertificate( 049 ASN1Sequence seq) 050 { 051 if (seq.size() != 3) 052 { 053 throw new IllegalArgumentException("Bad sequence size: " 054 + seq.size()); 055 } 056 057 this.acinfo = AttributeCertificateInfo.getInstance(seq.getObjectAt(0)); 058 this.signatureAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(1)); 059 this.signatureValue = DERBitString.getInstance(seq.getObjectAt(2)); 060 } 061 062 public AttributeCertificateInfo getAcinfo() 063 { 064 return acinfo; 065 } 066 067 public AlgorithmIdentifier getSignatureAlgorithm() 068 { 069 return signatureAlgorithm; 070 } 071 072 public DERBitString getSignatureValue() 073 { 074 return signatureValue; 075 } 076 077 /** 078 * Produce an object suitable for an ASN1OutputStream. 079 * <pre> 080 * AttributeCertificate ::= SEQUENCE { 081 * acinfo AttributeCertificateInfo, 082 * signatureAlgorithm AlgorithmIdentifier, 083 * signatureValue BIT STRING 084 * } 085 * </pre> 086 */ 087 public ASN1Primitive toASN1Primitive() 088 { 089 ASN1EncodableVector v = new ASN1EncodableVector(); 090 091 v.add(acinfo); 092 v.add(signatureAlgorithm); 093 v.add(signatureValue); 094 095 return new DERSequence(v); 096 } 097}