| package org.bouncycastle.asn1.x509; |
| |
| import org.bouncycastle.asn1.ASN1Encodable; |
| import org.bouncycastle.asn1.ASN1EncodableVector; |
| import org.bouncycastle.asn1.ASN1Sequence; |
| import org.bouncycastle.asn1.DERBitString; |
| import org.bouncycastle.asn1.DERObject; |
| import org.bouncycastle.asn1.DERSequence; |
| |
| public class AttributeCertificate |
| extends ASN1Encodable |
| { |
| AttributeCertificateInfo acinfo; |
| AlgorithmIdentifier signatureAlgorithm; |
| DERBitString signatureValue; |
| |
| /** |
| * @param obj |
| * @return an AttributeCertificate object |
| */ |
| public static AttributeCertificate getInstance(Object obj) |
| { |
| if (obj instanceof AttributeCertificate) |
| { |
| return (AttributeCertificate)obj; |
| } |
| else if (obj != null) |
| { |
| return new AttributeCertificate(ASN1Sequence.getInstance(obj)); |
| } |
| |
| return null; |
| } |
| |
| public AttributeCertificate( |
| AttributeCertificateInfo acinfo, |
| AlgorithmIdentifier signatureAlgorithm, |
| DERBitString signatureValue) |
| { |
| this.acinfo = acinfo; |
| this.signatureAlgorithm = signatureAlgorithm; |
| this.signatureValue = signatureValue; |
| } |
| |
| public AttributeCertificate( |
| ASN1Sequence seq) |
| { |
| if (seq.size() != 3) |
| { |
| throw new IllegalArgumentException("Bad sequence size: " |
| + seq.size()); |
| } |
| |
| this.acinfo = AttributeCertificateInfo.getInstance(seq.getObjectAt(0)); |
| this.signatureAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(1)); |
| this.signatureValue = DERBitString.getInstance(seq.getObjectAt(2)); |
| } |
| |
| public AttributeCertificateInfo getAcinfo() |
| { |
| return acinfo; |
| } |
| |
| public AlgorithmIdentifier getSignatureAlgorithm() |
| { |
| return signatureAlgorithm; |
| } |
| |
| public DERBitString getSignatureValue() |
| { |
| return signatureValue; |
| } |
| |
| /** |
| * Produce an object suitable for an ASN1OutputStream. |
| * <pre> |
| * AttributeCertificate ::= SEQUENCE { |
| * acinfo AttributeCertificateInfo, |
| * signatureAlgorithm AlgorithmIdentifier, |
| * signatureValue BIT STRING |
| * } |
| * </pre> |
| */ |
| public DERObject toASN1Object() |
| { |
| ASN1EncodableVector v = new ASN1EncodableVector(); |
| |
| v.add(acinfo); |
| v.add(signatureAlgorithm); |
| v.add(signatureValue); |
| |
| return new DERSequence(v); |
| } |
| } |