1package org.bouncycastle.asn1.x509; 2 3import org.bouncycastle.asn1.ASN1EncodableVector; 4import org.bouncycastle.asn1.ASN1Object; 5import org.bouncycastle.asn1.ASN1Primitive; 6import org.bouncycastle.asn1.ASN1Sequence; 7import org.bouncycastle.asn1.DERBitString; 8import org.bouncycastle.asn1.DERSequence; 9 10public class AttributeCertificate 11 extends ASN1Object 12{ 13 AttributeCertificateInfo acinfo; 14 AlgorithmIdentifier signatureAlgorithm; 15 DERBitString signatureValue; 16 17 /** 18 * @param obj 19 * @return an AttributeCertificate object 20 */ 21 public static AttributeCertificate getInstance(Object obj) 22 { 23 if (obj instanceof AttributeCertificate) 24 { 25 return (AttributeCertificate)obj; 26 } 27 else if (obj != null) 28 { 29 return new AttributeCertificate(ASN1Sequence.getInstance(obj)); 30 } 31 32 return null; 33 } 34 35 public AttributeCertificate( 36 AttributeCertificateInfo acinfo, 37 AlgorithmIdentifier signatureAlgorithm, 38 DERBitString signatureValue) 39 { 40 this.acinfo = acinfo; 41 this.signatureAlgorithm = signatureAlgorithm; 42 this.signatureValue = signatureValue; 43 } 44 45 /** 46 * @deprecated use getInstance() method. 47 */ 48 public AttributeCertificate( 49 ASN1Sequence seq) 50 { 51 if (seq.size() != 3) 52 { 53 throw new IllegalArgumentException("Bad sequence size: " 54 + seq.size()); 55 } 56 57 this.acinfo = AttributeCertificateInfo.getInstance(seq.getObjectAt(0)); 58 this.signatureAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(1)); 59 this.signatureValue = DERBitString.getInstance(seq.getObjectAt(2)); 60 } 61 62 public AttributeCertificateInfo getAcinfo() 63 { 64 return acinfo; 65 } 66 67 public AlgorithmIdentifier getSignatureAlgorithm() 68 { 69 return signatureAlgorithm; 70 } 71 72 public DERBitString getSignatureValue() 73 { 74 return signatureValue; 75 } 76 77 /** 78 * Produce an object suitable for an ASN1OutputStream. 79 * <pre> 80 * AttributeCertificate ::= SEQUENCE { 81 * acinfo AttributeCertificateInfo, 82 * signatureAlgorithm AlgorithmIdentifier, 83 * signatureValue BIT STRING 84 * } 85 * </pre> 86 */ 87 public ASN1Primitive toASN1Primitive() 88 { 89 ASN1EncodableVector v = new ASN1EncodableVector(); 90 91 v.add(acinfo); 92 v.add(signatureAlgorithm); 93 v.add(signatureValue); 94 95 return new DERSequence(v); 96 } 97} 98