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